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");

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to