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