]> gitweb.factorcode.org Git - factor.git/blob - basis/cairo/ffi/ffi.factor
49975afc6128388c17ecb00f18964f113728ff2c
[factor.git] / basis / cairo / ffi / ffi.factor
1 ! Copyright (c) 2007 Sampo Vuori
2 ! Copyright (c) 2008 Matthew Willis
3 !
4 ! Adapted from cairo.h, version 1.5.14
5 ! License: http://factorcode.org/license.txt
6
7 USING: system combinators alien alien.syntax alien.c-types
8 alien.destructors kernel accessors sequences arrays ui.gadgets
9 alien.libraries classes.struct ;
10
11 IN: cairo.ffi
12 << {
13     { [ os winnt? ] [ "cairo" "libcairo-2.dll" "cdecl" add-library ] }
14     { [ os macosx? ] [ "cairo" "/opt/local/lib/libcairo.dylib" "cdecl" add-library ] }
15     { [ os unix? ] [ ] }
16 } cond >>
17
18 LIBRARY: cairo
19
20 FUNCTION: int cairo_version ( ) ;
21 FUNCTION: char* cairo_version_string ( ) ;
22
23 TYPEDEF: int cairo_bool_t
24
25 ! I am leaving these and other void* types as opaque structures
26 TYPEDEF: void* cairo_t
27 TYPEDEF: void* cairo_surface_t
28
29 STRUCT: cairo_matrix_t
30     { xx double }
31     { yx double }
32     { xy double }
33     { yy double }
34     { x0 double }
35     { y0 double } ;
36
37 TYPEDEF: void* cairo_pattern_t
38
39 TYPEDEF: void* cairo_destroy_func_t
40 : cairo-destroy-func ( quot -- callback )
41     [ void { pointer: void } "cdecl" ] dip alien-callback ; inline
42
43 ! See cairo.h for details
44 STRUCT: cairo_user_data_key_t
45     { unused int } ;
46
47 TYPEDEF: int cairo_status_t
48 C-ENUM:
49     CAIRO_STATUS_SUCCESS
50     CAIRO_STATUS_NO_MEMORY
51     CAIRO_STATUS_INVALID_RESTORE
52     CAIRO_STATUS_INVALID_POP_GROUP
53     CAIRO_STATUS_NO_CURRENT_POINT
54     CAIRO_STATUS_INVALID_MATRIX
55     CAIRO_STATUS_INVALID_STATUS
56     CAIRO_STATUS_NULL_POINTER
57     CAIRO_STATUS_INVALID_STRING
58     CAIRO_STATUS_INVALID_PATH_DATA
59     CAIRO_STATUS_READ_ERROR
60     CAIRO_STATUS_WRITE_ERROR
61     CAIRO_STATUS_SURFACE_FINISHED
62     CAIRO_STATUS_SURFACE_TYPE_MISMATCH
63     CAIRO_STATUS_PATTERN_TYPE_MISMATCH
64     CAIRO_STATUS_INVALID_CONTENT
65     CAIRO_STATUS_INVALID_FORMAT
66     CAIRO_STATUS_INVALID_VISUAL
67     CAIRO_STATUS_FILE_NOT_FOUND
68     CAIRO_STATUS_INVALID_DASH
69     CAIRO_STATUS_INVALID_DSC_COMMENT
70     CAIRO_STATUS_INVALID_INDEX
71     CAIRO_STATUS_CLIP_NOT_REPRESENTABLE
72     CAIRO_STATUS_TEMP_FILE_ERROR
73     CAIRO_STATUS_INVALID_STRIDE ;
74
75 TYPEDEF: int cairo_content_t
76 CONSTANT: CAIRO_CONTENT_COLOR HEX: 1000
77 CONSTANT: CAIRO_CONTENT_ALPHA HEX: 2000
78 CONSTANT: CAIRO_CONTENT_COLOR_ALPHA HEX: 3000
79
80 TYPEDEF: void* cairo_write_func_t
81 : cairo-write-func ( quot -- callback )
82     [ cairo_status_t { pointer: void pointer: uchar int } "cdecl" ] dip alien-callback ; inline
83                           
84 TYPEDEF: void* cairo_read_func_t
85 : cairo-read-func ( quot -- callback )
86     [ cairo_status_t { pointer: void pointer: uchar int } "cdecl" ] dip alien-callback ; inline
87
88 ! Functions for manipulating state objects
89 FUNCTION: cairo_t*
90 cairo_create ( cairo_surface_t* target ) ;
91
92 FUNCTION: cairo_t*
93 cairo_reference ( cairo_t* cr ) ;
94
95 FUNCTION: void
96 cairo_destroy ( cairo_t* cr ) ;
97
98 DESTRUCTOR: cairo_destroy
99
100 FUNCTION: uint
101 cairo_get_reference_count ( cairo_t* cr ) ;
102
103 FUNCTION: void*
104 cairo_get_user_data ( cairo_t* cr, cairo_user_data_key_t* key ) ;
105
106 FUNCTION: cairo_status_t
107 cairo_set_user_data ( cairo_t* cr, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ;
108
109 FUNCTION: void
110 cairo_save ( cairo_t* cr ) ;
111
112 FUNCTION: void
113 cairo_restore ( cairo_t* cr ) ;
114
115 FUNCTION: void
116 cairo_push_group ( cairo_t* cr ) ;
117
118 FUNCTION: void
119 cairo_push_group_with_content  ( cairo_t* cr, cairo_content_t content ) ;
120
121 FUNCTION: cairo_pattern_t*
122 cairo_pop_group ( cairo_t* cr ) ;
123
124 FUNCTION: void
125 cairo_pop_group_to_source ( cairo_t* cr ) ;
126
127 ! Modify state
128 TYPEDEF: int cairo_operator_t
129 C-ENUM:
130     CAIRO_OPERATOR_CLEAR
131
132     CAIRO_OPERATOR_SOURCE
133     CAIRO_OPERATOR_OVER
134     CAIRO_OPERATOR_IN
135     CAIRO_OPERATOR_OUT
136     CAIRO_OPERATOR_ATOP
137
138     CAIRO_OPERATOR_DEST
139     CAIRO_OPERATOR_DEST_OVER
140     CAIRO_OPERATOR_DEST_IN
141     CAIRO_OPERATOR_DEST_OUT
142     CAIRO_OPERATOR_DEST_ATOP
143
144     CAIRO_OPERATOR_XOR
145     CAIRO_OPERATOR_ADD
146     CAIRO_OPERATOR_SATURATE ;
147
148 FUNCTION: void
149 cairo_set_operator ( cairo_t* cr, cairo_operator_t op ) ;
150
151 FUNCTION: void
152 cairo_set_source ( cairo_t* cr, cairo_pattern_t* source ) ;
153
154 FUNCTION: void
155 cairo_set_source_rgb ( cairo_t* cr, double red, double green, double blue ) ;
156
157 FUNCTION: void
158 cairo_set_source_rgba ( cairo_t* cr, double red, double green, double blue, double alpha ) ;
159
160 FUNCTION: void
161 cairo_set_source_surface ( cairo_t* cr, cairo_surface_t* surface, double x, double y ) ;
162
163 FUNCTION: void
164 cairo_set_tolerance ( cairo_t* cr, double tolerance ) ;
165
166 TYPEDEF: int cairo_antialias_t
167 C-ENUM:
168     CAIRO_ANTIALIAS_DEFAULT
169     CAIRO_ANTIALIAS_NONE
170     CAIRO_ANTIALIAS_GRAY
171     CAIRO_ANTIALIAS_SUBPIXEL ;
172
173 FUNCTION: void
174 cairo_set_antialias ( cairo_t* cr, cairo_antialias_t antialias ) ;
175
176 TYPEDEF: int cairo_fill_rule_t
177 C-ENUM:
178     CAIRO_FILL_RULE_WINDING
179     CAIRO_FILL_RULE_EVEN_ODD ;
180
181 FUNCTION: void
182 cairo_set_fill_rule ( cairo_t* cr, cairo_fill_rule_t fill_rule ) ;
183
184 FUNCTION: void
185 cairo_set_line_width ( cairo_t* cr, double width ) ;
186
187 TYPEDEF: int cairo_line_cap_t
188 C-ENUM:
189     CAIRO_LINE_CAP_BUTT
190     CAIRO_LINE_CAP_ROUND
191     CAIRO_LINE_CAP_SQUARE ;
192
193 FUNCTION: void
194 cairo_set_line_cap ( cairo_t* cr, cairo_line_cap_t line_cap ) ;
195
196 TYPEDEF: int cairo_line_join_t
197 C-ENUM:
198     CAIRO_LINE_JOIN_MITER
199     CAIRO_LINE_JOIN_ROUND
200     CAIRO_LINE_JOIN_BEVEL ;
201
202 FUNCTION: void
203 cairo_set_line_join ( cairo_t* cr, cairo_line_join_t line_join ) ;
204
205 FUNCTION: void
206 cairo_set_dash ( cairo_t* cr, double* dashes, int num_dashes, double offset ) ;
207
208 FUNCTION: void
209 cairo_set_miter_limit ( cairo_t* cr, double limit ) ;
210
211 FUNCTION: void
212 cairo_translate ( cairo_t* cr, double tx, double ty ) ;
213
214 FUNCTION: void
215 cairo_scale ( cairo_t* cr, double sx, double sy ) ;
216
217 FUNCTION: void
218 cairo_rotate ( cairo_t* cr, double angle ) ;
219
220 FUNCTION: void
221 cairo_transform ( cairo_t* cr, cairo_matrix_t* matrix ) ;
222
223 FUNCTION: void
224 cairo_set_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ;
225
226 FUNCTION: void
227 cairo_identity_matrix ( cairo_t* cr ) ;
228
229 FUNCTION: void
230 cairo_user_to_device ( cairo_t* cr, double* x, double* y ) ;
231
232 FUNCTION: void
233 cairo_user_to_device_distance ( cairo_t* cr, double* dx, double* dy ) ;
234
235 FUNCTION: void
236 cairo_device_to_user ( cairo_t* cr, double* x, double* y ) ;
237
238 FUNCTION: void
239 cairo_device_to_user_distance ( cairo_t* cr, double* dx, double* dy ) ;
240
241 ! Path creation functions
242 FUNCTION: void
243 cairo_new_path ( cairo_t* cr ) ;
244
245 FUNCTION: void
246 cairo_move_to ( cairo_t* cr, double x, double y ) ;
247
248 FUNCTION: void
249 cairo_new_sub_path ( cairo_t* cr ) ;
250
251 FUNCTION: void
252 cairo_line_to ( cairo_t* cr, double x, double y ) ;
253
254 FUNCTION: void
255 cairo_curve_to ( cairo_t* cr, double x1, double y1, double x2, double y2, double x3, double y3 ) ;
256
257 FUNCTION: void
258 cairo_arc ( cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2 ) ;
259
260 FUNCTION: void
261 cairo_arc_negative ( cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2 ) ;
262
263 FUNCTION: void
264 cairo_rel_move_to ( cairo_t* cr, double dx, double dy ) ;
265
266 FUNCTION: void
267 cairo_rel_line_to ( cairo_t* cr, double dx, double dy ) ;
268
269 FUNCTION: void
270 cairo_rel_curve_to ( cairo_t* cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3 ) ;
271
272 FUNCTION: void
273 cairo_rectangle ( cairo_t* cr, double x, double y, double width, double height ) ;
274
275 FUNCTION: void
276 cairo_close_path ( cairo_t* cr ) ;
277
278 FUNCTION: void
279 cairo_path_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ;
280
281 ! Painting functions
282 FUNCTION: void
283 cairo_paint ( cairo_t* cr ) ;
284
285 FUNCTION: void
286 cairo_paint_with_alpha ( cairo_t* cr, double alpha ) ;
287
288 FUNCTION: void
289 cairo_mask ( cairo_t* cr, cairo_pattern_t* pattern ) ;
290
291 FUNCTION: void
292 cairo_mask_surface ( cairo_t* cr, cairo_surface_t* surface, double surface_x, double surface_y ) ;
293
294 FUNCTION: void
295 cairo_stroke ( cairo_t* cr ) ;
296
297 FUNCTION: void
298 cairo_stroke_preserve ( cairo_t* cr ) ;
299
300 FUNCTION: void
301 cairo_fill ( cairo_t* cr ) ;
302
303 FUNCTION: void
304 cairo_fill_preserve ( cairo_t* cr ) ;
305
306 FUNCTION: void
307 cairo_copy_page ( cairo_t* cr ) ;
308
309 FUNCTION: void
310 cairo_show_page ( cairo_t* cr ) ;
311
312 ! Insideness testing
313 FUNCTION: cairo_bool_t
314 cairo_in_stroke ( cairo_t* cr, double x, double y ) ;
315
316 FUNCTION: cairo_bool_t
317 cairo_in_fill ( cairo_t* cr, double x, double y ) ;
318
319 ! Rectangular extents
320 FUNCTION: void
321 cairo_stroke_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ;
322
323 FUNCTION: void
324 cairo_fill_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ;
325
326 ! Clipping
327 FUNCTION: void
328 cairo_reset_clip ( cairo_t* cr ) ;
329
330 FUNCTION: void
331 cairo_clip ( cairo_t* cr ) ;
332
333 FUNCTION: void
334 cairo_clip_preserve ( cairo_t* cr ) ;
335
336 FUNCTION: void
337 cairo_clip_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ;
338
339 STRUCT: cairo_rectangle_t
340     { x      double }
341     { y      double }
342     { width  double }
343     { height double } ;
344     
345 STRUCT: cairo_rectangle_list_t
346     { status         cairo_status_t     }
347     { rectangles     cairo_rectangle_t* }
348     { num_rectangles int                } ;
349
350 FUNCTION: cairo_rectangle_list_t*
351 cairo_copy_clip_rectangle_list ( cairo_t* cr ) ;
352
353 FUNCTION: void
354 cairo_rectangle_list_destroy ( cairo_rectangle_list_t* rectangle_list ) ;
355
356 ! Font/Text functions
357
358 TYPEDEF: void* cairo_scaled_font_t
359
360 TYPEDEF: void* cairo_font_face_t
361
362 STRUCT: cairo_glyph_t
363   { index ulong     }
364   { x     double    }
365   { y     double    } ;
366
367 STRUCT: cairo_text_extents_t
368     { x_bearing double }
369     { y_bearing double }
370     { width     double }
371     { height    double }
372     { x_advance double }
373     { y_advance double } ;
374
375 STRUCT: cairo_font_extents_t
376     { ascent double }
377     { descent double }
378     { height double }
379     { max_x_advance double }
380     { max_y_advance double } ;
381
382 TYPEDEF: int cairo_font_slant_t
383 C-ENUM:
384     CAIRO_FONT_SLANT_NORMAL
385     CAIRO_FONT_SLANT_ITALIC
386     CAIRO_FONT_SLANT_OBLIQUE ;
387
388 TYPEDEF: int cairo_font_weight_t
389 C-ENUM:
390     CAIRO_FONT_WEIGHT_NORMAL
391     CAIRO_FONT_WEIGHT_BOLD ;
392
393 TYPEDEF: int cairo_subpixel_order_t
394 C-ENUM:
395     CAIRO_SUBPIXEL_ORDER_DEFAULT
396     CAIRO_SUBPIXEL_ORDER_RGB
397     CAIRO_SUBPIXEL_ORDER_BGR
398     CAIRO_SUBPIXEL_ORDER_VRGB
399     CAIRO_SUBPIXEL_ORDER_VBGR ;
400
401 TYPEDEF: int cairo_hint_style_t
402 C-ENUM:
403     CAIRO_HINT_STYLE_DEFAULT
404     CAIRO_HINT_STYLE_NONE
405     CAIRO_HINT_STYLE_SLIGHT
406     CAIRO_HINT_STYLE_MEDIUM
407     CAIRO_HINT_STYLE_FULL ;
408
409 TYPEDEF: int cairo_hint_metrics_t
410 C-ENUM:
411     CAIRO_HINT_METRICS_DEFAULT
412     CAIRO_HINT_METRICS_OFF
413     CAIRO_HINT_METRICS_ON ;
414
415 TYPEDEF: void* cairo_font_options_t
416
417 FUNCTION: cairo_font_options_t*
418 cairo_font_options_create ( ) ;
419
420 FUNCTION: cairo_font_options_t*
421 cairo_font_options_copy ( cairo_font_options_t* original ) ;
422
423 FUNCTION: void
424 cairo_font_options_destroy ( cairo_font_options_t* options ) ;
425
426 FUNCTION: cairo_status_t
427 cairo_font_options_status ( cairo_font_options_t* options ) ;
428
429 FUNCTION: void
430 cairo_font_options_merge ( cairo_font_options_t* options, cairo_font_options_t* other ) ;
431
432 FUNCTION: cairo_bool_t
433 cairo_font_options_equal ( cairo_font_options_t* options, cairo_font_options_t* other ) ;
434
435 FUNCTION: ulong
436 cairo_font_options_hash ( cairo_font_options_t* options ) ;
437
438 FUNCTION: void
439 cairo_font_options_set_antialias ( cairo_font_options_t* options, cairo_antialias_t antialias ) ;
440
441 FUNCTION: cairo_antialias_t
442 cairo_font_options_get_antialias ( cairo_font_options_t* options ) ;
443
444 FUNCTION: void
445 cairo_font_options_set_subpixel_order ( cairo_font_options_t* options, cairo_subpixel_order_t subpixel_order ) ;
446
447 FUNCTION: cairo_subpixel_order_t
448 cairo_font_options_get_subpixel_order ( cairo_font_options_t* options ) ;
449
450 FUNCTION: void
451 cairo_font_options_set_hint_style ( cairo_font_options_t* options, cairo_hint_style_t hint_style ) ;
452
453 FUNCTION: cairo_hint_style_t
454 cairo_font_options_get_hint_style ( cairo_font_options_t* options ) ;
455
456 FUNCTION: void
457 cairo_font_options_set_hint_metrics ( cairo_font_options_t* options, cairo_hint_metrics_t hint_metrics ) ;
458
459 FUNCTION: cairo_hint_metrics_t
460 cairo_font_options_get_hint_metrics ( cairo_font_options_t* options ) ;
461
462 ! This interface is for dealing with text as text, not caring about the
463 !  font object inside the the cairo_t.
464
465 FUNCTION: void
466 cairo_select_font_face ( cairo_t* cr, char* family, cairo_font_slant_t slant, cairo_font_weight_t weight ) ;
467
468 FUNCTION: void
469 cairo_set_font_size ( cairo_t* cr, double size ) ;
470
471 FUNCTION: void
472 cairo_set_font_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ;
473
474 FUNCTION: void
475 cairo_get_font_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ;
476
477 FUNCTION: void
478 cairo_set_font_options ( cairo_t* cr, cairo_font_options_t* options ) ;
479
480 FUNCTION: void
481 cairo_get_font_options ( cairo_t* cr, cairo_font_options_t* options ) ;
482
483 FUNCTION: void
484 cairo_set_font_face ( cairo_t* cr, cairo_font_face_t* font_face ) ;
485
486 FUNCTION: cairo_font_face_t*
487 cairo_get_font_face ( cairo_t* cr ) ;
488
489 FUNCTION: void
490 cairo_set_scaled_font ( cairo_t* cr, cairo_scaled_font_t* scaled_font ) ;
491
492 FUNCTION: cairo_scaled_font_t*
493 cairo_get_scaled_font ( cairo_t* cr ) ;
494
495 FUNCTION: void
496 cairo_show_text ( cairo_t* cr, char* utf8 ) ;
497
498 FUNCTION: void
499 cairo_show_glyphs ( cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs ) ;
500
501 FUNCTION: void
502 cairo_text_path  ( cairo_t* cr, char* utf8 ) ;
503
504 FUNCTION: void
505 cairo_glyph_path ( cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs ) ;
506
507 FUNCTION: void
508 cairo_text_extents ( cairo_t* cr, char* utf8, cairo_text_extents_t* extents ) ;
509
510 FUNCTION: void
511 cairo_glyph_extents ( cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs, cairo_text_extents_t* extents ) ;
512
513 FUNCTION: void
514 cairo_font_extents ( cairo_t* cr, cairo_font_extents_t* extents ) ;
515
516 ! Generic identifier for a font style
517
518 FUNCTION: cairo_font_face_t*
519 cairo_font_face_reference ( cairo_font_face_t* font_face ) ;
520
521 FUNCTION: void
522 cairo_font_face_destroy ( cairo_font_face_t* font_face ) ;
523
524 FUNCTION: uint
525 cairo_font_face_get_reference_count ( cairo_font_face_t* font_face ) ;
526
527 FUNCTION: cairo_status_t
528 cairo_font_face_status ( cairo_font_face_t* font_face ) ;
529
530 TYPEDEF: int cairo_font_type_t
531 C-ENUM:
532     CAIRO_FONT_TYPE_TOY
533     CAIRO_FONT_TYPE_FT
534     CAIRO_FONT_TYPE_WIN32
535     CAIRO_FONT_TYPE_QUARTZ ;
536
537 FUNCTION: cairo_font_type_t
538 cairo_font_face_get_type ( cairo_font_face_t* font_face ) ;
539
540 FUNCTION: void* 
541 cairo_font_face_get_user_data ( cairo_font_face_t* font_face, cairo_user_data_key_t* key ) ;
542
543 FUNCTION: cairo_status_t
544 cairo_font_face_set_user_data ( cairo_font_face_t* font_face, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ;
545
546 ! Portable interface to general font features.
547
548 FUNCTION: cairo_scaled_font_t*
549 cairo_scaled_font_create ( cairo_font_face_t* font_face, cairo_matrix_t* font_matrix, cairo_matrix_t* ctm, cairo_font_options_t* options ) ;
550
551 FUNCTION: cairo_scaled_font_t*
552 cairo_scaled_font_reference ( cairo_scaled_font_t* scaled_font ) ;
553
554 FUNCTION: void
555 cairo_scaled_font_destroy ( cairo_scaled_font_t* scaled_font ) ;
556
557 FUNCTION: uint
558 cairo_scaled_font_get_reference_count ( cairo_scaled_font_t* scaled_font ) ;
559
560 FUNCTION: cairo_status_t
561 cairo_scaled_font_status ( cairo_scaled_font_t* scaled_font ) ;
562
563 FUNCTION: cairo_font_type_t
564 cairo_scaled_font_get_type ( cairo_scaled_font_t* scaled_font ) ;
565
566 FUNCTION: void* 
567 cairo_scaled_font_get_user_data ( cairo_scaled_font_t* scaled_font, cairo_user_data_key_t* key ) ;
568
569 FUNCTION: cairo_status_t
570 cairo_scaled_font_set_user_data ( cairo_scaled_font_t* scaled_font, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ;
571
572 FUNCTION: void
573 cairo_scaled_font_extents ( cairo_scaled_font_t* scaled_font, cairo_font_extents_t* extents ) ;
574
575 FUNCTION: void
576 cairo_scaled_font_text_extents ( cairo_scaled_font_t* scaled_font, char* utf8, cairo_text_extents_t* extents ) ;
577
578 FUNCTION: void
579 cairo_scaled_font_glyph_extents ( cairo_scaled_font_t* scaled_font, cairo_glyph_t* glyphs, int num_glyphs, cairo_text_extents_t* extents ) ;
580
581 FUNCTION: cairo_font_face_t*
582 cairo_scaled_font_get_font_face ( cairo_scaled_font_t* scaled_font ) ;
583
584 FUNCTION: void
585 cairo_scaled_font_get_font_matrix ( cairo_scaled_font_t* scaled_font, cairo_matrix_t* font_matrix ) ;
586
587 FUNCTION: void
588 cairo_scaled_font_get_ctm ( cairo_scaled_font_t* scaled_font, cairo_matrix_t* ctm ) ;
589
590 FUNCTION: void
591 cairo_scaled_font_get_font_options ( cairo_scaled_font_t* scaled_font, cairo_font_options_t* options ) ;
592
593 ! Query functions
594
595 FUNCTION: cairo_operator_t
596 cairo_get_operator ( cairo_t* cr ) ;
597
598 FUNCTION: cairo_pattern_t*
599 cairo_get_source ( cairo_t* cr ) ;
600
601 FUNCTION: double
602 cairo_get_tolerance ( cairo_t* cr ) ;
603
604 FUNCTION: cairo_antialias_t
605 cairo_get_antialias ( cairo_t* cr ) ;
606
607 FUNCTION: cairo_bool_t
608 cairo_has_current_point ( cairo_t* cr ) ;
609
610 FUNCTION: void
611 cairo_get_current_point ( cairo_t* cr, double* x, double* y ) ;
612
613 FUNCTION: cairo_fill_rule_t
614 cairo_get_fill_rule ( cairo_t* cr ) ;
615
616 FUNCTION: double
617 cairo_get_line_width ( cairo_t* cr ) ;
618
619 FUNCTION: cairo_line_cap_t
620 cairo_get_line_cap ( cairo_t* cr ) ;
621
622 FUNCTION: cairo_line_join_t
623 cairo_get_line_join ( cairo_t* cr ) ;
624
625 FUNCTION: double
626 cairo_get_miter_limit ( cairo_t* cr ) ;
627
628 FUNCTION: int
629 cairo_get_dash_count ( cairo_t* cr ) ;
630
631 FUNCTION: void
632 cairo_get_dash ( cairo_t* cr, double* dashes, double* offset ) ;
633
634 FUNCTION: void
635 cairo_get_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ;
636
637 FUNCTION: cairo_surface_t*
638 cairo_get_target ( cairo_t* cr ) ;
639
640 FUNCTION: cairo_surface_t*
641 cairo_get_group_target ( cairo_t* cr ) ;
642
643 TYPEDEF: int cairo_path_data_type_t
644 C-ENUM:
645     CAIRO_PATH_MOVE_TO
646     CAIRO_PATH_LINE_TO
647     CAIRO_PATH_CURVE_TO
648     CAIRO_PATH_CLOSE_PATH ;
649
650 ! NEED TO DO UNION HERE
651 STRUCT: cairo_path_data_t-point
652     { x double }
653     { y double } ;
654
655 STRUCT: cairo_path_data_t-header
656     { type cairo_path_data_type_t }
657     { length int } ;
658
659 UNION-STRUCT: cairo_path_data_t 
660     { point  cairo_path_data_t-point }
661     { header cairo_path_data_t-header } ;
662
663 STRUCT: cairo_path_t
664     { status   cairo_status_t      }
665     { data     cairo_path_data_t*  }
666     { num_data int                 } ;
667
668 FUNCTION: cairo_path_t*
669 cairo_copy_path ( cairo_t* cr ) ;
670
671 FUNCTION: cairo_path_t*
672 cairo_copy_path_flat ( cairo_t* cr ) ;
673
674 FUNCTION: void
675 cairo_append_path ( cairo_t* cr, cairo_path_t* path ) ;
676
677 FUNCTION: void
678 cairo_path_destroy ( cairo_path_t* path ) ;
679
680 ! Error status queries
681
682 FUNCTION: cairo_status_t
683 cairo_status ( cairo_t* cr ) ;
684
685 FUNCTION: char* 
686 cairo_status_to_string ( cairo_status_t status ) ;
687
688 ! Surface manipulation
689
690 FUNCTION: cairo_surface_t*
691 cairo_surface_create_similar ( cairo_surface_t* other, cairo_content_t content, int width, int height ) ;
692
693 FUNCTION: cairo_surface_t*
694 cairo_surface_reference ( cairo_surface_t* surface ) ;
695
696 FUNCTION: void
697 cairo_surface_finish ( cairo_surface_t* surface ) ;
698
699 FUNCTION: void
700 cairo_surface_destroy ( cairo_surface_t* surface ) ;
701
702 DESTRUCTOR: cairo_surface_destroy
703
704 FUNCTION: uint
705 cairo_surface_get_reference_count ( cairo_surface_t* surface ) ;
706
707 FUNCTION: cairo_status_t
708 cairo_surface_status ( cairo_surface_t* surface ) ;
709
710 TYPEDEF: int cairo_surface_type_t
711 C-ENUM:
712     CAIRO_SURFACE_TYPE_IMAGE
713     CAIRO_SURFACE_TYPE_PDF
714     CAIRO_SURFACE_TYPE_PS
715     CAIRO_SURFACE_TYPE_XLIB
716     CAIRO_SURFACE_TYPE_XCB
717     CAIRO_SURFACE_TYPE_GLITZ
718     CAIRO_SURFACE_TYPE_QUARTZ
719     CAIRO_SURFACE_TYPE_WIN32
720     CAIRO_SURFACE_TYPE_BEOS
721     CAIRO_SURFACE_TYPE_DIRECTFB
722     CAIRO_SURFACE_TYPE_SVG
723     CAIRO_SURFACE_TYPE_OS2
724     CAIRO_SURFACE_TYPE_WIN32_PRINTING
725     CAIRO_SURFACE_TYPE_QUARTZ_IMAGE ;
726
727 FUNCTION: cairo_surface_type_t
728 cairo_surface_get_type ( cairo_surface_t* surface ) ;
729
730 FUNCTION: cairo_content_t
731 cairo_surface_get_content ( cairo_surface_t* surface ) ;
732
733 FUNCTION: cairo_status_t
734 cairo_surface_write_to_png ( cairo_surface_t* surface, char* filename ) ;
735
736 FUNCTION: cairo_status_t
737 cairo_surface_write_to_png_stream ( cairo_surface_t* surface, cairo_write_func_t write_func, void* closure ) ;
738
739 FUNCTION: void* 
740 cairo_surface_get_user_data ( cairo_surface_t* surface, cairo_user_data_key_t* key ) ;
741
742 FUNCTION: cairo_status_t
743 cairo_surface_set_user_data ( cairo_surface_t* surface, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ;
744
745 FUNCTION: void
746 cairo_surface_get_font_options ( cairo_surface_t* surface, cairo_font_options_t* options ) ;
747
748 FUNCTION: void
749 cairo_surface_flush ( cairo_surface_t* surface ) ;
750
751 FUNCTION: void
752 cairo_surface_mark_dirty ( cairo_surface_t* surface ) ;
753
754 FUNCTION: void
755 cairo_surface_mark_dirty_rectangle ( cairo_surface_t* surface, int x, int y, int width, int height ) ;
756
757 FUNCTION: void
758 cairo_surface_set_device_offset ( cairo_surface_t* surface, double x_offset, double y_offset ) ;
759
760 FUNCTION: void
761 cairo_surface_get_device_offset ( cairo_surface_t* surface, double* x_offset, double* y_offset ) ;
762
763 FUNCTION: void
764 cairo_surface_set_fallback_resolution ( cairo_surface_t* surface, double x_pixels_per_inch, double y_pixels_per_inch ) ;
765
766 FUNCTION: void
767 cairo_surface_copy_page ( cairo_surface_t* surface ) ;
768
769 FUNCTION: void
770 cairo_surface_show_page ( cairo_surface_t* surface ) ;
771
772 ! Image-surface functions
773
774 TYPEDEF: int cairo_format_t
775 C-ENUM:
776     CAIRO_FORMAT_ARGB32
777     CAIRO_FORMAT_RGB24
778     CAIRO_FORMAT_A8
779     CAIRO_FORMAT_A1
780     CAIRO_FORMAT_RGB16_565 ;
781
782 FUNCTION: cairo_surface_t*
783 cairo_image_surface_create ( cairo_format_t format, int width, int height ) ;
784
785 FUNCTION: int
786 cairo_format_stride_for_width ( cairo_format_t format, int width ) ;
787
788 FUNCTION: cairo_surface_t*
789 cairo_image_surface_create_for_data ( uchar* data, cairo_format_t format, int width, int height, int stride ) ;
790
791 FUNCTION: uchar*
792 cairo_image_surface_get_data ( cairo_surface_t* surface ) ;
793
794 FUNCTION: cairo_format_t
795 cairo_image_surface_get_format ( cairo_surface_t* surface ) ;
796
797 FUNCTION: int
798 cairo_image_surface_get_width ( cairo_surface_t* surface ) ;
799
800 FUNCTION: int
801 cairo_image_surface_get_height ( cairo_surface_t* surface ) ;
802
803 FUNCTION: int
804 cairo_image_surface_get_stride ( cairo_surface_t* surface ) ;
805
806 FUNCTION: cairo_surface_t*
807 cairo_image_surface_create_from_png ( char* filename ) ;
808
809 FUNCTION: cairo_surface_t*
810 cairo_image_surface_create_from_png_stream ( cairo_read_func_t read_func, void* closure ) ;
811
812 ! Pattern creation functions
813
814 FUNCTION: cairo_pattern_t*
815 cairo_pattern_create_rgb ( double red, double green, double blue ) ;
816
817 FUNCTION: cairo_pattern_t*
818 cairo_pattern_create_rgba ( double red, double green, double blue, double alpha ) ;
819
820 FUNCTION: cairo_pattern_t*
821 cairo_pattern_create_for_surface ( cairo_surface_t* surface ) ;
822
823 FUNCTION: cairo_pattern_t*
824 cairo_pattern_create_linear ( double x0, double y0, double x1, double y1 ) ;
825
826 FUNCTION: cairo_pattern_t*
827 cairo_pattern_create_radial ( double cx0, double cy0, double radius0, double cx1, double cy1, double radius1 ) ;
828
829 FUNCTION: cairo_pattern_t*
830 cairo_pattern_reference ( cairo_pattern_t* pattern ) ;
831
832 FUNCTION: void
833 cairo_pattern_destroy ( cairo_pattern_t* pattern ) ;
834
835 FUNCTION: uint
836 cairo_pattern_get_reference_count ( cairo_pattern_t* pattern ) ;
837
838 FUNCTION: cairo_status_t
839 cairo_pattern_status ( cairo_pattern_t* pattern ) ;
840
841 FUNCTION: void*
842 cairo_pattern_get_user_data ( cairo_pattern_t* pattern, cairo_user_data_key_t* key ) ;
843
844 FUNCTION: cairo_status_t
845 cairo_pattern_set_user_data ( cairo_pattern_t* pattern, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ;
846
847 TYPEDEF: int cairo_pattern_type_t
848 C-ENUM:
849     CAIRO_PATTERN_TYPE_SOLID
850     CAIRO_PATTERN_TYPE_SURFACE
851     CAIRO_PATTERN_TYPE_LINEAR
852     CAIRO_PATTERN_TYPE_RADIA ;
853
854 FUNCTION: cairo_pattern_type_t
855 cairo_pattern_get_type ( cairo_pattern_t* pattern ) ;
856
857 FUNCTION: void
858 cairo_pattern_add_color_stop_rgb ( cairo_pattern_t* pattern, double offset, double red, double green, double blue ) ;
859
860 FUNCTION: void
861 cairo_pattern_add_color_stop_rgba ( cairo_pattern_t* pattern, double offset, double red, double green, double blue, double alpha ) ;
862
863 FUNCTION: void
864 cairo_pattern_set_matrix ( cairo_pattern_t* pattern, cairo_matrix_t* matrix ) ;
865
866 FUNCTION: void
867 cairo_pattern_get_matrix ( cairo_pattern_t* pattern, cairo_matrix_t* matrix ) ;
868
869 TYPEDEF: int cairo_extend_t
870 C-ENUM:
871     CAIRO_EXTEND_NONE
872     CAIRO_EXTEND_REPEAT
873     CAIRO_EXTEND_REFLECT
874     CAIRO_EXTEND_PAD ;
875
876 FUNCTION: void
877 cairo_pattern_set_extend ( cairo_pattern_t* pattern, cairo_extend_t extend ) ;
878
879 FUNCTION: cairo_extend_t
880 cairo_pattern_get_extend ( cairo_pattern_t* pattern ) ;
881
882 TYPEDEF: int cairo_filter_t
883 C-ENUM:
884     CAIRO_FILTER_FAST
885     CAIRO_FILTER_GOOD
886     CAIRO_FILTER_BEST
887     CAIRO_FILTER_NEAREST
888     CAIRO_FILTER_BILINEAR
889     CAIRO_FILTER_GAUSSIAN ;
890
891 FUNCTION: void
892 cairo_pattern_set_filter ( cairo_pattern_t* pattern, cairo_filter_t filter ) ;
893
894 FUNCTION: cairo_filter_t
895 cairo_pattern_get_filter ( cairo_pattern_t* pattern ) ;
896
897 FUNCTION: cairo_status_t
898 cairo_pattern_get_rgba ( cairo_pattern_t* pattern, double* red, double* green, double* blue, double* alpha ) ;
899
900 FUNCTION: cairo_status_t
901 cairo_pattern_get_surface ( cairo_pattern_t* pattern, cairo_surface_t** surface ) ;
902
903 FUNCTION: cairo_status_t
904 cairo_pattern_get_color_stop_rgba ( cairo_pattern_t* pattern, int index, double* offset, double* red, double* green, double* blue, double* alpha ) ;
905
906 FUNCTION: cairo_status_t
907 cairo_pattern_get_color_stop_count ( cairo_pattern_t* pattern, int* count ) ;
908
909 FUNCTION: cairo_status_t
910 cairo_pattern_get_linear_points ( cairo_pattern_t* pattern, double* x0, double* y0, double* x1, double* y1 ) ;
911
912 FUNCTION: cairo_status_t
913 cairo_pattern_get_radial_circles ( cairo_pattern_t* pattern, double* x0, double* y0, double* r0, double* x1, double* y1, double* r1 ) ;
914
915 ! Matrix functions
916
917 FUNCTION: void
918 cairo_matrix_init ( cairo_matrix_t* matrix, double  xx, double  yx, double  xy, double  yy, double  x0, double  y0 ) ;
919
920 FUNCTION: void
921 cairo_matrix_init_identity ( cairo_matrix_t* matrix ) ;
922
923 FUNCTION: void
924 cairo_matrix_init_translate ( cairo_matrix_t* matrix, double tx, double ty ) ;
925
926 FUNCTION: void
927 cairo_matrix_init_scale ( cairo_matrix_t* matrix, double sx, double sy ) ;
928
929 FUNCTION: void
930 cairo_matrix_init_rotate ( cairo_matrix_t* matrix, double radians ) ;
931
932 FUNCTION: void
933 cairo_matrix_translate ( cairo_matrix_t* matrix, double tx, double ty ) ;
934
935 FUNCTION: void
936 cairo_matrix_scale ( cairo_matrix_t* matrix, double sx, double sy ) ;
937
938 FUNCTION: void
939 cairo_matrix_rotate ( cairo_matrix_t* matrix, double radians ) ;
940
941 FUNCTION: cairo_status_t
942 cairo_matrix_invert ( cairo_matrix_t* matrix ) ;
943
944 FUNCTION: void
945 cairo_matrix_multiply ( cairo_matrix_t* result, cairo_matrix_t* a, cairo_matrix_t* b ) ;
946
947 FUNCTION: void
948 cairo_matrix_transform_distance ( cairo_matrix_t* matrix, double* dx, double* dy ) ;
949
950 FUNCTION: void
951 cairo_matrix_transform_point ( cairo_matrix_t* matrix, double* x, double* y ) ;
952
953 ! Functions to be used while debugging (not intended for use in production code)
954 FUNCTION: void
955 cairo_debug_reset_static_data ( ) ;