X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fcanvas%2Ffill.cc;h=32af6bd74b740ac7985fc133de94e3fe17888177;hb=1ec471c961c328ca4c585d35f9e567135f301d2d;hp=42bcbfff3ccff2c82f0cf601e21af6d1cbf502d5;hpb=ad017365f7a73f8ba57f667cc1aa36478b48c50e;p=ardour.git diff --git a/libs/canvas/fill.cc b/libs/canvas/fill.cc index 42bcbfff3c..32af6bd74b 100644 --- a/libs/canvas/fill.cc +++ b/libs/canvas/fill.cc @@ -19,15 +19,12 @@ #include -#include "ardour/utils.h" - #include "pbd/compose.h" #include "pbd/convert.h" #include "canvas/fill.h" #include "canvas/item.h" #include "canvas/types.h" -#include "canvas/utils.h" using namespace std; using namespace ArdourCanvas; @@ -41,14 +38,14 @@ Fill::Fill (Item& self) } void -Fill::set_fill_color (Color color) +Fill::set_fill_color (Gtkmm2ext::Color color) { if (_fill_color != color) { _self.begin_visual_change (); _fill_color = color; double r, g, b, a; - color_to_rgba (color, r, g, b, a); + Gtkmm2ext::color_to_rgba (color, r, g, b, a); if (a == 0.0) { _transparent = true; } else { @@ -72,29 +69,39 @@ Fill::set_fill (bool fill) void Fill::setup_fill_context (Cairo::RefPtr context) const { - set_source_rgba (context, _fill_color); + if (_pattern) { + context->set_source (_pattern); + } else { + Gtkmm2ext::set_source_rgba (context, _fill_color); + } } void Fill::setup_gradient_context (Cairo::RefPtr context, Rect const & self, Duple const & draw_origin) const { Cairo::RefPtr _gradient; - + if (_vertical_gradient) { _gradient = Cairo::LinearGradient::create (draw_origin.x, self.y0, draw_origin.x, self.y1); } else { _gradient = Cairo::LinearGradient::create (self.x0, draw_origin.y, self.x1, draw_origin.y); } - + for (StopList::const_iterator s = _stops.begin(); s != _stops.end(); ++s) { double r, g, b, a; - color_to_rgba (s->second, r, g, b, a); + Gtkmm2ext::color_to_rgba (s->second, r, g, b, a); _gradient->add_color_stop_rgba (s->first, r, g, b, a); } - + context->set_source (_gradient); } +void +Fill::set_pattern (Cairo::RefPtr p) +{ + _pattern = p; +} + void Fill::set_gradient (StopList const & stops, bool vertical) {