Merge branch 'master' into cairocanvas
[ardour.git] / libs / canvas / fill.cc
1 #include "ardour/utils.h"
2
3 #include "pbd/xml++.h"
4 #include "pbd/compose.h"
5 #include "pbd/convert.h"
6
7 #include "canvas/fill.h"
8 #include "canvas/utils.h"
9
10 using namespace std;
11 using namespace ArdourCanvas;
12
13 Fill::Fill (Group* parent)
14         : Item (parent)
15         , _fill_color (0x000000ff)
16         , _fill (true)
17 {
18
19 }
20
21 void
22 Fill::set_fill_color (Color color)
23 {
24         begin_change ();
25         
26         _fill_color = color;
27
28         end_change ();
29 }
30
31 void
32 Fill::set_fill (bool fill)
33 {
34         begin_change ();
35         
36         _fill = fill;
37
38         end_change ();
39 }
40
41 void
42 Fill::setup_fill_context (Cairo::RefPtr<Cairo::Context> context) const
43 {
44         set_source_rgba (context, _fill_color);
45 }
46
47 void
48 Fill::add_fill_state (XMLNode* node) const
49 {
50         node->add_property ("fill-color", string_compose ("%1", _fill_color));
51         node->add_property ("fill", _fill ? "yes" : "no");
52 }
53
54 void
55 Fill::set_fill_state (XMLNode const * node)
56 {
57         _fill_color = atoll (node->property("fill-color")->value().c_str());
58         _fill = PBD::string_is_affirmative (node->property("fill")->value ().c_str());
59
60         _bounding_box_dirty = true;
61 }