summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDuncan Gibson <engelsman@users.noreply.github.com>2020-11-24 01:07:37 +0100
committerAlbrecht Schlosser <albrechts.fltk@online.de>2021-11-08 16:18:58 +0100
commit7407d9c8d008ca4e97de454a92bba9290696f25e (patch)
treeccf415e2ac1ce0123abb7b5922149abac87b4678 /test
parent76a3ded5491c3cbc31f921ddbc9d2afa4257940a (diff)
Add new resize example to test and dox (PR #165)
add example(s) showing Albrecht's innovative overlap resizable technique to the "How does resizing work?" documentation and tests See "resizable question" original discussion thread under: https://www.fltk.org/newsgroups.php?gfltk.general+v:39635
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt3
-rw-r--r--test/makedepend45
-rw-r--r--test/resize-example5a.cxx97
-rw-r--r--test/resize-example5b.cxx122
-rw-r--r--test/resize-example5c.cxx114
5 files changed, 381 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 160efe21a..1ae931910 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -126,6 +126,9 @@ CREATE_EXAMPLE (resize-example3b "resize-example3b.cxx;resize-arrows.cxx" fltk)
CREATE_EXAMPLE (resize-example3c "resize-example3c.cxx;resize-arrows.cxx" fltk)
CREATE_EXAMPLE (resize-example4a "resize-example4a.cxx;resize-arrows.cxx" fltk)
CREATE_EXAMPLE (resize-example4b "resize-example4b.cxx;resize-arrows.cxx" fltk)
+CREATE_EXAMPLE (resize-example5a "resize-example5a.cxx;resize-arrows.cxx" fltk)
+CREATE_EXAMPLE (resize-example5b "resize-example5b.cxx;resize-arrows.cxx" fltk)
+CREATE_EXAMPLE (resize-example5c "resize-example5c.cxx;resize-arrows.cxx" fltk)
CREATE_EXAMPLE (rotated_text rotated_text.cxx fltk)
CREATE_EXAMPLE (scroll scroll.cxx fltk)
CREATE_EXAMPLE (subwindow subwindow.cxx fltk)
diff --git a/test/makedepend b/test/makedepend
index 0a24d8603..3eac520e7 100644
--- a/test/makedepend
+++ b/test/makedepend
@@ -1794,6 +1794,51 @@ resize-example4b.o: ../FL/Fl_Widget.H
resize-example4b.o: ../FL/Fl_Window.H
resize-example4b.o: ../FL/platform_types.h
resize-example4b.o: resize-arrows.h
+resize-example5a.o: ../FL/abi-version.h
+resize-example5a.o: ../FL/Enumerations.H
+resize-example5a.o: ../FL/Fl.H
+resize-example5a.o: ../FL/Fl_Bitmap.H
+resize-example5a.o: ../FL/Fl_Box.H
+resize-example5a.o: ../FL/Fl_Double_Window.H
+resize-example5a.o: ../FL/Fl_Export.H
+resize-example5a.o: ../FL/Fl_Group.H
+resize-example5a.o: ../FL/Fl_Image.H
+resize-example5a.o: ../FL/fl_types.h
+resize-example5a.o: ../FL/fl_utf8.h
+resize-example5a.o: ../FL/Fl_Widget.H
+resize-example5a.o: ../FL/Fl_Window.H
+resize-example5a.o: ../FL/platform_types.h
+resize-example5a.o: resize-arrows.h
+resize-example5b.o: ../FL/abi-version.h
+resize-example5b.o: ../FL/Enumerations.H
+resize-example5b.o: ../FL/Fl.H
+resize-example5b.o: ../FL/Fl_Bitmap.H
+resize-example5b.o: ../FL/Fl_Box.H
+resize-example5b.o: ../FL/Fl_Double_Window.H
+resize-example5b.o: ../FL/Fl_Export.H
+resize-example5b.o: ../FL/Fl_Group.H
+resize-example5b.o: ../FL/Fl_Image.H
+resize-example5b.o: ../FL/fl_types.h
+resize-example5b.o: ../FL/fl_utf8.h
+resize-example5b.o: ../FL/Fl_Widget.H
+resize-example5b.o: ../FL/Fl_Window.H
+resize-example5b.o: ../FL/platform_types.h
+resize-example5b.o: resize-arrows.h
+resize-example5c.o: ../FL/abi-version.h
+resize-example5c.o: ../FL/Enumerations.H
+resize-example5c.o: ../FL/Fl.H
+resize-example5c.o: ../FL/Fl_Bitmap.H
+resize-example5c.o: ../FL/Fl_Box.H
+resize-example5c.o: ../FL/Fl_Double_Window.H
+resize-example5c.o: ../FL/Fl_Export.H
+resize-example5c.o: ../FL/Fl_Group.H
+resize-example5c.o: ../FL/Fl_Image.H
+resize-example5c.o: ../FL/fl_types.h
+resize-example5c.o: ../FL/fl_utf8.h
+resize-example5c.o: ../FL/Fl_Widget.H
+resize-example5c.o: ../FL/Fl_Window.H
+resize-example5c.o: ../FL/platform_types.h
+resize-example5c.o: resize-arrows.h
resize.o: ../FL/abi-version.h
resize.o: ../FL/Enumerations.H
resize.o: ../FL/Fl.H
diff --git a/test/resize-example5a.cxx b/test/resize-example5a.cxx
new file mode 100644
index 000000000..e3e8b7709
--- /dev/null
+++ b/test/resize-example5a.cxx
@@ -0,0 +1,97 @@
+//
+// Resize example for use in the Fast Light Tool Kit (FLTK) documentation.
+//
+// See Article #415: How does resizing work?
+// https://www.fltk.org/articles.php?L415
+//
+// Copyright 1998-2020 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// https://www.fltk.org/COPYING.php
+//
+// Please see the following page on how to report bugs and issues:
+//
+// https://www.fltk.org/bugs.php
+//
+
+#include "resize-arrows.h"
+#include <FL/Fl_Double_Window.H>
+
+// window, simplex and arrow dimensions
+int TLx = 35, TRx = 320, TLw = 260, Ww = 620;
+int TLy = 35, LGy = 100, TLh = 65, LGh = 70, LAh = 35, Wh = 175;
+
+Fl_Double_Window *window = 0;
+
+class Simplex : public Fl_Group {
+public:
+ Simplex(int X, int Y, int W, int H, const char *T = 0);
+ Fl_Box *m_boxA, *m_boxB, *m_boxC;
+ Fl_Group *m_group;
+};
+
+Simplex::Simplex(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->box(FL_UP_BOX);
+ m_group = new Fl_Group(X + 10, Y + 10, 240, 45);
+ m_group->box(FL_UP_BOX);
+ m_boxA = new Fl_Box(X + 20, Y + 20, 80, 25, "A");
+ m_boxA->box(FL_UP_BOX);
+ m_boxB = new Fl_Box(X + 110, Y + 20, 40, 25, "B");
+ m_boxB->box(FL_UP_BOX);
+ m_boxC = new Fl_Box(X + 160, Y + 20, 80, 25, "C");
+ m_boxC->box(FL_UP_BOX);
+ m_group->color(FL_YELLOW);
+ m_group->end();
+ this->resizable(m_group);
+ this->end();
+}
+
+class Resizables : public Fl_Group {
+public:
+ Resizables(int X, int Y, int W, int H, const char *T = 0);
+ Simplex *TL, *TR; // top left, top right
+ Harrow *LA, *RA; // left arrow, right arrow
+};
+
+Resizables::Resizables(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ TL = new Simplex(X + TLx, Y + TLy, TLw, TLh, "Original");
+ TL->align(FL_ALIGN_TOP_LEFT);
+
+ TR = new Simplex(X + TRx, Y + TLy, TLw, TLh, "Horizontally Resized");
+ TR->align(FL_ALIGN_TOP_LEFT);
+
+ Fl_Group *LG = new Fl_Group(X + TLx, Y + LGy, TLw, LGh);
+ LG->box(FL_NO_BOX);
+ LG->color(FL_WHITE);
+ LA = new Harrow(TL->m_group->x(), LG->y(), TL->m_group->w(), LAh, "Initial\nwidth");
+ LG->resizable(LA);
+ LG->end();
+
+ Fl_Group *RG = new Fl_Group(X + TRx, Y + LGy, TLw, LGh);
+ RG->box(FL_NO_BOX);
+ RG->color(FL_WHITE);
+ RA = new Harrow(TR->m_group->x(), RG->y(), TR->m_group->w(), LAh, "Resized\nwidth");
+ RG->resizable(RA);
+ RG->end();
+
+ this->resizable(TR);
+ this->end();
+}
+
+
+int main(int argc, char **argv) {
+ window = new Fl_Double_Window(Ww, Wh, "resize-example5a");
+ window->color(FL_WHITE);
+ Resizables *resizables = new Resizables(0, 0, Ww, Wh);
+ window->end();
+ window->resizable(resizables);
+ window->size_range(Ww, Wh);
+ window->show(argc, argv);
+ window->size(Ww + 90, Wh);
+ return Fl::run();
+}
diff --git a/test/resize-example5b.cxx b/test/resize-example5b.cxx
new file mode 100644
index 000000000..62680b6dc
--- /dev/null
+++ b/test/resize-example5b.cxx
@@ -0,0 +1,122 @@
+//
+// Resize example for use in the Fast Light Tool Kit (FLTK) documentation.
+//
+// See Article #415: How does resizing work?
+// https://www.fltk.org/articles.php?L415
+//
+// Copyright 1998-2020 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// https://www.fltk.org/COPYING.php
+//
+// Please see the following page on how to report bugs and issues:
+//
+// https://www.fltk.org/bugs.php
+//
+
+#include "resize-arrows.h"
+#include <FL/Fl_Double_Window.H>
+
+// window, simplex and arrow dimensions
+int TLx = 35, TRx = 320, TLw = 260, Ww = 620;
+int TLy = 35, LGy = 125, TLh = 90, LGh = 70, LAh = 35, Wh = 200;
+
+Fl_Double_Window *window = 0;
+
+class Simplex : public Fl_Group {
+public:
+ Simplex(int X, int Y, int W, int H, const char *T = 0);
+ Fl_Box *m_boxA, *m_boxB, *m_boxC, *m_boxI;
+ Fl_Group *m_group, *m_groupL, *m_groupR;
+};
+
+Simplex::Simplex(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->box(FL_UP_BOX);
+ m_group = new Fl_Group(X + 10, Y + 10, 240, 70);
+ m_group->box(FL_UP_BOX);
+
+ m_groupL = new Fl_Group(X + 10, Y + 15, 145, 35, "AB group");
+ m_groupL->align(FL_ALIGN_BOTTOM_LEFT);
+ m_groupL->box(FL_UP_BOX);
+ m_groupL->color(FL_RED);
+ m_groupL->labelcolor(FL_RED);
+ m_boxA = new Fl_Box(X + 20, Y + 20, 80, 25, "A");
+ m_boxA->box(FL_UP_BOX);
+ m_boxA->color(FL_YELLOW);
+ m_boxB = new Fl_Box(X + 110, Y + 20, 40, 25, "B");
+ m_boxB->box(FL_UP_BOX);
+ m_groupL->resizable(m_boxA);
+ m_groupL->end();
+
+ m_groupR = new Fl_Group(X + 155, Y + 15, 95, 35, "C group");
+ m_groupR->align(FL_ALIGN_BOTTOM_RIGHT);
+ m_groupR->box(FL_UP_BOX);
+ m_groupR->color(FL_BLUE);
+ m_groupR->labelcolor(FL_BLUE);
+ m_boxC = new Fl_Box(X + 160, Y + 20, 80, 25, "C");
+ m_boxC->box(FL_UP_BOX);
+ m_boxC->color(FL_YELLOW);
+ m_groupR->resizable(m_boxC);
+ m_groupR->end();
+
+ int d = 20;
+ m_boxI = new Fl_Box(X + 155 - d, Y + 55, 2 * d, 10);
+ m_boxI->box(FL_UP_BOX);
+ m_boxI->color(FL_YELLOW);
+
+ m_group->resizable(m_boxI);
+ m_group->end();
+
+ this->resizable(m_group);
+ this->end();
+}
+
+class Resizables : public Fl_Group {
+public:
+ Resizables(int X, int Y, int W, int H, const char *T = 0);
+ Simplex *TL, *TR; // top left, top right
+ Harrow *LA, *RA; // left arrow, right arrow
+};
+
+Resizables::Resizables(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ TL = new Simplex(X + TLx, Y + TLy, TLw, TLh, "Original");
+ TL->align(FL_ALIGN_TOP_LEFT);
+
+ TR = new Simplex(X + TRx, Y + TLy, TLw, TLh, "Horizontally Resized");
+ TR->align(FL_ALIGN_TOP_LEFT);
+
+ Fl_Group *LG = new Fl_Group(X + TLx, Y + LGy, TLw, LGh);
+ LG->box(FL_NO_BOX);
+ LG->color(FL_WHITE);
+ LA = new Harrow(TL->m_boxI->x(), LG->y(), TL->m_boxI->w(), LAh, "Initial\nwidth");
+ LG->resizable(LA);
+ LG->end();
+
+ Fl_Group *RG = new Fl_Group(X + TRx, Y + LGy, TLw, LGh);
+ RG->box(FL_NO_BOX);
+ RG->color(FL_WHITE);
+ RA = new Harrow(TR->m_boxI->x(), RG->y(), TR->m_boxI->w(), LAh, "Resized\nwidth");
+ RG->resizable(RA);
+ RG->end();
+
+ this->resizable(TR);
+ this->end();
+}
+
+
+int main(int argc, char **argv) {
+ window = new Fl_Double_Window(Ww, Wh, "resize-example5b");
+ window->color(FL_WHITE);
+ Resizables *resizables = new Resizables(0, 0, Ww, Wh);
+ window->end();
+ window->resizable(resizables);
+ window->size_range(Ww, Wh);
+ window->show(argc, argv);
+ window->size(Ww + 90, Wh);
+ return Fl::run();
+}
diff --git a/test/resize-example5c.cxx b/test/resize-example5c.cxx
new file mode 100644
index 000000000..b824009fe
--- /dev/null
+++ b/test/resize-example5c.cxx
@@ -0,0 +1,114 @@
+//
+// Resize example for use in the Fast Light Tool Kit (FLTK) documentation.
+//
+// See Article #415: How does resizing work?
+// https://www.fltk.org/articles.php?L415
+//
+// Copyright 1998-2020 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// https://www.fltk.org/COPYING.php
+//
+// Please see the following page on how to report bugs and issues:
+//
+// https://www.fltk.org/bugs.php
+//
+
+#include "resize-arrows.h"
+#include <FL/Fl_Double_Window.H>
+
+// window, simplex and arrow dimensions
+int TLx = 35, TRx = 320, TLw = 260, Ww = 620;
+int TLy = 35, LGy = 100, TLh = 65, LGh = 70, LAh = 35, Wh = 175;
+
+Fl_Double_Window *window = 0;
+
+class Simplex : public Fl_Group {
+public:
+ Simplex(int X, int Y, int W, int H, const char *T = 0);
+ Fl_Box *m_boxA, *m_boxB, *m_boxC, *m_boxI;
+ Fl_Group *m_group, *m_groupL, *m_groupR;
+};
+
+Simplex::Simplex(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->box(FL_UP_BOX);
+ m_group = new Fl_Group(X + 10, Y + 10, 240, 45);
+ m_group->box(FL_UP_BOX);
+
+ m_groupL = new Fl_Group(X + 10, Y + 15, 145, 35);
+ m_groupL->box(FL_NO_BOX);
+ m_boxA = new Fl_Box(X + 20, Y + 20, 80, 25, "A");
+ m_boxA->box(FL_UP_BOX);
+ m_boxB = new Fl_Box(X + 110, Y + 20, 40, 25, "B");
+ m_boxB->box(FL_UP_BOX);
+ m_groupL->resizable(m_boxA);
+ m_groupL->end();
+
+ m_groupR = new Fl_Group(X + 155, Y + 15, 95, 35);
+ m_groupR->box(FL_NO_BOX);
+ m_boxC = new Fl_Box(X + 160, Y + 20, 80, 25, "C");
+ m_boxC->box(FL_UP_BOX);
+ m_groupR->resizable(m_boxC);
+ m_groupR->end();
+
+ int d = 20;
+ m_boxI = new Fl_Box(X + 155 - d, Y + 40, 2 * d, 5);
+ m_boxI->box(FL_FLAT_BOX);
+ m_boxI->color(FL_YELLOW);
+
+ m_group->resizable(m_boxI);
+ m_group->end();
+
+ this->resizable(m_group);
+ this->end();
+}
+
+class Resizables : public Fl_Group {
+public:
+ Resizables(int X, int Y, int W, int H, const char *T = 0);
+ Simplex *TL, *TR; // top left, top right
+ Harrow *LA, *RA; // left arrow, right arrow
+};
+
+Resizables::Resizables(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ TL = new Simplex(X + TLx, Y + TLy, TLw, TLh, "Original");
+ TL->align(FL_ALIGN_TOP_LEFT);
+
+ TR = new Simplex(X + TRx, Y + TLy, TLw, TLh, "Horizontally Resized");
+ TR->align(FL_ALIGN_TOP_LEFT);
+
+ Fl_Group *LG = new Fl_Group(X + TLx, Y + LGy, TLw, LGh);
+ LG->box(FL_NO_BOX);
+ LG->color(FL_WHITE);
+ LA = new Harrow(TL->m_boxI->x(), LG->y(), TL->m_boxI->w(), LAh, "Initial\nwidth");
+ LG->resizable(LA);
+ LG->end();
+
+ Fl_Group *RG = new Fl_Group(X + TRx, Y + LGy, TLw, LGh);
+ RG->box(FL_NO_BOX);
+ RG->color(FL_WHITE);
+ RA = new Harrow(TR->m_boxI->x(), RG->y(), TR->m_boxI->w(), LAh, "Resized\nwidth");
+ RG->resizable(RA);
+ RG->end();
+
+ this->resizable(TR);
+ this->end();
+}
+
+
+int main(int argc, char **argv) {
+ window = new Fl_Double_Window(Ww, Wh, "resize-example5c");
+ window->color(FL_WHITE);
+ Resizables *resizables = new Resizables(0, 0, Ww, Wh);
+ window->end();
+ window->resizable(resizables);
+ window->size_range(Ww, Wh);
+ window->show(argc, argv);
+ window->size(Ww + 90, Wh);
+ return Fl::run();
+}