mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 19:56:31 +01:00
left/bottom align of labels in meterbridge
This commit is contained in:
parent
4726339f4c
commit
94fbfb9658
3 changed files with 33 additions and 6 deletions
|
|
@ -62,6 +62,8 @@ ArdourButton::ArdourButton (Element e)
|
||||||
, _corner_radius (4.0)
|
, _corner_radius (4.0)
|
||||||
, _corner_mask (0xf)
|
, _corner_mask (0xf)
|
||||||
, _angle(0)
|
, _angle(0)
|
||||||
|
, _xalign(.5)
|
||||||
|
, _yalign(.5)
|
||||||
, border_color (0)
|
, border_color (0)
|
||||||
, fill_color_active (0)
|
, fill_color_active (0)
|
||||||
, fill_color_inactive (0)
|
, fill_color_inactive (0)
|
||||||
|
|
@ -89,6 +91,8 @@ ArdourButton::ArdourButton (const std::string& str, Element e)
|
||||||
, _corner_radius (4.0)
|
, _corner_radius (4.0)
|
||||||
, _corner_mask (0xf)
|
, _corner_mask (0xf)
|
||||||
, _angle(0)
|
, _angle(0)
|
||||||
|
, _xalign(.5)
|
||||||
|
, _yalign(.5)
|
||||||
, border_color (0)
|
, border_color (0)
|
||||||
, fill_color_active (0)
|
, fill_color_active (0)
|
||||||
, fill_color_inactive (0)
|
, fill_color_inactive (0)
|
||||||
|
|
@ -168,6 +172,13 @@ ArdourButton::set_angle (const double angle)
|
||||||
_angle = angle;
|
_angle = angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ArdourButton::set_alignment (const float xa, const float ya)
|
||||||
|
{
|
||||||
|
_xalign = xa;
|
||||||
|
_yalign = ya;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ArdourButton::render (cairo_t* cr)
|
ArdourButton::render (cairo_t* cr)
|
||||||
{
|
{
|
||||||
|
|
@ -303,20 +314,32 @@ ArdourButton::render (cairo_t* cr)
|
||||||
}
|
}
|
||||||
pango_cairo_show_layout (cr, _layout->gobj());
|
pango_cairo_show_layout (cr, _layout->gobj());
|
||||||
} else {
|
} else {
|
||||||
/* center text */
|
/* align text */
|
||||||
|
|
||||||
double ww, wh;
|
double ww, wh;
|
||||||
ww= get_width();
|
double xa, ya;
|
||||||
wh= get_height();
|
ww = get_width();
|
||||||
|
wh = get_height();
|
||||||
cairo_save (cr); // TODO retain rotataion.. adj. LED,...
|
cairo_save (cr); // TODO retain rotataion.. adj. LED,...
|
||||||
cairo_rotate(cr, _angle * M_PI / 180.0);
|
cairo_rotate(cr, _angle * M_PI / 180.0);
|
||||||
cairo_device_to_user(cr, &ww, &wh);
|
cairo_device_to_user(cr, &ww, &wh);
|
||||||
cairo_move_to (cr,
|
xa = (ww - _text_width) * _xalign;
|
||||||
(ww - _text_width) / 2.0,
|
ya = (wh - _text_height) * _yalign;
|
||||||
(wh - _text_height) / 2.0);
|
|
||||||
|
/* quick hack for left/bottom alignment at -90deg
|
||||||
|
* TODO this should be generalized incl rotation.
|
||||||
|
* currently only 'user' of this API is meter_strip.cc
|
||||||
|
*/
|
||||||
|
if (_xalign < 0) xa = (ww * fabs(_xalign) + text_margin);
|
||||||
|
|
||||||
|
// TODO honor left/right text_margin with min/max()
|
||||||
|
|
||||||
|
cairo_move_to (cr, xa, ya);
|
||||||
pango_cairo_update_layout(cr, _layout->gobj());
|
pango_cairo_update_layout(cr, _layout->gobj());
|
||||||
pango_cairo_show_layout (cr, _layout->gobj());
|
pango_cairo_show_layout (cr, _layout->gobj());
|
||||||
cairo_restore (cr);
|
cairo_restore (cr);
|
||||||
|
|
||||||
|
/* use old center'ed layout for follow up items - until rotation/aligment code is completed */
|
||||||
cairo_move_to (cr, (get_width() - _text_width)/2.0, get_height()/2.0 - _text_height/2.0);
|
cairo_move_to (cr, (get_width() - _text_width)/2.0, get_height()/2.0 - _text_height/2.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,8 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable
|
||||||
void set_text (const std::string&);
|
void set_text (const std::string&);
|
||||||
void set_markup (const std::string&);
|
void set_markup (const std::string&);
|
||||||
void set_angle (const double);
|
void set_angle (const double);
|
||||||
|
void set_alignment (const float, const float);
|
||||||
|
void get_alignment (float& xa, float& ya) {xa = _xalign; ya = _yalign;};
|
||||||
|
|
||||||
void set_led_left (bool yn);
|
void set_led_left (bool yn);
|
||||||
void set_distinct_led_click (bool yn);
|
void set_distinct_led_click (bool yn);
|
||||||
|
|
@ -120,6 +122,7 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable
|
||||||
int _corner_mask;
|
int _corner_mask;
|
||||||
|
|
||||||
double _angle;
|
double _angle;
|
||||||
|
float _xalign, _yalign;
|
||||||
|
|
||||||
uint32_t bg_color;
|
uint32_t bg_color;
|
||||||
uint32_t border_color;
|
uint32_t border_color;
|
||||||
|
|
|
||||||
|
|
@ -159,6 +159,7 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
|
||||||
name_label.layout()->set_ellipsize (Pango::ELLIPSIZE_END);
|
name_label.layout()->set_ellipsize (Pango::ELLIPSIZE_END);
|
||||||
name_label.layout()->set_width(48 * PANGO_SCALE);
|
name_label.layout()->set_width(48 * PANGO_SCALE);
|
||||||
name_label.set_size_request(18, 50);
|
name_label.set_size_request(18, 50);
|
||||||
|
name_label.set_alignment(-1.0, .5);
|
||||||
|
|
||||||
namebx.set_size_request(18, 52);
|
namebx.set_size_request(18, 52);
|
||||||
namebx.pack_start(name_label, true, false, 3);
|
namebx.pack_start(name_label, true, false, 3);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue