FLTK logo

[Library] r9002 - in branches/branch-3.0: include/fltk3 src/core test

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[Library] r9002 - in branches/branch-3.0: include/fltk3 src/core test fltk-dev Aug 24, 2011  
 
Author: matt
Date: 2011-08-24 12:24:48 -0700 (Wed, 24 Aug 2011)
New Revision: 9002
Log:
FLTK3: added some more crispness to the default scheme. Added some fancyness: check out test/input ;-)

Modified:
   branches/branch-3.0/include/fltk3/Widget.h
   branches/branch-3.0/include/fltk3/enumerations.h
   branches/branch-3.0/include/fltk3/run.h
   branches/branch-3.0/src/core/Fl_Button.cxx
   branches/branch-3.0/src/core/Fl_Chart.cxx
   branches/branch-3.0/src/core/Fl_Light_Button.cxx
   branches/branch-3.0/src/core/Fl_get_system_colors.cxx
   branches/branch-3.0/src/core/fl_boxtype.cxx
   branches/branch-3.0/src/core/fl_diamond_box.cxx
   branches/branch-3.0/src/core/fl_gtk.cxx
   branches/branch-3.0/src/core/fl_oval_box.cxx
   branches/branch-3.0/src/core/fl_plastic.cxx
   branches/branch-3.0/src/core/fl_round_box.cxx
   branches/branch-3.0/src/core/fl_rounded_box.cxx
   branches/branch-3.0/src/core/fl_shadow_box.cxx
   branches/branch-3.0/test/input.cxx

Modified: branches/branch-3.0/include/fltk3/Widget.h
===================================================================
--- branches/branch-3.0/include/fltk3/Widget.h	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/include/fltk3/Widget.h	2011-08-24 19:24:48 UTC (rev 9002)
@@ -127,7 +127,7 @@
     Color color2_;
     uchar type_;
     uchar damage_;
-    uchar box_;
+    Boxtype box_;
     uchar when_;
     
     const char *tooltip_;

Modified: branches/branch-3.0/include/fltk3/enumerations.h
===================================================================
--- branches/branch-3.0/include/fltk3/enumerations.h	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/include/fltk3/enumerations.h	2011-08-24 19:24:48 UTC (rev 9002)
@@ -529,6 +529,11 @@
     GTK_THIN_DOWN_FRAME = THIN_DOWN_FRAME,///< gtk+ version of fltk3::THIN_DOWN_FRAME
     GTK_ROUND_UP_BOX = ROUND_UP_BOX,      ///< gtk+ version of fltk3::ROUND_UP_BOX
     GTK_ROUND_DOWN_BOX = ROUND_DOWN_BOX,  ///< gtk+ version of fltk3::ROUND_DOWN_BOX
+    
+    TIE_LEFT    = 0x10000000,
+    TIE_RIGHT   = 0x20000000,
+    TIE_TOP     = 0x40000000,
+    TIE_BOTTOM  = 0x80000000,
   };
   
   // conversions of box types to other boxtypes:

Modified: branches/branch-3.0/include/fltk3/run.h
===================================================================
--- branches/branch-3.0/include/fltk3/run.h	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/include/fltk3/run.h	2011-08-24 19:24:48 UTC (rev 9002)
@@ -72,7 +72,7 @@
   typedef void (LabelMeasureF)(const fltk3::Label *label, int &width, int &height);
   
   /** Signature of some box drawing functions passed as parameters */
-  typedef void (BoxDrawF)(int x, int y, int w, int h, fltk3::Color color);
+  typedef void (BoxDrawF)(int x, int y, int w, int h, fltk3::Color color, fltk3::Boxtype type);
   
   /** Signature of some timeout callback functions passed as parameters */
   typedef void (*TimeoutHandler)(void *data);

