summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/CMakeLists.txt7
-rw-r--r--test/Makefile51
-rw-r--r--test/demo.menu8
-rw-r--r--test/resize-arrows.cxx59
-rw-r--r--test/resize-arrows.h50
-rw-r--r--test/resize-example1.cxx128
-rw-r--r--test/resize-example2.cxx132
-rw-r--r--test/resize-example3a.cxx119
-rw-r--r--test/resize-example3b.cxx119
-rw-r--r--test/resize-example3c.cxx126
-rw-r--r--test/resize-example4a.cxx99
-rw-r--r--test/resize-example4b.cxx115
12 files changed, 1012 insertions, 1 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index e6387ad79..f1265978c 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -98,6 +98,13 @@ CREATE_EXAMPLE (offscreen offscreen.cxx fltk)
CREATE_EXAMPLE (radio radio.fl fltk)
CREATE_EXAMPLE (resize resize.fl fltk)
CREATE_EXAMPLE (resizebox resizebox.cxx fltk)
+CREATE_EXAMPLE (resize-example1 "resize-example1.cxx;resize-arrows.cxx" fltk)
+CREATE_EXAMPLE (resize-example2 "resize-example2.cxx;resize-arrows.cxx" fltk)
+CREATE_EXAMPLE (resize-example3a "resize-example3a.cxx;resize-arrows.cxx" fltk)
+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 (rotated_text rotated_text.cxx fltk)
CREATE_EXAMPLE (scroll scroll.cxx fltk)
CREATE_EXAMPLE (subwindow subwindow.cxx fltk)
diff --git a/test/Makefile b/test/Makefile
index d65895d64..fe51d7a9f 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -76,8 +76,15 @@ CPPFILES =\
pixmap.cxx \
preferences.cxx \
radio.cxx \
- resizebox.cxx \
resize.cxx \
+ resizebox.cxx \
+ resize-example1.cxx \
+ resize-example2.cxx \
+ resize-example3a.cxx \
+ resize-example3b.cxx \
+ resize-example3c.cxx \
+ resize-example4a.cxx \
+ resize-example4b.cxx \
rotated_text.cxx \
scroll.cxx \
shape.cxx \
@@ -152,6 +159,13 @@ ALL = \
radio$(EXEEXT) \
resize$(EXEEXT) \
resizebox$(EXEEXT) \
+ resize-example1$(EXEEXT) \
+ resize-example2$(EXEEXT) \
+ resize-example3a$(EXEEXT) \
+ resize-example3b$(EXEEXT) \
+ resize-example3c$(EXEEXT) \
+ resize-example4a$(EXEEXT) \
+ resize-example4b$(EXEEXT) \
rotated_text$(EXEEXT) \
scroll$(EXEEXT) \
subwindow$(EXEEXT) \
@@ -487,6 +501,41 @@ resize.cxx: resize.fl ../fluid/fluid$(EXEEXT)
resizebox$(EXEEXT): resizebox.o
+resize-example1$(EXEEXT): resize-example1.o resize-arrows.o
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(CXXFLAGS) $(LDFLAGS) resize-example1.o resize-arrows.o -o $@ $(LINKFLTK) $(LDLIBS)
+ $(OSX_ONLY) ../fltk-config --post $@
+
+resize-example2$(EXEEXT): resize-example2.o resize-arrows.o
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(CXXFLAGS) $(LDFLAGS) resize-example2.o resize-arrows.o -o $@ $(LINKFLTK) $(LDLIBS)
+ $(OSX_ONLY) ../fltk-config --post $@
+
+resize-example3a$(EXEEXT): resize-example3a.o resize-arrows.o
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(CXXFLAGS) $(LDFLAGS) resize-example3a.o resize-arrows.o -o $@ $(LINKFLTK) $(LDLIBS)
+ $(OSX_ONLY) ../fltk-config --post $@
+
+resize-example3b$(EXEEXT): resize-example3b.o resize-arrows.o
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(CXXFLAGS) $(LDFLAGS) resize-example3b.o resize-arrows.o -o $@ $(LINKFLTK) $(LDLIBS)
+ $(OSX_ONLY) ../fltk-config --post $@
+
+resize-example3c$(EXEEXT): resize-example3c.o resize-arrows.o
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(CXXFLAGS) $(LDFLAGS) resize-example3c.o resize-arrows.o -o $@ $(LINKFLTK) $(LDLIBS)
+ $(OSX_ONLY) ../fltk-config --post $@
+
+resize-example4a$(EXEEXT): resize-example4a.o resize-arrows.o
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(CXXFLAGS) $(LDFLAGS) resize-example4a.o resize-arrows.o -o $@ $(LINKFLTK) $(LDLIBS)
+ $(OSX_ONLY) ../fltk-config --post $@
+
+resize-example4b$(EXEEXT): resize-example4b.o resize-arrows.o
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(CXXFLAGS) $(LDFLAGS) resize-example4b.o resize-arrows.o -o $@ $(LINKFLTK) $(LDLIBS)
+ $(OSX_ONLY) ../fltk-config --post $@
+
rotated_text$(EXEEXT): rotated_text.o
scroll$(EXEEXT): scroll.o
diff --git a/test/demo.menu b/test/demo.menu
index 177fb1803..2eedfb772 100644
--- a/test/demo.menu
+++ b/test/demo.menu
@@ -98,3 +98,11 @@
@i:clock:clock
@i:popups:message
@i:boxtypes:boxtype
+ @i:Resize Examples\n...:@ir
+ @ir:Example\n1:resize-example1
+ @ir:Example\n2:resize-example2
+ @ir:Example\n3a:resize-example3a
+ @ir:Example\n3b:resize-example3b
+ @ir:Example\n3c:resize-example3c
+ @ir:Example\n4a:resize-example4a
+ @ir:Example\n4b:resize-example4b
diff --git a/test/resize-arrows.cxx b/test/resize-arrows.cxx
new file mode 100644
index 000000000..5d48f1cec
--- /dev/null
+++ b/test/resize-arrows.cxx
@@ -0,0 +1,59 @@
+//
+// 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_draw.H>
+
+Harrow::Harrow(int X, int Y, int W, int H, const char *T)
+ : Fl_Box(X, Y, W, H, T) {
+ align(FL_ALIGN_BOTTOM);
+ box(FL_NO_BOX);
+ color(FL_WHITE);
+}
+
+void Harrow::draw() {
+ Fl_Color old = fl_color();
+ int dx = 5, dy = 4;
+ int my = y() + h() / 2;
+ fl_rectf(x(), y(), w(), h(), FL_WHITE);
+ fl_color(FL_BLACK);
+ fl_polygon(x(), my, x() + dx, my - dy, x() + dx, my + dy);
+ fl_line(x() + dx, my, x() + w() - dx, my);
+ fl_polygon(x() + w(), my, x() + w() - dx, my + dy, x() + w() - dx, my - dy);
+ fl_color(old);
+}
+
+Varrow::Varrow(int X, int Y, int W, int H, const char *T)
+ : Fl_Box(X, Y, W, H, T) {
+ align(FL_ALIGN_RIGHT);
+ box(FL_NO_BOX);
+ color(FL_WHITE);
+}
+
+void Varrow::draw() {
+ Fl_Color old = fl_color();
+ int dx = 4, dy = 5;
+ int mx = x() + w() / 2;
+ fl_rectf(x(), y(), w(), h(), FL_WHITE);
+ fl_color(FL_BLACK);
+ fl_polygon(mx - dx, y() + dy, mx, y(), mx + dx, y() + dy);
+ fl_line(mx, y() + dy, mx, y() + h() - dy);
+ fl_polygon(mx - dx, y() + h() - dy, mx + dx, y() + h() - dy, mx, y() + h());
+ fl_color(old);
+}
diff --git a/test/resize-arrows.h b/test/resize-arrows.h
new file mode 100644
index 000000000..2ef73019b
--- /dev/null
+++ b/test/resize-arrows.h
@@ -0,0 +1,50 @@
+//
+// 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
+//
+
+#ifndef RESIZE_ARROWS_H
+#define RESIZE_ARROWS_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Box.H>
+
+/** Harrow is an Fl_Box with a horizontal arrow drawn across the middle.
+
+ The arrow is drawn in black on a white background.
+ By default, the box has no border, and the label is below the box.
+ */
+class Harrow : public Fl_Box {
+public:
+ Harrow(int X, int Y, int W, int H, const char *T = 0);
+
+ void draw();
+};
+
+/** Varrow is an Fl_Box with a vertical arrow drawn down the middle.
+
+ The arrow is drawn in black on a white background.
+ By default, the box has no border, and the label is to the right of the box.
+ */
+class Varrow : public Fl_Box {
+public:
+ Varrow(int X, int Y, int W, int H, const char *T = 0);
+
+ void draw();
+};
+
+#endif // RESIZE_ARROWS_H
diff --git a/test/resize-example1.cxx b/test/resize-example1.cxx
new file mode 100644
index 000000000..62f21d893
--- /dev/null
+++ b/test/resize-example1.cxx
@@ -0,0 +1,128 @@
+//
+// 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>
+
+Fl_Double_Window *window;
+
+// inner box dimensions
+int Ax = 0, Bx = 35, Cx = 70, Dx = 105, Nx = 140, Aw = 35, Rw = 70, Mw = 140;
+int Ay = 0, Ey = 35, Gy = 70, Iy = 105, My = 140, Ah = 35, Rh = 70, Nh = 175;
+
+// resize box and arrow group dimensions
+int TLx = 35, TRx = 245, TGx = 420, TLw = 175, TGw = 140, TAw = 35;
+int TLy = 35, BLy = 245, LGy = 420, TLh = 175, LGh = 105, LAh = 35;
+
+// window dimensions
+int Ww = 560, Wh = 525;
+
+class Resizebox : public Fl_Group {
+public:
+ Resizebox(int X, int Y, int W, int H, const char *T);
+};
+
+Resizebox::Resizebox(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->align(FL_ALIGN_TOP_LEFT);
+ this->box(FL_UP_BOX);
+
+ Fl_Box *b;
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + Ay, Aw, Ah, "A"); b->color(14);
+ b = new Fl_Box(FL_FRAME_BOX, X + Bx, Y + Ay, Aw, Ah, "B"); b->color(9);
+ b = new Fl_Box(FL_FRAME_BOX, X + Cx, Y + Ay, Aw, Ah, "C"); b->color(10);
+ b = new Fl_Box(FL_FRAME_BOX, X + Dx, Y + Ay, Aw, Ah, "D"); b->color(11);
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + Ey, Aw, Ah, "E"); b->color(9);
+ b = new Fl_Box(FL_FRAME_BOX, X + Bx, Y + Ey, Rw, Rh, " "); b->color(8);
+ b = new Fl_Box(FL_FRAME_BOX, X + Dx, Y + Ey, Aw, Ah, "F"); b->color(12);
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + Gy, Aw, Ah, "G"); b->color(10);
+ b = new Fl_Box(FL_FRAME_BOX, X + Dx, Y + Gy, Aw, Ah, "H"); b->color(13);
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + Iy, Aw, Ah, "I"); b->color(11);
+ b = new Fl_Box(FL_FRAME_BOX, X + Bx, Y + Iy, Aw, Ah, "J"); b->color(12);
+ b = new Fl_Box(FL_FRAME_BOX, X + Cx, Y + Iy, Aw, Ah, "K"); b->color(13);
+ b = new Fl_Box(FL_FRAME_BOX, X + Dx, Y + Iy, Aw, Ah, "L"); b->color(14);
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + My, Mw, Ah, "M"); b->color(12);
+ b = new Fl_Box(FL_FRAME_BOX, X + Nx, Y + Ay, Aw, Nh, "N"); b->color(13);
+
+ this->end();
+ this->resizable(this);
+}
+
+class Resizables : public Fl_Group {
+public:
+ Resizables(int X, int Y, int W, int H, const char *T = 0);
+ Resizebox *TL, *TR, *BL, *BR; // topleft, topright, bottomleft, bottomright
+ Harrow *LA, *RA; // left arrow, right arrow
+ Varrow *TA, *BA; // top arrow, bottom arrow
+};
+
+Resizables::Resizables(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->box(FL_UP_BOX);
+ this->color(FL_WHITE);
+
+ TL = new Resizebox(X + TLx, Y + TLy, TLw, TLh, "Original Size");
+ TL->resizable(0);
+ TR = new Resizebox(X + TRx, Y + TLy, TLw, TLh, "Horizontally Resized");
+ BL = new Resizebox(X + TLx, Y + BLy, TLw, TLh, "Vertically Resized");
+ BR = new Resizebox(X + TRx, Y + BLy, TLw, TLh, "Horizontally and Vertically Resized");
+
+ Fl_Group *LG = new Fl_Group(X + TLx, Y + LGy, TLw, LGh);
+ LG->box(FL_NO_BOX);
+ LG->color(FL_WHITE);
+ LA = new Harrow(LG->x(), LG->y(), LG->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(RG->x(), RG->y(), RG->w(), LAh, "Resized\nwidth");
+ RG->resizable(RA);
+ RG->end();
+
+ Fl_Group *TG = new Fl_Group(X + TGx, Y + TLy, TGw, TLh);
+ TG->box(FL_NO_BOX);
+ TG->color(FL_WHITE);
+ TA = new Varrow(X + TGx, Y + TLy, TAw, TLh, "Initial\nheight");
+ TG->resizable(TA);
+ TG->end();
+
+ Fl_Group *BG = new Fl_Group(X + TGx, Y + BLy, TGw, TLh);
+ BG->box(FL_NO_BOX);
+ BG->color(FL_WHITE);
+ BA = new Varrow(X + TGx, Y + BLy, TAw, TLh, "Resized\nheight");
+ BG->resizable(BA);
+ BG->end();
+
+ this->resizable(BR);
+ this->end();
+}
+
+int main(int argc, char **argv) {
+ window = new Fl_Double_Window(Ww, Wh, "resize-example1");
+ 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 + 140, Wh + 35);
+ return Fl::run();
+}
diff --git a/test/resize-example2.cxx b/test/resize-example2.cxx
new file mode 100644
index 000000000..0ae4389e2
--- /dev/null
+++ b/test/resize-example2.cxx
@@ -0,0 +1,132 @@
+//
+// 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>
+
+// inner box dimensions
+int Ax = 0, Bx = 35, Cx = 70, Dx = 105, Nx = 140, Aw = 35, Rw = 70, Mw = 140;
+int Ay = 0, Ey = 35, Gy = 70, Iy = 105, My = 140, Ah = 35, Rh = 70, Nh = 175;
+
+// resize box and arrow group dimensions
+int TLx = 35, TRx = 245, TGx = 420, TLw = 175, TGw = 140, TAw = 35;
+int TLy = 35, BLy = 245, LGy = 420, TLh = 175, LGh = 105, LAh = 35;
+
+// window dimensions
+int Ww = 560, Wh = 525;
+
+Fl_Double_Window *window;
+
+class Resizebox : public Fl_Group {
+public:
+ Resizebox(int X, int Y, int W, int H, const char *T);
+ Fl_Box *m_box;
+};
+
+Resizebox::Resizebox(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->align(FL_ALIGN_TOP_LEFT);
+ this->box(FL_UP_BOX);
+
+ Fl_Box *b;
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + Ay, Aw, Ah, "A"); b->color(14);
+ b = new Fl_Box(FL_FRAME_BOX, X + Bx, Y + Ay, Aw, Ah, "B"); b->color(9);
+ b = new Fl_Box(FL_FRAME_BOX, X + Cx, Y + Ay, Aw, Ah, "C"); b->color(10);
+ b = new Fl_Box(FL_FRAME_BOX, X + Dx, Y + Ay, Aw, Ah, "D"); b->color(11);
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + Ey, Aw, Ah, "E"); b->color(9);
+ b = new Fl_Box(FL_FRAME_BOX, X + Bx, Y + Ey, Rw, Rh, "R"); b->color(3);
+ b->label("resizable");
+ m_box = b;
+ b = new Fl_Box(FL_FRAME_BOX, X + Dx, Y + Ey, Aw, Ah, "F"); b->color(12);
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + Gy, Aw, Ah, "G"); b->color(10);
+ b = new Fl_Box(FL_FRAME_BOX, X + Dx, Y + Gy, Aw, Ah, "H"); b->color(13);
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + Iy, Aw, Ah, "I"); b->color(11);
+ b = new Fl_Box(FL_FRAME_BOX, X + Bx, Y + Iy, Aw, Ah, "J"); b->color(12);
+ b = new Fl_Box(FL_FRAME_BOX, X + Cx, Y + Iy, Aw, Ah, "K"); b->color(13);
+ b = new Fl_Box(FL_FRAME_BOX, X + Dx, Y + Iy, Aw, Ah, "L"); b->color(14);
+ b = new Fl_Box(FL_FRAME_BOX, X + Ax, Y + My, Mw, Ah, "M"); b->color(12);
+ b = new Fl_Box(FL_FRAME_BOX, X + Nx, Y + Ay, Aw, Nh, "N"); b->color(13);
+
+ this->end();
+ this->resizable(m_box);
+}
+
+class Resizables : public Fl_Group {
+public:
+ Resizables(int X, int Y, int W, int H, const char *T = 0);
+ Resizebox *TL, *TR, *BL, *BR; // topleft, topright, bottomleft, bottomright
+ Harrow *LA, *RA; // left arrow, right arrow
+ Varrow *TA, *BA; // top arrow, bottom arrow
+};
+
+
+Resizables::Resizables(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->box(FL_UP_BOX);
+ this->color(FL_WHITE);
+
+ TL = new Resizebox(X + TLx, Y + TLy, TLw, TLh, "Original Size");
+ TL->resizable(0);
+ TR = new Resizebox(X + TRx, Y + TLy, TLw, TLh, "Horizontally Resized");
+ BL = new Resizebox(X + TLx, Y + BLy, TLw, TLh, "Vertically Resized");
+ BR = new Resizebox(X + TRx, Y + BLy, TLw, TLh, "Horizontally and Vertically Resized");
+
+ Fl_Group *LG = new Fl_Group(X + TLx, Y + LGy, TLw, LGh);
+ LG->box(FL_NO_BOX);
+ LG->color(FL_WHITE);
+ LA = new Harrow(BL->m_box->x(), LG->y(), BL->m_box->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(BR->m_box->x(), LG->y(), BL->m_box->w(), LAh, "Resized\nwidth");
+ RG->resizable(RA);
+ RG->end();
+
+ Fl_Group *TG = new Fl_Group(X + TGx, Y + TLy, TGw, TLh);
+ TG->box(FL_NO_BOX);
+ TG->color(FL_WHITE);
+ TA = new Varrow(TG->x(), TR->m_box->y(), TAw, TR->m_box->h(), "Initial\nheight");
+ TG->resizable(TA);
+ TG->end();
+
+ Fl_Group *BG = new Fl_Group(X + TGx, Y + BLy, TGw, TLh);
+ BG->box(FL_NO_BOX);
+ BG->color(FL_WHITE);
+ BA = new Varrow(BG->x(), BR->m_box->y(), TAw, BR->m_box->h(), "Resized\nheight");
+ BG->resizable(BA);
+ BG->end();
+
+ this->resizable(BR);
+ this->end();
+}
+
+int main(int argc, char **argv) {
+ window = new Fl_Double_Window(Ww, Wh, "resize-example2");
+ 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 + 140, Wh + 35);
+ return Fl::run();
+}
diff --git a/test/resize-example3a.cxx b/test/resize-example3a.cxx
new file mode 100644
index 000000000..51e5eea69
--- /dev/null
+++ b/test/resize-example3a.cxx
@@ -0,0 +1,119 @@
+//
+// 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>
+#include <FL/Fl_Button.H>
+
+// resize dialog and arrow dimensions
+int TLx = 35, TRx = 270, TGx = 470, TLw = 200, TGw = 120, TAw = 35;
+int TLy = 35, BLy = 160, LGy = 250, TLh = 90, LGh = 90, LAh = 35;
+
+// window dimensions
+int Ww = 590, Wh = 340;
+
+Fl_Double_Window *window;
+
+class ResizeDialog : public Fl_Group {
+public:
+ ResizeDialog(int X, int Y, int W, int H, const char *T = 0);
+ Fl_Box *m_icon;
+ Fl_Box *m_message;
+ Fl_Button *m_button;
+};
+
+ResizeDialog::ResizeDialog(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->align(FL_ALIGN_TOP_LEFT);
+ this->box(FL_UP_BOX);
+
+ m_icon = new Fl_Box(X + 10, Y + 10, 30, 30, "!");
+ m_icon->box(FL_DOWN_BOX);
+ m_icon->color(FL_YELLOW);
+ m_message = new Fl_Box(X + 50, Y + 10, 140, 30, "Out of Memory");
+ m_message->box(FL_DOWN_BOX);
+ m_button = new Fl_Button(X + 140, Y + 50, 50, 30, "Darn!");
+
+ this->end();
+ this->resizable(m_icon);
+}
+
+class Resizables : public Fl_Group {
+public:
+ Resizables(int X, int Y, int W, int H, const char *T = 0);
+ ResizeDialog *TL, *TR, *BL, *BR; // topleft, topright, bottomleft, bottomright
+ Harrow *LA, *RA; // left arrow, right arrow
+ Varrow *TA, *BA; // top arrow, bottom arrow
+};
+
+Resizables::Resizables(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->box(FL_UP_BOX);
+ this->color(FL_WHITE);
+
+ TL = new ResizeDialog(X + TLx, Y + TLy, TLw, TLh, "Original Size");
+ TL->resizable(0);
+ TR = new ResizeDialog(X + TRx, Y + TLy, TLw, TLh, "Horizontally Resized");
+ BL = new ResizeDialog(X + TLx, Y + BLy, TLw, TLh, "Vertically Resized");
+ BR = new ResizeDialog(X + TRx, Y + BLy, TLw, TLh, "Horizontally and Vertically Resized");
+
+ Fl_Group *LG = new Fl_Group(X + TLx, Y + LGy, TLw, LGh);
+ LG->box(FL_NO_BOX);
+ LG->color(FL_WHITE);
+ LA = new Harrow(BL->m_icon->x(), LG->y(), BL->m_icon->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(BR->m_icon->x(), LG->y(), BL->m_icon->w(), LAh, "Resized\nwidth");
+ RG->resizable(RA);
+ RG->end();
+
+ Fl_Group *TG = new Fl_Group(X + TGx, Y + TLy, TGw, TLh);
+ TG->box(FL_NO_BOX);
+ TG->color(FL_WHITE);
+ TA = new Varrow(TG->x(), TR->m_icon->y(), TAw, TR->m_icon->h(), "Initial\nheight");
+ TG->resizable(TA);
+ TG->end();
+
+ Fl_Group *BG = new Fl_Group(X + TGx, Y + BLy, TGw, TLh);
+ BG->box(FL_NO_BOX);
+ BG->color(FL_WHITE);
+ BA = new Varrow(BG->x(), BR->m_icon->y(), TAw, BR->m_icon->h(), "Resized\nheight");
+ BG->resizable(BA);
+ BG->end();
+
+ this->resizable(BR);
+ this->end();
+}
+
+int main(int argc, char **argv) {
+ window = new Fl_Double_Window(Ww, Wh, "resize-example3a");
+ 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 + 50, Wh + 35);
+ Fl::visible_focus(0); // suppress focus box
+ return Fl::run();
+}
diff --git a/test/resize-example3b.cxx b/test/resize-example3b.cxx
new file mode 100644
index 000000000..307122676
--- /dev/null
+++ b/test/resize-example3b.cxx
@@ -0,0 +1,119 @@
+//
+// 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>
+#include <FL/Fl_Button.H>
+
+// resize dialog and arrow dimensions
+int TLx = 35, TRx = 270, TGx = 470, TLw = 200, TGw = 120, TAw = 35;
+int TLy = 35, BLy = 160, LGy = 250, TLh = 90, LGh = 90, LAh = 35;
+
+// window dimensions
+int Ww = 590, Wh = 340;
+
+Fl_Double_Window *window;
+
+class ResizeDialog : public Fl_Group {
+public:
+ ResizeDialog(int X, int Y, int W, int H, const char *T = 0);
+ Fl_Box *m_icon;
+ Fl_Box *m_message;
+ Fl_Button *m_button;
+};
+
+ResizeDialog::ResizeDialog(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->align(FL_ALIGN_TOP_LEFT);
+ this->box(FL_UP_BOX);
+
+ m_icon = new Fl_Box(X + 10, Y + 10, 30, 30, "!");
+ m_icon->box(FL_DOWN_BOX);
+ m_message = new Fl_Box(X + 50, Y + 10, 140, 30, "Out of Memory");
+ m_message->box(FL_DOWN_BOX);
+ m_message->color(FL_YELLOW);
+ m_button = new Fl_Button(X + 140, Y + 50, 50, 30, "Darn!");
+
+ this->end();
+ this->resizable(m_message);
+}
+
+class Resizables : public Fl_Group {
+public:
+ Resizables(int X, int Y, int W, int H, const char *T = 0);
+ ResizeDialog *TL, *TR, *BL, *BR; // topleft, topright, bottomleft, bottomright
+ Harrow *LA, *RA; // left arrow, right arrow
+ Varrow *TA, *BA; // top arrow, bottom arrow
+};
+
+Resizables::Resizables(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->box(FL_UP_BOX);
+ this->color(FL_WHITE);
+
+ TL = new ResizeDialog(X + TLx, Y + TLy, TLw, TLh, "Original Size");
+ TL->resizable(0);
+ TR = new ResizeDialog(X + TRx, Y + TLy, TLw, TLh, "Horizontally Resized");
+ BL = new ResizeDialog(X + TLx, Y + BLy, TLw, TLh, "Vertically Resized");
+ BR = new ResizeDialog(X + TRx, Y + BLy, TLw, TLh, "Horizontally and Vertically Resized");
+
+ Fl_Group *LG = new Fl_Group(X + TLx, Y + LGy, TLw, LGh);
+ LG->box(FL_NO_BOX);
+ LG->color(FL_WHITE);
+ LA = new Harrow(BL->m_message->x(), LG->y(), BL->m_message->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(BR->m_message->x(), LG->y(), BL->m_message->w(), LAh, "Resized\nwidth");
+ RG->resizable(RA);
+ RG->end();
+
+ Fl_Group *TG = new Fl_Group(X + TGx, Y + TLy, TGw, TLh);
+ TG->box(FL_NO_BOX);
+ TG->color(FL_WHITE);
+ TA = new Varrow(TG->x(), TR->m_message->y(), TAw, TR->m_message->h(), "Initial\nheight");
+ TG->resizable(TA);
+ TG->end();
+
+ Fl_Group *BG = new Fl_Group(X + TGx, Y + BLy, TGw, TLh);
+ BG->box(FL_NO_BOX);
+ BG->color(FL_WHITE);
+ BA = new Varrow(BG->x(), BR->m_message->y(), TAw, BR->m_message->h(), "Resized\nheight");
+ BG->resizable(BA);
+ BG->end();
+
+ this->resizable(BR);
+ this->end();
+}
+
+int main(int argc, char **argv) {
+ window = new Fl_Double_Window(Ww, Wh, "resize-example3b");
+ 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 + 50, Wh + 35);
+ Fl::visible_focus(0); // suppress focus box
+ return Fl::run();
+}
diff --git a/test/resize-example3c.cxx b/test/resize-example3c.cxx
new file mode 100644
index 000000000..87d1075de
--- /dev/null
+++ b/test/resize-example3c.cxx
@@ -0,0 +1,126 @@
+//
+// 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>
+#include <FL/Fl_Button.H>
+
+// resize dialog and arrow dimensions
+int TLx = 35, TRx = 270, TGx = 470, TLw = 200, TGw = 120, TAw = 35;
+int TLy = 35, BLy = 160, LGy = 250, TLh = 90, LGh = 90, LAh = 35;
+
+// window dimensions
+int Ww = 590, Wh = 340;
+
+Fl_Double_Window *window;
+
+class ResizeDialog : public Fl_Group {
+public:
+ ResizeDialog(int X, int Y, int W, int H, const char *T = 0);
+ Fl_Box *m_icon;
+ Fl_Box *m_message;
+ Fl_Button *m_button;
+};
+
+ResizeDialog::ResizeDialog(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->align(FL_ALIGN_TOP_LEFT);
+ this->box(FL_UP_BOX);
+
+ m_icon = new Fl_Box(X + 10, Y + 10, 30, 30, "!");
+ m_icon->box(FL_DOWN_BOX);
+ m_message = new Fl_Box(X + 50, Y + 10, 140, 30, "Out of Memory");
+ m_message->box(FL_DOWN_BOX);
+ m_message->color(FL_YELLOW);
+
+ Fl_Group *group = new Fl_Group(X + 50, Y + 50, 140, 30);
+ Fl_Box *b = new Fl_Box(X + 50, Y + 50, 90, 30, "R");
+ b->box(FL_UP_BOX);
+ // b->color(FL_YELLOW);
+ m_button = new Fl_Button(X + 140, Y + 50, 50, 30, "Darn!");
+ group->resizable(b);
+ group->end();
+
+ this->end();
+ this->resizable(m_message);
+}
+
+class Resizables : public Fl_Group {
+public:
+ Resizables(int X, int Y, int W, int H, const char *T = 0);
+ ResizeDialog *TL, *TR, *BL, *BR; // topleft, topright, bottomleft, bottomright
+ Harrow *LA, *RA; // left arrow, right arrow
+ Varrow *TA, *BA; // top arrow, bottom arrow
+};
+
+Resizables::Resizables(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->box(FL_UP_BOX);
+ this->color(FL_WHITE);
+
+ TL = new ResizeDialog(X + TLx, Y + TLy, TLw, TLh, "Original Size");
+ TL->resizable(0);
+ TR = new ResizeDialog(X + TRx, Y + TLy, TLw, TLh, "Horizontally Resized");
+ BL = new ResizeDialog(X + TLx, Y + BLy, TLw, TLh, "Vertically Resized");
+ BR = new ResizeDialog(X + TRx, Y + BLy, TLw, TLh, "Horizontally and Vertically Resized");
+
+ Fl_Group *LG = new Fl_Group(X + TLx, Y + LGy, TLw, LGh);
+ LG->box(FL_NO_BOX);
+ LG->color(FL_WHITE);
+ LA = new Harrow(BL->m_message->x(), LG->y(), BL->m_message->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(BR->m_message->x(), LG->y(), BL->m_message->w(), LAh, "Resized\nwidth");
+ RG->resizable(RA);
+ RG->end();
+
+ Fl_Group *TG = new Fl_Group(X + TGx, Y + TLy, TGw, TLh);
+ TG->box(FL_NO_BOX);
+ TG->color(FL_WHITE);
+ TA = new Varrow(TG->x(), TR->m_message->y(), TAw, TR->m_message->h(), "Initial\nheight");
+ TG->resizable(TA);
+ TG->end();
+
+ Fl_Group *BG = new Fl_Group(X + TGx, Y + BLy, TGw, TLh);
+ BG->box(FL_NO_BOX);
+ BG->color(FL_WHITE);
+ BA = new Varrow(BG->x(), BR->m_message->y(), TAw, BR->m_message->h(), "Resized\nheight");
+ BG->resizable(BA);
+ BG->end();
+
+ this->resizable(BR);
+ this->end();
+}
+
+int main(int argc, char **argv) {
+ window = new Fl_Double_Window(Ww, Wh, "resize-example3c");
+ 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 + 50, Wh + 35);
+ Fl::visible_focus(0); // suppress focus box
+ return Fl::run();
+}
diff --git a/test/resize-example4a.cxx b/test/resize-example4a.cxx
new file mode 100644
index 000000000..3764b1e93
--- /dev/null
+++ b/test/resize-example4a.cxx
@@ -0,0 +1,99 @@
+//
+// 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 = 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_button1, *m_input1, *m_button2, *m_input2;
+};
+
+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);
+ Fl_Group *group = new Fl_Group(X + 10, Y + 10, 240, 45);
+ group->box(FL_NO_BOX);
+ m_button1 = new Fl_Box(X + 20, Y + 20, 40, 25, "btn");
+ m_button1->box(FL_UP_BOX);
+ m_input1 = new Fl_Box(X + 70, Y + 20, 50, 25, "input");
+ m_input1->box(FL_UP_BOX);
+ m_button2 = new Fl_Box(X + 140, Y + 20, 40, 25, "btn");
+ m_button2->box(FL_UP_BOX);
+ m_input2 = new Fl_Box(X + 190, Y + 20, 50, 25, "input");
+ m_input2->box(FL_UP_BOX);
+ m_input2->color(FL_YELLOW);
+ group->resizable(m_input2);
+ group->end();
+ this->resizable(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, "Horizonally 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_input2->x(), LG->y(), TL->m_input2->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_input2->x(), RG->y(), TR->m_input2->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-example4a");
+ 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-example4b.cxx b/test/resize-example4b.cxx
new file mode 100644
index 000000000..6b391ca0a
--- /dev/null
+++ b/test/resize-example4b.cxx
@@ -0,0 +1,115 @@
+//
+// 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, complex and arrow dimensions
+int TLx = 35, TRx = 320, TLw = 260, Ww = 620;
+int TLy = 35, LGy = 100, TLh = 65, LGh = 80, LAh = 35, Wh = 200;
+
+Fl_Double_Window *window = 0;
+
+class Complex : public Fl_Group {
+public:
+ Complex(int X, int Y, int W, int H, const char *T = 0);
+ Fl_Box *m_button1, *m_input1, *m_button2, *m_input2;
+};
+
+Complex::Complex(int X, int Y, int W, int H, const char *T)
+ : Fl_Group(X, Y, W, H, T) {
+ this->box(FL_UP_BOX);
+ Fl_Group *LG = new Fl_Group(X + 10, Y + 10, 120, 45);
+ LG->box(FL_UP_BOX);
+ m_button1 = new Fl_Box(X + 20, Y + 20, 40, 25, "btn");
+ m_button1->box(FL_UP_BOX);
+ m_input1 = new Fl_Box(X + 70, Y + 20, 50, 25, "input");
+ m_input1->box(FL_UP_BOX);
+ m_input1->color(FL_YELLOW);
+ LG->resizable(m_input1);
+ LG->end();
+
+ Fl_Group *RG = new Fl_Group(X + 130, Y + 10, 120, 45);
+ RG->box(FL_UP_BOX);
+ m_button2 = new Fl_Box(X + 140, Y + 20, 40, 25, "btn");
+ m_button2->box(FL_UP_BOX);
+ m_input2 = new Fl_Box(X + 190, Y + 20, 50, 25, "input");
+ m_input2->box(FL_UP_BOX);
+ m_input2->color(FL_YELLOW);
+ RG->resizable(m_input2);
+ RG->end();
+ this->end();
+}
+
+class Resizables : public Fl_Group {
+public:
+ Resizables(int X, int Y, int W, int H, const char *T = 0);
+ Complex *TL, *TR; // topleft, topright
+ 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 Complex(X + TLx, Y + TLy, TLw, TLh, "Original");
+ TL->align(FL_ALIGN_TOP_LEFT);
+
+ TR = new Complex(X + TRx, Y + TLy, TLw, TLh, "Horizonally 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_input2->x(), LG->y(), TL->m_input2->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);
+
+ Fl_Group *RG0 = new Fl_Group(X + TRx, Y + LGy, TLw / 2, LGh);
+ RG0->box(FL_NO_BOX);
+ RG0->color(FL_WHITE);
+ RG0->end();
+
+ Fl_Group *RG1 = new Fl_Group(X + TRx + TLw / 2, Y + LGy, TLw / 2, LGh);
+ RG1->box(FL_NO_BOX);
+ RG1->color(FL_WHITE);
+ RA = new Harrow(TR->m_input2->x(), RG1->y(), TR->m_input2->w(), LAh, "Resized\nwidth");
+ RG1->resizable(RA);
+ RG1->end();
+
+ RG->end();
+
+ this->resizable(TR);
+ this->end();
+}
+
+
+int main(int argc, char **argv) {
+ window = new Fl_Double_Window(Ww, Wh, "resize-example4b");
+ 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();
+}