22#define CAIRO_WIN32_STATIC_BUILD
33#include < cairo.h>
44#undef CAIRO_WIN32_STATIC_BUILD
5+ #include < pango.h>
56
67using namespace std ;
78
@@ -12,127 +13,124 @@ namespace minsky
1213 CairoShimCairo::~CairoShimCairo () = default ;
1314
1415 // Drawing operations
15- void CairoShimCairo::moveTo (double x, double y)
16+ void CairoShimCairo::moveTo (double x, double y) const
1617 {cairo_move_to (cairo,x,y);}
1718
18- void CairoShimCairo::lineTo (double x, double y)
19+ void CairoShimCairo::lineTo (double x, double y) const
1920 {cairo_line_to (cairo,x,y);}
2021
21- void CairoShimCairo::relMoveTo (double x, double y)
22+ void CairoShimCairo::relMoveTo (double x, double y) const
2223 {cairo_rel_move_to (cairo,x,y);}
2324
24- void CairoShimCairo::relLineTo (double x, double y)
25+ void CairoShimCairo::relLineTo (double x, double y) const
2526 {cairo_rel_line_to (cairo,x,y);}
2627
27- void CairoShimCairo::arc (double x, double y, double radius, double start, double end)
28+ void CairoShimCairo::arc (double x, double y, double radius, double start, double end) const
2829 {cairo_arc (cairo,x,y,radius,start,end);}
2930
30- void CairoShimCairo::curveTo (double x1, double y1, double x2, double y2, double x3, double y3)
31+ void CairoShimCairo::curveTo (double x1, double y1, double x2, double y2, double x3, double y3) const
3132 {cairo_curve_to (cairo,x1,y1,x2,y2,x3,y3);}
3233
33- void CairoShimCairo::rectangle (double x, double y, double width, double height)
34+ void CairoShimCairo::rectangle (double x, double y, double width, double height) const
3435 {cairo_rectangle (cairo,x,y,width,height);}
3536
3637 // Path operations
37- void CairoShimCairo::newPath ()
38+ void CairoShimCairo::newPath () const
3839 {cairo_new_path (cairo);}
3940
40- void CairoShimCairo::newSubPath ()
41+ void CairoShimCairo::newSubPath () const
4142 {cairo_new_sub_path (cairo);}
4243
43- void CairoShimCairo::closePath ()
44+ void CairoShimCairo::closePath () const
4445 {cairo_close_path (cairo);}
4546
46- void CairoShimCairo::getCurrentPoint (double & x, double & y)
47+ void CairoShimCairo::getCurrentPoint (double & x, double & y) const
4748 {cairo_get_current_point (cairo, &x, &y);}
4849
4950 // Fill and stroke operations
50- void CairoShimCairo::fill ()
51+ void CairoShimCairo::fill () const
5152 {cairo_fill (cairo);}
5253
53- void CairoShimCairo::fillPreserve ()
54+ void CairoShimCairo::fillPreserve () const
5455 {cairo_fill_preserve (cairo);}
5556
56- void CairoShimCairo::clip ()
57+ void CairoShimCairo::clip () const
5758 {cairo_clip (cairo);}
5859
59- void CairoShimCairo::resetClip ()
60+ void CairoShimCairo::resetClip () const
6061 {cairo_reset_clip (cairo);}
6162
62- void CairoShimCairo::stroke ()
63+ void CairoShimCairo::stroke () const
6364 {cairo_stroke (cairo);}
6465
65- void CairoShimCairo::strokePreserve ()
66+ void CairoShimCairo::strokePreserve () const
6667 {cairo_stroke_preserve (cairo);}
6768
68- void CairoShimCairo::paint ()
69+ void CairoShimCairo::paint () const
6970 {cairo_paint (cairo);}
7071
7172 // Line properties
72- void CairoShimCairo::setLineWidth (double w)
73+ void CairoShimCairo::setLineWidth (double w) const
7374 {cairo_set_line_width (cairo, w);}
7475
75- double CairoShimCairo::getLineWidth ()
76+ double CairoShimCairo::getLineWidth () const
7677 {return cairo_get_line_width (cairo);}
7778
78- void CairoShimCairo::setDash (const double * dashes, int num_dashes, double offset)
79+ void CairoShimCairo::setDash (const double * dashes, int num_dashes, double offset) const
7980 {cairo_set_dash (cairo, dashes, num_dashes, offset);}
8081
81- void CairoShimCairo::setFillRule (cairo_fill_rule_t fill_rule)
82+ void CairoShimCairo::setFillRule (cairo_fill_rule_t fill_rule) const
8283 {cairo_set_fill_rule (cairo, fill_rule);}
8384
8485 // Color operations
85- void CairoShimCairo::setSourceRGB (double r, double g, double b)
86+ void CairoShimCairo::setSourceRGB (double r, double g, double b) const
8687 {cairo_set_source_rgb (cairo,r,g,b);}
8788
88- void CairoShimCairo::setSourceRGBA (double r, double g, double b, double a)
89+ void CairoShimCairo::setSourceRGBA (double r, double g, double b, double a) const
8990 {cairo_set_source_rgba (cairo,r,g,b,a);}
9091
9192 // Text operations
92- void CairoShimCairo::showText (const std::string& text)
93+ void CairoShimCairo::showText (const std::string& text) const
9394 {cairo_show_text (cairo,text.c_str ());}
9495
95- void CairoShimCairo::setFontSize (double size)
96+ void CairoShimCairo::setFontSize (double size) const
9697 {cairo_set_font_size (cairo, size);}
9798
98- void CairoShimCairo::textExtents (const std::string& text, cairo_text_extents_t & extents)
99+ void CairoShimCairo::textExtents (const std::string& text, cairo_text_extents_t & extents) const
99100 {cairo_text_extents (cairo,text.c_str (),&extents);}
100101
101102 // Transformation operations
102- void CairoShimCairo::identityMatrix ()
103+ void CairoShimCairo::identityMatrix () const
103104 {cairo_identity_matrix (cairo);}
104105
105- void CairoShimCairo::translate (double x, double y)
106+ void CairoShimCairo::translate (double x, double y) const
106107 {cairo_translate (cairo,x,y);}
107108
108- void CairoShimCairo::scale (double sx, double sy)
109+ void CairoShimCairo::scale (double sx, double sy) const
109110 {cairo_scale (cairo,sx,sy);}
110111
111- void CairoShimCairo::rotate (double angle)
112+ void CairoShimCairo::rotate (double angle) const
112113 {cairo_rotate (cairo,angle);}
113114
114- void CairoShimCairo::userToDevice (double & x, double & y)
115+ void CairoShimCairo::userToDevice (double & x, double & y) const
115116 {cairo_user_to_device (cairo, &x, &y);}
116117
117118 // Context state operations
118- void CairoShimCairo::save ()
119+ void CairoShimCairo::save () const
119120 {cairo_save (cairo);}
120121
121- void CairoShimCairo::restore ()
122+ void CairoShimCairo::restore () const
122123 {cairo_restore (cairo);}
123124
124125 // Tolerance
125- void CairoShimCairo::setTolerance (double tolerance)
126+ void CairoShimCairo::setTolerance (double tolerance) const
126127 {cairo_set_tolerance (cairo, tolerance);}
127128
128- // Path query
129- cairo_path_t * CairoShimCairo::copyPathFlat ()
130- {return cairo_copy_path_flat (cairo);}
131-
132- void CairoShimCairo::pathDestroy (cairo_path_t * path)
133- {cairo_path_destroy (path);}
134-
135- // Access to underlying cairo_t*
136- cairo_t * CairoShimCairo::cairoContext ()
137- {return cairo;}
129+ // Pango support
130+ ecolab::Pango& CairoShimCairo::pango () const
131+ {
132+ if (!m_pango)
133+ m_pango.reset (new ecolab::Pango (cairo));
134+ return *m_pango;
135+ }
138136}
0 commit comments