DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

Link: http://www.fltk.org/str.php?L2675
Version: 1.4-feature


Attached file "patchscheme.diff"...


Link: http://www.fltk.org/str.php?L2675
Version: 1.4-feature
diff -Naurp src/fltk-1.3.2/src/fl_gleam-3.0.cxx 
tmp/fltk-1.3.2/src/fl_gleam-3.0.cxx
--- src/fltk-1.3.2/src/fl_gleam-3.0.cxx 1969-12-31 19:00:00 -0500
+++ tmp/fltk-1.3.2/src/fl_gleam-3.0.cxx 
@@ -0,0 +1,181 @@
+//
+// "Gleam" drawing routines for the Fast Light Tool Kit (FLTK).
+//
+// These box types provide a sort of Clearlooks Glossy scheme
+// for FLTK.
+//
+// Copyright 2001-2005 by Colin Jones.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+// Box drawing code for an obscure box type.
+// These box types are in seperate files so they are not linked
+// in if not used.
+
+#include <FL/Fl.H>
+#include <FL/fl_draw.H>
+
+static void gleam_color(Fl_Color c) {
+  if (Fl::draw_box_active()) fl_color(c);
+  else fl_color(fl_inactive(c));
+}
+ static void frame_rect(int x, int y, int w, int h, Fl_Color bc) {
+
+    // Draw the outline around the perimeter of the box
+    gleam_color(bc);
+    fl_line(x, y, x + w, y);
+    fl_line(x + w, y, x + w, y + h);
+    fl_line(x + w, y +h, x, y + h);
+    fl_line(x, y +h, x, y);
+  
+}
+
+ static void shade_rect_up(int x, int y, int w, int h, Fl_Color bc) {
+ // Draws the shiny
+  int half = h / 2;
+  //gleam_color(bc);
+  //fl_rectf(x, y, w, h);
+
+  gleam_color(fl_color_average(bc, FL_WHITE, .50f));  
+  fl_rectf(x, y, w, half + 1);
+
+  float        step_size=0.10;
+  int j = 0;
+  step_size = (1.0 / (float)half);
+       //printf("1 / %i = %f \n", half, (1.0/half));
+
+    /**
+    * This loop generates the nice gradient at the bottom of the
+    * widget
+    **/
+   for (float k = 1; k >= 0; k -= step_size)
+   {
+       j++;
+       gleam_color(fl_color_average(bc, FL_WHITE, k));  
+       fl_line(x, y+j+half-1, x + w -1, y+j+half-1);
+   }
+  
+}
+
+static void frame_rect_up(int x, int y, int w, int h, Fl_Color bc) {
+
+    // Draw the outline around the perimeter of the box
+    gleam_color(bc);
+    fl_line(x + 1, y, x + w - 1, y); //Go across.
+    fl_line(x, y + (h/2), x, y + 1); //Go to top
+    fl_line(x + w, y + (h/2), x + w, y + 1); //Go to top
+    
+    gleam_color(fl_darker(bc));
+    fl_line(x + 1, y +h, x + w - 1, y + h); //Go across again!
+    fl_line(x, y + (h/2), x, y + h - 1); //Go to top
+    fl_line(x + w, y + (h/2), x + w, y + h  - 1); //Go to top
+  
+}
+
+static void frame_rect_down(int x, int y, int w, int h, Fl_Color bc) {
+
+       // Draw the outline around the perimeter of the box
+       gleam_color(fl_darker(bc));
+       fl_line(x + 1, y, x + w - 1, y); //Go across.
+       fl_line(x, y + (h/2), x, y + 1); //Go to top
+       fl_line(x + w, y + (h/2), x + w, y + 1); //Go to top
+    
+       //gleam_color(bc);
+       fl_line(x + 1, y +h, x + w - 1, y + h); //Go across again!
+       fl_line(x, y + (h/2), x, y + h - 1); //Go to top
+       fl_line(x + w, y + (h/2), x + w, y + h  - 1); //Go to top
+  
+}
+
+
+ static void shade_rect_down(int x, int y, int w, int h, Fl_Color bc) {
+  
+  gleam_color(bc);  
+  Fl_Color color = fl_color();
+  fl_rectf(x, y, w, h);
+  gleam_color(fl_color_average(bc, fl_darker(color), 0.65));  
+  fl_line(x, y+1, x + w, y+1);
+  fl_line(x, y+1, x, y+h-2);
+  gleam_color(fl_color_average(bc, fl_darker(color), 0.85));  
+  fl_line(x+1, y+2, x + w, y+2);
+  fl_line(x+1, y+2, x +1, y + h-2);
+
+}
+
+
+ static void up_frame(int x, int y, int w, int h, Fl_Color c) {
+  frame_rect_up(x, y, w - 1, h - 1, fl_darker(c));
+}
+
+
+ static void thin_up_box(int x, int y, int w, int h, Fl_Color c) {
+
+    shade_rect_up(x + 1, y, w - 2, h - 1,  c);
+    frame_rect(x + 1, y + 1, w - 3, h - 3, fl_color_average(c, FL_WHITE, 
.25f));       
+    frame_rect_up(x, y, w - 1, h - 1, fl_darker(c));
+ 
+}
+
+
+
+
+ static void up_box(int x, int y, int w, int h, Fl_Color c) {
+    shade_rect_up(x + 1, y, w - 2, h - 1,  c);
+    frame_rect_up(x, y, w - 1, h - 1, fl_darker(c));
+    //draw the inner rect.
+    frame_rect(x + 1, y + 1, w - 3, h - 3, fl_color_average(c, FL_WHITE, 
.25f));
+
+}
+
+
+static void down_frame(int x, int y, int w, int h, Fl_Color c) {
+  frame_rect_down(x, y, w - 1, h - 1, fl_darker(c));
+}
+
+
+ static void down_box(int x, int y, int w, int h, Fl_Color c) {
+    shade_rect_down(x + 1, y, w - 2, h,  c);
+    down_frame(x, y, w, h, fl_darker(c));
+    //draw the inner rect.
+    //frame_rect(x + 1, y + 1, w - 3, h - 3, fl_color_average(c, FL_BLACK, 
.65));
+}
+
+ static void thin_down_box(int x, int y, int w, int h, Fl_Color c) {
+
+    down_box(x, y, w, h, c);
+ 
+}
+
+extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*);
+
+
+Fl_Boxtype fl_define_FL_GLEAM_UP_BOX() {
+  fl_internal_boxtype(_FL_GLEAM_UP_BOX, up_box);
+  fl_internal_boxtype(_FL_GLEAM_DOWN_BOX, down_box);
+  fl_internal_boxtype(_FL_GLEAM_UP_FRAME, up_frame);
+  fl_internal_boxtype(_FL_GLEAM_DOWN_FRAME, down_frame);
+  fl_internal_boxtype(_FL_GLEAM_THIN_UP_BOX, thin_up_box);
+  fl_internal_boxtype(_FL_GLEAM_THIN_DOWN_BOX, thin_down_box);
+  fl_internal_boxtype(_FL_GLEAM_ROUND_UP_BOX, up_box);
+  fl_internal_boxtype(_FL_GLEAM_ROUND_DOWN_BOX, down_box);
+
+  return _FL_GLEAM_UP_BOX;
+}
diff -Naurp src/fltk-1.3.0/src/fl_grad1_theme.cxx 
tmp/fltk-1.3.0/src/fl_grad1_theme.cxx
--- src/fltk-1.3.0/src/fl_grad1_theme.cxx       1969-12-31 19:00:00 -0500
+++ tmp/fltk-1.3.0/src/fl_grad1_theme.cxx       
@@ -0,0 +1,349 @@
+//
+// "Grad1 theme" drawing routines for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2011 by Dmitrij K. e-mail: kdiman at live dot ru
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file.  If this
+// file is missing or damaged, see the license at:
+//
+//     http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef fl_grad1_theme_cxx
+#define fl_grad1_theme_cxx
+
+#include <FL/Fl.H>
+#include <FL/fl_draw.H>
+#include "fl_grad1_theme.h"
+
+
+#define GROFF 0.45f // gradients offset
+
+
+  // draw gradient from South to Nord
+  static void _grad1_up_box_(int x, int y, int w, int h, Fl_Color bg){
+   float groff = GROFF;
+   if(groff < 0.0){ groff = 0.0f; }
+   float gradoffset = groff;
+   float stepoffset = (1.0/(float)h);
+   int xw = x+w-1;
+//    from bottom to top
+   for (int _y = y; _y < y+h; _y++){
+    fl_color(fl_color_average(bg, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+  }
+  
+  
+  // draw gradient from Nord to South
+  static void _grad1_down_box_(int x, int y, int w, int h, Fl_Color bg){
+   float groff = GROFF;
+   if(groff < 0.0){ groff = 0.0f; }
+   float gradoffset = groff;
+   float stepoffset = (1.0/(float)h);
+   int xw = x+w-1;
+//    from top to bottom
+   for (int _y = y+h-1; _y >= y; _y--){
+    fl_color(fl_color_average(bg, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+  }
+
+  // draw gradient for button up box
+  static void _grad1_button_up_box_(int x, int y, int w, int h, Fl_Color bg){
+   int half_h = h/2;
+   float gradoffset = 0.15f;
+   float stepoffset = (1.0/(float)half_h);
+   Fl_Color c = fl_color_average(bg, FL_WHITE, 0.5);
+   int xw = x+w-1;
+   for(int _y = y; _y <= y+half_h; _y++){
+    fl_color(fl_color_average(c, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+   gradoffset = 0.0f;
+   c = bg;
+   for(int _y = y+h-1; _y >= y+half_h-1; _y--){
+    fl_color(fl_color_average(c, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+  }
+    
+  
+  // draw gradient for button down box
+  static void _grad1_button_down_box_(int x, int y, int w, int h, Fl_Color bg){
+   int half_h = h/2;
+   float gradoffset;
+   float stepoffset = (1.0/(float)half_h);
+   Fl_Color c = fl_color_average(bg, FL_WHITE, 0.65);
+   int xw = x+w-1;
+   fl_color(c);
+   for(int _y = y; _y <= y+half_h; _y++){
+    fl_line(x, _y, xw, _y);
+   }
+   gradoffset = 0.20f;
+   c = fl_color_average(bg, FL_WHITE, 0.55);
+   for(int _y = y+h-1; _y >= y+half_h-1; _y--){
+    fl_color(fl_color_average(c, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+  }
+  
+  
+  // draw rounded box
+  static void _grad1_rounded_box_(int x, int y, int w, int h, Fl_Color bg){
+   fl_color(bg);
+   if(w > h){
+    fl_pie(x, y, h, h, 90.0, 270.0); // right half of circle
+    fl_rectf(x+h/2, y, w-h, h); // rectangle between left and right half-circle
+    fl_pie(x+w-h, y, h, h, 0.0, 90.0); // top-left quarter of circle
+    fl_pie(x+w-h, y, h, h, 270.0, 360.0); // bottom-left quarter of circle
+   }
+   else {
+    fl_pie(x, y, w, w, 0.0, 180.0); // top half of circle
+    fl_rectf(x, y+w/2, w, h-w); // rectangle between top and bottom half-circle
+    fl_pie(x, y+h-w, w, w, 180.0, 360.0); // bottom half of circle
+   }
+  }
+
+
+enum {
+ GRAD1_UP_BOX,
+ GRAD1_DOWN_BOX,
+ 
+ GRAD1_UP_BUTTON,
+ GRAD1_DOWN_BUTTON,
+ 
+ GRAD1_UP_ROUND,
+ GRAD1_DOWN_ROUND,
+ 
+ GRAD1_UP_FRAME,
+ GRAD1_DOWN_FRAME
+};
+
+
+static Fl_Color grad1_color(Fl_Color c) {
+  if(Fl::draw_box_active()){ return c; }
+  else { return fl_inactive(c); }
+}
+
+
+
+static void grad1_draw(int x, int y, int w, int h, Fl_Color c, int typebox, 
bool is_shadow){
+ 
+ if(w < 1 || h < 1) return;
+ int X, Y, W, H, X1, Y1;
+ 
+ // draw bg
+ if(typebox != GRAD1_UP_FRAME && typebox != GRAD1_DOWN_FRAME){
+  
+  X = x+1; Y = y+1; W = w-2; H = h-2;
+  
+  switch(typebox){
+   case GRAD1_UP_BOX: { _grad1_up_box_(X, Y, W, H, grad1_color(c)); break; }
+   case GRAD1_DOWN_BOX: { _grad1_down_box_(X, Y, W, H, grad1_color(c)); break; 
}
+   case GRAD1_UP_BUTTON: { _grad1_button_up_box_(X, Y, W, H, grad1_color(c)); 
break; }
+   case GRAD1_DOWN_BUTTON: { _grad1_button_down_box_(X, Y, W, H, 
grad1_color(c)); break; }
+   case GRAD1_UP_ROUND:
+   case GRAD1_DOWN_ROUND:
+    _grad1_rounded_box_(x, y, w, h, grad1_color(fl_color_average(c, FL_WHITE, 
0.82)));
+    break;
+   default: { break; }
+  }
+ }
+ 
+ Fl_Color leftline = c, topline = c, rightline = c, bottomline = c;
+ 
+ if(typebox == GRAD1_UP_ROUND || typebox == GRAD1_DOWN_ROUND){
+  leftline = fl_color_average(c, FL_WHITE, 0.88);
+  leftline = topline = rightline = bottomline = fl_color_average(leftline, 
FL_BLACK, 0.97);
+ }
+  
+ else if(typebox == GRAD1_UP_BOX || typebox == GRAD1_UP_FRAME){
+  topline = fl_color_average(c, FL_BLACK, 0.95);
+  leftline = fl_color_average(c, FL_BLACK, 0.85);
+  rightline = leftline;
+  bottomline = fl_color_average(c, FL_BLACK, 0.88);
+ }
+ 
+ else if(typebox == GRAD1_DOWN_BOX || typebox == GRAD1_DOWN_FRAME){
+  topline = fl_color_average(c, FL_BLACK, 0.88);
+  leftline = fl_color_average(c, FL_BLACK, 0.85);
+  rightline = leftline;
+  bottomline = fl_color_average(c, FL_BLACK, 0.95);
+ }
+ 
+ // draw border
+ if(typebox != GRAD1_UP_ROUND && typebox != GRAD1_DOWN_ROUND){
+  // bottom side
+  fl_color(grad1_color(bottomline));
+  fl_line(x+1, y+h-1, x+w-2, y+h-1);
+  // right side
+  fl_color(grad1_color(rightline));
+  fl_line(x+w-1, y+1, x+w-1, y+h-2);
+  // top side
+  fl_color(grad1_color(topline));
+  fl_line(x+1, y, x+w-2, y);
+  // left side
+  fl_color(grad1_color(leftline));
+  fl_line(x, y+1, x, y+h-2);
+ }
+ 
+ // draw shadow
+ if(is_shadow){
+  
+  if(typebox == GRAD1_UP_ROUND){
+   topline = fl_color_average(c, FL_WHITE, 0.35);
+   bottomline = fl_color_average(c, FL_BLACK, 0.94);
+  }
+  
+  else if(typebox == GRAD1_DOWN_ROUND){
+   topline = fl_color_average(c, FL_BLACK, 0.94);
+   bottomline = fl_color_average(c, FL_WHITE, 0.35);
+  }
+  
+  else if(typebox == GRAD1_UP_BOX || typebox == GRAD1_UP_FRAME){
+   topline = fl_color_average(c, FL_WHITE, 0.35);
+   leftline = fl_color_average(c, FL_WHITE, 0.4);
+   rightline = leftline;
+   bottomline = fl_color_average(c, FL_BLACK, 0.8);
+  }
+  
+  else if(typebox == GRAD1_DOWN_BOX || typebox == GRAD1_DOWN_FRAME){
+   topline = fl_color_average(c, FL_BLACK, 0.8);
+   leftline = fl_color_average(c, FL_BLACK, 0.94);
+   rightline = leftline;
+   bottomline = fl_color_average(c, FL_WHITE, 0.35);
+  }
+  
+  int xw1=x+w-1;
+  int xw2=x+w-2;
+  int xw3=x+w-3;
+  int yh2=y+h-2;
+  int yh1=y+h-1;
+  
+  if(typebox == GRAD1_UP_BOX || typebox == GRAD1_UP_FRAME){
+   fl_color(grad1_color(topline));
+   X=x+1;Y=y+1;X1=xw2;Y1=y+1;
+   fl_line(X, Y, X1, Y1); // top line
+   
+   fl_color(grad1_color(leftline));
+   X=x+1;Y=yh2;X1=x+1;Y1=y+2;
+   fl_line(X, Y, X1, Y1); // left line
+   
+   fl_color(grad1_color(rightline));
+   X=xw2;Y=y+2;X1=xw2;Y1=yh2;
+   fl_line(X, Y, X1, Y1); // right line
+   
+   fl_color(grad1_color(bottomline));
+   X=xw2;Y=yh2;X1=x+1;Y1=yh2;
+   fl_line(X, Y, X1, Y1); // bottom line
+  }
+  
+  else if(typebox == GRAD1_DOWN_BOX || typebox == GRAD1_DOWN_FRAME){
+   fl_color(grad1_color(topline));
+   X=x+1;Y=y+1;X1=xw2;Y1=y+1;
+   fl_line(X, Y, X1, Y1); // top line
+   
+   fl_color(grad1_color(leftline));
+   X=x+1;Y=yh2;X1=x+1;Y1=y+2;
+   fl_line(X, Y, X1, Y1); // left line
+   
+   fl_color(grad1_color(rightline));
+   X=xw2;Y=y+2;X1=xw2;Y1=yh2;
+   fl_line(X, Y, X1, Y1); // right line
+   
+   fl_color(grad1_color(bottomline));
+   X=xw3;Y=yh2;X1=x+2;Y1=yh2;
+   fl_line(X, Y, X1, Y1); // bottom line
+  }
+  
+  else if(typebox == GRAD1_UP_ROUND || typebox == GRAD1_DOWN_ROUND){
+   
+   int Radius, smooth;
+   int r_offset1, r_offset2; // quarter of smooth and half of smooth
+   
+   if(w > h){ smooth = w; }
+   else { smooth = h; }
+   
+    // correcting `smooth'
+   if(smooth > 0 && (smooth*3 > w || smooth*3 > h)){
+    if(h < w){ smooth = h/3; }
+    else { smooth = w/3; }
+   }
+   
+   r_offset1 = smooth/4; r_offset2 = smooth/2;
+   
+   Radius = smooth*3;
+   if(Radius == 3){ Radius = 4; }
+   
+   fl_color(grad1_color(topline));
+   fl_line(x+1, yh1-smooth-r_offset2, x+1, y+r_offset2+smooth); // left side
+   fl_arc(x+1, y+1, Radius, Radius, 90.0, 180.0); // left-top corner
+   if(typebox == GRAD1_DOWN_ROUND){ fl_arc(x+1, y+1, Radius+1, Radius+1, 90.0, 
180.0); } // left-top corner (DOWN_BOX)
+   fl_line(x+smooth+r_offset2, y+1, xw1-smooth-r_offset2, y+1); // top side
+   fl_arc(xw1-Radius, y+1, Radius, Radius, 00.0, 90.0); // right-top corner
+   if(typebox == GRAD1_DOWN_ROUND){ fl_arc(xw1-Radius, y+1, Radius+1, 
Radius+1, 00.0, 90.0); } // right-top corner (DOWN_BOX)
+   fl_line(xw2, y+smooth+r_offset2, xw2, yh1-smooth-r_offset2); // right side
+   fl_arc(x+1, yh1-Radius, Radius, Radius, 180.0, 200.0); // left-bottom corner
+   fl_arc(xw1-Radius, yh1-Radius, Radius, Radius, 340.0, 360.0); // 
right-bottom
+   fl_color(grad1_color(bottomline));
+   fl_arc(x+1, yh1-Radius, Radius, Radius, 200.0, 270.0); // left-bottom corner
+   if(typebox == GRAD1_UP_ROUND){ fl_arc(x+1, yh1-Radius, Radius+1, Radius+1, 
200.0, 270.0); } // left-bottom corner (UP_BOX)
+   fl_line(xw1-smooth-r_offset2, yh2, x+smooth+r_offset2, yh2); // bottom side
+   fl_arc(xw1-Radius, yh1-Radius, Radius, Radius, 270.0, 340.0); // 
right-bottom corner
+   if(typebox == GRAD1_UP_ROUND){ fl_arc(xw1-Radius, yh1-Radius, Radius+1, 
Radius+1, 270.0, 340.0); } // right-bottom corner
+  }
+  
+ } /// end `if(is_shadow)'
+ 
+} /// end `static void grad1_draw(...)'
+
+
+
+void grad1_button_up_box(int x, int y, int w, int h, Fl_Color c){ 
grad1_draw(x, y, w, h, c, GRAD1_UP_BUTTON, true); }
+void grad1_button_down_box(int x, int y, int w, int h, Fl_Color c){ 
grad1_draw(x, y, w, h, c, GRAD1_DOWN_BUTTON, true); }
+void grad1_up_box(int x, int y, int w, int h, Fl_Color c){ grad1_draw(x, y, w, 
h, c, GRAD1_UP_BOX, true); }
+void grad1_down_box(int x, int y, int w, int h, Fl_Color c){ grad1_draw(x, y, 
w, h, c, GRAD1_DOWN_BOX, true); }
+void grad1_thin_up_box(int x, int y, int w, int h, Fl_Color c){ grad1_draw(x, 
y, w, h, c, GRAD1_UP_BOX, false); }
+void grad1_thin_down_box(int x, int y, int w, int h, Fl_Color c){ 
grad1_draw(x, y, w, h, c, GRAD1_DOWN_BOX, false); }
+void grad1_up_frame(int x, int y, int w, int h, Fl_Color c){ grad1_draw(x, y, 
w, h, c, GRAD1_UP_FRAME, true); }
+void grad1_down_frame(int x, int y, int w, int h, Fl_Color c){ grad1_draw(x, 
y, w, h, c, GRAD1_DOWN_FRAME, true); }
+void grad1_thin_up_frame(int x, int y, int w, int h, Fl_Color c){ 
grad1_draw(x, y, w, h, c, GRAD1_UP_FRAME, false); }
+void grad1_thin_down_frame(int x, int y, int w, int h, Fl_Color c){ 
grad1_draw(x, y, w, h, c, GRAD1_DOWN_FRAME, false); }
+void grad1_round_up_box(int x, int y, int w, int h, Fl_Color c){ grad1_draw(x, 
y, w, h, c, GRAD1_UP_ROUND, true); }
+void grad1_round_down_box(int x, int y, int w, int h, Fl_Color c){ 
grad1_draw(x, y, w, h, c, GRAD1_DOWN_ROUND, true); }
+
+
+
+extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*);
+
+Fl_Boxtype fl_define_FL_GRAD1_UP_BOX(){
+
+ fl_internal_boxtype(_FL_GRAD1_UP_BOX, grad1_up_box);
+ fl_internal_boxtype(_FL_GRAD1_DOWN_BOX, grad1_down_box);
+ fl_internal_boxtype(_FL_GRAD1_UP_FRAME, grad1_up_frame);
+ fl_internal_boxtype(_FL_GRAD1_DOWN_FRAME, grad1_down_frame);
+ fl_internal_boxtype(_FL_GRAD1_THIN_UP_BOX, grad1_thin_up_box);
+ fl_internal_boxtype(_FL_GRAD1_THIN_DOWN_BOX, grad1_thin_down_box);
+ fl_internal_boxtype(_FL_GRAD1_THIN_UP_FRAME, grad1_thin_up_frame);
+ fl_internal_boxtype(_FL_GRAD1_THIN_DOWN_FRAME, grad1_thin_down_frame);
+ fl_internal_boxtype(_FL_GRAD1_ROUND_UP_BOX, grad1_round_up_box);
+ fl_internal_boxtype(_FL_GRAD1_ROUND_DOWN_BOX, grad1_round_down_box);
+ fl_internal_boxtype(_FL_GRAD1_BUTTON_UP_BOX, grad1_button_up_box);
+ fl_internal_boxtype(_FL_GRAD1_BUTTON_DOWN_BOX, grad1_button_down_box);
+ 
+ return _FL_GRAD1_UP_BOX;
+ 
+}
+
+#endif
diff -Naurp src/fltk-1.3.2/src/fl_grad1_theme.h 
tmp/fltk-1.3.2/src/fl_grad1_theme.h
--- src/fltk-1.3.2/src/fl_grad1_theme.h 1969-12-31 19:00:00 -0500
+++ tmp/fltk-1.3.2/src/fl_grad1_theme.h 
@@ -0,0 +1,35 @@
+//
+// "Grad1 theme" drawing routines for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2011 by Dmitrij K. e-mail: kdiman at live dot ru
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file.  If this
+// file is missing or damaged, see the license at:
+//
+//     http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef fl_grad_theme_h
+#define fl_grad_theme_h
+
+#include <FL/Fl.H>
+
+extern FL_EXPORT void grad1_up_box(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void grad1_down_box(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void grad1_up_frame(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void grad1_down_frame(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void grad1_thin_up_box(int x, int y, int w, int h, Fl_Color 
c);
+extern FL_EXPORT void grad1_thin_down_box(int x, int y, int w, int h, Fl_Color 
c);
+extern FL_EXPORT void grad1_thin_up_frame(int x, int y, int w, int h, Fl_Color 
c);
+extern FL_EXPORT void grad1_thin_down_frame(int x, int y, int w, int h, 
Fl_Color c);
+extern FL_EXPORT void grad1_round_up_box(int x, int y, int w, int h, Fl_Color 
c);
+extern FL_EXPORT void grad1_round_down_box(int x, int y, int w, int h, 
Fl_Color c);
+extern FL_EXPORT void grad1_button_up_box(int x, int y, int w, int h, Fl_Color 
c);
+extern FL_EXPORT void grad1_button_down_box(int x, int y, int w, int h, 
Fl_Color c);
+
+#endif
diff -Naurp src/fltk-1.3.2/FL/Enumerations.H tmp/fltk-1.3.2/FL/Enumerations.H
--- src/fltk-1.3.2/FL/Enumerations.H    2012-12-09 13:45:57 -0500
+++ tmp/fltk-1.3.2/FL/Enumerations.H    
@@ -516,6 +516,26 @@ enum Fl_Boxtype { // boxtypes (if you ch
   _FL_GTK_THIN_DOWN_FRAME,     ///< gtk+ version of FL_THIN_DOWN_FRAME
   _FL_GTK_ROUND_UP_BOX,                ///< gtk+ version of FL_ROUND_UP_BOX
   _FL_GTK_ROUND_DOWN_BOX,      ///< gtk+ version of FL_ROUND_DOWN_BOX
+  _FL_GRAD1_UP_BOX,
+  _FL_GRAD1_DOWN_BOX,
+  _FL_GRAD1_UP_FRAME,
+  _FL_GRAD1_DOWN_FRAME,
+  _FL_GRAD1_THIN_UP_BOX,
+  _FL_GRAD1_THIN_DOWN_BOX,
+  _FL_GRAD1_THIN_UP_FRAME,
+  _FL_GRAD1_THIN_DOWN_FRAME,
+  _FL_GRAD1_ROUND_UP_BOX,
+  _FL_GRAD1_ROUND_DOWN_BOX,
+  _FL_GRAD1_BUTTON_UP_BOX,
+  _FL_GRAD1_BUTTON_DOWN_BOX,
+  _FL_GLEAM_UP_BOX,
+  _FL_GLEAM_DOWN_BOX,
+  _FL_GLEAM_UP_FRAME,  
+  _FL_GLEAM_DOWN_FRAME,
+  _FL_GLEAM_THIN_UP_BOX,       
+  _FL_GLEAM_THIN_DOWN_BOX,
+  _FL_GLEAM_ROUND_UP_BOX,      
+  _FL_GLEAM_ROUND_DOWN_BOX,
   FL_FREE_BOXTYPE              ///< the first free box type for creation of 
new box types
 };
 extern FL_EXPORT Fl_Boxtype fl_define_FL_ROUND_UP_BOX();
@@ -562,6 +582,30 @@ extern FL_EXPORT Fl_Boxtype fl_define_FL
 #define FL_GTK_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+8)
 #define FL_GTK_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+9)
 
+extern FL_EXPORT Fl_Boxtype fl_define_FL_GRAD1_UP_BOX();
+#define FL_GRAD1_UP_BOX fl_define_FL_GRAD1_UP_BOX()
+#define FL_GRAD1_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+1)
+#define FL_GRAD1_UP_FRAME (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+2)
+#define FL_GRAD1_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+3)
+#define FL_GRAD1_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+4)
+#define FL_GRAD1_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+5)
+#define FL_GRAD1_THIN_UP_FRAME (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+6)
+#define FL_GRAD1_THIN_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+7)
+#define FL_GRAD1_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+8)
+#define FL_GRAD1_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+9)
+#define FL_GRAD1_BUTTON_UP_BOX (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+10)
+#define FL_GRAD1_BUTTON_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GRAD1_UP_BOX()+11)
+
+extern FL_EXPORT Fl_Boxtype fl_define_FL_GLEAM_UP_BOX();
+#define FL_GLEAM_UP_BOX fl_define_FL_GLEAM_UP_BOX()
+#define FL_GLEAM_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+1)
+#define FL_GLEAM_UP_FRAME (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+2)
+#define FL_GLEAM_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+3)
+#define FL_GLEAM_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+4)
+#define FL_GLEAM_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+5)
+#define FL_GLEAM_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+6)
+#define FL_GLEAM_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+7)
+
 // conversions of box types to other boxtypes:
 /**
   Get the filled version of a frame.
diff -Naurp src/fltk-1.3.2/fluid/Fl_Widget_Type.cxx 
tmp/fltk-1.3.2/fluid/Fl_Widget_Type.cxx
--- src/fltk-1.3.2/fluid/Fl_Widget_Type.cxx     2011-09-28 16:43:05 -0400
+++ tmp/fltk-1.3.2/fluid/Fl_Widget_Type.cxx     
@@ -678,6 +678,20 @@ Fl_Menu_Item boxmenu[] = {
 {"GTK_THIN_DOWN_BOX",0,0,(void *)FL_GTK_THIN_DOWN_BOX},
 {"GTK_ROUND_UP_BOX",0,0,(void *)FL_GTK_ROUND_UP_BOX},
 {"GTK_ROUND_DOWN_BOX",0,0,(void *)FL_GTK_ROUND_DOWN_BOX},
+{"GRAD1_UP_BOX",0,0,(void *)FL_GRAD1_UP_BOX},
+{"GRAD1_DOWN_BOX",0,0,(void *)FL_GRAD1_DOWN_BOX},
+{"GRAD1_THIN_UP_BOX",0,0,(void *)FL_GRAD1_THIN_UP_BOX},
+{"GRAD1_THIN_DOWN_BOX",0,0,(void *)FL_GRAD1_THIN_DOWN_BOX},
+{"GRAD1_ROUND_UP_BOX",0,0,(void *)FL_GRAD1_ROUND_UP_BOX},
+{"GRAD1_ROUND_DOWN_BOX",0,0,(void *)FL_GRAD1_ROUND_DOWN_BOX},
+{"GRAD1_BUTTON_UP_BOX",0,0,(void *)FL_GRAD1_BUTTON_UP_BOX},
+{"GRAD1_BUTTON_DOWN_BOX",0,0,(void *)FL_GRAD1_BUTTON_DOWN_BOX},
+{"GLEAM_UP_BOX",0,0,(void *)FL_GLEAM_UP_BOX},
+{"GLEAM_DOWN_BOX",0,0,(void *)FL_GLEAM_DOWN_BOX},
+{"GLEAM_THIN_UP_BOX",0,0,(void *)FL_GLEAM_THIN_UP_BOX},
+{"GLEAM_THIN_DOWN_BOX",0,0,(void *)FL_GLEAM_THIN_DOWN_BOX},
+{"GLEAM_ROUND_UP_BOX",0,0,(void *)FL_GLEAM_ROUND_UP_BOX},
+{"GLEAM_ROUND_DOWN_BOX",0,0,(void *)FL_GLEAM_ROUND_DOWN_BOX},
 {0},
 {"frames",0,0,0,FL_SUBMENU},
 {"UP_FRAME",0,0,(void *)FL_UP_FRAME},
@@ -696,6 +710,12 @@ Fl_Menu_Item boxmenu[] = {
 {"GTK_DOWN_FRAME",0,0,(void *)FL_GTK_DOWN_FRAME},
 {"GTK_THIN_UP_FRAME",0,0,(void *)FL_GTK_THIN_UP_FRAME},
 {"GTK_THIN_DOWN_FRAME",0,0,(void *)FL_GTK_THIN_DOWN_FRAME},
+{"GRAD1_UP_FRAME",0,0,(void *)FL_GRAD1_UP_FRAME},
+{"GRAD1_DOWN_FRAME",0,0,(void *)FL_GRAD1_DOWN_FRAME},
+{"GRAD1_THIN_UP_FRAME",0,0,(void *)FL_GRAD1_THIN_UP_FRAME},
+{"GRAD1_THIN_DOWN_FRAME",0,0,(void *)FL_GRAD1_THIN_DOWN_FRAME},
+{"GLEAM_UP_FRAME",0,0,(void *)FL_GLEAM_UP_FRAME},
+{"GLEAM_DOWN_FRAME",0,0,(void *)FL_GLEAM_DOWN_FRAME},
 {0},
 {0}};
 
diff -Naurp src/fltk-1.3.2/fluid/alignment_panel.cxx 
tmp/fltk-1.3.2/fluid/alignment_panel.cxx
--- src/fltk-1.3.2/fluid/alignment_panel.cxx    2011-07-19 00:49:30 -0400
+++ tmp/fltk-1.3.2/fluid/alignment_panel.cxx    
@@ -153,6 +153,8 @@ Fl_Menu_Item menu_scheme_choice[] = {
  {"None", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
  {"Plastic", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
  {"GTK+", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
+ {"Grad1", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, 
+ {"Gleam", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, 
  {0,0,0,0,0,0,0,0,0}
 };
 
diff -Naurp src/fltk-1.3.2/fluid/alignment_panel.fl 
tmp/fltk-1.3.2/fluid/alignment_panel.fl
--- src/fltk-1.3.2/fluid/alignment_panel.fl     2011-07-19 00:49:30 -0400
+++ tmp/fltk-1.3.2/fluid/alignment_panel.fl     
@@ -187,6 +187,14 @@ Function {make_settings_window()} {} {
         label {GTK+}
         xywh {10 10 35 25}
       }
+      MenuItem {} {
+        label {Grad1}
+        xywh {20 20 35 25}
+      }        
+      MenuItem {} {
+        label {Gleam}
+        xywh {20 20 35 25}
+      }
     }
     Fl_Group {} {open
       xywh {116 43 220 126} labelfont 1 align 0
diff -Naurp src/fltk-1.3.2/fluid/fluid.cxx tmp/fltk-1.3.2/fluid/fluid.cxx
--- src/fltk-1.3.2/fluid/fluid.cxx      2012-04-05 01:12:30 -0400
+++ tmp/fltk-1.3.2/fluid/fluid.cxx      
@@ -1113,6 +1113,12 @@ void scheme_cb(Fl_Choice *, void *) {
     case 3 : // GTK+
       Fl::scheme("gtk+");
       break;
+    case 4 : // Grad1
+      Fl::scheme("grad1");
+      break;
+    case 5 : // Gleam
+      Fl::scheme("gleam");
+      break;
   }
 
   fluid_prefs.set("scheme", scheme_choice->value());
diff -Naurp src/fltk-1.3.2/src/CMakeLists.txt tmp/fltk-1.3.2/src/CMakeLists.txt
--- src/fltk-1.3.2/src/CMakeLists.txt   2011-01-12 04:24:03 -0500
+++ tmp/fltk-1.3.2/src/CMakeLists.txt   
@@ -117,6 +117,8 @@ set(CPPFILES
   fl_file_dir.cxx
   fl_font.cxx
   fl_gtk.cxx
+  fl_grad1_theme.cxx
+  fl_gleam-3.0.cxx
   fl_labeltype.cxx
   fl_line_style.cxx
   fl_open_uri.cxx
diff -Naurp src/fltk-1.3.2/src/Fl_Browser_.cxx 
tmp/fltk-1.3.2/src/Fl_Browser_.cxx
--- src/fltk-1.3.2/src/Fl_Browser_.cxx  2012-12-05 12:17:31 -0500
+++ tmp/fltk-1.3.2/src/Fl_Browser_.cxx  
@@ -409,7 +409,8 @@ J1:
       item_draw(l, X-hposition_, yy+Y, W+hposition_, hh);
       if (l == selection_ && Fl::focus() == this) {
        draw_box(FL_BORDER_FRAME, X, yy+Y, W, hh, color());
-       draw_focus(FL_NO_BOX, X, yy+Y, W+1, hh+1);
+   bool flag_grad1 = (Fl::scheme() && !strcasecmp(Fl::scheme(), "grad1"));
+   draw_focus(FL_NO_BOX, X, yy+Y, flag_grad1?W:W+1, hh+1);
       }
       int ww = item_width(l);
       if (ww > max_width) {max_width = ww; max_width_item = l;}
diff -Naurp src/fltk-1.3.2/src/Fl_Choice.cxx tmp/fltk-1.3.2/src/Fl_Choice.cxx
--- src/fltk-1.3.2/src/Fl_Choice.cxx    2011-07-19 00:49:30 -0400
+++ tmp/fltk-1.3.2/src/Fl_Choice.cxx    
@@ -26,10 +26,11 @@
 // button: it draws the text of the current pick and a down-arrow.
 
 void Fl_Choice::draw() {
+  bool flag_grad1 = (Fl::scheme() && !strcasecmp(Fl::scheme(), "grad1"));
   int dx = Fl::box_dx(FL_DOWN_BOX);
   int dy = Fl::box_dy(FL_DOWN_BOX);
   int H = h() - 2 * dy;
-  int W = (H > 20) ? 20 : H;
+  int W = (H > 20) ? 20 : H; if (flag_grad1) { W = 17; }
   int X = x() + w() - W - dx;
   int Y = y() + dy;
   int w1 = (W - 4) / 3; if (w1 < 1) w1 = 1;
@@ -46,16 +47,35 @@ void Fl_Choice::draw() {
       fl_polygon(x1, y1 + 1, x1 + w1, y1 - w1 + 1, x1 + 2 * w1, y1 + 1);
     } else {
       // Show smaller up/down arrows with a divider...
-      x1 = x() + w() - 13 - dx;
-      y1 = y() + h() / 2;
-      fl_polygon(x1, y1 - 2, x1 + 3, y1 - 5, x1 + 6, y1 - 2);
-      fl_polygon(x1, y1 + 2, x1 + 3, y1 + 5, x1 + 6, y1 + 2);
-
-      fl_color(fl_darker(color()));
-      fl_yxline(x1 - 7, y1 - 8, y1 + 8);
-
-      fl_color(fl_lighter(color()));
-      fl_yxline(x1 - 6, y1 - 8, y1 + 8);
+     Fl_Color drcol = 0x0;
+      
+      if (flag_grad1) { // if was seted the theme `grad1'
+       x1 = x() + w() - dx/2 - W/2 - 4;
+       y1 = y()-1 + h()/2 - 3;
+       fl_polygon(x1, y1 + 2, x1 + 3, y1 + 5, x1 + 6, y1 + 2);
+       
+       drcol = fl_color_average(color(), FL_BLACK, 0.88);
+       fl_color(active_r()?drcol:fl_inactive(drcol));
+       fl_yxline(X, y()+dy, y()+h()-dx-2);
+
+       drcol = fl_lighter(color());
+       fl_color(active_r()?drcol:fl_inactive(drcol));
+       fl_yxline(X+1, y()+dy, y()+h()-dx-2);
+      } else {
+       x1 = x() + w() - 13 - dx;
+       y1 = y() + h() / 2; if (flag_grad1) { y1 -= 1; }
+       fl_polygon(x1, y1 - 2, x1 + 3, y1 - 5, x1 + 6, y1 - 2);
+       fl_polygon(x1, y1 + 2, x1 + 3, y1 + 5, x1 + 6, y1 + 2);
+       
+       drcol = fl_darker(color());
+       fl_color(active_r()?drcol:fl_inactive(drcol));
+       fl_yxline(x1 - 7, y1 - 8, y1 + 8);
+
+       drcol = fl_lighter(color());
+       fl_color(active_r()?drcol:fl_inactive(drcol));
+       fl_yxline(x1 - 6, y1 - 8, y1 + 8);       
+      } 
+      
     }
   } else {
     if (fl_contrast(textcolor(), FL_BACKGROUND2_COLOR) == textcolor()) {
@@ -78,7 +98,8 @@ void Fl_Choice::draw() {
     // ERCO
     int xx = x() + dx, yy = y() + dy + 1, ww = w() - W, hh = H - 2;
 
-    fl_push_clip(xx, yy, ww, hh);
+    if(flag_grad1) fl_push_clip(xx, yy-1, ww-dx-2, h()-dy-dy/2-1);
+    else fl_push_clip(xx, yy, ww, hh);
 
     if ( Fl::scheme()) {
       Fl_Label l;
@@ -91,9 +112,9 @@ void Fl_Choice::draw() {
       l.color= m.labelcolor_ ? m.labelcolor_ : textcolor();
       if (!m.active()) l.color = fl_inactive((Fl_Color)l.color);
       fl_draw_shortcut = 2; // hack value to make '&' disappear
-      l.draw(xx+3, yy, ww>6 ? ww-6 : 0, hh, FL_ALIGN_LEFT);
+      if(flag_grad1) l.draw(xx+2, yy, ww-dx/2-3, hh, FL_ALIGN_LEFT);
+      else l.draw(xx+3, yy, ww>6 ? ww-6 : 0, hh, FL_ALIGN_LEFT);
       fl_draw_shortcut = 0;
-      if ( Fl::focus() == this ) draw_focus(box(), xx, yy, ww, hh);
     }
     else {
       fl_draw_shortcut = 2; // hack value to make '&' disappear
@@ -102,6 +123,9 @@ void Fl_Choice::draw() {
     }
 
     fl_pop_clip();
+    
+    if ( Fl::focus() == this ) draw_focus(box(), xx, yy-1, 
flag_grad1?ww-dx/2:ww, flag_grad1?h()-dy-dy:hh);
+    
   }
 
   draw_label();
@@ -155,6 +179,7 @@ int Fl_Choice::value(int v) {
 int Fl_Choice::handle(int e) {
   if (!menu() || !menu()->text) return 0;
   const Fl_Menu_Item* v;
+  bool flag_grad1 = (Fl::scheme() && !strcasecmp(Fl::scheme(), "grad1"));
   switch (e) {
   case FL_ENTER:
   case FL_LEAVE:
@@ -168,24 +193,24 @@ int Fl_Choice::handle(int e) {
   J1:
     if (Fl::scheme()
        || fl_contrast(textcolor(), FL_BACKGROUND2_COLOR) != textcolor()) {
-      v = menu()->pulldown(x(), y(), w(), h(), mvalue(), this);
+      v = menu()->pulldown(x(), y(), w(), h(), flag_grad1?0:mvalue(), this);
     } else {
       // In order to preserve the old look-n-feel of "white" menus,
       // temporarily override the color() of this widget...
       Fl_Color c = color();
       color(FL_BACKGROUND2_COLOR);
-      v = menu()->pulldown(x(), y(), w(), h(), mvalue(), this);
+      v = menu()->pulldown(x(), y(), w(), h(), flag_grad1?0:mvalue(), this);
       color(c);
     }
     if (!v || v->submenu()) return 1;
-    if (v != mvalue()) redraw();
+    /*if (v != mvalue())*/ redraw(); // NOTE: for see the focus (kdiman)
     picked(v);
     return 1;
   case FL_SHORTCUT:
     if (Fl_Widget::test_shortcut()) goto J1;
     v = menu()->test_shortcut();
     if (!v) return 0;
-    if (v != mvalue()) redraw();
+    /*if (v != mvalue())*/ redraw(); // NOTE: for see the focus (kdiman)
     picked(v);
     return 1;
   case FL_FOCUS:
diff -Naurp src/fltk-1.3.2/src/Fl_Light_Button.cxx 
tmp/fltk-1.3.2/src/Fl_Light_Button.cxx
--- src/fltk-1.3.2/src/Fl_Light_Button.cxx      2012-12-07 11:29:49 -0500
+++ tmp/fltk-1.3.2/src/Fl_Light_Button.cxx      
@@ -36,7 +36,8 @@ void Fl_Light_Button::draw() {
   int W;
   int dx, dy;
 
-  W  = labelsize();
+  if(down_box() && Fl::scheme() && !strcasecmp(Fl::scheme(), "grad1")){ W = 
15; } // for theme `grad1' - fixing size of box
+  else { W  = labelsize(); }
   dx = Fl::box_dx(box()) + 2;
   dy = (h() - W) / 2;
   // if (dy < 0) dy = 0;         // neg. offset o.k. for vertical centering
@@ -84,6 +85,8 @@ void Fl_Light_Button::draw() {
            fl_color(fl_color_average(FL_WHITE, FL_SELECTION_COLOR, 0.2f));
          } else fl_color(col);
 
+         if(Fl::scheme() && !strcasecmp(Fl::scheme(), "grad1")){ tW = 5; } // 
for theme `grad1' - fixing size of inline circle
+
          switch (tW) {
            // Larger circles draw fine...
            default :
diff -Naurp src/fltk-1.3.2/src/Fl_Menu.cxx tmp/fltk-1.3.2/src/Fl_Menu.cxx
--- src/fltk-1.3.2/src/Fl_Menu.cxx      2012-12-07 11:29:49 -0500
+++ tmp/fltk-1.3.2/src/Fl_Menu.cxx      
@@ -182,6 +182,8 @@ void Fl_Menu_Item::draw(int x, int y, in
   if (flags & (FL_MENU_TOGGLE|FL_MENU_RADIO)) {
     int d = (h - FL_NORMAL_SIZE + 1) / 2;
     int W = h - 2 * d;
+    bool flag_grad1 = (Fl::scheme() && !strcasecmp(Fl::scheme(), "grad1"));
+    if (flag_grad1){ W = 15; d--; } // for theme `grad1' - fixing size of box
 
     if (flags & FL_MENU_RADIO) {
       fl_draw_box(FL_ROUND_DOWN_BOX, x+2, y+d, W, W, FL_BACKGROUND2_COLOR);
@@ -198,6 +200,7 @@ void Fl_Menu_Item::draw(int x, int y, in
          } else fl_color(labelcolor_);
        } else fl_color(labelcolor_);
 
+   if (flag_grad1) tW = 5; // for theme `grad1' - fixing size of inline circle 
  
        switch (tW) {
          // Larger circles draw fine...
          default :
diff -Naurp src/fltk-1.3.2/src/Fl_Tree_Prefs.cxx 
tmp/fltk-1.3.2/src/Fl_Tree_Prefs.cxx
--- src/fltk-1.3.2/src/Fl_Tree_Prefs.cxx        2012-11-06 15:46:14 -0500
+++ tmp/fltk-1.3.2/src/Fl_Tree_Prefs.cxx        
@@ -162,6 +162,8 @@ Fl_Tree_Prefs::Fl_Tree_Prefs() {
       _selectbox = _FL_GTK_THIN_UP_BOX;
     } else if ( strcmp(Fl::scheme(), "plastic") == 0 ) {
       _selectbox = _FL_PLASTIC_THIN_UP_BOX;
+    } else if ( strcasecmp(Fl::scheme(), "grad1") == 0 ) {
+      _selectbox = _FL_GRAD1_THIN_UP_BOX;
     }
   }
 }
diff -Naurp src/fltk-1.3.2/src/Fl_Widget.cxx tmp/fltk-1.3.2/src/Fl_Widget.cxx
--- src/fltk-1.3.2/src/Fl_Widget.cxx    2012-05-07 03:18:11 -0400
+++ tmp/fltk-1.3.2/src/Fl_Widget.cxx    
@@ -177,12 +177,14 @@ Fl_Widget::~Fl_Widget() {
 void
 Fl_Widget::draw_focus(Fl_Boxtype B, int X, int Y, int W, int H) const {
   if (!Fl::visible_focus()) return;
+  bool flag_grad1 = (Fl::scheme() && !strcasecmp(Fl::scheme(), "grad1"));
+  if (flag_grad1) W++;
   switch (B) {
     case FL_DOWN_BOX:
     case FL_DOWN_FRAME:
     case FL_THIN_DOWN_BOX:
     case FL_THIN_DOWN_FRAME:
-      X ++;
+      if (!flag_grad1) X ++;
       Y ++;
     default:
       break;
diff -Naurp src/fltk-1.3.2/src/Fl_get_system_colors.cxx 
tmp/fltk-1.3.2/src/Fl_get_system_colors.cxx
--- src/fltk-1.3.2/src/Fl_get_system_colors.cxx 2012-12-09 12:45:24 -0500
+++ tmp/fltk-1.3.2/src/Fl_get_system_colors.cxx 
@@ -375,6 +375,48 @@ int Fl::reload_scheme() {
 
     // Use slightly thinner scrollbars...
     Fl::scrollbar_size(15);
+  } else if (scheme_ && !strcasecmp(scheme_, "grad1")) {
+    // Grad1 scheme
+    if (scheme_bg_) {
+      delete scheme_bg_;
+      scheme_bg_ = (Fl_Image *)0;
+    }
+
+    set_boxtype(FL_UP_FRAME,        FL_GRAD1_UP_FRAME);
+    set_boxtype(FL_DOWN_FRAME,      FL_GRAD1_DOWN_FRAME);
+    set_boxtype(FL_THIN_UP_FRAME,   FL_GRAD1_THIN_UP_FRAME);
+    set_boxtype(FL_THIN_DOWN_FRAME, FL_GRAD1_THIN_DOWN_FRAME);
+
+    set_boxtype(FL_UP_BOX,          FL_GRAD1_UP_BOX);
+    set_boxtype(FL_DOWN_BOX,        FL_GRAD1_DOWN_BOX);
+    set_boxtype(FL_THIN_UP_BOX,     FL_GRAD1_THIN_UP_BOX);
+    set_boxtype(FL_THIN_DOWN_BOX,   FL_GRAD1_THIN_DOWN_BOX);
+    set_boxtype(_FL_ROUND_UP_BOX,   FL_GRAD1_ROUND_UP_BOX);
+    set_boxtype(_FL_ROUND_DOWN_BOX, FL_GRAD1_ROUND_DOWN_BOX);
+
+    // Use slightly thinner scrollbars...
+    Fl::scrollbar_size(15);
+  } else if (scheme_ && !strcasecmp(scheme_, "gleam")) {
+    // Use a Gleam look-and-feel, similar to Clearlooks Glossy, made by Colin 
Jones
+    if (scheme_bg_) {
+      delete scheme_bg_;
+      scheme_bg_ = (Fl_Image *)0;
+    }
+
+    set_boxtype(FL_UP_FRAME,        FL_GLEAM_UP_FRAME);
+    set_boxtype(FL_DOWN_FRAME,      FL_GLEAM_DOWN_FRAME);
+    set_boxtype(FL_THIN_UP_FRAME,   FL_GLEAM_UP_FRAME);
+    set_boxtype(FL_THIN_DOWN_FRAME, FL_GLEAM_DOWN_FRAME);
+    
+    set_boxtype(FL_UP_BOX,          FL_GLEAM_UP_BOX);
+    set_boxtype(FL_DOWN_BOX,        FL_GLEAM_DOWN_BOX);
+    set_boxtype(FL_THIN_UP_BOX,     FL_GLEAM_THIN_UP_BOX);
+    set_boxtype(FL_THIN_DOWN_BOX,   FL_GLEAM_THIN_DOWN_BOX);
+    set_boxtype(_FL_ROUND_UP_BOX,   FL_GLEAM_ROUND_UP_BOX);
+    set_boxtype(_FL_ROUND_DOWN_BOX, FL_GLEAM_ROUND_DOWN_BOX);
+
+    // Use slightly thinner scrollbars...
+    Fl::scrollbar_size(10);
   } else {
     // Use the standard FLTK look-n-feel...
     if (scheme_bg_) {
diff -Naurp src/fltk-1.3.2/src/Makefile tmp/fltk-1.3.2/src/Makefile
--- src/fltk-1.3.2/src/Makefile 2012-11-06 16:13:54 -0500
+++ tmp/fltk-1.3.2/src/Makefile 
@@ -135,6 +135,8 @@ CPPFILES = \
        fl_file_dir.cxx \
        fl_font.cxx \
        fl_gtk.cxx \
+   fl_grad1_theme.cxx \
+       fl_gleam-3.0.cxx \
        fl_labeltype.cxx \
        fl_line_style.cxx \
        fl_open_uri.cxx \
diff -Naurp src/fltk-1.3.2/src/fl_boxtype.cxx tmp/fltk-1.3.2/src/fl_boxtype.cxx
--- src/fltk-1.3.2/src/fl_boxtype.cxx   2011-07-19 00:49:30 -0400
+++ tmp/fltk-1.3.2/src/fl_boxtype.cxx   
@@ -28,6 +28,7 @@
 #include <FL/Fl.H>
 #include <FL/Fl_Widget.H>
 #include <FL/fl_draw.H>
+#include "fl_grad1_theme.h"
 #include <config.h>
 
 ////////////////////////////////////////////////////////////////
@@ -293,6 +294,26 @@ static struct {
   {fl_down_box,                1,1,2,2,0}, // _FL_GTK_THIN_ROUND_DOWN_BOX,
   {fl_up_box,          2,2,4,4,0}, // _FL_GTK_ROUND_UP_BOX,
   {fl_down_box,                2,2,4,4,0}, // _FL_GTK_ROUND_DOWN_BOX,
+  {grad1_up_box,        2,2,4,4,0}, // _FL_GRAD1_UP_BOX,
+  {grad1_down_box,      2,2,4,4,0}, // _FL_GRAD1_DOWN_BOX,
+  {grad1_up_frame,      2,2,4,4,0}, // _FL_GRAD1_UP_FRAME,
+  {grad1_down_frame,        2,2,4,4,0}, // _FL_GRAD1_DOWN_FRAME,
+  {grad1_thin_up_box,       1,1,2,2,0}, // _FL_GRAD1_THIN_UP_BOX,
+  {grad1_thin_down_box,     1,1,2,2,0}, // _FL_GRAD1_THIN_DOWN_BOX,
+  {grad1_thin_up_frame,     1,1,2,2,0}, // _FL_GRAD1_THIN_UP_FRAME,
+  {grad1_thin_down_frame,       1,1,2,2,0}, // _FL_GRAD1_THIN_DOWN_FRAME,
+  {grad1_round_up_box,      4,4,8,8,0}, // _FL_GRAD1_ROUND_UP_BOX,
+  {grad1_round_down_box,        4,4,8,8,0}, // _FL_GRAD1_ROUND_DOWN_BOX,
+  {grad1_button_up_box,     2,2,4,4,0}, // _FL_GRAD1_BUTTON_UP_BOX,
+  {grad1_button_down_box,       2,2,4,4,0}, // _FL_GRAD1_BUTTON_DOWN_BOX,
+  {fl_up_box,          2,2,3,3,0}, // _FL_GLEAM_UP_BOX,
+  {fl_down_box,                2,2,3,3,0}, // _FL_GLEAM_DOWN_BOX,
+  {fl_up_frame,                2,2,3,3,0}, // _FL_GLEAM_UP_FRAME,
+  {fl_down_frame,      2,2,3,3,0}, // _FL_GLEAM_DOWN_FRAME,
+  {fl_up_box,          1,1,1,1,0}, // _FL_GLEAM_THIN_UP_BOX,
+  {fl_down_box,                1,1,1,1,0}, // _FL_GLEAM_THIN_DOWN_BOX,
+  {fl_up_box,          2,2,3,3,0}, // _FL_GLEAM_ROUND_UP_BOX,
+  {fl_down_box,                2,2,3,3,0}, // _FL_GLEAM_ROUND_DOWN_BOX,
   {fl_up_box,          3,3,6,6,0}, // FL_FREE_BOX+0
   {fl_down_box,                3,3,6,6,0}, // FL_FREE_BOX+1
   {fl_up_box,          3,3,6,6,0}, // FL_FREE_BOX+2
diff -Naurp src/fltk-1.3.2/src/makedepend tmp/fltk-1.3.2/src/makedepend
--- src/fltk-1.3.2/src/makedepend       2011-06-11 05:11:08 -0400
+++ tmp/fltk-1.3.2/src/makedepend       
@@ -821,6 +821,13 @@ fl_gtk.o: ../FL/Fl_Group.H ../FL/Fl_Widg
 fl_gtk.o: ../FL/Fl_Plugin.H ../FL/Fl_Preferences.H ../FL/Fl_Image.H
 fl_gtk.o: ../FL/Fl_Bitmap.H ../FL/Fl_Image.H ../FL/Fl_Pixmap.H
 fl_gtk.o: ../FL/Fl_RGB_Image.H
+fl_gleam-3.0.o: ../FL/Fl.H ../FL/fl_utf8.h ../FL/Fl_Export.H ../FL/fl_types.h
+fl_gleam-3.0.o: ../FL/Xutf8.h ../FL/Enumerations.H ../FL/fl_draw.H ../FL/x.H
+fl_gleam-3.0.o: ../FL/Fl_Window.H ../FL/Enumerations.H ../FL/Fl_Window.H
+fl_gleam-3.0.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Device.H
+fl_gleam-3.0.o: ../FL/Fl_Plugin.H ../FL/Fl_Preferences.H ../FL/Fl_Image.H
+fl_gleam-3.0.o: ../FL/Fl_Bitmap.H ../FL/Fl_Image.H ../FL/Fl_Pixmap.H
+fl_gleam-3.0.o: ../FL/Fl_RGB_Image.H ../FL/Fl_Export.H ../config.h
 fl_labeltype.o: ../FL/Fl.H ../FL/fl_utf8.h ../FL/Fl_Export.H ../FL/fl_types.h
 fl_labeltype.o: ../FL/Xutf8.h ../FL/Enumerations.H ../FL/Fl_Widget.H
 fl_labeltype.o: ../FL/Fl_Group.H ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H
_______________________________________________
fltk-dev mailing list
fltk-dev@easysw.com
http://lists.easysw.com/mailman/listinfo/fltk-dev

Reply via email to