From c5d7685741371b7c6e0f56dbd95080a14c8b1dcd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 24 May 2015 20:22:50 +0200 Subject: [PATCH] add vector rendition of nudge icons. --- gtk2_ardour/ardour_button.cc | 41 ++++++++++++++++++++++++++++++++++++ gtk2_ardour/ardour_button.h | 2 ++ 2 files changed, 43 insertions(+) diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc index 8d4e9dca3e..d5eadac124 100644 --- a/gtk2_ardour/ardour_button.cc +++ b/gtk2_ardour/ardour_button.cc @@ -218,6 +218,15 @@ render_vector_icon (cairo_t *cr, cairo_set_source_rgba (cr, 1, 1, 1, (fillalpha)); \ cairo_fill(cr); +#define VECTORICONSTROKEOUTLINE() \ + cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); \ + cairo_set_line_width(cr, 3.0); \ + cairo_set_source_rgba (cr, 0, 0, 0, 1.0); \ + cairo_stroke_preserve(cr); \ + ArdourCanvas::set_source_rgba (cr, fg_color); \ + cairo_set_line_width(cr, 1.5); \ + cairo_stroke(cr); + /* TODO separate these into dedicated class * it may also be efficient to render them only once for every size (image-surface) */ @@ -544,6 +553,38 @@ render_vector_icon (cairo_t *cr, cairo_fill(cr); } break; + case ArdourButton::NudgeLeft: + { + const double x = width * .5; + const double y = height * .5; + const double wh = std::min (x, y); + + const double tri_x = .3 * wh; + const double tri_y = .6 * wh; + + cairo_move_to (cr, x + tri_x, y - tri_y); + cairo_line_to (cr, x - tri_x, y); + cairo_line_to (cr, x + tri_x, y + tri_y); + VECTORICONSTROKEOUTLINE(); + } + break; + case ArdourButton::NudgeRight: + { + + const double x = width * .5; + const double y = height * .5; + const double wh = std::min (x, y); + + const double tri_x = .3 * wh; + const double tri_y = .6 * wh; + + cairo_move_to (cr, x - tri_x, y - tri_y); + cairo_line_to (cr, x + tri_x, y); + cairo_line_to (cr, x - tri_x, y + tri_y); + VECTORICONSTROKEOUTLINE(); + + } + break; default: // missing icon assert(0); diff --git a/gtk2_ardour/ardour_button.h b/gtk2_ardour/ardour_button.h index 8f24d43927..8d6cb49d73 100644 --- a/gtk2_ardour/ardour_button.h +++ b/gtk2_ardour/ardour_button.h @@ -58,6 +58,8 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable TransportEnd, TransportPanic, TransportMetronom, + NudgeLeft, + NudgeRight, }; static Element default_elements;