diff --git a/FL/Boxtypes.C b/FL/Crystal_Boxtypes.C similarity index 92% rename from FL/Boxtypes.C rename to FL/Crystal_Boxtypes.C index d6e0f86..048e3d1 100644 --- a/FL/Boxtypes.C +++ b/FL/Crystal_Boxtypes.C @@ -21,10 +21,11 @@ #pragma GCC diagnostic ignored "-Wchar-subscripts" -#include "Boxtypes.H" +#include "Crystal_Boxtypes.H" #include #include + /** This simple box is suitable for use with knob-type widgets. It * comprises a border with shadow, and a cap with glare-lines akin * to those seen on burnished aluminum knobs. */ @@ -359,16 +360,12 @@ up_box ( int x, int y, int w, int h, Fl_Color c ) { if ( w > 8 && h > 8 ) { -// shade_rect( x + 1, y + 1, w - 2, h - 3, "RVQNOPQRSTUVWVQ", c ); -// shade_rect( x + 1, y + 1, w - 2, h - 3, "STUVWVQRWXVUVVQ", c ); - shade_rect( x + 1, y + 1, w - 2, h - 3, "FISPPQQRSSTTUPJ", c ); - - /* stipple */ - fl_color( fl_color_average( FL_GRAY, c, 0.10f ) ); - for ( int i = y + 1; i < y + h - 8; i += 5 ) - fl_line( x + 1, i, x + w - 2, i ); + shade_rect( x + 1, y + 1, w - 2, h - 3, "RVQNOPQRSTUVWVQ", c ); +// shade_rect( x + 1, y + 1, w - 2, h - 3, "STUVWVQRWXVUVVQ", c ); +// shade_rect( x + 1, y + 1, w - 2, h - 3, "FISPPQQRSSTTUPJ", c ); frame_rect( x, y, w, h - 1, "IJLM", c ); + } else thin_up_box( x, y, w, h, c ); @@ -395,7 +392,8 @@ down_box ( int x, int y, int w, int h, Fl_Color c ) { if ( w > 6 && h > 6 ) { - shade_rect( x + 2, y + 2, w - 4, h - 5, "STUVWWWVT", c ); +// shade_rect( x + 2, y + 2, w - 4, h - 5, "STUVWWWVT", c ); + fl_rectf( x + 2, y + 2, w - 4, h - 5 , fl_darker( c ) ); down_frame( x, y, w, h, c ); } else @@ -414,19 +412,10 @@ down_round ( int x, int y, int w, int h, Fl_Color c ) void -init_boxtypes ( void ) +init_crystal_boxtypes ( void ) { Fl::set_boxtype( FL_BURNISHED_OVAL_BOX, burnished_oval_box, 4, 4, 7, 7 ); - - Fl::set_boxtype( FL_CRYSTAL_UP_BOX, up_box, 4,4,8,8 ); - Fl::set_boxtype( FL_CRYSTAL_DOWN_BOX, down_box, 2,2,4,4 ); - Fl::set_boxtype( FL_CRYSTAL_UP_FRAME, up_frame, 2,2,4,4 ); - Fl::set_boxtype( FL_CRYSTAL_DOWN_FRAME, down_frame, 2,2,4,4 ); - Fl::set_boxtype( FL_CRYSTAL_THIN_UP_BOX, thin_up_box, 1,1,2,2 ); - Fl::set_boxtype( FL_CRYSTAL_THIN_DOWN_BOX, down_box, 1,1,2,2 ); - - /* replace the plastic boxes... (is there a better way?) */ Fl::set_boxtype( FL_PLASTIC_UP_BOX, up_box, 4,4,8,8 ); Fl::set_boxtype( FL_PLASTIC_DOWN_BOX, down_box, 2,2,4,4 ); @@ -434,7 +423,6 @@ init_boxtypes ( void ) Fl::set_boxtype( FL_PLASTIC_DOWN_FRAME, down_frame, 2,2,4,4 ); Fl::set_boxtype( FL_PLASTIC_THIN_UP_BOX, thin_up_box, 1,1,2,2 ); Fl::set_boxtype( FL_PLASTIC_THIN_DOWN_BOX, down_box, 1,1,2,2 ); - Fl::set_boxtype( FL_CRYSTAL_ROUND_UP_BOX, up_round, 1,1,2,2 ); - Fl::set_boxtype( FL_CRYSTAL_ROUND_DOWN_BOX, down_round, 1,1,2,2 ); - + Fl::set_boxtype( FL_PLASTIC_ROUND_UP_BOX, up_round, 1,1,2,2 ); + Fl::set_boxtype( FL_PLASTIC_ROUND_DOWN_BOX, down_round, 1,1,2,2 ); } diff --git a/FL/Boxtypes.H b/FL/Crystal_Boxtypes.H similarity index 70% rename from FL/Boxtypes.H rename to FL/Crystal_Boxtypes.H index 670ffd6..d101e75 100644 --- a/FL/Boxtypes.H +++ b/FL/Crystal_Boxtypes.H @@ -19,15 +19,6 @@ #include -#define FL_BURNISHED_OVAL_BOX FL_FREE_BOXTYPE +#define FL_BURNISHED_OVAL_BOX (Fl_Boxtype)(FL_FREE_BOXTYPE+0) -#define FL_CRYSTAL_UP_BOX (Fl_Boxtype)(FL_FREE_BOXTYPE+1) -#define FL_CRYSTAL_DOWN_BOX (Fl_Boxtype)(FL_FREE_BOXTYPE+2) -#define FL_CRYSTAL_UP_FRAME (Fl_Boxtype)(FL_FREE_BOXTYPE+3) -#define FL_CRYSTAL_DOWN_FRAME (Fl_Boxtype)(FL_FREE_BOXTYPE+4) -#define FL_CRYSTAL_THIN_UP_BOX (Fl_Boxtype)(FL_FREE_BOXTYPE+5) -#define FL_CRYSTAL_THIN_DOWN_BOX (Fl_Boxtype)(FL_FREE_BOXTYPE+6) -#define FL_CRYSTAL_ROUND_UP_BOX (Fl_Boxtype)(FL_FREE_BOXTYPE+7) -#define FL_CRYSTAL_ROUND_DOWN_BOX (Fl_Boxtype)(FL_FREE_BOXTYPE+8) - -void init_boxtypes ( void ); +void init_crystal_boxtypes ( void ); diff --git a/FL/Gleam_Boxtypes.C b/FL/Gleam_Boxtypes.C new file mode 100644 index 0000000..daea4a0 --- /dev/null +++ b/FL/Gleam_Boxtypes.C @@ -0,0 +1,180 @@ + +/*******************************************************************************/ +/* Copyright (C) 2012 Jonathan Moore Liles */ +/* Copyright (C) 2001-2005 by Colin Jones */ +/* */ +/* This program is free software; you can redistribute it and/or modify it */ +/* under the terms of the GNU General Public License as published by the */ +/* Free Software Foundation; either version 2 of the License, or (at your */ +/* option) any later version. */ +/* */ +/* This program 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 General Public License for */ +/* more details. */ +/* */ +/* You should have received a copy of the GNU General Public License along */ +/* with This program; see the file COPYING. If not,write to the Free Software */ +/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/*******************************************************************************/ + +/* Taken from the "Gleam" FLTK scheme, as modified by prodatum */ + +#include +#include + +#include "Gleam_Boxtypes.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 + fl_color(fl_color_average(FL_BLACK, FL_BACKGROUND_COLOR, .1)); + 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 + float third = (float) h / 3; + gleam_color(bc); + fl_rectf(x, y, w, third + 1); + + //gleam_color(fl_color_average(bc, FL_WHITE, .90f)); + //fl_rectf(x, y, w, half + 1); + + float step_size = 0.10 / ((float) h - third); + int j = 0; + //step_size = (.1 / (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 >= .90; k -= step_size) + { + j++; + gleam_color(fl_color_average(bc, FL_WHITE, k)); + fl_line(x, y + j + third - 1, x + w - 1, y + j + third - 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, y, x + w, 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, y + h, x + w, 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, y, x + w, 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, y + h, x + w, 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); + +} + +void +init_gleam_boxtypes ( void ) +{ + /* replace the gtk+ boxes... (is there a better way?) */ + Fl::set_boxtype( FL_GTK_UP_BOX, up_box, 2,2,4,4 ); + Fl::set_boxtype( FL_GTK_DOWN_BOX, down_box, 2,2,3,3 ); + Fl::set_boxtype( FL_GTK_THIN_UP_BOX, up_box, 2,2,3,3 ); + Fl::set_boxtype( FL_GTK_THIN_DOWN_BOX, down_box, 2,2,3,3 ); + Fl::set_boxtype( FL_GTK_UP_FRAME, up_frame, 2,2,3,3 ); + Fl::set_boxtype( FL_GTK_DOWN_FRAME, down_frame, 2,2,3,3 ); + /* Fl::set_boxtype( FL_GTK_THIN_UP_BOX, thin_up_box, 1,1,1,1 ); */ + /* Fl::set_boxtype( FL_GTK_THIN_DOWN_BOX, thin_down_box, 1,1,1,1 ); */ + Fl::set_boxtype( FL_GTK_ROUND_UP_BOX, up_box, 2,2,3,3 ); + Fl::set_boxtype( FL_GTK_ROUND_DOWN_BOX, down_box, 2,2,3,3 ); + } + diff --git a/FL/Gleam_Boxtypes.H b/FL/Gleam_Boxtypes.H new file mode 100644 index 0000000..ebef3e7 --- /dev/null +++ b/FL/Gleam_Boxtypes.H @@ -0,0 +1,22 @@ + +/*******************************************************************************/ +/* Copyright (C) 2012 Jonathan Moore Liles */ +/* */ +/* This program is free software; you can redistribute it and/or modify it */ +/* under the terms of the GNU General Public License as published by the */ +/* Free Software Foundation; either version 2 of the License, or (at your */ +/* option) any later version. */ +/* */ +/* This program 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 General Public License for */ +/* more details. */ +/* */ +/* You should have received a copy of the GNU General Public License along */ +/* with This program; see the file COPYING. If not,write to the Free Software */ +/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/*******************************************************************************/ + +#include + +void init_gleam_boxtypes ( void ); diff --git a/FL/color_scheme.C b/FL/color_scheme.C index 1caf065..4a94198 100644 --- a/FL/color_scheme.C +++ b/FL/color_scheme.C @@ -36,6 +36,12 @@ get_system_colors ( void ) void color_scheme ( const char *name ) { + if ( !strcasecmp( name, "gray" ) ) + { + Fl::background2( 127, 127, 127 ); + Fl::background( 100, 100, 100 ); + Fl::foreground( 255, 255, 255 ); + } if ( !strcasecmp( name, "dark" ) ) { Fl::background2( 100, 100, 100 ); diff --git a/mixer/src/Controller_Module.C b/mixer/src/Controller_Module.C index aeb7cab..66d66aa 100644 --- a/mixer/src/Controller_Module.C +++ b/mixer/src/Controller_Module.C @@ -30,7 +30,7 @@ #include #include #include -#include "FL/Boxtypes.H" +#include "FL/Crystal_Boxtypes.H" #include #include "FL/Fl_Arc_Dial.H" #include "FL/Fl_Labelpad_Group.H" @@ -342,7 +342,7 @@ Controller_Module::connect_to ( Port *p ) w = o; o->type(4); - o->color(FL_GRAY0); + o->color(FL_BACKGROUND_COLOR); o->selection_color((Fl_Color)1); o->minimum(1.5); o->maximum(0); diff --git a/mixer/src/DPM.C b/mixer/src/DPM.C index 69ef954..f7e0fa7 100644 --- a/mixer/src/DPM.C +++ b/mixer/src/DPM.C @@ -56,6 +56,7 @@ DPM::DPM ( int X, int Y, int W, int H, const char *L ) : DPM::blend( FL_GREEN, FL_RED ); box( FL_ROUNDED_BOX ); + color( FL_BACKGROUND_COLOR ); } /* which marks to draw beside meter */ diff --git a/mixer/src/Meter_Indicator_Module.C b/mixer/src/Meter_Indicator_Module.C index 0915767..ad8e511 100644 --- a/mixer/src/Meter_Indicator_Module.C +++ b/mixer/src/Meter_Indicator_Module.C @@ -27,7 +27,7 @@ #include #include #include -#include "FL/Boxtypes.H" +#include "FL/Crystal_Boxtypes.H" #include "FL/Fl_Arc_Dial.H" #include "FL/Fl_Labelpad_Group.H" diff --git a/mixer/src/Mixer.C b/mixer/src/Mixer.C index f7f5e37..286996e 100644 --- a/mixer/src/Mixer.C +++ b/mixer/src/Mixer.C @@ -252,12 +252,16 @@ void Mixer::cb_menu(Fl_Widget* o) { } else if (! strcmp( picked, "&Options/&Display/&Style/&Default") ) { - Fl::scheme( "plastic" ); + Fl::scheme( "gtk+" ); } else if (! strcmp( picked, "&Options/&Display/&Style/&Flat") ) { Fl::scheme( "gtk+" ); } + else if (! strcmp( picked, "&Options/&Display/&Style/&Round") ) + { + Fl::scheme( "plastic" ); + } else if (! strcmp( picked, "&Options/&Display/&Colors/&System") ) { color_scheme( "system" ); @@ -274,6 +278,10 @@ void Mixer::cb_menu(Fl_Widget* o) { { color_scheme( "light" ); } + else if (! strcmp( picked, "&Options/&Display/&Colors/&Gray") ) + { + color_scheme( "gray" ); + } else if ( ! strcmp( picked, "&Help/&About" ) ) { About_Dialog ab( PIXMAP_PATH "/non-mixer/icon-256x256.png" ); @@ -336,9 +344,11 @@ Mixer::Mixer ( int X, int Y, int W, int H, const char *L ) : o->add( "&Mixer/&Rows/Three", '3', 0, 0 ); o->add( "_&Options/&Display/&Style/&Default", 0, 0, 0, FL_MENU_RADIO | FL_MENU_VALUE ); o->add( "_&Options/&Display/&Style/&Flat", 0, 0, 0, FL_MENU_RADIO ); + o->add( "_&Options/&Display/&Style/&Round", 0, 0, 0, FL_MENU_RADIO ); o->add( "_&Options/&Display/&Colors/&Dark", 0, 0, 0, FL_MENU_RADIO | FL_MENU_VALUE ); o->add( "_&Options/&Display/&Colors/&Very Dark", 0, 0, 0, FL_MENU_RADIO ); o->add( "_&Options/&Display/&Colors/&Light", 0, 0, 0, FL_MENU_RADIO ); + o->add( "_&Options/&Display/&Colors/&Gray", 0, 0, 0, FL_MENU_RADIO ); o->add( "_&Options/&Display/&Colors/&System", 0, 0, 0, FL_MENU_RADIO ); o->add( "&Help/&Manual" ); o->add( "&Help/&About" ); diff --git a/mixer/src/Mixer_Strip.H b/mixer/src/Mixer_Strip.H index 7ff79cb..2e62480 100644 --- a/mixer/src/Mixer_Strip.H +++ b/mixer/src/Mixer_Strip.H @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/mixer/src/Module_Parameter_Editor.C b/mixer/src/Module_Parameter_Editor.C index 6a29ac4..1b13158 100644 --- a/mixer/src/Module_Parameter_Editor.C +++ b/mixer/src/Module_Parameter_Editor.C @@ -204,10 +204,12 @@ Module_Parameter_Editor::make_controls ( void ) o->maximum( p->hints.maximum ); } - o->box( FL_BURNISHED_OVAL_BOX ); +// o->box( FL_BURNISHED_OVAL_BOX ); + o->box( FL_ROUNDED_BOX ); o->color( fl_darker( fl_darker( FL_GRAY ) ) ); o->selection_color( FL_WHITE ); o->value( p->control_value() ); + o->type( FL_FILL_DIAL ); // o->step( fabs( ( o->maximum() - o->minimum() ) ) / 32.0f ); } diff --git a/mixer/src/main.C b/mixer/src/main.C index 84847a2..8463042 100644 --- a/mixer/src/main.C +++ b/mixer/src/main.C @@ -32,7 +32,8 @@ #include #include #include -#include +#include +#include #include "Thread.H" #include "debug.h" @@ -163,12 +164,13 @@ main ( int argc, char **argv ) LOG_REGISTER_CREATE( Meter_Indicator_Module ); LOG_REGISTER_CREATE( Controller_Module ); - init_boxtypes(); + init_crystal_boxtypes(); + init_gleam_boxtypes(); signal( SIGPIPE, SIG_IGN ); Fl::get_system_colors(); - Fl::scheme( "plastic" ); + Fl::scheme( "gtk+" ); Fl::lock(); diff --git a/timeline/src/Sequence.C b/timeline/src/Sequence.C index 454bf7e..74b5a6c 100644 --- a/timeline/src/Sequence.C +++ b/timeline/src/Sequence.C @@ -28,7 +28,7 @@ #include "Transport.H" // for locate() -#include "../FL/Boxtypes.H" +#include "FL/Crystal_Boxtypes.H" #include "const.h" #include "debug.h" diff --git a/timeline/src/TLE.fl b/timeline/src/TLE.fl index 8ec2ef1..d5024b9 100644 --- a/timeline/src/TLE.fl +++ b/timeline/src/TLE.fl @@ -61,6 +61,12 @@ decl {\#include "Audio_Region.H" // for options} {private local decl {\#include "Control_Sequence.H" // for options} {private local } +decl {\#include "FL/Crystal_Boxtypes.H"} {private local +} + +decl {\#include "FL/Gleam_Boxtypes.H"} {private local +} + decl {\#include } {private local } @@ -167,7 +173,7 @@ Fl::visible_focus( 0 ); get_system_colors(); -Fl::scheme( "plastic" ); +Fl::scheme( "gtk+" ); color_scheme( "dark" ); @@ -555,7 +561,7 @@ timeline->redraw();} } { MenuItem {} { label Default - callback {Fl::scheme( "plastic" );} + callback {Fl::scheme( "gtk+" );} xywh {10 10 40 25} type Radio value 1 } MenuItem {} { @@ -563,7 +569,12 @@ timeline->redraw();} callback {Fl::scheme( "gtk+" );} xywh {20 20 40 25} type Radio } - } + MenuItem {} { + label Round + callback {Fl::scheme( "plastic" );} + xywh {30 30 40 25} type Radio + } + } Submenu {} { label {C&olors} open xywh {10 10 74 25} @@ -583,6 +594,11 @@ timeline->redraw();} callback {color_scheme( "light" );} xywh {30 30 40 25} type Radio } + MenuItem {} { + label Gray + callback {color_scheme( "gray" );} + xywh {30 30 40 25} type Radio + } MenuItem {} { label System callback {color_scheme( "system" );} diff --git a/timeline/src/Track.C b/timeline/src/Track.C index 3b0ff59..04f2f29 100644 --- a/timeline/src/Track.C +++ b/timeline/src/Track.C @@ -106,7 +106,7 @@ Track::~Track ( ) Loggable::block_end(); } -#include "FL/Boxtypes.H" +#include "FL/Crystal_Boxtypes.H" void Track::init ( void ) diff --git a/timeline/src/main.C b/timeline/src/main.C index 4319cdc..4053c78 100644 --- a/timeline/src/main.C +++ b/timeline/src/main.C @@ -41,7 +41,9 @@ #include "TLE.H" #include "Timeline.H" -#include "../FL/Boxtypes.H" + +#include "FL/Crystal_Boxtypes.H" +#include "FL/Gleam_Boxtypes.H" #include "Project.H" #include "Transport.H" @@ -172,7 +174,8 @@ main ( int argc, char **argv ) LOG_REGISTER_CREATE( Time_Point ); LOG_REGISTER_CREATE( Track ); - init_boxtypes(); + init_crystal_boxtypes(); + init_gleam_boxtypes(); signal( SIGPIPE, SIG_IGN );