summaryrefslogtreecommitdiff
path: root/libs/canvas/fill.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-09-19 16:21:19 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-11-05 11:13:09 -0500
commit70e95f951dc58b2b1b2857956391e1cfc2ba27fc (patch)
tree819d218a233c37ed2fbd5f9d962b23e0718cf0c3 /libs/canvas/fill.cc
parent4eac2a76da79de7fd72f0a8af51de2b14f23283d (diff)
add ArdourCanvas::Fill::set_pattern() to allow any filled canvas item to be filled using an arbitrary Cairo Pattern
Diffstat (limited to 'libs/canvas/fill.cc')
-rw-r--r--libs/canvas/fill.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/canvas/fill.cc b/libs/canvas/fill.cc
index 42bcbfff3c..9c93523e51 100644
--- a/libs/canvas/fill.cc
+++ b/libs/canvas/fill.cc
@@ -72,7 +72,11 @@ Fill::set_fill (bool fill)
void
Fill::setup_fill_context (Cairo::RefPtr<Cairo::Context> context) const
{
- set_source_rgba (context, _fill_color);
+ if (_pattern) {
+ context->set_source (_pattern);
+ } else {
+ set_source_rgba (context, _fill_color);
+ }
}
void
@@ -96,6 +100,12 @@ Fill::setup_gradient_context (Cairo::RefPtr<Cairo::Context> context, Rect const
}
void
+Fill::set_pattern (Cairo::RefPtr<Cairo::Pattern> p)
+{
+ _pattern = p;
+}
+
+void
Fill::set_gradient (StopList const & stops, bool vertical)
{
_self.begin_visual_change ();