1 $#include <cairo-features.h>
2 $#include <cairo-deprecated.h>
4 $#include <cairo-xlib.h>
7 * This code was mostly copied from cairo.h and cairo-xlib.h with comments
8 * removed. The licence noticed below is present for the sake of clarity.
11 /* cairo - a vector graphics library with display and print output
13 * Copyright © 2002 University of Southern California
14 * Copyright © 2005 Red Hat, Inc.
16 * This library is free software; you can redistribute it and/or
17 * modify it either under the terms of the GNU Lesser General Public
18 * License version 2.1 as published by the Free Software Foundation
19 * (the "LGPL") or, at your option, under the terms of the Mozilla
20 * Public License Version 1.1 (the "MPL"). If you do not alter this
21 * notice, a recipient may use your version of this file under either
22 * the MPL or the LGPL.
24 * You should have received a copy of the LGPL along with this library
25 * in the file COPYING-LGPL-2.1; if not, write to the Free Software
26 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 * You should have received a copy of the MPL along with this library
28 * in the file COPYING-MPL-1.1
30 * The contents of this file are subject to the Mozilla Public License
31 * Version 1.1 (the "License"); you may not use this file except in
32 * compliance with the License. You may obtain a copy of the License at
33 * http://www.mozilla.org/MPL/
35 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
36 * OF ANY KIND, either express or implied. See the LGPL or the MPL for
37 * the specific language governing rights and limitations.
39 * The Original Code is the cairo graphics library.
41 * The Initial Developer of the Original Code is University of Southern
45 * Carl D. Worth <cworth@cworth.org>
48 typedef enum _cairo_antialias {
49 CAIRO_ANTIALIAS_DEFAULT,
52 CAIRO_ANTIALIAS_SUBPIXEL
55 typedef struct _cairo_matrix {
63 typedef int cairo_bool_t;
65 typedef struct _cairo cairo_t;
67 typedef struct _cairo_surface cairo_surface_t;
69 typedef struct _cairo_pattern cairo_pattern_t;
72 typedef struct _cairo_user_data_key {
74 } cairo_user_data_key_t;
76 typedef enum _cairo_status {
77 CAIRO_STATUS_SUCCESS = 0,
78 CAIRO_STATUS_NO_MEMORY,
79 CAIRO_STATUS_INVALID_RESTORE,
80 CAIRO_STATUS_INVALID_POP_GROUP,
81 CAIRO_STATUS_NO_CURRENT_POINT,
82 CAIRO_STATUS_INVALID_MATRIX,
83 CAIRO_STATUS_INVALID_STATUS,
84 CAIRO_STATUS_NULL_POINTER,
85 CAIRO_STATUS_INVALID_STRING,
86 CAIRO_STATUS_INVALID_PATH_DATA,
87 CAIRO_STATUS_READ_ERROR,
88 CAIRO_STATUS_WRITE_ERROR,
89 CAIRO_STATUS_SURFACE_FINISHED,
90 CAIRO_STATUS_SURFACE_TYPE_MISMATCH,
91 CAIRO_STATUS_PATTERN_TYPE_MISMATCH,
92 CAIRO_STATUS_INVALID_CONTENT,
93 CAIRO_STATUS_INVALID_FORMAT,
94 CAIRO_STATUS_INVALID_VISUAL,
95 CAIRO_STATUS_FILE_NOT_FOUND,
96 CAIRO_STATUS_INVALID_DASH,
97 CAIRO_STATUS_INVALID_DSC_COMMENT,
98 CAIRO_STATUS_INVALID_INDEX,
99 CAIRO_STATUS_CLIP_NOT_REPRESENTABLE,
100 CAIRO_STATUS_TEMP_FILE_ERROR,
101 CAIRO_STATUS_INVALID_STRIDE,
102 CAIRO_STATUS_FONT_TYPE_MISMATCH,
103 CAIRO_STATUS_USER_FONT_IMMUTABLE,
104 CAIRO_STATUS_USER_FONT_ERROR,
105 CAIRO_STATUS_NEGATIVE_COUNT,
106 CAIRO_STATUS_INVALID_CLUSTERS,
107 CAIRO_STATUS_INVALID_SLANT,
108 CAIRO_STATUS_INVALID_WEIGHT
111 typedef enum _cairo_content {
112 CAIRO_CONTENT_COLOR = 0x1000,
113 CAIRO_CONTENT_ALPHA = 0x2000,
114 CAIRO_CONTENT_COLOR_ALPHA = 0x3000
117 typedef enum _cairo_operator {
118 CAIRO_OPERATOR_CLEAR,
120 CAIRO_OPERATOR_SOURCE,
127 CAIRO_OPERATOR_DEST_OVER,
128 CAIRO_OPERATOR_DEST_IN,
129 CAIRO_OPERATOR_DEST_OUT,
130 CAIRO_OPERATOR_DEST_ATOP,
134 CAIRO_OPERATOR_SATURATE
137 typedef enum _cairo_filter {
141 CAIRO_FILTER_NEAREST,
142 CAIRO_FILTER_BILINEAR,
143 CAIRO_FILTER_GAUSSIAN
146 cairo_surface_t *cairo_xlib_surface_create(Display * dpy,
148 Visual * visual, int width, int height);
150 cairo_surface_t *cairo_xlib_surface_create_for_bitmap(Display * dpy,
152 Screen * screen, int width, int height);
154 void cairo_xlib_surface_set_size(cairo_surface_t * surface, int width, int height);
156 void cairo_xlib_surface_set_drawable(cairo_surface_t * surface, Drawable
157 drawable, int width, int height);
159 Display *cairo_xlib_surface_get_display(cairo_surface_t * surface);
161 Drawable cairo_xlib_surface_get_drawable(cairo_surface_t * surface);
163 Screen *cairo_xlib_surface_get_screen(cairo_surface_t * surface);
165 Visual *cairo_xlib_surface_get_visual(cairo_surface_t * surface);
167 int cairo_xlib_surface_get_depth(cairo_surface_t * surface);
169 int cairo_xlib_surface_get_width(cairo_surface_t * surface);
171 int cairo_xlib_surface_get_height(cairo_surface_t * surface);
173 int cairo_version(void);
175 const char *cairo_version_string(void);
177 cairo_t *cairo_create(cairo_surface_t * target);
179 cairo_t *cairo_reference(cairo_t * cr);
181 void cairo_destroy(cairo_t * cr);
183 unsigned int cairo_get_reference_count(cairo_t * cr);
185 void *cairo_get_user_data(cairo_t * cr, const cairo_user_data_key_t * key);
187 cairo_status_t cairo_set_user_data(cairo_t * cr, const cairo_user_data_key_t *
188 key, void *user_data, cairo_destroy_func_t destroy);
190 void cairo_save(cairo_t * cr);
192 void cairo_restore(cairo_t * cr);
194 void cairo_push_group(cairo_t * cr);
196 void cairo_push_group_with_content(cairo_t * cr, cairo_content_t content);
198 cairo_pattern_t *cairo_pop_group(cairo_t * cr);
200 void cairo_pop_group_to_source(cairo_t * cr);
202 void cairo_set_operator(cairo_t * cr, cairo_operator_t op);
204 void cairo_set_source(cairo_t * cr, cairo_pattern_t * source);
206 void cairo_set_source_rgb(cairo_t * cr, double red, double green, double blue);
208 void cairo_set_source_rgba(cairo_t * cr, double red, double green, double blue, double alpha);
210 void cairo_set_source_surface(cairo_t * cr, cairo_surface_t * surface, double x, double y);
212 void cairo_set_tolerance(cairo_t * cr, double tolerance);
214 void cairo_set_antialias(cairo_t * cr, cairo_antialias_t antialias);
216 typedef enum _cairo_fill_rule {
217 CAIRO_FILL_RULE_WINDING,
218 CAIRO_FILL_RULE_EVEN_ODD
221 void cairo_set_fill_rule(cairo_t * cr, cairo_fill_rule_t fill_rule);
223 void cairo_set_line_width(cairo_t * cr, double width);
225 typedef enum _cairo_line_cap {
227 CAIRO_LINE_CAP_ROUND,
228 CAIRO_LINE_CAP_SQUARE
231 void cairo_set_line_cap(cairo_t * cr, cairo_line_cap_t line_cap);
233 typedef enum _cairo_line_join {
234 CAIRO_LINE_JOIN_MITER,
235 CAIRO_LINE_JOIN_ROUND,
236 CAIRO_LINE_JOIN_BEVEL
239 void cairo_set_line_join(cairo_t * cr, cairo_line_join_t line_join);
241 void cairo_set_dash(cairo_t * cr, const double *dashes, int num_dashes, double offset);
243 void cairo_set_miter_limit(cairo_t * cr, double limit);
245 void cairo_translate(cairo_t * cr, double tx, double ty);
247 void cairo_scale(cairo_t * cr, double sx, double sy);
249 void cairo_rotate(cairo_t * cr, double angle);
251 void cairo_transform(cairo_t * cr, cairo_matrix_t * matrix);
253 void cairo_set_matrix(cairo_t * cr, cairo_matrix_t * matrix);
255 void cairo_identity_matrix(cairo_t * cr);
257 void cairo_user_to_device(cairo_t * cr, double *x, double *y);
259 void cairo_user_to_device_distance(cairo_t * cr, double *dx, double *dy);
261 void cairo_device_to_user(cairo_t * cr, double *x, double *y);
263 void cairo_device_to_user_distance(cairo_t * cr, double *dx, double *dy);
265 void cairo_new_path(cairo_t * cr);
267 void cairo_move_to(cairo_t * cr, double x, double y);
269 void cairo_new_sub_path(cairo_t * cr);
271 void cairo_line_to(cairo_t * cr, double x, double y);
273 void cairo_curve_to(cairo_t * cr, double x1, double y1, double x2, double y2, double x3, double y3);
275 void cairo_arc(cairo_t * cr, double xc, double yc, double radius, double angle1, double angle2);
277 void cairo_arc_negative(cairo_t * cr, double xc, double yc, double radius,
278 double angle1, double angle2);
280 void cairo_rel_move_to(cairo_t * cr, double dx, double dy);
282 void cairo_rel_line_to(cairo_t * cr, double dx, double dy);
284 void cairo_rel_curve_to(cairo_t * cr, double dx1, double dy1, double dx2,
285 double dy2, double dx3, double dy3);
287 void cairo_rectangle(cairo_t * cr, double x, double y, double width, double height);
289 void cairo_close_path(cairo_t * cr);
291 void cairo_path_extents(cairo_t * cr, double *x1, double *y1, double *x2, double *y2);
293 void cairo_paint(cairo_t * cr);
295 void cairo_paint_with_alpha(cairo_t * cr, double alpha);
297 void cairo_mask(cairo_t * cr, cairo_pattern_t * pattern);
299 void cairo_mask_surface(cairo_t * cr, cairo_surface_t * surface, double
300 surface_x, double surface_y);
302 void cairo_stroke(cairo_t * cr);
304 void cairo_stroke_preserve(cairo_t * cr);
306 void cairo_fill(cairo_t * cr);
308 void cairo_fill_preserve(cairo_t * cr);
310 void cairo_copy_page(cairo_t * cr);
312 void cairo_show_page(cairo_t * cr);
314 cairo_bool_t cairo_in_stroke(cairo_t * cr, double x, double y);
316 cairo_bool_t cairo_in_fill(cairo_t * cr, double x, double y);
318 void cairo_stroke_extents(cairo_t * cr, double *x1, double *y1, double *x2, double *y2);
320 void cairo_fill_extents(cairo_t * cr, double *x1, double *y1, double *x2, double *y2);
322 void cairo_reset_clip(cairo_t * cr);
324 void cairo_clip(cairo_t * cr);
326 void cairo_clip_preserve(cairo_t * cr);
328 void cairo_clip_extents(cairo_t * cr, double *x1, double *y1, double *x2, double *y2);
330 typedef struct _cairo_rectangle {
331 double x, y, width, height;
334 typedef struct _cairo_rectangle_list {
335 cairo_status_t status;
336 cairo_rectangle_t *rectangles;
338 } cairo_rectangle_list_t;
340 cairo_rectangle_list_t *cairo_copy_clip_rectangle_list(cairo_t * cr);
342 void cairo_rectangle_list_destroy(cairo_rectangle_list_t * rectangle_list);
344 typedef struct _cairo_scaled_font cairo_scaled_font_t;
346 typedef struct _cairo_font_face cairo_font_face_t;
354 cairo_glyph_t *cairo_glyph_allocate(int num_glyphs);
356 void cairo_glyph_free(cairo_glyph_t * glyphs);
361 } cairo_text_cluster_t;
363 cairo_text_cluster_t *cairo_text_cluster_allocate(int num_clusters);
365 void cairo_text_cluster_free(cairo_text_cluster_t * clusters);
367 typedef enum _cairo_text_cluster_flags {
368 CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = 0x00000001
369 } cairo_text_cluster_flags_t;
378 } cairo_text_extents_t;
384 double max_x_advance;
385 double max_y_advance;
386 } cairo_font_extents_t;
388 typedef enum _cairo_font_slant {
389 CAIRO_FONT_SLANT_NORMAL,
390 CAIRO_FONT_SLANT_ITALIC,
391 CAIRO_FONT_SLANT_OBLIQUE
392 } cairo_font_slant_t;
394 typedef enum _cairo_font_weight {
395 CAIRO_FONT_WEIGHT_NORMAL,
396 CAIRO_FONT_WEIGHT_BOLD
397 } cairo_font_weight_t;
399 typedef enum _cairo_subpixel_order {
400 CAIRO_SUBPIXEL_ORDER_DEFAULT,
401 CAIRO_SUBPIXEL_ORDER_RGB,
402 CAIRO_SUBPIXEL_ORDER_BGR,
403 CAIRO_SUBPIXEL_ORDER_VRGB,
404 CAIRO_SUBPIXEL_ORDER_VBGR
405 } cairo_subpixel_order_t;
407 typedef enum _cairo_hint_style {
408 CAIRO_HINT_STYLE_DEFAULT,
409 CAIRO_HINT_STYLE_NONE,
410 CAIRO_HINT_STYLE_SLIGHT,
411 CAIRO_HINT_STYLE_MEDIUM,
412 CAIRO_HINT_STYLE_FULL
413 } cairo_hint_style_t;
415 typedef enum _cairo_hint_metrics {
416 CAIRO_HINT_METRICS_DEFAULT,
417 CAIRO_HINT_METRICS_OFF,
418 CAIRO_HINT_METRICS_ON
419 } cairo_hint_metrics_t;
421 typedef struct _cairo_font_options cairo_font_options_t;
423 cairo_font_options_t *cairo_font_options_create(void);
425 cairo_font_options_t *cairo_font_options_copy(cairo_font_options_t * original);
427 void cairo_font_options_destroy(cairo_font_options_t * options);
429 cairo_status_t cairo_font_options_status(cairo_font_options_t * options);
431 void cairo_font_options_merge(cairo_font_options_t * options, cairo_font_options_t * other);
433 cairo_bool_t cairo_font_options_equal(cairo_font_options_t * options,
434 cairo_font_options_t * other);
436 unsigned long cairo_font_options_hash(cairo_font_options_t * options);
438 void cairo_font_options_set_antialias(cairo_font_options_t * options, cairo_antialias_t antialias);
439 cairo_antialias_t cairo_font_options_get_antialias(cairo_font_options_t * options);
441 void cairo_font_options_set_subpixel_order(cairo_font_options_t * options,
442 cairo_subpixel_order_t subpixel_order);
443 cairo_subpixel_order_t cairo_font_options_get_subpixel_order(cairo_font_options_t * options);
445 void cairo_font_options_set_hint_style(cairo_font_options_t * options, cairo_hint_style_t hint_style);
446 cairo_hint_style_t cairo_font_options_get_hint_style(cairo_font_options_t * options);
448 void cairo_font_options_set_hint_metrics(cairo_font_options_t * options,
449 cairo_hint_metrics_t hint_metrics);
450 cairo_hint_metrics_t cairo_font_options_get_hint_metrics(cairo_font_options_t * options);
452 void cairo_select_font_face(cairo_t * cr,
453 const char *family, cairo_font_slant_t slant, cairo_font_weight_t weight);
455 void cairo_set_font_size(cairo_t * cr, double size);
457 void cairo_set_font_matrix(cairo_t * cr, cairo_matrix_t * matrix);
459 void cairo_get_font_matrix(cairo_t * cr, cairo_matrix_t * matrix);
461 void cairo_set_font_options(cairo_t * cr, cairo_font_options_t * options);
463 void cairo_get_font_options(cairo_t * cr, cairo_font_options_t * options);
465 void cairo_set_font_face(cairo_t * cr, cairo_font_face_t * font_face);
467 cairo_font_face_t *cairo_get_font_face(cairo_t * cr);
469 void cairo_set_scaled_font(cairo_t * cr, cairo_scaled_font_t * scaled_font);
471 cairo_scaled_font_t *cairo_get_scaled_font(cairo_t * cr);
473 void cairo_show_text(cairo_t * cr, const char *utf8);
475 void cairo_show_glyphs(cairo_t * cr, const cairo_glyph_t * glyphs, int num_glyphs);
477 void cairo_show_text_glyphs(cairo_t * cr,
480 const cairo_glyph_t * glyphs,
482 const cairo_text_cluster_t * clusters,
483 int num_clusters, cairo_text_cluster_flags_t cluster_flags);
485 void cairo_text_path(cairo_t * cr, const char *utf8);
487 void cairo_glyph_path(cairo_t * cr, const cairo_glyph_t * glyphs, int num_glyphs);
489 void cairo_text_extents(cairo_t * cr, const char *utf8, cairo_text_extents_t * extents);
491 void cairo_glyph_extents(cairo_t * cr,
492 const cairo_glyph_t * glyphs, int num_glyphs, cairo_text_extents_t * extents);
494 void cairo_font_extents(cairo_t * cr, cairo_font_extents_t * extents);
496 cairo_font_face_t *cairo_font_face_reference(cairo_font_face_t * font_face);
498 void cairo_font_face_destroy(cairo_font_face_t * font_face);
500 unsigned int cairo_font_face_get_reference_count(cairo_font_face_t * font_face);
502 cairo_status_t cairo_font_face_status(cairo_font_face_t * font_face);
504 typedef enum _cairo_font_type {
507 CAIRO_FONT_TYPE_WIN32,
508 CAIRO_FONT_TYPE_QUARTZ,
512 cairo_font_type_t cairo_font_face_get_type(cairo_font_face_t * font_face);
514 void *cairo_font_face_get_user_data(cairo_font_face_t * font_face,
515 const cairo_user_data_key_t * key);
517 cairo_status_t cairo_font_face_set_user_data(cairo_font_face_t * font_face,
518 const cairo_user_data_key_t * key,
519 void *user_data, cairo_destroy_func_t destroy);
521 cairo_scaled_font_t *cairo_scaled_font_create(cairo_font_face_t * font_face,
522 cairo_matrix_t * font_matrix,
523 cairo_matrix_t * ctm,
524 cairo_font_options_t * options);
526 cairo_scaled_font_t *cairo_scaled_font_reference(cairo_scaled_font_t * scaled_font);
528 void cairo_scaled_font_destroy(cairo_scaled_font_t * scaled_font);
530 unsigned int cairo_scaled_font_get_reference_count(cairo_scaled_font_t * scaled_font);
532 cairo_status_t cairo_scaled_font_status(cairo_scaled_font_t * scaled_font);
534 cairo_font_type_t cairo_scaled_font_get_type(cairo_scaled_font_t * scaled_font);
536 void *cairo_scaled_font_get_user_data(cairo_scaled_font_t * scaled_font,
537 const cairo_user_data_key_t * key);
539 cairo_status_t cairo_scaled_font_set_user_data(cairo_scaled_font_t * scaled_font,
540 const cairo_user_data_key_t * key,
541 void *user_data, cairo_destroy_func_t destroy);
543 void cairo_scaled_font_extents(cairo_scaled_font_t * scaled_font, cairo_font_extents_t * extents);
545 void cairo_scaled_font_text_extents(cairo_scaled_font_t * scaled_font,
546 const char *utf8, cairo_text_extents_t * extents);
548 void cairo_scaled_font_glyph_extents(cairo_scaled_font_t * scaled_font,
549 const cairo_glyph_t * glyphs,
550 int num_glyphs, cairo_text_extents_t * extents);
552 cairo_status_t cairo_scaled_font_text_to_glyphs(cairo_scaled_font_t * scaled_font,
557 cairo_glyph_t ** glyphs,
559 cairo_text_cluster_t ** clusters,
560 int *num_clusters, cairo_text_cluster_flags_t * cluster_flags);
562 cairo_font_face_t *cairo_scaled_font_get_font_face(cairo_scaled_font_t * scaled_font);
564 void cairo_scaled_font_get_font_matrix(cairo_scaled_font_t * scaled_font, cairo_matrix_t * font_matrix);
566 void cairo_scaled_font_get_ctm(cairo_scaled_font_t * scaled_font, cairo_matrix_t * ctm);
568 void cairo_scaled_font_get_scale_matrix(cairo_scaled_font_t * scaled_font,
569 cairo_matrix_t * scale_matrix);
571 void cairo_scaled_font_get_font_options(cairo_scaled_font_t * scaled_font,
572 cairo_font_options_t * options);
574 cairo_font_face_t *cairo_toy_font_face_create(const char *family,
575 cairo_font_slant_t slant, cairo_font_weight_t weight);
577 const char *cairo_toy_font_face_get_family(cairo_font_face_t * font_face);
579 cairo_font_slant_t cairo_toy_font_face_get_slant(cairo_font_face_t * font_face);
581 cairo_font_weight_t cairo_toy_font_face_get_weight(cairo_font_face_t * font_face);
583 cairo_font_face_t *cairo_user_font_face_create(void);
585 void cairo_user_font_face_set_init_func(cairo_font_face_t * font_face,
586 cairo_user_scaled_font_init_func_t init_func);
588 void cairo_user_font_face_set_render_glyph_func(cairo_font_face_t * font_face,
589 cairo_user_scaled_font_render_glyph_func_t
592 void cairo_user_font_face_set_text_to_glyphs_func(cairo_font_face_t * font_face,
593 cairo_user_scaled_font_text_to_glyphs_func_t
594 text_to_glyphs_func);
596 void cairo_user_font_face_set_unicode_to_glyph_func(cairo_font_face_t * font_face,
597 cairo_user_scaled_font_unicode_to_glyph_func_t
598 unicode_to_glyph_func);
600 cairo_user_scaled_font_init_func_t cairo_user_font_face_get_init_func(cairo_font_face_t * font_face);
602 cairo_user_scaled_font_render_glyph_func_t cairo_user_font_face_get_render_glyph_func(cairo_font_face_t * font_face);
604 cairo_user_scaled_font_text_to_glyphs_func_t cairo_user_font_face_get_text_to_glyphs_func(cairo_font_face_t * font_face);
606 cairo_user_scaled_font_unicode_to_glyph_func_t cairo_user_font_face_get_unicode_to_glyph_func(cairo_font_face_t * font_face);
608 cairo_operator_t cairo_get_operator(cairo_t * cr);
610 cairo_pattern_t *cairo_get_source(cairo_t * cr);
612 double cairo_get_tolerance(cairo_t * cr);
614 cairo_antialias_t cairo_get_antialias(cairo_t * cr);
616 cairo_bool_t cairo_has_current_point(cairo_t * cr);
618 void cairo_get_current_point(cairo_t * cr, double *x, double *y);
620 cairo_fill_rule_t cairo_get_fill_rule(cairo_t * cr);
622 double cairo_get_line_width(cairo_t * cr);
624 cairo_line_cap_t cairo_get_line_cap(cairo_t * cr);
626 cairo_line_join_t cairo_get_line_join(cairo_t * cr);
628 double cairo_get_miter_limit(cairo_t * cr);
630 int cairo_get_dash_count(cairo_t * cr);
632 void cairo_get_dash(cairo_t * cr, double *dashes, double *offset);
634 void cairo_get_matrix(cairo_t * cr, cairo_matrix_t * matrix);
636 cairo_surface_t *cairo_get_target(cairo_t * cr);
638 cairo_surface_t *cairo_get_group_target(cairo_t * cr);
640 typedef enum _cairo_path_data_type {
644 CAIRO_PATH_CLOSE_PATH
645 } cairo_path_data_type_t;
647 typedef union _cairo_path_data_t cairo_path_data_t;
649 typedef struct cairo_path {
650 cairo_status_t status;
651 cairo_path_data_t *data;
655 cairo_path_t *cairo_copy_path(cairo_t * cr);
657 cairo_path_t *cairo_copy_path_flat(cairo_t * cr);
659 void cairo_append_path(cairo_t * cr, const cairo_path_t * path);
661 void cairo_path_destroy(cairo_path_t * path);
663 cairo_status_t cairo_status(cairo_t * cr);
665 const char *cairo_status_to_string(cairo_status_t status);
667 cairo_surface_t *cairo_surface_create_similar(cairo_surface_t * other,
668 cairo_content_t content, int width, int height);
670 cairo_surface_t *cairo_surface_reference(cairo_surface_t * surface);
672 void cairo_surface_finish(cairo_surface_t * surface);
674 void cairo_surface_destroy(cairo_surface_t * surface);
676 unsigned int cairo_surface_get_reference_count(cairo_surface_t * surface);
678 cairo_status_t cairo_surface_status(cairo_surface_t * surface);
680 typedef enum _cairo_surface_type {
681 CAIRO_SURFACE_TYPE_IMAGE,
682 CAIRO_SURFACE_TYPE_PDF,
683 CAIRO_SURFACE_TYPE_PS,
684 CAIRO_SURFACE_TYPE_XLIB,
685 CAIRO_SURFACE_TYPE_XCB,
686 CAIRO_SURFACE_TYPE_GLITZ,
687 CAIRO_SURFACE_TYPE_QUARTZ,
688 CAIRO_SURFACE_TYPE_WIN32,
689 CAIRO_SURFACE_TYPE_BEOS,
690 CAIRO_SURFACE_TYPE_DIRECTFB,
691 CAIRO_SURFACE_TYPE_SVG,
692 CAIRO_SURFACE_TYPE_OS2,
693 CAIRO_SURFACE_TYPE_WIN32_PRINTING,
694 CAIRO_SURFACE_TYPE_QUARTZ_IMAGE
695 } cairo_surface_type_t;
697 cairo_surface_type_t cairo_surface_get_type(cairo_surface_t * surface);
699 cairo_content_t cairo_surface_get_content(cairo_surface_t * surface);
702 cairo_status_t cairo_surface_write_to_png(cairo_surface_t * surface, const char *filename);
704 cairo_status_t cairo_surface_write_to_png_stream(cairo_surface_t * surface,
705 cairo_write_func_t write_func, void *closure);
707 void *cairo_surface_get_user_data(cairo_surface_t * surface, const cairo_user_data_key_t * key);
709 cairo_status_t cairo_surface_set_user_data(cairo_surface_t * surface,
710 const cairo_user_data_key_t * key,
711 void *user_data, cairo_destroy_func_t destroy);
713 void cairo_surface_get_font_options(cairo_surface_t * surface, cairo_font_options_t * options);
715 void cairo_surface_flush(cairo_surface_t * surface);
717 void cairo_surface_mark_dirty(cairo_surface_t * surface);
719 void cairo_surface_mark_dirty_rectangle(cairo_surface_t * surface, int x, int y, int width, int height);
721 void cairo_surface_set_device_offset(cairo_surface_t * surface, double x_offset, double y_offset);
723 void cairo_surface_get_device_offset(cairo_surface_t * surface, double *x_offset, double *y_offset);
725 void cairo_surface_set_fallback_resolution(cairo_surface_t * surface,
726 double x_pixels_per_inch, double y_pixels_per_inch);
728 void cairo_surface_get_fallback_resolution(cairo_surface_t * surface,
729 double *x_pixels_per_inch, double *y_pixels_per_inch);
731 void cairo_surface_copy_page(cairo_surface_t * surface);
733 void cairo_surface_show_page(cairo_surface_t * surface);
735 cairo_bool_t cairo_surface_has_show_text_glyphs(cairo_surface_t * surface);
737 typedef enum _cairo_format {
744 cairo_surface_t *cairo_image_surface_create(cairo_format_t format, int width, int height);
746 int cairo_format_stride_for_width(cairo_format_t format, int width);
748 cairo_surface_t *cairo_image_surface_create_for_data(unsigned char *data,
749 cairo_format_t format,
750 int width, int height, int stride);
752 unsigned char *cairo_image_surface_get_data(cairo_surface_t * surface);
754 cairo_format_t cairo_image_surface_get_format(cairo_surface_t * surface);
756 int cairo_image_surface_get_width(cairo_surface_t * surface);
758 int cairo_image_surface_get_height(cairo_surface_t * surface);
760 int cairo_image_surface_get_stride(cairo_surface_t * surface);
763 cairo_surface_t *cairo_image_surface_create_from_png(const char *filename);
765 cairo_surface_t *cairo_image_surface_create_from_png_stream(cairo_read_func_t read_func,
768 cairo_pattern_t *cairo_pattern_create_rgb(double red, double green, double blue);
770 cairo_pattern_t *cairo_pattern_create_rgba(double red, double green, double blue, double alpha);
772 cairo_pattern_t *cairo_pattern_create_for_surface(cairo_surface_t * surface);
774 cairo_pattern_t *cairo_pattern_create_linear(double x0, double y0, double x1, double y1);
776 cairo_pattern_t *cairo_pattern_create_radial(double cx0, double cy0, double radius0,
777 double cx1, double cy1, double radius1);
779 cairo_pattern_t *cairo_pattern_reference(cairo_pattern_t * pattern);
781 void cairo_pattern_destroy(cairo_pattern_t * pattern);
783 unsigned int cairo_pattern_get_reference_count(cairo_pattern_t * pattern);
785 cairo_status_t cairo_pattern_status(cairo_pattern_t * pattern);
787 void *cairo_pattern_get_user_data(cairo_pattern_t * pattern, const cairo_user_data_key_t * key);
789 cairo_status_t cairo_pattern_set_user_data(cairo_pattern_t * pattern,
790 const cairo_user_data_key_t * key,
791 void *user_data, cairo_destroy_func_t destroy);
793 typedef enum _cairo_pattern_type {
794 CAIRO_PATTERN_TYPE_SOLID,
795 CAIRO_PATTERN_TYPE_SURFACE,
796 CAIRO_PATTERN_TYPE_LINEAR,
797 CAIRO_PATTERN_TYPE_RADIAL
798 } cairo_pattern_type_t;
800 cairo_pattern_type_t cairo_pattern_get_type(cairo_pattern_t * pattern);
802 void cairo_pattern_add_color_stop_rgb(cairo_pattern_t * pattern, double offset,
803 double red, double green, double blue);
805 void cairo_pattern_add_color_stop_rgba(cairo_pattern_t * pattern, double
806 offset, double red, double green, double blue, double alpha);
808 void cairo_pattern_set_matrix(cairo_pattern_t * pattern, cairo_matrix_t * matrix);
810 void cairo_pattern_get_matrix(cairo_pattern_t * pattern, cairo_matrix_t * matrix);
812 typedef enum _cairo_extend {
815 CAIRO_EXTEND_REFLECT,
819 void cairo_pattern_set_extend(cairo_pattern_t * pattern, cairo_extend_t extend);
821 cairo_extend_t cairo_pattern_get_extend(cairo_pattern_t * pattern);
823 void cairo_pattern_set_filter(cairo_pattern_t * pattern, cairo_filter_t filter);
825 cairo_filter_t cairo_pattern_get_filter(cairo_pattern_t * pattern);
827 cairo_status_t cairo_pattern_get_rgba(cairo_pattern_t * pattern,
828 double *red, double *green, double *blue, double *alpha);
830 cairo_status_t cairo_pattern_get_surface(cairo_pattern_t * pattern, cairo_surface_t ** surface);
832 cairo_status_t cairo_pattern_get_color_stop_rgba(cairo_pattern_t * pattern,
833 int index, double *offset,
834 double *red, double *green, double *blue, double *alpha);
836 cairo_status_t cairo_pattern_get_color_stop_count(cairo_pattern_t * pattern, int *count);
838 cairo_status_t cairo_pattern_get_linear_points(cairo_pattern_t * pattern,
839 double *x0, double *y0, double *x1, double *y1);
841 cairo_status_t cairo_pattern_get_radial_circles(cairo_pattern_t * pattern,
842 double *x0, double *y0, double *r0,
843 double *x1, double *y1, double *r1);
845 void cairo_matrix_init(cairo_matrix_t * matrix, double xx, double yx, double
846 xy, double yy, double x0, double y0);
848 void cairo_matrix_init_identity(cairo_matrix_t * matrix);
850 void cairo_matrix_init_translate(cairo_matrix_t * matrix, double tx, double ty);
852 void cairo_matrix_init_scale(cairo_matrix_t * matrix, double sx, double sy);
854 void cairo_matrix_init_rotate(cairo_matrix_t * matrix, double radians);
856 void cairo_matrix_translate(cairo_matrix_t * matrix, double tx, double ty);
858 void cairo_matrix_scale(cairo_matrix_t * matrix, double sx, double sy);
860 void cairo_matrix_rotate(cairo_matrix_t * matrix, double radians);
862 cairo_status_t cairo_matrix_invert(cairo_matrix_t * matrix);
864 void cairo_matrix_multiply(cairo_matrix_t * result, cairo_matrix_t * a,
867 void cairo_matrix_transform_distance(cairo_matrix_t * matrix, double *dx, double *dy);
869 void cairo_matrix_transform_point(cairo_matrix_t * matrix, double *x, double *y);
871 void cairo_debug_reset_static_data(void);