Modified: branches/branch-3.0/src/core/Fl_Button.cxx
===================================================================
--- branches/branch-3.0/src/core/Fl_Button.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/Fl_Button.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -75,7 +75,15 @@
 void fltk3::Button::draw() {
   FLTK3_OBJECT_VCALLS_WRAPPER(draw(), Draw)
   if (type() == fltk3::HIDDEN_BUTTON) return;
-  fltk3::Color col = value() ? selection_color() : color();
+  fltk3::Color col;
+  if (value()) {
+    if (selection_color()==fltk3::GRAY) 
+      col = fltk3::color_average(fltk3::BLACK, color(), 0.2f);
+    else
+      col = selection_color();
+  } else {
+    col = color();
+  }
   draw_box(value() ? (down_box()?down_box():fltk3::down(box())) : box(), col);
   draw_backdrop();
   if (labeltype() == fltk3::NORMAL_LABEL && value()) {

Modified: branches/branch-3.0/src/core/Fl_Chart.cxx
===================================================================
--- branches/branch-3.0/src/core/Fl_Chart.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/Fl_Chart.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -35,7 +35,7 @@
 #define ARCINC	(2.0*M_PI/360.0)
 
 // this function is in fl_boxtype.cxx:
-void fl_rectbound(int x,int y,int w,int h, fltk3::Color color);
+void fl_rectbound(int x,int y,int w,int h, fltk3::Color color, fltk3::Boxtype);
 
 /* Widget specific information */
 
@@ -67,9 +67,9 @@
   for (i=0; i<numb; i++) {
       int hh = (int)rint(entries[i].val*incr);
       if (hh < 0)
-	fl_rectbound(x+i*bwidth,zeroh,bwidth+1,-hh+1, (fltk3::Color)entries[i].col);
+	fl_rectbound(x+i*bwidth,zeroh,bwidth+1,-hh+1, (fltk3::Color)entries[i].col, (fltk3::Boxtype)0);
       else if (hh > 0)
-	fl_rectbound(x+i*bwidth,zeroh-hh,bwidth+1,hh+1,(fltk3::Color)entries[i].col);
+	fl_rectbound(x+i*bwidth,zeroh-hh,bwidth+1,hh+1,(fltk3::Color)entries[i].col, (fltk3::Boxtype)0);
   }
   /* Draw the labels */
   fltk3::color(textcolor);
@@ -113,9 +113,9 @@
   for (i=0; i<numb; i++) {
       int ww = (int)rint(entries[i].val*incr);
       if (ww > 0)
-	fl_rectbound(zeroh,y+i*bwidth,ww+1,bwidth+1, (fltk3::Color)entries[i].col);
+	fl_rectbound(zeroh,y+i*bwidth,ww+1,bwidth+1, (fltk3::Color)entries[i].col, (fltk3::Boxtype)0);
       else if (ww < 0)
-	fl_rectbound(zeroh+ww,y+i*bwidth,-ww+1,bwidth+1,(fltk3::Color)entries[i].col);
+	fl_rectbound(zeroh+ww,y+i*bwidth,-ww+1,bwidth+1,(fltk3::Color)entries[i].col, (fltk3::Boxtype)0);
   }
   /* Draw the labels */
   fltk3::color(textcolor);

Modified: branches/branch-3.0/src/core/Fl_Light_Button.cxx
===================================================================
--- branches/branch-3.0/src/core/Fl_Light_Button.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/Fl_Light_Button.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -39,8 +39,14 @@
 
 void fltk3::LightButton::draw() {
   FLTK3_OBJECT_VCALLS_WRAPPER(draw(), Draw)
-  if (box()) draw_box(this==fltk3::pushed() ? fltk3::down(box()) : box(), color());
-  fltk3::Color col = value() ? (active_r() ? selection_color() :
+  fltk3::Color col;
+  if (this==fltk3::pushed()) {
+    col = fltk3::color_average(fltk3::BLACK, color(), 0.2f);
+  } else {
+    col = color();
+  }
+  if (box()) draw_box(this==fltk3::pushed() ? fltk3::down(box()) : box(), col);
+  col = value() ? (active_r() ? selection_color() :
                             fltk3::inactive(selection_color())) : color();
   int W;
   int dx, dy;

Modified: branches/branch-3.0/src/core/Fl_get_system_colors.cxx
===================================================================
--- branches/branch-3.0/src/core/Fl_get_system_colors.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/Fl_get_system_colors.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -247,17 +247,17 @@
 #define D1 BORDER_WIDTH
 #define D2 (BORDER_WIDTH+BORDER_WIDTH)
 
-extern void	fl_gtk_up_box(int, int, int, int, fltk3::Color);
-extern void	fl_gtk_down_box(int, int, int, int, fltk3::Color);
-extern void	fl_gtk_thin_up_box(int, int, int, int, fltk3::Color);
-extern void	fl_gtk_thin_down_box(int, int, int, int, fltk3::Color);
-extern void	fl_gtk_round_up_box(int, int, int, int, fltk3::Color);
-extern void	fl_gtk_round_down_box(int, int, int, int, fltk3::Color);
+extern void	fl_gtk_up_box(int, int, int, int, fltk3::Color, fltk3::Boxtype);
+extern void	fl_gtk_down_box(int, int, int, int, fltk3::Color, fltk3::Boxtype);
+extern void	fl_gtk_thin_up_box(int, int, int, int, fltk3::Color, fltk3::Boxtype);
+extern void	fl_gtk_thin_down_box(int, int, int, int, fltk3::Color, fltk3::Boxtype);
+extern void	fl_gtk_round_up_box(int, int, int, int, fltk3::Color, fltk3::Boxtype);
+extern void	fl_gtk_round_down_box(int, int, int, int, fltk3::Color, fltk3::Boxtype);
 
-extern void	fl_gtk_up_frame(int, int, int, int, fltk3::Color);
-extern void	fl_gtk_down_frame(int, int, int, int, fltk3::Color);
-extern void	fl_gtk_thin_up_frame(int, int, int, int, fltk3::Color);
-extern void	fl_gtk_thin_down_frame(int, int, int, int, fltk3::Color);
+extern void	fl_gtk_up_frame(int, int, int, int, fltk3::Color, fltk3::Boxtype);
+extern void	fl_gtk_down_frame(int, int, int, int, fltk3::Color, fltk3::Boxtype);
+extern void	fl_gtk_thin_up_frame(int, int, int, int, fltk3::Color, fltk3::Boxtype);
+extern void	fl_gtk_thin_down_frame(int, int, int, int, fltk3::Color, fltk3::Boxtype);
 
 #ifndef FLTK3_DOXYGEN
 const char	*fltk3::scheme_ = (const char *)0;	    // current scheme 

Modified: branches/branch-3.0/src/core/fl_boxtype.cxx
===================================================================
--- branches/branch-3.0/src/core/fl_boxtype.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/fl_boxtype.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -136,34 +136,38 @@
 }
 
 /** Draws a box of type fltk3::NO_BOX */
-void fl_no_box(int, int, int, int, fltk3::Color) {}
+void fl_no_box(int, int, int, int, fltk3::Color, fltk3::Boxtype) {}
 
+void fl_flat_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
+  fltk3::rectf(x, y, w, h, c);
+}
+
 /** Draws a frame of type fltk3::THIN_DOWN_FRAME */
-void fl_classic_thin_down_frame(int x, int y, int w, int h, fltk3::Color) {
+void fl_classic_thin_down_frame(int x, int y, int w, int h, fltk3::Color, fltk3::Boxtype) {
   fltk3::frame2("WWHH",x,y,w,h);
 }
 
 /** Draws a box of type fltk3::THIN_DOWN_BOX */
-void fl_classic_thin_down_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_classic_thin_down_frame(x,y,w,h,c);
+void fl_classic_thin_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_classic_thin_down_frame(x,y,w,h,c,t);
   fltk3::color(draw_it_active ? c : fltk3::inactive(c));
   fltk3::rectf(x+1, y+1, w-2, h-2);
 }
 
 /** Draws a frame of type fltk3::THIN_UP_FRAME */
-void fl_classic_thin_up_frame(int x, int y, int w, int h, fltk3::Color) {
+void fl_classic_thin_up_frame(int x, int y, int w, int h, fltk3::Color, fltk3::Boxtype) {
   fltk3::frame2("HHWW",x,y,w,h);
 }
 
 /** Draws a box of type fltk3::THIN_UP_BOX */
-void fl_classic_thin_up_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_classic_thin_up_frame(x,y,w,h,c);
+void fl_classic_thin_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_classic_thin_up_frame(x,y,w,h,c,t);
   fltk3::color(draw_it_active ? c : fltk3::inactive(c));
   fltk3::rectf(x+1, y+1, w-2, h-2);
 }
 
 /** Draws a frame of type fltk3::UP_FRAME */
-void fl_classic_up_frame(int x, int y, int w, int h, fltk3::Color) {
+void fl_classic_up_frame(int x, int y, int w, int h, fltk3::Color, fltk3::Boxtype) {
 #if BORDER_WIDTH == 1
   fltk3::frame2("HHWW",x,y,w,h);
 #else
@@ -179,14 +183,14 @@
 #define D2 (BORDER_WIDTH+BORDER_WIDTH)
 
 /** Draws a box of type fltk3::UP_BOX */
-void fl_classic_up_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_classic_up_frame(x,y,w,h,c);
+void fl_classic_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_classic_up_frame(x,y,w,h,c,t);
   fltk3::color(draw_it_active ? c : fltk3::inactive(c));
   fltk3::rectf(x+D1, y+D1, w-D2, h-D2);
 }
 
 /** Draws a frame of type fltk3::DOWN_FRAME */
-void fl_classic_down_frame(int x, int y, int w, int h, fltk3::Color) {
+void fl_classic_down_frame(int x, int y, int w, int h, fltk3::Color, fltk3::Boxtype) {
 #if BORDER_WIDTH == 1
   fltk3::frame2("WWHH",x,y,w,h);
 #else
@@ -199,31 +203,31 @@
 }
 
 /** Draws a box of type fltk3::DOWN_BOX */
-void fl_classic_down_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_classic_down_frame(x,y,w,h,c);
+void fl_classic_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_classic_down_frame(x,y,w,h,c,t);
   fltk3::color(c); fltk3::rectf(x+D1, y+D1, w-D2, h-D2);
 }
 
 /** Draws a frame of type fltk3::ENGRAVED_FRAME */
-void fl_engraved_frame(int x, int y, int w, int h, fltk3::Color) {
+void fl_engraved_frame(int x, int y, int w, int h, fltk3::Color, fltk3::Boxtype) {
   fltk3::frame("HHWWWWHH",x,y,w,h);
 }
 
 /** Draws a box of type fltk3::ENGRAVED_BOX */
-void fl_engraved_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_engraved_frame(x,y,w,h,c);
+void fl_engraved_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_engraved_frame(x,y,w,h,c,t);
   fltk3::color(draw_it_active ? c : fltk3::inactive(c));
   fltk3::rectf(x+2, y+2, w-4, h-4);
 }
 
 /** Draws a frame of type fltk3::EMBOSSED_FRAME */
-void fl_embossed_frame(int x, int y, int w, int h, fltk3::Color) {
+void fl_embossed_frame(int x, int y, int w, int h, fltk3::Color, fltk3::Boxtype) {
   fltk3::frame("WWHHHHWW",x,y,w,h);
 }
 
 /** Draws a box of type fltk3::EMBOSSED_BOX */
-void fl_embossed_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_embossed_frame(x,y,w,h,c);
+void fl_embossed_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_embossed_frame(x,y,w,h,c,t);
   fltk3::color(draw_it_active ? c : fltk3::inactive(c));
   fltk3::rectf(x+2, y+2, w-4, h-4);
 }
@@ -232,7 +236,7 @@
   Draws a bounded rectangle with a given position, size and color.
   Equivalent to drawing a box of type fltk3::BORDER_BOX.
 */
-void fl_rectbound(int x, int y, int w, int h, fltk3::Color bgcolor) {
+void fl_rectbound(int x, int y, int w, int h, fltk3::Color bgcolor, fltk3::Boxtype) {
   fltk3::color(draw_it_active ? fltk3::BLACK : fltk3::inactive(fltk3::BLACK));
   fltk3::rect(x, y, w, h);
   fltk3::color(draw_it_active ? bgcolor : fltk3::inactive(bgcolor));
@@ -243,48 +247,48 @@
 /**
   Draws a frame of type fltk3::BORDER_FRAME.
 */
-void fl_border_frame(int x, int y, int w, int h, fltk3::Color c) {
+void fl_border_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   fltk3::color(draw_it_active ? c : fltk3::inactive(c));
   fltk3::rect(x, y, w, h);
 }
 
 ////////////////////////////////////////////////////////////////
 
-void fl_diamond_down_box(int x,int y,int w,int h,fltk3::Color bgcolor);
-void fl_diamond_up_box(int x,int y,int w,int h,fltk3::Color bgcolor);
-void fl_shadow_frame(int x, int y, int w, int h, fltk3::Color c);
-void fl_shadow_box(int x, int y, int w, int h, fltk3::Color c);
+void fl_diamond_down_box(int x,int y,int w,int h,fltk3::Color bgcolor, fltk3::Boxtype);
+void fl_diamond_up_box(int x,int y,int w,int h,fltk3::Color bgcolor, fltk3::Boxtype);
+void fl_shadow_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_shadow_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
 
-void fl_classic_round_up_box(int x, int y, int w, int h, fltk3::Color bgcolor);
-void fl_classic_round_down_box(int x, int y, int w, int h, fltk3::Color bgcolor);
-void fl_rflat_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_rounded_frame(int x, int y, int w, int h, fltk3::Color c);
-void fl_rounded_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_rshadow_box(int x, int y, int w, int h, fltk3::Color c);
+void fl_classic_round_up_box(int x, int y, int w, int h, fltk3::Color bgcolor, fltk3::Boxtype);
+void fl_classic_round_down_box(int x, int y, int w, int h, fltk3::Color bgcolor, fltk3::Boxtype);
+void fl_rflat_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_rounded_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_rounded_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_rshadow_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
 
-void fl_oval_shadow_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_oval_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_oval_frame(int x, int y, int w, int h, fltk3::Color c);
-void fl_oval_flat_box(int x, int y, int w, int h, fltk3::Color c);
+void fl_oval_shadow_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_oval_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_oval_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_oval_flat_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
 
-void fl_plastic_up_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_plastic_down_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_plastic_up_frame(int x, int y, int w, int h, fltk3::Color c);
-void fl_plastic_down_frame(int x, int y, int w, int h, fltk3::Color c);
-void fl_plastic_thin_up_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_plastic_up_round(int x, int y, int w, int h, fltk3::Color c);
-void fl_plastic_down_round(int x, int y, int w, int h, fltk3::Color c);
+void fl_plastic_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_plastic_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_plastic_up_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_plastic_down_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_plastic_thin_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_plastic_up_round(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_plastic_down_round(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
 
-void fl_gtk_up_frame(int x, int y, int w, int h, fltk3::Color c);
-void fl_gtk_up_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_gtk_down_frame(int x, int y, int w, int h, fltk3::Color c);
-void fl_gtk_down_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_gtk_thin_up_frame(int x, int y, int w, int h, fltk3::Color c);
-void fl_gtk_thin_up_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_gtk_thin_down_frame(int x, int y, int w, int h, fltk3::Color c);
-void fl_gtk_thin_down_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_gtk_round_up_box(int x, int y, int w, int h, fltk3::Color c);
-void fl_gtk_round_down_box(int x, int y, int w, int h, fltk3::Color c);
+void fl_gtk_up_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_gtk_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_gtk_down_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_gtk_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_gtk_thin_up_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_gtk_thin_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_gtk_thin_down_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_gtk_thin_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_gtk_round_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
+void fl_gtk_round_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype);
 
 static struct {
   fltk3::BoxDrawF *f;
@@ -293,7 +297,7 @@
 } fl_box_table[256] = {
 // must match list in enumerations.h!!!
   {fl_no_box,                   0,0,0,0,1},		
-  {fltk3::rectf,                0,0,0,0,1}, // fltk3::FLAT_BOX
+  {fl_flat_box,                 0,0,0,0,1}, // fltk3::FLAT_BOX
   {fl_gtk_up_box,		2,2,4,4,0}, // FL_GTK_UP_BOX,
   {fl_gtk_down_box,		2,2,4,4,0}, // FL_GTK_DOWN_BOX,
   {fl_gtk_up_frame,		2,2,4,4,0}, // FL_GTK_UP_FRAME,
@@ -359,7 +363,7 @@
   Returns the X offset for the given boxtype.
   \see box_dy()
 */
-int fltk3::box_dx(fltk3::Boxtype t) {return fl_box_table[t].dx;}
+int fltk3::box_dx(fltk3::Boxtype t) {return fl_box_table[t&255].dx;}
 
 /**
     Returns the Y offset for the given boxtype.
@@ -384,19 +388,19 @@
     for deriving custom widgets, where one wants to avoid drawing 
     over the widget's own border box().
 */
-int fltk3::box_dy(fltk3::Boxtype t) {return fl_box_table[t].dy;}
+int fltk3::box_dy(fltk3::Boxtype t) {return fl_box_table[t&255].dy;}
 
 /**
   Returns the width offset for the given boxtype.
   \see box_dy().
 */
-int fltk3::box_dw(fltk3::Boxtype t) {return fl_box_table[t].dw;}
+int fltk3::box_dw(fltk3::Boxtype t) {return fl_box_table[t&255].dw;}
 
 /**
   Returns the height offset for the given boxtype.
   \see box_dy().
 */
-int fltk3::box_dh(fltk3::Boxtype t) {return fl_box_table[t].dh;}
+int fltk3::box_dh(fltk3::Boxtype t) {return fl_box_table[t&255].dh;}
 
 /**
   Sets the drawing function for a given box type.
@@ -404,29 +408,29 @@
   \param[in] f box drawing function
 */
 void fl_internal_boxtype(fltk3::Boxtype t, fltk3::BoxDrawF* f) {
-  if (!fl_box_table[t].set) {
-    fl_box_table[t].f   = f;
-    fl_box_table[t].set = 1;
+  if (!fl_box_table[t&255].set) {
+    fl_box_table[t&255].f   = f;
+    fl_box_table[t&255].set = 1;
   }
 }
 
 /** Gets the current box drawing function for the specified box type. */
 fltk3::BoxDrawF *fltk3::get_boxtype(fltk3::Boxtype t) {
-  return fl_box_table[t].f;
+  return fl_box_table[t&255].f;
 }
 /** Sets the function to call to draw a specific boxtype. */
 void fltk3::set_boxtype(fltk3::Boxtype t, fltk3::BoxDrawF* f,
 		      uchar a, uchar b, uchar c, uchar d) {
-  fl_box_table[t].f   = f;
-  fl_box_table[t].set = 1;
-  fl_box_table[t].dx  = a;
-  fl_box_table[t].dy  = b;
-  fl_box_table[t].dw  = c;
-  fl_box_table[t].dh  = d;
+  fl_box_table[t&255].f   = f;
+  fl_box_table[t&255].set = 1;
+  fl_box_table[t&255].dx  = a;
+  fl_box_table[t&255].dy  = b;
+  fl_box_table[t&255].dw  = c;
+  fl_box_table[t&255].dh  = d;
 }
 /** Copies the from boxtype. */
 void fltk3::set_boxtype(fltk3::Boxtype to, fltk3::Boxtype from) {
-  fl_box_table[to] = fl_box_table[from];
+  fl_box_table[to&255] = fl_box_table[from&255];
 }
 
 /**
@@ -436,7 +440,7 @@
   \param[in] c color
 */
 void fltk3::draw_box(fltk3::Boxtype t, int x, int y, int w, int h, fltk3::Color c) {
-  if (t && fl_box_table[t].f) fl_box_table[t].f(x,y,w,h,c);
+  if (t && fl_box_table[t&255].f) fl_box_table[t&255].f(x,y,w,h,c,t);
 }
 
 //extern fltk3::Widget *fl_boxcheat; // hack set by fltk3::Window.cxx
@@ -463,7 +467,7 @@
 /** Draws a box of type t, of color c at the position X,Y and size W,H. */
 void fltk3::Widget::draw_box(fltk3::Boxtype t, int X, int Y, int W, int H, fltk3::Color c) const {
   draw_it_active = active_r();
-  fl_box_table[t].f(X, Y, W, H, c);
+  fl_box_table[t&255].f(X, Y, W, H, c, t);
   draw_it_active = 1;
 }
 

Modified: branches/branch-3.0/src/core/fl_diamond_box.cxx
===================================================================
--- branches/branch-3.0/src/core/fl_diamond_box.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/fl_diamond_box.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -38,7 +38,7 @@
   extern uchar* gray_ramp();
 }
 
-void fl_diamond_up_box(int x,int y,int w,int h,fltk3::Color bgcolor) {
+void fl_diamond_up_box(int x,int y,int w,int h,fltk3::Color bgcolor, fltk3::Boxtype) {
   w &= -2;
   h &= -2;
   int x1 = x+w/2;
@@ -54,7 +54,7 @@
   fltk3::color(g['A']); fltk3::loop(x, y1, x1, y, x+w, y1, x1, y+h);
 }
 
-void fl_diamond_down_box(int x,int y,int w,int h,fltk3::Color bgcolor) {
+void fl_diamond_down_box(int x,int y,int w,int h,fltk3::Color bgcolor, fltk3::Boxtype) {
   w &= -2;
   h &= -2;
   int x1 = x+w/2;

Modified: branches/branch-3.0/src/core/fl_gtk.cxx
===================================================================
--- branches/branch-3.0/src/core/fl_gtk.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/fl_gtk.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -37,20 +37,125 @@
 
 extern void fl_internal_boxtype(fltk3::Boxtype, fltk3::BoxDrawF*);
 
+static const int tie_gap = 5;
+static const float tie_dk = 0.3f;
+static const float tie_lt = 0.45f;
+static const int use_tie_lt = 1;
 
+
+static fltk3::Color gtk_get_color(fltk3::Color c) {
+  if (fltk3::draw_box_active()) return c;
+  else return fltk3::inactive(c);
+}
+
 static void gtk_color(fltk3::Color c) {
-  if (fltk3::draw_box_active()) fltk3::color(c);
-  else fltk3::color(fltk3::inactive(c));
+  fltk3::color(gtk_get_color(c));
 }
 
+/*
+fltk3::color(hi);
+fltk3::yxline(x+1, y+2, b-2);
+fltk3::xyline(x+2, y+1, r-2);
+fltk3::color(ol);
+*/
 
-void fl_gtk_up_frame(int x, int y, int w, int h, fltk3::Color c) {
-  gtk_color(fltk3::color_average(fltk3::WHITE, c, 0.5));
-  fltk3::xyline(x + 2, y + 1, x + w - 3);
-  fltk3::yxline(x + 1, y + 2, y + h - 3);
 
-  gtk_color(fltk3::color_average(fltk3::BLACK, c, 0.5));
-  fltk3::begin_loop();
+static void draw_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Color lt, fltk3::Color dk, fltk3::Boxtype t) {
+  float f = (dk==fltk3::WHITE) ? 0.2 : 0.5;
+  fltk3::Color ol = gtk_get_color(fltk3::color_average(fltk3::BLACK, c, f));
+  fltk3::Color hi = gtk_get_color(fltk3::color_average(lt, c, 0.5));
+  if (t & 0xff000000) {
+    int r = x+w-1, b = y+h-1, xr = x+w/2, yb = y+h/2;
+    fltk3::color(ol);
+    switch (t & (fltk3::TIE_LEFT|fltk3::TIE_TOP)) {
+      case 0:
+        fltk3::color(hi);
+        fltk3::yxline(x+1, y+2, yb);
+        fltk3::xyline(x+2, y+1, xr);
+        fltk3::color(ol);
+        fltk3::begin_line();
+        fltk3::vertex(x, yb);
+        fltk3::vertex(x, y+2);
+        fltk3::vertex(x+2, y);
+        fltk3::vertex(xr, y);
+        fltk3::end_line();
+        break;
+      case fltk3::TIE_LEFT:
+        fltk3::color(hi);
+        fltk3::xyline(x, y+1, xr);
+        fltk3::color(ol);
+        fltk3::xyline(x, y, xr);
+        break;
+      case fltk3::TIE_TOP:
+        fltk3::color(hi);
+        fltk3::yxline(x+1, y, yb);
+        fltk3::color(ol);
+        fltk3::yxline(x, yb, y);
+    }
+    switch (t & (fltk3::TIE_RIGHT|fltk3::TIE_TOP)) {
+      case 0:
+        fltk3::color(hi);
+        fltk3::xyline(xr, y+1, r-2);
+        fltk3::color(ol);
+        fltk3::begin_line();
+        fltk3::vertex(xr, y);
+        fltk3::vertex(r-2, y);
+        fltk3::vertex(r, y+2);
+        fltk3::vertex(r, yb);
+        fltk3::end_line();
+        break;
+      case fltk3::TIE_RIGHT:
+        fltk3::color(hi);
+        fltk3::xyline(xr, y+1, r);
+        fltk3::color(ol);
+        fltk3::xyline(xr, y, r);
+        break;
+      case fltk3::TIE_TOP:
+        fltk3::yxline(r, y, yb);
+    }
+    switch (t & (fltk3::TIE_RIGHT|fltk3::TIE_BOTTOM)) {
+      case 0:
+        fltk3::begin_line();
+        fltk3::vertex(r, yb);
+        fltk3::vertex(r, b-2);
+        fltk3::vertex(r-2, b);
+        fltk3::vertex(xr, b);
+        fltk3::end_line();
+        break;
+      case fltk3::TIE_RIGHT:
+        fltk3::xyline(xr, b, r);
+        break;
+      case fltk3::TIE_BOTTOM:
+        fltk3::yxline(r, yb, b);
+    }
+    switch (t & (fltk3::TIE_LEFT|fltk3::TIE_BOTTOM)) {
+      case 0:
+        fltk3::color(hi);
+        fltk3::yxline(x+1, yb, b-2);
+        fltk3::color(ol);
+        fltk3::begin_line();
+        fltk3::vertex(xr, b);
+        fltk3::vertex(x+2, b);
+        fltk3::vertex(x, b-2);
+        fltk3::vertex(x, yb);
+        fltk3::end_line();
+        break;
+      case fltk3::TIE_LEFT:
+        fltk3::xyline(x, b, xr);
+        break;
+      case fltk3::TIE_BOTTOM:
+        fltk3::color(hi);
+        fltk3::yxline(x+1, yb, b);
+        fltk3::color(ol);
+        fltk3::yxline(x, yb, b);
+    }
+  } else {
+    fltk3::color(hi);
+    fltk3::xyline(x + 2, y + 1, x + w - 3);
+    fltk3::yxline(x + 1, y + 2, y + h - 3);
+    
+    fltk3::color(ol);
+    fltk3::begin_loop();
     fltk3::vertex(x, y + 2);
     fltk3::vertex(x + 2, y);
     fltk3::vertex(x + w - 3, y);
@@ -59,32 +164,105 @@
     fltk3::vertex(x + w - 3, y + h - 1);
     fltk3::vertex(x + 2, y + h - 1);
     fltk3::vertex(x, y + h - 3);
-  fltk3::end_loop();
+    fltk3::end_loop();
+  }
 }
 
+static void draw_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Color lt, fltk3::Color dk, fltk3::Boxtype t) {
+  float f = (dk==fltk3::WHITE) ? 0.5 : 1.0;
+  draw_frame(x, y, w, h, c, lt, dk, t);
+  if (t & 0xff000000) {
+    int r = x+w-1, b = y+h-1;
+    int x2 = x+2, r2 = r-2;
+    int y2 = y+2, b2 = b-2;
+    if (t & fltk3::TIE_LEFT)  x2 = x;
+    if (t & fltk3::TIE_RIGHT) r2 = r;
+    if (t & fltk3::TIE_TOP) {
+      y2 = y;
+      if (use_tie_lt) {
+        gtk_color(fltk3::color_average(fltk3::WHITE, c, tie_lt));
+        fltk3::xyline(x+tie_gap, y, r-tie_gap);
+        fltk3::color(c);
+        fltk3::xyline(x2, y, x+tie_gap-1);
+        fltk3::xyline(r-tie_gap+1, y, r2+1);
+        fltk3::rectf(x2, y+1, r2-x2+1, 4);
+      } else {
+        fltk3::color(c);
+        fltk3::rectf(x2, y, r2-x2+2, 5);
+      }
+    } else {
+      gtk_color(fltk3::color_average(lt, c, 0.4f*f));
+      fltk3::xyline(x2, y+2, r2);
+      gtk_color(fltk3::color_average(lt, c, 0.2f*f));
+      fltk3::xyline(x2, y+3, r2);
+      gtk_color(fltk3::color_average(lt, c, 0.1f*f));
+      fltk3::xyline(x2, y+4, r2);
+    }
+    gtk_color(c);
+    fltk3::rectf(x2, y + 5, r2-x2+1, h - 7);
+    if (t & fltk3::TIE_BOTTOM) {
+      b2 = b;
+      gtk_color(fltk3::color_average(fltk3::BLACK, c, tie_dk));
+      fltk3::xyline(x+tie_gap, b, r-tie_gap);
+      fltk3::color(c);
+      fltk3::xyline(x2, b, x+tie_gap-1);
+      fltk3::xyline(r-tie_gap+1, b, r2);
+      fltk3::rectf(x2, y+h-4, r2-x2+1, 3);
+    } else {
+      gtk_color(fltk3::color_average(dk, c, 0.025f/f));
+      fltk3::xyline(x2, b-3, r2);
+      gtk_color(fltk3::color_average(dk, c, 0.05f/f));
+      fltk3::xyline(x2, b-2, r2);
+      gtk_color(fltk3::color_average(dk, c, 0.1f/f));
+      fltk3::xyline(x2, b-1, r2);
+    }
+    if (t & fltk3::TIE_LEFT) {
+      if (use_tie_lt) {
+        gtk_color(fltk3::color_average(fltk3::WHITE, c, tie_lt));
+        fltk3::yxline(x, y+tie_gap, b-tie_gap);
+        //gtk_color(c);
+        //fltk3::yxline(x, y2, y+tie_gap-1);
+        //fltk3::yxline(x, b-tie_gap+1, b2);
+      }
+    }
+    if (t & fltk3::TIE_RIGHT) {
+      gtk_color(fltk3::color_average(fltk3::BLACK, c, tie_dk));
+      fltk3::yxline(r, y+tie_gap, b-tie_gap);
+    } else {
+      gtk_color(fltk3::color_average(dk, c, 0.1f));
+      fltk3::yxline(r-1, y2, b2);
+    }
+  } else {
+    gtk_color(fltk3::color_average(lt, c, 0.4f));
+    fltk3::xyline(x + 2, y + 2, x + w - 3);
+    gtk_color(fltk3::color_average(lt, c, 0.2f));
+    fltk3::xyline(x + 2, y + 3, x + w - 3);
+    gtk_color(fltk3::color_average(lt, c, 0.1f));
+    fltk3::xyline(x + 2, y + 4, x + w - 3);
+    gtk_color(c);
+    fltk3::rectf(x + 2, y + 5, w - 4, h - 7);
+    gtk_color(fltk3::color_average(dk, c, 0.025f));
+    fltk3::xyline(x + 2, y + h - 4, x + w - 3);
+    gtk_color(fltk3::color_average(dk, c, 0.05f));
+    fltk3::xyline(x + 2, y + h - 3, x + w - 3);
+    gtk_color(fltk3::color_average(dk, c, 0.1f));
+    fltk3::xyline(x + 2, y + h - 2, x + w - 3);
+    fltk3::yxline(x + w - 2, y + 2, y + h - 3);
+  }
+}
 
-void fl_gtk_up_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_gtk_up_frame(x, y, w, h, c);
+void fl_gtk_up_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  draw_frame(x, y, w, h, c, fltk3::WHITE, fltk3::BLACK, t);
+}
 
-  gtk_color(fltk3::color_average(fltk3::WHITE, c, 0.4f));
-  fltk3::xyline(x + 2, y + 2, x + w - 3);
-  gtk_color(fltk3::color_average(fltk3::WHITE, c, 0.2f));
-  fltk3::xyline(x + 2, y + 3, x + w - 3);
-  gtk_color(fltk3::color_average(fltk3::WHITE, c, 0.1f));
-  fltk3::xyline(x + 2, y + 4, x + w - 3);
-  gtk_color(c);
-  fltk3::rectf(x + 2, y + 5, w - 4, h - 7);
-  gtk_color(fltk3::color_average(fltk3::BLACK, c, 0.025f));
-  fltk3::xyline(x + 2, y + h - 4, x + w - 3);
-  gtk_color(fltk3::color_average(fltk3::BLACK, c, 0.05f));
-  fltk3::xyline(x + 2, y + h - 3, x + w - 3);
-  gtk_color(fltk3::color_average(fltk3::BLACK, c, 0.1f));
-  fltk3::xyline(x + 2, y + h - 2, x + w - 3);
-  fltk3::yxline(x + w - 2, y + 2, y + h - 3);
+void fl_gtk_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  draw_box(x, y, w, h, c, fltk3::WHITE, fltk3::BLACK, t);
 }
 
-
-void fl_gtk_down_frame(int x, int y, int w, int h, fltk3::Color c) {
+void fl_gtk_down_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+#if 1
+  draw_frame(x, y, w, h, c, fltk3::BLACK, fltk3::WHITE, t);
+#else
   gtk_color(fltk3::color_average(fltk3::BLACK, c, 0.5));
   fltk3::begin_loop();
     fltk3::vertex(x, y + 2);
@@ -103,19 +281,24 @@
 
   gtk_color(fltk3::color_average(fltk3::BLACK, c, 0.05f));
   fltk3::yxline(x + 2, y + h - 2, y + 2, x + w - 2);
+#endif
 }
 
 
-void fl_gtk_down_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_gtk_down_frame(x, y, w, h, c);
+void fl_gtk_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+#if 1
+  draw_box(x, y, w, h, c, fltk3::BLACK, fltk3::WHITE, t);
+#else
+  fl_gtk_down_frame(x, y, w, h, c, t);
 
   gtk_color(c);
   fltk3::rectf(x + 3, y + 3, w - 5, h - 4);
   fltk3::yxline(x + w - 2, y + 3, y + h - 3);
+#endif
 }
 
 
-void fl_gtk_thin_up_frame(int x, int y, int w, int h, fltk3::Color c) {
+void fl_gtk_thin_up_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   gtk_color(fltk3::color_average(fltk3::WHITE, c, 0.6f));
   fltk3::xyline(x + 1, y, x + w - 2);
   fltk3::yxline(x, y + 1, y + h - 2);
@@ -126,8 +309,8 @@
 }
 
 
-void fl_gtk_thin_up_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_gtk_thin_up_frame(x, y, w, h, c);
+void fl_gtk_thin_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_gtk_thin_up_frame(x, y, w, h, c, t);
 
   gtk_color(fltk3::color_average(fltk3::WHITE, c, 0.4f));
   fltk3::xyline(x + 1, y + 1, x + w - 2);
@@ -146,7 +329,7 @@
 }
 
 
-void fl_gtk_thin_down_frame(int x, int y, int w, int h, fltk3::Color c) {
+void fl_gtk_thin_down_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   gtk_color(fltk3::color_average(fltk3::BLACK, c, 0.4f));
   fltk3::xyline(x + 1, y, x + w - 2);
   fltk3::yxline(x, y + 1, y + h - 2);
@@ -157,8 +340,8 @@
 }
 
 
-void fl_gtk_thin_down_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_gtk_thin_down_frame(x, y, w, h, c);
+void fl_gtk_thin_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_gtk_thin_down_frame(x, y, w, h, c, t);
 
   gtk_color(c);
   fltk3::rectf(x + 1, y + 1, w - 2, h - 2);
@@ -212,7 +395,7 @@
   }
 }
 
-void fl_gtk_round_up_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_gtk_round_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   fltk3::color(c);
   draw(FILL,	    x,   y, w,   h, 2);
 
@@ -243,7 +426,7 @@
   draw(CLOSED,	    x,   y, w,   h, 0);
 }
 
-void fl_gtk_round_down_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_gtk_round_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   fltk3::color(c);
   draw(FILL,	    x,   y, w,   h, 2);
 
@@ -260,7 +443,7 @@
 
 #else
 
-void fl_gtk_round_up_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_gtk_round_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   gtk_color(c);
   fltk3::pie(x, y, w, h, 0.0, 360.0);
   gtk_color(fltk3::color_average(fltk3::WHITE, c, 0.5f));
@@ -272,7 +455,7 @@
 }
 
 
-void fl_gtk_round_down_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_gtk_round_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   gtk_color(c);
   fltk3::pie(x, y, w, h, 0.0, 360.0);
   gtk_color(fltk3::color_average(fltk3::BLACK, c, 0.2));

Modified: branches/branch-3.0/src/core/fl_oval_box.cxx
===================================================================
--- branches/branch-3.0/src/core/fl_oval_box.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/fl_oval_box.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -32,24 +32,24 @@
 #include <fltk3/run.h>
 #include <fltk3/draw.h>
 
-void fl_oval_flat_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_oval_flat_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   fltk3::color(c);
   fltk3::pie(x, y, w, h, 0, 360);
 }
 
