diff options
author | Ben Loftis <ben@harrisonconsoles.com> | 2014-09-02 15:16:37 -0500 |
---|---|---|
committer | Ben Loftis <ben@harrisonconsoles.com> | 2014-09-02 15:16:37 -0500 |
commit | bc16da5b5a21094754594c91ea304d05f820abc8 (patch) | |
tree | 543b70852da30005c886fc60a7423938fac4259a /gtk2_ardour/ardour_button.cc | |
parent | 5d5d859c2a32cf5ea0b1a760196c6f969da0dedd (diff) |
micro tweaks to ArdourButton corners
Diffstat (limited to 'gtk2_ardour/ardour_button.cc')
-rw-r--r-- | gtk2_ardour/ardour_button.cc | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc index 6d77eac770..5843697fa5 100644 --- a/gtk2_ardour/ardour_button.cc +++ b/gtk2_ardour/ardour_button.cc @@ -218,9 +218,16 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *) _diameter = std::min (get_width(), get_height()); } + // draw edge (filling a rect underneath, rather than stroking a border on top, allows the corners to be lighter-weight. + if ((_elements & (Body|Edge)) == (Body|Edge)) { + rounded_function (cr, 0, 0, get_width(), get_height(), _corner_radius); + cairo_set_source_rgba (cr, 0, 0, 0, 1); + cairo_fill(cr); + } + // background fill if ((_elements & Body)==Body) { - rounded_function (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius); + rounded_function (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius-1.5); if (active_state() == Gtkmm2ext::ImplicitActive && !((_elements & Indicator)==Indicator)) { ArdourCanvas::set_source_rgba (cr, fill_inactive_color); cairo_fill (cr); @@ -235,38 +242,30 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *) cairo_fill (cr); } + // IMPLICIT ACTIVE: draw a border of the active color + if ((_elements & Body)==Body) { + if (active_state() == Gtkmm2ext::ImplicitActive && !((_elements & Indicator)==Indicator)) { + cairo_set_line_width (cr, 2.0); + rounded_function (cr, 2, 2, get_width() - 4, get_height() - 4, _corner_radius-2); + ArdourCanvas::set_source_rgba (cr, fill_active_color); + cairo_stroke (cr); + } + } + //show the "convex" or "concave" gradient if (!_flat_buttons) { if ( active_state() == Gtkmm2ext::ExplicitActive && !((_elements & Indicator)==Indicator) ) { //concave cairo_set_source (cr, concave_pattern); - Gtkmm2ext::rounded_rectangle (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius); + Gtkmm2ext::rounded_rectangle (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius-1.5); cairo_fill (cr); } else { cairo_set_source (cr, convex_pattern); - Gtkmm2ext::rounded_rectangle (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius); + Gtkmm2ext::rounded_rectangle (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius-1.5); cairo_fill (cr); } } - // indicator border on top of gradient - if ((_elements & Body)==Body) { - if (active_state() == Gtkmm2ext::ImplicitActive && !((_elements & Indicator)==Indicator)) { - cairo_set_line_width (cr, 3.0); - rounded_function (cr, 1.5, 1.5, get_width() - 3, get_height() - 3, _corner_radius); - ArdourCanvas::set_source_rgba (cr, fill_active_color); - cairo_stroke (cr); - } - } - - // draw edge - if ((_elements & (Body|Edge)) == (Body|Edge)) { - rounded_function (cr, .5, .5, get_width() - 1, get_height() - 1, _corner_radius); - cairo_set_source_rgba (cr, 0, 0, 0, 1); - cairo_set_line_width (cr, 1.0); - cairo_stroke(cr); - } - //Pixbuf, if any if (_pixbuf) { @@ -295,11 +294,11 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *) const double x = get_width() * .5; const double y = get_height() * .5; cairo_arc (cr, x, y, get_height () *.2 , 0, 2 * M_PI); + cairo_set_source_rgba (cr, .95, .44, .44, 1.); // #f46f6f + cairo_fill(cr); cairo_set_source_rgba (cr, .0, .0, .0, 1.); cairo_set_line_width(cr, 1); cairo_stroke_preserve (cr); - cairo_set_source_rgba (cr, .95, .44, .44, 1.); // #f46f6f - cairo_fill(cr); } int text_margin; @@ -421,7 +420,7 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *) // a transparent gray layer to indicate insensitivity if ((visual_state() & Gtkmm2ext::Insensitive)) { - rounded_function (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius); + rounded_function (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius-1.5); cairo_set_source_rgba (cr, 0.505, 0.517, 0.525, 0.6); cairo_fill (cr); } @@ -430,7 +429,7 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *) if (ARDOUR::Config->get_widget_prelight() && !((visual_state() & Gtkmm2ext::Insensitive))) { if (_hovering) { - rounded_function (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius); + rounded_function (cr, 1, 1, get_width() - 2, get_height() - 2, _corner_radius-1.5); cairo_set_source_rgba (cr, 0.905, 0.917, 0.925, 0.2); cairo_fill (cr); } |