diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-15 14:45:22 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-15 14:45:22 -0400 |
commit | 393ba98422567068bbea8401bee0daeaa7e3e7b6 (patch) | |
tree | cc89cb0c1414c4f1ce7ffbc5803285c1ff934977 /libs | |
parent | 7e19053b88b4ab174052a44f2ee99dce92517aa9 (diff) |
tweak time axis view item text positioning; allow ArdourCanvas::Text to have its width clamped, and use this as TAVI's get narrow so that text doesn't overflow
Diffstat (limited to 'libs')
-rw-r--r-- | libs/canvas/canvas/text.h | 7 | ||||
-rw-r--r-- | libs/canvas/text.cc | 9 |
2 files changed, 13 insertions, 3 deletions
diff --git a/libs/canvas/canvas/text.h b/libs/canvas/canvas/text.h index c65953783d..e0be922e94 100644 --- a/libs/canvas/canvas/text.h +++ b/libs/canvas/canvas/text.h @@ -24,6 +24,8 @@ public: void set_font_description (Pango::FontDescription); void set_alignment (Pango::Alignment); + void clamp_width (double); + void set_size_chars (int nchars); void dump (std::ostream&) const; @@ -34,9 +36,10 @@ private: Pango::Alignment _alignment; mutable Cairo::RefPtr<Cairo::ImageSurface> _image; mutable Duple _origin; - mutable int _width; - mutable int _height; + mutable double _width; + mutable double _height; mutable bool _need_redraw; + double _clamped_width; void redraw (Cairo::RefPtr<Cairo::Context>) const; }; diff --git a/libs/canvas/text.cc b/libs/canvas/text.cc index 9f3f98528b..ed0e7dfae0 100644 --- a/libs/canvas/text.cc +++ b/libs/canvas/text.cc @@ -21,6 +21,7 @@ Text::Text (Group* parent) , _width (0) , _height (0) , _need_redraw (false) + , _clamped_width (COORD_MAX) { } @@ -81,6 +82,12 @@ Text::redraw (Cairo::RefPtr<Cairo::Context> context) const } void +Text::clamp_width (double w) +{ + _clamped_width = w; +} + +void Text::compute_bounding_box () const { if (!_canvas || _text.empty()) { @@ -120,7 +127,7 @@ Text::render (Rect const & /*area*/, Cairo::RefPtr<Cairo::Context> context) cons } context->set_source (_image, 0, 0); - context->rectangle (0, 0, _width, _height); + context->rectangle (0, 0, min (_clamped_width, _width), _height); context->fill (); } |