type t_cairo_api = class() {** @explan(说明)cairo 的c接口函数 %% **} ///////////////////////////cairo//////////////////////////////// procedure cairo_pattern_destroy(p:pointer); begin _f_ := static procedure(p:pointer);cdecl;external get_cairo_func(functionname()); return ##_f_(p); end function cairo_pattern_create_for_surface(f:pointer):pointer; begin _f_ := static function(f:pointer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(f); end 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 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_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_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 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_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_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_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_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_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_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_close_path(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 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_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_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 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_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_options(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_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 ////////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 } function cairo_image_surface_create(t:integer;w:integer;h:integer):pointer; begin _f_ := static function(t:integer;w:integer;h:integer):pointer;cdecl;external get_cairo_func(functionname()); return ##_f_(t,w,h); 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 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 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 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_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 procedure cairo_pattern_add_color_stop_rgb(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 api_init(); begin end protected class function get_cairo_func(n); /////////////////////////获取cairo 函数指针 begin return getdlsymaddress("libgtk-3.so.0",n); end end