]>
Commit | Line | Data |
---|---|---|
1 | /////////////////////////////////////////////////////////////////////////////// | |
2 | // Name: src/msw/gdiplus.cpp | |
3 | // Purpose: implements wrappers for GDI+ flat API | |
4 | // Author: Vadim Zeitlin | |
5 | // Created: 2007-03-14 | |
6 | // RCS-ID: $Id$ | |
7 | // Copyright: (c) 2007 Vadim Zeitlin <vadim@wxwindows.org> | |
8 | // Licence: wxWindows licence | |
9 | /////////////////////////////////////////////////////////////////////////////// | |
10 | ||
11 | // ============================================================================ | |
12 | // declarations | |
13 | // ============================================================================ | |
14 | ||
15 | // ---------------------------------------------------------------------------- | |
16 | // headers | |
17 | // ---------------------------------------------------------------------------- | |
18 | ||
19 | // for compilers that support precompilation, includes "wx.h". | |
20 | #include "wx/wxprec.h" | |
21 | ||
22 | #ifdef __BORLANDC__ | |
23 | #pragma hdrstop | |
24 | #endif | |
25 | ||
26 | #if wxUSE_GRAPHICS_CONTEXT | |
27 | ||
28 | #ifndef WX_PRECOMP | |
29 | #include "wx/cpp.h" | |
30 | #include "wx/log.h" | |
31 | #include "wx/module.h" | |
32 | #include "wx/string.h" | |
33 | #endif // WX_PRECOMP | |
34 | ||
35 | #include "wx/dynload.h" | |
36 | ||
37 | #include "wx/msw/wrapgdip.h" | |
38 | ||
39 | // w32api headers used by both MinGW and Cygwin wrongly define UINT16 inside | |
40 | // Gdiplus namespace in gdiplus.h which results in ambiguity errors when using | |
41 | // this type as UINT16 is also defined in global scope by windows.h (or rather | |
42 | // basetsd.h included from it), so we redefine it to work around this problem. | |
43 | #if defined(__CYGWIN__) || defined(__MINGW32__) | |
44 | #define UINT16 unsigned short | |
45 | #endif | |
46 | ||
47 | // ---------------------------------------------------------------------------- | |
48 | // helper macros | |
49 | // ---------------------------------------------------------------------------- | |
50 | ||
51 | // return the name we use for the type of the function with the given name | |
52 | // (without "Gdip" prefix) | |
53 | #define wxGDIPLUS_FUNC_T(name) Gdip##name##_t | |
54 | ||
55 | // to avoid repeating all (several hundreds) of GDI+ functions names several | |
56 | // times in this file, we define a macro which allows us to apply another macro | |
57 | // to all (or almost all, as we sometimes have to handle functions not | |
58 | // returning GpStatus separately) these functions at once | |
59 | ||
60 | // this macro expands into an invocation of the given macro m for all GDI+ | |
61 | // functions returning standard GpStatus | |
62 | // | |
63 | // m is called with the name of the function without "Gdip" prefix as the first | |
64 | // argument, the list of function parameters with their names as the second one | |
65 | // and the list of just the parameter names as the third one | |
66 | #define wxFOR_ALL_GDIPLUS_STATUS_FUNCS(m) \ | |
67 | m(CreatePath, (GpFillMode brushMode, GpPath **path), (brushMode, path)) \ | |
68 | m(CreatePath2, (GDIPCONST GpPointF* a1, GDIPCONST BYTE* a2, INT a3, GpFillMode a4, GpPath **path), (a1, a2, a3, a4, path)) \ | |
69 | m(CreatePath2I, (GDIPCONST GpPoint* a1, GDIPCONST BYTE* a2, INT a3, GpFillMode a4, GpPath **path), (a1, a2, a3, a4, path)) \ | |
70 | m(ClonePath, (GpPath* path, GpPath **clonePath), (path, clonePath)) \ | |
71 | m(DeletePath, (GpPath* path), (path)) \ | |
72 | m(ResetPath, (GpPath* path), (path)) \ | |
73 | m(GetPointCount, (GpPath* path, INT* count), (path, count)) \ | |
74 | m(GetPathTypes, (GpPath* path, BYTE* types, INT count), (path, types, count)) \ | |
75 | m(GetPathPoints, (GpPath* a1, GpPointF* points, INT count), (a1, points, count)) \ | |
76 | m(GetPathPointsI, (GpPath* a1, GpPoint* points, INT count), (a1, points, count)) \ | |
77 | m(GetPathFillMode, (GpPath *path, GpFillMode *fillmode), (path, fillmode)) \ | |
78 | m(SetPathFillMode, (GpPath *path, GpFillMode fillmode), (path, fillmode)) \ | |
79 | m(GetPathData, (GpPath *path, GpPathData* pathData), (path, pathData)) \ | |
80 | m(StartPathFigure, (GpPath *path), (path)) \ | |
81 | m(ClosePathFigure, (GpPath *path), (path)) \ | |
82 | m(ClosePathFigures, (GpPath *path), (path)) \ | |
83 | m(SetPathMarker, (GpPath* path), (path)) \ | |
84 | m(ClearPathMarkers, (GpPath* path), (path)) \ | |
85 | m(ReversePath, (GpPath* path), (path)) \ | |
86 | m(GetPathLastPoint, (GpPath* path, GpPointF* lastPoint), (path, lastPoint)) \ | |
87 | m(AddPathLine, (GpPath *path, REAL x1, REAL y1, REAL x2, REAL y2), (path, x1, y1, x2, y2)) \ | |
88 | m(AddPathLine2, (GpPath *path, GDIPCONST GpPointF *points, INT count), (path, points, count)) \ | |
89 | m(AddPathArc, (GpPath *path, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle), (path, x, y, width, height, startAngle, sweepAngle)) \ | |
90 | m(AddPathBezier, (GpPath *path, REAL x1, REAL y1, REAL x2, REAL y2, REAL x3, REAL y3, REAL x4, REAL y4), (path, x1, y1, x2, y2, x3, y3, x4, y4)) \ | |
91 | m(AddPathBeziers, (GpPath *path, GDIPCONST GpPointF *points, INT count), (path, points, count)) \ | |
92 | m(AddPathCurve, (GpPath *path, GDIPCONST GpPointF *points, INT count), (path, points, count)) \ | |
93 | m(AddPathCurve2, (GpPath *path, GDIPCONST GpPointF *points, INT count, REAL tension), (path, points, count, tension)) \ | |
94 | m(AddPathCurve3, (GpPath *path, GDIPCONST GpPointF *points, INT count, INT offset, INT numberOfSegments, REAL tension), (path, points, count, offset, numberOfSegments, tension)) \ | |
95 | m(AddPathClosedCurve, (GpPath *path, GDIPCONST GpPointF *points, INT count), (path, points, count)) \ | |
96 | m(AddPathClosedCurve2, (GpPath *path, GDIPCONST GpPointF *points, INT count, REAL tension), (path, points, count, tension)) \ | |
97 | m(AddPathRectangle, (GpPath *path, REAL x, REAL y, REAL width, REAL height), (path, x, y, width, height)) \ | |
98 | m(AddPathRectangles, (GpPath *path, GDIPCONST GpRectF *rects, INT count), (path, rects, count)) \ | |
99 | m(AddPathEllipse, (GpPath *path, REAL x, REAL y, REAL width, REAL height), (path, x, y, width, height)) \ | |
100 | m(AddPathPie, (GpPath *path, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle), (path, x, y, width, height, startAngle, sweepAngle)) \ | |
101 | m(AddPathPolygon, (GpPath *path, GDIPCONST GpPointF *points, INT count), (path, points, count)) \ | |
102 | m(AddPathPath, (GpPath *path, GDIPCONST GpPath* addingPath, BOOL connect), (path, addingPath, connect)) \ | |
103 | m(AddPathString, (GpPath *path, GDIPCONST WCHAR *string, INT length, GDIPCONST GpFontFamily *family, INT style, REAL emSize, GDIPCONST RectF *layoutRect, GDIPCONST GpStringFormat *format), (path, string, length, family, style, emSize, layoutRect, format)) \ | |
104 | m(AddPathStringI, (GpPath *path, GDIPCONST WCHAR *string, INT length, GDIPCONST GpFontFamily *family, INT style, REAL emSize, GDIPCONST Rect *layoutRect, GDIPCONST GpStringFormat *format), (path, string, length, family, style, emSize, layoutRect, format)) \ | |
105 | m(AddPathLineI, (GpPath *path, INT x1, INT y1, INT x2, INT y2), (path, x1, y1, x2, y2)) \ | |
106 | m(AddPathLine2I, (GpPath *path, GDIPCONST GpPoint *points, INT count), (path, points, count)) \ | |
107 | m(AddPathArcI, (GpPath *path, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle), (path, x, y, width, height, startAngle, sweepAngle)) \ | |
108 | m(AddPathBezierI, (GpPath *path, INT x1, INT y1, INT x2, INT y2, INT x3, INT y3, INT x4, INT y4), (path, x1, y1, x2, y2, x3, y3, x4, y4)) \ | |
109 | m(AddPathBeziersI, (GpPath *path, GDIPCONST GpPoint *points, INT count), (path, points, count)) \ | |
110 | m(AddPathCurveI, (GpPath *path, GDIPCONST GpPoint *points, INT count), (path, points, count)) \ | |
111 | m(AddPathCurve2I, (GpPath *path, GDIPCONST GpPoint *points, INT count, REAL tension), (path, points, count, tension)) \ | |
112 | m(AddPathCurve3I, (GpPath *path, GDIPCONST GpPoint *points, INT count, INT offset, INT numberOfSegments, REAL tension), (path, points, count, offset, numberOfSegments, tension)) \ | |
113 | m(AddPathClosedCurveI, (GpPath *path, GDIPCONST GpPoint *points, INT count), (path, points, count)) \ | |
114 | m(AddPathClosedCurve2I, (GpPath *path, GDIPCONST GpPoint *points, INT count, REAL tension), (path, points, count, tension)) \ | |
115 | m(AddPathRectangleI, (GpPath *path, INT x, INT y, INT width, INT height), (path, x, y, width, height)) \ | |
116 | m(AddPathRectanglesI, (GpPath *path, GDIPCONST GpRect *rects, INT count), (path, rects, count)) \ | |
117 | m(AddPathEllipseI, (GpPath *path, INT x, INT y, INT width, INT height), (path, x, y, width, height)) \ | |
118 | m(AddPathPieI, (GpPath *path, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle), (path, x, y, width, height, startAngle, sweepAngle)) \ | |
119 | m(AddPathPolygonI, (GpPath *path, GDIPCONST GpPoint *points, INT count), (path, points, count)) \ | |
120 | m(FlattenPath, (GpPath *path, GpMatrix* matrix, REAL flatness), (path, matrix, flatness)) \ | |
121 | m(WindingModeOutline, (GpPath *path, GpMatrix *matrix, REAL flatness), (path, matrix, flatness)) \ | |
122 | m(WidenPath, (GpPath *nativePath, GpPen *pen, GpMatrix *matrix, REAL flatness), (nativePath, pen, matrix, flatness)) \ | |
123 | m(WarpPath, (GpPath *path, GpMatrix* matrix, GDIPCONST GpPointF *points, INT count, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, WarpMode warpMode, REAL flatness), (path, matrix, points, count, srcx, srcy, srcwidth, srcheight, warpMode, flatness)) \ | |
124 | m(TransformPath, (GpPath* path, GpMatrix* matrix), (path, matrix)) \ | |
125 | m(GetPathWorldBounds, (GpPath* path, GpRectF* bounds, GDIPCONST GpMatrix *matrix, GDIPCONST GpPen *pen), (path, bounds, matrix, pen)) \ | |
126 | m(GetPathWorldBoundsI, (GpPath* path, GpRect* bounds, GDIPCONST GpMatrix *matrix, GDIPCONST GpPen *pen), (path, bounds, matrix, pen)) \ | |
127 | m(IsVisiblePathPoint, (GpPath* path, REAL x, REAL y, GpGraphics *graphics, BOOL *result), (path, x, y, graphics, result)) \ | |
128 | m(IsVisiblePathPointI, (GpPath* path, INT x, INT y, GpGraphics *graphics, BOOL *result), (path, x, y, graphics, result)) \ | |
129 | m(IsOutlineVisiblePathPoint, (GpPath* path, REAL x, REAL y, GpPen *pen, GpGraphics *graphics, BOOL *result), (path, x, y, pen, graphics, result)) \ | |
130 | m(IsOutlineVisiblePathPointI, (GpPath* path, INT x, INT y, GpPen *pen, GpGraphics *graphics, BOOL *result), (path, x, y, pen, graphics, result)) \ | |
131 | m(CreatePathIter, (GpPathIterator **iterator, GpPath* path), (iterator, path)) \ | |
132 | m(DeletePathIter, (GpPathIterator *iterator), (iterator)) \ | |
133 | m(PathIterNextSubpath, (GpPathIterator* iterator, INT *resultCount, INT* startIndex, INT* endIndex, BOOL* isClosed), (iterator, resultCount, startIndex, endIndex, isClosed)) \ | |
134 | m(PathIterNextSubpathPath, (GpPathIterator* iterator, INT* resultCount, GpPath* path, BOOL* isClosed), (iterator, resultCount, path, isClosed)) \ | |
135 | m(PathIterNextPathType, (GpPathIterator* iterator, INT* resultCount, BYTE* pathType, INT* startIndex, INT* endIndex), (iterator, resultCount, pathType, startIndex, endIndex)) \ | |
136 | m(PathIterNextMarker, (GpPathIterator* iterator, INT *resultCount, INT* startIndex, INT* endIndex), (iterator, resultCount, startIndex, endIndex)) \ | |
137 | m(PathIterNextMarkerPath, (GpPathIterator* iterator, INT* resultCount, GpPath* path), (iterator, resultCount, path)) \ | |
138 | m(PathIterGetCount, (GpPathIterator* iterator, INT* count), (iterator, count)) \ | |
139 | m(PathIterGetSubpathCount, (GpPathIterator* iterator, INT* count), (iterator, count)) \ | |
140 | m(PathIterIsValid, (GpPathIterator* iterator, BOOL* valid), (iterator, valid)) \ | |
141 | m(PathIterHasCurve, (GpPathIterator* iterator, BOOL* hasCurve), (iterator, hasCurve)) \ | |
142 | m(PathIterRewind, (GpPathIterator* iterator), (iterator)) \ | |
143 | m(PathIterEnumerate, (GpPathIterator* iterator, INT* resultCount, GpPointF *points, BYTE *types, INT count), (iterator, resultCount, points, types, count)) \ | |
144 | m(PathIterCopyData, (GpPathIterator* iterator, INT* resultCount, GpPointF* points, BYTE* types, INT startIndex, INT endIndex), (iterator, resultCount, points, types, startIndex, endIndex)) \ | |
145 | m(CreateMatrix, (GpMatrix **matrix), (matrix)) \ | |
146 | m(CreateMatrix2, (REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy, GpMatrix **matrix), (m11, m12, m21, m22, dx, dy, matrix)) \ | |
147 | m(CreateMatrix3, (GDIPCONST GpRectF *rect, GDIPCONST GpPointF *dstplg, GpMatrix **matrix), (rect, dstplg, matrix)) \ | |
148 | m(CreateMatrix3I, (GDIPCONST GpRect *rect, GDIPCONST GpPoint *dstplg, GpMatrix **matrix), (rect, dstplg, matrix)) \ | |
149 | m(CloneMatrix, (GpMatrix *matrix, GpMatrix **cloneMatrix), (matrix, cloneMatrix)) \ | |
150 | m(DeleteMatrix, (GpMatrix *matrix), (matrix)) \ | |
151 | m(SetMatrixElements, (GpMatrix *matrix, REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy), (matrix, m11, m12, m21, m22, dx, dy)) \ | |
152 | m(MultiplyMatrix, (GpMatrix *matrix, GpMatrix* matrix2, GpMatrixOrder order), (matrix, matrix2, order)) \ | |
153 | m(TranslateMatrix, (GpMatrix *matrix, REAL offsetX, REAL offsetY, GpMatrixOrder order), (matrix, offsetX, offsetY, order)) \ | |
154 | m(ScaleMatrix, (GpMatrix *matrix, REAL scaleX, REAL scaleY, GpMatrixOrder order), (matrix, scaleX, scaleY, order)) \ | |
155 | m(RotateMatrix, (GpMatrix *matrix, REAL angle, GpMatrixOrder order), (matrix, angle, order)) \ | |
156 | m(ShearMatrix, (GpMatrix *matrix, REAL shearX, REAL shearY, GpMatrixOrder order), (matrix, shearX, shearY, order)) \ | |
157 | m(InvertMatrix, (GpMatrix *matrix), (matrix)) \ | |
158 | m(TransformMatrixPoints, (GpMatrix *matrix, GpPointF *pts, INT count), (matrix, pts, count)) \ | |
159 | m(TransformMatrixPointsI, (GpMatrix *matrix, GpPoint *pts, INT count), (matrix, pts, count)) \ | |
160 | m(VectorTransformMatrixPoints, (GpMatrix *matrix, GpPointF *pts, INT count), (matrix, pts, count)) \ | |
161 | m(VectorTransformMatrixPointsI, (GpMatrix *matrix, GpPoint *pts, INT count), (matrix, pts, count)) \ | |
162 | m(GetMatrixElements, (GDIPCONST GpMatrix *matrix, REAL *matrixOut), (matrix, matrixOut)) \ | |
163 | m(IsMatrixInvertible, (GDIPCONST GpMatrix *matrix, BOOL *result), (matrix, result)) \ | |
164 | m(IsMatrixIdentity, (GDIPCONST GpMatrix *matrix, BOOL *result), (matrix, result)) \ | |
165 | m(IsMatrixEqual, (GDIPCONST GpMatrix *matrix, GDIPCONST GpMatrix *matrix2, BOOL *result), (matrix, matrix2, result)) \ | |
166 | m(CreateRegion, (GpRegion **region), (region)) \ | |
167 | m(CreateRegionRect, (GDIPCONST GpRectF *rect, GpRegion **region), (rect, region)) \ | |
168 | m(CreateRegionRectI, (GDIPCONST GpRect *rect, GpRegion **region), (rect, region)) \ | |
169 | m(CreateRegionPath, (GpPath *path, GpRegion **region), (path, region)) \ | |
170 | m(CreateRegionRgnData, (GDIPCONST BYTE *regionData, INT size, GpRegion **region), (regionData, size, region)) \ | |
171 | m(CreateRegionHrgn, (HRGN hRgn, GpRegion **region), (hRgn, region)) \ | |
172 | m(CloneRegion, (GpRegion *region, GpRegion **cloneRegion), (region, cloneRegion)) \ | |
173 | m(DeleteRegion, (GpRegion *region), (region)) \ | |
174 | m(SetInfinite, (GpRegion *region), (region)) \ | |
175 | m(SetEmpty, (GpRegion *region), (region)) \ | |
176 | m(CombineRegionRect, (GpRegion *region, GDIPCONST GpRectF *rect, CombineMode combineMode), (region, rect, combineMode)) \ | |
177 | m(CombineRegionRectI, (GpRegion *region, GDIPCONST GpRect *rect, CombineMode combineMode), (region, rect, combineMode)) \ | |
178 | m(CombineRegionPath, (GpRegion *region, GpPath *path, CombineMode combineMode), (region, path, combineMode)) \ | |
179 | m(CombineRegionRegion, (GpRegion *region, GpRegion *region2, CombineMode combineMode), (region, region2, combineMode)) \ | |
180 | m(TranslateRegion, (GpRegion *region, REAL dx, REAL dy), (region, dx, dy)) \ | |
181 | m(TranslateRegionI, (GpRegion *region, INT dx, INT dy), (region, dx, dy)) \ | |
182 | m(TransformRegion, (GpRegion *region, GpMatrix *matrix), (region, matrix)) \ | |
183 | m(GetRegionBounds, (GpRegion *region, GpGraphics *graphics, GpRectF *rect), (region, graphics, rect)) \ | |
184 | m(GetRegionBoundsI, (GpRegion *region, GpGraphics *graphics, GpRect *rect), (region, graphics, rect)) \ | |
185 | m(GetRegionHRgn, (GpRegion *region, GpGraphics *graphics, HRGN *hRgn), (region, graphics, hRgn)) \ | |
186 | m(IsEmptyRegion, (GpRegion *region, GpGraphics *graphics, BOOL *result), (region, graphics, result)) \ | |
187 | m(IsInfiniteRegion, (GpRegion *region, GpGraphics *graphics, BOOL *result), (region, graphics, result)) \ | |
188 | m(IsEqualRegion, (GpRegion *region, GpRegion *region2, GpGraphics *graphics, BOOL *result), (region, region2, graphics, result)) \ | |
189 | m(GetRegionDataSize, (GpRegion *region, UINT *bufferSize), (region, bufferSize)) \ | |
190 | m(GetRegionData, (GpRegion *region, BYTE *buffer, UINT bufferSize, UINT *sizeFilled), (region, buffer, bufferSize, sizeFilled)) \ | |
191 | m(IsVisibleRegionPoint, (GpRegion *region, REAL x, REAL y, GpGraphics *graphics, BOOL *result), (region, x, y, graphics, result)) \ | |
192 | m(IsVisibleRegionPointI, (GpRegion *region, INT x, INT y, GpGraphics *graphics, BOOL *result), (region, x, y, graphics, result)) \ | |
193 | m(IsVisibleRegionRect, (GpRegion *region, REAL x, REAL y, REAL width, REAL height, GpGraphics *graphics, BOOL *result), (region, x, y, width, height, graphics, result)) \ | |
194 | m(IsVisibleRegionRectI, (GpRegion *region, INT x, INT y, INT width, INT height, GpGraphics *graphics, BOOL *result), (region, x, y, width, height, graphics, result)) \ | |
195 | m(GetRegionScansCount, (GpRegion *region, UINT* count, GpMatrix* matrix), (region, count, matrix)) \ | |
196 | m(GetRegionScans, (GpRegion *region, GpRectF* rects, INT* count, GpMatrix* matrix), (region, rects, count, matrix)) \ | |
197 | m(GetRegionScansI, (GpRegion *region, GpRect* rects, INT* count, GpMatrix* matrix), (region, rects, count, matrix)) \ | |
198 | m(CloneBrush, (GpBrush *brush, GpBrush **cloneBrush), (brush, cloneBrush)) \ | |
199 | m(DeleteBrush, (GpBrush *brush), (brush)) \ | |
200 | m(GetBrushType, (GpBrush *brush, GpBrushType *type), (brush, type)) \ | |
201 | m(CreateHatchBrush, (GpHatchStyle hatchstyle, ARGB forecol, ARGB backcol, GpHatch **brush), (hatchstyle, forecol, backcol, brush)) \ | |
202 | m(GetHatchStyle, (GpHatch *brush, GpHatchStyle *hatchstyle), (brush, hatchstyle)) \ | |
203 | m(GetHatchForegroundColor, (GpHatch *brush, ARGB* forecol), (brush, forecol)) \ | |
204 | m(GetHatchBackgroundColor, (GpHatch *brush, ARGB* backcol), (brush, backcol)) \ | |
205 | m(CreateTexture, (GpImage *image, GpWrapMode wrapmode, GpTexture **texture), (image, wrapmode, texture)) \ | |
206 | m(CreateTexture2, (GpImage *image, GpWrapMode wrapmode, REAL x, REAL y, REAL width, REAL height, GpTexture **texture), (image, wrapmode, x, y, width, height, texture)) \ | |
207 | m(CreateTextureIA, (GpImage *image, GDIPCONST GpImageAttributes *imageAttributes, REAL x, REAL y, REAL width, REAL height, GpTexture **texture), (image, imageAttributes, x, y, width, height, texture)) \ | |
208 | m(CreateTexture2I, (GpImage *image, GpWrapMode wrapmode, INT x, INT y, INT width, INT height, GpTexture **texture), (image, wrapmode, x, y, width, height, texture)) \ | |
209 | m(CreateTextureIAI, (GpImage *image, GDIPCONST GpImageAttributes *imageAttributes, INT x, INT y, INT width, INT height, GpTexture **texture), (image, imageAttributes, x, y, width, height, texture)) \ | |
210 | m(GetTextureTransform, (GpTexture *brush, GpMatrix *matrix), (brush, matrix)) \ | |
211 | m(SetTextureTransform, (GpTexture *brush, GDIPCONST GpMatrix *matrix), (brush, matrix)) \ | |
212 | m(ResetTextureTransform, (GpTexture* brush), (brush)) \ | |
213 | m(MultiplyTextureTransform, (GpTexture* brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order), (brush, matrix, order)) \ | |
214 | m(TranslateTextureTransform, (GpTexture* brush, REAL dx, REAL dy, GpMatrixOrder order), (brush, dx, dy, order)) \ | |
215 | m(ScaleTextureTransform, (GpTexture* brush, REAL sx, REAL sy, GpMatrixOrder order), (brush, sx, sy, order)) \ | |
216 | m(RotateTextureTransform, (GpTexture* brush, REAL angle, GpMatrixOrder order), (brush, angle, order)) \ | |
217 | m(SetTextureWrapMode, (GpTexture *brush, GpWrapMode wrapmode), (brush, wrapmode)) \ | |
218 | m(GetTextureWrapMode, (GpTexture *brush, GpWrapMode *wrapmode), (brush, wrapmode)) \ | |
219 | m(GetTextureImage, (GpTexture *brush, GpImage **image), (brush, image)) \ | |
220 | m(CreateSolidFill, (ARGB color, GpSolidFill **brush), (color, brush)) \ | |
221 | m(SetSolidFillColor, (GpSolidFill *brush, ARGB color), (brush, color)) \ | |
222 | m(GetSolidFillColor, (GpSolidFill *brush, ARGB *color), (brush, color)) \ | |
223 | m(CreateLineBrush, (GDIPCONST GpPointF* point1, GDIPCONST GpPointF* point2, ARGB color1, ARGB color2, GpWrapMode wrapMode, GpLineGradient **lineGradient), (point1, point2, color1, color2, wrapMode, lineGradient)) \ | |
224 | m(CreateLineBrushI, (GDIPCONST GpPoint* point1, GDIPCONST GpPoint* point2, ARGB color1, ARGB color2, GpWrapMode wrapMode, GpLineGradient **lineGradient), (point1, point2, color1, color2, wrapMode, lineGradient)) \ | |
225 | m(CreateLineBrushFromRect, (GDIPCONST GpRectF* rect, ARGB color1, ARGB color2, LinearGradientMode mode, GpWrapMode wrapMode, GpLineGradient **lineGradient), (rect, color1, color2, mode, wrapMode, lineGradient)) \ | |
226 | m(CreateLineBrushFromRectI, (GDIPCONST GpRect* rect, ARGB color1, ARGB color2, LinearGradientMode mode, GpWrapMode wrapMode, GpLineGradient **lineGradient), (rect, color1, color2, mode, wrapMode, lineGradient)) \ | |
227 | m(CreateLineBrushFromRectWithAngle, (GDIPCONST GpRectF* rect, ARGB color1, ARGB color2, REAL angle, BOOL isAngleScalable, GpWrapMode wrapMode, GpLineGradient **lineGradient), (rect, color1, color2, angle, isAngleScalable, wrapMode, lineGradient)) \ | |
228 | m(CreateLineBrushFromRectWithAngleI, (GDIPCONST GpRect* rect, ARGB color1, ARGB color2, REAL angle, BOOL isAngleScalable, GpWrapMode wrapMode, GpLineGradient **lineGradient), (rect, color1, color2, angle, isAngleScalable, wrapMode, lineGradient)) \ | |
229 | m(SetLineColors, (GpLineGradient *brush, ARGB color1, ARGB color2), (brush, color1, color2)) \ | |
230 | m(GetLineColors, (GpLineGradient *brush, ARGB* colors), (brush, colors)) \ | |
231 | m(GetLineRect, (GpLineGradient *brush, GpRectF *rect), (brush, rect)) \ | |
232 | m(GetLineRectI, (GpLineGradient *brush, GpRect *rect), (brush, rect)) \ | |
233 | m(SetLineGammaCorrection, (GpLineGradient *brush, BOOL useGammaCorrection), (brush, useGammaCorrection)) \ | |
234 | m(GetLineGammaCorrection, (GpLineGradient *brush, BOOL *useGammaCorrection), (brush, useGammaCorrection)) \ | |
235 | m(GetLineBlendCount, (GpLineGradient *brush, INT *count), (brush, count)) \ | |
236 | m(GetLineBlend, (GpLineGradient *brush, REAL *blend, REAL* positions, INT count), (brush, blend, positions, count)) \ | |
237 | m(SetLineBlend, (GpLineGradient *brush, GDIPCONST REAL *blend, GDIPCONST REAL* positions, INT count), (brush, blend, positions, count)) \ | |
238 | m(GetLinePresetBlendCount, (GpLineGradient *brush, INT *count), (brush, count)) \ | |
239 | m(GetLinePresetBlend, (GpLineGradient *brush, ARGB *blend, REAL* positions, INT count), (brush, blend, positions, count)) \ | |
240 | m(SetLinePresetBlend, (GpLineGradient *brush, GDIPCONST ARGB *blend, GDIPCONST REAL* positions, INT count), (brush, blend, positions, count)) \ | |
241 | m(SetLineSigmaBlend, (GpLineGradient *brush, REAL focus, REAL scale), (brush, focus, scale)) \ | |
242 | m(SetLineLinearBlend, (GpLineGradient *brush, REAL focus, REAL scale), (brush, focus, scale)) \ | |
243 | m(SetLineWrapMode, (GpLineGradient *brush, GpWrapMode wrapmode), (brush, wrapmode)) \ | |
244 | m(GetLineWrapMode, (GpLineGradient *brush, GpWrapMode *wrapmode), (brush, wrapmode)) \ | |
245 | m(GetLineTransform, (GpLineGradient *brush, GpMatrix *matrix), (brush, matrix)) \ | |
246 | m(SetLineTransform, (GpLineGradient *brush, GDIPCONST GpMatrix *matrix), (brush, matrix)) \ | |
247 | m(ResetLineTransform, (GpLineGradient* brush), (brush)) \ | |
248 | m(MultiplyLineTransform, (GpLineGradient* brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order), (brush, matrix, order)) \ | |
249 | m(TranslateLineTransform, (GpLineGradient* brush, REAL dx, REAL dy, GpMatrixOrder order), (brush, dx, dy, order)) \ | |
250 | m(ScaleLineTransform, (GpLineGradient* brush, REAL sx, REAL sy, GpMatrixOrder order), (brush, sx, sy, order)) \ | |
251 | m(RotateLineTransform, (GpLineGradient* brush, REAL angle, GpMatrixOrder order), (brush, angle, order)) \ | |
252 | m(CreatePathGradient, (GDIPCONST GpPointF* points, INT count, GpWrapMode wrapMode, GpPathGradient **polyGradient), (points, count, wrapMode, polyGradient)) \ | |
253 | m(CreatePathGradientI, (GDIPCONST GpPoint* points, INT count, GpWrapMode wrapMode, GpPathGradient **polyGradient), (points, count, wrapMode, polyGradient)) \ | |
254 | m(CreatePathGradientFromPath, (GDIPCONST GpPath* path, GpPathGradient **polyGradient), (path, polyGradient)) \ | |
255 | m(GetPathGradientCenterColor, (GpPathGradient *brush, ARGB* colors), (brush, colors)) \ | |
256 | m(SetPathGradientCenterColor, (GpPathGradient *brush, ARGB colors), (brush, colors)) \ | |
257 | m(GetPathGradientSurroundColorsWithCount, (GpPathGradient *brush, ARGB* color, INT* count), (brush, color, count)) \ | |
258 | m(SetPathGradientSurroundColorsWithCount, (GpPathGradient *brush, GDIPCONST ARGB* color, INT* count), (brush, color, count)) \ | |
259 | m(GetPathGradientPath, (GpPathGradient *brush, GpPath *path), (brush, path)) \ | |
260 | m(SetPathGradientPath, (GpPathGradient *brush, GDIPCONST GpPath *path), (brush, path)) \ | |
261 | m(GetPathGradientCenterPoint, (GpPathGradient *brush, GpPointF* points), (brush, points)) \ | |
262 | m(GetPathGradientCenterPointI, (GpPathGradient *brush, GpPoint* points), (brush, points)) \ | |
263 | m(SetPathGradientCenterPoint, (GpPathGradient *brush, GDIPCONST GpPointF* points), (brush, points)) \ | |
264 | m(SetPathGradientCenterPointI, (GpPathGradient *brush, GDIPCONST GpPoint* points), (brush, points)) \ | |
265 | m(GetPathGradientRect, (GpPathGradient *brush, GpRectF *rect), (brush, rect)) \ | |
266 | m(GetPathGradientRectI, (GpPathGradient *brush, GpRect *rect), (brush, rect)) \ | |
267 | m(GetPathGradientPointCount, (GpPathGradient *brush, INT* count), (brush, count)) \ | |
268 | m(GetPathGradientSurroundColorCount, (GpPathGradient *brush, INT* count), (brush, count)) \ | |
269 | m(SetPathGradientGammaCorrection, (GpPathGradient *brush, BOOL useGammaCorrection), (brush, useGammaCorrection)) \ | |
270 | m(GetPathGradientGammaCorrection, (GpPathGradient *brush, BOOL *useGammaCorrection), (brush, useGammaCorrection)) \ | |
271 | m(GetPathGradientBlendCount, (GpPathGradient *brush, INT *count), (brush, count)) \ | |
272 | m(GetPathGradientBlend, (GpPathGradient *brush, REAL *blend, REAL *positions, INT count), (brush, blend, positions, count)) \ | |
273 | m(SetPathGradientBlend, (GpPathGradient *brush, GDIPCONST REAL *blend, GDIPCONST REAL *positions, INT count), (brush, blend, positions, count)) \ | |
274 | m(GetPathGradientPresetBlendCount, (GpPathGradient *brush, INT *count), (brush, count)) \ | |
275 | m(GetPathGradientPresetBlend, (GpPathGradient *brush, ARGB *blend, REAL* positions, INT count), (brush, blend, positions, count)) \ | |
276 | m(SetPathGradientPresetBlend, (GpPathGradient *brush, GDIPCONST ARGB *blend, GDIPCONST REAL* positions, INT count), (brush, blend, positions, count)) \ | |
277 | m(SetPathGradientSigmaBlend, (GpPathGradient *brush, REAL focus, REAL scale), (brush, focus, scale)) \ | |
278 | m(SetPathGradientLinearBlend, (GpPathGradient *brush, REAL focus, REAL scale), (brush, focus, scale)) \ | |
279 | m(GetPathGradientWrapMode, (GpPathGradient *brush, GpWrapMode *wrapmode), (brush, wrapmode)) \ | |
280 | m(SetPathGradientWrapMode, (GpPathGradient *brush, GpWrapMode wrapmode), (brush, wrapmode)) \ | |
281 | m(GetPathGradientTransform, (GpPathGradient *brush, GpMatrix *matrix), (brush, matrix)) \ | |
282 | m(SetPathGradientTransform, (GpPathGradient *brush, GpMatrix *matrix), (brush, matrix)) \ | |
283 | m(ResetPathGradientTransform, (GpPathGradient* brush), (brush)) \ | |
284 | m(MultiplyPathGradientTransform, (GpPathGradient* brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order), (brush, matrix, order)) \ | |
285 | m(TranslatePathGradientTransform, (GpPathGradient* brush, REAL dx, REAL dy, GpMatrixOrder order), (brush, dx, dy, order)) \ | |
286 | m(ScalePathGradientTransform, (GpPathGradient* brush, REAL sx, REAL sy, GpMatrixOrder order), (brush, sx, sy, order)) \ | |
287 | m(RotatePathGradientTransform, (GpPathGradient* brush, REAL angle, GpMatrixOrder order), (brush, angle, order)) \ | |
288 | m(GetPathGradientFocusScales, (GpPathGradient *brush, REAL* xScale, REAL* yScale), (brush, xScale, yScale)) \ | |
289 | m(SetPathGradientFocusScales, (GpPathGradient *brush, REAL xScale, REAL yScale), (brush, xScale, yScale)) \ | |
290 | m(CreatePen1, (ARGB color, REAL width, GpUnit unit, GpPen **pen), (color, width, unit, pen)) \ | |
291 | m(CreatePen2, (GpBrush *brush, REAL width, GpUnit unit, GpPen **pen), (brush, width, unit, pen)) \ | |
292 | m(ClonePen, (GpPen *pen, GpPen **clonepen), (pen, clonepen)) \ | |
293 | m(DeletePen, (GpPen *pen), (pen)) \ | |
294 | m(SetPenWidth, (GpPen *pen, REAL width), (pen, width)) \ | |
295 | m(GetPenWidth, (GpPen *pen, REAL *width), (pen, width)) \ | |
296 | m(SetPenUnit, (GpPen *pen, GpUnit unit), (pen, unit)) \ | |
297 | m(GetPenUnit, (GpPen *pen, GpUnit *unit), (pen, unit)) \ | |
298 | m(SetPenLineCap197819, (GpPen *pen, GpLineCap startCap, GpLineCap endCap, GpDashCap dashCap), (pen, startCap, endCap, dashCap)) \ | |
299 | m(SetPenStartCap, (GpPen *pen, GpLineCap startCap), (pen, startCap)) \ | |
300 | m(SetPenEndCap, (GpPen *pen, GpLineCap endCap), (pen, endCap)) \ | |
301 | m(SetPenDashCap197819, (GpPen *pen, GpDashCap dashCap), (pen, dashCap)) \ | |
302 | m(GetPenStartCap, (GpPen *pen, GpLineCap *startCap), (pen, startCap)) \ | |
303 | m(GetPenEndCap, (GpPen *pen, GpLineCap *endCap), (pen, endCap)) \ | |
304 | m(GetPenDashCap197819, (GpPen *pen, GpDashCap *dashCap), (pen, dashCap)) \ | |
305 | m(SetPenLineJoin, (GpPen *pen, GpLineJoin lineJoin), (pen, lineJoin)) \ | |
306 | m(GetPenLineJoin, (GpPen *pen, GpLineJoin *lineJoin), (pen, lineJoin)) \ | |
307 | m(SetPenCustomStartCap, (GpPen *pen, GpCustomLineCap* customCap), (pen, customCap)) \ | |
308 | m(GetPenCustomStartCap, (GpPen *pen, GpCustomLineCap** customCap), (pen, customCap)) \ | |
309 | m(SetPenCustomEndCap, (GpPen *pen, GpCustomLineCap* customCap), (pen, customCap)) \ | |
310 | m(GetPenCustomEndCap, (GpPen *pen, GpCustomLineCap** customCap), (pen, customCap)) \ | |
311 | m(SetPenMiterLimit, (GpPen *pen, REAL miterLimit), (pen, miterLimit)) \ | |
312 | m(GetPenMiterLimit, (GpPen *pen, REAL *miterLimit), (pen, miterLimit)) \ | |
313 | m(SetPenMode, (GpPen *pen, GpPenAlignment penMode), (pen, penMode)) \ | |
314 | m(GetPenMode, (GpPen *pen, GpPenAlignment *penMode), (pen, penMode)) \ | |
315 | m(SetPenTransform, (GpPen *pen, GpMatrix *matrix), (pen, matrix)) \ | |
316 | m(GetPenTransform, (GpPen *pen, GpMatrix *matrix), (pen, matrix)) \ | |
317 | m(ResetPenTransform, (GpPen *pen), (pen)) \ | |
318 | m(MultiplyPenTransform, (GpPen *pen, GDIPCONST GpMatrix *matrix, GpMatrixOrder order), (pen, matrix, order)) \ | |
319 | m(TranslatePenTransform, (GpPen *pen, REAL dx, REAL dy, GpMatrixOrder order), (pen, dx, dy, order)) \ | |
320 | m(ScalePenTransform, (GpPen *pen, REAL sx, REAL sy, GpMatrixOrder order), (pen, sx, sy, order)) \ | |
321 | m(RotatePenTransform, (GpPen *pen, REAL angle, GpMatrixOrder order), (pen, angle, order)) \ | |
322 | m(SetPenColor, (GpPen *pen, ARGB argb), (pen, argb)) \ | |
323 | m(GetPenColor, (GpPen *pen, ARGB *argb), (pen, argb)) \ | |
324 | m(SetPenBrushFill, (GpPen *pen, GpBrush *brush), (pen, brush)) \ | |
325 | m(GetPenBrushFill, (GpPen *pen, GpBrush **brush), (pen, brush)) \ | |
326 | m(GetPenFillType, (GpPen *pen, GpPenType* type), (pen, type)) \ | |
327 | m(GetPenDashStyle, (GpPen *pen, GpDashStyle *dashstyle), (pen, dashstyle)) \ | |
328 | m(SetPenDashStyle, (GpPen *pen, GpDashStyle dashstyle), (pen, dashstyle)) \ | |
329 | m(GetPenDashOffset, (GpPen *pen, REAL *offset), (pen, offset)) \ | |
330 | m(SetPenDashOffset, (GpPen *pen, REAL offset), (pen, offset)) \ | |
331 | m(GetPenDashCount, (GpPen *pen, INT *count), (pen, count)) \ | |
332 | m(SetPenDashArray, (GpPen *pen, GDIPCONST REAL *dash, INT count), (pen, dash, count)) \ | |
333 | m(GetPenDashArray, (GpPen *pen, REAL *dash, INT count), (pen, dash, count)) \ | |
334 | m(GetPenCompoundCount, (GpPen *pen, INT *count), (pen, count)) \ | |
335 | m(SetPenCompoundArray, (GpPen *pen, GDIPCONST REAL *dash, INT count), (pen, dash, count)) \ | |
336 | m(GetPenCompoundArray, (GpPen *pen, REAL *dash, INT count), (pen, dash, count)) \ | |
337 | m(CreateCustomLineCap, (GpPath* fillPath, GpPath* strokePath, GpLineCap baseCap, REAL baseInset, GpCustomLineCap **customCap), (fillPath, strokePath, baseCap, baseInset, customCap)) \ | |
338 | m(DeleteCustomLineCap, (GpCustomLineCap* customCap), (customCap)) \ | |
339 | m(CloneCustomLineCap, (GpCustomLineCap* customCap, GpCustomLineCap** clonedCap), (customCap, clonedCap)) \ | |
340 | m(GetCustomLineCapType, (GpCustomLineCap* customCap, CustomLineCapType* capType), (customCap, capType)) \ | |
341 | m(SetCustomLineCapStrokeCaps, (GpCustomLineCap* customCap, GpLineCap startCap, GpLineCap endCap), (customCap, startCap, endCap)) \ | |
342 | m(GetCustomLineCapStrokeCaps, (GpCustomLineCap* customCap, GpLineCap* startCap, GpLineCap* endCap), (customCap, startCap, endCap)) \ | |
343 | m(SetCustomLineCapStrokeJoin, (GpCustomLineCap* customCap, GpLineJoin lineJoin), (customCap, lineJoin)) \ | |
344 | m(GetCustomLineCapStrokeJoin, (GpCustomLineCap* customCap, GpLineJoin* lineJoin), (customCap, lineJoin)) \ | |
345 | m(SetCustomLineCapBaseCap, (GpCustomLineCap* customCap, GpLineCap baseCap), (customCap, baseCap)) \ | |
346 | m(GetCustomLineCapBaseCap, (GpCustomLineCap* customCap, GpLineCap* baseCap), (customCap, baseCap)) \ | |
347 | m(SetCustomLineCapBaseInset, (GpCustomLineCap* customCap, REAL inset), (customCap, inset)) \ | |
348 | m(GetCustomLineCapBaseInset, (GpCustomLineCap* customCap, REAL* inset), (customCap, inset)) \ | |
349 | m(SetCustomLineCapWidthScale, (GpCustomLineCap* customCap, REAL widthScale), (customCap, widthScale)) \ | |
350 | m(GetCustomLineCapWidthScale, (GpCustomLineCap* customCap, REAL* widthScale), (customCap, widthScale)) \ | |
351 | m(CreateAdjustableArrowCap, (REAL height, REAL width, BOOL isFilled, GpAdjustableArrowCap **cap), (height, width, isFilled, cap)) \ | |
352 | m(SetAdjustableArrowCapHeight, (GpAdjustableArrowCap* cap, REAL height), (cap, height)) \ | |
353 | m(GetAdjustableArrowCapHeight, (GpAdjustableArrowCap* cap, REAL* height), (cap, height)) \ | |
354 | m(SetAdjustableArrowCapWidth, (GpAdjustableArrowCap* cap, REAL width), (cap, width)) \ | |
355 | m(GetAdjustableArrowCapWidth, (GpAdjustableArrowCap* cap, REAL* width), (cap, width)) \ | |
356 | m(SetAdjustableArrowCapMiddleInset, (GpAdjustableArrowCap* cap, REAL middleInset), (cap, middleInset)) \ | |
357 | m(GetAdjustableArrowCapMiddleInset, (GpAdjustableArrowCap* cap, REAL* middleInset), (cap, middleInset)) \ | |
358 | m(SetAdjustableArrowCapFillState, (GpAdjustableArrowCap* cap, BOOL fillState), (cap, fillState)) \ | |
359 | m(GetAdjustableArrowCapFillState, (GpAdjustableArrowCap* cap, BOOL* fillState), (cap, fillState)) \ | |
360 | m(LoadImageFromStream, (IStream* stream, GpImage **image), (stream, image)) \ | |
361 | m(LoadImageFromFile, (GDIPCONST WCHAR* filename, GpImage **image), (filename, image)) \ | |
362 | m(LoadImageFromStreamICM, (IStream* stream, GpImage **image), (stream, image)) \ | |
363 | m(LoadImageFromFileICM, (GDIPCONST WCHAR* filename, GpImage **image), (filename, image)) \ | |
364 | m(CloneImage, (GpImage *image, GpImage **cloneImage), (image, cloneImage)) \ | |
365 | m(DisposeImage, (GpImage *image), (image)) \ | |
366 | m(SaveImageToFile, (GpImage *image, GDIPCONST WCHAR* filename, GDIPCONST CLSID* clsidEncoder, GDIPCONST EncoderParameters* encoderParams), (image, filename, clsidEncoder, encoderParams)) \ | |
367 | m(SaveImageToStream, (GpImage *image, IStream* stream, GDIPCONST CLSID* clsidEncoder, GDIPCONST EncoderParameters* encoderParams), (image, stream, clsidEncoder, encoderParams)) \ | |
368 | m(SaveAdd, (GpImage *image, GDIPCONST EncoderParameters* encoderParams), (image, encoderParams)) \ | |
369 | m(SaveAddImage, (GpImage *image, GpImage* newImage, GDIPCONST EncoderParameters* encoderParams), (image, newImage, encoderParams)) \ | |
370 | m(GetImageGraphicsContext, (GpImage *image, GpGraphics **graphics), (image, graphics)) \ | |
371 | m(GetImageBounds, (GpImage *image, GpRectF *srcRect, GpUnit *srcUnit), (image, srcRect, srcUnit)) \ | |
372 | m(GetImageDimension, (GpImage *image, REAL *width, REAL *height), (image, width, height)) \ | |
373 | m(GetImageType, (GpImage *image, ImageType *type), (image, type)) \ | |
374 | m(GetImageWidth, (GpImage *image, UINT *width), (image, width)) \ | |
375 | m(GetImageHeight, (GpImage *image, UINT *height), (image, height)) \ | |
376 | m(GetImageHorizontalResolution, (GpImage *image, REAL *resolution), (image, resolution)) \ | |
377 | m(GetImageVerticalResolution, (GpImage *image, REAL *resolution), (image, resolution)) \ | |
378 | m(GetImageFlags, (GpImage *image, UINT *flags), (image, flags)) \ | |
379 | m(GetImageRawFormat, (GpImage *image, GUID *format), (image, format)) \ | |
380 | m(GetImagePixelFormat, (GpImage *image, PixelFormat *format), (image, format)) \ | |
381 | m(GetImageThumbnail, (GpImage *image, UINT thumbWidth, UINT thumbHeight, GpImage **thumbImage, GetThumbnailImageAbort callback, VOID *callbackData), (image, thumbWidth, thumbHeight, thumbImage, callback, callbackData)) \ | |
382 | m(GetEncoderParameterListSize, (GpImage *image, GDIPCONST CLSID* clsidEncoder, UINT* size), (image, clsidEncoder, size)) \ | |
383 | m(GetEncoderParameterList, (GpImage *image, GDIPCONST CLSID* clsidEncoder, UINT size, EncoderParameters* buffer), (image, clsidEncoder, size, buffer)) \ | |
384 | m(ImageGetFrameDimensionsCount, (GpImage* image, UINT* count), (image, count)) \ | |
385 | m(ImageGetFrameDimensionsList, (GpImage* image, GUID* dimensionIDs, UINT count), (image, dimensionIDs, count)) \ | |
386 | m(ImageGetFrameCount, (GpImage *image, GDIPCONST GUID* dimensionID, UINT* count), (image, dimensionID, count)) \ | |
387 | m(ImageSelectActiveFrame, (GpImage *image, GDIPCONST GUID* dimensionID, UINT frameIndex), (image, dimensionID, frameIndex)) \ | |
388 | m(ImageRotateFlip, (GpImage *image, RotateFlipType rfType), (image, rfType)) \ | |
389 | m(GetImagePalette, (GpImage *image, ColorPalette *palette, INT size), (image, palette, size)) \ | |
390 | m(SetImagePalette, (GpImage *image, GDIPCONST ColorPalette *palette), (image, palette)) \ | |
391 | m(GetImagePaletteSize, (GpImage *image, INT *size), (image, size)) \ | |
392 | m(GetPropertyCount, (GpImage *image, UINT* numOfProperty), (image, numOfProperty)) \ | |
393 | m(GetPropertyIdList, (GpImage *image, UINT numOfProperty, PROPID* list), (image, numOfProperty, list)) \ | |
394 | m(GetPropertyItemSize, (GpImage *image, PROPID propId, UINT* size), (image, propId, size)) \ | |
395 | m(GetPropertyItem, (GpImage *image, PROPID propId,UINT propSize, PropertyItem* buffer), (image, propId, propSize, buffer)) \ | |
396 | m(GetPropertySize, (GpImage *image, UINT* totalBufferSize, UINT* numProperties), (image, totalBufferSize, numProperties)) \ | |
397 | m(GetAllPropertyItems, (GpImage *image, UINT totalBufferSize, UINT numProperties, PropertyItem* allItems), (image, totalBufferSize, numProperties, allItems)) \ | |
398 | m(RemovePropertyItem, (GpImage *image, PROPID propId), (image, propId)) \ | |
399 | m(SetPropertyItem, (GpImage *image, GDIPCONST PropertyItem* item), (image, item)) \ | |
400 | m(ImageForceValidation, (GpImage *image), (image)) \ | |
401 | m(CreateBitmapFromStream, (IStream* stream, GpBitmap **bitmap), (stream, bitmap)) \ | |
402 | m(CreateBitmapFromFile, (GDIPCONST WCHAR* filename, GpBitmap **bitmap), (filename, bitmap)) \ | |
403 | m(CreateBitmapFromStreamICM, (IStream* stream, GpBitmap **bitmap), (stream, bitmap)) \ | |
404 | m(CreateBitmapFromFileICM, (GDIPCONST WCHAR* filename, GpBitmap **bitmap), (filename, bitmap)) \ | |
405 | m(CreateBitmapFromScan0, (INT width, INT height, INT stride, PixelFormat format, BYTE* scan0, GpBitmap** bitmap), (width, height, stride, format, scan0, bitmap)) \ | |
406 | m(CreateBitmapFromGraphics, (INT width, INT height, GpGraphics* target, GpBitmap** bitmap), (width, height, target, bitmap)) \ | |
407 | m(CreateBitmapFromDirectDrawSurface, (IDirectDrawSurface7* surface, GpBitmap** bitmap), (surface, bitmap)) \ | |
408 | m(CreateBitmapFromGdiDib, (GDIPCONST BITMAPINFO* gdiBitmapInfo, VOID* gdiBitmapData, GpBitmap** bitmap), (gdiBitmapInfo, gdiBitmapData, bitmap)) \ | |
409 | m(CreateBitmapFromHBITMAP, (HBITMAP hbm, HPALETTE hpal, GpBitmap** bitmap), (hbm, hpal, bitmap)) \ | |
410 | m(CreateHBITMAPFromBitmap, (GpBitmap* bitmap, HBITMAP* hbmReturn, ARGB background), (bitmap, hbmReturn, background)) \ | |
411 | m(CreateBitmapFromHICON, (HICON hicon, GpBitmap** bitmap), (hicon, bitmap)) \ | |
412 | m(CreateHICONFromBitmap, (GpBitmap* bitmap, HICON* hbmReturn), (bitmap, hbmReturn)) \ | |
413 | m(CreateBitmapFromResource, (HINSTANCE hInstance, GDIPCONST WCHAR* lpBitmapName, GpBitmap** bitmap), (hInstance, lpBitmapName, bitmap)) \ | |
414 | m(CloneBitmapArea, (REAL x, REAL y, REAL width, REAL height, PixelFormat format, GpBitmap *srcBitmap, GpBitmap **dstBitmap), (x, y, width, height, format, srcBitmap, dstBitmap)) \ | |
415 | m(CloneBitmapAreaI, (INT x, INT y, INT width, INT height, PixelFormat format, GpBitmap *srcBitmap, GpBitmap **dstBitmap), (x, y, width, height, format, srcBitmap, dstBitmap)) \ | |
416 | m(BitmapLockBits, (GpBitmap* bitmap, GDIPCONST GpRect* rect, UINT flags, PixelFormat format, BitmapData* lockedBitmapData), (bitmap, rect, flags, format, lockedBitmapData)) \ | |
417 | m(BitmapUnlockBits, (GpBitmap* bitmap, BitmapData* lockedBitmapData), (bitmap, lockedBitmapData)) \ | |
418 | m(BitmapGetPixel, (GpBitmap* bitmap, INT x, INT y, ARGB *color), (bitmap, x, y, color)) \ | |
419 | m(BitmapSetPixel, (GpBitmap* bitmap, INT x, INT y, ARGB color), (bitmap, x, y, color)) \ | |
420 | m(BitmapSetResolution, (GpBitmap* bitmap, REAL xdpi, REAL ydpi), (bitmap, xdpi, ydpi)) \ | |
421 | m(CreateImageAttributes, (GpImageAttributes **imageattr), (imageattr)) \ | |
422 | m(CloneImageAttributes, (GDIPCONST GpImageAttributes *imageattr, GpImageAttributes **cloneImageattr), (imageattr, cloneImageattr)) \ | |
423 | m(DisposeImageAttributes, (GpImageAttributes *imageattr), (imageattr)) \ | |
424 | m(SetImageAttributesToIdentity, (GpImageAttributes *imageattr, ColorAdjustType type), (imageattr, type)) \ | |
425 | m(ResetImageAttributes, (GpImageAttributes *imageattr, ColorAdjustType type), (imageattr, type)) \ | |
426 | m(SetImageAttributesColorMatrix, (GpImageAttributes *imageattr, ColorAdjustType type, BOOL enableFlag, GDIPCONST ColorMatrix* colorMatrix, GDIPCONST ColorMatrix* grayMatrix, ColorMatrixFlags flags), (imageattr, type, enableFlag, colorMatrix, grayMatrix, flags)) \ | |
427 | m(SetImageAttributesThreshold, (GpImageAttributes *imageattr, ColorAdjustType type, BOOL enableFlag, REAL threshold), (imageattr, type, enableFlag, threshold)) \ | |
428 | m(SetImageAttributesGamma, (GpImageAttributes *imageattr, ColorAdjustType type, BOOL enableFlag, REAL gamma), (imageattr, type, enableFlag, gamma)) \ | |
429 | m(SetImageAttributesNoOp, (GpImageAttributes *imageattr, ColorAdjustType type, BOOL enableFlag), (imageattr, type, enableFlag)) \ | |
430 | m(SetImageAttributesColorKeys, (GpImageAttributes *imageattr, ColorAdjustType type, BOOL enableFlag, ARGB colorLow, ARGB colorHigh), (imageattr, type, enableFlag, colorLow, colorHigh)) \ | |
431 | m(SetImageAttributesOutputChannel, (GpImageAttributes *imageattr, ColorAdjustType type, BOOL enableFlag, ColorChannelFlags channelFlags), (imageattr, type, enableFlag, channelFlags)) \ | |
432 | m(SetImageAttributesOutputChannelColorProfile, (GpImageAttributes *imageattr, ColorAdjustType type, BOOL enableFlag, GDIPCONST WCHAR *colorProfileFilename), (imageattr, type, enableFlag, colorProfileFilename)) \ | |
433 | m(SetImageAttributesRemapTable, (GpImageAttributes *imageattr, ColorAdjustType type, BOOL enableFlag, UINT mapSize, GDIPCONST ColorMap *map), (imageattr, type, enableFlag, mapSize, map)) \ | |
434 | m(SetImageAttributesWrapMode, (GpImageAttributes *imageAttr, WrapMode wrap, ARGB argb, BOOL clamp), (imageAttr, wrap, argb, clamp)) \ | |
435 | m(GetImageAttributesAdjustedPalette, (GpImageAttributes *imageAttr, ColorPalette *colorPalette, ColorAdjustType colorAdjustType), (imageAttr, colorPalette, colorAdjustType)) \ | |
436 | m(Flush, (GpGraphics *graphics, GpFlushIntention intention), (graphics, intention)) \ | |
437 | m(CreateFromHDC, (HDC hdc, GpGraphics **graphics), (hdc, graphics)) \ | |
438 | m(CreateFromHDC2, (HDC hdc, HANDLE hDevice, GpGraphics **graphics), (hdc, hDevice, graphics)) \ | |
439 | m(CreateFromHWND, (HWND hwnd, GpGraphics **graphics), (hwnd, graphics)) \ | |
440 | m(CreateFromHWNDICM, (HWND hwnd, GpGraphics **graphics), (hwnd, graphics)) \ | |
441 | m(DeleteGraphics, (GpGraphics *graphics), (graphics)) \ | |
442 | m(GetDC, (GpGraphics* graphics, HDC *hdc), (graphics, hdc)) \ | |
443 | m(ReleaseDC, (GpGraphics* graphics, HDC hdc), (graphics, hdc)) \ | |
444 | m(SetCompositingMode, (GpGraphics *graphics, CompositingMode compositingMode), (graphics, compositingMode)) \ | |
445 | m(GetCompositingMode, (GpGraphics *graphics, CompositingMode *compositingMode), (graphics, compositingMode)) \ | |
446 | m(SetRenderingOrigin, (GpGraphics *graphics, INT x, INT y), (graphics, x, y)) \ | |
447 | m(GetRenderingOrigin, (GpGraphics *graphics, INT *x, INT *y), (graphics, x, y)) \ | |
448 | m(SetCompositingQuality, (GpGraphics *graphics, CompositingQuality compositingQuality), (graphics, compositingQuality)) \ | |
449 | m(GetCompositingQuality, (GpGraphics *graphics, CompositingQuality *compositingQuality), (graphics, compositingQuality)) \ | |
450 | m(SetSmoothingMode, (GpGraphics *graphics, SmoothingMode smoothingMode), (graphics, smoothingMode)) \ | |
451 | m(GetSmoothingMode, (GpGraphics *graphics, SmoothingMode *smoothingMode), (graphics, smoothingMode)) \ | |
452 | m(SetPixelOffsetMode, (GpGraphics* graphics, PixelOffsetMode pixelOffsetMode), (graphics, pixelOffsetMode)) \ | |
453 | m(GetPixelOffsetMode, (GpGraphics *graphics, PixelOffsetMode *pixelOffsetMode), (graphics, pixelOffsetMode)) \ | |
454 | m(SetTextRenderingHint, (GpGraphics *graphics, TextRenderingHint mode), (graphics, mode)) \ | |
455 | m(GetTextRenderingHint, (GpGraphics *graphics, TextRenderingHint *mode), (graphics, mode)) \ | |
456 | m(SetTextContrast, (GpGraphics *graphics, UINT contrast), (graphics, contrast)) \ | |
457 | m(GetTextContrast, (GpGraphics *graphics, UINT *contrast), (graphics, contrast)) \ | |
458 | m(SetInterpolationMode, (GpGraphics *graphics, InterpolationMode interpolationMode), (graphics, interpolationMode)) \ | |
459 | m(GetInterpolationMode, (GpGraphics *graphics, InterpolationMode *interpolationMode), (graphics, interpolationMode)) \ | |
460 | m(SetWorldTransform, (GpGraphics *graphics, GpMatrix *matrix), (graphics, matrix)) \ | |
461 | m(ResetWorldTransform, (GpGraphics *graphics), (graphics)) \ | |
462 | m(MultiplyWorldTransform, (GpGraphics *graphics, GDIPCONST GpMatrix *matrix, GpMatrixOrder order), (graphics, matrix, order)) \ | |
463 | m(TranslateWorldTransform, (GpGraphics *graphics, REAL dx, REAL dy, GpMatrixOrder order), (graphics, dx, dy, order)) \ | |
464 | m(ScaleWorldTransform, (GpGraphics *graphics, REAL sx, REAL sy, GpMatrixOrder order), (graphics, sx, sy, order)) \ | |
465 | m(RotateWorldTransform, (GpGraphics *graphics, REAL angle, GpMatrixOrder order), (graphics, angle, order)) \ | |
466 | m(GetWorldTransform, (GpGraphics *graphics, GpMatrix *matrix), (graphics, matrix)) \ | |
467 | m(ResetPageTransform, (GpGraphics *graphics), (graphics)) \ | |
468 | m(GetPageUnit, (GpGraphics *graphics, GpUnit *unit), (graphics, unit)) \ | |
469 | m(GetPageScale, (GpGraphics *graphics, REAL *scale), (graphics, scale)) \ | |
470 | m(SetPageUnit, (GpGraphics *graphics, GpUnit unit), (graphics, unit)) \ | |
471 | m(SetPageScale, (GpGraphics *graphics, REAL scale), (graphics, scale)) \ | |
472 | m(GetDpiX, (GpGraphics *graphics, REAL* dpi), (graphics, dpi)) \ | |
473 | m(GetDpiY, (GpGraphics *graphics, REAL* dpi), (graphics, dpi)) \ | |
474 | m(TransformPoints, (GpGraphics *graphics, GpCoordinateSpace destSpace, GpCoordinateSpace srcSpace, GpPointF *points, INT count), (graphics, destSpace, srcSpace, points, count)) \ | |
475 | m(TransformPointsI, (GpGraphics *graphics, GpCoordinateSpace destSpace, GpCoordinateSpace srcSpace, GpPoint *points, INT count), (graphics, destSpace, srcSpace, points, count)) \ | |
476 | m(GetNearestColor, (GpGraphics *graphics, ARGB* argb), (graphics, argb)) \ | |
477 | m(DrawLine, (GpGraphics *graphics, GpPen *pen, REAL x1, REAL y1, REAL x2, REAL y2), (graphics, pen, x1, y1, x2, y2)) \ | |
478 | m(DrawLineI, (GpGraphics *graphics, GpPen *pen, INT x1, INT y1, INT x2, INT y2), (graphics, pen, x1, y1, x2, y2)) \ | |
479 | m(DrawLines, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count), (graphics, pen, points, count)) \ | |
480 | m(DrawLinesI, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count), (graphics, pen, points, count)) \ | |
481 | m(DrawArc, (GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle), (graphics, pen, x, y, width, height, startAngle, sweepAngle)) \ | |
482 | m(DrawArcI, (GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle), (graphics, pen, x, y, width, height, startAngle, sweepAngle)) \ | |
483 | m(DrawBezier, (GpGraphics *graphics, GpPen *pen, REAL x1, REAL y1, REAL x2, REAL y2, REAL x3, REAL y3, REAL x4, REAL y4), (graphics, pen, x1, y1, x2, y2, x3, y3, x4, y4)) \ | |
484 | m(DrawBezierI, (GpGraphics *graphics, GpPen *pen, INT x1, INT y1, INT x2, INT y2, INT x3, INT y3, INT x4, INT y4), (graphics, pen, x1, y1, x2, y2, x3, y3, x4, y4)) \ | |
485 | m(DrawBeziers, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count), (graphics, pen, points, count)) \ | |
486 | m(DrawBeziersI, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count), (graphics, pen, points, count)) \ | |
487 | m(DrawRectangle, (GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height), (graphics, pen, x, y, width, height)) \ | |
488 | m(DrawRectangleI, (GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height), (graphics, pen, x, y, width, height)) \ | |
489 | m(DrawRectangles, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpRectF *rects, INT count), (graphics, pen, rects, count)) \ | |
490 | m(DrawRectanglesI, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpRect *rects, INT count), (graphics, pen, rects, count)) \ | |
491 | m(DrawEllipse, (GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height), (graphics, pen, x, y, width, height)) \ | |
492 | m(DrawEllipseI, (GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height), (graphics, pen, x, y, width, height)) \ | |
493 | m(DrawPie, (GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle), (graphics, pen, x, y, width, height, startAngle, sweepAngle)) \ | |
494 | m(DrawPieI, (GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle), (graphics, pen, x, y, width, height, startAngle, sweepAngle)) \ | |
495 | m(DrawPolygon, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count), (graphics, pen, points, count)) \ | |
496 | m(DrawPolygonI, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count), (graphics, pen, points, count)) \ | |
497 | m(DrawPath, (GpGraphics *graphics, GpPen *pen, GpPath *path), (graphics, pen, path)) \ | |
498 | m(DrawCurve, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count), (graphics, pen, points, count)) \ | |
499 | m(DrawCurveI, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count), (graphics, pen, points, count)) \ | |
500 | m(DrawCurve2, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count, REAL tension), (graphics, pen, points, count, tension)) \ | |
501 | m(DrawCurve2I, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count, REAL tension), (graphics, pen, points, count, tension)) \ | |
502 | m(DrawCurve3, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count, INT offset, INT numberOfSegments, REAL tension), (graphics, pen, points, count, offset, numberOfSegments, tension)) \ | |
503 | m(DrawCurve3I, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count, INT offset, INT numberOfSegments, REAL tension), (graphics, pen, points, count, offset, numberOfSegments, tension)) \ | |
504 | m(DrawClosedCurve, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count), (graphics, pen, points, count)) \ | |
505 | m(DrawClosedCurveI, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count), (graphics, pen, points, count)) \ | |
506 | m(DrawClosedCurve2, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPointF *points, INT count, REAL tension), (graphics, pen, points, count, tension)) \ | |
507 | m(DrawClosedCurve2I, (GpGraphics *graphics, GpPen *pen, GDIPCONST GpPoint *points, INT count, REAL tension), (graphics, pen, points, count, tension)) \ | |
508 | m(GraphicsClear, (GpGraphics *graphics, ARGB color), (graphics, color)) \ | |
509 | m(FillRectangle, (GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height), (graphics, brush, x, y, width, height)) \ | |
510 | m(FillRectangleI, (GpGraphics *graphics, GpBrush *brush, INT x, INT y, INT width, INT height), (graphics, brush, x, y, width, height)) \ | |
511 | m(FillRectangles, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRectF *rects, INT count), (graphics, brush, rects, count)) \ | |
512 | m(FillRectanglesI, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRect *rects, INT count), (graphics, brush, rects, count)) \ | |
513 | m(FillPolygon, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count, GpFillMode fillMode), (graphics, brush, points, count, fillMode)) \ | |
514 | m(FillPolygonI, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPoint *points, INT count, GpFillMode fillMode), (graphics, brush, points, count, fillMode)) \ | |
515 | m(FillPolygon2, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count), (graphics, brush, points, count)) \ | |
516 | m(FillPolygon2I, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPoint *points, INT count), (graphics, brush, points, count)) \ | |
517 | m(FillEllipse, (GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height), (graphics, brush, x, y, width, height)) \ | |
518 | m(FillEllipseI, (GpGraphics *graphics, GpBrush *brush, INT x, INT y, INT width, INT height), (graphics, brush, x, y, width, height)) \ | |
519 | m(FillPie, (GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle), (graphics, brush, x, y, width, height, startAngle, sweepAngle)) \ | |
520 | m(FillPieI, (GpGraphics *graphics, GpBrush *brush, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle), (graphics, brush, x, y, width, height, startAngle, sweepAngle)) \ | |
521 | m(FillPath, (GpGraphics *graphics, GpBrush *brush, GpPath *path), (graphics, brush, path)) \ | |
522 | m(FillClosedCurve, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count), (graphics, brush, points, count)) \ | |
523 | m(FillClosedCurveI, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPoint *points, INT count), (graphics, brush, points, count)) \ | |
524 | m(FillClosedCurve2, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count, REAL tension, GpFillMode fillMode), (graphics, brush, points, count, tension, fillMode)) \ | |
525 | m(FillClosedCurve2I, (GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPoint *points, INT count, REAL tension, GpFillMode fillMode), (graphics, brush, points, count, tension, fillMode)) \ | |
526 | m(FillRegion, (GpGraphics *graphics, GpBrush *brush, GpRegion *region), (graphics, brush, region)) \ | |
527 | m(DrawImage, (GpGraphics *graphics, GpImage *image, REAL x, REAL y), (graphics, image, x, y)) \ | |
528 | m(DrawImageI, (GpGraphics *graphics, GpImage *image, INT x, INT y), (graphics, image, x, y)) \ | |
529 | m(DrawImageRect, (GpGraphics *graphics, GpImage *image, REAL x, REAL y, REAL width, REAL height), (graphics, image, x, y, width, height)) \ | |
530 | m(DrawImageRectI, (GpGraphics *graphics, GpImage *image, INT x, INT y, INT width, INT height), (graphics, image, x, y, width, height)) \ | |
531 | m(DrawImagePoints, (GpGraphics *graphics, GpImage *image, GDIPCONST GpPointF *dstpoints, INT count), (graphics, image, dstpoints, count)) \ | |
532 | m(DrawImagePointsI, (GpGraphics *graphics, GpImage *image, GDIPCONST GpPoint *dstpoints, INT count), (graphics, image, dstpoints, count)) \ | |
533 | m(DrawImagePointRect, (GpGraphics *graphics, GpImage *image, REAL x, REAL y, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, GpUnit srcUnit), (graphics, image, x, y, srcx, srcy, srcwidth, srcheight, srcUnit)) \ | |
534 | m(DrawImagePointRectI, (GpGraphics *graphics, GpImage *image, INT x, INT y, INT srcx, INT srcy, INT srcwidth, INT srcheight, GpUnit srcUnit), (graphics, image, x, y, srcx, srcy, srcwidth, srcheight, srcUnit)) \ | |
535 | m(DrawImageRectRect, (GpGraphics *graphics, GpImage *image, REAL dstx, REAL dsty, REAL dstwidth, REAL dstheight, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes* imageAttributes, DrawImageAbort callback, VOID *callbackData), (graphics, image, dstx, dsty, dstwidth, dstheight, srcx, srcy, srcwidth, srcheight, srcUnit, imageAttributes, callback, callbackData)) \ | |
536 | m(DrawImageRectRectI, (GpGraphics *graphics, GpImage *image, INT dstx, INT dsty, INT dstwidth, INT dstheight, INT srcx, INT srcy, INT srcwidth, INT srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes* imageAttributes, DrawImageAbort callback, VOID *callbackData), (graphics, image, dstx, dsty, dstwidth, dstheight, srcx, srcy, srcwidth, srcheight, srcUnit, imageAttributes, callback, callbackData)) \ | |
537 | m(DrawImagePointsRect, (GpGraphics *graphics, GpImage *image, GDIPCONST GpPointF *points, INT count, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes* imageAttributes, DrawImageAbort callback, VOID *callbackData), (graphics, image, points, count, srcx, srcy, srcwidth, srcheight, srcUnit, imageAttributes, callback, callbackData)) \ | |
538 | m(DrawImagePointsRectI, (GpGraphics *graphics, GpImage *image, GDIPCONST GpPoint *points, INT count, INT srcx, INT srcy, INT srcwidth, INT srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes* imageAttributes, DrawImageAbort callback, VOID *callbackData), (graphics, image, points, count, srcx, srcy, srcwidth, srcheight, srcUnit, imageAttributes, callback, callbackData)) \ | |
539 | m(EnumerateMetafileDestPoint, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST PointF & destPoint, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destPoint, callback, callbackData, imageAttributes)) \ | |
540 | m(EnumerateMetafileDestPointI, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST Point & destPoint, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destPoint, callback, callbackData, imageAttributes)) \ | |
541 | m(EnumerateMetafileDestRect, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST RectF & destRect, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destRect, callback, callbackData, imageAttributes)) \ | |
542 | m(EnumerateMetafileDestRectI, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST Rect & destRect, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destRect, callback, callbackData, imageAttributes)) \ | |
543 | m(EnumerateMetafileDestPoints, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST PointF *destPoints, INT count, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destPoints, count, callback, callbackData, imageAttributes)) \ | |
544 | m(EnumerateMetafileDestPointsI, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST Point *destPoints, INT count, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destPoints, count, callback, callbackData, imageAttributes)) \ | |
545 | m(EnumerateMetafileSrcRectDestPoint, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST PointF & destPoint, GDIPCONST RectF & srcRect, Unit srcUnit, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destPoint, srcRect, srcUnit, callback, callbackData, imageAttributes)) \ | |
546 | m(EnumerateMetafileSrcRectDestPointI, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST Point & destPoint, GDIPCONST Rect & srcRect, Unit srcUnit, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destPoint, srcRect, srcUnit, callback, callbackData, imageAttributes)) \ | |
547 | m(EnumerateMetafileSrcRectDestRect, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST RectF & destRect, GDIPCONST RectF & srcRect, Unit srcUnit, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destRect, srcRect, srcUnit, callback, callbackData, imageAttributes)) \ | |
548 | m(EnumerateMetafileSrcRectDestRectI, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST Rect & destRect, GDIPCONST Rect & srcRect, Unit srcUnit, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destRect, srcRect, srcUnit, callback, callbackData, imageAttributes)) \ | |
549 | m(EnumerateMetafileSrcRectDestPoints, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST PointF *destPoints, INT count, GDIPCONST RectF & srcRect, Unit srcUnit, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destPoints, count, srcRect, srcUnit, callback, callbackData, imageAttributes)) \ | |
550 | m(EnumerateMetafileSrcRectDestPointsI, (GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST Point *destPoints, INT count, GDIPCONST Rect & srcRect, Unit srcUnit, EnumerateMetafileProc callback, VOID *callbackData, GDIPCONST GpImageAttributes *imageAttributes), (graphics, metafile, destPoints, count, srcRect, srcUnit, callback, callbackData, imageAttributes)) \ | |
551 | m(PlayMetafileRecord, (GDIPCONST GpMetafile *metafile, EmfPlusRecordType recordType, UINT flags, UINT dataSize, GDIPCONST BYTE *data), (metafile, recordType, flags, dataSize, data)) \ | |
552 | m(SetClipGraphics, (GpGraphics *graphics, GpGraphics *srcgraphics, CombineMode combineMode), (graphics, srcgraphics, combineMode)) \ | |
553 | m(SetClipRect, (GpGraphics *graphics, REAL x, REAL y, REAL width, REAL height, CombineMode combineMode), (graphics, x, y, width, height, combineMode)) \ | |
554 | m(SetClipRectI, (GpGraphics *graphics, INT x, INT y, INT width, INT height, CombineMode combineMode), (graphics, x, y, width, height, combineMode)) \ | |
555 | m(SetClipPath, (GpGraphics *graphics, GpPath *path, CombineMode combineMode), (graphics, path, combineMode)) \ | |
556 | m(SetClipRegion, (GpGraphics *graphics, GpRegion *region, CombineMode combineMode), (graphics, region, combineMode)) \ | |
557 | m(SetClipHrgn, (GpGraphics *graphics, HRGN hRgn, CombineMode combineMode), (graphics, hRgn, combineMode)) \ | |
558 | m(ResetClip, (GpGraphics *graphics), (graphics)) \ | |
559 | m(TranslateClip, (GpGraphics *graphics, REAL dx, REAL dy), (graphics, dx, dy)) \ | |
560 | m(TranslateClipI, (GpGraphics *graphics, INT dx, INT dy), (graphics, dx, dy)) \ | |
561 | m(GetClip, (GpGraphics *graphics, GpRegion *region), (graphics, region)) \ | |
562 | m(GetClipBounds, (GpGraphics *graphics, GpRectF *rect), (graphics, rect)) \ | |
563 | m(GetClipBoundsI, (GpGraphics *graphics, GpRect *rect), (graphics, rect)) \ | |
564 | m(IsClipEmpty, (GpGraphics *graphics, BOOL *result), (graphics, result)) \ | |
565 | m(GetVisibleClipBounds, (GpGraphics *graphics, GpRectF *rect), (graphics, rect)) \ | |
566 | m(GetVisibleClipBoundsI, (GpGraphics *graphics, GpRect *rect), (graphics, rect)) \ | |
567 | m(IsVisibleClipEmpty, (GpGraphics *graphics, BOOL *result), (graphics, result)) \ | |
568 | m(IsVisiblePoint, (GpGraphics *graphics, REAL x, REAL y, BOOL *result), (graphics, x, y, result)) \ | |
569 | m(IsVisiblePointI, (GpGraphics *graphics, INT x, INT y, BOOL *result), (graphics, x, y, result)) \ | |
570 | m(IsVisibleRect, (GpGraphics *graphics, REAL x, REAL y, REAL width, REAL height, BOOL *result), (graphics, x, y, width, height, result)) \ | |
571 | m(IsVisibleRectI, (GpGraphics *graphics, INT x, INT y, INT width, INT height, BOOL *result), (graphics, x, y, width, height, result)) \ | |
572 | m(SaveGraphics, (GpGraphics *graphics, GraphicsState *state), (graphics, state)) \ | |
573 | m(RestoreGraphics, (GpGraphics *graphics, GraphicsState state), (graphics, state)) \ | |
574 | m(BeginContainer, (GpGraphics *graphics, GDIPCONST GpRectF* dstrect, GDIPCONST GpRectF *srcrect, GpUnit unit, GraphicsContainer *state), (graphics, dstrect, srcrect, unit, state)) \ | |
575 | m(BeginContainerI, (GpGraphics *graphics, GDIPCONST GpRect* dstrect, GDIPCONST GpRect *srcrect, GpUnit unit, GraphicsContainer *state), (graphics, dstrect, srcrect, unit, state)) \ | |
576 | m(BeginContainer2, (GpGraphics *graphics, GraphicsContainer* state), (graphics, state)) \ | |
577 | m(EndContainer, (GpGraphics *graphics, GraphicsContainer state), (graphics, state)) \ | |
578 | m(GetMetafileHeaderFromEmf, (HENHMETAFILE hEmf, MetafileHeader *header), (hEmf, header)) \ | |
579 | m(GetMetafileHeaderFromFile, (GDIPCONST WCHAR* filename, MetafileHeader *header), (filename, header)) \ | |
580 | m(GetMetafileHeaderFromStream, (IStream *stream, MetafileHeader *header), (stream, header)) \ | |
581 | m(GetMetafileHeaderFromMetafile, (GpMetafile *metafile, MetafileHeader *header), (metafile, header)) \ | |
582 | m(GetHemfFromMetafile, (GpMetafile *metafile, HENHMETAFILE *hEmf), (metafile, hEmf)) \ | |
583 | m(CreateStreamOnFile, (GDIPCONST WCHAR *filename, UINT access, IStream **stream), (filename, access, stream)) \ | |
584 | m(CreateMetafileFromWmf, (HMETAFILE hWmf, BOOL deleteWmf, GDIPCONST WmfPlaceableFileHeader *wmfPlaceableFileHeader, GpMetafile **metafile), (hWmf, deleteWmf, wmfPlaceableFileHeader, metafile)) \ | |
585 | m(CreateMetafileFromEmf, (HENHMETAFILE hEmf, BOOL deleteEmf, GpMetafile **metafile), (hEmf, deleteEmf, metafile)) \ | |
586 | m(CreateMetafileFromFile, (GDIPCONST WCHAR* file, GpMetafile **metafile), (file, metafile)) \ | |
587 | m(CreateMetafileFromWmfFile, (GDIPCONST WCHAR* file, GDIPCONST WmfPlaceableFileHeader *wmfPlaceableFileHeader, GpMetafile **metafile), (file, wmfPlaceableFileHeader, metafile)) \ | |
588 | m(CreateMetafileFromStream, (IStream *stream, GpMetafile **metafile), (stream, metafile)) \ | |
589 | m(RecordMetafile, (HDC referenceHdc, EmfType type, GDIPCONST GpRectF *frameRect, MetafileFrameUnit frameUnit, GDIPCONST WCHAR *description, GpMetafile ** metafile), (referenceHdc, type, frameRect, frameUnit, description, metafile)) \ | |
590 | m(RecordMetafileI, (HDC referenceHdc, EmfType type, GDIPCONST GpRect *frameRect, MetafileFrameUnit frameUnit, GDIPCONST WCHAR *description, GpMetafile ** metafile), (referenceHdc, type, frameRect, frameUnit, description, metafile)) \ | |
591 | m(RecordMetafileFileName, (GDIPCONST WCHAR* fileName, HDC referenceHdc, EmfType type, GDIPCONST GpRectF *frameRect, MetafileFrameUnit frameUnit, GDIPCONST WCHAR *description, GpMetafile ** metafile), (fileName, referenceHdc, type, frameRect, frameUnit, description, metafile)) \ | |
592 | m(RecordMetafileFileNameI, (GDIPCONST WCHAR* fileName, HDC referenceHdc, EmfType type, GDIPCONST GpRect *frameRect, MetafileFrameUnit frameUnit, GDIPCONST WCHAR *description, GpMetafile ** metafile), (fileName, referenceHdc, type, frameRect, frameUnit, description, metafile)) \ | |
593 | m(RecordMetafileStream, (IStream *stream, HDC referenceHdc, EmfType type, GDIPCONST GpRectF *frameRect, MetafileFrameUnit frameUnit, GDIPCONST WCHAR *description, GpMetafile ** metafile), (stream, referenceHdc, type, frameRect, frameUnit, description, metafile)) \ | |
594 | m(RecordMetafileStreamI, (IStream *stream, HDC referenceHdc, EmfType type, GDIPCONST GpRect *frameRect, MetafileFrameUnit frameUnit, GDIPCONST WCHAR *description, GpMetafile ** metafile), (stream, referenceHdc, type, frameRect, frameUnit, description, metafile)) \ | |
595 | m(SetMetafileDownLevelRasterizationLimit, (GpMetafile *metafile, UINT metafileRasterizationLimitDpi), (metafile, metafileRasterizationLimitDpi)) \ | |
596 | m(GetMetafileDownLevelRasterizationLimit, (GDIPCONST GpMetafile *metafile, UINT *metafileRasterizationLimitDpi), (metafile, metafileRasterizationLimitDpi)) \ | |
597 | m(GetImageDecodersSize, (UINT *numDecoders, UINT *size), (numDecoders, size)) \ | |
598 | m(GetImageDecoders, (UINT numDecoders, UINT size, ImageCodecInfo *decoders), (numDecoders, size, decoders)) \ | |
599 | m(GetImageEncodersSize, (UINT *numEncoders, UINT *size), (numEncoders, size)) \ | |
600 | m(GetImageEncoders, (UINT numEncoders, UINT size, ImageCodecInfo *encoders), (numEncoders, size, encoders)) \ | |
601 | m(Comment, (GpGraphics* graphics, UINT sizeData, GDIPCONST BYTE *data), (graphics, sizeData, data)) \ | |
602 | m(CreateFontFamilyFromName, (GDIPCONST WCHAR *name, GpFontCollection *fontCollection, GpFontFamily **FontFamily), (name, fontCollection, FontFamily)) \ | |
603 | m(DeleteFontFamily, (GpFontFamily *FontFamily), (FontFamily)) \ | |
604 | m(CloneFontFamily, (GpFontFamily *FontFamily, GpFontFamily **clonedFontFamily), (FontFamily, clonedFontFamily)) \ | |
605 | m(GetGenericFontFamilySansSerif, (GpFontFamily **nativeFamily), (nativeFamily)) \ | |
606 | m(GetGenericFontFamilySerif, (GpFontFamily **nativeFamily), (nativeFamily)) \ | |
607 | m(GetGenericFontFamilyMonospace, (GpFontFamily **nativeFamily), (nativeFamily)) \ | |
608 | m(GetFamilyName, (GDIPCONST GpFontFamily *family, WCHAR name[LF_FACESIZE], LANGID language), (family, name, language)) \ | |
609 | m(IsStyleAvailable, (GDIPCONST GpFontFamily *family, INT style, BOOL *IsStyleAvailable), (family, style, IsStyleAvailable)) \ | |
610 | m(GetEmHeight, (GDIPCONST GpFontFamily *family, INT style, UINT16 *EmHeight), (family, style, EmHeight)) \ | |
611 | m(GetCellAscent, (GDIPCONST GpFontFamily *family, INT style, UINT16 *CellAscent), (family, style, CellAscent)) \ | |
612 | m(GetCellDescent, (GDIPCONST GpFontFamily *family, INT style, UINT16 *CellDescent), (family, style, CellDescent)) \ | |
613 | m(GetLineSpacing, (GDIPCONST GpFontFamily *family, INT style, UINT16 *LineSpacing), (family, style, LineSpacing)) \ | |
614 | m(CreateFontFromDC, (HDC hdc, GpFont **font), (hdc, font)) \ | |
615 | m(CreateFontFromLogfontA, (HDC hdc, GDIPCONST LOGFONTA *logfont, GpFont **font), (hdc, logfont, font)) \ | |
616 | m(CreateFontFromLogfontW, (HDC hdc, GDIPCONST LOGFONTW *logfont, GpFont **font), (hdc, logfont, font)) \ | |
617 | m(CreateFont, (GDIPCONST GpFontFamily *fontFamily, REAL emSize, INT style, Unit unit, GpFont **font), (fontFamily, emSize, style, unit, font)) \ | |
618 | m(CloneFont, (GpFont* font, GpFont** cloneFont), (font, cloneFont)) \ | |
619 | m(DeleteFont, (GpFont* font), (font)) \ | |
620 | m(GetFamily, (GpFont *font, GpFontFamily **family), (font, family)) \ | |
621 | m(GetFontStyle, (GpFont *font, INT *style), (font, style)) \ | |
622 | m(GetFontSize, (GpFont *font, REAL *size), (font, size)) \ | |
623 | m(GetFontUnit, (GpFont *font, Unit *unit), (font, unit)) \ | |
624 | m(GetFontHeight, (GDIPCONST GpFont *font, GDIPCONST GpGraphics *graphics, REAL *height), (font, graphics, height)) \ | |
625 | m(GetFontHeightGivenDPI, (GDIPCONST GpFont *font, REAL dpi, REAL *height), (font, dpi, height)) \ | |
626 | m(GetLogFontA, (GpFont *font, GpGraphics *graphics, LOGFONTA *logfontA), (font, graphics, logfontA)) \ | |
627 | m(GetLogFontW, (GpFont *font, GpGraphics *graphics, LOGFONTW *logfontW), (font, graphics, logfontW)) \ | |
628 | m(NewInstalledFontCollection, (GpFontCollection** fontCollection), (fontCollection)) \ | |
629 | m(NewPrivateFontCollection, (GpFontCollection** fontCollection), (fontCollection)) \ | |
630 | m(DeletePrivateFontCollection, (GpFontCollection** fontCollection), (fontCollection)) \ | |
631 | m(GetFontCollectionFamilyCount, (GpFontCollection* fontCollection, INT *numFound), (fontCollection, numFound)) \ | |
632 | m(GetFontCollectionFamilyList, (GpFontCollection* fontCollection, INT numSought, GpFontFamily* gpfamilies[], INT* numFound), (fontCollection, numSought, gpfamilies, numFound)) \ | |
633 | m(PrivateAddFontFile, (GpFontCollection* fontCollection, GDIPCONST WCHAR* filename), (fontCollection, filename)) \ | |
634 | m(PrivateAddMemoryFont, (GpFontCollection* fontCollection, GDIPCONST void* memory, INT length), (fontCollection, memory, length)) \ | |
635 | m(DrawString, (GpGraphics *graphics, GDIPCONST WCHAR *string, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *layoutRect, GDIPCONST GpStringFormat *stringFormat, GDIPCONST GpBrush *brush), (graphics, string, length, font, layoutRect, stringFormat, brush)) \ | |
636 | m(MeasureString, (GpGraphics *graphics, GDIPCONST WCHAR *string, INT length, GDIPCONST GpFont *font, GDIPCONST RectF *layoutRect, GDIPCONST GpStringFormat *stringFormat, RectF *boundingBox, INT *codepointsFitted, INT *linesFilled), (graphics, string, length, font, layoutRect, stringFormat, boundingBox, codepointsFitted, linesFilled)) \ | |
637 | m(MeasureCharacterRanges, (GpGraphics *graphics, GDIPCONST WCHAR *string, INT length, GDIPCONST GpFont *font, GDIPCONST RectF &layoutRect, GDIPCONST GpStringFormat *stringFormat, INT regionCount, GpRegion **regions), (graphics, string, length, font, layoutRect, stringFormat, regionCount, regions)) \ | |
638 | m(DrawDriverString, (GpGraphics *graphics, GDIPCONST UINT16 *text, INT length, GDIPCONST GpFont *font, GDIPCONST GpBrush *brush, GDIPCONST PointF *positions, INT flags, GDIPCONST GpMatrix *matrix), (graphics, text, length, font, brush, positions, flags, matrix)) \ | |
639 | m(MeasureDriverString, (GpGraphics *graphics, GDIPCONST UINT16 *text, INT length, GDIPCONST GpFont *font, GDIPCONST PointF *positions, INT flags, GDIPCONST GpMatrix *matrix, RectF *boundingBox), (graphics, text, length, font, positions, flags, matrix, boundingBox)) \ | |
640 | m(CreateStringFormat, (INT formatAttributes, LANGID language, GpStringFormat **format), (formatAttributes, language, format)) \ | |
641 | m(StringFormatGetGenericDefault, (GpStringFormat **format), (format)) \ | |
642 | m(StringFormatGetGenericTypographic, (GpStringFormat **format), (format)) \ | |
643 | m(DeleteStringFormat, (GpStringFormat *format), (format)) \ | |
644 | m(CloneStringFormat, (GDIPCONST GpStringFormat *format, GpStringFormat **newFormat), (format, newFormat)) \ | |
645 | m(SetStringFormatFlags, (GpStringFormat *format, INT flags), (format, flags)) \ | |
646 | m(GetStringFormatFlags, (GDIPCONST GpStringFormat *format, INT *flags), (format, flags)) \ | |
647 | m(SetStringFormatAlign, (GpStringFormat *format, StringAlignment align), (format, align)) \ | |
648 | m(GetStringFormatAlign, (GDIPCONST GpStringFormat *format, StringAlignment *align), (format, align)) \ | |
649 | m(SetStringFormatLineAlign, (GpStringFormat *format, StringAlignment align), (format, align)) \ | |
650 | m(GetStringFormatLineAlign, (GDIPCONST GpStringFormat *format, StringAlignment *align), (format, align)) \ | |
651 | m(SetStringFormatTrimming, (GpStringFormat *format, StringTrimming trimming), (format, trimming)) \ | |
652 | m(GetStringFormatTrimming, (GDIPCONST GpStringFormat *format, StringTrimming *trimming), (format, trimming)) \ | |
653 | m(SetStringFormatHotkeyPrefix, (GpStringFormat *format, INT hotkeyPrefix), (format, hotkeyPrefix)) \ | |
654 | m(GetStringFormatHotkeyPrefix, (GDIPCONST GpStringFormat *format, INT *hotkeyPrefix), (format, hotkeyPrefix)) \ | |
655 | m(SetStringFormatTabStops, (GpStringFormat *format, REAL firstTabOffset, INT count, GDIPCONST REAL *tabStops), (format, firstTabOffset, count, tabStops)) \ | |
656 | m(GetStringFormatTabStops, (GDIPCONST GpStringFormat *format, INT count, REAL *firstTabOffset, REAL *tabStops), (format, count, firstTabOffset, tabStops)) \ | |
657 | m(GetStringFormatTabStopCount, (GDIPCONST GpStringFormat *format, INT *count), (format, count)) \ | |
658 | m(SetStringFormatDigitSubstitution, (GpStringFormat *format, LANGID language, StringDigitSubstitute substitute), (format, language, substitute)) \ | |
659 | m(GetStringFormatDigitSubstitution, (GDIPCONST GpStringFormat *format, LANGID *language, StringDigitSubstitute *substitute), (format, language, substitute)) \ | |
660 | m(GetStringFormatMeasurableCharacterRangeCount, (GDIPCONST GpStringFormat *format, INT *count), (format, count)) \ | |
661 | m(SetStringFormatMeasurableCharacterRanges, (GpStringFormat *format, INT rangeCount, GDIPCONST CharacterRange *ranges), (format, rangeCount, ranges)) \ | |
662 | m(CreateCachedBitmap, (GpBitmap *bitmap, GpGraphics *graphics, GpCachedBitmap **cachedBitmap), (bitmap, graphics, cachedBitmap)) \ | |
663 | m(DeleteCachedBitmap, (GpCachedBitmap *cachedBitmap), (cachedBitmap)) \ | |
664 | m(DrawCachedBitmap, (GpGraphics *graphics, GpCachedBitmap *cachedBitmap, INT x, INT y), (graphics, cachedBitmap, x, y)) \ | |
665 | m(SetImageAttributesCachedBackground, (GpImageAttributes *imageattr, BOOL enableFlag), (imageattr, enableFlag)) \ | |
666 | m(TestControl, (GpTestControlEnum control, void *param), (control, param)) \ | |
667 | ||
668 | // non-standard/problematic functions, to review later if needed | |
669 | #if 0 | |
670 | // these functions don't seem to exist in the DLL even though they are | |
671 | // declared in the header | |
672 | m(SetImageAttributesICMMode, (GpImageAttributes *imageAttr, BOOL on), (imageAttr, on)) \ | |
673 | m(FontCollectionEnumerable, (GpFontCollection* fontCollection, GpGraphics* graphics, INT *numFound), (fontCollection, graphics, numFound)) \ | |
674 | m(FontCollectionEnumerate, (GpFontCollection* fontCollection, INT numSought, GpFontFamily* gpfamilies[], INT* numFound, GpGraphics* graphics), (fontCollection, numSought, gpfamilies, numFound, graphics)) \ | |
675 | ||
676 | GpStatus | |
677 | GdipGetMetafileHeaderFromWmf( | |
678 | HMETAFILE hWmf, | |
679 | GDIPCONST WmfPlaceableFileHeader * wmfPlaceableFileHeader, | |
680 | MetafileHeader * header | |
681 | ); | |
682 | HPALETTE WINGDIPAPI | |
683 | GdipCreateHalftonePalette(); | |
684 | ||
685 | UINT WINGDIPAPI | |
686 | GdipEmfToWmfBits( | |
687 | HENHMETAFILE hemf, | |
688 | UINT cbData16, | |
689 | LPBYTE pData16, | |
690 | INT iMapMode, | |
691 | INT eFlags | |
692 | ); | |
693 | #endif // 0 | |
694 | ||
695 | // this macro expands into an invocation of the given macro m for all GDI+ | |
696 | // functions: m is called with the name of the function without "Gdip" prefix | |
697 | #define wxFOR_ALL_GDIP_FUNCNAMES(m) \ | |
698 | m(Alloc, (size_t size), (size)) \ | |
699 | m(Free, (void *ptr), (ptr)) \ | |
700 | wxFOR_ALL_GDIPLUS_STATUS_FUNCS(m) | |
701 | ||
702 | // unfortunately we need a separate macro for these functions as they have | |
703 | // "Gdiplus" prefix instead of "Gdip" for (almost) all the others (and also | |
704 | // WINAPI calling convention instead of WINGDIPAPI although they happen to be | |
705 | // both stdcall in fact) | |
706 | #define wxFOR_ALL_GDIPLUS_FUNCNAMES(m) \ | |
707 | m(Startup, (ULONG_PTR *token, \ | |
708 | const GdiplusStartupInput *input, \ | |
709 | GdiplusStartupOutput *output), \ | |
710 | (token, input, output)) \ | |
711 | m(Shutdown, (ULONG_PTR token), (token)) \ | |
712 | m(NotificationHook, (ULONG_PTR *token), (token)) \ | |
713 | m(NotificationUnhook, (ULONG_PTR token), (token)) \ | |
714 | ||
715 | #define wxFOR_ALL_FUNCNAMES(m) \ | |
716 | wxFOR_ALL_GDIP_FUNCNAMES(m) \ | |
717 | wxFOR_ALL_GDIPLUS_FUNCNAMES(m) | |
718 | ||
719 | // ---------------------------------------------------------------------------- | |
720 | // declare typedefs for types of all GDI+ functions | |
721 | // ---------------------------------------------------------------------------- | |
722 | ||
723 | extern "C" | |
724 | { | |
725 | ||
726 | typedef void* (WINGDIPAPI *wxGDIPLUS_FUNC_T(Alloc))(size_t size); | |
727 | typedef void (WINGDIPAPI *wxGDIPLUS_FUNC_T(Free))(void* ptr); | |
728 | typedef Status | |
729 | (WINAPI *wxGDIPLUS_FUNC_T(Startup))(ULONG_PTR *token, | |
730 | const GdiplusStartupInput *input, | |
731 | GdiplusStartupOutput *output); | |
732 | typedef void (WINAPI *wxGDIPLUS_FUNC_T(Shutdown))(ULONG_PTR token); | |
733 | typedef GpStatus (WINAPI *wxGDIPLUS_FUNC_T(NotificationHook))(ULONG_PTR *token); | |
734 | typedef void (WINAPI *wxGDIPLUS_FUNC_T(NotificationUnhook))(ULONG_PTR token); | |
735 | ||
736 | #define wxDECL_GDIPLUS_FUNC_TYPE(name, params, args) \ | |
737 | typedef GpStatus (WINGDIPAPI *wxGDIPLUS_FUNC_T(name)) params ; | |
738 | ||
739 | wxFOR_ALL_GDIPLUS_STATUS_FUNCS(wxDECL_GDIPLUS_FUNC_TYPE) | |
740 | ||
741 | #undef wxDECL_GDIPLUS_FUNC_TYPE | |
742 | ||
743 | // Special hack for w32api headers that reference this variable which is | |
744 | // normally defined in w32api-specific gdiplus.lib but as we don't link with it | |
745 | // and load gdiplus.dll dynamically, it's not defined in our case resulting in | |
746 | // linking errors -- so just provide it ourselves, it doesn't matter where it | |
747 | // is and if Cygwin headers are modified to not use it in the future, it's not | |
748 | // a big deal neither, we'll just have an unused pointer. | |
749 | #if defined(__CYGWIN__) || defined(__MINGW32__) | |
750 | void *_GdipStringFormatCachedGenericTypographic = NULL; | |
751 | #endif // __CYGWIN__ || __MINGW32__ | |
752 | ||
753 | } // extern "C" | |
754 | ||
755 | // ============================================================================ | |
756 | // wxGdiPlus helper class | |
757 | // ============================================================================ | |
758 | ||
759 | class wxGdiPlus | |
760 | { | |
761 | public: | |
762 | // load GDI+ DLL when we're called for the first time, return true on | |
763 | // success or false on failure | |
764 | static bool Initialize() | |
765 | { | |
766 | if ( m_initialized == -1 ) | |
767 | m_initialized = DoInit(); | |
768 | ||
769 | return m_initialized == 1; | |
770 | } | |
771 | ||
772 | // check if we're initialized without loading the GDI+ DLL | |
773 | static bool IsInitialized() | |
774 | { | |
775 | return m_initialized == 1; | |
776 | } | |
777 | ||
778 | // shutdown: should be called on termination to unload the GDI+ DLL, safe | |
779 | // to call even if we hadn't loaded it | |
780 | static void Terminate() | |
781 | { | |
782 | if ( m_hdll ) | |
783 | { | |
784 | wxDynamicLibrary::Unload(m_hdll); | |
785 | m_hdll = 0; | |
786 | } | |
787 | ||
788 | m_initialized = -1; | |
789 | } | |
790 | ||
791 | ||
792 | // define function pointers as members | |
793 | #define wxDECL_GDIPLUS_FUNC_MEMBER(name, params, args) \ | |
794 | static wxGDIPLUS_FUNC_T(name) name; | |
795 | ||
796 | wxFOR_ALL_FUNCNAMES(wxDECL_GDIPLUS_FUNC_MEMBER) | |
797 | ||
798 | #undef wxDECL_GDIPLUS_FUNC_MEMBER | |
799 | ||
800 | private: | |
801 | // do load the GDI+ DLL and bind all the functions | |
802 | static bool DoInit(); | |
803 | ||
804 | ||
805 | // initially -1 meaning unknown, set to false or true by Initialize() | |
806 | static int m_initialized; | |
807 | ||
808 | // handle of the GDI+ DLL if we loaded it successfully | |
809 | static wxDllType m_hdll; | |
810 | }; | |
811 | ||
812 | #define wxINIT_GDIPLUS_FUNC(name, params, args) \ | |
813 | wxGDIPLUS_FUNC_T(name) wxGdiPlus::name = NULL; | |
814 | ||
815 | wxFOR_ALL_FUNCNAMES(wxINIT_GDIPLUS_FUNC) | |
816 | ||
817 | #undef wxINIT_GDIPLUS_FUNC | |
818 | ||
819 | int wxGdiPlus::m_initialized = -1; | |
820 | wxDllType wxGdiPlus::m_hdll = 0; | |
821 | ||
822 | /* static */ | |
823 | bool wxGdiPlus::DoInit() | |
824 | { | |
825 | // we're prepared to handler errors so suppress log messages about them | |
826 | wxLogNull noLog; | |
827 | ||
828 | wxDynamicLibrary dllGdip(wxT("gdiplus.dll"), wxDL_VERBATIM); | |
829 | if ( !dllGdip.IsLoaded() ) | |
830 | return false; | |
831 | ||
832 | // use RawGetSymbol() for efficiency, we have ~600 functions to load... | |
833 | #define wxDO_LOAD_FUNC(name, namedll) \ | |
834 | name = (wxGDIPLUS_FUNC_T(name))dllGdip.RawGetSymbol(namedll); \ | |
835 | if ( !name ) \ | |
836 | return false; | |
837 | ||
838 | #define wxLOAD_GDIPLUS_FUNC(name, params, args) \ | |
839 | wxDO_LOAD_FUNC(name, wxT("Gdiplus") wxSTRINGIZE_T(name)) | |
840 | ||
841 | wxFOR_ALL_GDIPLUS_FUNCNAMES(wxLOAD_GDIPLUS_FUNC) | |
842 | ||
843 | #undef wxLOAD_GDIPLUS_FUNC | |
844 | ||
845 | #define wxLOAD_GDIP_FUNC(name, params, args) \ | |
846 | wxDO_LOAD_FUNC(name, wxT("Gdip") wxSTRINGIZE_T(name)) | |
847 | ||
848 | wxFOR_ALL_GDIP_FUNCNAMES(wxLOAD_GDIP_FUNC) | |
849 | ||
850 | #undef wxLOAD_GDIP_FUNC | |
851 | ||
852 | // ok, prevent the DLL from being unloaded right now, we'll do it later | |
853 | m_hdll = dllGdip.Detach(); | |
854 | ||
855 | return true; | |
856 | } | |
857 | ||
858 | // ============================================================================ | |
859 | // module to unload GDI+ DLL on program termination | |
860 | // ============================================================================ | |
861 | ||
862 | class wxGdiPlusModule : public wxModule | |
863 | { | |
864 | public: | |
865 | virtual bool OnInit() { return true; } | |
866 | virtual void OnExit() { wxGdiPlus::Terminate(); } | |
867 | ||
868 | DECLARE_DYNAMIC_CLASS(wxGdiPlusModule) | |
869 | }; | |
870 | ||
871 | IMPLEMENT_DYNAMIC_CLASS(wxGdiPlusModule, wxModule) | |
872 | ||
873 | // ============================================================================ | |
874 | // implementation of the functions themselves | |
875 | // ============================================================================ | |
876 | ||
877 | extern "C" | |
878 | { | |
879 | ||
880 | void* WINGDIPAPI | |
881 | GdipAlloc(size_t size) | |
882 | { | |
883 | return wxGdiPlus::Initialize() ? wxGdiPlus::Alloc(size) : NULL; | |
884 | } | |
885 | ||
886 | void WINGDIPAPI | |
887 | GdipFree(void* ptr) | |
888 | { | |
889 | if ( wxGdiPlus::Initialize() ) | |
890 | wxGdiPlus::Free(ptr); | |
891 | } | |
892 | ||
893 | Status WINAPI | |
894 | GdiplusStartup(ULONG_PTR *token, | |
895 | const GdiplusStartupInput *input, | |
896 | GdiplusStartupOutput *output) | |
897 | { | |
898 | return wxGdiPlus::Initialize() ? wxGdiPlus::Startup(token, input, output) | |
899 | : GdiplusNotInitialized; | |
900 | } | |
901 | ||
902 | void WINAPI | |
903 | GdiplusShutdown(ULONG_PTR token) | |
904 | { | |
905 | if ( wxGdiPlus::IsInitialized() ) | |
906 | wxGdiPlus::Shutdown(token); | |
907 | } | |
908 | ||
909 | #define wxIMPL_GDIPLUS_FUNC(name, params, args) \ | |
910 | GpStatus WINGDIPAPI \ | |
911 | Gdip##name params \ | |
912 | { \ | |
913 | return wxGdiPlus::Initialize() ? wxGdiPlus::name args \ | |
914 | : GdiplusNotInitialized; \ | |
915 | } | |
916 | ||
917 | wxFOR_ALL_GDIPLUS_STATUS_FUNCS(wxIMPL_GDIPLUS_FUNC) | |
918 | ||
919 | #undef wxIMPL_GDIPLUS_FUNC | |
920 | ||
921 | } // extern "C" | |
922 | ||
923 | #endif // wxUSE_GRAPHICS_CONTEXT |