From 68e3ba189e973077dd119eefb22678f16cd6d404 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 6 Apr 2015 18:43:18 +0200 Subject: replace two more icons w/vector drawing. --- gtk2_ardour/ardour_button.cc | 69 +++++++++++++++++++++++++++++++++++++++++++- gtk2_ardour/ardour_button.h | 2 ++ 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc index 03c9f56236..9b7176f279 100644 --- a/gtk2_ardour/ardour_button.cc +++ b/gtk2_ardour/ardour_button.cc @@ -389,6 +389,73 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *) cairo_line_to(cr, x-o, y+o); cairo_stroke(cr); } + else if (_elements & StripWidth) { + const double x0 = get_width() * .2; + const double x1 = get_width() * .8; + + const double y0 = get_height() * .25; + const double y1= get_height() * .75; + + const double ym= get_height() * .5; + + // arrow + const double xa0= get_height() * .39; + const double xa1= get_height() * .61; + const double ya0= get_height() * .35; + const double ya1= get_height() * .65; + + ArdourCanvas::set_source_rgba (cr, text_color); + cairo_set_line_width(cr, 1); + + // left + right + cairo_move_to(cr, x0, y0); + cairo_line_to(cr, x0, y1); + cairo_move_to(cr, x1, y0); + cairo_line_to(cr, x1, y1); + + // horiz center line + cairo_move_to(cr, x0, ym); + cairo_line_to(cr, x1, ym); + + // arrow left + cairo_move_to(cr, x0, ym); + cairo_line_to(cr, xa0, ya0); + cairo_move_to(cr, x0, ym); + cairo_line_to(cr, xa0, ya1); + + // arrow right + cairo_move_to(cr, x1, ym); + cairo_line_to(cr, xa1, ya0); + cairo_move_to(cr, x1, ym); + cairo_line_to(cr, xa1, ya1); + cairo_stroke(cr); + } + else if (_elements & DinMidi) { + const double x = get_width() * .5; + const double y = get_height() * .5; + const double r = std::min(x, y) * .77; + ArdourCanvas::set_source_rgba (cr, text_color); + cairo_set_line_width(cr, 1); + cairo_arc (cr, x, y, r, 0, 2 * M_PI); + cairo_stroke(cr); + + // pins equally spaced 45deg + cairo_arc (cr, x, y * 0.5, r * .17, 0, 2 * M_PI); + cairo_fill(cr); + cairo_arc (cr, x * 0.5, y, r * .17, 0, 2 * M_PI); + cairo_fill(cr); + cairo_arc (cr, x * 1.5, y, r * .17, 0, 2 * M_PI); + cairo_fill(cr); + // .5 + .5 * .5 * sin(45deg), 1.5 - .5 * .5 * cos(45deg) + cairo_arc (cr, x * 0.677, y * .677, r * .18, 0, 2 * M_PI); + cairo_fill(cr); + cairo_arc (cr, x * 1.323, y * .677, r * .18, 0, 2 * M_PI); + cairo_fill(cr); + + // bottom notch + cairo_arc (cr, x, y+r, r * .28, 1.05 * M_PI, 1.95 * M_PI); + cairo_stroke(cr); + } const int text_margin = char_pixel_width(); // Text, if any @@ -627,7 +694,7 @@ ArdourButton::on_size_request (Gtk::Requisition* req) req->width += _diameter + 4; } - if (_elements & (RecButton | CloseCross)) { + if (_elements & (RecButton | CloseCross | StripWidth | DinMidi)) { assert(!(_elements & Text)); const int wh = std::max (rint (TRACKHEADERBTNW * char_avg_pixel_width()), ceil (char_pixel_height() * BASELINESTRETCH + 1.)); req->width += wh; diff --git a/gtk2_ardour/ardour_button.h b/gtk2_ardour/ardour_button.h index 2bfb3c6f01..6fbb799f37 100644 --- a/gtk2_ardour/ardour_button.h +++ b/gtk2_ardour/ardour_button.h @@ -43,6 +43,8 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable RecButton = 0x80, // tentative, see commit message RecTapeMode = 0x100, // tentative CloseCross = 0x200, // tentative + StripWidth = 0x400, // tentative + DinMidi = 0x800, // tentative }; static Element default_elements; -- cgit v1.2.3