Mercurial > projects > dynamin
diff dynamin/c/cairo.d @ 0:aa4efef0f0b1
Initial commit of code.
author | Jordan Miner <jminer7@gmail.com> |
---|---|
date | Mon, 15 Jun 2009 22:10:48 -0500 |
parents | |
children | acdbb30fee7e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynamin/c/cairo.d Mon Jun 15 22:10:48 2009 -0500 @@ -0,0 +1,803 @@ +module dynamin.c.cairo; + +/* + * A complete binding to the core of + * the cairo graphics library version 1.3.16. + */ + +version(build) { pragma(link, cairo); } + +extern(C): + +int CAIRO_VERSION_ENCODE(int major, int minor, int micro) { + return major * 10000 + minor * 100 + micro * 1; +} + +int cairo_version(); + +char* cairo_version_string(); + +alias int cairo_bool_t; + +typedef void cairo_t; + +typedef void cairo_surface_t; + +struct cairo_matrix_t { + double xx; double yx; + double xy; double yy; + double x0; double y0; +} + +typedef void cairo_pattern_t; + +typedef void function(void* data) cairo_destroy_func_t; + +struct cairo_user_data_key_t { + int unused; +} + +alias int cairo_status_t; +enum { + CAIRO_STATUS_SUCCESS = 0, + 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 +} + +alias int cairo_content_t; +enum { + CAIRO_CONTENT_COLOR = 0x1000, + CAIRO_CONTENT_ALPHA = 0x2000, + CAIRO_CONTENT_COLOR_ALPHA = 0x3000 +} + +typedef cairo_status_t function(void* closure, char* data, uint length) cairo_write_func_t; + +typedef cairo_status_t function(void* closure, char* data, uint length) cairo_read_func_t; + +cairo_t* cairo_create(cairo_surface_t* target); + +cairo_t* cairo_reference(cairo_t* cr); + +void cairo_destroy(cairo_t* cr); + +uint cairo_get_reference_count(cairo_t* cr); + +void* cairo_get_user_data(cairo_t* cr, cairo_user_data_key_t* key); + +cairo_status_t cairo_set_user_data( + cairo_t* cr, + cairo_user_data_key_t* key, + void* user_data, + cairo_destroy_func_t destroy); + +void cairo_save(cairo_t* cr); + +void cairo_restore(cairo_t* cr); + +void cairo_push_group(cairo_t* cr); + +void cairo_push_group_with_content(cairo_t* cr, cairo_content_t content); + +cairo_pattern_t* cairo_pop_group(cairo_t* cr); + +void cairo_pop_group_to_source(cairo_t* cr); + +alias int cairo_operator_t; +enum { + 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 +} + +void cairo_set_operator(cairo_t* cr, cairo_operator_t op); + +void cairo_set_source(cairo_t* cr, cairo_pattern_t* source); + +void cairo_set_source_rgb(cairo_t* cr, double red, double green, double blue); + +void cairo_set_source_rgba(cairo_t* cr, double red, double green, double blue, double alpha); + +void cairo_set_source_surface(cairo_t* cr, cairo_surface_t* surface, double x, double y); + +void cairo_set_tolerance(cairo_t* cr, double tolerance); + +alias int cairo_antialias_t; +enum { + CAIRO_ANTIALIAS_DEFAULT, + CAIRO_ANTIALIAS_NONE, + CAIRO_ANTIALIAS_GRAY, + CAIRO_ANTIALIAS_SUBPIXEL +} + +void cairo_set_antialias(cairo_t* cr, cairo_antialias_t antialias); + +alias int cairo_fill_rule_t; +enum { + CAIRO_FILL_RULE_WINDING, + CAIRO_FILL_RULE_EVEN_ODD +} + +void cairo_set_fill_rule(cairo_t* cr, cairo_fill_rule_t fill_rule); + +void cairo_set_line_width(cairo_t* cr, double width); + +alias int cairo_line_cap_t; +enum { + CAIRO_LINE_CAP_BUTT, + CAIRO_LINE_CAP_ROUND, + CAIRO_LINE_CAP_SQUARE +} + +void cairo_set_line_cap(cairo_t* cr, cairo_line_cap_t line_cap); + +alias int cairo_line_join_t; +enum { + CAIRO_LINE_JOIN_MITER, + CAIRO_LINE_JOIN_ROUND, + CAIRO_LINE_JOIN_BEVEL +} + +void cairo_set_line_join(cairo_t* cr, cairo_line_join_t line_join); + +void cairo_set_dash(cairo_t* cr, double* dashes, int num_dashes, double offset); + +void cairo_set_miter_limit(cairo_t* cr, double limit); + +void cairo_translate(cairo_t* cr, double tx, double ty); + +void cairo_scale(cairo_t* cr, double sx, double sy); + +void cairo_rotate(cairo_t* cr, double angle); + +void cairo_transform(cairo_t* cr, cairo_matrix_t* matrix); + +void cairo_set_matrix(cairo_t* cr, cairo_matrix_t* matrix); + +void cairo_identity_matrix(cairo_t* cr); + +void cairo_user_to_device(cairo_t* cr, double* x, double* y); + +void cairo_user_to_device_distance(cairo_t* cr, double* dx, double* dy); + +void cairo_device_to_user(cairo_t* cr, double* x, double* y); + +void cairo_device_to_user_distance(cairo_t* cr, double* dx, double* dy); + +void cairo_new_path(cairo_t* cr); + +void cairo_move_to(cairo_t* cr, double x, double y); + +void cairo_new_sub_path(cairo_t* cr); + +void cairo_line_to(cairo_t* cr, double x, double y); + +void cairo_curve_to(cairo_t* cr, double x1, double y1, double x2, double y2, double x3, double y3); + +void cairo_arc(cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2); + +void cairo_arc_negative(cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2); + +void cairo_rel_move_to(cairo_t* cr, double dx, double dy); + +void cairo_rel_line_to(cairo_t* cr, double dx, double dy); + +void cairo_rel_curve_to(cairo_t* cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3); + +void cairo_rectangle(cairo_t* cr, double x, double y, double width, double height); + +void cairo_close_path(cairo_t* cr); + +void cairo_paint(cairo_t* cr); + +void cairo_paint_with_alpha(cairo_t* cr, double alpha); + +void cairo_mask(cairo_t* cr, cairo_pattern_t* pattern); + +void cairo_mask_surface( + cairo_t* cr, + cairo_surface_t* surface, + double surface_x, double surface_y); + +void cairo_stroke(cairo_t* cr); + +void cairo_stroke_preserve(cairo_t* cr); + +void cairo_fill(cairo_t* cr); + +void cairo_fill_preserve(cairo_t* cr); + +void cairo_copy_page(cairo_t* cr); + +void cairo_show_page(cairo_t* cr); + +cairo_bool_t cairo_in_stroke(cairo_t* cr, double x, double y); + +cairo_bool_t cairo_in_fill(cairo_t* cr, double x, double y); + +void cairo_stroke_extents( + cairo_t* cr, + double* x1, double* y1, + double* x2, double* y2); + +void cairo_fill_extents( + cairo_t* cr, + double* x1, double* y1, + double* x2, double* y2); + +void cairo_reset_clip(cairo_t* cr); + +void cairo_clip(cairo_t* cr); + +void cairo_clip_preserve(cairo_t* cr); + +void cairo_clip_extents( + cairo_t* cr, + double* x1, double* y1, + double* x2, double* y2); + +struct cairo_rectangle_t { + double x, y, width, height; +} + +struct cairo_rectangle_list_t { + cairo_status_t status; + cairo_rectangle_t* rectangles; + int num_rectangles; +} + +cairo_rectangle_list_t* cairo_copy_clip_rectangle_list(cairo_t* cr); + +void cairo_rectangle_list_destroy(cairo_rectangle_list_t* rectangle_list); + +typedef void cairo_scaled_font_t; + +typedef void cairo_font_face_t; + +struct cairo_glyph_t { + uint index; + double x; + double y; +} + +struct cairo_text_extents_t { + double x_bearing; + double y_bearing; + double width; + double height; + double x_advance; + double y_advance; +} + +struct cairo_font_extents_t { + double ascent; + double descent; + double height; + double max_x_advance; + double max_y_advance; +} + +alias int cairo_font_slant_t; +enum { + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_SLANT_ITALIC, + CAIRO_FONT_SLANT_OBLIQUE +} + +alias int cairo_font_weight_t; +enum { + CAIRO_FONT_WEIGHT_NORMAL, + CAIRO_FONT_WEIGHT_BOLD +} + +alias int cairo_subpixel_order_t; +enum { + CAIRO_SUBPIXEL_ORDER_DEFAULT, + CAIRO_SUBPIXEL_ORDER_RGB, + CAIRO_SUBPIXEL_ORDER_BGR, + CAIRO_SUBPIXEL_ORDER_VRGB, + CAIRO_SUBPIXEL_ORDER_VBGR +} + +alias int cairo_hint_style_t; +enum { + CAIRO_HINT_STYLE_DEFAULT, + CAIRO_HINT_STYLE_NONE, + CAIRO_HINT_STYLE_SLIGHT, + CAIRO_HINT_STYLE_MEDIUM, + CAIRO_HINT_STYLE_FULL +} + +alias int cairo_hint_metrics_t; +enum { + CAIRO_HINT_METRICS_DEFAULT, + CAIRO_HINT_METRICS_OFF, + CAIRO_HINT_METRICS_ON +} + +typedef void cairo_font_options_t; + +cairo_font_options_t* cairo_font_options_create(); + +cairo_font_options_t* cairo_font_options_copy(cairo_font_options_t* original); + +void cairo_font_options_destroy(cairo_font_options_t* options); + +cairo_status_t cairo_font_options_status(cairo_font_options_t* options); + +void cairo_font_options_merge(cairo_font_options_t* options, cairo_font_options_t* other); + +cairo_bool_t cairo_font_options_equal( + cairo_font_options_t* options, + cairo_font_options_t* other); + +uint cairo_font_options_hash(cairo_font_options_t* options); + +void cairo_font_options_set_antialias(cairo_font_options_t* options, cairo_antialias_t antialias); + +cairo_antialias_t cairo_font_options_get_antialias(cairo_font_options_t* options); + +void cairo_font_options_set_subpixel_order(cairo_font_options_t* options, cairo_subpixel_order_t subpixel_order); + +cairo_subpixel_order_t cairo_font_options_get_subpixel_order(cairo_font_options_t* options); + +void cairo_font_options_set_hint_style(cairo_font_options_t* options, cairo_hint_style_t hint_style); + +cairo_hint_style_t cairo_font_options_get_hint_style(cairo_font_options_t* options); + +void cairo_font_options_set_hint_metrics(cairo_font_options_t* options, cairo_hint_metrics_t hint_metrics); + +cairo_hint_metrics_t cairo_font_options_get_hint_metrics(cairo_font_options_t* options); + +void cairo_select_font_face( + cairo_t* cr, + char* family, + cairo_font_slant_t slant, + cairo_font_weight_t weight); + +void cairo_set_font_size(cairo_t* cr, double size); + +void cairo_set_font_matrix(cairo_t* cr, cairo_matrix_t* matrix); + +void cairo_get_font_matrix(cairo_t* cr, cairo_matrix_t* matrix); + +void cairo_set_font_options(cairo_t* cr, cairo_font_options_t* options); + +void cairo_get_font_options(cairo_t* cr, cairo_font_options_t* options); + +void cairo_set_font_face(cairo_t* cr, cairo_font_face_t* font_face); + +cairo_font_face_t* cairo_get_font_face(cairo_t* cr); + +void cairo_set_scaled_font(cairo_t* cr, cairo_scaled_font_t* scaled_font); + +cairo_scaled_font_t* cairo_get_scaled_font(cairo_t* cr); + +void cairo_show_text(cairo_t* cr, char* utf8); + +void cairo_show_glyphs(cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs); + +void cairo_text_path(cairo_t* cr, char* utf8); + +void cairo_glyph_path(cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs); + +void cairo_text_extents(cairo_t* cr, char* utf8, cairo_text_extents_t* extents); + +void cairo_glyph_extents( + cairo_t* cr, + cairo_glyph_t* glyphs, int num_glyphs, + cairo_text_extents_t* extents); + +void cairo_font_extents(cairo_t* cr, cairo_font_extents_t* extents); + +void cairo_text_path(cairo_t* cr, char* utf8); + +void cairo_glyph_path(cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs); + + +cairo_font_face_t* cairo_font_face_reference(cairo_font_face_t* font_face); + +void cairo_font_face_destroy(cairo_font_face_t* font_face); + +uint cairo_font_face_get_reference_count(cairo_font_face_t* font_face); + +cairo_status_t cairo_font_face_status(cairo_font_face_t* font_face); + +alias int cairo_font_type_t; +enum { + CAIRO_FONT_TYPE_TOY, + CAIRO_FONT_TYPE_FT, + CAIRO_FONT_TYPE_WIN32, + CAIRO_FONT_TYPE_ATSUI +} + +cairo_font_type_t cairo_font_face_get_type(cairo_font_face_t* font_face); + +void* cairo_font_face_get_user_data( + cairo_font_face_t* font_face, + cairo_user_data_key_t* key); + +cairo_status_t 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); + +cairo_scaled_font_t* cairo_scaled_font_create( + cairo_font_face_t* font_face, + cairo_matrix_t* font_matrix, + cairo_matrix_t* ctm, + cairo_font_options_t* options); + +cairo_scaled_font_t* cairo_scaled_font_reference( + cairo_scaled_font_t* scaled_font); + +void cairo_scaled_font_destroy(cairo_scaled_font_t* scaled_font); + +uint cairo_scaled_font_get_reference_count(cairo_scaled_font_t* scaled_font); + +cairo_status_t cairo_scaled_font_status(cairo_scaled_font_t* scaled_font); + +cairo_font_type_t cairo_scaled_font_get_type(cairo_scaled_font_t* scaled_font); + +void* cairo_scaled_font_get_user_data( + cairo_scaled_font_t* scaled_font, + cairo_user_data_key_t* key); + +cairo_status_t 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); + +void cairo_scaled_font_extents(cairo_scaled_font_t* scaled_font, cairo_font_extents_t* extents); + +void cairo_scaled_font_text_extents( + cairo_scaled_font_t* scaled_font, + char* utf8, + cairo_text_extents_t* extents); + +void cairo_scaled_font_glyph_extents( + cairo_scaled_font_t* scaled_font, + cairo_glyph_t* glyphs, int num_glyphs, + cairo_text_extents_t* extents); + +cairo_font_face_t* cairo_scaled_font_get_font_face(cairo_scaled_font_t* scaled_font); + +void cairo_scaled_font_get_font_matrix( + cairo_scaled_font_t* scaled_font, + cairo_matrix_t* font_matrix); + +void cairo_scaled_font_get_ctm( + cairo_scaled_font_t* scaled_font, + cairo_matrix_t* ctm); + +void cairo_scaled_font_get_font_options( + cairo_scaled_font_t* scaled_font, + cairo_font_options_t* options); + + +cairo_operator_t cairo_get_operator(cairo_t* cr); + +cairo_pattern_t* cairo_get_source(cairo_t* cr); + +double cairo_get_tolerance(cairo_t* cr); + +cairo_antialias_t cairo_get_antialias(cairo_t* cr); + +void cairo_get_current_point(cairo_t* cr, double* x, double* y); + +cairo_fill_rule_t cairo_get_fill_rule(cairo_t* cr); + +double cairo_get_line_width(cairo_t* cr); + +cairo_line_cap_t cairo_get_line_cap(cairo_t* cr); + +cairo_line_join_t cairo_get_line_join(cairo_t* cr); + +double cairo_get_miter_limit(cairo_t* cr); + +int cairo_get_dash_count(cairo_t* cr); + +void cairo_get_dash(cairo_t* cr, double* dashes, double* offset); + +void cairo_get_matrix(cairo_t* cr, cairo_matrix_t* matrix); + +cairo_surface_t* cairo_get_target(cairo_t* cr); + +cairo_surface_t* cairo_get_group_target(cairo_t* cr); + +alias int cairo_path_data_type_t; +enum { + CAIRO_PATH_MOVE_TO, + CAIRO_PATH_LINE_TO, + CAIRO_PATH_CURVE_TO, + CAIRO_PATH_CLOSE_PATH +} + +union cairo_path_data_t { + struct _header { + cairo_path_data_type_t type; + int length; + } + struct _point { + double x, y; + } + _header header; + _point point; +} + +struct cairo_path_t { + cairo_status_t status; + cairo_path_data_t* data; + int num_data; +} + +cairo_path_t* cairo_copy_path(cairo_t* cr); + +cairo_path_t* cairo_copy_path_flat(cairo_t* cr); + +void cairo_append_path(cairo_t* cr, cairo_path_t* path); + +void cairo_path_destroy(cairo_path_t* path); + +cairo_status_t cairo_status(cairo_t* cr); + +char* cairo_status_to_string(cairo_status_t status); + + +cairo_surface_t* cairo_surface_create_similar( + cairo_surface_t* other, + cairo_content_t content, + int width, int height); + +cairo_surface_t* cairo_surface_reference(cairo_surface_t* surface); + +void cairo_surface_finish(cairo_surface_t* surface); + +void cairo_surface_destroy(cairo_surface_t* surface); + +uint cairo_surface_get_reference_count(cairo_surface_t* surface); + +cairo_status_t cairo_surface_status(cairo_surface_t* surface); + +alias int cairo_surface_type_t; +enum { + 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 +} + +cairo_surface_type_t cairo_surface_get_type(cairo_surface_t* surface); + +cairo_content_t cairo_surface_get_content(cairo_surface_t* surface); + +void* cairo_surface_get_user_data( + cairo_surface_t* surface, + cairo_user_data_key_t* key); + +cairo_status_t cairo_surface_set_user_data( + cairo_surface_t* surface, + cairo_user_data_key_t* key, + void* user_data, + cairo_destroy_func_t destroy); + +void cairo_surface_get_font_options(cairo_surface_t* surface, cairo_font_options_t* options); + +void cairo_surface_flush(cairo_surface_t* surface); + +void cairo_surface_mark_dirty(cairo_surface_t* surface); + +void cairo_surface_mark_dirty_rectangle(cairo_surface_t* surface, int x, int y, int width, int height); + +void cairo_surface_set_device_offset(cairo_surface_t* surface, double x_offset, double y_offset); + +void cairo_surface_get_device_offset( + cairo_surface_t* surface, + double* x_offset, double* y_offset); + +void cairo_surface_set_fallback_resolution( + cairo_surface_t* surface, + double x_pixels_per_inch, double y_pixels_per_inch); + +alias int cairo_format_t; +enum { + CAIRO_FORMAT_ARGB32, + CAIRO_FORMAT_RGB24, + CAIRO_FORMAT_A8, + CAIRO_FORMAT_A1 +} + +cairo_surface_t* cairo_image_surface_create(cairo_format_t format, int width, int height); + +cairo_surface_t* cairo_image_surface_create_for_data( + char* data, + cairo_format_t format, + int width, int height, int stride); + +char* cairo_image_surface_get_data(cairo_surface_t* surface); + +cairo_format_t cairo_image_surface_get_format(cairo_surface_t* surface); + +int cairo_image_surface_get_width(cairo_surface_t* surface); + +int cairo_image_surface_get_height(cairo_surface_t* surface); + +int cairo_image_surface_get_stride(cairo_surface_t* surface); + + +cairo_pattern_t* cairo_pattern_create_rgb(double red, double green, double blue); + +cairo_pattern_t* cairo_pattern_create_rgba(double red, double green, double blue, double alpha); + +cairo_pattern_t* cairo_pattern_create_for_surface(cairo_surface_t* surface); + +cairo_pattern_t* cairo_pattern_create_linear(double x0, double y0, double x1, double y1); + +cairo_pattern_t* cairo_pattern_create_radial(double cx0, double cy0, double radius0, double cx1, double cy1, double radius1); + +cairo_pattern_t* cairo_pattern_reference(cairo_pattern_t* pattern); + +void cairo_pattern_destroy(cairo_pattern_t* pattern); + +uint cairo_pattern_get_reference_count(cairo_pattern_t* pattern); + +cairo_status_t cairo_pattern_status(cairo_pattern_t* pattern); + +void* cairo_pattern_get_user_data( + cairo_pattern_t* pattern, + cairo_user_data_key_t* key); + +cairo_status_t cairo_pattern_set_user_data( + cairo_pattern_t* pattern, + cairo_user_data_key_t* key, + void* user_data, + cairo_destroy_func_t destroy); + +alias int cairo_pattern_type_t; +enum { + CAIRO_PATTERN_TYPE_SOLID, + CAIRO_PATTERN_TYPE_SURFACE, + CAIRO_PATTERN_TYPE_LINEAR, + CAIRO_PATTERN_TYPE_RADIAL +} + +cairo_pattern_type_t cairo_pattern_get_type(cairo_pattern_t* pattern); + +void cairo_pattern_add_color_stop_rgb( + cairo_pattern_t* pattern, double offset, + double red, double green, double blue); + +void cairo_pattern_add_color_stop_rgba( + cairo_pattern_t* pattern, double offset, + double red, double green, double blue, double alpha); + +void cairo_pattern_set_matrix(cairo_pattern_t* pattern, cairo_matrix_t* matrix); + +void cairo_pattern_get_matrix(cairo_pattern_t* pattern, cairo_matrix_t* matrix); + +alias int cairo_extend_t; +enum { + CAIRO_EXTEND_NONE, + CAIRO_EXTEND_REPEAT, + CAIRO_EXTEND_REFLECT, + CAIRO_EXTEND_PAD +} + +void cairo_pattern_set_extend(cairo_pattern_t* pattern, cairo_extend_t extend); + +cairo_extend_t cairo_pattern_get_extend(cairo_pattern_t* pattern); + +alias int cairo_filter_t; +enum { + CAIRO_FILTER_FAST, + CAIRO_FILTER_GOOD, + CAIRO_FILTER_BEST, + CAIRO_FILTER_NEAREST, + CAIRO_FILTER_BILINEAR, + CAIRO_FILTER_GAUSSIAN +} + +void cairo_pattern_set_filter(cairo_pattern_t* pattern, cairo_filter_t filter); + +cairo_filter_t cairo_pattern_get_filter(cairo_pattern_t* pattern); + +cairo_status_t cairo_pattern_get_rgba( + cairo_pattern_t* pattern, + double* red, double* green, + double* blue, double* alpha); + +cairo_status_t cairo_pattern_get_surface( + cairo_pattern_t* pattern, + cairo_surface_t** surface); + +cairo_status_t cairo_pattern_get_color_stop_rgba( + cairo_pattern_t* pattern, + int index, double* offset, + double* red, double* green, + double* blue, double* alpha); + +cairo_status_t cairo_pattern_get_color_stop_count( + cairo_pattern_t* pattern, + int* count); + +cairo_status_t cairo_pattern_get_linear_points( + cairo_pattern_t* pattern, + double* x0, double* y0, + double* x1, double* y1); + +cairo_status_t cairo_pattern_get_radial_circles( + cairo_pattern_t* pattern, + double* x0, double* y0, double* r0, + double* x1, double* y1, double* r1); + + +void cairo_matrix_init(cairo_matrix_t* matrix, double xx, double yx, double xy, double yy, double x0, double y0); + +void cairo_matrix_init_identity(cairo_matrix_t* matrix); + +void cairo_matrix_init_translate(cairo_matrix_t* matrix, double tx, double ty); + +void cairo_matrix_init_scale(cairo_matrix_t* matrix, double sx, double sy); + +void cairo_matrix_init_rotate(cairo_matrix_t* matrix, double radians); + +void cairo_matrix_translate(cairo_matrix_t* matrix, double tx, double ty); + +void cairo_matrix_scale(cairo_matrix_t* matrix, double sx, double sy); + +void cairo_matrix_rotate(cairo_matrix_t* matrix, double radians); + +cairo_status_t cairo_matrix_invert(cairo_matrix_t* matrix); + +void cairo_matrix_multiply(cairo_matrix_t* result, cairo_matrix_t* a, cairo_matrix_t* b); + +void cairo_matrix_transform_distance(cairo_matrix_t* matrix, double* dx, double* dy); + +void cairo_matrix_transform_point(cairo_matrix_t* matrix, double* x, double* y); + +void cairo_debug_reset_static_data(); +