25
|
1 /* ***** BEGIN LICENSE BLOCK *****
|
|
2 * Version: MPL 1.1
|
|
3 *
|
|
4 * The contents of this file are subject to the Mozilla Public License Version
|
|
5 * 1.1 (the "License"); you may not use this file except in compliance with
|
|
6 * the License. You may obtain a copy of the License at
|
|
7 * http://www.mozilla.org/MPL/
|
|
8 *
|
|
9 * Software distributed under the License is distributed on an "AS IS" basis,
|
|
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
11 * for the specific language governing rights and limitations under the
|
|
12 * License.
|
|
13 *
|
|
14 * Contributor(s):
|
|
15 *
|
|
16 * IBM
|
|
17 * - Binding to permit interfacing between Cairo and SWT
|
|
18 * - Copyright (C) 2005 IBM Corp. All Rights Reserved.
|
|
19 *
|
|
20 * ***** END LICENSE BLOCK ***** */
|
|
21 /* Port to the D programming language:
|
|
22 * Frank Benoit <benoit@tionex.de>
|
|
23 */
|
|
24 module org.eclipse.swt.internal.cairo.Cairo;
|
|
25
|
|
26 import java.lang.all;
|
|
27
|
|
28 import org.eclipse.swt.internal.c.cairo;
|
|
29 import org.eclipse.swt.internal.c.cairo_xlib;
|
|
30 import org.eclipse.swt.internal.c.cairo_ps;
|
|
31 import org.eclipse.swt.internal.c.cairo_pdf;
|
|
32 import org.eclipse.swt.internal.c.Xlib;
|
|
33 import org.eclipse.swt.internal.Platform;
|
|
34
|
26
|
35 version(Tango){
|
|
36 import tango.core.Traits;
|
|
37 } else { // Phobos
|
|
38 import std.traits;
|
|
39 }
|
25
|
40
|
|
41 public alias org.eclipse.swt.internal.c.cairo.cairo_t cairo_t;
|
|
42 public alias org.eclipse.swt.internal.c.cairo.cairo_pattern_t cairo_pattern_t;
|
|
43 public alias org.eclipse.swt.internal.c.cairo.cairo_surface_t cairo_surface_t;
|
|
44 public alias org.eclipse.swt.internal.c.cairo.cairo_text_extents_t cairo_text_extents_t;
|
|
45 public alias org.eclipse.swt.internal.c.cairo.cairo_font_extents_t cairo_font_extents_t;
|
|
46 public alias org.eclipse.swt.internal.c.cairo.cairo_matrix_t cairo_matrix_t;
|
|
47 public alias org.eclipse.swt.internal.c.cairo.cairo_path_t cairo_path_t;
|
|
48 public alias org.eclipse.swt.internal.c.cairo.cairo_path_data_t cairo_path_data_t;
|
|
49
|
|
50 /++++
|
|
51 private extern(C) {
|
|
52 cairo_surface_t *
|
|
53 cairo_xlib_surface_create (void *dpy,
|
|
54 XID/*Drawable*/ drawable,
|
|
55 Visual *visual,
|
|
56 int width,
|
|
57 int height);
|
|
58 }
|
|
59 ++++/
|
|
60
|
|
61 private int CAIRO_VERSION_ENCODE(int major, int minor, int micro) {
|
|
62 return ((major) * 10000)
|
|
63 + ((minor) * 100)
|
|
64 + ((micro) * 1);
|
|
65 }
|
|
66
|
|
67 template NameOfFunc(alias f) {
|
|
68 // Note: highly dependent on the .stringof formatting
|
|
69 // the value begins with "& " which is why the first two chars are cut off
|
|
70 version( LDC ){
|
|
71 // stringof in LLVMDC is "&foobar"
|
|
72 const char[] NameOfFunc = (&f).stringof[1 .. $];
|
|
73 }
|
|
74 else{
|
|
75 // stringof in DMD is "& foobar"
|
|
76 const char[] NameOfFunc = (&f).stringof[2 .. $];
|
|
77 }
|
|
78 }
|
|
79
|
|
80 template ForwardGtkCairoCFunc( alias cFunc ) {
|
26
|
81 version(Tango){
|
|
82 alias ParameterTupleOf!(cFunc) P;
|
|
83 alias ReturnTypeOf!(cFunc) R;
|
|
84 mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){
|
|
85 lock.lock();
|
|
86 scope(exit) lock.unlock();
|
|
87 return cFunc(p);
|
|
88 }");
|
|
89 } else { // Phobos
|
|
90 alias ParameterTypeTuple!(cFunc) P;
|
|
91 alias ReturnType!(cFunc) R;
|
|
92 mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){
|
|
93 lock.lock();
|
|
94 scope(exit) lock.unlock();
|
|
95 return cFunc(p);
|
|
96 }");
|
|
97 }
|
25
|
98 }
|
|
99
|
|
100 public class Cairo : Platform {
|
|
101
|
|
102 /** Constants */
|
|
103 public static const int CAIRO_ANTIALIAS_DEFAULT = 0;
|
|
104 public static const int CAIRO_ANTIALIAS_NONE = 1;
|
|
105 public static const int CAIRO_ANTIALIAS_GRAY = 2;
|
|
106 public static const int CAIRO_ANTIALIAS_SUBPIXEL = 3;
|
|
107 public static const int CAIRO_FORMAT_ARGB32 = 0;
|
|
108 public static const int CAIRO_FORMAT_RGB24 = 1;
|
|
109 public static const int CAIRO_FORMAT_A8 = 2;
|
|
110 public static const int CAIRO_FORMAT_A1 = 3;
|
|
111 public static const int CAIRO_OPERATOR_CLEAR = 0;
|
|
112 public static const int CAIRO_OPERATOR_SRC = 1;
|
|
113 public static const int CAIRO_OPERATOR_DST = 2;
|
|
114 public static const int CAIRO_OPERATOR_OVER = 3;
|
|
115 public static const int CAIRO_OPERATOR_OVER_REVERSE = 4;
|
|
116 public static const int CAIRO_OPERATOR_IN = 5;
|
|
117 public static const int CAIRO_OPERATOR_IN_REVERSE = 6;
|
|
118 public static const int CAIRO_OPERATOR_OUT = 7;
|
|
119 public static const int CAIRO_OPERATOR_OUT_REVERSE = 8;
|
|
120 public static const int CAIRO_OPERATOR_ATOP = 9;
|
|
121 public static const int CAIRO_OPERATOR_ATOP_REVERSE = 10;
|
|
122 public static const int CAIRO_OPERATOR_XOR = 11;
|
|
123 public static const int CAIRO_OPERATOR_ADD = 12;
|
|
124 public static const int CAIRO_OPERATOR_SATURATE = 13;
|
|
125 public static const int CAIRO_FILL_RULE_WINDING = 0;
|
|
126 public static const int CAIRO_FILL_RULE_EVEN_ODD = 1;
|
|
127 public static const int CAIRO_LINE_CAP_BUTT = 0;
|
|
128 public static const int CAIRO_LINE_CAP_ROUND = 1;
|
|
129 public static const int CAIRO_LINE_CAP_SQUARE = 2;
|
|
130 public static const int CAIRO_LINE_JOIN_MITER = 0;
|
|
131 public static const int CAIRO_LINE_JOIN_ROUND = 1;
|
|
132 public static const int CAIRO_LINE_JOIN_BEVEL = 2;
|
|
133 public static const int CAIRO_FONT_SLANT_NORMAL = 0;
|
|
134 public static const int CAIRO_FONT_SLANT_ITALIC = 1;
|
|
135 public static const int CAIRO_FONT_SLANT_OBLIQUE = 2;
|
|
136 public static const int CAIRO_FONT_WEIGHT_NORMAL = 0;
|
|
137 public static const int CAIRO_FONT_WEIGHT_BOLD = 1;
|
|
138 public static const int CAIRO_STATUS_SUCCESS = 0;
|
|
139 public static const int CAIRO_STATUS_NO_MEMORY = 1;
|
|
140 public static const int CAIRO_STATUS_INVALID_RESTORE = 2;
|
|
141 public static const int CAIRO_STATUS_INVALID_POP_GROUP = 3;
|
|
142 public static const int CAIRO_STATUS_NO_CURRENT_POINT = 4;
|
|
143 public static const int CAIRO_STATUS_INVALID_MATRIX = 5;
|
|
144 public static const int CAIRO_STATUS_NO_TARGET_SURFACE = 6;
|
|
145 public static const int CAIRO_STATUS_NULL_POINTER =7;
|
|
146 public static const int CAIRO_SURFACE_TYPE_IMAGE = 0;
|
|
147 public static const int CAIRO_SURFACE_TYPE_PDF = 1;
|
|
148 public static const int CAIRO_SURFACE_TYPE_PS = 2;
|
|
149 public static const int CAIRO_SURFACE_TYPE_XLIB = 3;
|
|
150 public static const int CAIRO_SURFACE_TYPE_XCB = 4;
|
|
151 public static const int CAIRO_SURFACE_TYPE_GLITZ = 5;
|
|
152 public static const int CAIRO_SURFACE_TYPE_QUARTZ = 6;
|
|
153 public static const int CAIRO_SURFACE_TYPE_WIN32 = 7;
|
|
154 public static const int CAIRO_SURFACE_TYPE_BEOS = 8;
|
|
155 public static const int CAIRO_SURFACE_TYPE_DIRECTFB = 9;
|
|
156 public static const int CAIRO_SURFACE_TYPE_SVG = 10;
|
|
157 public static const int CAIRO_FILTER_FAST = 0;
|
|
158 public static const int CAIRO_FILTER_GOOD = 1;
|
|
159 public static const int CAIRO_FILTER_BEST = 2;
|
|
160 public static const int CAIRO_FILTER_NEAREST = 3;
|
|
161 public static const int CAIRO_FILTER_BILINEAR = 4;
|
|
162 public static const int CAIRO_FILTER_GAUSSIAN = 5;
|
|
163 public static const int CAIRO_EXTEND_NONE = 0;
|
|
164 public static const int CAIRO_EXTEND_REPEAT = 1;
|
|
165 public static const int CAIRO_EXTEND_REFLECT = 2;
|
|
166 public static const int CAIRO_EXTEND_PAD = 3;
|
|
167 public static const int CAIRO_PATH_MOVE_TO = 0;
|
|
168 public static const int CAIRO_PATH_LINE_TO = 1;
|
|
169 public static const int CAIRO_PATH_CURVE_TO = 2;
|
|
170 public static const int CAIRO_PATH_CLOSE_PATH = 3;
|
|
171
|
|
172 mixin ForwardGtkCairoCFunc!(.CAIRO_VERSION_ENCODE);
|
|
173 mixin ForwardGtkCairoCFunc!(.cairo_append_path);
|
|
174 mixin ForwardGtkCairoCFunc!(.cairo_arc);
|
|
175 mixin ForwardGtkCairoCFunc!(.cairo_arc_negative);
|
|
176 mixin ForwardGtkCairoCFunc!(.cairo_clip);
|
|
177 mixin ForwardGtkCairoCFunc!(.cairo_clip_preserve);
|
|
178 mixin ForwardGtkCairoCFunc!(.cairo_close_path);
|
|
179 mixin ForwardGtkCairoCFunc!(.cairo_copy_page);
|
|
180 mixin ForwardGtkCairoCFunc!(.cairo_copy_path);
|
|
181 mixin ForwardGtkCairoCFunc!(.cairo_copy_path_flat);
|
|
182 mixin ForwardGtkCairoCFunc!(.cairo_create);
|
|
183 mixin ForwardGtkCairoCFunc!(.cairo_curve_to);
|
|
184 mixin ForwardGtkCairoCFunc!(.cairo_destroy);
|
|
185 mixin ForwardGtkCairoCFunc!(.cairo_device_to_user);
|
|
186 mixin ForwardGtkCairoCFunc!(.cairo_device_to_user_distance);
|
|
187 mixin ForwardGtkCairoCFunc!(.cairo_fill);
|
|
188 mixin ForwardGtkCairoCFunc!(.cairo_fill_extents);
|
|
189 mixin ForwardGtkCairoCFunc!(.cairo_fill_preserve);
|
|
190 mixin ForwardGtkCairoCFunc!(.cairo_font_extents);
|
|
191 mixin ForwardGtkCairoCFunc!(.cairo_font_options_create);
|
|
192 mixin ForwardGtkCairoCFunc!(.cairo_font_options_destroy);
|
|
193 mixin ForwardGtkCairoCFunc!(.cairo_font_options_get_antialias);
|
|
194 mixin ForwardGtkCairoCFunc!(.cairo_font_options_set_antialias);
|
|
195 mixin ForwardGtkCairoCFunc!(.cairo_get_antialias);
|
|
196 mixin ForwardGtkCairoCFunc!(.cairo_get_current_point);
|
|
197 mixin ForwardGtkCairoCFunc!(.cairo_get_fill_rule);
|
|
198 mixin ForwardGtkCairoCFunc!(.cairo_get_font_face);
|
|
199 mixin ForwardGtkCairoCFunc!(.cairo_get_font_matrix);
|
|
200 mixin ForwardGtkCairoCFunc!(.cairo_get_font_options);
|
|
201 mixin ForwardGtkCairoCFunc!(.cairo_get_line_cap);
|
|
202 mixin ForwardGtkCairoCFunc!(.cairo_get_line_join);
|
|
203 mixin ForwardGtkCairoCFunc!(.cairo_get_line_width);
|
|
204 mixin ForwardGtkCairoCFunc!(.cairo_get_matrix);
|
|
205 mixin ForwardGtkCairoCFunc!(.cairo_get_miter_limit);
|
|
206 mixin ForwardGtkCairoCFunc!(.cairo_get_operator);
|
|
207 mixin ForwardGtkCairoCFunc!(.cairo_get_source);
|
|
208 mixin ForwardGtkCairoCFunc!(.cairo_get_target);
|
|
209 mixin ForwardGtkCairoCFunc!(.cairo_get_tolerance);
|
|
210 mixin ForwardGtkCairoCFunc!(.cairo_glyph_extents);
|
|
211 mixin ForwardGtkCairoCFunc!(.cairo_glyph_path);
|
|
212 mixin ForwardGtkCairoCFunc!(.cairo_identity_matrix);
|
|
213 mixin ForwardGtkCairoCFunc!(.cairo_image_surface_create);
|
|
214 mixin ForwardGtkCairoCFunc!(.cairo_image_surface_create_for_data);
|
|
215 mixin ForwardGtkCairoCFunc!(.cairo_image_surface_get_height);
|
|
216 mixin ForwardGtkCairoCFunc!(.cairo_image_surface_get_width);
|
|
217 mixin ForwardGtkCairoCFunc!(.cairo_in_fill);
|
|
218 mixin ForwardGtkCairoCFunc!(.cairo_in_stroke);
|
|
219 mixin ForwardGtkCairoCFunc!(.cairo_line_to);
|
|
220 mixin ForwardGtkCairoCFunc!(.cairo_mask);
|
|
221 mixin ForwardGtkCairoCFunc!(.cairo_mask_surface);
|
|
222 mixin ForwardGtkCairoCFunc!(.cairo_matrix_init);
|
|
223 mixin ForwardGtkCairoCFunc!(.cairo_matrix_init_identity);
|
|
224 mixin ForwardGtkCairoCFunc!(.cairo_matrix_init_rotate);
|
|
225 mixin ForwardGtkCairoCFunc!(.cairo_matrix_init_scale);
|
|
226 mixin ForwardGtkCairoCFunc!(.cairo_matrix_init_translate);
|
|
227 mixin ForwardGtkCairoCFunc!(.cairo_matrix_invert);
|
|
228 mixin ForwardGtkCairoCFunc!(.cairo_matrix_multiply);
|
|
229 mixin ForwardGtkCairoCFunc!(.cairo_matrix_rotate);
|
|
230 mixin ForwardGtkCairoCFunc!(.cairo_matrix_scale);
|
|
231 mixin ForwardGtkCairoCFunc!(.cairo_matrix_transform_distance);
|
|
232 mixin ForwardGtkCairoCFunc!(.cairo_matrix_transform_point);
|
|
233 mixin ForwardGtkCairoCFunc!(.cairo_matrix_translate);
|
|
234 mixin ForwardGtkCairoCFunc!(.cairo_move_to);
|
|
235 mixin ForwardGtkCairoCFunc!(.cairo_new_path);
|
|
236 mixin ForwardGtkCairoCFunc!(.cairo_paint);
|
|
237 mixin ForwardGtkCairoCFunc!(.cairo_paint_with_alpha);
|
|
238 mixin ForwardGtkCairoCFunc!(.cairo_path_destroy);
|
|
239 mixin ForwardGtkCairoCFunc!(.cairo_pattern_add_color_stop_rgb);
|
|
240 mixin ForwardGtkCairoCFunc!(.cairo_pattern_add_color_stop_rgba);
|
|
241 mixin ForwardGtkCairoCFunc!(.cairo_pattern_create_for_surface);
|
|
242 mixin ForwardGtkCairoCFunc!(.cairo_pattern_create_linear);
|
|
243 mixin ForwardGtkCairoCFunc!(.cairo_pattern_create_radial);
|
|
244 mixin ForwardGtkCairoCFunc!(.cairo_pattern_destroy);
|
|
245 mixin ForwardGtkCairoCFunc!(.cairo_pattern_get_extend);
|
|
246 mixin ForwardGtkCairoCFunc!(.cairo_pattern_get_filter);
|
|
247 mixin ForwardGtkCairoCFunc!(.cairo_pattern_get_matrix);
|
|
248 mixin ForwardGtkCairoCFunc!(.cairo_pattern_reference);
|
|
249 mixin ForwardGtkCairoCFunc!(.cairo_pattern_set_extend);
|
|
250 mixin ForwardGtkCairoCFunc!(.cairo_pattern_set_filter);
|
|
251 mixin ForwardGtkCairoCFunc!(.cairo_pattern_set_matrix);
|
|
252 mixin ForwardGtkCairoCFunc!(.cairo_pdf_surface_set_size);
|
|
253 mixin ForwardGtkCairoCFunc!(.cairo_ps_surface_set_size);
|
|
254 mixin ForwardGtkCairoCFunc!(.cairo_rectangle);
|
|
255 mixin ForwardGtkCairoCFunc!(.cairo_reference);
|
|
256 mixin ForwardGtkCairoCFunc!(.cairo_rel_curve_to);
|
|
257 mixin ForwardGtkCairoCFunc!(.cairo_rel_line_to);
|
|
258 mixin ForwardGtkCairoCFunc!(.cairo_rel_move_to);
|
|
259 mixin ForwardGtkCairoCFunc!(.cairo_reset_clip);
|
|
260 mixin ForwardGtkCairoCFunc!(.cairo_restore);
|
|
261 mixin ForwardGtkCairoCFunc!(.cairo_rotate);
|
|
262 mixin ForwardGtkCairoCFunc!(.cairo_save);
|
|
263 mixin ForwardGtkCairoCFunc!(.cairo_scale);
|
|
264 mixin ForwardGtkCairoCFunc!(.cairo_select_font_face);
|
|
265 mixin ForwardGtkCairoCFunc!(.cairo_set_antialias);
|
|
266 mixin ForwardGtkCairoCFunc!(.cairo_set_dash);
|
|
267 mixin ForwardGtkCairoCFunc!(.cairo_set_fill_rule);
|
|
268 mixin ForwardGtkCairoCFunc!(.cairo_set_font_face);
|
|
269 mixin ForwardGtkCairoCFunc!(.cairo_set_font_matrix);
|
|
270 mixin ForwardGtkCairoCFunc!(.cairo_set_font_options);
|
|
271 mixin ForwardGtkCairoCFunc!(.cairo_set_font_size);
|
|
272 mixin ForwardGtkCairoCFunc!(.cairo_set_line_cap);
|
|
273 mixin ForwardGtkCairoCFunc!(.cairo_set_line_join);
|
|
274 mixin ForwardGtkCairoCFunc!(.cairo_set_line_width);
|
|
275 mixin ForwardGtkCairoCFunc!(.cairo_set_matrix);
|
|
276 mixin ForwardGtkCairoCFunc!(.cairo_set_miter_limit);
|
|
277 mixin ForwardGtkCairoCFunc!(.cairo_set_operator);
|
|
278 mixin ForwardGtkCairoCFunc!(.cairo_set_source);
|
|
279 mixin ForwardGtkCairoCFunc!(.cairo_set_source_rgb);
|
|
280 mixin ForwardGtkCairoCFunc!(.cairo_set_source_rgba);
|
|
281 mixin ForwardGtkCairoCFunc!(.cairo_set_source_surface);
|
|
282 mixin ForwardGtkCairoCFunc!(.cairo_set_tolerance);
|
|
283 mixin ForwardGtkCairoCFunc!(.cairo_show_glyphs);
|
|
284 mixin ForwardGtkCairoCFunc!(.cairo_show_page);
|
|
285 mixin ForwardGtkCairoCFunc!(.cairo_show_text);
|
|
286 mixin ForwardGtkCairoCFunc!(.cairo_status);
|
|
287 mixin ForwardGtkCairoCFunc!(.cairo_status_to_string);
|
|
288 mixin ForwardGtkCairoCFunc!(.cairo_stroke);
|
|
289 mixin ForwardGtkCairoCFunc!(.cairo_stroke_extents);
|
|
290 mixin ForwardGtkCairoCFunc!(.cairo_stroke_preserve);
|
|
291 mixin ForwardGtkCairoCFunc!(.cairo_surface_create_similar);
|
|
292 mixin ForwardGtkCairoCFunc!(.cairo_surface_destroy);
|
|
293 mixin ForwardGtkCairoCFunc!(.cairo_surface_finish);
|
|
294 mixin ForwardGtkCairoCFunc!(.cairo_surface_get_type);
|
|
295 mixin ForwardGtkCairoCFunc!(.cairo_surface_get_user_data);
|
|
296 mixin ForwardGtkCairoCFunc!(.cairo_surface_reference);
|
|
297 mixin ForwardGtkCairoCFunc!(.cairo_surface_set_device_offset);
|
|
298 mixin ForwardGtkCairoCFunc!(.cairo_surface_set_fallback_resolution);
|
|
299 mixin ForwardGtkCairoCFunc!(.cairo_surface_set_user_data);
|
|
300 mixin ForwardGtkCairoCFunc!(.cairo_text_extents);
|
|
301 mixin ForwardGtkCairoCFunc!(.cairo_text_path);
|
|
302 mixin ForwardGtkCairoCFunc!(.cairo_transform);
|
|
303 mixin ForwardGtkCairoCFunc!(.cairo_translate);
|
|
304 mixin ForwardGtkCairoCFunc!(.cairo_user_to_device);
|
|
305 mixin ForwardGtkCairoCFunc!(.cairo_user_to_device_distance);
|
|
306 mixin ForwardGtkCairoCFunc!(.cairo_version);
|
|
307 mixin ForwardGtkCairoCFunc!(.cairo_xlib_surface_create);
|
|
308 /++/
|
|
309 mixin ForwardGtkCairoCFunc!(.cairo_xlib_surface_create_for_bitmap);
|
|
310 mixin ForwardGtkCairoCFunc!(.cairo_xlib_surface_set_size);
|
|
311 /++/
|
|
312 }
|