|
|
@@ -28,7 +28,7 @@ |
|
|
|
#include "FL/Fl_Theme.H" |
|
|
|
#include <math.h> |
|
|
|
|
|
|
|
static const int DX = 1; |
|
|
|
static const int DX = 2; |
|
|
|
|
|
|
|
static void cairo_color(Fl_Color c) |
|
|
|
{ |
|
|
@@ -45,15 +45,26 @@ static void cairo_color(Fl_Color c) |
|
|
|
cairo_set_source_rgb( cr, r / 255.0, g / 255.0, b / 255.0 ); |
|
|
|
} |
|
|
|
|
|
|
|
static void rect_path ( int x, int y, int w, int h, double radius ) |
|
|
|
static Fl_Color border_color ( Fl_Color c ) |
|
|
|
{ |
|
|
|
return fl_color_average( FL_FOREGROUND_COLOR, c, 0.20f ); |
|
|
|
} |
|
|
|
|
|
|
|
static Fl_Color interior_color ( Fl_Color c ) |
|
|
|
{ |
|
|
|
return fl_color_average( FL_BACKGROUND_COLOR, c, 0.50f ); |
|
|
|
} |
|
|
|
|
|
|
|
static void rect_path ( float x, float y, float w, float h, double radius ) |
|
|
|
{ |
|
|
|
x+= 0.5f; |
|
|
|
y+= 0.5f; |
|
|
|
w-=1; |
|
|
|
h-=2; |
|
|
|
|
|
|
|
cairo_t *cr = Fl::cairo_cc(); |
|
|
|
|
|
|
|
double degrees = M_PI / 180.0; |
|
|
|
|
|
|
|
// x += 2; y += 2; w -= 4; h -= 4; |
|
|
|
|
|
|
|
x += DX; y += DX; w -= DX*2; h -= DX*2; |
|
|
|
|
|
|
|
cairo_new_sub_path (cr); |
|
|
|
cairo_arc (cr, x + w - radius, y + radius, radius, -90 * degrees, 0 * degrees); |
|
|
@@ -63,81 +74,47 @@ static void rect_path ( int x, int y, int w, int h, double radius ) |
|
|
|
cairo_close_path (cr); |
|
|
|
} |
|
|
|
|
|
|
|
static void draw_rect(int x, int y, int w, int h, Fl_Color bc, double radius = 2 ) |
|
|
|
static void draw_rect(int x, int y, int w, int h, Fl_Color bc, double radius = 3 ) |
|
|
|
{ |
|
|
|
cairo_t *cr = Fl::cairo_cc(); |
|
|
|
|
|
|
|
rect_path( x, y, w, h, radius ); |
|
|
|
|
|
|
|
|
|
|
|
cairo_color( bc ); |
|
|
|
|
|
|
|
cairo_set_line_width (cr, DX + 0.5); |
|
|
|
cairo_stroke (cr); |
|
|
|
cairo_set_line_width (cr, 1); |
|
|
|
} |
|
|
|
|
|
|
|
static void draw_rectf(int x, int y, int w, int h, Fl_Color bc, double radius = 2 ) |
|
|
|
static void draw_rectf(int x, int y, int w, int h, Fl_Color bc, double radius = 3 ) |
|
|
|
{ |
|
|
|
/* // Draw the outline around the perimeter of the box */ |
|
|
|
/* fl_color(fl_color_average(FL_BLACK, FL_BACKGROUND_COLOR, .1)); */ |
|
|
|
|
|
|
|
cairo_t *cr = Fl::cairo_cc(); |
|
|
|
|
|
|
|
rect_path( x, y, w, h, radius ); |
|
|
|
|
|
|
|
cairo_color( bc ); |
|
|
|
cairo_fill (cr); |
|
|
|
|
|
|
|
// cairo_set_line_width (cr, 1); |
|
|
|
} |
|
|
|
|
|
|
|
static void border_box(int x, int y, int w, int h, Fl_Color bc) |
|
|
|
{ |
|
|
|
draw_rectf( x, y, w, h, FL_BACKGROUND_COLOR ); |
|
|
|
|
|
|
|
draw_rect( x, y, w, h, bc ); |
|
|
|
} |
|
|
|
|
|
|
|
static void shade_rect_up(int x, int y, int w, int h, Fl_Color bc) |
|
|
|
static void up_box(int x, int y, int w, int h, Fl_Color bc) |
|
|
|
{ |
|
|
|
draw_rectf( x, y, w, h, fl_darker( bc ) ); |
|
|
|
draw_rectf( x, y, w, h, interior_color( bc ) ); |
|
|
|
draw_rect( x, y, w, h, border_color( bc ) ); |
|
|
|
} |
|
|
|
|
|
|
|
static void frame_rect_up(int x, int y, int w, int h, Fl_Color bc) |
|
|
|
static void up_frame(int x, int y, int w, int h, Fl_Color bc) |
|
|
|
{ |
|
|
|
draw_rect( x,y,w,h, fl_darker( bc )); |
|
|
|
draw_rect( x,y,w,h, border_color(bc) ); |
|
|
|
} |
|
|
|
|
|
|
|
static void frame_rect_down(int x, int y, int w, int h, Fl_Color bc) |
|
|
|
static void down_frame(int x, int y, int w, int h, Fl_Color bc) |
|
|
|
{ |
|
|
|
draw_rect( x,y,w,h, bc ); |
|
|
|
} |
|
|
|
|
|
|
|
static void shade_rect_down(int x, int y, int w, int h, Fl_Color bc) |
|
|
|
{ |
|
|
|
draw_rectf( x, y, w, h, bc ); |
|
|
|
} |
|
|
|
|
|
|
|
static void up_frame(int x, int y, int w, int h, Fl_Color c) |
|
|
|
static void down_box(int x, int y, int w, int h, Fl_Color bc) |
|
|
|
{ |
|
|
|
frame_rect_up(x, y, w, h, fl_darker(c)); |
|
|
|
} |
|
|
|
|
|
|
|
static void up_box(int x, int y, int w, int h, Fl_Color c) |
|
|
|
{ |
|
|
|
shade_rect_up(x, y, w, h, c); |
|
|
|
} |
|
|
|
|
|
|
|
static void down_frame(int x, int y, int w, int h, Fl_Color c) |
|
|
|
{ |
|
|
|
frame_rect_down(x, y, w, h, c); |
|
|
|
draw_rectf( x, y, w, h, interior_color( bc ) ); |
|
|
|
draw_rect( x, y, w, h, bc ); |
|
|
|
} |
|
|
|
|
|
|
|
static void down_box(int x, int y, int w, int h, Fl_Color c) |
|
|
|
{ |
|
|
|
shade_rect_down(x, y, w, h, c); |
|
|
|
} |
|
|
|
|
|
|
|
static void |
|
|
|
init_theme ( void ) |
|
|
@@ -150,7 +127,7 @@ init_theme ( void ) |
|
|
|
Fl::set_boxtype( FL_DOWN_FRAME, down_frame, DX,DX,DX*2,DX*2 ); |
|
|
|
Fl::set_boxtype( FL_ROUND_UP_BOX, up_box, DX,DX,DX*2,DX*2 ); |
|
|
|
Fl::set_boxtype( FL_ROUND_DOWN_BOX, down_box, DX,DX,DX*2,DX*2 ); |
|
|
|
Fl::set_boxtype( FL_BORDER_BOX, border_box, DX,DX,DX*2,DX*2 ); |
|
|
|
Fl::set_boxtype( FL_BORDER_BOX, up_box, DX,DX,DX*2,DX*2 ); |
|
|
|
} |
|
|
|
|
|
|
|
void |
|
|
|