Tweak Ardourbutton: support (VectorIcon | Indicator)

This commit is contained in:
Robin Gareus 2019-08-21 01:25:34 +02:00
parent 1d8a6076ab
commit dfa93e0b17
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04

View file

@ -370,18 +370,25 @@ ArdourButton::render (Cairo::RefPtr<Cairo::Context> const& ctx, cairo_rectangle_
if (_elements & (VectorIcon | IconRenderCallback)) { if (_elements & (VectorIcon | IconRenderCallback)) {
int vw = get_width(); int vw = get_width();
int vh = get_height(); int vh = get_height();
cairo_save (cr);
if (_elements & Menu) { if (_elements & Menu) {
vw -= _diameter + 4; vw -= _diameter + 4;
} }
if (_elements & Indicator) {
vw -= _diameter + char_pixel_width ();
if (_led_left) {
cairo_translate (cr, _diameter + char_pixel_width (), 0);
}
}
if (_elements & VectorIcon) { if (_elements & VectorIcon) {
ArdourIcon::render (cr, _icon, vw, vh, active_state(), text_color); ArdourIcon::render (cr, _icon, vw, vh, active_state(), text_color);
} else { } else {
cairo_save (cr);
rounded_function (cr, 0, 0, get_width(), get_height(), corner_radius + 1.5); rounded_function (cr, 0, 0, get_width(), get_height(), corner_radius + 1.5);
cairo_clip (cr); cairo_clip (cr);
_icon_render_cb (cr, vw, vh, text_color, _icon_render_cb_data); _icon_render_cb (cr, vw, vh, text_color, _icon_render_cb_data);
cairo_restore (cr);
} }
cairo_restore (cr);
} }
const int text_margin = char_pixel_width(); const int text_margin = char_pixel_width();
@ -490,7 +497,7 @@ ArdourButton::render (Cairo::RefPtr<Cairo::Context> const& ctx, cairo_rectangle_
cairo_save (cr); cairo_save (cr);
/* move to the center of the indicator/led */ /* move to the center of the indicator/led */
if (_elements & Text) { if (_elements & (Text | VectorIcon | IconRenderCallback)) {
int led_xoff = ceil(char_pixel_width() + _diameter * .5); int led_xoff = ceil(char_pixel_width() + _diameter * .5);
if (_led_left) { if (_led_left) {
cairo_translate (cr, led_xoff, get_height() * .5); cairo_translate (cr, led_xoff, get_height() * .5);