# Cairo Declarations # # Copyright (C) 2006,2007,2008 PySoy Group # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program; if not, see http://www.gnu.org/licenses # # $Id$ cdef extern from "cairo/cairo.h" : cdef int cairo_version ( ) cdef char* cairo_version_string ( ) ctypedef int cairo_bool_t ctypedef struct cairo_t : void* none ctypedef struct cairo_surface_t : void* none ctypedef struct cairo_matrix_t : double xx double yx double xy double yy double x0 double y0 ctypedef struct cairo_pattern_t : void* none ctypedef void (*cairo_destroy_func_t) ( void* ) ctypedef struct cairo_user_data_key_t : int unused ctypedef enum cairo_status_t : CAIRO_STATUS_SUCCESS CAIRO_STATUS_NO_MEMORY CAIRO_STATUS_INVALID_RESTORE CAIRO_STATUS_INVALID_POP_GROUP CAIRO_STATUS_NO_CURRENT_POINT CAIRO_STATUS_INVALID_MATRIX CAIRO_STATUS_INVALID_STATUS CAIRO_STATUS_NULL_POINTER CAIRO_STATUS_INVALID_STRING CAIRO_STATUS_INVALID_PATH_DATA CAIRO_STATUS_READ_ERROR CAIRO_STATUS_WRITE_ERROR CAIRO_STATUS_SURFACE_FINISHED CAIRO_STATUS_SURFACE_TYPE_MISMATCH CAIRO_STATUS_PATTERN_TYPE_MISMATCH CAIRO_STATUS_INVALID_CONTENT CAIRO_STATUS_INVALID_FORMAT CAIRO_STATUS_INVALID_VISUAL CAIRO_STATUS_FILE_NOT_FOUND CAIRO_STATUS_INVALID_DASH CAIRO_STATUS_INVALID_DSC_COMMENT CAIRO_STATUS_INVALID_INDEX CAIRO_STATUS_CLIP_NOT_REPRESENTABLE ctypedef enum cairo_content_t : CAIRO_CONTENT_COLOR CAIRO_CONTENT_ALPHA CAIRO_CONTENT_COLOR_ALPHA ctypedef cairo_status_t (*cairo_write_func_t) ( void*, unsigned char*, unsigned int ) ctypedef cairo_status_t (*cairo_read_func_t) ( void*, unsigned char*, unsigned int ) cdef cairo_t* cairo_create ( cairo_surface_t* ) cdef cairo_t* cairo_reference ( cairo_t* ) cdef void cairo_destroy ( cairo_t* ) cdef unsigned int cairo_get_reference_count( cairo_t* ) cdef void* cairo_get_user_data ( cairo_t*, cairo_user_data_key_t* ) cdef cairo_status_t cairo_set_user_data ( cairo_t*, cairo_user_data_key_t*, void*, cairo_destroy_func_t ) cdef void cairo_save ( cairo_t* ) cdef void cairo_restore ( cairo_t* ) cdef void cairo_push_group ( cairo_t* ) cdef void cairo_push_group_with_content \ ( cairo_t*, cairo_content_t ) cdef cairo_pattern_t* cairo_pop_group ( cairo_t* ) cdef void cairo_pop_group_to_source( cairo_t* ) ctypedef enum cairo_operator_t : CAIRO_OPERATOR_CLEAR CAIRO_OPERATOR_SOURCE CAIRO_OPERATOR_OVER CAIRO_OPERATOR_IN CAIRO_OPERATOR_OUT CAIRO_OPERATOR_ATOP CAIRO_OPERATOR_DEST CAIRO_OPERATOR_DEST_OVER CAIRO_OPERATOR_DEST_IN CAIRO_OPERATOR_DEST_OUT CAIRO_OPERATOR_DEST_ATOP CAIRO_OPERATOR_XOR CAIRO_OPERATOR_ADD CAIRO_OPERATOR_SATURATE cdef void cairo_set_operator ( cairo_t*, cairo_operator_t ) cdef void cairo_set_source ( cairo_t*, cairo_pattern_t* ) cdef void cairo_set_source_rgb ( cairo_t*, double, double, double ) cdef void cairo_set_source_rgba ( cairo_t*, double, double, double, double ) cdef void cairo_set_source_surface ( cairo_t*, cairo_surface_t *, double x, double y ) cdef void cairo_set_tolerance ( cairo_t*, double ) #//cairo_antialias ctypedef enum cairo_antialias_t : CAIRO_ANTIALIAS_DEFAULT, CAIRO_ANTIALIAS_NONE, CAIRO_ANTIALIAS_GRAY, CAIRO_ANTIALIAS_SUBPIXEL cdef void cairo_set_antialias ( cairo_t *, cairo_antialias_t ) #//cairo_fill_rule ctypedef enum cairo_fill_rule_t : CAIRO_FILL_RULE_WINDING, CAIRO_FILL_RULE_EVEN_ODD cdef void cairo_set_fill_rule ( cairo_t*, cairo_fill_rule_t ) cdef void cairo_set_line_width ( cairo_t*, double ) #//cairo_line_cap ctypedef enum cairo_line_cap_t : CAIRO_LINE_CAP_BUTT, CAIRO_LINE_CAP_ROUND, CAIRO_LINE_CAP_SQUARE cdef void cairo_set_line_cap ( cairo_t*, cairo_line_cap_t ) #//cairo_line_join ctypedef enum cairo_line_join_t : CAIRO_LINE_JOIN_MITER, CAIRO_LINE_JOIN_ROUND, CAIRO_LINE_JOIN_BEVEL cdef void cairo_set_line_join ( cairo_t*, cairo_line_join_t ) cdef void cairo_set_dash ( cairo_t*, double*, int, double ) cdef void cairo_set_miter_limit ( cairo_t*, double ) cdef void cairo_translate ( cairo_t*, double, double ) cdef void cairo_scale ( cairo_t*, double, double ) cdef void cairo_rotate ( cairo_t*, double ) cdef void cairo_transform ( cairo_t*, cairo_matrix_t* ) cdef void cairo_set_matrix ( cairo_t*, cairo_matrix_t* ) cdef void cairo_identity_matrix ( cairo_t* ) cdef void cairo_user_to_device ( cairo_t*, double*, double* ) cdef void cairo_user_to_device_distance ( cairo_t*, double*, double* ) cdef void cairo_device_to_user ( cairo_t*, double *, double * ) cdef void cairo_device_to_user_distance ( cairo_t*, double*, double* ) #// Path creation functions cdef void cairo_new_path ( cairo_t* ) cdef void cairo_move_to ( cairo_t*, double, double ) cdef void cairo_new_sub_path ( cairo_t* ) cdef void cairo_line_to ( cairo_t*, double, double ) cdef void cairo_curve_to ( cairo_t*, double, double, double, double, double, double ) cdef void cairo_arc ( cairo_t*, double, double, double, double, double ) cdef void cairo_arc_negative ( cairo_t*, double, double, double, double, double ) #/* XXX: NYI # cdef void #cairo_arc_to (cairo_t *cr, # double x1, double y1, # double x2, double y2, # double radius); #*/ cdef void cairo_rel_move_to ( cairo_t*, double, double ) cdef void cairo_rel_line_to ( cairo_t*, double, double ) cdef void cairo_rel_curve_to ( cairo_t*, double, double, double, double, double, double ) cdef void cairo_rectangle ( cairo_t*, double, double, double, double ) #/* XXX: NYI # cdef void #cairo_stroke_to_path (cairo_t *cr); #*/ cdef void cairo_close_path ( cairo_t* ) #// Painting functions cdef void cairo_paint ( cairo_t* ) cdef void cairo_paint_with_alpha ( cairo_t*, double ) cdef void cairo_mask ( cairo_t*, cairo_pattern_t* ) cdef void cairo_mask_surface ( cairo_t* , cairo_surface_t*, double, double ) cdef void cairo_stroke ( cairo_t* ) cdef void cairo_stroke_preserve ( cairo_t* ) cdef void cairo_fill ( cairo_t* ) cdef void cairo_fill_preserve ( cairo_t* ) cdef void cairo_copy_page ( cairo_t* ) cdef void cairo_show_page ( cairo_t* ) #// Insideness testing cdef cairo_bool_t cairo_in_stroke ( cairo_t*, double, double ) cdef cairo_bool_t cairo_in_fill ( cairo_t*, double, double ) #// Rectangular extents cdef void cairo_stroke_extents ( cairo_t*, double*, double*, double*, double* ) cdef void cairo_fill_extents ( cairo_t*, double*, double*, double*, double*) #// Clipping cdef void cairo_reset_clip ( cairo_t* ) cdef void cairo_clip ( cairo_t* ) cdef void cairo_clip_preserve ( cairo_t* ) cdef void cairo_clip_extents ( cairo_t*, double*, double*, double*, double* ) #// STRUCT CAIRO_RECTANGLE_T ctypedef struct cairo_rectangle_t : double x double y double width double height #// STRUCT CAIRO_RECTANGLE_LIST ctypedef struct cairo_rectangle_list_t : cairo_status_t status cairo_rectangle_t *rectangles int num_rectangles cdef cairo_rectangle_list_t* cairo_copy_clip_rectangle_list( cairo_t* ) cdef void cairo_rectangle_list_destroy \ ( cairo_rectangle_list_t* ) ctypedef struct cairo_scaled_font_t : void* none ctypedef struct cairo_font_face_t : void* none ctypedef struct cairo_glyph_t : unsigned long index double x double y ctypedef struct cairo_text_extents_t : double x_bearing double y_bearing double width double height double x_advance double y_advance ctypedef struct cairo_font_extents_t : double ascent double descent double height double max_x_advance double max_y_advance ctypedef enum cairo_font_slant_t : CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_SLANT_OBLIQUE ctypedef enum cairo_font_weight_t : CAIRO_FONT_WEIGHT_NORMAL, CAIRO_FONT_WEIGHT_BOLD ctypedef enum cairo_subpixel_order_t : CAIRO_SUBPIXEL_ORDER_DEFAULT, CAIRO_SUBPIXEL_ORDER_RGB, CAIRO_SUBPIXEL_ORDER_BGR, CAIRO_SUBPIXEL_ORDER_VRGB, CAIRO_SUBPIXEL_ORDER_VBGR ctypedef enum cairo_hint_style_t : CAIRO_HINT_STYLE_DEFAULT, CAIRO_HINT_STYLE_NONE, CAIRO_HINT_STYLE_SLIGHT, CAIRO_HINT_STYLE_MEDIUM, CAIRO_HINT_STYLE_FULL ctypedef enum cairo_hint_metrics_t : CAIRO_HINT_METRICS_DEFAULT, CAIRO_HINT_METRICS_OFF, CAIRO_HINT_METRICS_ON ctypedef struct cairo_font_options_t : void* none cdef cairo_font_options_t *cairo_font_options_create () #removed (void) cdef cairo_font_options_t *cairo_font_options_copy \ ( cairo_font_options_t* ) cdef void cairo_font_options_destroy \ ( cairo_font_options_t* ) cdef cairo_status_t cairo_font_options_status \ ( cairo_font_options_t* ) cdef void cairo_font_options_merge \ ( cairo_font_options_t*, cairo_font_options_t* ) cdef cairo_bool_t cairo_font_options_equal \ ( cairo_font_options_t*, cairo_font_options_t* ) cdef unsigned long cairo_font_options_hash \ ( cairo_font_options_t* ) cdef void cairo_font_options_set_antialias \ ( cairo_font_options_t*, cairo_antialias_t ) cdef cairo_antialias_t cairo_font_options_get_antialias \ ( cairo_font_options_t* ) cdef void cairo_font_options_set_subpixel_order \ ( cairo_font_options_t*, cairo_subpixel_order_t ) cdef cairo_subpixel_order_t cairo_font_options_get_subpixel_order \ ( cairo_font_options_t* ) cdef void cairo_font_options_set_hint_style \ ( cairo_font_options_t*, cairo_hint_style_t ) cdef cairo_hint_style_t cairo_font_options_get_hint_style \ ( cairo_font_options_t* ) cdef void cairo_font_options_set_hint_metrics \ ( cairo_font_options_t*, cairo_hint_metrics_t ) cdef cairo_hint_metrics_t cairo_font_options_get_hint_metrics \ ( cairo_font_options_t* ) #// This interface is for dealing with text as text, not caring about the #// font object inside the the cairo_t. */ cdef void cairo_select_font_face ( cairo_t*, char*, cairo_font_slant_t, cairo_font_weight_t) cdef void cairo_set_font_size ( cairo_t*, double ) cdef void cairo_set_font_matrix ( cairo_t*, cairo_matrix_t* ) cdef void cairo_get_font_matrix ( cairo_t*, cairo_matrix_t* ) cdef void cairo_set_font_options \ ( cairo_t*, cairo_font_options_t* ) cdef void cairo_get_font_options \ ( cairo_t*, cairo_font_options_t*) cdef void cairo_set_font_face ( cairo_t*, cairo_font_face_t* ) cdef cairo_font_face_t *cairo_get_font_face ( cairo_t* ) cdef void cairo_set_scaled_font \ ( cairo_t*, cairo_scaled_font_t* ) cdef cairo_scaled_font_t *cairo_get_scaled_font ( cairo_t* ) cdef void cairo_show_text ( cairo_t*, char* ) cdef void cairo_show_glyphs ( cairo_t*, cairo_glyph_t*, int ) cdef void cairo_text_path ( cairo_t*, char* ) cdef void cairo_glyph_path ( cairo_t*, cairo_glyph_t*, int ) cdef void cairo_text_extents \ ( cairo_t*, char*, cairo_text_extents_t* ) cdef void cairo_glyph_extents( \ cairo_t*, cairo_glyph_t*, int, cairo_text_extents_t* ) cdef void cairo_font_extents( cairo_t*, cairo_font_extents_t* ) #// Generic identifier for a font style cdef cairo_font_face_t *cairo_font_face_reference \ ( cairo_font_face_t* ) cdef void cairo_font_face_destroy \ ( cairo_font_face_t* ) cdef unsigned int cairo_font_face_get_reference_count \ ( cairo_font_face_t* ) cdef cairo_status_t cairo_font_face_status \ ( cairo_font_face_t* ) ctypedef enum cairo_font_type_t : CAIRO_FONT_TYPE_TOY, CAIRO_FONT_TYPE_FT, CAIRO_FONT_TYPE_WIN32, CAIRO_FONT_TYPE_ATSUI cdef cairo_font_type_t cairo_font_face_get_type \ ( cairo_font_face_t* ) cdef void *cairo_font_face_get_user_data \ ( cairo_font_face_t*, cairo_user_data_key_t* ) cdef cairo_status_t cairo_font_face_set_user_data \ ( cairo_font_face_t*, cairo_user_data_key_t*, void*, cairo_destroy_func_t ) #// Portable interface to general font features. cdef cairo_scaled_font_t *cairo_scaled_font_create \ ( cairo_font_face_t*, cairo_matrix_t*, cairo_matrix_t*, cairo_font_options_t* ) cdef cairo_scaled_font_t *cairo_scaled_font_reference\ ( cairo_scaled_font_t* ) cdef void cairo_scaled_font_destroy \ ( cairo_scaled_font_t* ) cdef unsigned int cairo_scaled_font_get_reference_count \ ( cairo_scaled_font_t* ) cdef cairo_status_t cairo_scaled_font_status \ ( cairo_scaled_font_t* ) cdef cairo_font_type_t cairo_scaled_font_get_type \ ( cairo_scaled_font_t* ) cdef void *cairo_scaled_font_get_user_data \ ( cairo_scaled_font_t*, cairo_user_data_key_t* ) cdef cairo_status_t cairo_scaled_font_set_user_data \ ( cairo_scaled_font_t*, cairo_user_data_key_t*, void*, cairo_destroy_func_t ) cdef void cairo_scaled_font_extents \ ( cairo_scaled_font_t*, cairo_font_extents_t* ) cdef void cairo_scaled_font_text_extents \ ( cairo_scaled_font_t*, char*, cairo_text_extents_t* ) cdef void cairo_scaled_font_glyph_extents \ ( cairo_scaled_font_t*, cairo_glyph_t*, int, cairo_text_extents_t* ) cdef cairo_font_face_t *cairo_scaled_font_get_font_face \ ( cairo_scaled_font_t* ) cdef void cairo_scaled_font_get_font_matrix \ ( cairo_scaled_font_t*, cairo_matrix_t* ) cdef void cairo_scaled_font_get_ctm \ ( cairo_scaled_font_t*, cairo_matrix_t* ) cdef void cairo_scaled_font_get_font_options \ ( cairo_scaled_font_t*, cairo_font_options_t* ) #// Query functions cdef cairo_operator_t cairo_get_operator ( cairo_t* ) cdef cairo_pattern_t *cairo_get_source ( cairo_t* ) cdef double cairo_get_tolerance ( cairo_t* ) cdef cairo_antialias_t cairo_get_antialias ( cairo_t* ) cdef void cairo_get_current_point ( cairo_t*, double*, double* ) cdef cairo_fill_rule_t cairo_get_fill_rule ( cairo_t* ) cdef double cairo_get_line_width ( cairo_t* ) cdef cairo_line_cap_t cairo_get_line_cap ( cairo_t* ) cdef cairo_line_join_t cairo_get_line_join ( cairo_t* ) cdef double cairo_get_miter_limit ( cairo_t* ) cdef int cairo_get_dash_count ( cairo_t* ) cdef void cairo_get_dash ( cairo_t*, double*, double * ) cdef void cairo_get_matrix ( cairo_t*, cairo_matrix_t* ) cdef cairo_surface_t *cairo_get_target ( cairo_t* ) cdef cairo_surface_t *cairo_get_group_target ( cairo_t* ) ctypedef enum cairo_path_data_type_t : CAIRO_PATH_MOVE_TO, CAIRO_PATH_LINE_TO, CAIRO_PATH_CURVE_TO, CAIRO_PATH_CLOSE_PATH # #typedef union _cairo_path_data_t cairo_path_data_t; #union _cairo_path_data_t { # struct { # cairo_path_data_type_t type; # int length; # } header; # struct { # double x, y; # } point; #}; # #dubl> maybe this is not needed # ctypedef union cairo_path_data_t : # void* none cdef struct Header : cairo_path_data_type_t type int length cdef struct Point : double x double y # # dubl> maybe this will do. # ctypedef union cairo_path_data_t : Header header Point point # # pressing on. # ctypedef struct cairo_path_t : cairo_status_t status cairo_path_data_t *data int num_data cdef cairo_path_t *cairo_copy_path ( cairo_t* ) cdef cairo_path_t *cairo_copy_path_flat ( cairo_t* ) cdef void cairo_append_path \ ( cairo_t*, cairo_path_t* ) cdef void cairo_path_destroy \ ( cairo_path_t* ) #//Error status queries cdef cairo_status_t cairo_status ( cairo_t* ) cdef char *cairo_status_to_string \ ( cairo_status_t status ) #// Surface manipulation cdef cairo_surface_t *cairo_surface_create_similar \ ( cairo_surface_t *other, cairo_content_t content, int, int ) cdef cairo_surface_t *cairo_surface_reference ( cairo_surface_t* ) cdef void cairo_surface_finish ( cairo_surface_t* ) cdef void cairo_surface_destroy ( cairo_surface_t* ) cdef unsigned int cairo_surface_get_reference_count \ ( cairo_surface_t* ) cdef cairo_status_t cairo_surface_status ( cairo_surface_t* ) ctypedef enum cairo_surface_type_t : CAIRO_SURFACE_TYPE_IMAGE, CAIRO_SURFACE_TYPE_PDF, CAIRO_SURFACE_TYPE_PS, CAIRO_SURFACE_TYPE_XLIB, CAIRO_SURFACE_TYPE_XCB, CAIRO_SURFACE_TYPE_GLITZ, CAIRO_SURFACE_TYPE_QUARTZ, CAIRO_SURFACE_TYPE_WIN32, CAIRO_SURFACE_TYPE_BEOS, CAIRO_SURFACE_TYPE_DIRECTFB, CAIRO_SURFACE_TYPE_SVG, CAIRO_SURFACE_TYPE_OS2 cdef cairo_surface_type_t cairo_surface_get_type ( cairo_surface_t* ) cdef cairo_content_t cairo_surface_get_content ( cairo_surface_t* ) #if CAIRO_HAS_PNG_FUNCTIONS cdef cairo_status_t cairo_surface_write_to_png( cairo_surface_t*, char* ) cdef cairo_status_t cairo_surface_write_to_png_stream \ ( cairo_surface_t*, cairo_write_func_t, void* ) #endif cdef void *cairo_surface_get_user_data \ ( cairo_surface_t*, cairo_user_data_key_t* ) cdef cairo_status_t cairo_surface_set_user_data \ ( cairo_surface_t*, cairo_user_data_key_t*, void*, cairo_destroy_func_t ) cdef void cairo_surface_get_font_options \ ( cairo_surface_t*, cairo_font_options_t* ) cdef void cairo_surface_flush \ ( cairo_surface_t* ) cdef void cairo_surface_mark_dirty \ ( cairo_surface_t* ) cdef void cairo_surface_mark_dirty_rectangle \ ( cairo_surface_t*, int, int, int, int ) cdef void cairo_surface_set_device_offset \ ( cairo_surface_t*, double, double ) cdef void cairo_surface_get_device_offset \ ( cairo_surface_t*, double, double ) cdef void cairo_surface_set_fallback_resolution \ ( cairo_surface_t*, double, double ) #// END OF TOP ctypedef enum cairo_format_t : CAIRO_FORMAT_ARGB32, CAIRO_FORMAT_RGB24, CAIRO_FORMAT_A8, CAIRO_FORMAT_A1 cdef cairo_surface_t* cairo_image_surface_create ( cairo_format_t, int, int ) cdef cairo_surface_t* cairo_image_surface_create_for_data \ ( unsigned char*, cairo_format_t, int, int, int ) cdef cairo_format_t cairo_image_surface_get_format ( cairo_surface_t* ) cdef int cairo_image_surface_get_width ( cairo_surface_t* ) cdef int cairo_image_surface_get_height ( cairo_surface_t* ) cdef int cairo_image_surface_get_stride ( cairo_surface_t* ) #if CAIRO_HAS_PNG_FUNCTIONS cdef char *cairo_image_surface_create_from_png \ ( cairo_surface_t* ) cdef void *cairo_image_surface_create_from_png_stream \ ( cairo_read_func_t, void* ) #endif # Pattern creation functions cdef unsigned char *cairo_image_surface_get_data ( cairo_surface_t* ) cdef cairo_pattern_t *cairo_pattern_create_rgb ( double, double, double ) cdef cairo_pattern_t *cairo_pattern_create_rgba ( double, double, double, double ) cdef cairo_pattern_t *cairo_pattern_create_for_surface \ ( cairo_surface_t* ) cdef cairo_pattern_t *cairo_pattern_create_linear ( double, double, double, double ) cdef cairo_pattern_t *cairo_pattern_create_radial ( double, double, double, double, double, double ) cdef cairo_pattern_t *cairo_pattern_reference ( cairo_pattern_t* ) cdef void cairo_pattern_destroy ( cairo_pattern_t* ) cdef unsigned int cairo_pattern_get_reference_count \ ( cairo_pattern_t* ) cdef cairo_status_t cairo_pattern_status ( cairo_pattern_t* ) cdef void *cairo_pattern_get_user_data ( cairo_pattern_t*, cairo_user_data_key_t* ) cdef cairo_status_t cairo_pattern_set_user_data ( cairo_pattern_t*, cairo_user_data_key_t*, void*, cairo_destroy_func_t ) # cairo_pattern_type_t ctypedef enum cairo_pattern_type_t : CAIRO_PATTERN_TYPE_SOLID, CAIRO_PATTERN_TYPE_SURFACE, CAIRO_PATTERN_TYPE_LINEAR, CAIRO_PATTERN_TYPE_RADIAL cdef cairo_pattern_type_t cairo_pattern_get_type ( cairo_pattern_t* ) cdef void cairo_pattern_add_color_stop_rgb \ ( cairo_pattern_t*, double, double, double, double ) cdef void cairo_pattern_add_color_stop_rgba \ ( cairo_pattern_t*, double, double, double, double, double ) cdef void cairo_pattern_set_matrix ( cairo_pattern_t*, cairo_matrix_t * ) cdef void cairo_pattern_get_matrix ( cairo_pattern_t*, cairo_matrix_t* ) # cairo_extend_t ctypedef enum cairo_extend_t : CAIRO_EXTEND_NONE, CAIRO_EXTEND_REPEAT, CAIRO_EXTEND_REFLECT, CAIRO_EXTEND_PAD cdef void cairo_pattern_set_extend ( cairo_pattern_t*, cairo_extend_t ) cdef cairo_extend_t cairo_pattern_get_extend ( cairo_pattern_t* ) ctypedef enum cairo_filter_t : CAIRO_FILTER_FAST, CAIRO_FILTER_GOOD, CAIRO_FILTER_BEST, CAIRO_FILTER_NEAREST, CAIRO_FILTER_BILINEAR, CAIRO_FILTER_GAUSSIAN cdef void cairo_pattern_set_filter ( cairo_pattern_t*, cairo_filter_t ) cdef cairo_filter_t cairo_pattern_get_filter ( cairo_pattern_t* ) cdef cairo_status_t cairo_pattern_get_rgba ( cairo_pattern_t*, double*, double*, double*, double* ) cdef cairo_status_t cairo_pattern_get_surface ( cairo_pattern_t*, cairo_surface_t** ) cdef cairo_status_t cairo_pattern_get_color_stop_rgba \ ( cairo_pattern_t*, int, double*, double*, double*, double*, double* ) cdef cairo_status_t cairo_pattern_get_color_stop_count \ ( cairo_pattern_t*, int* ) cdef cairo_status_t cairo_pattern_get_linear_points \ ( cairo_pattern_t*, double*, double *, double*, double * ) cdef cairo_status_t cairo_pattern_get_radial_circles \ ( cairo_pattern_t*, double*, double*, double*, double*, double*, double* ) # Matrix functions cdef void cairo_matrix_init ( cairo_matrix_t*, double, double, double, double, double, double ) cdef void cairo_matrix_init_identity ( cairo_matrix_t* ) cdef void cairo_matrix_init_translate ( cairo_matrix_t*, double, double ) cdef void cairo_matrix_init_scale ( cairo_matrix_t*, double, double ) cdef void cairo_matrix_init_rotate ( cairo_matrix_t*, double ) cdef void cairo_matrix_translate ( cairo_matrix_t*, double, double ) cdef void cairo_matrix_scale ( cairo_matrix_t*, double, double ) cdef void cairo_matrix_rotate ( cairo_matrix_t*, double ) cdef cairo_status_t cairo_matrix_invert ( cairo_matrix_t* ) cdef void cairo_matrix_multiply ( cairo_matrix_t*, cairo_matrix_t*, cairo_matrix_t* ) cdef void cairo_matrix_transform_distance \ ( cairo_matrix_t*, double*, double* ) cdef void cairo_matrix_transform_point ( cairo_matrix_t*, double*, double* ) # Functions for debugging (not intended for use in production code) # had to remove -> void <- from the argument list of the next line cdef void cairo_debug_reset_static_data ( ) cdef extern from "cairo/cairo-svg.h" : ctypedef enum cairo_svg_version_t: CAIRO_SVG_VERSION_1_1, CAIRO_SVG_VERSION_1_2 cdef cairo_surface_t *cairo_svg_surface_create ( char*, double, double ) cdef cairo_surface_t *cairo_svg_surface_create_for_stream \ ( cairo_write_func_t, void*, double, double ) cdef void cairo_svg_surface_restrict_to_version \ ( cairo_surface_t*, cairo_svg_version_t ) cdef void cairo_svg_get_versions ( cairo_svg_version_t**, int* ) cdef char *cairo_svg_version_to_string \ ( cairo_svg_version_t )