diff --git a/Timeline/Control_Sequence.C b/Timeline/Control_Sequence.C index 15baef3..4ab3970 100644 --- a/Timeline/Control_Sequence.C +++ b/Timeline/Control_Sequence.C @@ -47,7 +47,7 @@ Control_Sequence::init ( void ) { _track = NULL; - color( fl_darker( FL_GREEN ) ); + color( fl_darker( FL_YELLOW ) ); } void @@ -82,6 +82,60 @@ Control_Sequence::set ( Log_Entry &e ) } } +void +Control_Sequence::draw_curve ( bool flip, bool filled ) +{ + + const int bx = x(); + const int by = y() + Fl::box_dy( box() ); + const int bw = w(); + const int bh = h() - Fl::box_dh( box() ); + + list ::const_iterator e = _widgets.end(); + e--; + + if ( _widgets.size() ) + for ( list ::const_iterator r = _widgets.begin(); ; r++ ) + { + const int ry = (*r)->y(); + + if ( r == _widgets.begin() ) + { + if ( flip ) + { + if ( filled ) + fl_vertex( bx, by ); + fl_vertex( bx, ry ); + } + else + { + if ( filled ) + fl_vertex( bx, bh + by ); + fl_vertex( bx, ry ); + } + } + + fl_vertex( (*r)->x(), ry ); + + if ( r == e ) + { + if ( flip ) + { + fl_vertex( bx + bw, ry ); + if ( filled ) + fl_vertex( bx + bw, by ); + } + else + { + fl_vertex( bx + bw, ry ); + if ( filled ) + fl_vertex( bx + bw, bh + by ); + } + break; + } + + } +} void Control_Sequence::draw ( void ) { @@ -94,7 +148,6 @@ Control_Sequence::draw ( void ) /* draw the box with the ends cut off. */ draw_box( box(), x() - Fl::box_dx( box() ), y(), w() + Fl::box_dw( box() ), h(), color() ); - const int bx = x(); const int by = y() + Fl::box_dy( box() ); const int bw = w(); @@ -106,11 +159,14 @@ Control_Sequence::draw ( void ) if ( draw_with_gradient ) { - Fl_Color target = fl_color_average( color(), FL_WHITE, 0.50f ); +// Fl_Color target = fl_color_average( color(), FL_WHITE, 0.50f ); + + const Fl_Color c2 = fl_color_average( selection_color(), FL_WHITE, 0.75f ); + const Fl_Color c1 = fl_color_average( color(), c2, 0.60f ); for ( int gy = 0; gy < bh; gy++ ) { - fl_color( fl_color_average( target, selection_color(), gy / (float)bh) ); + fl_color( fl_color_average( c1, c2, gy / (float)bh) ); fl_line( X, by + gy, X + W, by + gy ); } } @@ -126,60 +182,30 @@ Control_Sequence::draw ( void ) } - fl_color( fl_color_average( selection_color(), color(), 0.90f ) ); - fl_line_style( FL_SOLID, 4 ); if ( draw_with_polygon ) + { fl_begin_complex_polygon(); - else - fl_begin_line(); - - - list ::const_iterator e = _widgets.end(); - e--; - - if ( _widgets.size() ) - for ( list ::const_iterator r = _widgets.begin(); ; r++ ) - { - const int ry = (*r)->y(); - - if ( r == _widgets.begin() ) - { - if ( draw_with_gradient ) - { - fl_vertex( bx, by ); - fl_vertex( bx, ry ); - } - else - { - fl_vertex( bx, bh + by ); - fl_vertex( bx, ry ); - } - } - - fl_vertex( (*r)->x(), ry ); - - if ( r == e ) - { - if ( draw_with_gradient ) - { - fl_vertex( bx + bw, ry ); - fl_vertex( bx + bw, by ); - } - else - { - fl_vertex( bx + bw, ry ); - fl_vertex( bx + bw, bh + by ); - } - break; - } + draw_curve( draw_with_gradient, true ); + fl_end_complex_polygon(); - } + fl_color( selection_color() ); + fl_line_style( FL_SOLID, 2 ); - if ( draw_with_polygon ) - fl_end_complex_polygon(); + fl_begin_line(); + draw_curve( draw_with_gradient, false ); + fl_end_line(); + } else + { +// fl_color( fl_color_average( selection_color(), color(), 0.70f ) ); + fl_color( selection_color() ); + fl_line_style( FL_SOLID, 2 ); + + fl_begin_line(); + draw_curve( draw_with_gradient, false ); fl_end_line(); + } fl_line_style( FL_SOLID, 0 ); diff --git a/Timeline/Control_Sequence.H b/Timeline/Control_Sequence.H index b062a80..caaf1c5 100644 --- a/Timeline/Control_Sequence.H +++ b/Timeline/Control_Sequence.H @@ -38,6 +38,10 @@ protected: init(); } +private: + + void draw_curve ( bool flip, bool filled ); + public: static bool draw_with_gradient;