root/trunk/cairo/cairo/cairotypes.d

Revision 228, 7.2 kB (checked in by DRK, 5 years ago)

* Updated the bindings to support cairo 1.2 and cairo 1.4. Support for these can be enabled with the cairo_1_2 and cairo_1_4 version identifiers.
* Added pdf, ps and svg support.
* Updated the build script appropriately.
* Note that cairooo is not likely to receive any further updates in its current form. It is being forked and rewritten for Tango's graphics package, although a port back to Phobos isn't out of the question.

Line 
1 /**
2  * This module contains all the various types that are defined
3  * by cairo.
4  *
5  * Authors: Daniel Keep
6  * Copyright: 2006, Daniel Keep
7  * License: BSD v2 (http://www.opensource.org/licenses/bsd-license.php).
8  */
9 /*
10  * Copyright © 2006 Daniel Keep
11  * All rights reserved.
12  *
13  * Redistribution and use in source and binary forms, with or without
14  * modification, are permitted provided that the following conditions are
15  * met:
16  *
17  * * Redistributions of source code must retain the above copyright
18  *   notice, this list of conditions and the following disclaimer.
19  *
20  * * Redistributions in binary form must reproduce the above copyright
21  *   notice, this list of conditions and the following disclaimer in the
22  *   documentation and/or other materials provided with the distribution.
23  *
24  * * Neither the name of this software, nor the names of its contributors
25  *   may be used to endorse or promote products derived from this software
26  *   without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
30  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
31  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
32  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
34  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
35  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
36  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
37  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
38  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  */
40 module cairo.cairotypes;
41
42 version( cairo_1_4 ) { version = cairo_1_2; }
43
44 extern(C):
45
46 alias int cairo_bool_t;
47
48 struct cairo_t {}
49
50 struct cairo_surface_t {}
51
52 struct cairo_matrix_t
53 {
54     double xx; double yx;
55     double xy; double yy;
56     double x0; double y0;
57 }
58
59 struct cairo_pattern_t {}
60
61 alias void function(void* data) cairo_destroy_func_t;
62
63 struct cairo_user_data_key_t
64 {
65     int unused;
66 }
67
68 enum cairo_status_t
69 {
70     CAIRO_STATUS_SUCCESS = 0,
71     CAIRO_STATUS_NO_MEMORY,
72     CAIRO_STATUS_INVALID_RESTORE,
73     CAIRO_STATUS_INVALID_POP_GROUP,
74     CAIRO_STATUS_NO_CURRENT_POINT,
75     CAIRO_STATUS_INVALID_MATRIX,
76     CAIRO_STATUS_INVALID_STATUS,
77     CAIRO_STATUS_NULL_POINTER,
78     CAIRO_STATUS_INVALID_STRING,
79     CAIRO_STATUS_INVALID_PATH_DATA,
80     CAIRO_STATUS_READ_ERROR,
81     CAIRO_STATUS_WRITE_ERROR,
82     CAIRO_STATUS_SURFACE_FINISHED,
83     CAIRO_STATUS_SURFACE_TYPE_MISMATCH,
84     CAIRO_STATUS_PATTERN_TYPE_MISMATCH,
85     CAIRO_STATUS_INVALID_CONTENT,
86     CAIRO_STATUS_INVALID_FORMAT,
87     CAIRO_STATUS_INVALID_VISUAL,
88     CAIRO_STATUS_FILE_NOT_FOUND,
89     CAIRO_STATUS_INVALID_DASH
90 }
91
92 alias cairo_status_t function(void* closure, ubyte* data, uint length) cairo_write_func_t;
93
94 alias cairo_status_t function(void* closure, ubyte* data, uint length) cairo_read_func_t;
95
96 enum cairo_operator_t
97 {
98     CAIRO_OPERATOR_CLEAR,
99
100     CAIRO_OPERATOR_SOURCE,
101     CAIRO_OPERATOR_OVER,
102     CAIRO_OPERATOR_IN,
103     CAIRO_OPERATOR_OUT,
104     CAIRO_OPERATOR_ATOP,
105
106     CAIRO_OPERATOR_DEST,
107     CAIRO_OPERATOR_DEST_OVER,
108     CAIRO_OPERATOR_DEST_IN,
109     CAIRO_OPERATOR_DEST_OUT,
110     CAIRO_OPERATOR_DEST_ATOP,
111
112     CAIRO_OPERATOR_XOR,
113     CAIRO_OPERATOR_ADD,
114     CAIRO_OPERATOR_SATURATE
115 }
116
117 enum cairo_antialias_t
118 {
119     CAIRO_ANTIALIAS_DEFAULT,
120     CAIRO_ANTIALIAS_NONE,
121     CAIRO_ANTIALIAS_GRAY,
122     CAIRO_ANTIALIAS_SUBPIXEL
123 }
124
125 enum cairo_fill_rule_t
126 {
127     CAIRO_FILL_RULE_WINDING,
128     CAIRO_FILL_RULE_EVEN_ODD
129 }
130
131 enum cairo_line_cap_t
132 {
133     CAIRO_LINE_CAP_BUTT,
134     CAIRO_LINE_CAP_ROUND,
135     CAIRO_LINE_CAP_SQUARE
136 }
137
138 enum cairo_line_join_t
139 {
140     CAIRO_LINE_JOIN_MITER,
141     CAIRO_LINE_JOIN_ROUND,
142     CAIRO_LINE_JOIN_BEVEL
143 }
144
145 struct cairo_scaled_font_t {}
146
147 struct cairo_font_face_t {}
148
149 struct cairo_glyph_t
150 {
151     uint index;
152     double x;
153     double y;
154 }
155
156 struct cairo_text_extents_t
157 {
158     double x_bearing;
159     double y_bearing;
160     double width;
161     double height;
162     double x_advance;
163     double y_advance;
164 }
165
166 struct cairo_font_extents_t
167 {
168     double ascent;
169     double descent;
170     double height;
171     double max_x_advance;
172     double max_y_advance;
173 }
174
175 enum cairo_font_slant_t
176 {
177     CAIRO_FONT_SLANT_NORMAL,
178     CAIRO_FONT_SLANT_ITALIC,
179     CAIRO_FONT_SLANT_OBLIQUE
180 }
181
182 enum cairo_font_weight_t
183 {
184     CAIRO_FONT_WEIGHT_NORMAL,
185     CAIRO_FONT_WEIGHT_BOLD
186 }
187
188 enum cairo_subpixel_order_t
189 {
190     CAIRO_SUBPIXEL_ORDER_DEFAULT,
191     CAIRO_SUBPIXEL_ORDER_RGB,
192     CAIRO_SUBPIXEL_ORDER_BGR,
193     CAIRO_SUBPIXEL_ORDER_VRGB,
194     CAIRO_SUBPIXEL_ORDER_VBGR
195 }
196
197 enum cairo_hint_style_t
198 {
199     CAIRO_HINT_STYLE_DEFAULT,
200     CAIRO_HINT_STYLE_NONE,
201     CAIRO_HINT_STYLE_SLIGHT,
202     CAIRO_HINT_STYLE_MEDIUM,
203     CAIRO_HINT_STYLE_FULL
204 }
205
206 enum cairo_hint_metrics_t
207 {
208     CAIRO_HINT_METRICS_DEFAULT,
209     CAIRO_HINT_METRICS_OFF,
210     CAIRO_HINT_METRICS_ON
211 }
212
213 struct cairo_font_options_t {}
214
215 enum cairo_path_data_type_t
216 {
217     CAIRO_PATH_MOVE_TO,
218     CAIRO_PATH_LINE_TO,
219     CAIRO_PATH_CURVE_TO,
220     CAIRO_PATH_CLOSE_PATH
221 }
222
223 union cairo_path_data_t
224 {
225     struct
226     {
227         cairo_path_data_type_t type;
228         int length = 0;
229     }
230     struct
231     {
232         double x, y;
233     }
234 }
235
236 struct cairo_path_t
237 {
238     cairo_status_t status = cairo_status_t.CAIRO_STATUS_SUCCESS;
239     cairo_path_data_t *data = null;
240     int num_data = 0;
241 }
242
243 enum cairo_content_t
244 {
245     CAIRO_CONTENT_COLOR = 0x1000,
246     CAIRO_CONTENT_ALPHA = 0x2000,
247     CAIRO_CONTENT_COLOR_ALPHA = 0x3000
248 }
249
250 enum cairo_format_t
251 {
252     CAIRO_FORMAT_ARGB32,
253     CAIRO_FORMAT_RGB24,
254     CAIRO_FORMAT_A8,
255     CAIRO_FORMAT_A1
256 }
257
258 enum cairo_extend_t
259 {
260     CAIRO_EXTEND_NONE,
261     CAIRO_EXTEND_REPEAT,
262     CAIRO_EXTEND_REFLECT
263 }
264
265 enum cairo_filter_t
266 {
267     CAIRO_FILTER_FAST,
268     CAIRO_FILTER_GOOD,
269     CAIRO_FILTER_BEST,
270     CAIRO_FILTER_NEAREST,
271     CAIRO_FILTER_BILINEAR,
272     CAIRO_FILTER_GAUSSIAN
273 }
274
275 version( cairo_1_2 )
276 {
277     enum cairo_font_type_t
278     {
279         CAIRO_FONT_TYPE_TOY,
280         CAIRO_FONT_TYPE_FT,
281         CAIRO_FONT_TYPE_WIN32,
282         CAIRO_FONT_TYPE_ATSUI
283     }
284
285     enum cairo_pattern_type_t
286     {
287         CAIRO_PATTERN_TYPE_SOLID,
288         CAIRO_PATTERN_TYPE_SURFACE,
289         CAIRO_PATTERN_TYPE_LINEAR,
290         CAIRO_PATTERN_TYPE_RADIAL
291     }
292
293     enum cairo_surface_type_t
294     {
295         CAIRO_SURFACE_TYPE_IMAGE,
296         CAIRO_SURFACE_TYPE_PDF,
297         CAIRO_SURFACE_TYPE_PS,
298         CAIRO_SURFACE_TYPE_XLIB,
299         CAIRO_SURFACE_TYPE_XCB,
300         CAIRO_SURFACE_TYPE_GLITZ,
301         CAIRO_SURFACE_TYPE_QUARTZ,
302         CAIRO_SURFACE_TYPE_WIN32,
303         CAIRO_SURFACE_TYPE_BEOS,
304         CAIRO_SURFACE_TYPE_DIRECTFB,
305         CAIRO_SURFACE_TYPE_SVG,
306         CAIRO_SURFACE_TYPE_OS2
307     }
308 }
309
310 version( cairo_1_4 )
311 {
312     struct cairo_rectangle_t
313     {
314         double x, y, width, height;
315     }
316
317     struct cairo_rectangle_list_t
318     {
319         cairo_status_t status;
320         cairo_rectangle_t* rectangles;
321         int num_rectangles;
322     }
323 }
Note: See TracBrowser for help on using the browser.