-void fl_oval_frame(int x, int y, int w, int h, fltk3::Color c) {
+void fl_oval_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   fltk3::color(c);
   fltk3::arc(x, y, w, h, 0, 360);
 }
 
-void fl_oval_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_oval_flat_box(x,y,w,h,c);
-  fl_oval_frame(x,y,w,h,fltk3::BLACK);
+void fl_oval_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_oval_flat_box(x,y,w,h,c,t);
+  fl_oval_frame(x,y,w,h,fltk3::BLACK,t);
 }
 
-void fl_oval_shadow_box(int x, int y, int w, int h, fltk3::Color c) {
-  fl_oval_flat_box(x+3,y+3,w,h,fltk3::DARK3);
-  fl_oval_box(x,y,w,h,c);
+void fl_oval_shadow_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
+  fl_oval_flat_box(x+3,y+3,w,h,fltk3::DARK3,t);
+  fl_oval_box(x,y,w,h,c,t);
 }
 
 //

Modified: branches/branch-3.0/src/core/fl_plastic.cxx
===================================================================
--- branches/branch-3.0/src/core/fl_plastic.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/fl_plastic.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -282,7 +282,7 @@
 }
 
 
-void fl_plastic_up_frame(int x, int y, int w, int h, fltk3::Color c) {
+void fl_plastic_up_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   frame_rect(x, y, w, h - 1, "KLDIIJLM", c);
 }
 
