summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_button.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-09-03 01:55:57 +0200
committerRobin Gareus <robin@gareus.org>2014-09-03 01:55:57 +0200
commitd7ff2b87fb69c164f02ac7868f198b1759cb00d1 (patch)
treea304c3448acd55fb2586488004a622d9d3a0f2a7 /gtk2_ardour/ardour_button.cc
parent1cd366b606e7f87a3a5a5f9738a8751aa746bf7c (diff)
update rec-en circle drawing, add tape-mode
Diffstat (limited to 'gtk2_ardour/ardour_button.cc')
-rw-r--r--gtk2_ardour/ardour_button.cc59
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;