diff --git a/funcext/tvclib/t_cairo_api.tsf b/funcext/tvclib/t_cairo_api.tsf new file mode 100644 index 0000000..0a57db4 --- /dev/null +++ b/funcext/tvclib/t_cairo_api.tsf @@ -0,0 +1,334 @@ +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 \ No newline at end of file diff --git a/funcext/tvclib/t_gdiplusflat_api.tsf b/funcext/tvclib/t_gdiplusflat_api.tsf new file mode 100644 index 0000000..451a197 --- /dev/null +++ b/funcext/tvclib/t_gdiplusflat_api.tsf @@ -0,0 +1,703 @@ +type t_gdiplusflat_api=class() //gdiplus接口 +{** + @explan(说明)gdi+ 的c接口函数 %% +**} + (* *************************************************************************\ + * Module Name: + * GdiplusFlat.h + ************************************************************************* *) + //---------------------------------------------------------------------------- + // GraphicsPath APIs + //---------------------------------------------------------------------------- + Function GdipCreatePath(brushMode:integer;var path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePath"; + Function GdipCreatePath2(pn2:pointer;pn5:pointer;pn7:integer;pn9:integer;var path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePath2"; + Function GdipCreatePath2I(pn2:pointer;pn5:pointer;pn7:integer;pn9:integer;var path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePath2I"; + Function GdipClonePath(path:pointer;var clonePath:pointer):integer;stdcall;external "gdiplus.dll" name "GdipClonePath"; + Function GdipDeletePath(path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeletePath"; + Function GdipResetPath(path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetPath"; + Function GdipGetPointCount(path:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPointCount"; + Function GdipGetPathTypes(path:pointer;types:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathTypes"; + Function GdipGetPathPoints(pn2:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathPoints"; + Function GdipGetPathPointsI(pn2:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathPointsI"; + Function GdipGetPathFillMode(path:pointer;var fillmode:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathFillMode"; + Function GdipSetPathFillMode(path:pointer;fillmode:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathFillMode"; + Function GdipGetPathData(path:pointer;pathData:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathData"; + Function GdipStartPathFigure(path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipStartPathFigure"; + Function GdipClosePathFigure(path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipClosePathFigure"; + Function GdipClosePathFigures(path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipClosePathFigures"; + Function GdipSetPathMarker(path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathMarker"; + Function GdipClearPathMarkers(path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipClearPathMarkers"; + Function GdipReversePath(path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipReversePath"; + Function GdipGetPathLastPoint(path:pointer;lastPoint:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathLastPoint"; + Function GdipAddPathLine(path:pointer;x1:single;y1:single;x2:single;y2:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathLine"; + Function GdipAddPathLine2(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathLine2"; + Function GdipAddPathArc(path:pointer;x:single;y:single;width:single;height:single;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathArc"; + Function GdipAddPathBezier(path:pointer;x1:single;y1:single;x2:single;y2:single;x3:single;y3:single;x4:single;y4:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathBezier"; + Function GdipAddPathBeziers(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathBeziers"; + Function GdipAddPathCurve(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathCurve"; + Function GdipAddPathCurve2(path:pointer;points:pointer;ct:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathCurve2"; + Function GdipAddPathCurve3(path:pointer;points:pointer;ct:integer;offset:integer;numberOfSegments:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathCurve3"; + Function GdipAddPathClosedCurve(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathClosedCurve"; + Function GdipAddPathClosedCurve2(path:pointer;points:pointer;ct:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathClosedCurve2"; + Function GdipAddPathRectangle(path:pointer;x:single;y:single;width:single;height:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathRectangle"; + Function GdipAddPathRectangles(path:pointer;rects:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathRectangles"; + Function GdipAddPathEllipse(path:pointer;x:single;y:single;width:single;height:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathEllipse"; + Function GdipAddPathPie(path:pointer;x:single;y:single;width:single;height:single;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathPie"; + Function GdipAddPathPolygon(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathPolygon"; + Function GdipAddPathPath(path:pointer;addingPath:pointer;connect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathPath"; + Function GdipAddPathString(path:pointer;string:string;length:integer;family:pointer;style:integer;emSize:single;layoutRect:pointer;format:pointer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathString"; + Function GdipAddPathStringI(path:pointer;string:string;length:integer;family:pointer;style:integer;emSize:single;layoutRect:pointer;format:pointer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathStringI"; + Function GdipAddPathLineI(path:pointer;x1:integer;y1:integer;x2:integer;y2:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathLineI"; + Function GdipAddPathLine2I(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathLine2I"; + Function GdipAddPathArcI(path:pointer;x:integer;y:integer;width:integer;height:integer;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathArcI"; + Function GdipAddPathBezierI(path:pointer;x1:integer;y1:integer;x2:integer;y2:integer;x3:integer;y3:integer;x4:integer;y4:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathBezierI"; + Function GdipAddPathBeziersI(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathBeziersI"; + Function GdipAddPathCurveI(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathCurveI"; + Function GdipAddPathCurve2I(path:pointer;points:pointer;ct:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathCurve2I"; + Function GdipAddPathCurve3I(path:pointer;points:pointer;ct:integer;offset:integer;numberOfSegments:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathCurve3I"; + Function GdipAddPathClosedCurveI(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathClosedCurveI"; + Function GdipAddPathClosedCurve2I(path:pointer;points:pointer;ct:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathClosedCurve2I"; + Function GdipAddPathRectangleI(path:pointer;x:integer;y:integer;width:integer;height:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathRectangleI"; + Function GdipAddPathRectanglesI(path:pointer;rects:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathRectanglesI"; + Function GdipAddPathEllipseI(path:pointer;x:integer;y:integer;width:integer;height:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathEllipseI"; + Function GdipAddPathPieI(path:pointer;x:integer;y:integer;width:integer;height:integer;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipAddPathPieI"; + Function GdipAddPathPolygonI(path:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipAddPathPolygonI"; + Function GdipFlattenPath(path:pointer;matrix:pointer;flatness:single):integer;stdcall;external "gdiplus.dll" name "GdipFlattenPath"; + Function GdipWindingModeOutline(path:pointer;matrix:pointer;flatness:single):integer;stdcall;external "gdiplus.dll" name "GdipWindingModeOutline"; + Function GdipWidenPath(nativePath:pointer;pen:pointer;matrix:pointer;flatness:single):integer;stdcall;external "gdiplus.dll" name "GdipWidenPath"; + Function GdipWarpPath(path:pointer;matrix:pointer;points:pointer;ct:integer;srcx:single;srcy:single;srcwidth:single;srcheight:single;warpMode:pointer;flatness:single):integer;stdcall;external "gdiplus.dll" name "GdipWarpPath"; + Function GdipTransformPath(path:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipTransformPath"; + Function GdipGetPathWorldBounds(path:pointer;bounds:pointer;matrix:pointer;pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathWorldBounds"; + Function GdipGetPathWorldBoundsI(path:pointer;bounds:pointer;matrix:pointer;pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathWorldBoundsI"; + Function GdipIsVisiblePathPoint(path:pointer;x:single;y:single;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisiblePathPoint"; + Function GdipIsVisiblePathPointI(path:pointer;x:integer;y:integer;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisiblePathPointI"; + Function GdipIsOutlineVisiblePathPoint(path:pointer;x:single;y:single;pen:pointer;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsOutlineVisiblePathPoint"; + Function GdipIsOutlineVisiblePathPointI(path:pointer;x:integer;y:integer;pen:pointer;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsOutlineVisiblePathPointI"; + //---------------------------------------------------------------------------- + // PathIterator APIs + //---------------------------------------------------------------------------- + Function GdipCreatePathIter(var iterator:pointer;path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePathIter"; + Function GdipDeletePathIter(iterator:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeletePathIter"; + Function GdipPathIterNextSubpath(iterator:pointer;var resultCount:integer;var startIndex:integer;var endIndex:integer;isClosed:pointer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterNextSubpath"; + Function GdipPathIterNextSubpathPath(iterator:pointer;var resultCount:integer;path:pointer;isClosed:pointer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterNextSubpathPath"; + Function GdipPathIterNextPathType(iterator:pointer;var resultCount:integer;pathType:pointer;var startIndex:integer;var endIndex:integer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterNextPathType"; + Function GdipPathIterNextMarker(iterator:pointer;var resultCount:integer;var startIndex:integer;var endIndex:integer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterNextMarker"; + Function GdipPathIterNextMarkerPath(iterator:pointer;var resultCount:integer;path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterNextMarkerPath"; + Function GdipPathIterGetCount(iterator:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterGetCount"; + Function GdipPathIterGetSubpathCount(iterator:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterGetSubpathCount"; + Function GdipPathIterIsValid(iterator:pointer;valid:pointer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterIsValid"; + Function GdipPathIterHasCurve(iterator:pointer;hasCurve:pointer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterHasCurve"; + Function GdipPathIterRewind(iterator:pointer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterRewind"; + Function GdipPathIterEnumerate(iterator:pointer;var resultCount:integer;points:pointer;types:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterEnumerate"; + Function GdipPathIterCopyData(iterator:pointer;var resultCount:integer;points:pointer;types:pointer;startIndex:integer;endIndex:integer):integer;stdcall;external "gdiplus.dll" name "GdipPathIterCopyData"; + //---------------------------------------------------------------------------- + // Matrix APIs + //---------------------------------------------------------------------------- + Function GdipCreateMatrix(var matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateMatrix"; + Function GdipCreateMatrix2(m11:single;m12:single;m21:single;m22:single;dx:single;dy:single;var matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateMatrix2"; + Function GdipCreateMatrix3(rect:pointer;dstplg:pointer;var matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateMatrix3"; + Function GdipCreateMatrix3I(rect:pointer;dstplg:pointer;var matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateMatrix3I"; + Function GdipCloneMatrix(matrix:pointer;var cloneMatrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneMatrix"; + Function GdipDeleteMatrix(matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteMatrix"; + Function GdipSetMatrixElements(matrix:pointer;m11:single;m12:single;m21:single;m22:single;dx:single;dy:single):integer;stdcall;external "gdiplus.dll" name "GdipSetMatrixElements"; + Function GdipMultiplyMatrix(matrix:pointer;matrix2:pointer;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipMultiplyMatrix"; + Function GdipTranslateMatrix(matrix:pointer;offsetX:single;offsetY:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipTranslateMatrix"; + Function GdipScaleMatrix(matrix:pointer;scaleX:single;scaleY:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipScaleMatrix"; + Function GdipRotateMatrix(matrix:pointer;angle:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRotateMatrix"; + Function GdipShearMatrix(matrix:pointer;shearX:single;shearY:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipShearMatrix"; + Function GdipInvertMatrix(matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipInvertMatrix"; + Function GdipTransformMatrixPoints(matrix:pointer;pts:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipTransformMatrixPoints"; + Function GdipTransformMatrixPointsI(matrix:pointer;pts:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipTransformMatrixPointsI"; + Function GdipVectorTransformMatrixPoints(matrix:pointer;pts:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipVectorTransformMatrixPoints"; + Function GdipVectorTransformMatrixPointsI(matrix:pointer;pts:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipVectorTransformMatrixPointsI"; + Function GdipGetMatrixElements(matrix:pointer; var matrixOut:array of single):integer;stdcall;external "gdiplus.dll" name "GdipGetMatrixElements"; //var matrixOut:single + Function GdipIsMatrixInvertible(matrix:pointer;var result:integer):integer;stdcall;external "gdiplus.dll" name "GdipIsMatrixInvertible"; + Function GdipIsMatrixIdentity(matrix:pointer;var result:integer):integer;stdcall;external "gdiplus.dll" name "GdipIsMatrixIdentity"; + Function GdipIsMatrixEqual(matrix:pointer;matrix2:pointer;var result:integer):integer;stdcall;external "gdiplus.dll" name "GdipIsMatrixEqual"; + //---------------------------------------------------------------------------- + // Region APIs + //---------------------------------------------------------------------------- + Function GdipCreateRegion(var region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateRegion"; + Function GdipCreateRegionRect(rect:pointer;var region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateRegionRect"; + Function GdipCreateRegionRectI(rect:pointer;var region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateRegionRectI"; + Function GdipCreateRegionPath(path:pointer;var region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateRegionPath"; + Function GdipCreateRegionRgnData(regionData:pointer;size:integer;var region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateRegionRgnData"; + Function GdipCreateRegionHrgn(hRgn:pointer;var region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateRegionHrgn"; + Function GdipCloneRegion(region:pointer;var cloneRegion:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneRegion"; + Function GdipDeleteRegion(region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteRegion"; + Function GdipSetInfinite(region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetInfinite"; + Function GdipSetEmpty(region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetEmpty"; + Function GdipCombineRegionRect(region:pointer;rect:pointer;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCombineRegionRect"; + Function GdipCombineRegionRectI(region:pointer;rect:pointer;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCombineRegionRectI"; + Function GdipCombineRegionPath(region:pointer;path:pointer;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCombineRegionPath"; + Function GdipCombineRegionRegion(region:pointer;region2:pointer;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCombineRegionRegion"; + Function GdipTranslateRegion(region:pointer;dx:single;dy:single):integer;stdcall;external "gdiplus.dll" name "GdipTranslateRegion"; + Function GdipTranslateRegionI(region:pointer;dx:integer;dy:integer):integer;stdcall;external "gdiplus.dll" name "GdipTranslateRegionI"; + Function GdipTransformRegion(region:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipTransformRegion"; + Function GdipGetRegionBounds(region:pointer;graphics:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetRegionBounds"; + Function GdipGetRegionBoundsI(region:pointer;graphics:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetRegionBoundsI"; + Function GdipGetRegionHRgn(region:pointer;graphics:pointer;hRgn:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetRegionHRgn"; + Function GdipIsEmptyRegion(region:pointer;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsEmptyRegion"; + Function GdipIsInfiniteRegion(region:pointer;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsInfiniteRegion"; + Function GdipIsEqualRegion(region:pointer;region2:pointer;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsEqualRegion"; + Function GdipGetRegionDataSize(region:pointer;var bufferSize:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetRegionDataSize"; + Function GdipGetRegionData(region:pointer;buffer:pointer;bufferSize:integer;sizeFilled:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetRegionData"; + Function GdipIsVisibleRegionPoint(region:pointer;x:single;y:single;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisibleRegionPoint"; + Function GdipIsVisibleRegionPointI(region:pointer;x:integer;y:integer;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisibleRegionPointI"; + Function GdipIsVisibleRegionRect(region:pointer;x:single;y:single;width:single;height:single;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisibleRegionRect"; + Function GdipIsVisibleRegionRectI(region:pointer;x:integer;y:integer;width:integer;height:integer;graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisibleRegionRectI"; + Function GdipGetRegionScansCount(region:pointer;var ct:integer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetRegionScansCount"; + Function GdipGetRegionScans(region:pointer;rects:pointer;var ct:integer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetRegionScans"; + Function GdipGetRegionScansI(region:pointer;rects:pointer;var ct:integer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetRegionScansI"; + //---------------------------------------------------------------------------- + // Brush APIs + //---------------------------------------------------------------------------- + Function GdipCloneBrush(brush:pointer;var cloneBrush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneBrush"; + Function GdipDeleteBrush(brush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteBrush"; + Function GdipGetBrushType(brush:pointer;type:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetBrushType"; + //---------------------------------------------------------------------------- + // HatchBrush APIs + //---------------------------------------------------------------------------- + Function GdipCreateHatchBrush(hatchstyle:pointer;forecol:integer;backcol:integer;var brush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateHatchBrush"; + Function GdipGetHatchStyle(brush:pointer;hatchstyle:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetHatchStyle"; + Function GdipGetHatchForegroundColor(brush:pointer;var forecol:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetHatchForegroundColor"; + Function GdipGetHatchBackgroundColor(brush:pointer;var backcol:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetHatchBackgroundColor"; + //---------------------------------------------------------------------------- + // TextureBrush APIs + //---------------------------------------------------------------------------- + Function GdipCreateTexture(image:pointer;wrapmode:integer;var texture:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateTexture"; + Function GdipCreateTexture2(image:pointer;wrapmode:integer;x:single;y:single;width:single;height:single;var texture:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateTexture2"; + Function GdipCreateTextureIA(image:pointer;imageAttributes:pointer;x:single;y:single;width:single;height:single;var texture:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateTextureIA"; + Function GdipCreateTexture2I(image:pointer;wrapmode:integer;x:integer;y:integer;width:integer;height:integer;var texture:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateTexture2I"; + Function GdipCreateTextureIAI(image:pointer;imageAttributes:pointer;x:integer;y:integer;width:integer;height:integer;var texture:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateTextureIAI"; + Function GdipGetTextureTransform(brush:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetTextureTransform"; + Function GdipSetTextureTransform(brush:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetTextureTransform"; + Function GdipResetTextureTransform(brush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetTextureTransform"; + Function GdipMultiplyTextureTransform(brush:pointer;matrix:pointer;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipMultiplyTextureTransform"; + Function GdipTranslateTextureTransform(brush:pointer;dx:single;dy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipTranslateTextureTransform"; + Function GdipScaleTextureTransform(brush:pointer;sx:single;sy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipScaleTextureTransform"; + Function GdipRotateTextureTransform(brush:pointer;angle:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRotateTextureTransform"; + Function GdipSetTextureWrapMode(brush:pointer;wrapmode:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetTextureWrapMode"; + Function GdipGetTextureWrapMode(brush:pointer;var wrapmode:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetTextureWrapMode"; + Function GdipGetTextureImage(brush:pointer;var image:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetTextureImage"; + //---------------------------------------------------------------------------- + // SolidBrush APIs + //---------------------------------------------------------------------------- + Function GdipCreateSolidFill(color:integer;var brush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateSolidFill"; + Function GdipSetSolidFillColor(brush:pointer;color:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetSolidFillColor"; + Function GdipGetSolidFillColor(brush:pointer;var color:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetSolidFillColor"; + //---------------------------------------------------------------------------- + // LineBrush APIs + //---------------------------------------------------------------------------- + Function GdipCreateLineBrush(point1:pointer;point2:pointer;color1:integer;color2:integer;wrapMode:integer;var lineGradient:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateLineBrush"; + Function GdipCreateLineBrushI(point1:pointer;point2:pointer;color1:integer;color2:integer;wrapMode:integer;var lineGradient:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateLineBrushI"; + Function GdipCreateLineBrushFromRect(rect:pointer;color1:integer;color2:integer;mode:pointer;wrapMode:integer;var lineGradient:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateLineBrushFromRect"; + Function GdipCreateLineBrushFromRectI(rect:pointer;color1:integer;color2:integer;mode:pointer;wrapMode:integer;var lineGradient:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateLineBrushFromRectI"; + Function GdipCreateLineBrushFromRectWithAngle(rect:pointer;color1:integer;color2:integer;angle:single;isAngleScalable:pointer;wrapMode:integer;var lineGradient:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateLineBrushFromRectWithAngle"; + Function GdipCreateLineBrushFromRectWithAngleI(rect:pointer;color1:integer;color2:integer;angle:single;isAngleScalable:pointer;wrapMode:integer;var lineGradient:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateLineBrushFromRectWithAngleI"; + Function GdipSetLineColors(brush:pointer;color1:integer;color2:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetLineColors"; + Function GdipGetLineColors(brush:pointer;var colors:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetLineColors"; + Function GdipGetLineRect(brush:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetLineRect"; + Function GdipGetLineRectI(brush:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetLineRectI"; + Function GdipSetLineGammaCorrection(brush:pointer;useGammaCorrection:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetLineGammaCorrection"; + Function GdipGetLineGammaCorrection(brush:pointer;useGammaCorrection:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetLineGammaCorrection"; + Function GdipGetLineBlendCount(brush:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetLineBlendCount"; + Function GdipGetLineBlend(brush:pointer;var blend:single;var positions:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetLineBlend"; + Function GdipSetLineBlend(brush:pointer;var blend:single;var positions:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetLineBlend"; + Function GdipGetLinePresetBlendCount(brush:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetLinePresetBlendCount"; + Function GdipGetLinePresetBlend(brush:pointer;var blend:integer;var positions:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetLinePresetBlend"; + Function GdipSetLinePresetBlend(brush:pointer;var blend:integer;var positions:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetLinePresetBlend"; + Function GdipSetLineSigmaBlend(brush:pointer;focus:single;scale:single):integer;stdcall;external "gdiplus.dll" name "GdipSetLineSigmaBlend"; + Function GdipSetLineLinearBlend(brush:pointer;focus:single;scale:single):integer;stdcall;external "gdiplus.dll" name "GdipSetLineLinearBlend"; + Function GdipSetLineWrapMode(brush:pointer;wrapmode:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetLineWrapMode"; + Function GdipGetLineWrapMode(brush:pointer;var wrapmode:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetLineWrapMode"; + Function GdipGetLineTransform(brush:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetLineTransform"; + Function GdipSetLineTransform(brush:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetLineTransform"; + Function GdipResetLineTransform(brush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetLineTransform"; + Function GdipMultiplyLineTransform(brush:pointer;matrix:pointer;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipMultiplyLineTransform"; + Function GdipTranslateLineTransform(brush:pointer;dx:single;dy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipTranslateLineTransform"; + Function GdipScaleLineTransform(brush:pointer;sx:single;sy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipScaleLineTransform"; + Function GdipRotateLineTransform(brush:pointer;angle:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRotateLineTransform"; + //---------------------------------------------------------------------------- + // PathGradientBrush APIs + //---------------------------------------------------------------------------- + Function GdipCreatePathGradient(points:pointer;ct:integer;wrapMode:integer;var polyGradient:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePathGradient"; + Function GdipCreatePathGradientI(points:pointer;ct:integer;wrapMode:integer;var polyGradient:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePathGradientI"; + Function GdipCreatePathGradientFromPath(path:pointer;var polyGradient:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePathGradientFromPath"; + Function GdipGetPathGradientCenterColor(brush:pointer;var colors:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientCenterColor"; + Function GdipSetPathGradientCenterColor(brush:pointer;colors:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientCenterColor"; + Function GdipGetPathGradientSurroundColorsWithCount(brush:pointer;var color:integer;ct:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientSurroundColorsWithCount"; + Function GdipSetPathGradientSurroundColorsWithCount(brush:pointer;var color:integer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientSurroundColorsWithCount"; + Function GdipGetPathGradientPath(brush:pointer;path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientPath"; + Function GdipSetPathGradientPath(brush:pointer;path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientPath"; + Function GdipGetPathGradientCenterPoint(brush:pointer;points:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientCenterPoint"; + Function GdipGetPathGradientCenterPointI(brush:pointer;points:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientCenterPointI"; + Function GdipSetPathGradientCenterPoint(brush:pointer;points:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientCenterPoint"; + Function GdipSetPathGradientCenterPointI(brush:pointer;points:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientCenterPointI"; + Function GdipGetPathGradientRect(brush:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientRect"; + Function GdipGetPathGradientRectI(brush:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientRectI"; + Function GdipGetPathGradientPointCount(brush:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientPointCount"; + Function GdipGetPathGradientSurroundColorCount(brush:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientSurroundColorCount"; + Function GdipSetPathGradientGammaCorrection(brush:pointer;useGammaCorrection:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientGammaCorrection"; + Function GdipGetPathGradientGammaCorrection(brush:pointer;useGammaCorrection:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientGammaCorrection"; + Function GdipGetPathGradientBlendCount(brush:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientBlendCount"; + Function GdipGetPathGradientBlend(brush:pointer;var blend:single;var positions:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientBlend"; + Function GdipSetPathGradientBlend(brush:pointer;var blend:single;var positions:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientBlend"; + Function GdipGetPathGradientPresetBlendCount(brush:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientPresetBlendCount"; + Function GdipGetPathGradientPresetBlend(brush:pointer;var blend:integer;var positions:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientPresetBlend"; + Function GdipSetPathGradientPresetBlend(brush:pointer;var blend:integer;var positions:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientPresetBlend"; + Function GdipSetPathGradientSigmaBlend(brush:pointer;focus:single;scale:single):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientSigmaBlend"; + Function GdipSetPathGradientLinearBlend(brush:pointer;focus:single;scale:single):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientLinearBlend"; + Function GdipGetPathGradientWrapMode(brush:pointer;var wrapmode:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientWrapMode"; + Function GdipSetPathGradientWrapMode(brush:pointer;wrapmode:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientWrapMode"; + Function GdipGetPathGradientTransform(brush:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientTransform"; + Function GdipSetPathGradientTransform(brush:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientTransform"; + Function GdipResetPathGradientTransform(brush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetPathGradientTransform"; + Function GdipMultiplyPathGradientTransform(brush:pointer;matrix:pointer;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipMultiplyPathGradientTransform"; + Function GdipTranslatePathGradientTransform(brush:pointer;dx:single;dy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipTranslatePathGradientTransform"; + Function GdipScalePathGradientTransform(brush:pointer;sx:single;sy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipScalePathGradientTransform"; + Function GdipRotatePathGradientTransform(brush:pointer;angle:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRotatePathGradientTransform"; + Function GdipGetPathGradientFocusScales(brush:pointer;var xScale:single;var yScale:single):integer;stdcall;external "gdiplus.dll" name "GdipGetPathGradientFocusScales"; + Function GdipSetPathGradientFocusScales(brush:pointer;xScale:single;yScale:single):integer;stdcall;external "gdiplus.dll" name "GdipSetPathGradientFocusScales"; + //---------------------------------------------------------------------------- + // Pen APIs + //---------------------------------------------------------------------------- + Function GdipCreatePen1(color:integer;width:single;unit_:integer;var pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePen1"; + Function GdipCreatePen2(brush:pointer;width:single;unit_:integer;var pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePen2"; + Function GdipClonePen(pen:pointer;var clonepen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipClonePen"; + Function GdipDeletePen(pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeletePen"; + Function GdipSetPenWidth(pen:pointer;width:single):integer;stdcall;external "gdiplus.dll" name "GdipSetPenWidth"; + Function GdipGetPenWidth(pen:pointer;var width:single):integer;stdcall;external "gdiplus.dll" name "GdipGetPenWidth"; + Function GdipSetPenUnit(pen:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenUnit"; + Function GdipGetPenUnit(pen:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenUnit"; + Function GdipSetPenLineCap197819(pen:pointer;startCap:pointer;endCap:pointer;dashCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenLineCap197819"; + Function GdipSetPenStartCap(pen:pointer;startCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenStartCap"; + Function GdipSetPenEndCap(pen:pointer;endCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenEndCap"; + Function GdipSetPenDashCap197819(pen:pointer;dashCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenDashCap197819"; + Function GdipGetPenStartCap(pen:pointer;startCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenStartCap"; + Function GdipGetPenEndCap(pen:pointer;endCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenEndCap"; + Function GdipGetPenDashCap197819(pen:pointer;dashCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenDashCap197819"; + Function GdipSetPenLineJoin(pen:pointer;lineJoin:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenLineJoin"; + Function GdipGetPenLineJoin(pen:pointer;lineJoin:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenLineJoin"; + Function GdipSetPenCustomStartCap(pen:pointer;customCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenCustomStartCap"; + Function GdipGetPenCustomStartCap(pen:pointer;var customCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenCustomStartCap"; + Function GdipSetPenCustomEndCap(pen:pointer;customCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenCustomEndCap"; + Function GdipGetPenCustomEndCap(pen:pointer;var customCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenCustomEndCap"; + Function GdipSetPenMiterLimit(pen:pointer;miterLimit:single):integer;stdcall;external "gdiplus.dll" name "GdipSetPenMiterLimit"; + Function GdipGetPenMiterLimit(pen:pointer;var miterLimit:single):integer;stdcall;external "gdiplus.dll" name "GdipGetPenMiterLimit"; + Function GdipSetPenMode(pen:pointer;penMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenMode"; + Function GdipGetPenMode(pen:pointer;penMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenMode"; + Function GdipSetPenTransform(pen:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenTransform"; + Function GdipGetPenTransform(pen:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenTransform"; + Function GdipResetPenTransform(pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetPenTransform"; + Function GdipMultiplyPenTransform(pen:pointer;matrix:pointer;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipMultiplyPenTransform"; + Function GdipTranslatePenTransform(pen:pointer;dx:single;dy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipTranslatePenTransform"; + Function GdipScalePenTransform(pen:pointer;sx:single;sy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipScalePenTransform"; + Function GdipRotatePenTransform(pen:pointer;angle:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRotatePenTransform"; + Function GdipSetPenColor(pen:pointer;argb:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenColor"; + Function GdipGetPenColor(pen:pointer;var argb:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenColor"; + Function GdipSetPenBrushFill(pen:pointer;brush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenBrushFill"; + Function GdipGetPenBrushFill(pen:pointer;var brush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenBrushFill"; + Function GdipGetPenFillType(pen:pointer;type:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenFillType"; + Function GdipGetPenDashStyle(pen:pointer;dashstyle:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenDashStyle"; + Function GdipSetPenDashStyle(pen:pointer;dashstyle:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenDashStyle"; + Function GdipGetPenDashOffset(pen:pointer;var offset:single):integer;stdcall;external "gdiplus.dll" name "GdipGetPenDashOffset"; + Function GdipSetPenDashOffset(pen:pointer;offset:single):integer;stdcall;external "gdiplus.dll" name "GdipSetPenDashOffset"; + Function GdipGetPenDashCount(pen:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenDashCount"; + Function GdipSetPenDashArray(pen:pointer;var dash:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenDashArray"; + Function GdipGetPenDashArray(pen:pointer;var dash:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenDashArray"; + Function GdipGetPenCompoundCount(pen:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenCompoundCount"; + Function GdipSetPenCompoundArray(pen:pointer;var dash:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenCompoundArray"; + Function GdipGetPenCompoundArray(pen:pointer;var dash:single;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenCompoundArray"; + //---------------------------------------------------------------------------- + // CustomLineCap APIs + //---------------------------------------------------------------------------- + Function GdipCreateCustomLineCap(fillPath:pointer;strokePath:pointer;baseCap:pointer;baseInset:single;var customCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateCustomLineCap"; + Function GdipDeleteCustomLineCap(customCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteCustomLineCap"; + Function GdipCloneCustomLineCap(customCap:pointer;var clonedCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneCustomLineCap"; + Function GdipGetCustomLineCapType(customCap:pointer;capType:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetCustomLineCapType"; + Function GdipSetCustomLineCapStrokeCaps(customCap:pointer;startCap:pointer;endCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetCustomLineCapStrokeCaps"; + Function GdipGetCustomLineCapStrokeCaps(customCap:pointer;startCap:pointer;endCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetCustomLineCapStrokeCaps"; + Function GdipSetCustomLineCapStrokeJoin(customCap:pointer;lineJoin:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetCustomLineCapStrokeJoin"; + Function GdipGetCustomLineCapStrokeJoin(customCap:pointer;lineJoin:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetCustomLineCapStrokeJoin"; + Function GdipSetCustomLineCapBaseCap(customCap:pointer;baseCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetCustomLineCapBaseCap"; + Function GdipGetCustomLineCapBaseCap(customCap:pointer;baseCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetCustomLineCapBaseCap"; + Function GdipSetCustomLineCapBaseInset(customCap:pointer;inset:single):integer;stdcall;external "gdiplus.dll" name "GdipSetCustomLineCapBaseInset"; + Function GdipGetCustomLineCapBaseInset(customCap:pointer;var inset:single):integer;stdcall;external "gdiplus.dll" name "GdipGetCustomLineCapBaseInset"; + Function GdipSetCustomLineCapWidthScale(customCap:pointer;widthScale:single):integer;stdcall;external "gdiplus.dll" name "GdipSetCustomLineCapWidthScale"; + Function GdipGetCustomLineCapWidthScale(customCap:pointer;var widthScale:single):integer;stdcall;external "gdiplus.dll" name "GdipGetCustomLineCapWidthScale"; + //---------------------------------------------------------------------------- + // AdjustableArrowCap APIs + //---------------------------------------------------------------------------- + Function GdipCreateAdjustableArrowCap(height:single;width:single;isFilled:pointer;var cap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateAdjustableArrowCap"; + Function GdipSetAdjustableArrowCapHeight(cap:pointer;height:single):integer;stdcall;external "gdiplus.dll" name "GdipSetAdjustableArrowCapHeight"; + Function GdipGetAdjustableArrowCapHeight(cap:pointer;var height:single):integer;stdcall;external "gdiplus.dll" name "GdipGetAdjustableArrowCapHeight"; + Function GdipSetAdjustableArrowCapWidth(cap:pointer;width:single):integer;stdcall;external "gdiplus.dll" name "GdipSetAdjustableArrowCapWidth"; + Function GdipGetAdjustableArrowCapWidth(cap:pointer;var width:single):integer;stdcall;external "gdiplus.dll" name "GdipGetAdjustableArrowCapWidth"; + Function GdipSetAdjustableArrowCapMiddleInset(cap:pointer;middleInset:single):integer;stdcall;external "gdiplus.dll" name "GdipSetAdjustableArrowCapMiddleInset"; + Function GdipGetAdjustableArrowCapMiddleInset(cap:pointer;var middleInset:single):integer;stdcall;external "gdiplus.dll" name "GdipGetAdjustableArrowCapMiddleInset"; + Function GdipSetAdjustableArrowCapFillState(cap:pointer;fillState:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetAdjustableArrowCapFillState"; + Function GdipGetAdjustableArrowCapFillState(cap:pointer;fillState:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetAdjustableArrowCapFillState"; + //---------------------------------------------------------------------------- + // Image APIs + //---------------------------------------------------------------------------- + Function GdipLoadImageFromStream(stream:pointer;var image:pointer):integer;stdcall;external "gdiplus.dll" name "GdipLoadImageFromStream"; + Function GdipLoadImageFromFile(filename:string;var image:pointer):integer;stdcall;external "gdiplus.dll" name "GdipLoadImageFromFile"; + Function GdipLoadImageFromStreamICM(stream:pointer;var image:pointer):integer;stdcall;external "gdiplus.dll" name "GdipLoadImageFromStreamICM"; + Function GdipLoadImageFromFileICM(filename:string;var image:pointer):integer;stdcall;external "gdiplus.dll" name "GdipLoadImageFromFileICM"; + Function GdipCloneImage(image:pointer;var cloneImage:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneImage"; + Function GdipDisposeImage(image:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDisposeImage"; + Function GdipSaveImageToFile(image:pointer;filename:string;clsidEncoder:pointer;encoderParams:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSaveImageToFile"; + Function GdipSaveImageToStream(image:pointer;stream:pointer;clsidEncoder:pointer;encoderParams:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSaveImageToStream"; + Function GdipSaveAdd(image:pointer;encoderParams:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSaveAdd"; + Function GdipSaveAddImage(image:pointer;newImage:pointer;encoderParams:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSaveAddImage"; + Function GdipGetImageGraphicsContext(image:pointer;var graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageGraphicsContext"; + Function GdipGetImageBounds(image:pointer;srcRect:pointer;srcUnit:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageBounds"; + Function GdipGetImageDimension(image:pointer;var width:single;var height:single):integer;stdcall;external "gdiplus.dll" name "GdipGetImageDimension"; + Function GdipGetImageType(image:pointer;type:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageType"; + Function GdipGetImageWidth(image:pointer;var width:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageWidth"; + Function GdipGetImageHeight(image:pointer;var height:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageHeight"; + Function GdipGetImageHorizontalResolution(image:pointer;var resolution:single):integer;stdcall;external "gdiplus.dll" name "GdipGetImageHorizontalResolution"; + Function GdipGetImageVerticalResolution(image:pointer;var resolution:single):integer;stdcall;external "gdiplus.dll" name "GdipGetImageVerticalResolution"; + Function GdipGetImageFlags(image:pointer;var flags:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageFlags"; + Function GdipGetImageRawFormat(image:pointer;format:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageRawFormat"; + Function GdipGetImagePixelFormat(image:pointer;format:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetImagePixelFormat"; + Function GdipGetImageThumbnail(image:pointer;thumbWidth:integer;thumbHeight:integer;var thumbImage:pointer;callback:pointer;callbackData:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageThumbnail"; + Function GdipGetEncoderParameterListSize(image:pointer;clsidEncoder:pointer;var size:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetEncoderParameterListSize"; + Function GdipGetEncoderParameterList(image:pointer;clsidEncoder:pointer;size:integer;buffer:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetEncoderParameterList"; + Function GdipImageGetFrameDimensionsCount(image:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipImageGetFrameDimensionsCount"; + Function GdipImageGetFrameDimensionsList(image:pointer;dimensionIDs:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipImageGetFrameDimensionsList"; + Function GdipImageGetFrameCount(image:pointer;dimensionID:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipImageGetFrameCount"; + Function GdipImageSelectActiveFrame(image:pointer;dimensionID:pointer;frameIndex:integer):integer;stdcall;external "gdiplus.dll" name "GdipImageSelectActiveFrame"; + Function GdipImageRotateFlip(image:pointer;rfType:pointer):integer;stdcall;external "gdiplus.dll" name "GdipImageRotateFlip"; + Function GdipGetImagePalette(image:pointer;palette:pointer;size:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetImagePalette"; + Function GdipSetImagePalette(image:pointer;palette:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetImagePalette"; + Function GdipGetImagePaletteSize(image:pointer;var size:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetImagePaletteSize"; + Function GdipGetPropertyCount(image:pointer;var numOfProperty:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPropertyCount"; + Function GdipGetPropertyIdList(image:pointer;numOfProperty:integer;list:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPropertyIdList"; + Function GdipGetPropertyItemSize(image:pointer;propId:pointer;var size:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPropertyItemSize"; + Function GdipGetPropertyItem(image:pointer;propId:pointer;propSize:integer;buffer:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPropertyItem"; + Function GdipGetPropertySize(image:pointer;var totalBufferSize:integer;var numProperties:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPropertySize"; + Function GdipGetAllPropertyItems(image:pointer;totalBufferSize:integer;numProperties:integer;allItems:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetAllPropertyItems"; + Function GdipRemovePropertyItem(image:pointer;propId:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRemovePropertyItem"; + Function GdipSetPropertyItem(image:pointer;item:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPropertyItem"; + Function GdipImageForceValidation(image:pointer):integer;stdcall;external "gdiplus.dll" name "GdipImageForceValidation"; + //---------------------------------------------------------------------------- + // Bitmap APIs + //---------------------------------------------------------------------------- + Function GdipCreateBitmapFromStream(stream:pointer;var bitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromStream"; + Function GdipCreateBitmapFromFile(filename:string;var bitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromFile"; + Function GdipCreateBitmapFromStreamICM(stream:pointer;var bitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromStreamICM"; + Function GdipCreateBitmapFromFileICM(filename:string;var bitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromFileICM"; + Function GdipCreateBitmapFromScan0(width:integer;height:integer;stride:integer;format:pointer;):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromScan0"; + Function GdipCreateBitmapFromGraphics(width:integer;height:integer;target:pointer;var bitmap:pointer):pointer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromGraphics"; + Function GdipCreateBitmapFromDirectDrawSurface(surface:pointer;var bitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromDirectDrawSurface"; + Function GdipCreateBitmapFromGdiDib(gdiBitmapInfo:pointer;gdiBitmapData:pointer;var bitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromGdiDib"; + Function GdipCreateBitmapFromHBITMAP(hbm:pointer;hpal:pointer;var bitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromHBITMAP"; + Function GdipCreateHBITMAPFromBitmap(bitmap:pointer;var hbmReturn:pointer;background:integer):integer;stdcall;external "gdiplus.dll" name "GdipCreateHBITMAPFromBitmap"; + Function GdipCreateBitmapFromHICON(hicon:pointer;var bitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromHICON"; + Function GdipCreateHICONFromBitmap(bitmap:pointer;var hbmReturn:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateHICONFromBitmap"; + Function GdipCreateBitmapFromResource(hInstance:pointer;lpBitmapName:string;var bitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateBitmapFromResource"; + Function GdipCloneBitmapArea(x:single;y:single;width:single;height:single;format:pointer;srcBitmap:pointer;var dstBitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneBitmapArea"; + Function GdipCloneBitmapAreaI(x:integer;y:integer;width:integer;height:integer;format:pointer;srcBitmap:pointer;var dstBitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneBitmapAreaI"; + Function GdipBitmapLockBits(bitmap:pointer;rect:pointer;flags:integer;format:pointer;lockedBitmapData:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBitmapLockBits"; + Function GdipBitmapUnlockBits(bitmap:pointer;lockedBitmapData:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBitmapUnlockBits"; + Function GdipBitmapGetPixel(bitmap:pointer;x:integer;y:integer;var color:integer):integer;stdcall;external "gdiplus.dll" name "GdipBitmapGetPixel"; + Function GdipBitmapSetPixel(bitmap:pointer;x:integer;y:integer;color:integer):integer;stdcall;external "gdiplus.dll" name "GdipBitmapSetPixel"; + Function GdipBitmapSetResolution(bitmap:pointer;xdpi:single;ydpi:single):integer;stdcall;external "gdiplus.dll" name "GdipBitmapSetResolution"; + //---------------------------------------------------------------------------- + // ImageAttributes APIs + //---------------------------------------------------------------------------- + Function GdipCreateImageAttributes(var imageattr:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateImageAttributes"; + Function GdipCloneImageAttributes(imageattr:pointer;var cloneImageattr:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneImageAttributes"; + Function GdipDisposeImageAttributes(imageattr:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDisposeImageAttributes"; + Function GdipSetImageAttributesToIdentity(imageattr:pointer;type:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesToIdentity"; + Function GdipResetImageAttributes(imageattr:pointer;type:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetImageAttributes"; + Function GdipSetImageAttributesColorMatrix(imageattr:pointer;type:pointer;enableFlag:pointer;colorMatrix:pointer;grayMatrix:pointer;flags:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesColorMatrix"; + Function GdipSetImageAttributesThreshold(imageattr:pointer;type:pointer;enableFlag:pointer;threshold:single):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesThreshold"; + Function GdipSetImageAttributesGamma(imageattr:pointer;type:pointer;enableFlag:pointer;gamma:single):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesGamma"; + Function GdipSetImageAttributesNoOp(imageattr:pointer;type:pointer;enableFlag:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesNoOp"; + Function GdipSetImageAttributesColorKeys(imageattr:pointer;type:pointer;enableFlag:pointer;colorLow:integer;colorHigh:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesColorKeys"; + Function GdipSetImageAttributesOutputChannel(imageattr:pointer;type:pointer;enableFlag:pointer;channelFlags:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesOutputChannel"; + Function GdipSetImageAttributesOutputChannelColorProfile(imageattr:pointer;type:pointer;enableFlag:pointer;colorProfileFilename:string):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesOutputChannelColorProfile"; + Function GdipSetImageAttributesRemapTable(imageattr:pointer;type:pointer;enableFlag:pointer;mapSize:integer;map:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesRemapTable"; + Function GdipSetImageAttributesWrapMode(imageAttr:pointer;wrap:pointer;argb:integer;clamp:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesWrapMode"; + Function GdipSetImageAttributesICMMode(imageAttr:pointer;on_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesICMMode"; + Function GdipGetImageAttributesAdjustedPalette(imageAttr:pointer;colorPalette:pointer;colorAdjustType:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageAttributesAdjustedPalette"; + //---------------------------------------------------------------------------- + // Graphics APIs + //---------------------------------------------------------------------------- + Function GdipFlush(graphics:pointer;intention:pointer):integer;stdcall;external "gdiplus.dll" name "GdipFlush"; + Function GdipCreateFromHDC(hdc:pointer;var graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFromHDC"; + Function GdipCreateFromHDC2(hdc:pointer;hDevice:pointer;var graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFromHDC2"; + Function GdipCreateFromHWND(hwnd:pointer;var graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFromHWND"; + Function GdipCreateFromHWNDICM(hwnd:pointer;var graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFromHWNDICM"; + Function GdipDeleteGraphics(graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteGraphics"; + Function GdipGetDC(graphics:pointer;hdc:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetDC"; + Function GdipReleaseDC(graphics:pointer;hdc:pointer):integer;stdcall;external "gdiplus.dll" name "GdipReleaseDC"; + Function GdipSetCompositingMode(graphics:pointer;compositingMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetCompositingMode"; + Function GdipGetCompositingMode(graphics:pointer;compositingMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetCompositingMode"; + Function GdipSetRenderingOrigin(graphics:pointer;x:integer;y:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetRenderingOrigin"; + Function GdipGetRenderingOrigin(graphics:pointer;var x:integer;var y:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetRenderingOrigin"; + Function GdipSetCompositingQuality(graphics:pointer;compositingQuality:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetCompositingQuality"; + Function GdipGetCompositingQuality(graphics:pointer;compositingQuality:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetCompositingQuality"; + Function GdipSetSmoothingMode(graphics:pointer;smoothingMode:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetSmoothingMode"; + Function GdipGetSmoothingMode(graphics:pointer;var smoothingMode:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetSmoothingMode"; + Function GdipSetPixelOffsetMode(graphics:pointer;pixelOffsetMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPixelOffsetMode"; + Function GdipGetPixelOffsetMode(graphics:pointer;pixelOffsetMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPixelOffsetMode"; + Function GdipSetTextRenderingHint(graphics:pointer;mode:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetTextRenderingHint"; + Function GdipGetTextRenderingHint(graphics:pointer;var mode:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetTextRenderingHint"; + Function GdipSetTextContrast(graphics:pointer;contrast:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetTextContrast"; + Function GdipGetTextContrast(graphics:pointer;var contrast:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetTextContrast"; + Function GdipSetInterpolationMode(graphics:pointer;interpolationMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetInterpolationMode"; + Function GdipGetInterpolationMode(graphics:pointer;interpolationMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetInterpolationMode"; + Function GdipSetWorldTransform(graphics:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetWorldTransform"; + Function GdipResetWorldTransform(graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetWorldTransform"; + Function GdipMultiplyWorldTransform(graphics:pointer;matrix:pointer;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipMultiplyWorldTransform"; + Function GdipTranslateWorldTransform(graphics:pointer;dx:single;dy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipTranslateWorldTransform"; + Function GdipScaleWorldTransform(graphics:pointer;sx:single;sy:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipScaleWorldTransform"; + Function GdipRotateWorldTransform(graphics:pointer;angle:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRotateWorldTransform"; + Function GdipGetWorldTransform(graphics:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetWorldTransform"; + Function GdipResetPageTransform(graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetPageTransform"; + Function GdipGetPageUnit(graphics:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPageUnit"; + Function GdipGetPageScale(graphics:pointer;var scale:single):integer;stdcall;external "gdiplus.dll" name "GdipGetPageScale"; + Function GdipSetPageUnit(graphics:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPageUnit"; + Function GdipSetPageScale(graphics:pointer;scale:single):integer;stdcall;external "gdiplus.dll" name "GdipSetPageScale"; + Function GdipGetDpiX(graphics:pointer;var dpi:single):integer;stdcall;external "gdiplus.dll" name "GdipGetDpiX"; + Function GdipGetDpiY(graphics:pointer;var dpi:single):integer;stdcall;external "gdiplus.dll" name "GdipGetDpiY"; + Function GdipTransformPoints(graphics:pointer;destSpace:pointer;srcSpace:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipTransformPoints"; + Function GdipTransformPointsI(graphics:pointer;destSpace:pointer;srcSpace:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipTransformPointsI"; + Function GdipGetNearestColor(graphics:pointer;var argb:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetNearestColor"; + // Creates the Win9x Halftone Palette (even on NT) with correct Desktop colors + Function GdipCreateHalftonePalette():pointer;stdcall;external "gdiplus.dll" name "GdipCreateHalftonePalette"; + Function GdipDrawLine(graphics:pointer;pen:pointer;x1:single;y1:single;x2:single;y2:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawLine"; + Function GdipDrawLineI(graphics:pointer;pen:pointer;x1:integer;y1:integer;x2:integer;y2:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawLineI"; + Function GdipDrawLines(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawLines"; + Function GdipDrawLinesI(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawLinesI"; + Function GdipDrawArc(graphics:pointer;pen:pointer;x:single;y:single;width:single;height:single;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawArc"; + Function GdipDrawArcI(graphics:pointer;pen:pointer;x:integer;y:integer;width:integer;height:integer;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawArcI"; + Function GdipDrawBezier(graphics:pointer;pen:pointer;x1:single;y1:single;x2:single;y2:single;x3:single;y3:single;x4:single;y4:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawBezier"; + Function GdipDrawBezierI(graphics:pointer;pen:pointer;x1:integer;y1:integer;x2:integer;y2:integer;x3:integer;y3:integer;x4:integer;y4:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawBezierI"; + Function GdipDrawBeziers(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawBeziers"; + Function GdipDrawBeziersI(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawBeziersI"; + Function GdipDrawRectangle(graphics:pointer;pen:pointer;x:single;y:single;width:single;height:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawRectangle"; + Function GdipDrawRectangleI(graphics:pointer;pen:pointer;x:integer;y:integer;width:integer;height:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawRectangleI"; + Function GdipDrawRectangles(graphics:pointer;pen:pointer;rects:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawRectangles"; + Function GdipDrawRectanglesI(graphics:pointer;pen:pointer;rects:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawRectanglesI"; + Function GdipDrawEllipse(graphics:pointer;pen:pointer;x:single;y:single;width:single;height:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawEllipse"; + Function GdipDrawEllipseI(graphics:pointer;pen:pointer;x:integer;y:integer;width:integer;height:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawEllipseI"; + Function GdipDrawPie(graphics:pointer;pen:pointer;x:single;y:single;width:single;height:single;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawPie"; + Function GdipDrawPieI(graphics:pointer;pen:pointer;x:integer;y:integer;width:integer;height:integer;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawPieI"; + Function GdipDrawPolygon(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawPolygon"; + Function GdipDrawPolygonI(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawPolygonI"; + Function GdipDrawPath(graphics:pointer;pen:pointer;path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDrawPath"; + Function GdipDrawCurve(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawCurve"; + Function GdipDrawCurveI(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawCurveI"; + Function GdipDrawCurve2(graphics:pointer;pen:pointer;points:pointer;ct:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawCurve2"; + Function GdipDrawCurve2I(graphics:pointer;pen:pointer;points:pointer;ct:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawCurve2I"; + Function GdipDrawCurve3(graphics:pointer;pen:pointer;points:pointer;ct:integer;offset:integer;numberOfSegments:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawCurve3"; + Function GdipDrawCurve3I(graphics:pointer;pen:pointer;points:pointer;ct:integer;offset:integer;numberOfSegments:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawCurve3I"; + Function GdipDrawClosedCurve(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawClosedCurve"; + Function GdipDrawClosedCurveI(graphics:pointer;pen:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawClosedCurveI"; + Function GdipDrawClosedCurve2(graphics:pointer;pen:pointer;points:pointer;ct:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawClosedCurve2"; + Function GdipDrawClosedCurve2I(graphics:pointer;pen:pointer;points:pointer;ct:integer;tension:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawClosedCurve2I"; + Function GdipGraphicsClear(graphics:pointer;color:integer):integer;stdcall;external "gdiplus.dll" name "GdipGraphicsClear"; + Function GdipFillRectangle(graphics:pointer;brush:pointer;x:single;y:single;width:single;height:single):integer;stdcall;external "gdiplus.dll" name "GdipFillRectangle"; + Function GdipFillRectangleI(graphics:pointer;brush:pointer;x:integer;y:integer;width:integer;height:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillRectangleI"; + Function GdipFillRectangles(graphics:pointer;brush:pointer;rects:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillRectangles"; + Function GdipFillRectanglesI(graphics:pointer;brush:pointer;rects:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillRectanglesI"; + Function GdipFillPolygon(graphics:pointer;brush:pointer;points:pointer;ct:integer;fillMode:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillPolygon"; + Function GdipFillPolygonI(graphics:pointer;brush:pointer;points:pointer;ct:integer;fillMode:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillPolygonI"; + Function GdipFillPolygon2(graphics:pointer;brush:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillPolygon2"; + Function GdipFillPolygon2I(graphics:pointer;brush:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillPolygon2I"; + Function GdipFillEllipse(graphics:pointer;brush:pointer;x:single;y:single;width:single;height:single):integer;stdcall;external "gdiplus.dll" name "GdipFillEllipse"; + Function GdipFillEllipseI(graphics:pointer;brush:pointer;x:integer;y:integer;width:integer;height:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillEllipseI"; + Function GdipFillPie(graphics:pointer;brush:pointer;x:single;y:single;width:single;height:single;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipFillPie"; + Function GdipFillPieI(graphics:pointer;brush:pointer;x:integer;y:integer;width:integer;height:integer;startAngle:single;sweepAngle:single):integer;stdcall;external "gdiplus.dll" name "GdipFillPieI"; + Function GdipFillPath(graphics:pointer;brush:pointer;path:pointer):integer;stdcall;external "gdiplus.dll" name "GdipFillPath"; + Function GdipFillClosedCurve(graphics:pointer;brush:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillClosedCurve"; + Function GdipFillClosedCurveI(graphics:pointer;brush:pointer;points:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillClosedCurveI"; + Function GdipFillClosedCurve2(graphics:pointer;brush:pointer;points:pointer;ct:integer;tension:single;fillMode:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillClosedCurve2"; + Function GdipFillClosedCurve2I(graphics:pointer;brush:pointer;points:pointer;ct:integer;tension:single;fillMode:integer):integer;stdcall;external "gdiplus.dll" name "GdipFillClosedCurve2I"; + Function GdipFillRegion(graphics:pointer;brush:pointer;region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipFillRegion"; + Function GdipDrawImage(graphics:pointer;image:pointer;x:single;y:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawImage"; + Function GdipDrawImageI(graphics:pointer;image:pointer;x:integer;y:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImageI"; + Function GdipDrawImageRect(graphics:pointer;image:pointer;x:single;y:single;width:single;height:single):integer;stdcall;external "gdiplus.dll" name "GdipDrawImageRect"; + Function GdipDrawImageRectI(graphics:pointer;image:pointer;x:integer;y:integer;width:integer;height:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImageRectI"; + Function GdipDrawImagePoints(graphics:pointer;image:pointer;dstpoints:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImagePoints"; + Function GdipDrawImagePointsI(graphics:pointer;image:pointer;dstpoints:pointer;ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImagePointsI"; + Function GdipDrawImagePointRect(graphics:pointer;image:pointer;x:single;y:single;srcx:single;srcy:single;srcwidth:single;srcheight:single;srcUnit:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImagePointRect"; + Function GdipDrawImagePointRectI(graphics:pointer;image:pointer;x:integer;y:integer;srcx:integer;srcy:integer;srcwidth:integer;srcheight:integer;srcUnit:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImagePointRectI"; + Function GdipDrawImageRectRect(graphics:pointer;image:pointer;dstx:single;dsty:single;dstwidth:single;dstheight:single;srcx:single;srcy:single;srcwidth:single;srcheight:single;srcUnit:pointer;imageAttributes:pointer;callback:pointer;callbackData:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImageRectRect"; + Function GdipDrawImageRectRectI(graphics:pointer;image:pointer;dstx:integer;dsty:integer;dstwidth:integer;dstheight:integer;srcx:integer;srcy:integer;srcwidth:integer;srcheight:integer;srcUnit:pointer;imageAttributes:pointer;callback:pointer;callbackData:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImageRectRectI"; + Function GdipDrawImagePointsRect(graphics:pointer;image:pointer;points:pointer;ct:integer;srcx:single;srcy:single;srcwidth:single;srcheight:single;srcUnit:pointer;imageAttributes:pointer;callback:pointer;callbackData:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImagePointsRect"; + Function GdipDrawImagePointsRectI(graphics:pointer;image:pointer;points:pointer;ct:integer;srcx:integer;srcy:integer;srcwidth:integer;srcheight:integer;srcUnit:pointer;imageAttributes:pointer;callback:pointer;callbackData:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDrawImagePointsRectI"; + Function GdipEnumerateMetafileDestPoint(graphics:pointer;metafile:pointer;destPoint:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileDestPoint"; + Function GdipEnumerateMetafileDestPointI(graphics:pointer;metafile:pointer;destPoint:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileDestPointI"; + Function GdipEnumerateMetafileDestRect(graphics:pointer;metafile:pointer;destRect:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileDestRect"; + Function GdipEnumerateMetafileDestRectI(graphics:pointer;metafile:pointer;destRect:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileDestRectI"; + Function GdipEnumerateMetafileDestPoints(graphics:pointer;metafile:pointer;destPoints:pointer;ct:integer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileDestPoints"; + Function GdipEnumerateMetafileDestPointsI(graphics:pointer;metafile:pointer;destPoints:pointer;ct:integer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileDestPointsI"; + Function GdipEnumerateMetafileSrcRectDestPoint(graphics:pointer;metafile:pointer;destPoint:pointer;srcRect:pointer;srcUnit:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileSrcRectDestPoint"; + Function GdipEnumerateMetafileSrcRectDestPointI(graphics:pointer;metafile:pointer;destPoint:pointer;srcRect:pointer;srcUnit:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileSrcRectDestPointI"; + Function GdipEnumerateMetafileSrcRectDestRect(graphics:pointer;metafile:pointer;destRect:pointer;srcRect:pointer;srcUnit:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileSrcRectDestRect"; + Function GdipEnumerateMetafileSrcRectDestRectI(graphics:pointer;metafile:pointer;destRect:pointer;srcRect:pointer;srcUnit:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileSrcRectDestRectI"; + Function GdipEnumerateMetafileSrcRectDestPoints(graphics:pointer;metafile:pointer;destPoints:pointer;ct:integer;srcRect:pointer;srcUnit:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileSrcRectDestPoints"; + Function GdipEnumerateMetafileSrcRectDestPointsI(graphics:pointer;metafile:pointer;destPoints:pointer;ct:integer;srcRect:pointer;srcUnit:pointer;callback:pointer;callbackData:pointer;imageAttributes:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEnumerateMetafileSrcRectDestPointsI"; + Function GdipPlayMetafileRecord(metafile:pointer;recordType:pointer;flags:integer;dataSize:integer;data:pointer):integer;stdcall;external "gdiplus.dll" name "GdipPlayMetafileRecord"; + Function GdipSetClipGraphics(graphics:pointer;srcgraphics:pointer;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetClipGraphics"; + Function GdipSetClipRect(graphics:pointer;x:single;y:single;width:single;height:single;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetClipRect"; + Function GdipSetClipRectI(graphics:pointer;x:integer;y:integer;width:integer;height:integer;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetClipRectI"; + Function GdipSetClipPath(graphics:pointer;path:pointer;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetClipPath"; + Function GdipSetClipRegion(graphics:pointer;region:pointer;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetClipRegion"; + Function GdipSetClipHrgn(graphics:pointer;hRgn:pointer;combineMode:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetClipHrgn"; + Function GdipResetClip(graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetClip"; + Function GdipTranslateClip(graphics:pointer;dx:single;dy:single):integer;stdcall;external "gdiplus.dll" name "GdipTranslateClip"; + Function GdipTranslateClipI(graphics:pointer;dx:integer;dy:integer):integer;stdcall;external "gdiplus.dll" name "GdipTranslateClipI"; + Function GdipGetClip(graphics:pointer;region:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetClip"; + Function GdipGetClipBounds(graphics:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetClipBounds"; + Function GdipGetClipBoundsI(graphics:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetClipBoundsI"; + Function GdipIsClipEmpty(graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsClipEmpty"; + Function GdipGetVisibleClipBounds(graphics:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetVisibleClipBounds"; + Function GdipGetVisibleClipBoundsI(graphics:pointer;rect:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetVisibleClipBoundsI"; + Function GdipIsVisibleClipEmpty(graphics:pointer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisibleClipEmpty"; + Function GdipIsVisiblePoint(graphics:pointer;x:single;y:single;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisiblePoint"; + Function GdipIsVisiblePointI(graphics:pointer;x:integer;y:integer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisiblePointI"; + Function GdipIsVisibleRect(graphics:pointer;x:single;y:single;width:single;height:single;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisibleRect"; + Function GdipIsVisibleRectI(graphics:pointer;x:integer;y:integer;width:integer;height:integer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisibleRectI"; + Function GdipSaveGraphics(graphics:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSaveGraphics"; + Function GdipRestoreGraphics(graphics:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRestoreGraphics"; + Function GdipBeginContainer(graphics:pointer;dstrect:pointer;srcrect:pointer;unit_:integer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBeginContainer"; + Function GdipBeginContainerI(graphics:pointer;dstrect:pointer;srcrect:pointer;unit_:integer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBeginContainerI"; + Function GdipBeginContainer2(graphics:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBeginContainer2"; + Function GdipEndContainer(graphics:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEndContainer"; + Function GdipGetMetafileHeaderFromWmf(hWmf:pointer;wmfPlaceableFileHeader:pointer;header:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetMetafileHeaderFromWmf"; + Function GdipGetMetafileHeaderFromEmf(hEmf:pointer;header:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetMetafileHeaderFromEmf"; + Function GdipGetMetafileHeaderFromFile(filename:string;header:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetMetafileHeaderFromFile"; + Function GdipGetMetafileHeaderFromStream(stream:pointer;header:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetMetafileHeaderFromStream"; + Function GdipGetMetafileHeaderFromMetafile(metafile:pointer;header:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetMetafileHeaderFromMetafile"; + Function GdipGetHemfFromMetafile(metafile:pointer;hEmf:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetHemfFromMetafile"; + Function GdipCreateStreamOnFile(filename:string;access:integer;var stream:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateStreamOnFile"; + Function GdipCreateMetafileFromWmf(hWmf:pointer;deleteWmf:pointer;wmfPlaceableFileHeader:pointer;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateMetafileFromWmf"; + Function GdipCreateMetafileFromEmf(hEmf:pointer;deleteEmf:pointer;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateMetafileFromEmf"; + Function GdipCreateMetafileFromFile(file:string;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateMetafileFromFile"; + Function GdipCreateMetafileFromWmfFile(file:string;wmfPlaceableFileHeader:pointer;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateMetafileFromWmfFile"; + Function GdipCreateMetafileFromStream(stream:pointer;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateMetafileFromStream"; + Function GdipRecordMetafile(referenceHdc:pointer;type:pointer;frameRect:pointer;frameUnit:pointer;description:string;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRecordMetafile"; + Function GdipRecordMetafileI(referenceHdc:pointer;type:pointer;frameRect:pointer;frameUnit:pointer;description:string;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRecordMetafileI"; + Function GdipRecordMetafileFileName(fileName:string;referenceHdc:pointer;type:pointer;frameRect:pointer;frameUnit:pointer;description:string;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRecordMetafileFileName"; + Function GdipRecordMetafileFileNameI(fileName:string;referenceHdc:pointer;type:pointer;frameRect:pointer;frameUnit:pointer;description:string;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRecordMetafileFileNameI"; + Function GdipRecordMetafileStream(stream:pointer;referenceHdc:pointer;type:pointer;frameRect:pointer;frameUnit:pointer;description:string;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRecordMetafileStream"; + Function GdipRecordMetafileStreamI(stream:pointer;referenceHdc:pointer;type:pointer;frameRect:pointer;frameUnit:pointer;description:string;var metafile:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRecordMetafileStreamI"; + Function GdipSetMetafileDownLevelRasterizationLimit(metafile:pointer;metafileRasterizationLimitDpi:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetMetafileDownLevelRasterizationLimit"; + Function GdipGetMetafileDownLevelRasterizationLimit(metafile:pointer;var metafileRasterizationLimitDpi:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetMetafileDownLevelRasterizationLimit"; + Function GdipGetImageDecodersSize(var numDecoders:integer;pn4:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageDecodersSize"; + Function GdipGetImageDecoders(numDecoders:integer;size:integer;decoders:pointer):pointer;stdcall;external "gdiplus.dll" name "GdipGetImageDecoders"; + Function GdipGetImageEncodersSize(var numEncoders:integer;pn4:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetImageEncodersSize"; + Function GdipGetImageEncoders(numEncoders:integer;size:integer;encoders:pointer):pointer;stdcall;external "gdiplus.dll" name "GdipGetImageEncoders"; + Function GdipComment(graphics:pointer;sizeData:integer;data:pointer):integer;stdcall;external "gdiplus.dll" name "GdipComment"; + //---------------------------------------------------------------------------- + // FontFamily APIs + //---------------------------------------------------------------------------- + Function GdipCreateFontFamilyFromName(name:string;fontCollection:pointer;var fontFamily:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFontFamilyFromName"; + Function GdipDeleteFontFamily(fontFamily:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteFontFamily"; + Function GdipCloneFontFamily(fontFamily:pointer;var clonedFontFamily:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneFontFamily"; + Function GdipGetGenericFontFamilySansSerif(var nativeFamily:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetGenericFontFamilySansSerif"; + Function GdipGetGenericFontFamilySerif(var nativeFamily:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetGenericFontFamilySerif"; + Function GdipGetGenericFontFamilyMonospace(var nativeFamily:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetGenericFontFamilyMonospace"; + Function GdipGetFamilyName(family:pointer;name:pointer;language:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetFamilyName"; + Function GdipIsStyleAvailable(family:pointer;style:integer;IsStyleAvailable:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsStyleAvailable"; + Function GdipFontCollectionEnumerable(fontCollection:pointer;graphics:pointer;var numFound:integer):integer;stdcall;external "gdiplus.dll" name "GdipFontCollectionEnumerable"; + Function GdipFontCollectionEnumerate(fontCollection:pointer;numSought:integer;gpfamilies:pointer;var numFound:integer;graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipFontCollectionEnumerate"; + Function GdipGetEmHeight(family:pointer;style:integer;EmHeight:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetEmHeight"; + Function GdipGetCellAscent(family:pointer;style:integer;CellAscent:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetCellAscent"; + Function GdipGetCellDescent(family:pointer;style:integer;CellDescent:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetCellDescent"; + Function GdipGetLineSpacing(family:pointer;style:integer;LineSpacing:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetLineSpacing"; + //---------------------------------------------------------------------------- + // Font APIs + //---------------------------------------------------------------------------- + Function GdipCreateFontFromDC(hdc:pointer;var font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFontFromDC"; + Function GdipCreateFontFromLogfontA(hdc:pointer;logfont:pointer;var font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFontFromLogfontA"; + Function GdipCreateFontFromLogfontW(hdc:pointer;logfont:pointer;var font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFontFromLogfontW"; + Function GdipCreateFont(fontFamily:pointer;emSize:single;style:integer;unit_:integer;var font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFont"; + Function GdipCloneFont(font:pointer;var cloneFont:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneFont"; + Function GdipDeleteFont(font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteFont"; + Function GdipGetFamily(font:pointer;var family:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetFamily"; + Function GdipGetFontStyle(font:pointer;var style:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetFontStyle"; + Function GdipGetFontSize(font:pointer;var size:single):integer;stdcall;external "gdiplus.dll" name "GdipGetFontSize"; + Function GdipGetFontUnit(font:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetFontUnit"; + Function GdipGetFontHeight(font:pointer;graphics:pointer;var height:single):integer;stdcall;external "gdiplus.dll" name "GdipGetFontHeight"; + Function GdipGetFontHeightGivenDPI(font:pointer;dpi:single;var height:single):integer;stdcall;external "gdiplus.dll" name "GdipGetFontHeightGivenDPI"; + Function GdipGetLogFontA(font:pointer;graphics:pointer;logfontA:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetLogFontA"; + Function GdipGetLogFontW(font:pointer;graphics:pointer;logfontW:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetLogFontW"; + Function GdipNewInstalledFontCollection(var fontCollection:pointer):integer;stdcall;external "gdiplus.dll" name "GdipNewInstalledFontCollection"; + Function GdipNewPrivateFontCollection(var fontCollection:pointer):integer;stdcall;external "gdiplus.dll" name "GdipNewPrivateFontCollection"; + Function GdipDeletePrivateFontCollection(var fontCollection:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeletePrivateFontCollection"; + Function GdipGetFontCollectionFamilyCount(fontCollection:pointer;var numFound:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetFontCollectionFamilyCount"; + Function GdipGetFontCollectionFamilyList(fontCollection:pointer;numSought:integer;gpfamilies:pointer;var numFound:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetFontCollectionFamilyList"; + Function GdipPrivateAddFontFile(fontCollection:pointer;filename:string):integer;stdcall;external "gdiplus.dll" name "GdipPrivateAddFontFile"; + Function GdipPrivateAddMemoryFont(fontCollection:pointer;memory:pointer;length:integer):integer;stdcall;external "gdiplus.dll" name "GdipPrivateAddMemoryFont"; + //---------------------------------------------------------------------------- + // Text APIs + //---------------------------------------------------------------------------- + Function GdipDrawString(graphics:pointer;string:string;length:integer;font:pointer;layoutRect:pointer;stringFormat:pointer;brush:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDrawString"; + Function GdipMeasureString(graphics:pointer;string:string;length:integer;font:pointer;layoutRect:pointer;stringFormat:pointer;boundingBox:pointer;var codepointsFitted:integer;var linesFilled:integer):integer;stdcall;external "gdiplus.dll" name "GdipMeasureString"; + Function GdipMeasureCharacterRanges(graphics:pointer;string:string;length:integer;font:pointer;layoutRect:pointer;stringFormat:pointer;regionCount:integer;var regions:pointer):integer;stdcall;external "gdiplus.dll" name "GdipMeasureCharacterRanges"; + Function GdipDrawDriverString(graphics:pointer;text:pointer;length:integer;font:pointer;brush:pointer;positions:pointer;flags:integer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDrawDriverString"; + Function GdipMeasureDriverString(graphics:pointer;text:pointer;length:integer;font:pointer;positions:pointer;flags:integer;matrix:pointer;boundingBox:pointer):integer;stdcall;external "gdiplus.dll" name "GdipMeasureDriverString"; + //---------------------------------------------------------------------------- + // String format APIs + //---------------------------------------------------------------------------- + Function GdipCreateStringFormat(formatAttributes:integer;language:pointer;var format:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateStringFormat"; + Function GdipStringFormatGetGenericDefault(var format:pointer):integer;stdcall;external "gdiplus.dll" name "GdipStringFormatGetGenericDefault"; + Function GdipStringFormatGetGenericTypographic(var format:pointer):integer;stdcall;external "gdiplus.dll" name "GdipStringFormatGetGenericTypographic"; + Function GdipDeleteStringFormat(format:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteStringFormat"; + Function GdipCloneStringFormat(format:pointer;var newFormat:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneStringFormat"; + Function GdipSetStringFormatFlags(format:pointer;flags:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatFlags"; + Function GdipGetStringFormatFlags(format:pointer;var flags:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatFlags"; + Function GdipSetStringFormatAlign(format:pointer;align:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatAlign"; + Function GdipGetStringFormatAlign(format:pointer;align:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatAlign"; + Function GdipSetStringFormatLineAlign(format:pointer;align:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatLineAlign"; + Function GdipGetStringFormatLineAlign(format:pointer;align:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatLineAlign"; + Function GdipSetStringFormatTrimming(format:pointer;trimming:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatTrimming"; + Function GdipGetStringFormatTrimming(format:pointer;trimming:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatTrimming"; + Function GdipSetStringFormatHotkeyPrefix(format:pointer;hotkeyPrefix:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatHotkeyPrefix"; + Function GdipGetStringFormatHotkeyPrefix(format:pointer;var hotkeyPrefix:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatHotkeyPrefix"; + Function GdipSetStringFormatTabStops(format:pointer;firstTabOffset:single;ct:integer;var tabStops:single):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatTabStops"; + Function GdipGetStringFormatTabStops(format:pointer;ct:integer;var firstTabOffset:single;var tabStops:single):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatTabStops"; + Function GdipGetStringFormatTabStopCount(format:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatTabStopCount"; + Function GdipSetStringFormatDigitSubstitution(format:pointer;language:pointer;substitute:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatDigitSubstitution"; + Function GdipGetStringFormatDigitSubstitution(format:pointer;language:pointer;substitute:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatDigitSubstitution"; + Function GdipGetStringFormatMeasurableCharacterRangeCount(format:pointer;var ct:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatMeasurableCharacterRangeCount"; + Function GdipSetStringFormatMeasurableCharacterRanges(format:pointer;rangeCount:integer;ranges:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatMeasurableCharacterRanges"; + //---------------------------------------------------------------------------- + // Cached Bitmap APIs + //---------------------------------------------------------------------------- + Function GdipCreateCachedBitmap(bitmap:pointer;graphics:pointer;var cachedBitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateCachedBitmap"; + Function GdipDeleteCachedBitmap(cachedBitmap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteCachedBitmap"; + Function GdipDrawCachedBitmap(graphics:pointer;cachedBitmap:pointer;x:integer;y:integer):integer;stdcall;external "gdiplus.dll" name "GdipDrawCachedBitmap"; + Function GdipEmfToWmfBits(hemf:pointer;cbData16:integer;pData16:pointer;iMapMode:integer;eFlags:integer):integer;stdcall;external "gdiplus.dll" name "GdipEmfToWmfBits"; + Function GdipSetImageAttributesCachedBackground(imageattr:pointer;enableFlag:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetImageAttributesCachedBackground"; + Function GdipTestControl(control:pointer;param:pointer):integer;stdcall;external "gdiplus.dll" name "GdipTestControl"; + Function GdiplusNotificationHook(token:pointer):integer;stdcall;external "gdiplus.dll" name "GdiplusNotificationHook"; + procedure GdiplusNotificationUnhook(token:pointer);stdcall;external "gdiplus.dll" name "GdiplusNotificationUnhook"; + Function GdiplusStartup(var token:pointer;input:pointer;var output:integer){@explan(说明)启动gdi+%%}:integer;stdcall;external "gdiplus.dll" name "GdiplusStartup"; + procedure GdiplusShutdown(token:pointer){@explan(说明)关闭gdi+%%};stdcall;external "gdiplus.dll" name "GdiplusShutdown"; + function api_init(); + begin + uses cstructurelib; + if fisinit then return ; + fisinit := true; + vot := array( + ("gdiplusversion","int",1), + ("debugeventcallback","int",0), + ("suppressbackgroundthread","int",0), + ("suppressexternalcodecs","int",0)); + og := new ctslctrans(tslarraytocstructcalc(vot)); + ftoken :=-1; + ig :=-1; + GdiplusStartup(ftoken,og._getptr_,ig); + end + private + static fisinit; +end \ No newline at end of file diff --git a/funcext/tvclib/t_img_op_api.tsf b/funcext/tvclib/t_img_op_api.tsf new file mode 100644 index 0000000..3333bda --- /dev/null +++ b/funcext/tvclib/t_img_op_api.tsf @@ -0,0 +1,362 @@ +type t_img_op_api=class({$ifdef linux}t_cairo_api{$else}t_gdiplusflat_api{$endif}) +{** + @explan(说明)gdi+ 的c接口函数 %% +**} + function create(); + begin + api_init(); + end +{$ifdef linux} + //20241021 分离出gid+ + //20210827 需要添加gdi功能 + { + class procedure cairo_pattern_destroy(p:pointer);cdecl;external 'libgtk-3.so'; + class function cairo_image_surface_create_from_png(f:string):pointer;cdecl;external 'libgtk-3.so'; + class function cairo_pattern_create_for_surface(f:pointer):pointer;cdecl;external 'libgtk-3.so'; + class function cairo_image_surface_get_width(sf:pointer):integer;cdecl;external 'libgtk-3.so'; + class function cairo_image_surface_get_height(sf:pointer):integer;cdecl;external 'libgtk-3.so'; + class function gdk_pixbuf_new_from_file(f:string;er:pointer):pointer;cdecl;external 'libgtk-3.so'; + class function gdk_pixbuf_save(pixbuf:pointer;p:string;tp:string;gerr:string;p1:string; p2:string;p3:string;p4:string;p5:string):integer;cdecl;external 'libgtk-3.so'; + class procedure gdk_pixbuf_unref(pixbuf);cdecl;external 'libgtk-3.so'; + class procedure gdk_pixbuf_ref(pixbuf);cdecl;external 'libgtk-3.so'; + class function g_object_ref(g:pointer):pointer;cdecl;external 'libgtk-3.so'; + class procedure g_object_unref(g:pointer);cdecl;external 'libgtk-3.so'; + } + type TTempFile = class + static fobj_count; + function Create(); + begin + fobj_count++; + bp := "/tmp/tinysoft/tslvcl/"; + FPath := bp+inttostr(systhreadid())+"_"+tostn(fobj_count); + end + function GetData(buf,f); + begin + if not ifstring(f) then f := FPath; + if fileexists("", f) then + begin + sz := filesize("",f); + return readfile(rwraw(),"",f,0,sz,buf); + end + end + function writedata(buf,f); + begin + if not ifstring(buf) then return 0; + if not ifstring(f) then f := FPath; + if fileexists("",f) then filedelete("",f); + unit(tslvcl).CreateDirWithFileName(f); + return 1=writefile(rwraw(),"",f,0,length(buf),buf); + end + function Destroy(); + begin + filedelete("",FPath); + end + property path read FPath ; + private + FPath; + end + function gdk_pixbuf_new_from_file(f:string;er:pointer):pointer; + begin + _f_ := static function(f:string;er:pointer):pointer;cdecl;external get_cairo_func(functionname()); + return ##_f_(f,er); + end + function gdk_pixbuf_save(pixbuf:pointer;p:string;tp:string;gerr:string;p1:string; p2:string;p3:string;p4:string;p5:string):integer; + begin + _f_ := static function(pixbuf:pointer;p:string;tp:string;gerr:string;p1:string; p2:string;p3:string;p4:string;p5:string):integer;cdecl;external get_cairo_func(functionname()); + return ##_f_(pixbuf,p,tp,gerr,p1,p2,p3,p4,p5); + end + procedure gdk_pixbuf_unref(pixbuf); + begin + _f_ := static procedure(pixbuf);cdecl;external get_cairo_func(functionname()); + return ##_f_(); + end + procedure gdk_pixbuf_ref(pixbuf); + begin + _f_ := static procedure(pixbuf);cdecl;externalget_cairo_func(functionname()); + return ##_f_(); + end + function g_object_ref(g:pointer):pointer; + begin + _f_ := static function(g:pointer):pointer;cdecl;external get_cairo_func(functionname()); + return ##_f_(g); + end + procedure g_object_unref(g:pointer); + begin + _f_ := static procedure(g:pointer);cdecl;external get_cairo_func(functionname()); + return ##_f_(g); + end + function GdipSaveImageToStream(image:pointer;var imgestr:string); //无用到 + function GdipLoadImageFromFile(filename:string;var image:pointer); //无用到 + begin + r := gdk_pixbuf_new_from_file(filename,0); + if r<>0 then + begin + image := r; + r := 1; + end + return r; + end + function GdipDisposeImage(img); //销毁image + begin + imageunref(img); + end + function GdipSaveImageToFile(image:pointer;filename:string;clsidEncoder:pointer;encoderParams:pointer); //保存 + begin + s := unit(cstructurelib).ReadStringFromPtr(clsidEncoder); + //"png","jpeg","bmp","gif","tiff" + case s of + "image/png": + begin + return gdk_pixbuf_save(image,filename,"png",nil,nil,nil,nil,nil,nil) + end + "image/jpeg": + begin + ps := array("quality":"100"); + if ifarray(conf) and conf["quality"]>0 and conf["quality"]<=100 then ps["quality"] := inttostr(conf["quality"]); + return gdk_pixbuf_save(image,filename,"jpeg",nil,"quality",ps["quality"],nil,nil,nil); + end + "image/bmp": + begin + return gdk_pixbuf_save(image,filename,"bmp",nil,nil,nil,nil,nil,nil); + end + end + return 0; + end + + function GdipCreateHBITMAPFromBitmap(bitmap:pointer;var hbmReturn:pointer;background:integer); //bitmap to hbitmap + begin + hbmReturn := bitmap; + imageref(hbmReturn); + return 1; + end + function GdipCreateBitmapFromHBITMAP(hbm:pointer;hpal:pointer;var bitmap:pointer); // hbitmap to bitmap + begin + bitmap := hbm; + imageref(bitmap); + return 1; + end + function GdipCreateBitmapFromHICON(hicon:pointer;var bitmap:pointer); //bitmap to icon + begin + bitmap := hicon; + imageref(bitmap); + return 1; + end + function GdipCreateHICONFromBitmap(bitmap:pointer;var hbmReturn:pointer); // icon to bitmap + begin + hbmReturn := bitmap; + imageref(hbmReturn); + return 1; + end + function GdipGetbmpSurface(h); + begin + s := GetImageProperty(h,"surface"); + if s then return s; + p := GetImageProperty(h,"file"); + s := cairo_image_surface_create_from_png(p); + SetImageProperty(h,"surface",s); + return s ; + end + function GdipGetbmppattern(h); + begin + r := GetImageProperty(h,"pattern"); + if r then return r; + s := GdipGetbmpSurface(h); + r := cairo_pattern_create_for_surface(s); + SetImageProperty(h,"pattern",r); + return r; + end + function imagetostring(h,vp,conf); //bitamp to str + begin + t := unit(cstructurelib).ReadStringFromPtr(vp._getptr_()); + //"png","jpeg","bmp","gif","tiff" + case t of + "image/png": + begin + s := GetImageProperty(h,"pngdata"); + if s and ifstring(s) then return s; + tf := new TTempFile(); + p := GetImageProperty(h,"file"); + tf.GetData(s,p); + SetImageProperty(h,"pngdata",s); + end + "image/jpeg": + begin + s := GetImageProperty(h,"jpegdata"); + if s and ifstring(s) then return s; + tf := new TTempFile(p); + p := tf.path; + ps := array("quality":"100"); + if ifarray(conf) and conf["quality"]>0 and conf["quality"]<=100 then ps["quality"] := inttostr(conf["quality"]); + if 1<> gdk_pixbuf_save(pixbuf,p,"jpeg",nil,"quality",ps["quality"],nil,nil,nil) then return 0; + tf.GetData(s); + SetImageProperty(h,"jpegdata",s); + + end + "image/ico": + begin + s := GetImageProperty(h,"icodata"); + if s and ifstring(s) then return s; + tf := new TTempFile(p); + p := tf.path; + ps := array("depth":"32","x_hot":"16","y_hot":"16"); + if ifarray(conf) and conf["depth"]>0 and conf["depth"]<=512 then ps["depth"] := inttostr(conf["depth"]); + if ifarray(conf) and conf["x_hot"]>0 and conf["x_hot"]<=128 then ps["x_hot"] := inttostr(conf["x_hot"]); + if ifarray(conf) and conf["y_hot"]>0 and conf["y_hot"]<=128 then ps["y_hot"] := inttostr(conf["y_hot"]); + if 1<> gdk_pixbuf_save(pixbuf,p,"ico","depth",ps["depth"],"x_hot",ps["x_hot"],"y_hot",ps["y_hot"]) then return 0; + tf.GetData(s); + SetImageProperty(h,"icogdata",s); + end + "image/bmp": + begin + s := GetImageProperty(h,"bmpdata"); + if s and ifstring(s) then return s; + tf := new TTempFile(p); + p := tf.path; + if 1<> gdk_pixbuf_save(pixbuf,p,"bmp",nil,nil,nil,nil,nil,nil) then return 0; + tf.GetData(s); + SetImageProperty(h,"bmpdata",s); + end + end + return s; + end + function stringtoimage(b,hd); //string to bitmap + begin + tf := new TTempFile(p); + p := tf.path; + if 1<>writefile(rwraw(),"",p,0,length(b),b) then return 0; + hd := gdk_pixbuf_new_from_file(p,0); + if hd then r := 0; + else return -1; + np := getmsgd_Crc32(p); + nnp := "/tmp/tinysoft/tslvcl/"+np[1]+"/"+np[2]+"/"+np+".png"; + imageref(hd); + SetImageProperty(hd,"file",nnp); + unit(tslvcl).CreateDirWithFileName(nnp); + gdk_pixbuf_save(hd,nnp,"png",nil,nil,nil,nil,nil,nil); + return r; + end + private + function SetImageProperty(img,p,pv); //保存属性 + begin + global g_gtk_images_propertys; + if not ifarray(g_gtk_images_propertys) then g_gtk_images_propertys := array(); + return g_gtk_images_propertys[inttostr(img),p] := pv; + end + function GetImageProperty(img,p); //获得属性 + begin + global g_gtk_images_propertys; + if not ifarray(g_gtk_images_propertys) then g_gtk_images_propertys := array(); + return g_gtk_images_propertys[inttostr(img),p]; + end + function imageref(img); // 引用 + begin + rf := GetImageProperty(img,"ref"); + SetImageProperty(img,"ref",((rf>0)?(rf+1):(1))); + g_object_ref(img); + end + function imageunref(img); //反引用 + begin + rf := GetImageProperty(img,"ref"); + if ifnil(rf) then return ; + if rf<=1 then + begin + return DeleteImages(img); + end + else SetImageProperty(img,"ref",rf-1); + end + + function DeleteImages(img); //删除 + begin + global g_gtk_images_propertys; + if not ifarray(g_gtk_images_propertys) then return ; + id := inttostr(img); + idfile := g_gtk_images_propertys[id,"file"]; + if not idfile then return ; + if fileexists("",idfile) then //删除文件 + begin + filedelete("",idfile); + end + pt := GetImageProperty(img,"pattern"); + if pt then + begin + cairo_pattern_destroy(pt); //移除pattern + end + sf := GetImageProperty(img,"surface"); + if sf then + begin + //cairo_surface_destroy(sf); //移除surface + end + reindex(g_gtk_images_propertys,array(id:nil)); + g_object_unref(img); + end +{$else} + //stream 处理 + type inukownvtb = class(tslcstructureobj) + uses cstructurelib; + function create(ptr); + begin + p := get_mem_mgr().readptr(ptr); + struct := MemoryAlignmentCalculate(get_vtb_struct()); + inherited create(struct,p); + end + function Release(s); + begin + ptr := _getvalue_("Release"); + _f_ := function (s:pointer):integer;stdcall; external ptr; + r := ##_f_(s); + return r; + end + protected + function get_vtb_struct();virtual; + begin + return array( + ("QueryInterface","intptr",0), + ("AddRef","intptr",0), + ("Release","intptr",0) + ); + end + end + function imagetostring(h,vp,conf); + begin + CreateStreamOnHGlobal(0,true,st); + r := GdipSaveImageToStream(h,st,vp._getptr_,0); + if r<>0 then exit; + GetHGlobalFromStream(st,memo); + len := GlobalSize(memo); + s := ""; + lm := GlobalLock(memo); + setlength(s,len); + memcpy2(s,lm,len); + tuicloseistream(st); + return s; + end + function stringtoimage(b,hd); + begin + len := length(b); + hm := GlobalAlloc(2,len+1);//分配内容 + lm := GlobalLock(hm);//枷锁 + if lm <> 0 then + begin + memcpy(lm,b,len);//内存拷贝 + GlobalUnlock(hm);//解锁 + end + CreateStreamOnHGlobal(hm,true,st); + r := GdipLoadImageFromStream(st,hd); + tuicloseistream(st); + return r; + end + function CreateStreamOnHGlobal(hGlobal:pointer;fDeleteOnRelease:integer; var ppstm:pointer):pointer;stdcall;external "Ole32.dll" name "CreateStreamOnHGlobal"; + function GetHGlobalFromStream(pstm:pointer; var phglobal:pointer):pointer;stdcall;external "Ole32.dll" name "GetHGlobalFromStream"; + function GlobalLock(mem :pointer):pointer;stdcall;external "Kernel32.dll" name "GlobalLock"; + function GlobalUnlock(mem :pointer):integer;stdcall;external "Kernel32.dll" name "GlobalUnlock"; + function GlobalSize(menm:pointer):integer;stdcall;external "Kernel32.dll" name "GlobalSize"; + function memcpy(dst:pointer;src:string;size_t:integer):pointer;cdecl;external "msvcrt.dll" name "memcpy"; + function memcpy2(var dst:string;src:pointer;size_t:integer):pointer;cdecl;external "msvcrt.dll" name "memcpy"; + function tuicloseistream(sm:pointer); + begin + o := new inukownvtb(sm); + return o.release(sm); + end + function GlobalAlloc(uFlags :integer;dwBytes:integer):pointer;stdcall;external "Kernel32.dll" name "GlobalAlloc"; +{$endif} +end \ No newline at end of file diff --git a/funcext/tvclib/tgdiplusflat.tsf b/funcext/tvclib/tgdiplusflat.tsf index 6f288f4..254a269 100644 --- a/funcext/tvclib/tgdiplusflat.tsf +++ b/funcext/tvclib/tgdiplusflat.tsf @@ -714,14 +714,14 @@ type TGdiplusflat=class() //---------------------------------------------------------------------------- // Pen APIs //---------------------------------------------------------------------------- - class Function GdipCreatePen1(color:integer;width:single;unit_:pointer;var pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePen1"; - class Function GdipCreatePen2(brush:pointer;width:single;unit_:pointer;var pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePen2"; + class Function GdipCreatePen1(color:integer;width:single;unit_:integer;var pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePen1"; + class Function GdipCreatePen2(brush:pointer;width:single;unit_:integer;var pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreatePen2"; class Function GdipClonePen(pen:pointer;var clonepen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipClonePen"; class Function GdipDeletePen(pen:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeletePen"; class Function GdipSetPenWidth(pen:pointer;width:single):integer;stdcall;external "gdiplus.dll" name "GdipSetPenWidth"; class Function GdipGetPenWidth(pen:pointer;var width:single):integer;stdcall;external "gdiplus.dll" name "GdipGetPenWidth"; - class Function GdipSetPenUnit(pen:pointer;unit_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenUnit"; - class Function GdipGetPenUnit(pen:pointer;unit_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenUnit"; + class Function GdipSetPenUnit(pen:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenUnit"; + class Function GdipGetPenUnit(pen:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPenUnit"; class Function GdipSetPenLineCap197819(pen:pointer;startCap:pointer;endCap:pointer;dashCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenLineCap197819"; class Function GdipSetPenStartCap(pen:pointer;startCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenStartCap"; class Function GdipSetPenEndCap(pen:pointer;endCap:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPenEndCap"; @@ -911,9 +911,9 @@ type TGdiplusflat=class() class Function GdipRotateWorldTransform(graphics:pointer;angle:single;order_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRotateWorldTransform"; class Function GdipGetWorldTransform(graphics:pointer;matrix:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetWorldTransform"; class Function GdipResetPageTransform(graphics:pointer):integer;stdcall;external "gdiplus.dll" name "GdipResetPageTransform"; - class Function GdipGetPageUnit(graphics:pointer;unit_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetPageUnit"; + class Function GdipGetPageUnit(graphics:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetPageUnit"; class Function GdipGetPageScale(graphics:pointer;var scale:single):integer;stdcall;external "gdiplus.dll" name "GdipGetPageScale"; - class Function GdipSetPageUnit(graphics:pointer;unit_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetPageUnit"; + class Function GdipSetPageUnit(graphics:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetPageUnit"; class Function GdipSetPageScale(graphics:pointer;scale:single):integer;stdcall;external "gdiplus.dll" name "GdipSetPageScale"; class Function GdipGetDpiX(graphics:pointer;var dpi:single):integer;stdcall;external "gdiplus.dll" name "GdipGetDpiX"; class Function GdipGetDpiY(graphics:pointer;var dpi:single):integer;stdcall;external "gdiplus.dll" name "GdipGetDpiY"; @@ -1019,8 +1019,8 @@ type TGdiplusflat=class() class Function GdipIsVisibleRectI(graphics:pointer;x:integer;y:integer;width:integer;height:integer;result:pointer):integer;stdcall;external "gdiplus.dll" name "GdipIsVisibleRectI"; class Function GdipSaveGraphics(graphics:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSaveGraphics"; class Function GdipRestoreGraphics(graphics:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipRestoreGraphics"; - class Function GdipBeginContainer(graphics:pointer;dstrect:pointer;srcrect:pointer;unit_:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBeginContainer"; - class Function GdipBeginContainerI(graphics:pointer;dstrect:pointer;srcrect:pointer;unit_:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBeginContainerI"; + class Function GdipBeginContainer(graphics:pointer;dstrect:pointer;srcrect:pointer;unit_:integer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBeginContainer"; + class Function GdipBeginContainerI(graphics:pointer;dstrect:pointer;srcrect:pointer;unit_:integer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBeginContainerI"; class Function GdipBeginContainer2(graphics:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipBeginContainer2"; class Function GdipEndContainer(graphics:pointer;state:pointer):integer;stdcall;external "gdiplus.dll" name "GdipEndContainer"; class Function GdipGetMetafileHeaderFromWmf(hWmf:pointer;wmfPlaceableFileHeader:pointer;header:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetMetafileHeaderFromWmf"; @@ -1071,13 +1071,13 @@ type TGdiplusflat=class() class Function GdipCreateFontFromDC(hdc:pointer;var font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFontFromDC"; class Function GdipCreateFontFromLogfontA(hdc:pointer;logfont:pointer;var font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFontFromLogfontA"; class Function GdipCreateFontFromLogfontW(hdc:pointer;logfont:pointer;var font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFontFromLogfontW"; - class Function GdipCreateFont(fontFamily:pointer;emSize:single;style:integer;unit_:pointer;var font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFont"; + class Function GdipCreateFont(fontFamily:pointer;emSize:single;style:integer;unit_:integer;var font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCreateFont"; class Function GdipCloneFont(font:pointer;var cloneFont:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneFont"; class Function GdipDeleteFont(font:pointer):integer;stdcall;external "gdiplus.dll" name "GdipDeleteFont"; class Function GdipGetFamily(font:pointer;var family:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetFamily"; class Function GdipGetFontStyle(font:pointer;var style:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetFontStyle"; class Function GdipGetFontSize(font:pointer;var size:single):integer;stdcall;external "gdiplus.dll" name "GdipGetFontSize"; - class Function GdipGetFontUnit(font:pointer;unit_:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetFontUnit"; + class Function GdipGetFontUnit(font:pointer;unit_:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetFontUnit"; class Function GdipGetFontHeight(font:pointer;graphics:pointer;var height:single):integer;stdcall;external "gdiplus.dll" name "GdipGetFontHeight"; class Function GdipGetFontHeightGivenDPI(font:pointer;dpi:single;var height:single):integer;stdcall;external "gdiplus.dll" name "GdipGetFontHeightGivenDPI"; class Function GdipGetLogFontA(font:pointer;graphics:pointer;logfontA:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetLogFontA"; @@ -1107,10 +1107,10 @@ type TGdiplusflat=class() class Function GdipCloneStringFormat(format:pointer;var newFormat:pointer):integer;stdcall;external "gdiplus.dll" name "GdipCloneStringFormat"; class Function GdipSetStringFormatFlags(format:pointer;flags:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatFlags"; class Function GdipGetStringFormatFlags(format:pointer;var flags:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatFlags"; - class Function GdipSetStringFormatAlign(format:pointer;align:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatAlign"; - class Function GdipGetStringFormatAlign(format:pointer;align:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatAlign"; - class Function GdipSetStringFormatLineAlign(format:pointer;align:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatLineAlign"; - class Function GdipGetStringFormatLineAlign(format:pointer;align:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatLineAlign"; + class Function GdipSetStringFormatAlign(format:pointer;align:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatAlign"; + class Function GdipGetStringFormatAlign(format:pointer;align:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatAlign"; + class Function GdipSetStringFormatLineAlign(format:pointer;align:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatLineAlign"; + class Function GdipGetStringFormatLineAlign(format:pointer;align:integer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatLineAlign"; class Function GdipSetStringFormatTrimming(format:pointer;trimming:pointer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatTrimming"; class Function GdipGetStringFormatTrimming(format:pointer;trimming:pointer):integer;stdcall;external "gdiplus.dll" name "GdipGetStringFormatTrimming"; class Function GdipSetStringFormatHotkeyPrefix(format:pointer;hotkeyPrefix:integer):integer;stdcall;external "gdiplus.dll" name "GdipSetStringFormatHotkeyPrefix"; diff --git a/funcext/tvclib/ugtkinterface.tsf b/funcext/tvclib/ugtkinterface.tsf index aef58b8..1c92244 100644 --- a/funcext/tvclib/ugtkinterface.tsf +++ b/funcext/tvclib/ugtkinterface.tsf @@ -1127,12 +1127,13 @@ type tsgtkapi = class(tgtkapis) begin sy := rec[3]-3-ht; end + dht := max(ht-20,0)*0.08;//处理字体过大可能被覆盖的问题 20241012 cairo_save(hdc); x := gtk_object_get_data(hdc,"viewport.x"); y := gtk_object_get_data(hdc,"viewport.y"); reci := array(rec[0]+x,rec[1]+y,rec[2]+x,rec[3]+y); cairo_clip_rec(hdc,reci); - r := TextOutexA(hdc,sx,sy,txt,slen); + r := TextOutexA(hdc,sx,sy-dht,txt,slen); cairo_restore(hdc); return r; end @@ -1319,7 +1320,7 @@ type tsgtkapi = class(tgtkapis) function DeleteObject(gdiobj :pointer);//删除gdi对象 begin - global gtk_gdi_object_globals; + global gtk_gdi_object_globals,g_cairo_api; gdiindex := inttostr( gdiobj); r := gtk_gdi_object_globals[gdiindex]; if r then @@ -1328,7 +1329,7 @@ type tsgtkapi = class(tgtkapis) reindex(gtk_gdi_object_globals,array(inttostr(gdiobj):nil)); return true; end - class(TGdiplusflat).GdipDisposeImage(gdiobj); + g_cairo_api.GdipDisposeImage(gdiobj); return 0; end function DestroyIcon(icon:pointer):integer; @@ -2231,10 +2232,11 @@ type tsgtkapi = class(tgtkapis) end function drawbitmaptodc(bm,hdc,x,y,rc,flag,thdc); begin + global g_cairo_api; if not hdc then return ; xb := gtk_object_get_data(hdc,"viewport.x"); yb := gtk_object_get_data(hdc,"viewport.y"); - img := class(TGdiplusflat).GdipGetbmpSurface(bm); + img := g_cairo_api.GdipGetbmpSurface(bm); //cairo_set_source(hdc, img); //cairo_pattern_set_extend(cairo_get_source(hdc),1); cairo_set_source_surface(hdc, img, x-rc[0], y-rc[1]); @@ -2258,10 +2260,11 @@ type tsgtkapi = class(tgtkapis) end function drawbitmapstretchtodc(bm,hdc,drect,rc,flag,thdc); begin + global g_cairo_api; if not hdc then return ; xb := gtk_object_get_data(hdc,"viewport.x"); yb := gtk_object_get_data(hdc,"viewport.y"); - img := class(TGdiplusflat).GdipGetbmpSurface(bm); + img := g_cairo_api.GdipGetbmpSurface(bm); if not img then return ; x := drect[0]; y := drect[1]; @@ -2289,10 +2292,11 @@ type tsgtkapi = class(tgtkapis) end function DrawIcon(hDC:pointer;X:integer;Y:integer;hIcon:pointer):integer; begin + global g_cairo_api; if not hdc then return ; xb := gtk_object_get_data(hdc,"viewport.x"); yb := gtk_object_get_data(hdc,"viewport.y"); - img := class(TGdiplusflat).GdipGetbmpSurface(hIcon); + img := g_cairo_api.GdipGetbmpSurface(hIcon); if not img then return 0; cairo_set_source_surface(hdc, img, x+xb, y+yb); cairo_paint(hdc); @@ -2301,6 +2305,7 @@ type tsgtkapi = class(tgtkapis) //////////////////////imagelist///////////////////////////////////////////////////////////////////////// function ImageList_Add(himl:pointer;hbmImage:pointer; hbmMask:pointer):integer; begin + global g_cairo_api; if not(himl>0 or himl<0) then return 0; if not(hbmImage>0 or hbmImage<0) then return 0; global g_image_list_caches ; @@ -2308,7 +2313,7 @@ type tsgtkapi = class(tgtkapis) sptr := inttostr(himl); obj := g_image_list_caches[sptr,"imglist"] ; if not obj then return ; - class(TGdiplusflat).GdipCreateBitmapFromHBITMAP(hbmImage,r1,0); + g_cairo_api.GdipCreateBitmapFromHBITMAP(hbmImage,r1,0); cbmp := class(tUIglobalData).uigetdata("G_T_BITMAP_"); if cbmp then begin @@ -2420,7 +2425,8 @@ type tsgtkapi = class(tgtkapis) reindex(g_image_list_caches,array(inttostr(himl):nil)); end function ImageList_Replace(himl:pointer;id:integer;hbmImage:pointer; hbmMask:pointer):integer; - begin + begin + global g_cairo_api; if not(himl>0 or himl<0) then return 0; if not(hbmImage>0 or hbmImage<0) then return 0; global g_image_list_caches ; @@ -2429,7 +2435,7 @@ type tsgtkapi = class(tgtkapis) if not obj then return ; cbmp := class(tUIglobalData).uigetdata("G_T_BITMAP_"); if not cbmp then return 0; - class(TGdiplusflat).GdipCreateBitmapFromHBITMAP(hbmImage,0,r1); + g_cairo_api.GdipCreateBitmapFromHBITMAP(hbmImage,0,r1); bmp := createobject(cbmp); bmp.Handle := r1; if id=-1 then obj.Push(bmp); @@ -3253,7 +3259,7 @@ type tmenuitemobject = class(tgtk_ctl_object) //gtk //echo "\r\nmenu destroyed"; end end -type tgtkapis = class() //gtk对象api接口 +type tgtkapis = class(t_cairo_api) //gtk对象api接口 function gtk_object_set_data(h,n,v); //保存数据 begin if not(h>0 or h<0) then return 0; @@ -3784,6 +3790,12 @@ type tgtkapis = class() //gtk end return r; end + /////////////////////cairo gtk////////////////////////////// + function gdk_cairo_create(w:pointer):pointer; + begin + _f_ := static function(w:pointer):pointer;cdecl;external get_cairo_func(functionname()); + return ##_f_(w); + end //////////////////////////clipboard///////////////////// procedure gtk_clipboard_set_text(c:pointer;s:string;len:integer); begin @@ -4806,219 +4818,7 @@ type tgtkapis = class() //gtk end return r; end - - ///////////////////////////cairo//////////////////////////////// - function cairo_create(s:pointer):pointer; - begin - _f_ := static function(s:pointer):pointer;cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(s); - end - procedure cairo_save(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_restore(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - function gdk_cairo_create(w:pointer):pointer; - begin - _f_ := static function(w:pointer):pointer;cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(w); - end - function cairo_move_to(cr:pointer;x:double;y:double); - begin - _f_ := static function(cr:pointer;x:double;y:double);cdecl;external getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(cr,s); - end - function cairo_get_source(cr:pointer):pointer; - begin - _f_ := static function(cr:pointer):pointer;cdecl;external getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(c,w); - end - function cairo_get_line_width(c:pointer):double; - begin - _f_ := static function(c:pointer):double;cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_set_line_cap(c:pointer;cp:integer); - begin - _f_ := static procedure(c:pointer;cp:integer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c,cp); - end - function cairo_get_line_cap(c:pointer):integer; - begin - _f_ := static function(c:pointer):integer;cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_set_line_join(c:pointer;t:integer); - begin - _f_ := static procedure(c:pointer;t:integer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c,t); - end - function cairo_get_line_join(c:pointer):integer; - begin - _f_ := static function(c:pointer):integer;cdecl;external getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(cr,tx,ty); - end - procedure cairo_rotate(cr:pointer;angle:double); - begin - _f_ := static procedure(cr:pointer;angle:double);cdecl;external getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(c,op); - end - function cairo_get_operator(c:pointer):integer; - begin - _f_ := static function(c:pointer):integer;cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_set_tolerance(c:pointer;tol:double); - begin - _f_ := static procedure(c:pointer;tol:double);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c,tol); - end - function cairo_get_tolerance(c:pointer):double; - begin - _f_ := static function(c:pointer):double;cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_destroy(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_close_path(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_set_fill_rule(c:pointer;rul:integer); - begin - _f_ := static procedure(c:pointer;rul:integer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c,rul); - end - procedure cairo_clip(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_clip_preserve(c:pointer); //叠加裁剪 - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(c,x,y); - end - procedure cairo_reset_clip(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_stroke(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_stroke_preserve(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(c,dash,num_dash,offset); - end - procedure cairo_fill(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end - procedure cairo_fill_preserve(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(c,alpah); - end - procedure cairo_paint(c:pointer); - begin - _f_ := static procedure(c:pointer);cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(c); - end + ////////////////////cairo ext//////////////////////////// function cairo_applay_pen_style(dc); begin pt := gtk_object_get_data(dc,"pen.style"); @@ -5064,108 +4864,8 @@ type tgtkapis = class() //gtk cairo_arc(cr, x + w - r, y + h - r, r, 0, 3.14 / 2); cairo_arc(cr, x + r, y + h - r, r, 3.14 / 2, 3.14); 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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(cr,ft); - end - function cairo_font_options_create():pointer; - begin - _f_ := static function():pointer;cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(); - end - procedure cairo_font_options_destroy(op:pointer); - begin - _f_ := static procedure(op:pointer);cdecl;external getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(f); - end - function cairo_image_surface_get_width(sf:pointer):integer; - begin - _f_ := static function(sf:pointer):integer;cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(sf); - end - function cairo_image_surface_get_height(sf:pointer):integer; - begin - _f_ := static function(sf:pointer):integer;cdecl;external getfuncptrbyname(0,functionname()); - return ##_f_(sf); - end - procedure cairo_surface_destroy(sf:pointer); - begin - _f_ := static procedure(sf:pointer);cdecl;external getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,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 getfuncptrbyname(0,functionname()); - return ##_f_(c,offset,r,g,b,a); - end + + /////////////////////////window////////// procedure gtk_window_set_keep_above(w:pointer;f:integer); begin @@ -10169,7 +9869,8 @@ begin global g_w_i_datas,g_w_c_width, g_gtk_buttontable,g_gtk_keytable, g_gtk_call_handler_manager,g_gtk_font_get_size,g_gtk_dragxy, g_gtk_shadow_width,g_gtk_shadow_heigt,g_gtk_shadow_size_nset, - G_E_ID_Name_1,G_E_ID_Name_2,g_Caret_Blink_Time,g_ansi_unit_cache,gtk_gdi_object_globals; + G_E_ID_Name_1,G_E_ID_Name_2,g_Caret_Blink_Time,g_ansi_unit_cache,gtk_gdi_object_globals,g_cairo_api; + g_cairo_api := new t_img_op_api(); g_ansi_unit_cache := array(); gtk_gdi_object_globals := array(); G_E_ID_Name_2 := array(); diff --git a/funcext/tvclib/utslvclauxiliary.tsf b/funcext/tvclib/utslvclauxiliary.tsf index c11ebce..7a63e0d 100644 --- a/funcext/tvclib/utslvclauxiliary.tsf +++ b/funcext/tvclib/utslvclauxiliary.tsf @@ -708,7 +708,119 @@ type TFpList=class(tarray1dlk) return len(); end end - +type tmy_map = class() // map 对象 + function create(); + begin + clear(); + fignorecase := true; + end + function operator[](idx);//get data + begin + k := get_true_key(idx); + return fkvs[k,1]; + end + function operator[1](idx,v);//设置数据 + begin + k := get_true_key(idx); + fchanged := true; + if ifnil(v) then + begin + reindex(fkvs,array(k:v)); + end else + begin + fkvs[k] := array(idx,v); + end + end + function operator length(); + begin + return ::length(fkvs); + end + function operator for(idx); //for循环 + begin + init := (idx .& 1)=0; + if init then + begin + formatkvs2(); + fforpos := -1; + fforcount := ::length(fkvs2); + end + iv := (idx .& 2)=2; + if iv then // + begin + if fforposfignorecase then + begin + fchanged := true; + fignorecase := nv; + end + end + function formatkvs2(); //格式化 + begin + if fchanged then + begin + fchanged := false; + fkvs2 := array(); + ct := 0; + for i,v in fkvs do + begin + fkvs2[ct++] := v; + end + end + end + fignorecase; + fforcount; + fforpos; + fchanged; + fkvs2; //for 处理 + fkvs; +end type tstrindexarray = class() //字符串大小写无关下标数组 {** @explan(数组类型) 忽略字符串下标的大小写%% @@ -830,7 +942,7 @@ type tstrindexarray = class() // FData := nil; FRows := nil; end -private + private function SetData(d); begin if not ifarray(d)then return false; @@ -876,7 +988,7 @@ type tnumindexarray = Class() //栈模 **} return GetValueByIndex(idx); end - function length(); + function operator length(); begin {** @explan(说明) 获得数据长度 %% diff --git a/funcext/tvclib/utslvclconstant.tsf b/funcext/tvclib/utslvclconstant.tsf index e9dbec5..42eacf4 100644 --- a/funcext/tvclib/utslvclconstant.tsf +++ b/funcext/tvclib/utslvclconstant.tsf @@ -411,8 +411,8 @@ type TSystemCursor=class static OCR_APPSTARTING; //126 static OCR_IBEAM; //152 end -type tmacroconst=class(_commctrldef_,_tvclmsageid_,_shellapi_) - static const tmacroconstinit=0x1; +type tmacroconst=class(_commctrldef_,_tvclmsageid_,_shellapi_,_gdiflatconst_) + //static const tmacroconstinit=0x1; end type tconstant=class(talign,TAnchorKind,TFormStyle,TComponentState,TComponentStyle,TWinControlFlag,TControlStyleType,TMouseButton,TShiftStateEnum,TControlFlag,TDockOrientation,TDragKind,TDragMode,TDragState,TDragMessage,TCanvasStates,TFPPenMode,TFPPenEndCap,TFPPenJoinStyle,TControlStateType,TFormBorderStyle,TAlignStyle9,TAlignStyleH3,TSysCursor,TActionListState,TToolButtonStyle,TPairSplitterType) @@ -3145,6 +3145,331 @@ type _shellapi_=class() static const shil_last=0x4;static const wc_netaddress="msctls_netaddress";static const ncm_getaddress=0x401; static const ncm_setallowtype=0x402;static const ncm_getallowtype=0x403;static const ncm_displayerrortip=0x404; end +type _gdiflatconst_ = class() //gdiplusflat + //FillMode + static const FillModeAlternate = 0; + static const FillModeWinding = 1; + //QualityMode + static const QualityModeInvalid = -1; + static const QualityModeDefault = 0; + static const QualityModeLow = 1; + static const QualityModeHigh = 2; + //CompositingMode + static const CompositingModeSourceOver = 0; + static const CompositingModeSourceCopy = 1; + //CompositingQuality + static const CompositingQualityInvalid = QualityModeInvalid; + static const CompositingQualityDefault = QualityModeDefault; + static const CompositingQualityHighSpeed = QualityModeLow; + static const CompositingQualityHighQuality = QualityModeHigh; + static const CompositingQualityGammaCorrected = 3; + static const CompositingQualityAssumeLinear = 4; + //Unit + static const UnitWorld = 0; + static const UnitDisplay = 1; + static const UnitPixel = 2; + static const UnitPoint = 3; + static const UnitInch = 4; + static const UnitDocument = 5; + static const UnitMillimeter = 6; + //MetafileFrameUnit + static const MetafileFrameUnitPixel = UnitPixel; + static const MetafileFrameUnitPoint = UnitPoint; + static const MetafileFrameUnitInch = UnitInch; + static const MetafileFrameUnitDocument = UnitDocument; + static const MetafileFrameUnitMillimeter = UnitMillimeter; + static const MetafileFrameUnitGdi = 7; + ///CoordinateSpace + static const CoordinateSpaceWorld = 0; + static const CoordinateSpacePage = 1; + static const CoordinateSpaceDevice = 2; + //////WrapMode/////// + static const WrapModeTile = 0; + static const WrapModeTileFlipX = 1; + static const WrapModeTileFlipY = 2; + static const WrapModeTileFlipXY = 3; + static const WrapModeClamp = 4; + ///////HatchStyle////////////////// + static const HatchStyleHorizontal = 0 ; + static const HatchStyleVertical = 1 ; + static const HatchStyleForwardDiagonal = 2 ; + static const HatchStyleBackwardDiagonal = 3 ; + static const HatchStyleCross = 4 ; + static const HatchStyleDiagonalCross = 5 ; + static const HatchStyle05Percent = 6 ; + static const HatchStyle10Percent = 7 ; + static const HatchStyle20Percent = 8 ; + static const HatchStyle25Percent = 9 ; + static const HatchStyle30Percent = 10; + static const HatchStyle40Percent = 11; + static const HatchStyle50Percent = 12; + static const HatchStyle60Percent = 13; + static const HatchStyle70Percent = 14; + static const HatchStyle75Percent = 15; + static const HatchStyle80Percent = 16; + static const HatchStyle90Percent = 17; + static const HatchStyleLightDownwardDiagonal = 18; + static const HatchStyleLightUpwardDiagonal = 19; + static const HatchStyleDarkDownwardDiagonal = 20; + static const HatchStyleDarkUpwardDiagonal = 21; + static const HatchStyleWideDownwardDiagonal = 22; + static const HatchStyleWideUpwardDiagonal = 23; + static const HatchStyleLightVertical = 24; + static const HatchStyleLightHorizontal = 25; + static const HatchStyleNarrowVertical = 26; + static const HatchStyleNarrowHorizontal = 27; + static const HatchStyleDarkVertical = 28; + static const HatchStyleDarkHorizontal = 29; + static const HatchStyleDashedDownwardDiagonal = 30; + static const HatchStyleDashedUpwardDiagonal = 31; + static const HatchStyleDashedHorizontal = 32; + static const HatchStyleDashedVertical = 33; + static const HatchStyleSmallConfetti = 34; + static const HatchStyleLargeConfetti = 35; + static const HatchStyleZigZag = 36; + static const HatchStyleWave = 37; + static const HatchStyleDiagonalBrick = 38; + static const HatchStyleHorizontalBrick = 39; + static const HatchStyleWeave = 40; + static const HatchStylePlaid = 41; + static const HatchStyleDivot = 42; + static const HatchStyleDottedGrid = 43; + static const HatchStyleDottedDiamond = 44; + static const HatchStyleShingle = 45; + static const HatchStyleTrellis = 46; + static const HatchStyleSphere = 47; + static const HatchStyleSmallGrid = 48; + static const HatchStyleSmallCheckerBoard = 49; + static const HatchStyleLargeCheckerBoard = 50; + static const HatchStyleOutlinedDiamond = 51; + static const HatchStyleSolidDiamond = 52; + static const HatchStyleTotal = 53; + static const HatchStyleLargeGrid = HatchStyleCross ; + static const HatchStyleMin = HatchStyleHorizontal ; + static const HatchStyleMax = HatchStyleTotal - 1 ; + //DashStyle + static const DashStyleSolid = 0; + static const DashStyleDash = 1; + static const DashStyleDot = 2; + static const DashStyleDashDot = 3; + static const DashStyleDashDotDot = 4; + static const DashStyleCustom = 5; + //DashCap + static const DashCapFlat = 0; + static const DashCapRound = 2; + static const DashCapTriangle = 3; + //LineCap + static const LineCapFlat = 0; + static const LineCapSquare = 1; + static const LineCapRound = 2; + static const LineCapTriangle = 3; + static const LineCapNoAnchor = 0x10; // corresponds to flat cap + static const LineCapSquareAnchor = 0x11; // corresponds to square cap + static const LineCapRoundAnchor = 0x12; // corresponds to round cap + static const LineCapDiamondAnchor = 0x13; // corresponds to triangle cap + static const LineCapArrowAnchor = 0x14; // no correspondence + static const LineCapCustom = 0xff; // custom cap + static const LineCapAnchorMask = 0xf0; // mask to check for anchor or not. + /////CustomLineCapType///// + static const CustomLineCapTypeDefault = 0; + static const CustomLineCapTypeAdjustableArrow = 1; + ////LineJoin + static const LineJoinMiter = 0; + static const LineJoinBevel = 1; + static const LineJoinRound = 2; + static const LineJoinMiterClipped = 3; + ////PathPointType////////// + static const PathPointTypeStart = 0; // move + static const PathPointTypeLine = 1; // line + static const PathPointTypeBezier = 3; // default Bezier (= cubic Bezier) + static const PathPointTypePathTypeMask = 0x07; // type mask (lowest 3 bits). + static const PathPointTypeDashMode = 0x10; // currently in dash mode. + static const PathPointTypePathMarker = 0x20; // a marker for the path. + static const PathPointTypeCloseSubpath = 0x80; // closed flag + //Path types used for advanced path. + static const PathPointTypeBezier3 = 3; // cubic Bezier + ///////////WarpMode/////// + static const WarpModePerspective = 0; + static const WarpModeBilinear = 1; + //LinearGradientMode + static const LinearGradientModeHorizontal = 0; + static const LinearGradientModeVertical = 1; + static const LinearGradientModeForwardDiagonal = 2; + static const LinearGradientModeBackwardDiagonal = 3; + ///CombineMode + static const CombineModeReplace = 0 ; + static const CombineModeIntersect = 1 ; + static const CombineModeUnion = 2 ; + static const CombineModeXor = 3 ; + static const CombineModeExclude = 4 ; + static const CombineModeComplement = 5 ; + //ImageType + static const ImageTypeUnknown = 0; + static const ImageTypeBitmap = 1; + static const ImageTypeMetafile = 2; + ///InterpolationMode + static const InterpolationModeInvalid = QualityModeInvalid; + static const InterpolationModeDefault = QualityModeDefault; + static const InterpolationModeLowQuality = QualityModeLow; + static const InterpolationModeHighQuality = QualityModeHigh; + static const InterpolationModeBilinear = 3; + static const InterpolationModeBicubic = 4; + static const InterpolationModeNearestNeighbor = 5; + static const InterpolationModeHighQualityBilinear = 6; + static const InterpolationModeHighQualityBicubic = 7; + ///////PenAlignment////////////// + static const PenAlignmentCenter = 0; + static const PenAlignmentInset = 1; + //BrushType + static const BrushTypeSolidColor = 0; + static const BrushTypeHatchFill = 1; + static const BrushTypeTextureFill = 2; + static const BrushTypePathGradient = 3; + static const BrushTypeLinearGradient = 4; + //PenType + static const PenTypeSolidColor = 0; + static const PenTypeHatchFill = 1; + static const PenTypeTextureFill = 2; + static const PenTypePathGradient = 3; + static const PenTypeLinearGradient = 4; + static const PenTypeUnknown = -1; + //MatrixOrder + static const MatrixOrderPrepend = 0; + static const MatrixOrderAppend = 1; + //////GenericFontFamily + static const GenericFontFamilySerif = 0; + static const GenericFontFamilySansSerif = 1; + static const GenericFontFamilyMonospace = 2; + ////FontStyle + static const FontStyleRegular = 0; + static const FontStyleBold = 1; + static const FontStyleItalic = 2; + static const FontStyleBoldItalic = 3; + static const FontStyleUnderline = 4; + static const FontStyleStrikeout = 8; + ////SmoothingMode + static const SmoothingModeInvalid = QualityModeInvalid; + static const SmoothingModeDefault = QualityModeDefault; + static const SmoothingModeHighSpeed = QualityModeLow; + static const SmoothingModeHighQuality = QualityModeHigh; + static const SmoothingModeNone = 3 ; + static const SmoothingModeAntiAlias = 4; + ////PixelOffsetMode + static const PixelOffsetModeInvalid = QualityModeInvalid; + static const PixelOffsetModeDefault = QualityModeDefault; + static const PixelOffsetModeHighSpeed = QualityModeLow; + static const PixelOffsetModeHighQuality = QualityModeHigh; + static const PixelOffsetModeNone = 3 ; + static const PixelOffsetModeHalf = 4; + ///TextRenderingHint + static const TextRenderingHintSystemDefault = 0; // Glyph with system default rendering hint + static const TextRenderingHintSingleBitPerPixelGridFit = 1; // Glyph bitmap with hinting + static const TextRenderingHintSingleBitPerPixel = 2; // Glyph bitmap without hinting + static const TextRenderingHintAntiAliasGridFit = 3; // Glyph anti-alias bitmap with hinting + static const TextRenderingHintAntiAlias = 4; // Glyph anti-alias bitmap without hinting + static const TextRenderingHintClearTypeGridFit = 5; // Glyph CT bitmap with hinting + //MetafileType + static const MetafileTypeInvalid = 0; // Invalid metafile + static const MetafileTypeWmf = 1; // Standard WMF + static const MetafileTypeWmfPlaceable = 2; // Placeable WMF + static const MetafileTypeEmf = 3; // EMF (not EMF+) + static const MetafileTypeEmfPlusOnly = 4; // EMF+ without dual = ; down-level records + static const MetafileTypeEmfPlusDual = 5; // EMF+ with dual = ; down-level records + //EmfType + static const EmfTypeEmfOnly = MetafileTypeEmf; + static const EmfTypeEmfPlusOnly = MetafileTypeEmfPlusOnly; + static const EmfTypeEmfPlusDual = MetafileTypeEmfPlusDual; + ///ObjectType + static const ObjectTypeInvalid = 0 ; + static const ObjectTypeBrush = 1 ; + static const ObjectTypePen = 2 ; + static const ObjectTypePath = 3 ; + static const ObjectTypeRegion = 4 ; + static const ObjectTypeImage = 5 ; + static const ObjectTypeFont = 6 ; + static const ObjectTypeStringFormat = 7 ; + static const ObjectTypeImageAttributes = 8 ; + static const ObjectTypeCustomLineCap = 9 ; + //////////////// + + ///StringFormatFlags///////////////// + static const StringFormatFlagsDirectionRightToLeft = 0x00000001; + static const StringFormatFlagsDirectionVertical = 0x00000002; + static const StringFormatFlagsNoFitBlackBox = 0x00000004; + static const StringFormatFlagsDisplayFormatControl = 0x00000020; + static const StringFormatFlagsNoFontFallback = 0x00000400; + static const StringFormatFlagsMeasureTrailingSpaces = 0x00000800; + static const StringFormatFlagsNoWrap = 0x00001000; + static const StringFormatFlagsLineLimit = 0x00002000; + static const StringFormatFlagsNoClip = 0x00004000; + static const StringFormatFlagsBypassGDI = 0x80000000; + /////StringTrimming//////// + static const StringTrimmingNone = 0; + static const StringTrimmingCharacter = 1; + static const StringTrimmingWord = 2; + static const StringTrimmingEllipsisCharacter = 3; + static const StringTrimmingEllipsisWord = 4; + static const StringTrimmingEllipsisPath = 5; + //--------------------------------------------------------------------------- + // National language digit substitution + //--------------------------------------------------------------------------- + static const StringDigitSubstituteUser = 0; // As NLS setting + static const StringDigitSubstituteNone = 1; + static const StringDigitSubstituteNational = 2; + static const StringDigitSubstituteTraditional = 3; + //--------------------------------------------------------------------------- + // Hotkey prefix interpretation + //--------------------------------------------------------------------------- + static const HotkeyPrefixNone = 0; + static const HotkeyPrefixShow = 1; + static const HotkeyPrefixHide = 2; + //--------------------------------------------------------------------------- + // String alignment flags + //--------------------------------------------------------------------------- + // Left edge for left-to-right text; + // right for right-to-left text; + // and top for vertical + static const StringAlignmentNear = 0; + static const StringAlignmentCenter = 1; + static const StringAlignmentFar = 2; + ////////////DriverStringOptions///// + static const DriverStringOptionsCmapLookup = 1; + static const DriverStringOptionsVertical = 2; + static const DriverStringOptionsRealizedAdvance = 4; + static const DriverStringOptionsLimitSubpixel = 8; + /////FlushIntention/////// + static const FlushIntentionFlush = 0; + static const FlushIntentionSync = 1; + //EncoderParameterValueType + static const EncoderParameterValueTypeByte = 1; // 8-bit unsigned int + static const EncoderParameterValueTypeASCII = 2; // 8-bit byte containing one 7-bit ASCII + // code. NULL terminated. + static const EncoderParameterValueTypeShort = 3; // 16-bit unsigned int + static const EncoderParameterValueTypeLong = 4; // 32-bit unsigned int + static const EncoderParameterValueTypeRational = 5; // Two Longs. The first Long is the + // numerator; the second Long expresses the + // denomintor. + static const EncoderParameterValueTypeLongRange = 6; // Two longs which specify a range of + // integer values. The first Long specifies + // the lower end and the second one + // specifies the higher end. All values + // are inclusive at both ends + static const EncoderParameterValueTypeUndefined = 7; // 8-bit byte that can take any value + // depending on field definition + static const EncoderParameterValueTypeRationalRange = 8; // Two Rationals. The first Rational + // specifies the lower end and the second + // specifies the higher end. All values + // are inclusive at both ends + //----------GpTestControlEnum----------------------------------------------------------------- + static const TestControlForceBilinear = 0; + static const TestControlNoICM = 1; + static const TestControlGetBuildNumber = 2; + //EmfToWmfBitsFlags// + static const EmfToWmfBitsFlagsDefault = 0x00000000; + static const EmfToWmfBitsFlagsEmbedEmf = 0x00000001; + static const EmfToWmfBitsFlagsIncludePlaceable = 0x00000002; + static const EmfToWmfBitsFlagsNoXORClip = 0x00000004; +end implementation initialization end. \ No newline at end of file diff --git a/funcext/tvclib/utslvclgdi.tsf b/funcext/tvclib/utslvclgdi.tsf index f260231..3fc6b48 100644 --- a/funcext/tvclib/utslvclgdi.tsf +++ b/funcext/tvclib/utslvclgdi.tsf @@ -182,7 +182,6 @@ type Tcustomfont = class(tgdi) begin if ifnumber(v)and v <> Fwidth and v<>17 then begin - echo "\r\nset:",v; Fwidth := v; onchange(); end @@ -936,7 +935,7 @@ type tcustomimage=class(TSLUIBASE) begin inherited; FHandle := 0; - FGdi := new TGdiplusflat(); + FGdi := new t_img_op_api(); end function DestroyHandle(); begin @@ -1093,7 +1092,7 @@ type tcustomimage=class(TSLUIBASE) property Gdi read FGdi; property Handle Read FHandle; {** - @param(gdi)(TGdiplusflat) gdi对象 %% + @param(gdi)(t_img_op_api) 图像操作对象 %% @param(handle)(pointer) 句柄 %% **} end @@ -3359,16 +3358,7 @@ begin end function sinitgidplus(); begin - FGDI := new TGdiplusflat(); - vot := array( - ("gdiplusversion","int",1), - ("debugeventcallback","int",0), - ("suppressbackgroundthread","int",0), - ("suppressexternalcodecs","int",0)); - og := new ctslctrans(tslarraytocstructcalc(vot)); - ftoken :=-1; - ig :=-1; - FGDI.GdiplusStartup(ftoken,og._getptr_,ig); + FGDI := new t_img_op_api(); end function GetTextWidthAndHeightWidthFont(s,f,mul); begin