1 unit LazCairo1;
2
3 (* cairo - a vector graphics library with display and print output
4 *
5 * Copyright © 2002 University of Southern California
6 * Copyright © 2005 Red Hat, Inc.
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it either under the terms of the GNU Lesser General Public
10 * License version 2.1 as published by the Free Software Foundation
11 * (the "LGPL") or, at your option, under the terms of the Mozilla
12 * Public License Version 1.1 (the "MPL"). If you do not alter this
13 * notice, a recipient may use your version of this file under either
14 * the MPL or the LGPL.
15 *
16 * You should have received a copy of the LGPL along with this library
17 * in the file COPYING-LGPL-2.1; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
19 * 02110-1335, USA
20 * You should have received a copy of the MPL along with this library
21 * in the file COPYING-MPL-1.1
22 *
23 * The contents of this file are subject to the Mozilla Public License
24 * Version 1.1 (the "License"); you may not use this file except in
25 * compliance with the License. You may obtain a copy of the License at
26 * http://www.mozilla.org/MPL/
27 *
28 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
29 * OF ANY KIND, either express or implied. See the LGPL or the MPL for
30 * the specific language governing rights and limitations.
31 *
32 * The Original Code is the cairo graphics library.
33 *
34 * The Initial Developer of the Original Code is University of Southern
35 * California.
36 *
37 * Contributor(s):
38 * Carl D. Worth <cworth@cworth.org>
39
40 * This FreePascal binding generated August 26, 2005
41 * by Jeffrey Pohlmeyer <yetanothergeek@yahoo.com>
42
43 - Updated to cairo version 1.4
44 - Grouped OS specific fuctions in separated units
45 - Organized the functions by group and ordered exactly as the c header
46 - Cleared parameter list syntax according to pascal standard
47
48 By Luiz Am�rico Pereira C�mara
49 October 2007
50 *)
51
52 {$mode ObjFpc}
53
54 interface
55
56 Uses
57 CTypes;
58
59 const
60 {$ifdef win32}
61 LIB_CAIRO = 'libcairo-2.dll';
62 {$IFDEF FPC}
63 {$ifndef NO_SMART_LINK}
64 {$smartlink on}
65 {$endif}
66 {$ENDIF}
67 {$else}
68 {$ifdef darwin}
69 LIB_CAIRO = 'cairo';
70 {$linklib cairo}
71 {$else}
72 {$ifdef UseCustomLibs}
73 LIB_CAIRO = '';
74 {$else}
75 LIB_CAIRO = 'libcairo.so.2';
76 {$endif}
77 {$endif}
78 {$endif}
79
80 {$IFDEF FPC}
81 {$PACKRECORDS C}
82 {$ENDIF}
83
84 type
85 cairo_status_t = (
86 CAIRO_STATUS_SUCCESS = 0,
87 CAIRO_STATUS_NO_MEMORY,
88 CAIRO_STATUS_INVALID_RESTORE,
89 CAIRO_STATUS_INVALID_POP_GROUP,
90 CAIRO_STATUS_NO_CURRENT_POINT,
91 CAIRO_STATUS_INVALID_MATRIX,
92 CAIRO_STATUS_INVALID_STATUS,
93 CAIRO_STATUS_NULL_POINTER,
94 CAIRO_STATUS_INVALID_STRING,
95 CAIRO_STATUS_INVALID_PATH_DATA,
96 CAIRO_STATUS_READ_ERROR,
97 CAIRO_STATUS_WRITE_ERROR,
98 CAIRO_STATUS_SURFACE_FINISHED,
99 CAIRO_STATUS_SURFACE_TYPE_MISMATCH,
100 CAIRO_STATUS_PATTERN_TYPE_MISMATCH,
101 CAIRO_STATUS_INVALID_CONTENT,
102 CAIRO_STATUS_INVALID_FORMAT,
103 CAIRO_STATUS_INVALID_VISUAL,
104 CAIRO_STATUS_FILE_NOT_FOUND,
105 CAIRO_STATUS_INVALID_DASH
106 );
107
108 cairo_operator_t = (
109 CAIRO_OPERATOR_CLEAR,
110 CAIRO_OPERATOR_SOURCE,
111 CAIRO_OPERATOR_OVER,
112 CAIRO_OPERATOR_IN,
113 CAIRO_OPERATOR_OUT,
114 CAIRO_OPERATOR_ATOP,
115 CAIRO_OPERATOR_DEST,
116 CAIRO_OPERATOR_DEST_OVER,
117 CAIRO_OPERATOR_DEST_IN,
118 CAIRO_OPERATOR_DEST_OUT,
119 CAIRO_OPERATOR_DEST_ATOP,
120 CAIRO_OPERATOR_XOR,
121 CAIRO_OPERATOR_ADD,
122 CAIRO_OPERATOR_SATURATE
123 );
124
125 cairo_antialias_t = (
126 CAIRO_ANTIALIAS_DEFAULT,
127 CAIRO_ANTIALIAS_NONE,
128 CAIRO_ANTIALIAS_GRAY,
129 CAIRO_ANTIALIAS_SUBPIXEL
130 );
131
132 cairo_fill_rule_t = (
133 CAIRO_FILL_RULE_WINDING,
134 CAIRO_FILL_RULE_EVEN_ODD
135 );
136
137 cairo_line_cap_t = (
138 CAIRO_LINE_CAP_BUTT,
139 CAIRO_LINE_CAP_ROUND,
140 CAIRO_LINE_CAP_SQUARE
141 );
142
143 cairo_line_join_t = (
144 CAIRO_LINE_JOIN_MITER,
145 CAIRO_LINE_JOIN_ROUND,
146 CAIRO_LINE_JOIN_BEVEL
147 );
148
149 cairo_font_slant_t = (
150 CAIRO_FONT_SLANT_NORMAL,
151 CAIRO_FONT_SLANT_ITALIC,
152 CAIRO_FONT_SLANT_OBLIQUE
153 );
154
155 cairo_font_weight_t = (
156 CAIRO_FONT_WEIGHT_NORMAL,
157 CAIRO_FONT_WEIGHT_BOLD
158 );
159
160 cairo_subpixel_order_t = (
161 CAIRO_SUBPIXEL_ORDER_DEFAULT,
162 CAIRO_SUBPIXEL_ORDER_RGB,
163 CAIRO_SUBPIXEL_ORDER_BGR,
164 CAIRO_SUBPIXEL_ORDER_VRGB,
165 CAIRO_SUBPIXEL_ORDER_VBGR
166 );
167
168 cairo_hint_style_t = (
169 CAIRO_HINT_STYLE_DEFAULT,
170 CAIRO_HINT_STYLE_NONE,
171 CAIRO_HINT_STYLE_SLIGHT,
172 CAIRO_HINT_STYLE_MEDIUM,
173 CAIRO_HINT_STYLE_FULL
174 );
175
176 cairo_hint_metrics_t = (
177 CAIRO_HINT_METRICS_DEFAULT,
178 CAIRO_HINT_METRICS_OFF,
179 CAIRO_HINT_METRICS_ON
180 );
181
182 cairo_path_data_type_t = (
183 CAIRO_PATH_MOVE_TO,
184 CAIRO_PATH_LINE_TO,
185 CAIRO_PATH_CURVE_TO,
186 CAIRO_PATH_CLOSE_PATH
187 );
188
189 cairo_content_t = (
190 CAIRO_CONTENT_COLOR = $1000,
191 CAIRO_CONTENT_ALPHA = $2000,
192 CAIRO_CONTENT_COLOR_ALPHA = $3000
193 );
194
195 Tcairo_content_t = cairo_content_t;
196
197 cairo_format_t = (
198 // CAIRO_FORMAT_INVALID = -1,
199 CAIRO_FORMAT_ARGB32,
200 CAIRO_FORMAT_RGB24,
201 CAIRO_FORMAT_A8,
202 CAIRO_FORMAT_A1
203 // CAIRO_FORMAT_RGB16_565
204 // CAIRO_FORMAT_RGB30
205 );
206
207 cairo_extend_t = (
208 CAIRO_EXTEND_NONE,
209 CAIRO_EXTEND_REPEAT,
210 CAIRO_EXTEND_REFLECT,
211 CAIRO_EXTEND_PAD
212 );
213
214 cairo_filter_t = (
215 CAIRO_FILTER_FAST,
216 CAIRO_FILTER_GOOD,
217 CAIRO_FILTER_BEST,
218 CAIRO_FILTER_NEAREST,
219 CAIRO_FILTER_BILINEAR,
220 CAIRO_FILTER_GAUSSIAN
221 );
222
223 cairo_font_type_t = (
224 CAIRO_FONT_TYPE_TOY,
225 CAIRO_FONT_TYPE_FT,
226 CAIRO_FONT_TYPE_WIN32,
227 CAIRO_FONT_TYPE_ATSUI
228 );
229
230 cairo_pattern_type_t = (
231 CAIRO_PATTERN_TYPE_SOLID,
232 CAIRO_PATTERN_TYPE_SURFACE,
233 CAIRO_PATTERN_TYPE_LINEAR,
234 CAIRO_PATTERN_TYPE_RADIAL,
235 CAIRO_PATTERN_TYPE_MESH,
236 CAIRO_PATTERN_TYPE_RASTER_SOURCE
237 );
238
239 cairo_surface_type_t = (
240 CAIRO_SURFACE_TYPE_IMAGE,
241 CAIRO_SURFACE_TYPE_PDF,
242 CAIRO_SURFACE_TYPE_PS,
243 CAIRO_SURFACE_TYPE_XLIB,
244 CAIRO_SURFACE_TYPE_XCB,
245 CAIRO_SURFACE_TYPE_GLITZ,
246 CAIRO_SURFACE_TYPE_QUARTZ,
247 CAIRO_SURFACE_TYPE_WIN32,
248 CAIRO_SURFACE_TYPE_BEOS,
249 CAIRO_SURFACE_TYPE_DIRECTFB,
250 CAIRO_SURFACE_TYPE_SVG,
251 CAIRO_SURFACE_TYPE_OS2,
252 CAIRO_SURFACE_TYPE_WIN32_PRINTING,
253 CAIRO_SURFACE_TYPE_QUARTZ_IMAGE,
254 CAIRO_SURFACE_TYPE_SCRIPT,
255 CAIRO_SURFACE_TYPE_QT,
256 CAIRO_SURFACE_TYPE_RECORDING,
257 CAIRO_SURFACE_TYPE_VG,
258 CAIRO_SURFACE_TYPE_GL,
259 CAIRO_SURFACE_TYPE_DRM,
260 CAIRO_SURFACE_TYPE_TEE,
261 CAIRO_SURFACE_TYPE_XML,
262 CAIRO_SURFACE_TYPE_SKIA,
263 CAIRO_SURFACE_TYPE_SUBSURFACE,
264 CAIRO_SURFACE_TYPE_COGL
265 );
266
267 cairo_device_type_t = (
268 CAIRO_DEVICE_TYPE_DRM,
269 CAIRO_DEVICE_TYPE_GL,
270 CAIRO_DEVICE_TYPE_SCRIPT,
271 CAIRO_DEVICE_TYPE_XCB,
272 CAIRO_DEVICE_TYPE_XLIB,
273 CAIRO_DEVICE_TYPE_XML,
274 CAIRO_DEVICE_TYPE_COGL,
275 CAIRO_DEVICE_TYPE_WIN32,
276 CAIRO_DEVICE_TYPE_INVALID = -1
277 );
278
279 cairo_svg_version_t = (
280 CAIRO_SVG_VERSION_1_1,
281 CAIRO_SVG_VERSION_1_2
282 );
283
284 cairo_region_overlap_t = (
285 CAIRO_REGION_OVERLAP_IN, // completely inside region
286 CAIRO_REGION_OVERLAP_OUT, // completely outside region
287 CAIRO_REGION_OVERLAP_PART // partly inside region
288 );
289
290 pcairo_svg_version_t = ^cairo_svg_version_t;
291 ppcairo_svg_version_t = pcairo_svg_version_t;
292
293 Pcairo_surface_t = ^cairo_surface_t;
294 PPcairo_surface_t = ^Pcairo_surface_t;
295 Pcairo_t = ^cairo_t;
296 Pcairo_pattern_t = ^cairo_pattern_t;
297 Pcairo_font_options_t = ^cairo_font_options_t;
298 Pcairo_font_face_t = ^cairo_font_face_t;
299 Pcairo_scaled_font_t = ^cairo_scaled_font_t;
300 Pcairo_bool_t = ^cairo_bool_t;
301 cairo_bool_t = LongInt;
302 Pcairo_matrix_t = ^cairo_matrix_t;
303 Pcairo_user_data_key_t = ^cairo_user_data_key_t;
304 Pcairo_glyph_t = ^cairo_glyph_t;
305 Pcairo_text_extents_t = ^cairo_text_extents_t;
306 Pcairo_font_extents_t = ^cairo_font_extents_t;
307 Pcairo_path_data_type_t = ^cairo_path_data_type_t;
308 Pcairo_path_data_t = ^cairo_path_data_t;
309 Pcairo_path_t = ^cairo_path_t;
310 Pcairo_rectangle_t = ^cairo_rectangle_t;
311 Pcairo_rectangle_list_t =^cairo_rectangle_list_t;
312
313 cairo_destroy_func_t = procedure (data: Pointer); cdecl;
314 cairo_write_func_t = function (closure: Pointer; data: PByte; length: LongWord): cairo_status_t; cdecl;
315 cairo_read_func_t = function (closure: Pointer; data: PByte; length: LongWord): cairo_status_t; cdecl;
316
317 cairo_t = record {OPAQUE} end;
318 cairo_surface_t = record {OPAQUE} end;
319 cairo_pattern_t = record {OPAQUE} end;
320 cairo_scaled_font_t = record {OPAQUE} end;
321 cairo_font_face_t = record {OPAQUE} end;
322 cairo_font_options_t = record {OPAQUE} end;
323
324 cairo_matrix_t = record
325 xx : Double;
326 yx : Double;
327 xy : Double;
328 yy : Double;
329 x0 : Double;
330 y0 : Double;
331 end;
332
333 cairo_user_data_key_t = record
334 unused : LongInt;
335 end;
336
337 cairo_glyph_t = record
338 index : LongWord;
339 x : Double;
340 y : Double;
341 end;
342
343 cairo_text_extents_t = record
344 x_bearing : Double;
345 y_bearing : Double;
346 width : Double;
347 height : Double;
348 x_advance : Double;
349 y_advance : Double;
350 end;
351
352 cairo_font_extents_t = record
353 ascent : Double;
354 descent : Double;
355 height : Double;
356 max_x_advance : Double;
357 max_y_advance : Double;
358 end;
359
360 cairo_path_data_t = record
361 case LongInt of
362 0 : ( header : record
363 _type : cairo_path_data_type_t;
364 length : LongInt;
365 end );
366 1 : ( point : record
367 x : Double;
368 y : Double;
369 end );
370 end;
371
372 cairo_path_t = record
373 status : cairo_status_t;
374 data : Pcairo_path_data_t;
375 num_data : LongInt;
376 end;
377
378 cairo_rectangle_t = record
379 x, y, width, height: Double;
380 end;
381
382 PPcairo_pattern_t = ^Pcairo_pattern_t;
383
384 PPcairo_region_t = ^Pcairo_region_t;
385 Pcairo_region_t = ^Tcairo_region_t;
386 Tcairo_region_t = record {OPAQUE} end;
387 Pcairo_device_t = ^Tcairo_device_t;
388 Tcairo_device_t = record {OPAQUE} end;
389
390 PPcairo_rectangle_int_t = ^Pcairo_rectangle_int_t;
391 Pcairo_rectangle_int_t = ^Tcairo_rectangle_int_t;
392
393 Tcairo_rectangle_int_t = record
394 x, y, width, height: cint;
395 end;
396
397 cairo_rectangle_list_t = record
398 status: cairo_status_t;
399 rectangles: Pcairo_rectangle_t;
400 num_rectangles: LongInt;
401 end;
402
cairo_versionnull403 function cairo_version: LongInt; cdecl; external LIB_CAIRO;
cairo_version_stringnull404 function cairo_version_string: PChar; cdecl; external LIB_CAIRO;
tonull405 //Helper function to retrieve decoded version
406 procedure cairo_version(out major, minor, micro: LongInt);
407
408 (* Functions for manipulating state objects *)
409
cairo_createnull410 function cairo_create(target: Pcairo_surface_t): Pcairo_t; cdecl; external LIB_CAIRO;
cairo_referencenull411 function cairo_reference(cr: Pcairo_t): Pcairo_t; cdecl; external LIB_CAIRO;
412 procedure cairo_destroy(cr: Pcairo_t); cdecl; external LIB_CAIRO;
cairo_get_reference_countnull413 function cairo_get_reference_count(cr: Pcairo_t): LongWord; cdecl; external LIB_CAIRO;
cairo_get_user_datanull414 function cairo_get_user_data(cr: Pcairo_t; key: Pcairo_user_data_key_t): pointer; cdecl; external LIB_CAIRO;
cairo_set_user_datanull415 function cairo_set_user_data(cr: PCairo_t; key: Pcairo_user_data_key_t; user_data: Pointer; destroy: cairo_destroy_func_t): cairo_status_t; cdecl; external LIB_CAIRO;
416 procedure cairo_save(cr: Pcairo_t); cdecl; external LIB_CAIRO;
417 procedure cairo_restore(cr: Pcairo_t); cdecl; external LIB_CAIRO;
418 procedure cairo_push_group (cr: PCairo_t); cdecl; external LIB_CAIRO;
419 procedure cairo_push_group_with_content (cr: PCairo_t; content: cairo_content_t); cdecl; external LIB_CAIRO;
cairo_pop_groupnull420 function cairo_pop_group (cr: PCairo_t): Pcairo_pattern_t; cdecl; external LIB_CAIRO;
421 procedure cairo_pop_group_to_source (cr: PCairo_t); cdecl; external LIB_CAIRO;
422
423 (* Modify state *)
424
425 procedure cairo_set_operator(cr: Pcairo_t; op: cairo_operator_t); cdecl; external LIB_CAIRO;
426 procedure cairo_set_source(cr: Pcairo_t; source: Pcairo_pattern_t); cdecl; external LIB_CAIRO;
427 procedure cairo_set_source_rgb(cr: Pcairo_t; red, green, blue: Double); cdecl; external LIB_CAIRO;
428 procedure cairo_set_source_rgba(cr: Pcairo_t; red, green, blue, alpha: Double); cdecl; external LIB_CAIRO;
429 procedure cairo_set_source_surface(cr: Pcairo_t; surface: Pcairo_surface_t; x, y: Double); cdecl; external LIB_CAIRO;
430 procedure cairo_set_tolerance(cr: Pcairo_t; tolerance: Double); cdecl; external LIB_CAIRO;
431 procedure cairo_set_antialias(cr: Pcairo_t; antialias: cairo_antialias_t); cdecl; external LIB_CAIRO;
432 procedure cairo_set_fill_rule(cr: Pcairo_t; fill_rule: cairo_fill_rule_t); cdecl; external LIB_CAIRO;
433 procedure cairo_set_line_width(cr: Pcairo_t; width: Double); cdecl; external LIB_CAIRO;
434 procedure cairo_set_line_cap(cr: Pcairo_t; line_cap: cairo_line_cap_t); cdecl; external LIB_CAIRO;
435 procedure cairo_set_line_join(cr: Pcairo_t; line_join: cairo_line_join_t); cdecl; external LIB_CAIRO;
436 procedure cairo_set_dash(cr: Pcairo_t; dashes: PDouble; num_dashes: LongInt; offset: Double); cdecl; external LIB_CAIRO;
437 procedure cairo_set_miter_limit(cr: Pcairo_t; limit: Double); cdecl; external LIB_CAIRO;
438 procedure cairo_translate(cr: Pcairo_t; tx, ty: Double); cdecl; external LIB_CAIRO;
439 procedure cairo_scale(cr: Pcairo_t; sx, sy: Double); cdecl; external LIB_CAIRO;
440 procedure cairo_rotate(cr: Pcairo_t; angle: Double); cdecl; external LIB_CAIRO;
441 procedure cairo_transform(cr: Pcairo_t; matrix: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
442 procedure cairo_set_matrix(cr: Pcairo_t; matrix: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
443 procedure cairo_identity_matrix(cr: Pcairo_t); cdecl; external LIB_CAIRO;
444 procedure cairo_user_to_device(cr: Pcairo_t; x, y: PDouble); cdecl; external LIB_CAIRO;
445 procedure cairo_user_to_device_distance(cr: Pcairo_t; dx, dy: PDouble); cdecl; external LIB_CAIRO;
446 procedure cairo_device_to_user(cr: Pcairo_t; x, y: PDouble); cdecl; external LIB_CAIRO;
447 procedure cairo_device_to_user_distance(cr: Pcairo_t; dx, dy: PDouble); cdecl; external LIB_CAIRO;
448
449 (* Path creation functions *)
450
451 procedure cairo_new_path(cr: Pcairo_t); cdecl; external LIB_CAIRO;
452 procedure cairo_move_to(cr: Pcairo_t; x, y: Double); cdecl; external LIB_CAIRO;
453 procedure cairo_new_sub_path(cr: Pcairo_t); cdecl; external LIB_CAIRO;
454 procedure cairo_line_to(cr: Pcairo_t; x, y: Double); cdecl; external LIB_CAIRO;
455 procedure cairo_curve_to(cr: Pcairo_t; x1, y1, x2, y2, x3, y3: Double); cdecl; external LIB_CAIRO;
456 procedure cairo_arc(cr: Pcairo_t; xc, yc, radius, angle1, angle2: Double); cdecl; external LIB_CAIRO;
457 procedure cairo_arc_negative(cr: Pcairo_t; xc, yc, radius, angle1, angle2: Double); cdecl; external LIB_CAIRO;
458 procedure cairo_rel_move_to(cr: Pcairo_t; dx, dy: Double); cdecl; external LIB_CAIRO;
459 procedure cairo_rel_line_to(cr: Pcairo_t; dx, dy: Double); cdecl; external LIB_CAIRO;
460 procedure cairo_rel_curve_to(cr: Pcairo_t; dx1, dy1, dx2, dy2, dx3, dy3: Double); cdecl; external LIB_CAIRO;
461 procedure cairo_rectangle(cr: Pcairo_t; x, y, width, height: Double); cdecl; external LIB_CAIRO;
462 procedure cairo_close_path(cr: Pcairo_t); cdecl; external LIB_CAIRO;
463
464 (* Painting functions *)
465
466 procedure cairo_paint(cr: Pcairo_t); cdecl; external LIB_CAIRO;
467 procedure cairo_paint_with_alpha(cr: Pcairo_t; alpha: Double); cdecl; external LIB_CAIRO;
468 procedure cairo_mask(cr: Pcairo_t; pattern: Pcairo_pattern_t); cdecl; external LIB_CAIRO;
469 procedure cairo_mask_surface(cr: Pcairo_t; surface: Pcairo_surface_t; surface_x, surface_y: Double); cdecl; external LIB_CAIRO;
470 procedure cairo_stroke(cr: Pcairo_t); cdecl; external LIB_CAIRO;
471 procedure cairo_stroke_preserve(cr: Pcairo_t); cdecl; external LIB_CAIRO;
472 procedure cairo_fill(cr: Pcairo_t); cdecl; external LIB_CAIRO;
473 procedure cairo_fill_preserve(cr: Pcairo_t); cdecl; external LIB_CAIRO;
474 procedure cairo_copy_page(cr: Pcairo_t); cdecl; external LIB_CAIRO;
475 procedure cairo_show_page(cr: Pcairo_t); cdecl; external LIB_CAIRO;
476
477 (* Insideness testing *)
478
cairo_in_strokenull479 function cairo_in_stroke(cr: Pcairo_t; x, y: Double): cairo_bool_t; cdecl; external LIB_CAIRO;
cairo_in_fillnull480 function cairo_in_fill(cr: Pcairo_t; x, y: Double): cairo_bool_t; cdecl; external LIB_CAIRO;
481
482 (* Rectangular extents *)
483
484 procedure cairo_stroke_extents(cr: Pcairo_t; x1, y1, x2, y2: PDouble); cdecl; external LIB_CAIRO;
485 procedure cairo_fill_extents(cr: Pcairo_t; x1, y1, x2, y2: PDouble); cdecl; external LIB_CAIRO;
486
487 (* Clipping *)
488
489 procedure cairo_reset_clip(cr: Pcairo_t); cdecl; external LIB_CAIRO;
490 procedure cairo_clip(cr: Pcairo_t); cdecl; external LIB_CAIRO;
491 procedure cairo_clip_preserve(cr: Pcairo_t); cdecl; external LIB_CAIRO;
492 procedure cairo_clip_extents(cr: Pcairo_t; x1, y1, x2, y2: PDouble); cdecl; external LIB_CAIRO;
cairo_copy_clip_rectangle_listnull493 function cairo_copy_clip_rectangle_list(cr: Pcairo_t): Pcairo_rectangle_list_t; cdecl; external LIB_CAIRO;
494 procedure cairo_rectangle_list_destroy(rectangle_list: Pcairo_rectangle_list_t); cdecl; external LIB_CAIRO;
495
496 (* Font/Text functions *)
497
cairo_font_options_createnull498 function cairo_font_options_create: Pcairo_font_options_t; cdecl; external LIB_CAIRO;
cairo_font_options_copynull499 function cairo_font_options_copy(original: Pcairo_font_options_t): Pcairo_font_options_t; cdecl; external LIB_CAIRO;
500 procedure cairo_font_options_destroy(options: Pcairo_font_options_t); cdecl; external LIB_CAIRO;
cairo_font_options_statusnull501 function cairo_font_options_status(options: Pcairo_font_options_t): cairo_status_t; cdecl; external LIB_CAIRO;
502 procedure cairo_font_options_merge(options, other: Pcairo_font_options_t); cdecl; external LIB_CAIRO;
cairo_font_options_equalnull503 function cairo_font_options_equal(options, other: Pcairo_font_options_t): cairo_bool_t; cdecl; external LIB_CAIRO;
cairo_font_options_hashnull504 function cairo_font_options_hash(options: Pcairo_font_options_t): LongWord; cdecl; external LIB_CAIRO;
505 procedure cairo_font_options_set_antialias(options: Pcairo_font_options_t; antialias: cairo_antialias_t); cdecl; external LIB_CAIRO;
cairo_font_options_get_antialiasnull506 function cairo_font_options_get_antialias(options: Pcairo_font_options_t): cairo_antialias_t; cdecl; external LIB_CAIRO;
507 procedure cairo_font_options_set_subpixel_order(options: Pcairo_font_options_t; subpixel_order: cairo_subpixel_order_t); cdecl; external LIB_CAIRO;
cairo_font_options_get_subpixel_ordernull508 function cairo_font_options_get_subpixel_order(options: Pcairo_font_options_t): cairo_subpixel_order_t; cdecl; external LIB_CAIRO;
509 procedure cairo_font_options_set_hint_style(options: Pcairo_font_options_t; hint_style: cairo_hint_style_t); cdecl; external LIB_CAIRO;
cairo_font_options_get_hint_stylenull510 function cairo_font_options_get_hint_style(options: Pcairo_font_options_t): cairo_hint_style_t; cdecl; external LIB_CAIRO;
511 procedure cairo_font_options_set_hint_metrics(options: Pcairo_font_options_t; hint_metrics: cairo_hint_metrics_t); cdecl; external LIB_CAIRO;
cairo_font_options_get_hint_metricsnull512 function cairo_font_options_get_hint_metrics(options: Pcairo_font_options_t): cairo_hint_metrics_t; cdecl; external LIB_CAIRO;
513
514 (* This interface is for dealing with text as text, not caring about the
515 font object inside the the cairo_t. *)
516
517 procedure cairo_select_font_face(cr: Pcairo_t; family: Pchar; slant: cairo_font_slant_t; weight: cairo_font_weight_t); cdecl; external LIB_CAIRO;
518 procedure cairo_set_font_size(cr: Pcairo_t; size: Double); cdecl; external LIB_CAIRO;
519 procedure cairo_set_font_matrix(cr: Pcairo_t; matrix: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
520 procedure cairo_get_font_matrix(cr: Pcairo_t; matrix: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
521 procedure cairo_set_font_options(cr: Pcairo_t; options: Pcairo_font_options_t); cdecl; external LIB_CAIRO;
522 procedure cairo_get_font_options(cr: Pcairo_t; options: Pcairo_font_options_t); cdecl; external LIB_CAIRO;
523 procedure cairo_set_font_face(cr: Pcairo_t; font_face: Pcairo_font_face_t); cdecl; external LIB_CAIRO;
cairo_get_font_facenull524 function cairo_get_font_face(cr: Pcairo_t): Pcairo_font_face_t; cdecl; external LIB_CAIRO;
525 procedure cairo_set_scaled_font(cr: PCairo_t; scaled_font:Pcairo_scaled_font_t); cdecl; external LIB_CAIRO;
cairo_get_scaled_fontnull526 function cairo_get_scaled_font(cr: Pcairo_t): Pcairo_scaled_font_t; cdecl; external LIB_CAIRO;
527 procedure cairo_show_text(cr: Pcairo_t; utf8: Pchar); cdecl; external LIB_CAIRO;
528 procedure cairo_show_glyphs(cr: Pcairo_t; glyphs: Pcairo_glyph_t; num_glyphs: LongInt); cdecl; external LIB_CAIRO;
529 procedure cairo_text_path(cr: Pcairo_t; utf8: Pchar); cdecl; external LIB_CAIRO;
530 procedure cairo_glyph_path(cr: Pcairo_t; glyphs: Pcairo_glyph_t; num_glyphs: LongInt); cdecl; external LIB_CAIRO;
531 procedure cairo_text_extents(cr: Pcairo_t; utf8: Pchar; extents: Pcairo_text_extents_t); cdecl; external LIB_CAIRO;
532 procedure cairo_glyph_extents(cr: Pcairo_t; glyphs: Pcairo_glyph_t; num_glyphs: LongInt; extents: Pcairo_text_extents_t); cdecl; external LIB_CAIRO;
533 procedure cairo_font_extents(cr: Pcairo_t; extents: Pcairo_font_extents_t); cdecl; external LIB_CAIRO;
534
535 (* Generic identifier for a font style *)
536
cairo_font_face_referencenull537 function cairo_font_face_reference(font_face: Pcairo_font_face_t): Pcairo_font_face_t; cdecl; external LIB_CAIRO;
538 procedure cairo_font_face_destroy(font_face: Pcairo_font_face_t); cdecl; external LIB_CAIRO;
cairo_font_face_get_reference_countnull539 function cairo_font_face_get_reference_count (font_face: Pcairo_font_face_t): LongWord; cdecl; external LIB_CAIRO;
cairo_font_face_statusnull540 function cairo_font_face_status(font_face: Pcairo_font_face_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_font_face_get_typenull541 function cairo_font_face_get_type(font_face: Pcairo_font_face_t): cairo_font_type_t; cdecl; external LIB_CAIRO;
cairo_font_face_get_user_datanull542 function cairo_font_face_get_user_data(font_face: Pcairo_font_face_t; key: Pcairo_user_data_key_t): pointer; cdecl; external LIB_CAIRO;
cairo_font_face_set_user_datanull543 function cairo_font_face_set_user_data(font_face: Pcairo_font_face_t; key: Pcairo_user_data_key_t; user_data: pointer; destroy: cairo_destroy_func_t): cairo_status_t; cdecl; external LIB_CAIRO;
544
545 (* Portable interface to general font features *)
546
cairo_scaled_font_createnull547 function cairo_scaled_font_create(font_face: Pcairo_font_face_t; font_matrix: Pcairo_matrix_t; ctm: Pcairo_matrix_t; options: Pcairo_font_options_t): Pcairo_scaled_font_t; cdecl; external LIB_CAIRO;
cairo_scaled_font_referencenull548 function cairo_scaled_font_reference(scaled_font: Pcairo_scaled_font_t): Pcairo_scaled_font_t; cdecl; external LIB_CAIRO;
549 procedure cairo_scaled_font_destroy(scaled_font: Pcairo_scaled_font_t); cdecl; external LIB_CAIRO;
cairo_scaled_font_get_reference_countnull550 function cairo_scaled_font_get_reference_count (scaled_font: Pcairo_scaled_font_t): LongWord; cdecl; external LIB_CAIRO;
cairo_scaled_font_statusnull551 function cairo_scaled_font_status(scaled_font: Pcairo_scaled_font_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_scaled_font_get_typenull552 function cairo_scaled_font_get_type(scaled_font: Pcairo_scaled_font_t): cairo_font_type_t; cdecl; external LIB_CAIRO;
cairo_scaled_font_get_user_datanull553 function cairo_scaled_font_get_user_data (scaled_font: Pcairo_scaled_font_t; key: Pcairo_user_data_key_t): Pointer; cdecl; external LIB_CAIRO;
cairo_scaled_font_set_user_datanull554 function cairo_scaled_font_set_user_data (scaled_font: Pcairo_scaled_font_t; key: Pcairo_user_data_key_t; user_data: Pointer; destroy: cairo_destroy_func_t): cairo_status_t; cdecl; external LIB_CAIRO;
555 procedure cairo_scaled_font_extents(scaled_font: Pcairo_scaled_font_t; extents: Pcairo_font_extents_t); cdecl; external LIB_CAIRO;
556 procedure cairo_scaled_font_text_extents(scaled_font: Pcairo_scaled_font_t; utf8: PChar; extents: Pcairo_text_extents_t); cdecl; external LIB_CAIRO;
557 procedure cairo_scaled_font_glyph_extents(scaled_font: Pcairo_scaled_font_t; glyphs: Pcairo_glyph_t; num_glyphs: LongInt; extents: Pcairo_text_extents_t); cdecl; external LIB_CAIRO;
cairo_scaled_font_get_font_facenull558 function cairo_scaled_font_get_font_face (scaled_font: Pcairo_scaled_font_t): Pcairo_font_face_t; cdecl; external LIB_CAIRO;
559 procedure cairo_scaled_font_get_font_matrix (scaled_font: Pcairo_scaled_font_t; font_matrix: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
560 procedure cairo_scaled_font_get_ctm (scaled_font: Pcairo_scaled_font_t; ctm: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
561 procedure cairo_scaled_font_get_font_options (scaled_font: Pcairo_scaled_font_t; options: Pcairo_font_options_t); cdecl; external LIB_CAIRO;
562
563 (* Query functions *)
564
cairo_get_operatornull565 function cairo_get_operator(cr: Pcairo_t): cairo_operator_t; cdecl; external LIB_CAIRO;
cairo_get_sourcenull566 function cairo_get_source(cr: Pcairo_t): Pcairo_pattern_t; cdecl; external LIB_CAIRO;
cairo_get_tolerancenull567 function cairo_get_tolerance(cr: Pcairo_t): Double; cdecl; external LIB_CAIRO;
cairo_get_antialiasnull568 function cairo_get_antialias(cr: Pcairo_t): cairo_antialias_t; cdecl; external LIB_CAIRO;
569 procedure cairo_get_current_point(cr: Pcairo_t; x, y: PDouble); cdecl; external LIB_CAIRO;
cairo_get_fill_rulenull570 function cairo_get_fill_rule(cr: Pcairo_t): cairo_fill_rule_t; cdecl; external LIB_CAIRO;
cairo_get_line_widthnull571 function cairo_get_line_width(cr: Pcairo_t): Double; cdecl; external LIB_CAIRO;
cairo_get_line_capnull572 function cairo_get_line_cap(cr: Pcairo_t): cairo_line_cap_t; cdecl; external LIB_CAIRO;
cairo_get_line_joinnull573 function cairo_get_line_join(cr: Pcairo_t): cairo_line_join_t; cdecl; external LIB_CAIRO;
cairo_get_miter_limitnull574 function cairo_get_miter_limit(cr: Pcairo_t): Double; cdecl; external LIB_CAIRO;
cairo_get_dash_countnull575 function cairo_get_dash_count(cr: Pcairo_t): LongInt; cdecl; external LIB_CAIRO;
576 procedure cairo_get_dash(cr: Pcairo_t; dashes, offset: PDouble); cdecl; external LIB_CAIRO;
577 procedure cairo_get_matrix(cr: Pcairo_t; matrix: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
cairo_get_targetnull578 function cairo_get_target(cr: Pcairo_t): Pcairo_surface_t; cdecl; external LIB_CAIRO;
cairo_get_group_targetnull579 function cairo_get_group_target(cr: Pcairo_t): Pcairo_surface_t; cdecl; external LIB_CAIRO;
580
cairo_copy_pathnull581 function cairo_copy_path(cr: Pcairo_t): Pcairo_path_t; cdecl; external LIB_CAIRO;
cairo_copy_path_flatnull582 function cairo_copy_path_flat(cr: Pcairo_t): Pcairo_path_t; cdecl; external LIB_CAIRO;
583 procedure cairo_append_path(cr: Pcairo_t; path: Pcairo_path_t); cdecl; external LIB_CAIRO;
584 procedure cairo_path_destroy(path: Pcairo_path_t); cdecl; external LIB_CAIRO;
585
586 (* Error status queries *)
587
cairo_statusnull588 function cairo_status(cr: Pcairo_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_status_to_stringnull589 function cairo_status_to_string(status: cairo_status_t): Pchar; cdecl; external LIB_CAIRO;
590
591 (* Surface manipulation *)
592
cairo_surface_create_similarnull593 function cairo_surface_create_similar(other: Pcairo_surface_t; content: cairo_content_t; width, height: LongInt): Pcairo_surface_t; cdecl; external LIB_CAIRO;
cairo_surface_create_for_rectanglenull594 function cairo_surface_create_for_rectangle(other: Pcairo_surface_t; x, y, width, height: double): Pcairo_surface_t; cdecl; external LIB_CAIRO;
cairo_surface_referencenull595 function cairo_surface_reference(surface: Pcairo_surface_t): Pcairo_surface_t; cdecl; external LIB_CAIRO;
596 procedure cairo_surface_finish(surface: Pcairo_surface_t); cdecl; external LIB_CAIRO;
597 procedure cairo_surface_destroy(surface: Pcairo_surface_t); cdecl; external LIB_CAIRO;
cairo_surface_get_reference_countnull598 function cairo_surface_get_reference_count(surface: Pcairo_surface_t): LongWord; cdecl; external LIB_CAIRO;
cairo_surface_statusnull599 function cairo_surface_status(surface: Pcairo_surface_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_surface_get_typenull600 function cairo_surface_get_type(surface: Pcairo_surface_t): cairo_surface_type_t; cdecl; external LIB_CAIRO;
cairo_surface_get_contentnull601 function cairo_surface_get_content(surface: Pcairo_surface_t): cairo_content_t; cdecl; external LIB_CAIRO;
cairo_surface_write_to_pngnull602 function cairo_surface_write_to_png(surface: Pcairo_surface_t; filename: Pchar): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_surface_write_to_png_streamnull603 function cairo_surface_write_to_png_stream(surface: Pcairo_surface_t; write_func: cairo_write_func_t; closure: pointer): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_surface_get_user_datanull604 function cairo_surface_get_user_data(surface: Pcairo_surface_t; key: Pcairo_user_data_key_t): pointer; cdecl; external LIB_CAIRO;
cairo_surface_set_user_datanull605 function cairo_surface_set_user_data(surface: Pcairo_surface_t; key: Pcairo_user_data_key_t; user_data: pointer; destroy: cairo_destroy_func_t): cairo_status_t; cdecl; external LIB_CAIRO;
606 procedure cairo_surface_get_font_options(surface: Pcairo_surface_t; options: Pcairo_font_options_t); cdecl; external LIB_CAIRO;
607 procedure cairo_surface_flush(surface: Pcairo_surface_t); cdecl; external LIB_CAIRO;
608 procedure cairo_surface_mark_dirty(surface: Pcairo_surface_t); cdecl; external LIB_CAIRO;
609 procedure cairo_surface_mark_dirty_rectangle(surface: Pcairo_surface_t; x, y, width, height: LongInt); cdecl; external LIB_CAIRO;
610 procedure cairo_surface_set_device_offset(surface: Pcairo_surface_t; x_offset, y_offset: Double); cdecl; external LIB_CAIRO;
611 procedure cairo_surface_get_device_offset(surface: Pcairo_surface_t; x_offset, y_offset: PDouble); cdecl; external LIB_CAIRO;
612 procedure cairo_surface_set_fallback_resolution(surface: Pcairo_surface_t; x_pixels_per_inch, y_pixels_per_inch: Double); cdecl; external LIB_CAIRO;
cairo_surface_get_devicenull613 function cairo_surface_get_device(surface: Pcairo_surface_t): Pcairo_device_t; cdecl; external LIB_CAIRO;
614
615 {* cairo device *}
cairo_device_get_typenull616 function cairo_device_get_type(device: PCairo_device_t): cairo_device_type_t; cdecl; external LIB_CAIRO;
617
618 (* Image-surface functions *)
619
cairo_format_stride_for_widthnull620 function cairo_format_stride_for_width(format: cairo_format_t; width : LongInt): LongInt; cdecl; external LIB_CAIRO;
cairo_image_surface_createnull621 function cairo_image_surface_create(format: cairo_format_t; width, height: LongInt): Pcairo_surface_t; cdecl; external LIB_CAIRO;
cairo_image_surface_create_for_datanull622 function cairo_image_surface_create_for_data(data: Pbyte; format: cairo_format_t; width, height, stride: LongInt): Pcairo_surface_t; cdecl; external LIB_CAIRO;
cairo_image_surface_get_datanull623 function cairo_image_surface_get_data(surface: Pcairo_surface_t): PChar; cdecl; external LIB_CAIRO;
cairo_image_surface_get_formatnull624 function cairo_image_surface_get_format(surface: Pcairo_surface_t): cairo_format_t; cdecl; external LIB_CAIRO;
cairo_image_surface_get_widthnull625 function cairo_image_surface_get_width(surface: Pcairo_surface_t): LongInt; cdecl; external LIB_CAIRO;
cairo_image_surface_get_heightnull626 function cairo_image_surface_get_height(surface: Pcairo_surface_t): LongInt; cdecl; external LIB_CAIRO;
cairo_image_surface_get_stridenull627 function cairo_image_surface_get_stride(surface: Pcairo_surface_t): LongInt; cdecl; external LIB_CAIRO;
cairo_image_surface_create_from_pngnull628 function cairo_image_surface_create_from_png(filename: Pchar): Pcairo_surface_t; cdecl; external LIB_CAIRO;
cairo_image_surface_create_from_png_streamnull629 function cairo_image_surface_create_from_png_stream(read_func: cairo_read_func_t; closure: pointer): Pcairo_surface_t; cdecl; external LIB_CAIRO;
630
631 (* Pattern creation functions *)
632
cairo_pattern_create_rgbnull633 function cairo_pattern_create_rgb(red, green, blue: Double): Pcairo_pattern_t; cdecl; external LIB_CAIRO;
cairo_pattern_create_rgbanull634 function cairo_pattern_create_rgba(red, green, blue, alpha: Double): Pcairo_pattern_t; cdecl; external LIB_CAIRO;
cairo_pattern_create_for_surfacenull635 function cairo_pattern_create_for_surface(surface: Pcairo_surface_t): Pcairo_pattern_t; cdecl; external LIB_CAIRO;
cairo_pattern_create_linearnull636 function cairo_pattern_create_linear(x0, y0, x1, y1: Double): Pcairo_pattern_t; cdecl; external LIB_CAIRO;
cairo_pattern_create_radialnull637 function cairo_pattern_create_radial(cx0, cy0, radius0, cx1, cy1, radius1: Double): Pcairo_pattern_t; cdecl; external LIB_CAIRO;
cairo_pattern_referencenull638 function cairo_pattern_reference(pattern: Pcairo_pattern_t): Pcairo_pattern_t; cdecl; external LIB_CAIRO;
639 procedure cairo_pattern_destroy(pattern: Pcairo_pattern_t); cdecl; external LIB_CAIRO;
cairo_pattern_get_reference_countnull640 function cairo_pattern_get_reference_count (pattern: Pcairo_pattern_t): LongWord; cdecl; external LIB_CAIRO;
cairo_pattern_statusnull641 function cairo_pattern_status(pattern: Pcairo_pattern_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_pattern_get_user_datanull642 function cairo_pattern_get_user_data (pattern: Pcairo_pattern_t; key: Pcairo_user_data_key_t): Pointer; cdecl; external LIB_CAIRO;
cairo_pattern_set_user_datanull643 function cairo_pattern_set_user_data (pattern: Pcairo_pattern_t; key: Pcairo_user_data_key_t; user_data: Pointer; destroy: cairo_destroy_func_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_pattern_get_typenull644 function cairo_pattern_get_type(pattern: Pcairo_pattern_t): cairo_pattern_type_t; cdecl; external LIB_CAIRO;
645 procedure cairo_pattern_add_color_stop_rgb(pattern: Pcairo_pattern_t; offset, red, green, blue: Double); cdecl; external LIB_CAIRO;
646 procedure cairo_pattern_add_color_stop_rgba(pattern: Pcairo_pattern_t; offset, red, green, blue, alpha: Double); cdecl; external LIB_CAIRO;
647 procedure cairo_pattern_set_matrix(pattern: Pcairo_pattern_t; matrix: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
648 procedure cairo_pattern_get_matrix(pattern: Pcairo_pattern_t; matrix: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
649 procedure cairo_pattern_set_extend(pattern: Pcairo_pattern_t; extend: cairo_extend_t); cdecl; external LIB_CAIRO;
cairo_pattern_get_extendnull650 function cairo_pattern_get_extend(pattern: Pcairo_pattern_t): cairo_extend_t; cdecl; external LIB_CAIRO;
651 procedure cairo_pattern_set_filter(pattern: Pcairo_pattern_t; filter: cairo_filter_t); cdecl; external LIB_CAIRO;
cairo_pattern_get_filternull652 function cairo_pattern_get_filter(pattern: Pcairo_pattern_t): cairo_filter_t; cdecl; external LIB_CAIRO;
cairo_pattern_get_rgbanull653 function cairo_pattern_get_rgba (pattern: Pcairo_pattern_t; red, green, blue, alpha: PDouble): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_pattern_get_surfacenull654 function cairo_pattern_get_surface (pattern: Pcairo_pattern_t; surface: PPcairo_surface_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_pattern_get_color_stop_rgbanull655 function cairo_pattern_get_color_stop_rgba(pattern: Pcairo_pattern_t; index: LongInt; offset, red, green, blue, alpha: PDouble):cairo_status_t; cdecl; external LIB_CAIRO;
cairo_pattern_get_color_stop_countnull656 function cairo_pattern_get_color_stop_count(pattern: Pcairo_pattern_t; count: PLongInt):cairo_status_t; cdecl; external LIB_CAIRO;
cairo_pattern_get_linear_pointsnull657 function cairo_pattern_get_linear_points (pattern: Pcairo_pattern_t; x0, y0, x1, y1: PDouble): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_pattern_get_radial_circlesnull658 function cairo_pattern_get_radial_circles (pattern: Pcairo_pattern_t; x0, y0, r0, x1, y1, r1:PDouble): cairo_status_t; cdecl; external LIB_CAIRO;
659
660 (* Matrix functions *)
661
662 procedure cairo_matrix_init(matrix: Pcairo_matrix_t; xx, yx, xy, yy, x0, y0: Double); cdecl; external LIB_CAIRO;
663 procedure cairo_matrix_init_identity(matrix: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
664 procedure cairo_matrix_init_translate(matrix: Pcairo_matrix_t; tx, ty: Double); cdecl; external LIB_CAIRO;
665 procedure cairo_matrix_init_scale(matrix: Pcairo_matrix_t; sx, sy: Double); cdecl; external LIB_CAIRO;
666 procedure cairo_matrix_init_rotate(matrix: Pcairo_matrix_t; radians: Double); cdecl; external LIB_CAIRO;
667 procedure cairo_matrix_translate(matrix: Pcairo_matrix_t; tx, ty: Double); cdecl; external LIB_CAIRO;
668 procedure cairo_matrix_scale(matrix: Pcairo_matrix_t; sx, sy: Double); cdecl; external LIB_CAIRO;
669 procedure cairo_matrix_rotate(matrix: Pcairo_matrix_t; radians: Double); cdecl; external LIB_CAIRO;
cairo_matrix_invertnull670 function cairo_matrix_invert(matrix: Pcairo_matrix_t): cairo_status_t; cdecl; external LIB_CAIRO;
671 procedure cairo_matrix_multiply(result, a, b: Pcairo_matrix_t); cdecl; external LIB_CAIRO;
672 procedure cairo_matrix_transform_distance(matrix: Pcairo_matrix_t; dx, dy: PDouble); cdecl; external LIB_CAIRO;
673 procedure cairo_matrix_transform_point(matrix: Pcairo_matrix_t; x, y: PDouble); cdecl; external LIB_CAIRO;
674
675 (* PDF functions *)
676
cairo_pdf_surface_createnull677 function cairo_pdf_surface_create(filename: PChar; width_in_points, height_in_points: Double): Pcairo_surface_t; cdecl; external LIB_CAIRO;
cairo_pdf_surface_create_for_streamnull678 function cairo_pdf_surface_create_for_stream(write_func: cairo_write_func_t; closure: Pointer; width_in_points, height_in_points: Double): Pcairo_surface_t; cdecl; external LIB_CAIRO;
679 procedure cairo_pdf_surface_set_size(surface: Pcairo_surface_t; width_in_points, height_in_points: Double); cdecl; external LIB_CAIRO;
680
681 (* PS functions *)
682
cairo_ps_surface_createnull683 function cairo_ps_surface_create(filename: PChar; width_in_points, height_in_points: Double): Pcairo_surface_t; cdecl; external LIB_CAIRO;
cairo_ps_surface_create_for_streamnull684 function cairo_ps_surface_create_for_stream(write_func: cairo_write_func_t; closure: Pointer; width_in_points, height_in_points: Double): Pcairo_surface_t; cdecl; external LIB_CAIRO;
685 procedure cairo_ps_surface_set_size(surface: Pcairo_surface_t; width_in_points, height_in_points: Double); cdecl; external LIB_CAIRO;
686 procedure cairo_ps_surface_dsc_comment(surface: Pcairo_surface_t; comment: PChar); cdecl; external LIB_CAIRO;
687 procedure cairo_ps_surface_dsc_begin_setup(surface: Pcairo_surface_t); cdecl; external LIB_CAIRO;
688 procedure cairo_ps_surface_dsc_begin_page_setup(surface: Pcairo_surface_t); cdecl; external LIB_CAIRO;
689
690 (* SVG functions *)
691
cairo_svg_surface_createnull692 function cairo_svg_surface_create(filename: PChar; width_in_points, height_in_points: Double): Pcairo_surface_t; cdecl; external LIB_CAIRO;
cairo_svg_surface_create_for_streamnull693 function cairo_svg_surface_create_for_stream(write_func: cairo_write_func_t; closure: Pointer; width_in_points, height_in_points: Double): Pcairo_surface_t; cdecl; external LIB_CAIRO;
694 procedure cairo_svg_surface_restrict_to_version(surface: Pcairo_surface_t; version: cairo_svg_version_t); cdecl; external LIB_CAIRO;
695
696 procedure cairo_svg_get_versions(versions: ppcairo_svg_version_t;num_versions:pcint);cdecl; external LIB_CAIRO;
cairo_svg_version_to_stringnull697 function cairo_svg_version_to_string(version: cairo_svg_version_t): PChar; cdecl; external LIB_CAIRO;
698
699
700 (* Functions to be used while debugging (not intended for use in production code) *)
701
702 procedure cairo_debug_reset_static_data; cdecl; external LIB_CAIRO;
703
704 (* cairo_region addon *)
705
cairo_region_createnull706 function cairo_region_create: Pcairo_region_t; cdecl; external LIB_CAIRO;
cairo_region_create_rectanglenull707 function cairo_region_create_rectangle(const ARect: Pcairo_rectangle_int_t): Pcairo_region_t; cdecl; external LIB_CAIRO;
cairo_region_create_rectanglesnull708 function cairo_region_create_rectangles(const ARect: PPcairo_rectangle_int_t; ACount: cint): Pcairo_region_t; cdecl; external LIB_CAIRO;
cairo_region_copynull709 function cairo_region_copy(ARegion: Pcairo_region_t): Pcairo_region_t; cdecl; external LIB_CAIRO;
cairo_region_referencenull710 function cairo_region_reference(ARegion: Pcairo_region_t): Pcairo_region_t; cdecl; external LIB_CAIRO;
711 procedure cairo_region_destroy(ARegion: Pcairo_region_t); cdecl; external LIB_CAIRO;
cairo_region_statusnull712 function cairo_region_status(ARegion: Pcairo_region_t): cairo_status_t; cdecl; external LIB_CAIRO;
713 procedure cairo_region_get_extents(ARegion: Pcairo_region_t; AOutRect: Pcairo_rectangle_int_t); cdecl; external LIB_CAIRO;
cairo_region_num_rectanglesnull714 function cairo_region_num_rectangles(ARegion: Pcairo_region_t): cint; cdecl; external LIB_CAIRO;
715 procedure cairo_region_get_rectangle(ARegion: Pcairo_region_t; nth: cint; AOutRect: Pcairo_rectangle_int_t); cdecl; external LIB_CAIRO;
cairo_region_is_emptynull716 function cairo_region_is_empty(ARegion: Pcairo_region_t): boolean; cdecl; external LIB_CAIRO;
cairo_region_contains_pointnull717 function cairo_region_contains_point(ARegion: Pcairo_region_t; x,y: cint): boolean; cdecl; external LIB_CAIRO;
cairo_region_contains_rectanglenull718 function cairo_region_contains_rectangle(ARegion: Pcairo_region_t; ARect: Pcairo_rectangle_int_t): cairo_region_overlap_t; cdecl; external LIB_CAIRO;
719
720 // ops
cairo_region_equalnull721 function cairo_region_equal(ARegion1: Pcairo_region_t; ARegion2: Pcairo_region_t): boolean; cdecl; external LIB_CAIRO;
722 procedure cairo_region_translate(ADestRegion: Pcairo_region_t; dx: integer; dy: integer); cdecl; external LIB_CAIRO;
cairo_region_intersectnull723 function cairo_region_intersect(ADestRegion: Pcairo_region_t; ASrcRegion: Pcairo_region_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_region_intersect_rectanglenull724 function cairo_region_intersect_rectangle(ADestRegion: Pcairo_region_t; ASrcRect: Pcairo_rectangle_int_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_region_subtractnull725 function cairo_region_subtract(ADestRegion: Pcairo_region_t; ASrcRegion: Pcairo_region_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_region_subtract_rectanglenull726 function cairo_region_subtract_rectangle(ADestRegion: Pcairo_region_t; ASrcRect: Pcairo_rectangle_int_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_region_unionnull727 function cairo_region_union(ADestRegion: Pcairo_region_t; ASrcRegion: Pcairo_region_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_region_union_rectanglenull728 function cairo_region_union_rectangle(ADestRegion: Pcairo_region_t; ASrcRect: Pcairo_rectangle_int_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_region_xornull729 function cairo_region_xor(ADestRegion: Pcairo_region_t; ASrcRegion: Pcairo_region_t): cairo_status_t; cdecl; external LIB_CAIRO;
cairo_region_xor_rectanglenull730 function cairo_region_xor_rectangle(ADestRegion: Pcairo_region_t; ASrcRect: Pcairo_rectangle_int_t): cairo_status_t; cdecl; external LIB_CAIRO;
731
732
733 implementation
734
735 procedure cairo_version(out major, minor, micro: LongInt);
736 var
737 version: LongInt;
738 begin
739 version := cairo_version;
740 major := version div 10000;
741 minor := (version mod (major * 10000)) div 100;
742 micro := (version mod ((major * 10000) + (minor * 100)));
743 end;
744
745 end.
746