diff options
author | Robin Gareus <robin@gareus.org> | 2014-09-03 01:55:57 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-09-03 01:55:57 +0200 |
commit | d7ff2b87fb69c164f02ac7868f198b1759cb00d1 (patch) | |
tree | a304c3448acd55fb2586488004a622d9d3a0f2a7 /gtk2_ardour/ardour_button.cc | |
parent | 1cd366b606e7f87a3a5a5f9738a8751aa746bf7c (diff) |
update rec-en circle drawing, add tape-mode
Diffstat (limited to 'gtk2_ardour/ardour_button.cc')
-rw-r--r-- | gtk2_ardour/ardour_button.cc | 59 |
1 files changed, 55 insertions, 4 deletions
diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc index 71c90d1a64..ccf1b3f3fa 100644 --- a/gtk2_ardour/ardour_button.cc +++ b/gtk2_ardour/ardour_button.cc @@ -290,15 +290,66 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *) } } else // rec-en is exclusive to pixbuf (tape machine mode, rec-en) - if ((_elements & RecButton)) { + if ((_elements & (RecButton|RecTapeMode)) == (RecButton|RecTapeMode)) { + const double h = get_height(); const double x = get_width() * .5; const double y = get_height() * .5; - cairo_arc (cr, x, y, get_height () *.2 , 0, 2 * M_PI); + const double slit = .11 * M_PI; + cairo_save(cr); + cairo_translate(cr, x, y); + + cairo_arc (cr, 0, 0, y *.6, 0, 2 * M_PI); cairo_set_source_rgba (cr, .95, .44, .44, 1.); // #f46f6f cairo_fill_preserve(cr); - cairo_set_source_rgba (cr, .0, .0, .0, 1.); + cairo_set_source_rgba (cr, .0, .0, .0, .5); cairo_set_line_width(cr, 1); - cairo_stroke (cr); + cairo_stroke(cr); + + cairo_save(cr); + cairo_set_source_rgba (cr, .15, .07, .07, 1.0); + + cairo_rotate (cr, -.5 * M_PI); + cairo_move_to(cr, 0, 0); + cairo_arc (cr, 0, 0, h *.25, -slit, slit); + cairo_line_to(cr, 0, 0); + cairo_close_path(cr); + + cairo_fill(cr); + cairo_rotate (cr, 2. * M_PI / 3.); + + cairo_move_to(cr, 0, 0); + cairo_arc (cr, 0, 0, h *.25, -slit, slit); + cairo_line_to(cr, 0, 0); + cairo_close_path(cr); + cairo_fill(cr); + + cairo_rotate (cr, 2. * M_PI / 3.); + cairo_move_to(cr, 0, 0); + cairo_arc (cr, 0, 0, h *.25, -slit, slit); + cairo_line_to(cr, 0, 0); + cairo_close_path(cr); + cairo_fill(cr); + + cairo_restore(cr); + + cairo_arc (cr, 0, 0, h * .09, 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.0); + cairo_arc (cr, 0, 0, h *.05, 0, 2 * M_PI); // hole in the middle + cairo_fill(cr); + + cairo_restore(cr); + } + else if (_elements & RecButton) { + const double x = get_width() * .5; + const double y = get_height() * .5; + cairo_arc (cr, x, y, y *.55, 0, 2 * M_PI); + cairo_set_source_rgba (cr, .95, .44, .44, 1.); // #f46f6f + cairo_fill_preserve(cr); + cairo_set_source_rgba (cr, .0, .0, .0, .5); + cairo_set_line_width(cr, 1); + cairo_stroke(cr); } int text_margin; |