@@ -304,7 +304,7 @@
 }
 
 
-void fl_plastic_thin_up_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_plastic_thin_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
 #ifdef USE_OLD_PLASTIC_BOX
   shade_rect(x + 2, y + 2, w - 4, h - 5, "RVQNOPQRSTUVWVQ", c);
   up_frame(x, y, w, h, c);
@@ -319,7 +319,7 @@
 }
 
 
-void fl_plastic_up_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_plastic_up_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
 #ifdef USE_OLD_PLASTIC_BOX
   shade_rect(x + 2, y + 2, w - 4, h - 5, "RVQNOPQRSTUVWVQ", c);
   up_frame(x, y, w, h, c);
@@ -328,27 +328,27 @@
     shade_rect(x + 1, y + 1, w - 2, h - 3, "RVQNOPQRSTUVWVQ", c);
     frame_rect(x, y, w, h - 1, "IJLM", c);
   } else {
-    fl_plastic_thin_up_box(x, y, w, h, c);
+    fl_plastic_thin_up_box(x, y, w, h, c, t);
   }
 #endif // USE_OLD_PLASTIC_BOX
 }
 
 
-void fl_plastic_up_round(int x, int y, int w, int h, fltk3::Color c) {
+void fl_plastic_up_round(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   shade_round(x, y, w, h, "RVQNOPQRSTUVWVQ", c);
   frame_round(x, y, w, h, "IJLM", c);
 }
 
 
-void fl_plastic_down_frame(int x, int y, int w, int h, fltk3::Color c) {
+void fl_plastic_down_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   frame_rect(x, y, w, h - 1, "LLLLTTRR", c);
 }
 
 
-void fl_plastic_down_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_plastic_down_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
   if (w > 6 && h > 6) {
     shade_rect(x + 2, y + 2, w - 4, h - 5, "STUVWWWVT", c);
-    fl_plastic_down_frame(x, y, w, h, c);
+    fl_plastic_down_frame(x, y, w, h, c, t);
   }
   else {
     narrow_thin_box(x, y, w, h, c);
@@ -356,7 +356,7 @@
 }
 
 
-void fl_plastic_down_round(int x, int y, int w, int h, fltk3::Color c) {
+void fl_plastic_down_round(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   shade_round(x, y, w, h, "STUVWWWVT", c);
   frame_round(x, y, w, h, "IJLM", c);
 }

Modified: branches/branch-3.0/src/core/fl_round_box.cxx
===================================================================
--- branches/branch-3.0/src/core/fl_round_box.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/fl_round_box.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -87,7 +87,7 @@
   fltk3::line_style(0);
 }
 
-void fl_classic_round_down_box(int x, int y, int w, int h, fltk3::Color bgcolor) {
+void fl_classic_round_down_box(int x, int y, int w, int h, fltk3::Color bgcolor, fltk3::Boxtype) {
   uchar *g = fltk3::gray_ramp();
   draw(FILL,	    x,   y, w,   h, 2, bgcolor);
   draw(UPPER_LEFT,  x+1, y, w-2, h, 0, (fltk3::Color)g['N']);
@@ -101,7 +101,7 @@
   draw(CLOSED,	    x,   y, w,   h, 2, (fltk3::Color)g['A']);
 }
 
-void fl_classic_round_up_box(int x, int y, int w, int h, fltk3::Color bgcolor) {
+void fl_classic_round_up_box(int x, int y, int w, int h, fltk3::Color bgcolor, fltk3::Boxtype) {
   uchar *g = fltk3::gray_ramp();
   draw(FILL,	    x,   y, w,   h, 2, bgcolor);
   draw(LOWER_RIGHT, x+1, y, w-2, h, 0, (fltk3::Color)g['H']);

Modified: branches/branch-3.0/src/core/fl_rounded_box.cxx
===================================================================
--- branches/branch-3.0/src/core/fl_rounded_box.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/fl_rounded_box.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -54,26 +54,26 @@
   if (fill) fltk3::end_polygon(); else fltk3::end_loop();
 }
 
-void fl_rflat_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_rflat_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   fltk3::color(c); rbox(1, x, y, w, h); rbox(0, x, y, w, h);
 }
 
-void fl_rounded_frame(int x, int y, int w, int h, fltk3::Color c) {
+void fl_rounded_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   fltk3::color(c); rbox(0, x, y, w, h);
 }
 
-void fl_rounded_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_rounded_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   fltk3::color(c); rbox(1, x, y, w, h);
   fltk3::color(fltk3::BLACK); rbox(0, x, y, w, h);
 }
 
-void fl_rshadow_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_rshadow_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
   // draw shadow:
   fltk3::color(fltk3::DARK3);
   rbox(1, x+BW, y+BW, w, h);
   rbox(0, x+BW, y+BW, w, h);
   // draw the box:
-  fl_rounded_box(x, y, w, h, c);
+  fl_rounded_box(x, y, w, h, c, t);
 }
 
 //

