type t_cairo_api = class() {** @explan(说明)cairo 的c接口函数 %% **} ///////////////////////////cairo//////////////////////////////// function cairo_create(s:pointer):pointer; begin _f_ := static function(s:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(s); end procedure cairo_save(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_restore(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_set_source(cr:pointer;s:pointer); begin _f_ := static procedure(cr:pointer;s:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,s); end function cairo_get_source(cr:pointer):pointer; begin _f_ := static function(cr:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(cr); end procedure cairo_set_source_rgba(c:pointer;red:double;green:double;blue:double;alpha:double); begin _f_ := static procedure(c:pointer;red:double;green:double;blue:double;alpha:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,red,green,blue,alpha); end procedure cairo_set_source_rgb(c:pointer;r:double;g:double;b:double); begin _f_ := static procedure(c:pointer;r:double;g:double;b:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,r,g,b); end procedure cairo_set_line_width(c:pointer;w:double); begin _f_ := static procedure(c:pointer;w:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,w); end function cairo_get_line_width(c:pointer):double; begin _f_ := static function(c:pointer):double;cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_set_line_cap(c:pointer;cp:integer); begin _f_ := static procedure(c:pointer;cp:integer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,cp); end function cairo_get_line_cap(c:pointer):integer; begin _f_ := static function(c:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_set_line_join(c:pointer;t:integer); begin _f_ := static procedure(c:pointer;t:integer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,t); end function cairo_get_line_join(c:pointer):integer; begin _f_ := static function(c:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(c); end //procedure draw_round_rectangle(c:pointer;x:double;y:double;w:double;h:double;r:double);cdecl;external 'libgtk-3.so'; procedure cairo_set_operator(c:pointer;op:integer); begin _f_ := static procedure(c:pointer;op:integer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,op); end function cairo_get_operator(c:pointer):integer; begin _f_ := static function(c:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_set_tolerance(c:pointer;tol:double); begin _f_ := static procedure(c:pointer;tol:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,tol); end function cairo_get_tolerance(c:pointer):double; begin _f_ := static function(c:pointer):double;cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_destroy(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_set_fill_rule(c:pointer;rul:integer); begin _f_ := static procedure(c:pointer;rul:integer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,rul); end procedure cairo_clip(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_clip_preserve(c:pointer); //叠加裁剪 begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_clip_extents(c:pointer;var x1:double;var y1:double;var x2:double;var y2:double); begin _f_ := static procedure(c:pointer;var x1:double;var y1:double;var x2:double;var y2:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,x1,y1,x2,y2); end function cairo_in_clip(c:pointer;x:double;y:double):integer; begin _f_ := static function(c:pointer;x:double;y:double):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(c,x,y); end procedure cairo_reset_clip(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_stroke(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_stroke_preserve(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_set_dash(c:pointer;dash:array of double;num_dash:integer;offset:double); begin _f_ := static procedure(c:pointer;dash:array of double;num_dash:integer;offset:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,dash,num_dash,offset); end procedure cairo_fill(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_fill_preserve(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_fill_extents(c:pointer;x1:double;y1:double;x2:double;y2:double); begin _f_ := static procedure(c:pointer;x1:double;y1:double;x2:double;y2:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,x1,y1,x2,y2); end procedure cairo_paint_with_alpha(c:pointer;alpah:double); begin _f_ := static procedure(c:pointer;alpah:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,alpah); end procedure cairo_paint(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end //////////////////////text//////// https://developer.gnome.org/cairo/stable/cairo-cairo-font-options-t.html#cairo-font-options-get-hint-metrics //slat CAIRO_FONT_SLANT_NORMAL CAIRO_FONT_SLANT_ITALIC CAIRO_FONT_SLANT_OBLIQUE //cairo_font_weight_t CAIRO_FONT_WEIGHT_NORMAL CAIRO_FONT_WEIGHT_BOLD procedure cairo_select_font_face(cr:pointer;n:string;slat:integer;weight:integer); begin _f_ := static procedure(cr:pointer;n:string;slat:integer;weight:integer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,n,slat,weight); end procedure cairo_set_font_size(cr:pointer;sz:double); begin _f_ := static procedure(cr:pointer;sz:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,sz); end procedure cairo_set_font_matrix(cr:pointer;mx:pointer); begin _f_ := static procedure(cr:pointer;mx:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,mx); end procedure cairo_get_font_matrix(cr:pointer;mx:pointer); begin _f_ := static procedure(cr:pointer;mx:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,mx); end procedure cairo_set_font_options(cr:pointer;ft:pointer); begin _f_ := static procedure(cr:pointer;ft:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,ft); end procedure cairo_get_font_options(cr:pointer;ft:pointer); begin _f_ := static procedure(cr:pointer;ft:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,ft); end procedure cairo_set_font_face(cr:pointer;ft:pointer); begin _f_ := static procedure(cr:pointer;ft:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,ft); end function cairo_get_font_face(cr:pointer); begin _f_ := static function(cr:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(cr); end procedure cairo_set_scaled_font(cr:pointer;ft:pointer); begin _f_ := static procedure(cr:pointer;ft:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,ft); end function cairo_get_scaled_font(cr:pointer); begin _f_ := static function(cr:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(cr); end procedure cairo_show_text(c:pointer;t:string); begin _f_ := static procedure(c:pointer;t:string);cdecl;external get_cairo_func(functionname()); return ##_f_(c,t); end //***////////////////////////////////////////////////// //***//////////////////////////////// procedure cairo_font_extents(cr:pointer;ext:pointer); begin _f_ := static procedure(cr:pointer;ext:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,ext); end procedure cairo_text_extents(cr:pointer;s:string;ext:pointer); begin _f_ := static procedure(cr:pointer;s:string;ext:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,s,ext); end function cairo_font_options_create():pointer; begin _f_ := static function():pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(); end procedure cairo_font_options_destroy(op:pointer); begin _f_ := static procedure(op:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(op); end function cairo_toy_font_face_get_family(fc:pointer):string; begin _f_ := static function(fc:pointer):string;cdecl;external get_cairo_func(functionname()); return ##_f_(fc); end ////////cairo surface//////2 { CAIRO_FORMAT_INVALID = -1, CAIRO_FORMAT_ARGB32 = 0, CAIRO_FORMAT_RGB24 = 1, CAIRO_FORMAT_A8 = 2, CAIRO_FORMAT_A1 = 3, CAIRO_FORMAT_RGB16_565 = 4, CAIRO_FORMAT_RGB30 = 5 } ///////////////////////surface//////////////////////////////////////////////////////////////////// function cairo_image_surface_create(fmt:integer;w:integer;h:integer):pointer; begin _f_ := static function(fmt:integer;w:integer;h:integer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(fmt,w,h); end function cairo_image_surface_create_for_data(data:string;fmt:integer;w:integer;h:integer;stride:integer):pointer; begin _f_ := static function(data:string;fmt:integer;w:integer;h:integer;stride:integer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(data,fmt,w,h,stride); end function cairo_image_surface_get_data(sf:pointer):string; begin _f_ := static function(sf:pointer):string;cdecl;external get_cairo_func(functionname()); return ##_f_(sf); end function cairo_image_surface_get_format(sf:pointer):integer; begin _f_ := static function(sf:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(sf); end function cairo_image_surface_get_width(sf:pointer):integer; begin _f_ := static function(sf:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(sf); end function cairo_image_surface_get_height(sf:pointer):integer; begin _f_ := static function(sf:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(sf); end function cairo_image_surface_get_stride(sf:pointer):integer; begin _f_ := static function(sf:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(sf); end function cairo_image_surface_create_from_png(f:string):pointer; begin _f_ := static function(f:string):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(f); end procedure cairo_surface_destroy(sf:pointer); begin _f_ := static procedure(sf:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(sf); end procedure cairo_set_source_surface(cr:pointer;sf:pointer;x:double;y:double); begin _f_ := static procedure(cr:pointer;sf:pointer;x:double;y:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,sf,x,y); end ///////////////path 相关///////////////////////////////////////////////////////////// function cairo_copy_path(cr:pointer):pointer; begin _f_ := static function(cr:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(cr); end function cairo_copy_path_flat(cr:pointer):pointer; begin _f_ := static function(cr:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(cr); end procedure cairo_path_destroy(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_append_path(c:pointer;ph:integer); begin _f_ := static procedure(c:pointer;ph:integer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,ph); end function cairo_has_current_point(cr:pointer):integer; begin _f_ := static function(cr:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(cr); end procedure cairo_get_current_point(c:pointer;var x:integer;var y:integer); begin _f_ := static procedure(c:pointer;var x:integer;var y:integer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,x,y); end procedure cairo_new_path(c:pointer);//Clears the current path. After this call there will be no path and no current point begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_new_sub_path(c:pointer);// begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_close_path(c:pointer); begin _f_ := static procedure(c:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c); end procedure cairo_arc(cr:pointer; xc:double;yc:double;radius:double;angle1:double;angle2:double); begin _f_ := static procedure(cr:pointer; xc:double;yc:double;radius:double;angle1:double;angle2:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,xc,yc,radius,angle1,angle2); end procedure cairo_arc_negative(cr:pointer; xc:double;yc:double;radius:double;angle1:double;angle2:double); begin _f_ := static procedure(cr:pointer; xc:double;yc:double;radius:double;angle1:double;angle2:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,xc,yc,radius,angle1,angle2); end procedure cairo_curve_to(cr:pointer;x1:double;y1:double;x2:double;y2:double;x3:double;y3:double); begin _f_ := static procedure(cr:pointer;x1:double;y1:double;x2:double;y2:double;x3:double;y3:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,x1,y1,x2,y2,x3,y3); end function cairo_move_to(cr:pointer;x:double;y:double); begin _f_ := static function(cr:pointer;x:double;y:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,x,y); end function cairo_line_to(cr:pointer;x:double;y:double); begin _f_ := static function(cr:pointer;x:double;y:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,x,y); end procedure cairo_rectangle(c:pointer;x:double;y:double;w:double;h:double); begin _f_ := static procedure(c:pointer;x:double;y:double;w:double;h:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,x,y,w,h); end procedure cairo_text_path(c:pointer;s:string); begin _f_ := static procedure(c:pointer;s:string);cdecl;external get_cairo_func(functionname()); return ##_f_(c,s); end procedure cairo_rel_curve_to(cr:pointer;x1:double;y1:double;x2:double;y2:double;x3:double;y3:double); begin _f_ := static procedure(cr:pointer;x1:double;y1:double;x2:double;y2:double;x3:double;y3:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,x1,y1,x2,y2,x3,y3); end function cairo_rel_line_to(cr:pointer;x:double;y:double); begin _f_ := static function(cr:pointer;x:double;y:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,x,y); end function cairo_rel_move_to(cr:pointer;x:double;y:double); begin _f_ := static function(cr:pointer;x:double;y:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,x,y); end procedure cairo_path_extents(cr:pointer;x1:double;y1:double;x2:double;y2:double); begin _f_ := static procedure(cr:pointer;x1:double;y1:double;x2:double;y2:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,x1,y1,x2,y2); end (* typedef struct cairo_status_t status; cairo_path_data_t *data; int num_data; cairo_path_t; *) ////////////////pattern//////////////////////////////////////// procedure cairo_pattern_add_color_stop_rgb(c:pointer;offset:double;r:double;g:double;b:double); begin _f_ := static procedure(c:pointer;offset:double;r:double;g:double;b:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,offset,r,g,b); end procedure cairo_pattern_add_color_stop_rgba(c:pointer;offset:double;r:double;g:double;b:double;a:double); begin _f_ := static procedure(c:pointer;offset:double;r:double;g:double;b:double;a:double);cdecl;external get_cairo_func(functionname()); return ##_f_(c,offset,r,g,b,a); end function cairo_pattern_get_color_stop_count(pt:pointer;var ct:integer):integer; begin _f_ := static function(pt:pointer;var ct:integer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,ct); end function cairo_pattern_get_color_stop_rgba(cpt:pointer;idx:integer;var offset:double;var r:double;var g:double;var b:double;var a:double):integer; begin _f_ := static function(cpt:pointer;idx:integer;var offset:double;var r:double;var g:double;var b:double;var a:double):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(cpt,idx,offset,r,g,b,a); end function cairo_pattern_create_rgb(r:double;g:double;b:double):pointer; begin _f_ := static function(r:double;g:double;b:double):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(r,g,b); end function cairo_pattern_create_rgba(r:double;g:double;b:double;a:double):pointer; begin _f_ := static function(r:double;g:double;b:double;a:double):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(r,g,b,a); end function cairo_pattern_get_rgba(pt:pointer;var r:double;var g:double;var b:double;var a:double):integer; begin _f_ := static function(pt:pointer;var r:double;var g:double;var b:double;var a:double):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,r,g,b,a); end function cairo_pattern_create_for_surface(sf:pointer):pointer; begin _f_ := static function(sf:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(sf); end function cairo_pattern_get_surface(pt:pointer;var sf:pointer):integer; begin _f_ := static function(pt:pointer;var sf:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,sf); end function cairo_pattern_create_linear(x0:double;y0:double;x1:double;y1:double):pointer; begin _f_ := static function(x0:double;y0:double;x1:double;y1:double):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(x0,y0,x1,y1); end function cairo_pattern_get_linear_points(pt:pointer;var x0:double;var y0:double;var x1:double;var y1:double):integer; begin _f_ := static function(pt:pointer;var x0:double;var y0:double;var x1:double;var y1:double):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,x0,y0,x1,y1); end function cairo_pattern_create_radial(x0:double;y0:double;rd0:double;x1:double;y1:double;rd1:double):pointer; begin _f_ := static function(x0:double;y0:double;rd0:double;x1:double;y1:double;rd1:double):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(x0,y0,rd0,x1,y1,rd1); end function cairo_pattern_get_radial_circles(pt:pointer;var x0:double;var y0:double;var rd0:double;var x1:double;var y1:double;var rd1:double):integer; begin _f_ := static function(pt:pointer;var x0:double;var y0:double;var rd0:double;var x1:double;var y1:double;var rd1:double):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,x0,y0,rd0,x1,y1,rd1); end function cairo_pattern_create_mesh():pointer; begin _f_ := static function():pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(); end procedure cairo_mesh_pattern_begin_patch(pt:pointer); begin _f_ := static procedure(pt:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end procedure cairo_mesh_pattern_end_patch(pt:pointer); begin _f_ := static procedure(pt:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end procedure cairo_mesh_pattern_move_to(pt:pointer;x:double;y:double); begin _f_ := static procedure(pt:pointer;x:double;y:double);cdecl;external get_cairo_func(functionname()); return ##_f_(pt,x,y); end procedure cairo_mesh_pattern_line_to(pt:pointer;x:double;y:double); begin _f_ := static procedure(pt:pointer;x:double;y:double);cdecl;external get_cairo_func(functionname()); return ##_f_(pt,x,y); end procedure cairo_mesh_pattern_curve_to(pt:pointer;x1:double;y1:double;x2:double;y2:double;x3:double;y3:double); begin _f_ := static procedure(pt:pointer;x1:double;y1:double;x2:double;y2:double;x3:double;y3:double);cdecl;external get_cairo_func(functionname()); return ##_f_(pt,x1,y1,x2,y2,x3,y3); end procedure cairo_mesh_pattern_set_control_point(pt:pointer;point_num:integer;x1:double;y1:double); begin _f_ := static procedure(pt:pointer;point_num:integer;x1:double;y1:double);cdecl;external get_cairo_func(functionname()); return ##_f_(pt,point_num,x1,y1); end procedure cairo_mesh_pattern_set_corner_color_rgb(pt:pointer;point_num:integer;r:double;g:double;b:double); begin _f_ := static procedure(pt:pointer;point_num:integer;r:double;g:double;b:double);cdecl;external get_cairo_func(functionname()); return ##_f_(pt,point_num,r,g,b); end procedure cairo_mesh_pattern_set_corner_color_rgba(pt:pointer;point_num:integer;r:double;g:double;b:double;a:double); begin _f_ := static procedure(pt:pointer;point_num:integer;r:double;g:double;b:double;a:double);cdecl;external get_cairo_func(functionname()); return ##_f_(pt,point_num,r,g,b,a); end function cairo_mesh_pattern_get_patch_count(pt:pointer;var ct:integer):integer; begin _f_ := static function(pt:pointer;var ct:integer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,ct); end function cairo_mesh_pattern_get_path(pt:pointer;patch_num:integer):pointer; begin _f_ := static function(pt:pointer;patch_num:integer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,patch_num); end function cairo_mesh_pattern_get_control_point(pt:pointer;patch_num:integer;point_num:integer;var x:double;var y:double):integer; begin _f_ := static function(pt:pointer;patch_num:integer;point_num:integer;var x:double;var y:double):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,patch_num,point_num,x,y); end function cairo_mesh_pattern_get_corner_color_rgba(pt:pointer;patch_num:integer;point_num:integer;var r:double;var g:double;var b:double;var a:double):integer; begin _f_ := static function(pt:pointer;patch_num:integer;point_num:integer;var r:double;var g:double;var b:double;var a:double):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,patch_num,point_num,r,g,b,a); end function cairo_pattern_reference(pt:pointer):pointer; begin _f_ := static function(pt:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end procedure cairo_pattern_destroy(pt:pointer); begin _f_ := static procedure(pt:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end function cairo_pattern_status(pt:pointer):integer; begin _f_ := static function(pt:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end procedure cairo_pattern_set_extend(c:pointer;pe:integer); begin _f_ := static procedure(c:pointer;pe:integer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,pe); end function cairo_pattern_get_extend(pt:pointer):pointer; begin _f_ := static function(pt:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end procedure cairo_pattern_set_filter(c:pointer;pe:pointer); begin _f_ := static procedure(c:pointer;pe:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,pe); end function cairo_pattern_get_filter(pt:pointer):pointer; begin _f_ := static function(pt:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end procedure cairo_pattern_set_matrix(c:pointer;mx:pointer); begin _f_ := static procedure(c:pointer;mx:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,mx); end procedure cairo_pattern_get_matrix(c:pointer;var mx:pointer); begin _f_ := static procedure(c:pointer;var mx:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(c,var mx); end function cairo_pattern_get_type(pt:pointer):pointer; begin _f_ := static function(pt:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end function cairo_pattern_get_reference_count(pt:pointer):integer; begin _f_ := static function(pt:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end function cairo_pattern_set_user_data(pt:pointer;key:string;data:pointer;des:pointer):integer; begin _f_ := static function(pt:pointer;key:string;data:pointer;des:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,key,data,des); end function cairo_pattern_get_user_data(pt:pointer;key:string):pointer; begin _f_ := static function(pt:pointer;key:string):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt,key); end procedure cairo_pattern_set_dither(pt:pointer;dither:pointer); begin _f_ := static procedure(pt:pointer;dither:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(pt,dither); end function cairo_pattern_get_dither(pt:pointer):pointer; begin _f_ := static function(pt:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(pt); end ///////////////////region/////////////////////////// function cairo_region_create():pointer; begin _f_ := static function():pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(); end function cairo_region_create_rectangle(rec:pointer):pointer; begin _f_ := static function(rec:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(rec); end function cairo_region_create_rectangles(rec:pointer;ct:integer):pointer; begin _f_ := static function(rec:pointer;ct:integer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(rec,ct); end function cairo_region_copy(rg:pointer):pointer; begin _f_ := static function(rg:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg); end function cairo_region_reference(rg:pointer):pointer; begin _f_ := static function(rg:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg); end procedure cairo_region_destroy(rg:pointer); begin _f_ := static procedure(rg:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(rg); end function cairo_region_status(rg:pointer):integer; begin _f_ := static function(rg:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg); end procedure cairo_region_get_extents(rg:pointer;exts:pointer); begin _f_ := static procedure(rg:pointer;exts:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(rg,exts); end function cairo_region_num_rectangles(rg:pointer):integer; begin _f_ := static function(rg:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg); end procedure cairo_region_get_rectangle(rg:pointer;nth:integer;rectangle:pointer); begin _f_ := static procedure(rg:pointer;nth:integer;rectangle:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(rg,nth,rectangle); end function cairo_region_is_empty(rg:pointer):integer; begin _f_ := static function(rg:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg); end function cairo_region_contains_point(rg:pointer;x:integer;y:integer):integer; begin _f_ := static function(rg:pointer;x:integer;y:integer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,x,y); end function cairo_region_equal(rg:pointer;rg2:pointer):integer; begin _f_ := static function(rg:pointer;rg2:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,rg2); end function cairo_region_translate(rg:pointer;x:integer;y:integer):integer; begin _f_ := static function(rg:pointer;x:integer;y:integer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,x,y); end function cairo_region_intersect(rg:pointer;rg2:pointer):integer; begin _f_ := static function(rg:pointer;rg2:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,rg2); end function cairo_region_intersect_rectangle(rg:pointer;rectangle:pointer):integer; begin _f_ := static function(rg:pointer;rectangle:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,rectangle); end function cairo_region_subtract(rg:pointer;rg2:pointer):integer; begin _f_ := static function(rg:pointer;rg2:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,rg2); end function cairo_region_subtract_rectangle(rg:pointer;rectangle:pointer):integer; begin _f_ := static function(rg:pointer;rectangle:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,rectangle); end function cairo_region_union(rg:pointer;rg2:pointer):integer; begin _f_ := static function(rg:pointer;rg2:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,rg2); end function cairo_region_union_rectangle(rg:pointer;rectangle:pointer):integer; begin _f_ := static function(rg:pointer;rectangle:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,rectangle); end function cairo_region_xor(rg:pointer;rg2:pointer):integer; begin _f_ := static function(rg:pointer;rg2:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,rg2); end function cairo_region_xor_rectangle(rg:pointer;rectangle:pointer):integer; begin _f_ := static function(rg:pointer;rectangle:pointer):integer;cdecl;external get_cairo_func(functionname()); return ##_f_(rg,rectangle); end ///////////////Transformations//////////////////////////////// procedure cairo_translate(cr:pointer;tx:double;ty:double); begin _f_ := static procedure(cr:pointer;tx:double;ty:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,tx,ty); end procedure cairo_scale(cr:pointer;sx:double;sy:double); begin _f_ := static procedure(cr:pointer;sx:double;sy:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,sx,sy); end procedure cairo_rotate(cr:pointer;angle:double); begin _f_ := static procedure(cr:pointer;angle:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,angle); end procedure cairo_transform(cr:pointer;mx:pointer); begin _f_ := static procedure(cr:pointer;mx:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,mx); end procedure cairo_set_matrix(cr:pointer;mx:pointer); begin _f_ := static procedure(cr:pointer;mx:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,mx); end procedure cairo_identity_matrix(cr:pointer); begin _f_ := static procedure(cr:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(cr); end procedure cairo_user_to_device(cr:pointer;var sx:double;var sy:double); begin _f_ := static procedure(cr:pointer;var sx:double;var sy:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,sx,sy); end procedure cairo_user_to_device_distance(cr:pointer;var sx:double;var sy:double); begin _f_ := static procedure(cr:pointer;var sx:double;var sy:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,sx,sy); end procedure cairo_device_to_user(cr:pointer;var sx:double;var sy:double); begin _f_ := static procedure(cr:pointer;var sx:double;var sy:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,sx,sy); end procedure cairo_device_to_user_distance(cr:pointer;var sx:double;var sy:double); begin _f_ := static procedure(cr:pointer;var sx:double;var sy:double);cdecl;external get_cairo_func(functionname()); return ##_f_(cr,sx,sy); end function api_init(); //初始化 begin end protected class function get_cairo_func(n); /////////////////////////获取cairo 函数指针 begin return getdlsymaddress("libgtk-3.so.0",n); end end