1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Cairo library
4 // Author: Anthony Bretaudeau
6 // RCS-ID: $Id: cairo.h 47254 2007-08-25 10:09:52Z VS $
7 // Copyright: (c) Anthony Bretaudeau
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_CAIRO_H_BASE_
12 #define _WX_CAIRO_H_BASE_
25 #include "wx/dynlib.h"
32 // return the pointer to the global instance of this class or NULL if we
33 // failed to load/initialize it
34 static wxCairoLibrary
*Get();
37 // for internal use only
38 static void CleanUp();
41 // the single wxCairoLibrary instance or NULL
42 static wxCairoLibrary
*ms_lib
;
48 bool InitializeMethods();
50 wxDynamicLibrary m_libCairo
;
51 wxDynamicLibrary m_libPangoCairo
;
53 // true if we successfully loaded the libraries and can use them
55 // note that this field must have this name as it's used by wxDL_XXX macros
59 wxDL_VOIDMETHOD_DEFINE( cairo_arc
,
60 (cairo_t
*cr
, double xc
, double yc
, double radius
, double angle1
, double angle2
), (cr
, xc
, yc
, radius
, angle1
, angle2
) )
61 wxDL_VOIDMETHOD_DEFINE( cairo_arc_negative
,
62 (cairo_t
*cr
, double xc
, double yc
, double radius
, double angle1
, double angle2
), (cr
, xc
, yc
, radius
, angle1
, angle2
) )
63 wxDL_VOIDMETHOD_DEFINE( cairo_clip
,
65 wxDL_VOIDMETHOD_DEFINE( cairo_close_path
,
67 wxDL_METHOD_DEFINE( cairo_t
*, cairo_create
,
68 (cairo_surface_t
*target
), (target
), NULL
)
69 wxDL_VOIDMETHOD_DEFINE( cairo_curve_to
,
70 (cairo_t
*cr
, double x1
, double y1
, double x2
, double y2
, double x3
, double y3
), (cr
, x1
, y1
, x2
, y2
, x3
, y3
) )
71 wxDL_VOIDMETHOD_DEFINE( cairo_destroy
,
73 wxDL_VOIDMETHOD_DEFINE( cairo_fill
,
75 wxDL_VOIDMETHOD_DEFINE( cairo_fill_preserve
,
77 wxDL_METHOD_DEFINE( cairo_surface_t
*, cairo_get_target
,
78 (cairo_t
*cr
), (cr
), NULL
)
79 wxDL_METHOD_DEFINE( cairo_surface_t
*, cairo_image_surface_create_for_data
,
80 (unsigned char *data
, cairo_format_t format
, int width
, int height
, int stride
), (data
, format
, width
, height
, stride
), NULL
)
81 wxDL_VOIDMETHOD_DEFINE( cairo_line_to
,
82 (cairo_t
*cr
, double x
, double y
), (cr
, x
, y
) )
83 wxDL_VOIDMETHOD_DEFINE( cairo_move_to
,
84 (cairo_t
*cr
, double x
, double y
), (cr
, x
, y
) )
85 wxDL_VOIDMETHOD_DEFINE( cairo_new_path
,
87 wxDL_VOIDMETHOD_DEFINE( cairo_paint
,
89 wxDL_VOIDMETHOD_DEFINE( cairo_pattern_add_color_stop_rgba
,
90 (cairo_pattern_t
*pattern
, double offset
, double red
, double green
, double blue
, double alpha
), (pattern
, offset
, red
, green
, blue
, alpha
) )
91 wxDL_METHOD_DEFINE( cairo_pattern_t
*, cairo_pattern_create_for_surface
,
92 (cairo_surface_t
*surface
), (surface
), NULL
)
93 wxDL_METHOD_DEFINE( cairo_pattern_t
*, cairo_pattern_create_linear
,
94 (double x0
, double y0
, double x1
, double y1
), (x0
, y0
, x1
, y1
), NULL
)
95 wxDL_METHOD_DEFINE( cairo_pattern_t
*, cairo_pattern_create_radial
,
96 (double cx0
, double cy0
, double radius0
, double cx1
, double cy1
, double radius1
), (cx0
, cy0
, radius0
, cx1
, cy1
, radius1
), NULL
)
97 wxDL_VOIDMETHOD_DEFINE( cairo_pattern_destroy
,
98 (cairo_pattern_t
*pattern
), (pattern
) )
99 wxDL_VOIDMETHOD_DEFINE( cairo_pattern_set_extend
,
100 (cairo_pattern_t
*pattern
, cairo_extend_t extend
), (pattern
, extend
) )
101 wxDL_VOIDMETHOD_DEFINE( cairo_pattern_set_filter
,
102 (cairo_pattern_t
*pattern
, cairo_filter_t filter
), (pattern
, filter
) )
103 wxDL_VOIDMETHOD_DEFINE( cairo_rectangle
,
104 (cairo_t
*cr
, double x
, double y
, double width
, double height
), (cr
, x
, y
, width
, height
) )
105 wxDL_VOIDMETHOD_DEFINE( cairo_reset_clip
,
106 (cairo_t
*cr
), (cr
) )
107 wxDL_VOIDMETHOD_DEFINE( cairo_restore
,
108 (cairo_t
*cr
), (cr
) )
109 wxDL_VOIDMETHOD_DEFINE( cairo_rotate
,
110 (cairo_t
*cr
, double angle
), (cr
, angle
) )
111 wxDL_VOIDMETHOD_DEFINE( cairo_save
,
112 (cairo_t
*cr
), (cr
) )
113 wxDL_VOIDMETHOD_DEFINE( cairo_scale
,
114 (cairo_t
*cr
, double sx
, double sy
), (cr
, sx
, sy
) )
115 wxDL_VOIDMETHOD_DEFINE( cairo_set_dash
,
116 (cairo_t
*cr
, const double *dashes
, int num_dashes
, double offset
), (cr
, dashes
, num_dashes
, offset
) )
117 wxDL_VOIDMETHOD_DEFINE( cairo_set_fill_rule
,
118 (cairo_t
*cr
, cairo_fill_rule_t fill_rule
), (cr
, fill_rule
) )
119 wxDL_VOIDMETHOD_DEFINE( cairo_set_line_cap
,
120 (cairo_t
*cr
, cairo_line_cap_t line_cap
), (cr
, line_cap
) )
121 wxDL_VOIDMETHOD_DEFINE( cairo_set_line_join
,
122 (cairo_t
*cr
, cairo_line_join_t line_join
), (cr
, line_join
) )
123 wxDL_VOIDMETHOD_DEFINE( cairo_set_line_width
,
124 (cairo_t
*cr
, double width
), (cr
, width
) )
125 wxDL_VOIDMETHOD_DEFINE( cairo_set_operator
,
126 (cairo_t
*cr
, cairo_operator_t op
), (cr
, op
) )
127 wxDL_VOIDMETHOD_DEFINE( cairo_set_source
,
128 (cairo_t
*cr
, cairo_pattern_t
*source
), (cr
, source
) )
129 wxDL_VOIDMETHOD_DEFINE( cairo_set_source_rgba
,
130 (cairo_t
*cr
, double red
, double green
, double blue
, double alpha
), (cr
, red
, green
, blue
, alpha
) )
131 wxDL_VOIDMETHOD_DEFINE( cairo_stroke
,
132 (cairo_t
*cr
), (cr
) )
133 wxDL_VOIDMETHOD_DEFINE( cairo_stroke_preserve
,
134 (cairo_t
*cr
), (cr
) )
135 wxDL_METHOD_DEFINE( cairo_surface_t
*, cairo_surface_create_similar
,
136 (cairo_surface_t
*other
, cairo_content_t content
, int width
, int height
), (other
, content
, width
, height
), NULL
)
137 wxDL_VOIDMETHOD_DEFINE( cairo_surface_destroy
,
138 (cairo_surface_t
*surface
), (surface
) )
139 wxDL_VOIDMETHOD_DEFINE( cairo_translate
,
140 (cairo_t
*cr
, double tx
, double ty
), (cr
, tx
, ty
) )
142 wxDL_VOIDMETHOD_DEFINE( pango_cairo_update_layout
,
143 (cairo_t
*cr
, PangoLayout
*layout
), (cr
, layout
) )
144 wxDL_VOIDMETHOD_DEFINE( pango_cairo_show_layout
,
145 (cairo_t
*cr
, PangoLayout
*layout
), (cr
, layout
) )
147 DECLARE_NO_COPY_CLASS(wxCairoLibrary
)
150 #endif // wxUSE_CAIRO
152 #endif // _WX_CAIRO_H_BASE_