Modified: branches/branch-3.0/src/core/fl_shadow_box.cxx
===================================================================
--- branches/branch-3.0/src/core/fl_shadow_box.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/src/core/fl_shadow_box.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -30,7 +30,7 @@
 
 #define BW 3
 
-void fl_shadow_frame(int x, int y, int w, int h, fltk3::Color c) {
+void fl_shadow_frame(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype) {
   fltk3::color(fltk3::DARK3);
   fltk3::rectf(x+BW, y+h-BW,  w - BW, BW);
   fltk3::rectf(x+w-BW,  y+BW, BW,  h - BW);
@@ -38,10 +38,10 @@
   fltk3::rect(x,y,w-BW,h-BW);
 }
 
-void fl_shadow_box(int x, int y, int w, int h, fltk3::Color c) {
+void fl_shadow_box(int x, int y, int w, int h, fltk3::Color c, fltk3::Boxtype t) {
   fltk3::color(c);
   fltk3::rectf(x+1,y+1,w-2-BW,h-2-BW);
-  fl_shadow_frame(x,y,w,h,fltk3::GRAY0);
+  fl_shadow_frame(x,y,w,h,fltk3::GRAY0,t);
 }
 
 

Modified: branches/branch-3.0/test/input.cxx
===================================================================
--- branches/branch-3.0/test/input.cxx	2011-08-24 13:51:27 UTC (rev 9001)
+++ branches/branch-3.0/test/input.cxx	2011-08-24 19:24:48 UTC (rev 9002)
@@ -95,7 +95,8 @@
   // calling fltk3::contrast below will return good results
   fltk3::args(argc, argv);
   fltk3::get_system_colors();
-  fltk3::Window *window = new fltk3::Window(400,420);
+  fltk3::Window *window = new fltk3::Window(400,425);
+  window->color(0x99bb9900);
 
   int y = 10;
   input[0] = new fltk3::Input(70,y,300,30,"Normal:"); y += 35;
@@ -122,27 +123,35 @@
 
   fltk3::Button *b;
   b = new fltk3::ToggleButton(10,y,200,25,"fltk3::WHEN_CHANGED");
+  b->box(fltk3::Boxtype(fltk3::TIE_BOTTOM|fltk3::UP_BOX));
   b->callback(toggle_cb, fltk3::WHEN_CHANGED); y += 25;
   b->tooltip("Do callback each time the text changes");
   b = new fltk3::ToggleButton(10,y,200,25,"fltk3::WHEN_RELEASE");
+  b->box(fltk3::Boxtype(fltk3::TIE_BOTTOM|fltk3::TIE_TOP|fltk3::UP_BOX));
   b->callback(toggle_cb, fltk3::WHEN_RELEASE); y += 25;
   b->tooltip("Do callback when widget loses focus");
   b = new fltk3::ToggleButton(10,y,200,25,"fltk3::WHEN_ENTER_KEY");
+  b->box(fltk3::Boxtype(fltk3::TIE_BOTTOM|fltk3::TIE_TOP|fltk3::UP_BOX));
   b->callback(toggle_cb, fltk3::WHEN_ENTER_KEY); y += 25;
   b->tooltip("Do callback when user hits Enter key");
   b = new fltk3::ToggleButton(10,y,200,25,"fltk3::WHEN_NOT_CHANGED");
+  b->box(fltk3::Boxtype(fltk3::TIE_TOP|fltk3::UP_BOX));
   b->callback(toggle_cb, fltk3::WHEN_NOT_CHANGED); y += 25;
   b->tooltip("Do callback even if the text is not changed");
   y += 5;
+  
   b = new fltk3::Button(10,y,200,25,"&print changed()"); y += 25;
   b->callback(button_cb);
   b->tooltip("Print widgets that have changed() flag set");
 
+  y += 5;
   b = new fltk3::LightButton(10,y,100,25," Tab Nav");
+  b->box(fltk3::Boxtype(fltk3::TIE_RIGHT|fltk3::UP_BOX));
   b->tooltip("Control tab navigation for the multiline input field");
   b->callback(tabnav_cb, (void*)input[4]);
   b->value(input[4]->tab_nav() ? 1 : 0);
   b = new fltk3::LightButton(110,y,100,25," Arrow Nav"); y += 25;
+  b->box(fltk3::Boxtype(fltk3::TIE_LEFT|fltk3::UP_BOX));
   b->tooltip("Control horizontal arrow key focus navigation behavior.\n"
              "e.g. fltk3::OPTION_ARROW_FOCUS");
   b->callback(arrownav_cb);
@@ -150,13 +159,16 @@
   b->value(fltk3::option(fltk3::OPTION_ARROW_FOCUS) ? 1 : 0);
 
   b = new fltk3::Button(220,y1,120,25,"color"); y1 += 25;
+  b->box(fltk3::Boxtype(fltk3::TIE_BOTTOM|fltk3::UP_BOX));
   b->color(input[0]->color()); b->callback(color_cb, (void*)0);
   b->tooltip("Color behind the text");
   b = new fltk3::Button(220,y1,120,25,"selection_color"); y1 += 25;
+  b->box(fltk3::Boxtype(fltk3::TIE_BOTTOM|fltk3::TIE_TOP|fltk3::UP_BOX));
   b->color(input[0]->selection_color()); b->callback(color_cb, (void*)1);
   b->labelcolor(fltk3::contrast(fltk3::BLACK,b->color()));
   b->tooltip("Color behind selected text");
   b = new fltk3::Button(220,y1,120,25,"textcolor"); y1 += 25;
+  b->box(fltk3::Boxtype(fltk3::TIE_TOP|fltk3::UP_BOX));
   b->color(input[0]->textcolor()); b->callback(color_cb, (void*)2);
   b->labelcolor(fltk3::contrast(fltk3::BLACK,b->color()));
   b->tooltip("Color of the text");

Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.