Merge branch 'cairo' of git://onigirihouse.com/git/yuuki
commit
640f9643ef
|
@ -0,0 +1,7 @@
|
||||||
|
USING: cairo math.parser kernel sequences tools.test ;
|
||||||
|
IN: cairo.tests
|
||||||
|
|
||||||
|
[ t ] [ ! apply a little pressure to cairo_version
|
||||||
|
cairo_version number>string CHAR: 0 swap remove
|
||||||
|
CHAR: . cairo_version_string remove =
|
||||||
|
] unit-test
|
|
@ -0,0 +1,968 @@
|
||||||
|
! Copyright (c) 2007 Sampo Vuori
|
||||||
|
! Copyright (c) 2008 Matthew Willis
|
||||||
|
!
|
||||||
|
! Adapted from cairo.h, version 1.5.14
|
||||||
|
! License: http://factorcode.org/license.txt
|
||||||
|
|
||||||
|
USING: system combinators alien alien.syntax kernel
|
||||||
|
alien.c-types accessors sequences arrays ui.gadgets ;
|
||||||
|
|
||||||
|
IN: cairo
|
||||||
|
<< "cairo" {
|
||||||
|
{ [ os winnt? ] [ "libcairo-2.dll" ] }
|
||||||
|
{ [ os macosx? ] [ "libcairo.dylib" ] }
|
||||||
|
{ [ os unix? ] [ "libcairo.so.2" ] }
|
||||||
|
} cond "cdecl" add-library >>
|
||||||
|
|
||||||
|
LIBRARY: cairo
|
||||||
|
|
||||||
|
FUNCTION: int cairo_version ( ) ;
|
||||||
|
FUNCTION: char* cairo_version_string ( ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_bool_t
|
||||||
|
|
||||||
|
! I am leaving these and other void* types as opaque structures
|
||||||
|
TYPEDEF: void* cairo_t
|
||||||
|
TYPEDEF: void* cairo_surface_t
|
||||||
|
|
||||||
|
C-STRUCT: cairo_matrix_t
|
||||||
|
{ "double" "xx" }
|
||||||
|
{ "double" "yx" }
|
||||||
|
{ "double" "xy" }
|
||||||
|
{ "double" "yy" }
|
||||||
|
{ "double" "x0" }
|
||||||
|
{ "double" "y0" } ;
|
||||||
|
|
||||||
|
TYPEDEF: void* cairo_pattern_t
|
||||||
|
|
||||||
|
TYPEDEF: void* cairo_destroy_func_t
|
||||||
|
: cairo-destroy-func ( quot -- callback )
|
||||||
|
>r "void" { "void*" } "cdecl" r> alien-callback ; inline
|
||||||
|
|
||||||
|
! See cairo.h for details
|
||||||
|
C-STRUCT: cairo_user_data_key_t
|
||||||
|
{ "int" "unused" } ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_status_t
|
||||||
|
C-ENUM:
|
||||||
|
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
|
||||||
|
CAIRO_STATUS_TEMP_FILE_ERROR
|
||||||
|
CAIRO_STATUS_INVALID_STRIDE ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_content_t
|
||||||
|
: CAIRO_CONTENT_COLOR HEX: 1000 ;
|
||||||
|
: CAIRO_CONTENT_ALPHA HEX: 2000 ;
|
||||||
|
: CAIRO_CONTENT_COLOR_ALPHA HEX: 3000 ;
|
||||||
|
|
||||||
|
TYPEDEF: void* cairo_write_func_t
|
||||||
|
: cairo-write-func ( quot -- callback )
|
||||||
|
>r "cairo_status_t" { "void*" "uchar*" "int" }
|
||||||
|
"cdecl" r> alien-callback ; inline
|
||||||
|
|
||||||
|
TYPEDEF: void* cairo_read_func_t
|
||||||
|
: cairo-read-func ( quot -- callback )
|
||||||
|
>r "cairo_status_t" { "void*" "uchar*" "int" }
|
||||||
|
"cdecl" r> alien-callback ; inline
|
||||||
|
|
||||||
|
! Functions for manipulating state objects
|
||||||
|
FUNCTION: cairo_t*
|
||||||
|
cairo_create ( cairo_surface_t* target ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_t*
|
||||||
|
cairo_reference ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_destroy ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: uint
|
||||||
|
cairo_get_reference_count ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void*
|
||||||
|
cairo_get_user_data ( cairo_t* cr, cairo_user_data_key_t* key ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_set_user_data ( cairo_t* cr, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_save ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_restore ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_push_group ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_push_group_with_content ( cairo_t* cr, cairo_content_t content ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_pattern_t*
|
||||||
|
cairo_pop_group ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_pop_group_to_source ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
! Modify state
|
||||||
|
TYPEDEF: int cairo_operator_t
|
||||||
|
C-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 ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_operator ( cairo_t* cr, cairo_operator_t op ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_source ( cairo_t* cr, cairo_pattern_t* source ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_source_rgb ( cairo_t* cr, double red, double green, double blue ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_source_rgba ( cairo_t* cr, double red, double green, double blue, double alpha ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_source_surface ( cairo_t* cr, cairo_surface_t* surface, double x, double y ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_tolerance ( cairo_t* cr, double tolerance ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_antialias_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_ANTIALIAS_DEFAULT
|
||||||
|
CAIRO_ANTIALIAS_NONE
|
||||||
|
CAIRO_ANTIALIAS_GRAY
|
||||||
|
CAIRO_ANTIALIAS_SUBPIXEL ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_antialias ( cairo_t* cr, cairo_antialias_t antialias ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_fill_rule_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_FILL_RULE_WINDING
|
||||||
|
CAIRO_FILL_RULE_EVEN_ODD ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_fill_rule ( cairo_t* cr, cairo_fill_rule_t fill_rule ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_line_width ( cairo_t* cr, double width ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_line_cap_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_LINE_CAP_BUTT
|
||||||
|
CAIRO_LINE_CAP_ROUND
|
||||||
|
CAIRO_LINE_CAP_SQUARE ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_line_cap ( cairo_t* cr, cairo_line_cap_t line_cap ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_line_join_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_LINE_JOIN_MITER
|
||||||
|
CAIRO_LINE_JOIN_ROUND
|
||||||
|
CAIRO_LINE_JOIN_BEVEL ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_line_join ( cairo_t* cr, cairo_line_join_t line_join ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_dash ( cairo_t* cr, double* dashes, int num_dashes, double offset ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_miter_limit ( cairo_t* cr, double limit ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_translate ( cairo_t* cr, double tx, double ty ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_scale ( cairo_t* cr, double sx, double sy ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_rotate ( cairo_t* cr, double angle ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_transform ( cairo_t* cr, cairo_matrix_t* matrix ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_identity_matrix ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_user_to_device ( cairo_t* cr, double* x, double* y ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_user_to_device_distance ( cairo_t* cr, double* dx, double* dy ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_device_to_user ( cairo_t* cr, double* x, double* y ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_device_to_user_distance ( cairo_t* cr, double* dx, double* dy ) ;
|
||||||
|
|
||||||
|
! Path creation functions
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_new_path ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_move_to ( cairo_t* cr, double x, double y ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_new_sub_path ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_line_to ( cairo_t* cr, double x, double y ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_curve_to ( cairo_t* cr, double x1, double y1, double x2, double y2, double x3, double y3 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_arc ( cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_arc_negative ( cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_rel_move_to ( cairo_t* cr, double dx, double dy ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_rel_line_to ( cairo_t* cr, double dx, double dy ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_rel_curve_to ( cairo_t* cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_rectangle ( cairo_t* cr, double x, double y, double width, double height ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_close_path ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_path_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ;
|
||||||
|
|
||||||
|
! Painting functions
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_paint ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_paint_with_alpha ( cairo_t* cr, double alpha ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_mask ( cairo_t* cr, cairo_pattern_t* pattern ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_mask_surface ( cairo_t* cr, cairo_surface_t* surface, double surface_x, double surface_y ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_stroke ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_stroke_preserve ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_fill ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_fill_preserve ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_copy_page ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_show_page ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
! Insideness testing
|
||||||
|
FUNCTION: cairo_bool_t
|
||||||
|
cairo_in_stroke ( cairo_t* cr, double x, double y ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_bool_t
|
||||||
|
cairo_in_fill ( cairo_t* cr, double x, double y ) ;
|
||||||
|
|
||||||
|
! Rectangular extents
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_stroke_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_fill_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ;
|
||||||
|
|
||||||
|
! Clipping
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_reset_clip ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_clip ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_clip_preserve ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_clip_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ;
|
||||||
|
|
||||||
|
C-STRUCT: cairo_rectangle_t
|
||||||
|
{ "double" "x" }
|
||||||
|
{ "double" "y" }
|
||||||
|
{ "double" "width" }
|
||||||
|
{ "double" "height" } ;
|
||||||
|
|
||||||
|
: <cairo-rect> ( x y width height -- cairo_rectangle_t )
|
||||||
|
"cairo_rectangle_t" <c-object> dup
|
||||||
|
{
|
||||||
|
[ set-cairo_rectangle_t-height ] [ set-cairo_rectangle_t-width ]
|
||||||
|
[ set-cairo_rectangle_t-y ] [ set-cairo_rectangle_t-x ]
|
||||||
|
} cleave ;
|
||||||
|
|
||||||
|
: rect>cairo ( rect -- cairo_rectangle_t )
|
||||||
|
[ loc>> ] [ dim>> ] bi [ [ first ] [ second ] bi ] bi@
|
||||||
|
<cairo-rect> ;
|
||||||
|
|
||||||
|
: cairo>rect ( cairo_rectangle_t -- rect )
|
||||||
|
{
|
||||||
|
[ cairo_rectangle_t-x ] [ cairo_rectangle_t-y ]
|
||||||
|
[ cairo_rectangle_t-width ] [ cairo_rectangle_t-height ]
|
||||||
|
} cleave
|
||||||
|
[ 2array ] 2bi@ <rect> ;
|
||||||
|
|
||||||
|
C-STRUCT: cairo_rectangle_list_t
|
||||||
|
{ "cairo_status_t" "status" }
|
||||||
|
{ "cairo_rectangle_t*" "rectangles" }
|
||||||
|
{ "int" "num_rectangles" } ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_rectangle_list_t*
|
||||||
|
cairo_copy_clip_rectangle_list ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_rectangle_list_destroy ( cairo_rectangle_list_t* rectangle_list ) ;
|
||||||
|
|
||||||
|
! Font/Text functions
|
||||||
|
|
||||||
|
TYPEDEF: void* cairo_scaled_font_t
|
||||||
|
|
||||||
|
TYPEDEF: void* cairo_font_face_t
|
||||||
|
|
||||||
|
C-STRUCT: cairo_glyph_t
|
||||||
|
{ "ulong" "index" }
|
||||||
|
{ "double" "x" }
|
||||||
|
{ "double" "y" } ;
|
||||||
|
|
||||||
|
C-STRUCT: cairo_text_extents_t
|
||||||
|
{ "double" "x_bearing" }
|
||||||
|
{ "double" "y_bearing" }
|
||||||
|
{ "double" "width" }
|
||||||
|
{ "double" "height" }
|
||||||
|
{ "double" "x_advance" }
|
||||||
|
{ "double" "y_advance" } ;
|
||||||
|
|
||||||
|
C-STRUCT: cairo_font_extents_t
|
||||||
|
{ "double" "ascent" }
|
||||||
|
{ "double" "descent" }
|
||||||
|
{ "double" "height" }
|
||||||
|
{ "double" "max_x_advance" }
|
||||||
|
{ "double" "max_y_advance" } ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_font_slant_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_FONT_SLANT_NORMAL
|
||||||
|
CAIRO_FONT_SLANT_ITALIC
|
||||||
|
CAIRO_FONT_SLANT_OBLIQUE ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_font_weight_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_FONT_WEIGHT_NORMAL
|
||||||
|
CAIRO_FONT_WEIGHT_BOLD ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_subpixel_order_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_SUBPIXEL_ORDER_DEFAULT
|
||||||
|
CAIRO_SUBPIXEL_ORDER_RGB
|
||||||
|
CAIRO_SUBPIXEL_ORDER_BGR
|
||||||
|
CAIRO_SUBPIXEL_ORDER_VRGB
|
||||||
|
CAIRO_SUBPIXEL_ORDER_VBGR ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_hint_style_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_HINT_STYLE_DEFAULT
|
||||||
|
CAIRO_HINT_STYLE_NONE
|
||||||
|
CAIRO_HINT_STYLE_SLIGHT
|
||||||
|
CAIRO_HINT_STYLE_MEDIUM
|
||||||
|
CAIRO_HINT_STYLE_FULL ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_hint_metrics_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_HINT_METRICS_DEFAULT
|
||||||
|
CAIRO_HINT_METRICS_OFF
|
||||||
|
CAIRO_HINT_METRICS_ON ;
|
||||||
|
|
||||||
|
TYPEDEF: void* cairo_font_options_t
|
||||||
|
|
||||||
|
FUNCTION: cairo_font_options_t*
|
||||||
|
cairo_font_options_create ( ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_font_options_t*
|
||||||
|
cairo_font_options_copy ( cairo_font_options_t* original ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_font_options_destroy ( cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_font_options_status ( cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_font_options_merge ( cairo_font_options_t* options, cairo_font_options_t* other ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_bool_t
|
||||||
|
cairo_font_options_equal ( cairo_font_options_t* options, cairo_font_options_t* other ) ;
|
||||||
|
|
||||||
|
FUNCTION: ulong
|
||||||
|
cairo_font_options_hash ( cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_font_options_set_antialias ( cairo_font_options_t* options, cairo_antialias_t antialias ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_antialias_t
|
||||||
|
cairo_font_options_get_antialias ( cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_font_options_set_subpixel_order ( cairo_font_options_t* options, cairo_subpixel_order_t subpixel_order ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_subpixel_order_t
|
||||||
|
cairo_font_options_get_subpixel_order ( cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_font_options_set_hint_style ( cairo_font_options_t* options, cairo_hint_style_t hint_style ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_hint_style_t
|
||||||
|
cairo_font_options_get_hint_style ( cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_font_options_set_hint_metrics ( cairo_font_options_t* options, cairo_hint_metrics_t hint_metrics ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_hint_metrics_t
|
||||||
|
cairo_font_options_get_hint_metrics ( cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
! This interface is for dealing with text as text, not caring about the
|
||||||
|
! font object inside the the cairo_t.
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_select_font_face ( cairo_t* cr, char* family, cairo_font_slant_t slant, cairo_font_weight_t weight ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_font_size ( cairo_t* cr, double size ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_font_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_get_font_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_font_options ( cairo_t* cr, cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_get_font_options ( cairo_t* cr, cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_font_face ( cairo_t* cr, cairo_font_face_t* font_face ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_font_face_t*
|
||||||
|
cairo_get_font_face ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_set_scaled_font ( cairo_t* cr, cairo_scaled_font_t* scaled_font ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_scaled_font_t*
|
||||||
|
cairo_get_scaled_font ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_show_text ( cairo_t* cr, char* utf8 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_show_glyphs ( cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_text_path ( cairo_t* cr, char* utf8 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_glyph_path ( cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_text_extents ( cairo_t* cr, char* utf8, cairo_text_extents_t* extents ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_glyph_extents ( cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs, cairo_text_extents_t* extents ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_font_extents ( cairo_t* cr, cairo_font_extents_t* extents ) ;
|
||||||
|
|
||||||
|
! Generic identifier for a font style
|
||||||
|
|
||||||
|
FUNCTION: cairo_font_face_t*
|
||||||
|
cairo_font_face_reference ( cairo_font_face_t* font_face ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_font_face_destroy ( cairo_font_face_t* font_face ) ;
|
||||||
|
|
||||||
|
FUNCTION: uint
|
||||||
|
cairo_font_face_get_reference_count ( cairo_font_face_t* font_face ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_font_face_status ( cairo_font_face_t* font_face ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_font_type_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_FONT_TYPE_TOY
|
||||||
|
CAIRO_FONT_TYPE_FT
|
||||||
|
CAIRO_FONT_TYPE_WIN32
|
||||||
|
CAIRO_FONT_TYPE_QUARTZ ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_font_type_t
|
||||||
|
cairo_font_face_get_type ( cairo_font_face_t* font_face ) ;
|
||||||
|
|
||||||
|
FUNCTION: void*
|
||||||
|
cairo_font_face_get_user_data ( cairo_font_face_t* font_face, cairo_user_data_key_t* key ) ;
|
||||||
|
|
||||||
|
FUNCTION: 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 ) ;
|
||||||
|
|
||||||
|
! Portable interface to general font features.
|
||||||
|
|
||||||
|
FUNCTION: 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 ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_scaled_font_t*
|
||||||
|
cairo_scaled_font_reference ( cairo_scaled_font_t* scaled_font ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_scaled_font_destroy ( cairo_scaled_font_t* scaled_font ) ;
|
||||||
|
|
||||||
|
FUNCTION: uint
|
||||||
|
cairo_scaled_font_get_reference_count ( cairo_scaled_font_t* scaled_font ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_scaled_font_status ( cairo_scaled_font_t* scaled_font ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_font_type_t
|
||||||
|
cairo_scaled_font_get_type ( cairo_scaled_font_t* scaled_font ) ;
|
||||||
|
|
||||||
|
FUNCTION: void*
|
||||||
|
cairo_scaled_font_get_user_data ( cairo_scaled_font_t* scaled_font, cairo_user_data_key_t* key ) ;
|
||||||
|
|
||||||
|
FUNCTION: 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 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_scaled_font_extents ( cairo_scaled_font_t* scaled_font, cairo_font_extents_t* extents ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_scaled_font_text_extents ( cairo_scaled_font_t* scaled_font, char* utf8, cairo_text_extents_t* extents ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_scaled_font_glyph_extents ( cairo_scaled_font_t* scaled_font, cairo_glyph_t* glyphs, int num_glyphs, cairo_text_extents_t* extents ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_font_face_t*
|
||||||
|
cairo_scaled_font_get_font_face ( cairo_scaled_font_t* scaled_font ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_scaled_font_get_font_matrix ( cairo_scaled_font_t* scaled_font, cairo_matrix_t* font_matrix ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_scaled_font_get_ctm ( cairo_scaled_font_t* scaled_font, cairo_matrix_t* ctm ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_scaled_font_get_font_options ( cairo_scaled_font_t* scaled_font, cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
! Query functions
|
||||||
|
|
||||||
|
FUNCTION: cairo_operator_t
|
||||||
|
cairo_get_operator ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_pattern_t*
|
||||||
|
cairo_get_source ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: double
|
||||||
|
cairo_get_tolerance ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_antialias_t
|
||||||
|
cairo_get_antialias ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_bool_t
|
||||||
|
cairo_has_current_point ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_get_current_point ( cairo_t* cr, double* x, double* y ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_fill_rule_t
|
||||||
|
cairo_get_fill_rule ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: double
|
||||||
|
cairo_get_line_width ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_line_cap_t
|
||||||
|
cairo_get_line_cap ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_line_join_t
|
||||||
|
cairo_get_line_join ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: double
|
||||||
|
cairo_get_miter_limit ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: int
|
||||||
|
cairo_get_dash_count ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_get_dash ( cairo_t* cr, double* dashes, double* offset ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_get_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_surface_t*
|
||||||
|
cairo_get_target ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_surface_t*
|
||||||
|
cairo_get_group_target ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_path_data_type_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_PATH_MOVE_TO
|
||||||
|
CAIRO_PATH_LINE_TO
|
||||||
|
CAIRO_PATH_CURVE_TO
|
||||||
|
CAIRO_PATH_CLOSE_PATH ;
|
||||||
|
|
||||||
|
! NEED TO DO UNION HERE
|
||||||
|
C-STRUCT: cairo_path_data_t-point
|
||||||
|
{ "double" "x" }
|
||||||
|
{ "double" "y" } ;
|
||||||
|
|
||||||
|
C-STRUCT: cairo_path_data_t-header
|
||||||
|
{ "cairo_path_data_type_t" "type" }
|
||||||
|
{ "int" "length" } ;
|
||||||
|
|
||||||
|
C-UNION: cairo_path_data_t "cairo_path_data_t-point" "cairo_path_data_t-header" ;
|
||||||
|
|
||||||
|
C-STRUCT: cairo_path_t
|
||||||
|
{ "cairo_status_t" "status" }
|
||||||
|
{ "cairo_path_data_t*" "data" }
|
||||||
|
{ "int" "num_data" } ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_path_t*
|
||||||
|
cairo_copy_path ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_path_t*
|
||||||
|
cairo_copy_path_flat ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_append_path ( cairo_t* cr, cairo_path_t* path ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_path_destroy ( cairo_path_t* path ) ;
|
||||||
|
|
||||||
|
! Error status queries
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_status ( cairo_t* cr ) ;
|
||||||
|
|
||||||
|
FUNCTION: char*
|
||||||
|
cairo_status_to_string ( cairo_status_t status ) ;
|
||||||
|
|
||||||
|
! Surface manipulation
|
||||||
|
|
||||||
|
FUNCTION: cairo_surface_t*
|
||||||
|
cairo_surface_create_similar ( cairo_surface_t* other, cairo_content_t content, int width, int height ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_surface_t*
|
||||||
|
cairo_surface_reference ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_finish ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_destroy ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: uint
|
||||||
|
cairo_surface_get_reference_count ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_surface_status ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_surface_type_t
|
||||||
|
C-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_WIN32_PRINTING
|
||||||
|
CAIRO_SURFACE_TYPE_QUARTZ_IMAGE ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_surface_type_t
|
||||||
|
cairo_surface_get_type ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_content_t
|
||||||
|
cairo_surface_get_content ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_surface_write_to_png ( cairo_surface_t* surface, char* filename ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_surface_write_to_png_stream ( cairo_surface_t* surface, cairo_write_func_t write_func, void* closure ) ;
|
||||||
|
|
||||||
|
FUNCTION: void*
|
||||||
|
cairo_surface_get_user_data ( cairo_surface_t* surface, cairo_user_data_key_t* key ) ;
|
||||||
|
|
||||||
|
FUNCTION: 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 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_get_font_options ( cairo_surface_t* surface, cairo_font_options_t* options ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_flush ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_mark_dirty ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_mark_dirty_rectangle ( cairo_surface_t* surface, int x, int y, int width, int height ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_set_device_offset ( cairo_surface_t* surface, double x_offset, double y_offset ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_get_device_offset ( cairo_surface_t* surface, double* x_offset, double* y_offset ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_set_fallback_resolution ( cairo_surface_t* surface, double x_pixels_per_inch, double y_pixels_per_inch ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_copy_page ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_surface_show_page ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
! Image-surface functions
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_format_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_FORMAT_ARGB32
|
||||||
|
CAIRO_FORMAT_RGB24
|
||||||
|
CAIRO_FORMAT_A8
|
||||||
|
CAIRO_FORMAT_A1
|
||||||
|
CAIRO_FORMAT_RGB16_565 ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_surface_t*
|
||||||
|
cairo_image_surface_create ( cairo_format_t format, int width, int height ) ;
|
||||||
|
|
||||||
|
FUNCTION: int
|
||||||
|
cairo_format_stride_for_width ( cairo_format_t format, int width ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_surface_t*
|
||||||
|
cairo_image_surface_create_for_data ( uchar* data, cairo_format_t format, int width, int height, int stride ) ;
|
||||||
|
|
||||||
|
FUNCTION: uchar*
|
||||||
|
cairo_image_surface_get_data ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_format_t
|
||||||
|
cairo_image_surface_get_format ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: int
|
||||||
|
cairo_image_surface_get_width ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: int
|
||||||
|
cairo_image_surface_get_height ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: int
|
||||||
|
cairo_image_surface_get_stride ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_surface_t*
|
||||||
|
cairo_image_surface_create_from_png ( char* filename ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_surface_t*
|
||||||
|
cairo_image_surface_create_from_png_stream ( cairo_read_func_t read_func, void* closure ) ;
|
||||||
|
|
||||||
|
! Pattern creation functions
|
||||||
|
|
||||||
|
FUNCTION: cairo_pattern_t*
|
||||||
|
cairo_pattern_create_rgb ( double red, double green, double blue ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_pattern_t*
|
||||||
|
cairo_pattern_create_rgba ( double red, double green, double blue, double alpha ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_pattern_t*
|
||||||
|
cairo_pattern_create_for_surface ( cairo_surface_t* surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_pattern_t*
|
||||||
|
cairo_pattern_create_linear ( double x0, double y0, double x1, double y1 ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_pattern_t*
|
||||||
|
cairo_pattern_create_radial ( double cx0, double cy0, double radius0, double cx1, double cy1, double radius1 ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_pattern_t*
|
||||||
|
cairo_pattern_reference ( cairo_pattern_t* pattern ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_pattern_destroy ( cairo_pattern_t* pattern ) ;
|
||||||
|
|
||||||
|
FUNCTION: uint
|
||||||
|
cairo_pattern_get_reference_count ( cairo_pattern_t* pattern ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_pattern_status ( cairo_pattern_t* pattern ) ;
|
||||||
|
|
||||||
|
FUNCTION: void*
|
||||||
|
cairo_pattern_get_user_data ( cairo_pattern_t* pattern, cairo_user_data_key_t* key ) ;
|
||||||
|
|
||||||
|
FUNCTION: 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 ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_pattern_type_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_PATTERN_TYPE_SOLID
|
||||||
|
CAIRO_PATTERN_TYPE_SURFACE
|
||||||
|
CAIRO_PATTERN_TYPE_LINEAR
|
||||||
|
CAIRO_PATTERN_TYPE_RADIA ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_pattern_type_t
|
||||||
|
cairo_pattern_get_type ( cairo_pattern_t* pattern ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_pattern_add_color_stop_rgb ( cairo_pattern_t* pattern, double offset, double red, double green, double blue ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_pattern_add_color_stop_rgba ( cairo_pattern_t* pattern, double offset, double red, double green, double blue, double alpha ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_pattern_set_matrix ( cairo_pattern_t* pattern, cairo_matrix_t* matrix ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_pattern_get_matrix ( cairo_pattern_t* pattern, cairo_matrix_t* matrix ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_extend_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_EXTEND_NONE
|
||||||
|
CAIRO_EXTEND_REPEAT
|
||||||
|
CAIRO_EXTEND_REFLECT
|
||||||
|
CAIRO_EXTEND_PAD ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_pattern_set_extend ( cairo_pattern_t* pattern, cairo_extend_t extend ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_extend_t
|
||||||
|
cairo_pattern_get_extend ( cairo_pattern_t* pattern ) ;
|
||||||
|
|
||||||
|
TYPEDEF: int cairo_filter_t
|
||||||
|
C-ENUM:
|
||||||
|
CAIRO_FILTER_FAST
|
||||||
|
CAIRO_FILTER_GOOD
|
||||||
|
CAIRO_FILTER_BEST
|
||||||
|
CAIRO_FILTER_NEAREST
|
||||||
|
CAIRO_FILTER_BILINEAR
|
||||||
|
CAIRO_FILTER_GAUSSIAN ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_pattern_set_filter ( cairo_pattern_t* pattern, cairo_filter_t filter ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_filter_t
|
||||||
|
cairo_pattern_get_filter ( cairo_pattern_t* pattern ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_pattern_get_rgba ( cairo_pattern_t* pattern, double* red, double* green, double* blue, double* alpha ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_pattern_get_surface ( cairo_pattern_t* pattern, cairo_surface_t* *surface ) ;
|
||||||
|
|
||||||
|
FUNCTION: 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 ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_pattern_get_color_stop_count ( cairo_pattern_t* pattern, int* count ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_pattern_get_linear_points ( cairo_pattern_t* pattern, double* x0, double* y0, double* x1, double* y1 ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_pattern_get_radial_circles ( cairo_pattern_t* pattern, double* x0, double* y0, double* r0, double* x1, double* y1, double* r1 ) ;
|
||||||
|
|
||||||
|
! Matrix functions
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_init ( cairo_matrix_t* matrix, double xx, double yx, double xy, double yy, double x0, double y0 ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_init_identity ( cairo_matrix_t* matrix ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_init_translate ( cairo_matrix_t* matrix, double tx, double ty ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_init_scale ( cairo_matrix_t* matrix, double sx, double sy ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_init_rotate ( cairo_matrix_t* matrix, double radians ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_translate ( cairo_matrix_t* matrix, double tx, double ty ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_scale ( cairo_matrix_t* matrix, double sx, double sy ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_rotate ( cairo_matrix_t* matrix, double radians ) ;
|
||||||
|
|
||||||
|
FUNCTION: cairo_status_t
|
||||||
|
cairo_matrix_invert ( cairo_matrix_t* matrix ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_multiply ( cairo_matrix_t* result, cairo_matrix_t* a, cairo_matrix_t* b ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_transform_distance ( cairo_matrix_t* matrix, double* dx, double* dy ) ;
|
||||||
|
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_matrix_transform_point ( cairo_matrix_t* matrix, double* x, double* y ) ;
|
||||||
|
|
||||||
|
! Functions to be used while debugging (not intended for use in production code)
|
||||||
|
FUNCTION: void
|
||||||
|
cairo_debug_reset_static_data ( ) ;
|
|
@ -0,0 +1,71 @@
|
||||||
|
USING: cairo cairo.lib ui.render kernel opengl.gl opengl
|
||||||
|
math byte-arrays ui.gadgets accessors arrays
|
||||||
|
namespaces io.backend ;
|
||||||
|
|
||||||
|
IN: cairo.gadgets
|
||||||
|
|
||||||
|
! We need two kinds of gadgets:
|
||||||
|
! one performs the cairo ops once and caches the bytes, the other
|
||||||
|
! performs cairo ops every refresh
|
||||||
|
|
||||||
|
TUPLE: cairo-gadget width height quot cache? bytes ;
|
||||||
|
PREDICATE: cached-cairo < cairo-gadget cache?>> ;
|
||||||
|
: <cairo-gadget> ( width height quot -- cairo-gadget )
|
||||||
|
cairo-gadget construct-gadget
|
||||||
|
swap >>quot
|
||||||
|
swap >>height
|
||||||
|
swap >>width ;
|
||||||
|
|
||||||
|
: <cached-cairo> ( width height quot -- cairo-gadget )
|
||||||
|
<cairo-gadget> t >>cache? ;
|
||||||
|
|
||||||
|
: width>stride ( width -- stride ) 4 * ;
|
||||||
|
|
||||||
|
: copy-cairo ( width height quot -- byte-array )
|
||||||
|
>r over width>stride
|
||||||
|
[ * nip <byte-array> dup CAIRO_FORMAT_ARGB32 ]
|
||||||
|
[ cairo_image_surface_create_for_data ] 3bi
|
||||||
|
r> with-cairo-from-surface ;
|
||||||
|
|
||||||
|
: (cairo>bytes) ( gadget -- byte-array )
|
||||||
|
[ width>> ] [ height>> ] [ quot>> ] tri copy-cairo ;
|
||||||
|
|
||||||
|
GENERIC: cairo>bytes
|
||||||
|
M: cairo-gadget cairo>bytes ( gadget -- byte-array )
|
||||||
|
(cairo>bytes) ;
|
||||||
|
|
||||||
|
M: cached-cairo cairo>bytes ( gadget -- byte-array )
|
||||||
|
dup bytes>> [ ] [
|
||||||
|
dup (cairo>bytes) [ >>bytes drop ] keep
|
||||||
|
] ?if ;
|
||||||
|
|
||||||
|
: cairo>png ( gadget path -- )
|
||||||
|
>r [ cairo>bytes CAIRO_FORMAT_ARGB32 ] [ width>> ]
|
||||||
|
[ height>> ] tri over width>stride
|
||||||
|
cairo_image_surface_create_for_data
|
||||||
|
r> [ cairo_surface_write_to_png check-cairo ] curry with-surface ;
|
||||||
|
|
||||||
|
M: cairo-gadget draw-gadget* ( gadget -- )
|
||||||
|
origin get [
|
||||||
|
0 0 glRasterPos2i
|
||||||
|
1.0 -1.0 glPixelZoom
|
||||||
|
[ width>> ] [ height>> GL_BGRA GL_UNSIGNED_BYTE ]
|
||||||
|
[ cairo>bytes ] tri glDrawPixels
|
||||||
|
] with-translation ;
|
||||||
|
|
||||||
|
M: cairo-gadget pref-dim* ( gadget -- rect )
|
||||||
|
[ width>> ] [ height>> ] bi 2array ;
|
||||||
|
|
||||||
|
: copy-surface ( surface -- )
|
||||||
|
cr swap 0 0 cairo_set_source_surface
|
||||||
|
cr cairo_paint ;
|
||||||
|
|
||||||
|
: <bytes-gadget> ( width height bytes -- cairo-gadget )
|
||||||
|
>r [ ] <cached-cairo> r> >>bytes ;
|
||||||
|
|
||||||
|
: <png-gadget> ( path -- gadget )
|
||||||
|
normalize-path cairo_image_surface_create_from_png
|
||||||
|
[ cairo_image_surface_get_width ]
|
||||||
|
[ cairo_image_surface_get_height 2dup ]
|
||||||
|
[ [ copy-surface ] curry copy-cairo ] tri
|
||||||
|
<bytes-gadget> ;
|
|
@ -1,39 +1,36 @@
|
||||||
! Copyright (C) 2008 Doug Coleman.
|
! Copyright (C) 2008 Doug Coleman.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: alien.c-types cairo.ffi continuations destructors
|
USING: cairo kernel accessors sequences
|
||||||
kernel libc locals math shuffle accessors ;
|
namespaces fry continuations ;
|
||||||
IN: cairo.lib
|
IN: cairo.lib
|
||||||
|
|
||||||
TUPLE: cairo-t alien ;
|
TUPLE: cairo-t alien ;
|
||||||
C: <cairo-t> cairo-t
|
C: <cairo-t> cairo-t
|
||||||
M: cairo-t dispose ( alien -- ) alien>> cairo_destroy ;
|
M: cairo-t dispose ( alien -- ) alien>> cairo_destroy ;
|
||||||
: cairo-t-destroy-always ( alien -- ) <cairo-t> add-always-destructor ;
|
|
||||||
: cairo-t-destroy-later ( alien -- ) <cairo-t> add-error-destructor ;
|
|
||||||
|
|
||||||
TUPLE: cairo-surface-t alien ;
|
TUPLE: cairo-surface-t alien ;
|
||||||
C: <cairo-surface-t> cairo-surface-t
|
C: <cairo-surface-t> cairo-surface-t
|
||||||
M: cairo-surface-t dispose ( alien -- ) alien>> cairo_surface_destroy ;
|
M: cairo-surface-t dispose ( alien -- ) alien>> cairo_surface_destroy ;
|
||||||
|
|
||||||
: cairo-surface-t-destroy-always ( alien -- )
|
: check-cairo ( cairo_status_t -- )
|
||||||
<cairo-surface-t> add-always-destructor ;
|
dup CAIRO_STATUS_SUCCESS = [ drop ]
|
||||||
|
[ cairo_status_to_string "Cairo error: " prepend throw ] if ;
|
||||||
|
|
||||||
: cairo-surface-t-destroy-later ( alien -- )
|
SYMBOL: cairo
|
||||||
<cairo-surface-t> add-error-destructor ;
|
: cr ( -- cairo ) cairo get ;
|
||||||
|
|
||||||
: cairo-surface>array ( surface -- cairo-t byte-array )
|
: (with-cairo) ( cairo-t quot -- )
|
||||||
[
|
>r alien>> cairo r> [ cr cairo_status check-cairo ]
|
||||||
dup
|
compose with-variable ; inline
|
||||||
[ drop CAIRO_FORMAT_ARGB32 ]
|
|
||||||
[ cairo_image_surface_get_width ]
|
: with-cairo ( cairo quot -- )
|
||||||
[ cairo_image_surface_get_height ] tri
|
>r <cairo-t> r> [ (with-cairo) ] curry with-disposal ; inline
|
||||||
over 4 *
|
|
||||||
2dup * [
|
: (with-surface) ( cairo-surface-t quot -- )
|
||||||
malloc dup free-always [
|
>r alien>> r> [ cairo_surface_status check-cairo ] bi ; inline
|
||||||
5 -nrot cairo_image_surface_create_for_data
|
|
||||||
dup cairo-surface-t-destroy-always
|
: with-surface ( cairo_surface quot -- )
|
||||||
cairo_create dup cairo-t-destroy-later
|
>r <cairo-surface-t> r> [ (with-surface) ] curry with-disposal ; inline
|
||||||
[ swap 0 0 cairo_set_source_surface ] keep
|
|
||||||
dup cairo_paint
|
: with-cairo-from-surface ( cairo_surface quot -- )
|
||||||
] keep
|
'[ cairo_create , with-cairo ] with-surface ; inline
|
||||||
] keep memory>byte-array
|
|
||||||
] with-destructors ;
|
|
||||||
|
|
|
@ -0,0 +1,140 @@
|
||||||
|
! Copyright (C) 2008 Matthew Willis
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
!
|
||||||
|
! these samples are a subset of the samples on
|
||||||
|
! http://cairographics.org/samples/
|
||||||
|
USING: cairo cairo.lib locals math.constants math
|
||||||
|
io.backend kernel alien.c-types libc namespaces ;
|
||||||
|
|
||||||
|
IN: cairo.samples
|
||||||
|
|
||||||
|
:: arc ( -- )
|
||||||
|
[let | xc [ 128.0 ]
|
||||||
|
yc [ 128.0 ]
|
||||||
|
radius [ 100.0 ]
|
||||||
|
angle1 [ pi 1/4 * ]
|
||||||
|
angle2 [ pi ] |
|
||||||
|
cr 10.0 cairo_set_line_width
|
||||||
|
cr xc yc radius angle1 angle2 cairo_arc
|
||||||
|
cr cairo_stroke
|
||||||
|
|
||||||
|
! draw helping lines
|
||||||
|
cr 1 0.2 0.2 0.6 cairo_set_source_rgba
|
||||||
|
cr 6.0 cairo_set_line_width
|
||||||
|
|
||||||
|
cr xc yc 10.0 0 2 pi * cairo_arc
|
||||||
|
cr cairo_fill
|
||||||
|
|
||||||
|
cr xc yc radius angle1 angle1 cairo_arc
|
||||||
|
cr xc yc cairo_line_to
|
||||||
|
cr xc yc radius angle2 angle2 cairo_arc
|
||||||
|
cr xc yc cairo_line_to
|
||||||
|
cr cairo_stroke
|
||||||
|
] ;
|
||||||
|
|
||||||
|
: clip ( -- )
|
||||||
|
cr 128 128 76.8 0 2 pi * cairo_arc
|
||||||
|
cr cairo_clip
|
||||||
|
cr cairo_new_path
|
||||||
|
|
||||||
|
cr 0 0 256 256 cairo_rectangle
|
||||||
|
cr cairo_fill
|
||||||
|
cr 0 1 0 cairo_set_source_rgb
|
||||||
|
cr 0 0 cairo_move_to
|
||||||
|
cr 256 256 cairo_line_to
|
||||||
|
cr 256 0 cairo_move_to
|
||||||
|
cr 0 256 cairo_line_to
|
||||||
|
cr 10 cairo_set_line_width
|
||||||
|
cr cairo_stroke ;
|
||||||
|
|
||||||
|
:: clip-image ( -- )
|
||||||
|
[let* | png [ "resource:misc/icons/Factor_128x128.png"
|
||||||
|
normalize-path cairo_image_surface_create_from_png ]
|
||||||
|
w [ png cairo_image_surface_get_width ]
|
||||||
|
h [ png cairo_image_surface_get_height ] |
|
||||||
|
cr 128 128 76.8 0 2 pi * cairo_arc
|
||||||
|
cr cairo_clip
|
||||||
|
cr cairo_new_path
|
||||||
|
|
||||||
|
cr 192.0 w / 192.0 h / cairo_scale
|
||||||
|
cr png 32 32 cairo_set_source_surface
|
||||||
|
cr cairo_paint
|
||||||
|
png cairo_surface_destroy
|
||||||
|
] ;
|
||||||
|
|
||||||
|
:: dash ( -- )
|
||||||
|
[let | dashes [ { 50 10 10 10 } >c-double-array ]
|
||||||
|
ndash [ 4 ] |
|
||||||
|
cr dashes ndash -50 cairo_set_dash
|
||||||
|
cr 10 cairo_set_line_width
|
||||||
|
cr 128.0 25.6 cairo_move_to
|
||||||
|
cr 230.4 230.4 cairo_line_to
|
||||||
|
cr -102.4 0 cairo_rel_line_to
|
||||||
|
cr 51.2 230.4 51.2 128.0 128.0 128.0 cairo_curve_to
|
||||||
|
cr cairo_stroke
|
||||||
|
] ;
|
||||||
|
|
||||||
|
:: gradient ( -- )
|
||||||
|
[let | pat [ 0 0 0 256 cairo_pattern_create_linear ]
|
||||||
|
radial [ 115.2 102.4 25.6 102.4 102.4 128.0
|
||||||
|
cairo_pattern_create_radial ] |
|
||||||
|
pat 1 0 0 0 1 cairo_pattern_add_color_stop_rgba
|
||||||
|
pat 0 1 1 1 1 cairo_pattern_add_color_stop_rgba
|
||||||
|
cr 0 0 256 256 cairo_rectangle
|
||||||
|
cr pat cairo_set_source
|
||||||
|
cr cairo_fill
|
||||||
|
pat cairo_pattern_destroy
|
||||||
|
|
||||||
|
radial 0 1 1 1 1 cairo_pattern_add_color_stop_rgba
|
||||||
|
radial 1 0 0 0 1 cairo_pattern_add_color_stop_rgba
|
||||||
|
cr radial cairo_set_source
|
||||||
|
cr 128.0 128.0 76.8 0 2 pi * cairo_arc
|
||||||
|
cr cairo_fill
|
||||||
|
radial cairo_pattern_destroy
|
||||||
|
] ;
|
||||||
|
|
||||||
|
: text ( -- )
|
||||||
|
cr "Serif" CAIRO_FONT_SLANT_NORMAL CAIRO_FONT_WEIGHT_BOLD
|
||||||
|
cairo_select_font_face
|
||||||
|
cr 50 cairo_set_font_size
|
||||||
|
cr 10 135 cairo_move_to
|
||||||
|
cr "Hello" cairo_show_text
|
||||||
|
|
||||||
|
cr 70 165 cairo_move_to
|
||||||
|
cr "factor" cairo_text_path
|
||||||
|
cr 0.5 0.5 1 cairo_set_source_rgb
|
||||||
|
cr cairo_fill_preserve
|
||||||
|
cr 0 0 0 cairo_set_source_rgb
|
||||||
|
cr 2.56 cairo_set_line_width
|
||||||
|
cr cairo_stroke
|
||||||
|
|
||||||
|
! draw helping lines
|
||||||
|
cr 1 0.2 0.2 0.6 cairo_set_source_rgba
|
||||||
|
cr 10 135 5.12 0 2 pi * cairo_arc
|
||||||
|
cr cairo_close_path
|
||||||
|
cr 70 165 5.12 0 2 pi * cairo_arc
|
||||||
|
cr cairo_fill ;
|
||||||
|
|
||||||
|
: utf8 ( -- )
|
||||||
|
cr "Serif" CAIRO_FONT_SLANT_NORMAL CAIRO_FONT_WEIGHT_NORMAL
|
||||||
|
cairo_select_font_face
|
||||||
|
cr 50 cairo_set_font_size
|
||||||
|
"cairo_text_extents_t" malloc-object
|
||||||
|
cr B{ 230 151 165 230 156 172 232 170 158 } pick cairo_text_extents
|
||||||
|
cr over
|
||||||
|
[ cairo_text_extents_t-width 2 / ]
|
||||||
|
[ cairo_text_extents_t-x_bearing ] bi +
|
||||||
|
128 swap - pick
|
||||||
|
[ cairo_text_extents_t-height 2 / ]
|
||||||
|
[ cairo_text_extents_t-y_bearing ] bi +
|
||||||
|
128 swap - cairo_move_to
|
||||||
|
free
|
||||||
|
cr B{ 230 151 165 230 156 172 232 170 158 } cairo_show_text
|
||||||
|
|
||||||
|
cr 1 0.2 0.2 0.6 cairo_set_source_rgba
|
||||||
|
cr 6 cairo_set_line_width
|
||||||
|
cr 128 0 cairo_move_to
|
||||||
|
cr 0 256 cairo_rel_line_to
|
||||||
|
cr 0 128 cairo_move_to
|
||||||
|
cr 256 0 cairo_rel_line_to
|
||||||
|
cr cairo_stroke ;
|
Loading…
Reference in New Issue