/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */
#ifndef _FLATAPI_H
#define _FLATAPI_H

#ifndef WINAPI
#define WINAPI __stdcall
#endif

#define WINGDIPAPI WINAPI

#define GDIPCONST const

#ifdef __cplusplus
extern "C" {
#endif

  GpStatus WINAPI GdipCreatePath(GpFillMode brushMode,GpPath **path);
  GpStatus WINAPI GdipCreatePath2(GDIPCONST GpPointF *,GDIPCONST BYTE *,INT,GpFillMode,GpPath **path);
  GpStatus WINAPI GdipCreatePath2I(GDIPCONST GpPoint *,GDIPCONST BYTE *,INT,GpFillMode,GpPath **path);
  GpStatus WINAPI GdipClonePath(GpPath *path,GpPath **clonePath);
  GpStatus WINAPI GdipDeletePath(GpPath *path);
  GpStatus WINAPI GdipResetPath(GpPath *path);
  GpStatus WINAPI GdipGetPointCount(GpPath *path,INT *count);
  GpStatus WINAPI GdipGetPathTypes(GpPath *path,BYTE *types,INT count);
  GpStatus WINAPI GdipGetPathPoints(GpPath *,GpPointF *points,INT count);
  GpStatus WINAPI GdipGetPathPointsI(GpPath *,GpPoint *points,INT count);
  GpStatus WINAPI GdipGetPathFillMode(GpPath *path,GpFillMode *fillmode);
  GpStatus WINAPI GdipSetPathFillMode(GpPath *path,GpFillMode fillmode);
  GpStatus WINAPI GdipGetPathData(GpPath *path,GpPathData *pathData);
  GpStatus WINAPI GdipStartPathFigure(GpPath *path);
  GpStatus WINAPI GdipClosePathFigure(GpPath *path);
  GpStatus WINAPI GdipClosePathFigures(GpPath *path);
  GpStatus WINAPI GdipSetPathMarker(GpPath *path);
  GpStatus WINAPI GdipClearPathMarkers(GpPath *path);
  GpStatus WINAPI GdipReversePath(GpPath *path);
  GpStatus WINAPI GdipGetPathLastPoint(GpPath *path,GpPointF *lastPoint);
  GpStatus WINAPI GdipAddPathLine(GpPath *path,REAL x1,REAL y1,REAL x2,REAL y2);
  GpStatus WINAPI GdipAddPathLine2(GpPath *path,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipAddPathArc(GpPath *path,REAL x,REAL y,REAL width,REAL height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipAddPathBezier(GpPath *path,REAL x1,REAL y1,REAL x2,REAL y2,REAL x3,REAL y3,REAL x4,REAL y4);
  GpStatus WINAPI GdipAddPathBeziers(GpPath *path,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipAddPathCurve(GpPath *path,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipAddPathCurve2(GpPath *path,GDIPCONST GpPointF *points,INT count,REAL tension);
  GpStatus WINAPI GdipAddPathCurve3(GpPath *path,GDIPCONST GpPointF *points,INT count,INT offset,INT numberOfSegments,REAL tension);
  GpStatus WINAPI GdipAddPathClosedCurve(GpPath *path,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipAddPathClosedCurve2(GpPath *path,GDIPCONST GpPointF *points,INT count,REAL tension);
  GpStatus WINAPI GdipAddPathRectangle(GpPath *path,REAL x,REAL y,REAL width,REAL height);
  GpStatus WINAPI GdipAddPathRectangles(GpPath *path,GDIPCONST GpRectF *rects,INT count);
  GpStatus WINAPI GdipAddPathEllipse(GpPath *path,REAL x,REAL y,REAL width,REAL height);
  GpStatus WINAPI GdipAddPathPie(GpPath *path,REAL x,REAL y,REAL width,REAL height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipAddPathPolygon(GpPath *path,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipAddPathPath(GpPath *path,GDIPCONST GpPath *addingPath,WINBOOL connect);
  GpStatus WINAPI GdipAddPathString(GpPath *path,GDIPCONST WCHAR *string,INT length,GDIPCONST GpFontFamily *family,INT style,REAL emSize,GDIPCONST RectF *layoutRect,GDIPCONST GpStringFormat *format);
  GpStatus WINAPI GdipAddPathStringI(GpPath *path,GDIPCONST WCHAR *string,INT length,GDIPCONST GpFontFamily *family,INT style,REAL emSize,GDIPCONST Rect *layoutRect,GDIPCONST GpStringFormat *format);
  GpStatus WINAPI GdipAddPathLineI(GpPath *path,INT x1,INT y1,INT x2,INT y2);
  GpStatus WINAPI GdipAddPathLine2I(GpPath *path,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipAddPathArcI(GpPath *path,INT x,INT y,INT width,INT height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipAddPathBezierI(GpPath *path,INT x1,INT y1,INT x2,INT y2,INT x3,INT y3,INT x4,INT y4);
  GpStatus WINAPI GdipAddPathBeziersI(GpPath *path,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipAddPathCurveI(GpPath *path,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipAddPathCurve2I(GpPath *path,GDIPCONST GpPoint *points,INT count,REAL tension);
  GpStatus WINAPI GdipAddPathCurve3I(GpPath *path,GDIPCONST GpPoint *points,INT count,INT offset,INT numberOfSegments,REAL tension);
  GpStatus WINAPI GdipAddPathClosedCurveI(GpPath *path,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipAddPathClosedCurve2I(GpPath *path,GDIPCONST GpPoint *points,INT count,REAL tension);
  GpStatus WINAPI GdipAddPathRectangleI(GpPath *path,INT x,INT y,INT width,INT height);
  GpStatus WINAPI GdipAddPathRectanglesI(GpPath *path,GDIPCONST GpRect *rects,INT count);
  GpStatus WINAPI GdipAddPathEllipseI(GpPath *path,INT x,INT y,INT width,INT height);
  GpStatus WINAPI GdipAddPathPieI(GpPath *path,INT x,INT y,INT width,INT height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipAddPathPolygonI(GpPath *path,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipFlattenPath(GpPath *path,GpMatrix *matrix,REAL flatness);
  GpStatus WINAPI GdipWindingModeOutline(GpPath *path,GpMatrix *matrix,REAL flatness);
  GpStatus WINAPI GdipWidenPath(GpPath *nativePath,GpPen *pen,GpMatrix *matrix,REAL flatness);
  GpStatus WINAPI GdipWarpPath(GpPath *path,GpMatrix *matrix,GDIPCONST GpPointF *points,INT count,REAL srcx,REAL srcy,REAL srcwidth,REAL srcheight,WarpMode warpMode,REAL flatness);
  GpStatus WINAPI GdipTransformPath(GpPath *path,GpMatrix *matrix);
  GpStatus WINAPI GdipGetPathWorldBounds(GpPath *path,GpRectF *bounds,GDIPCONST GpMatrix *matrix,GDIPCONST GpPen *pen);
  GpStatus WINAPI GdipGetPathWorldBoundsI(GpPath *path,GpRect *bounds,GDIPCONST GpMatrix *matrix,GDIPCONST GpPen *pen);
  GpStatus WINAPI GdipIsVisiblePathPoint(GpPath *path,REAL x,REAL y,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipIsVisiblePathPointI(GpPath *path,INT x,INT y,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipIsOutlineVisiblePathPoint(GpPath *path,REAL x,REAL y,GpPen *pen,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipIsOutlineVisiblePathPointI(GpPath *path,INT x,INT y,GpPen *pen,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipCreatePathIter(GpPathIterator **iterator,GpPath *path);
  GpStatus WINAPI GdipDeletePathIter(GpPathIterator *iterator);
  GpStatus WINAPI GdipPathIterNextSubpath(GpPathIterator *iterator,INT *resultCount,INT *startIndex,INT *endIndex,WINBOOL *isClosed);
  GpStatus WINAPI GdipPathIterNextSubpathPath(GpPathIterator *iterator,INT *resultCount,GpPath *path,WINBOOL *isClosed);
  GpStatus WINAPI GdipPathIterNextPathType(GpPathIterator *iterator,INT *resultCount,BYTE *pathType,INT *startIndex,INT *endIndex);
  GpStatus WINAPI GdipPathIterNextMarker(GpPathIterator *iterator,INT *resultCount,INT *startIndex,INT *endIndex);
  GpStatus WINAPI GdipPathIterNextMarkerPath(GpPathIterator *iterator,INT *resultCount,GpPath *path);
  GpStatus WINAPI GdipPathIterGetCount(GpPathIterator *iterator,INT *count);
  GpStatus WINAPI GdipPathIterGetSubpathCount(GpPathIterator *iterator,INT *count);
  GpStatus WINAPI GdipPathIterIsValid(GpPathIterator *iterator,WINBOOL *valid);
  GpStatus WINAPI GdipPathIterHasCurve(GpPathIterator *iterator,WINBOOL *hasCurve);
  GpStatus WINAPI GdipPathIterRewind(GpPathIterator *iterator);
  GpStatus WINAPI GdipPathIterEnumerate(GpPathIterator *iterator,INT *resultCount,GpPointF *points,BYTE *types,INT count);
  GpStatus WINAPI GdipPathIterCopyData(GpPathIterator *iterator,INT *resultCount,GpPointF *points,BYTE *types,INT startIndex,INT endIndex);
  GpStatus WINAPI GdipCreateMatrix(GpMatrix **matrix);
  GpStatus WINAPI GdipCreateMatrix2(REAL m11,REAL m12,REAL m21,REAL m22,REAL dx,REAL dy,GpMatrix **matrix);
  GpStatus WINAPI GdipCreateMatrix3(GDIPCONST GpRectF *rect,GDIPCONST GpPointF *dstplg,GpMatrix **matrix);
  GpStatus WINAPI GdipCreateMatrix3I(GDIPCONST GpRect *rect,GDIPCONST GpPoint *dstplg,GpMatrix **matrix);
  GpStatus WINAPI GdipCloneMatrix(GpMatrix *matrix,GpMatrix **cloneMatrix);
  GpStatus WINAPI GdipDeleteMatrix(GpMatrix *matrix);
  GpStatus WINAPI GdipSetMatrixElements(GpMatrix *matrix,REAL m11,REAL m12,REAL m21,REAL m22,REAL dx,REAL dy);
  GpStatus WINAPI GdipMultiplyMatrix(GpMatrix *matrix,GpMatrix *matrix2,GpMatrixOrder order);
  GpStatus WINAPI GdipTranslateMatrix(GpMatrix *matrix,REAL offsetX,REAL offsetY,GpMatrixOrder order);
  GpStatus WINAPI GdipScaleMatrix(GpMatrix *matrix,REAL scaleX,REAL scaleY,GpMatrixOrder order);
  GpStatus WINAPI GdipRotateMatrix(GpMatrix *matrix,REAL angle,GpMatrixOrder order);
  GpStatus WINAPI GdipShearMatrix(GpMatrix *matrix,REAL shearX,REAL shearY,GpMatrixOrder order);
  GpStatus WINAPI GdipInvertMatrix(GpMatrix *matrix);
  GpStatus WINAPI GdipTransformMatrixPoints(GpMatrix *matrix,GpPointF *pts,INT count);
  GpStatus WINAPI GdipTransformMatrixPointsI(GpMatrix *matrix,GpPoint *pts,INT count);
  GpStatus WINAPI GdipVectorTransformMatrixPoints(GpMatrix *matrix,GpPointF *pts,INT count);
  GpStatus WINAPI GdipVectorTransformMatrixPointsI(GpMatrix *matrix,GpPoint *pts,INT count);
  GpStatus WINAPI GdipGetMatrixElements(GDIPCONST GpMatrix *matrix,REAL *matrixOut);
  GpStatus WINAPI GdipIsMatrixInvertible(GDIPCONST GpMatrix *matrix,WINBOOL *result);
  GpStatus WINAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix *matrix,WINBOOL *result);
  GpStatus WINAPI GdipIsMatrixEqual(GDIPCONST GpMatrix *matrix,GDIPCONST GpMatrix *matrix2,WINBOOL *result);
  GpStatus WINAPI GdipCreateRegion(GpRegion **region);
  GpStatus WINAPI GdipCreateRegionRect(GDIPCONST GpRectF *rect,GpRegion **region);
  GpStatus WINAPI GdipCreateRegionRectI(GDIPCONST GpRect *rect,GpRegion **region);
  GpStatus WINAPI GdipCreateRegionPath(GpPath *path,GpRegion **region);
  GpStatus WINAPI GdipCreateRegionRgnData(GDIPCONST BYTE *regionData,INT size,GpRegion **region);
  GpStatus WINAPI GdipCreateRegionHrgn(HRGN hRgn,GpRegion **region);
  GpStatus WINAPI GdipCloneRegion(GpRegion *region,GpRegion **cloneRegion);
  GpStatus WINAPI GdipDeleteRegion(GpRegion *region);
  GpStatus WINAPI GdipSetInfinite(GpRegion *region);
  GpStatus WINAPI GdipSetEmpty(GpRegion *region);
  GpStatus WINAPI GdipCombineRegionRect(GpRegion *region,GDIPCONST GpRectF *rect,CombineMode combineMode);
  GpStatus WINAPI GdipCombineRegionRectI(GpRegion *region,GDIPCONST GpRect *rect,CombineMode combineMode);
  GpStatus WINAPI GdipCombineRegionPath(GpRegion *region,GpPath *path,CombineMode combineMode);
  GpStatus WINAPI GdipCombineRegionRegion(GpRegion *region,GpRegion *region2,CombineMode combineMode);
  GpStatus WINAPI GdipTranslateRegion(GpRegion *region,REAL dx,REAL dy);
  GpStatus WINAPI GdipTranslateRegionI(GpRegion *region,INT dx,INT dy);
  GpStatus WINAPI GdipTransformRegion(GpRegion *region,GpMatrix *matrix);
  GpStatus WINAPI GdipGetRegionBounds(GpRegion *region,GpGraphics *graphics,GpRectF *rect);
  GpStatus WINAPI GdipGetRegionBoundsI(GpRegion *region,GpGraphics *graphics,GpRect *rect);
  GpStatus WINAPI GdipGetRegionHRgn(GpRegion *region,GpGraphics *graphics,HRGN *hRgn);
  GpStatus WINAPI GdipIsEmptyRegion(GpRegion *region,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipIsInfiniteRegion(GpRegion *region,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipIsEqualRegion(GpRegion *region,GpRegion *region2,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipGetRegionDataSize(GpRegion *region,UINT *bufferSize);
  GpStatus WINAPI GdipGetRegionData(GpRegion *region,BYTE *buffer,UINT bufferSize,UINT *sizeFilled);
  GpStatus WINAPI GdipIsVisibleRegionPoint(GpRegion *region,REAL x,REAL y,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipIsVisibleRegionPointI(GpRegion *region,INT x,INT y,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipIsVisibleRegionRect(GpRegion *region,REAL x,REAL y,REAL width,REAL height,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipIsVisibleRegionRectI(GpRegion *region,INT x,INT y,INT width,INT height,GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipGetRegionScansCount(GpRegion *region,UINT *count,GpMatrix *matrix);
  GpStatus WINAPI GdipGetRegionScans(GpRegion *region,GpRectF *rects,INT *count,GpMatrix *matrix);
  GpStatus WINAPI GdipGetRegionScansI(GpRegion *region,GpRect *rects,INT *count,GpMatrix *matrix);
  GpStatus WINAPI GdipCloneBrush(GpBrush *brush,GpBrush **cloneBrush);
  GpStatus WINAPI GdipDeleteBrush(GpBrush *brush);
  GpStatus WINAPI GdipGetBrushType(GpBrush *brush,GpBrushType *type);
  GpStatus WINAPI GdipCreateHatchBrush(GpHatchStyle hatchstyle,ARGB forecol,ARGB backcol,GpHatch **brush);
  GpStatus WINAPI GdipGetHatchStyle(GpHatch *brush,GpHatchStyle *hatchstyle);
  GpStatus WINAPI GdipGetHatchForegroundColor(GpHatch *brush,ARGB *forecol);
  GpStatus WINAPI GdipGetHatchBackgroundColor(GpHatch *brush,ARGB *backcol);
  GpStatus WINAPI GdipCreateTexture(GpImage *image,GpWrapMode wrapmode,GpTexture **texture);
  GpStatus WINAPI GdipCreateTexture2(GpImage *image,GpWrapMode wrapmode,REAL x,REAL y,REAL width,REAL height,GpTexture **texture);
  GpStatus WINAPI GdipCreateTextureIA(GpImage *image,GDIPCONST GpImageAttributes *imageAttributes,REAL x,REAL y,REAL width,REAL height,GpTexture **texture);
  GpStatus WINAPI GdipCreateTexture2I(GpImage *image,GpWrapMode wrapmode,INT x,INT y,INT width,INT height,GpTexture **texture);
  GpStatus WINAPI GdipCreateTextureIAI(GpImage *image,GDIPCONST GpImageAttributes *imageAttributes,INT x,INT y,INT width,INT height,GpTexture **texture);
  GpStatus WINAPI GdipGetTextureTransform(GpTexture *brush,GpMatrix *matrix);
  GpStatus WINAPI GdipSetTextureTransform(GpTexture *brush,GDIPCONST GpMatrix *matrix);
  GpStatus WINAPI GdipResetTextureTransform(GpTexture *brush);
  GpStatus WINAPI GdipMultiplyTextureTransform(GpTexture *brush,GDIPCONST GpMatrix *matrix,GpMatrixOrder order);
  GpStatus WINAPI GdipTranslateTextureTransform(GpTexture *brush,REAL dx,REAL dy,GpMatrixOrder order);
  GpStatus WINAPI GdipScaleTextureTransform(GpTexture *brush,REAL sx,REAL sy,GpMatrixOrder order);
  GpStatus WINAPI GdipRotateTextureTransform(GpTexture *brush,REAL angle,GpMatrixOrder order);
  GpStatus WINAPI GdipSetTextureWrapMode(GpTexture *brush,GpWrapMode wrapmode);
  GpStatus WINAPI GdipGetTextureWrapMode(GpTexture *brush,GpWrapMode *wrapmode);
  GpStatus WINAPI GdipGetTextureImage(GpTexture *brush,GpImage **image);
  GpStatus WINAPI GdipCreateSolidFill(ARGB color,GpSolidFill **brush);
  GpStatus WINAPI GdipSetSolidFillColor(GpSolidFill *brush,ARGB color);
  GpStatus WINAPI GdipGetSolidFillColor(GpSolidFill *brush,ARGB *color);
  GpStatus WINAPI GdipCreateLineBrush(GDIPCONST GpPointF *point1,GDIPCONST GpPointF *point2,ARGB color1,ARGB color2,GpWrapMode wrapMode,GpLineGradient **lineGradient);
  GpStatus WINAPI GdipCreateLineBrushI(GDIPCONST GpPoint *point1,GDIPCONST GpPoint *point2,ARGB color1,ARGB color2,GpWrapMode wrapMode,GpLineGradient **lineGradient);
  GpStatus WINAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF *rect,ARGB color1,ARGB color2,LinearGradientMode mode,GpWrapMode wrapMode,GpLineGradient **lineGradient);
  GpStatus WINAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect *rect,ARGB color1,ARGB color2,LinearGradientMode mode,GpWrapMode wrapMode,GpLineGradient **lineGradient);
  GpStatus WINAPI GdipCreateLineBrushFromRectWithAngle(GDIPCONST GpRectF *rect,ARGB color1,ARGB color2,REAL angle,WINBOOL isAngleScalable,GpWrapMode wrapMode,GpLineGradient **lineGradient);
  GpStatus WINAPI GdipCreateLineBrushFromRectWithAngleI(GDIPCONST GpRect *rect,ARGB color1,ARGB color2,REAL angle,WINBOOL isAngleScalable,GpWrapMode wrapMode,GpLineGradient **lineGradient);
  GpStatus WINAPI GdipSetLineColors(GpLineGradient *brush,ARGB color1,ARGB color2);
  GpStatus WINAPI GdipGetLineColors(GpLineGradient *brush,ARGB *colors);
  GpStatus WINAPI GdipGetLineRect(GpLineGradient *brush,GpRectF *rect);
  GpStatus WINAPI GdipGetLineRectI(GpLineGradient *brush,GpRect *rect);
  GpStatus WINAPI GdipSetLineGammaCorrection(GpLineGradient *brush,WINBOOL useGammaCorrection);
  GpStatus WINAPI GdipGetLineGammaCorrection(GpLineGradient *brush,WINBOOL *useGammaCorrection);
  GpStatus WINAPI GdipGetLineBlendCount(GpLineGradient *brush,INT *count);
  GpStatus WINAPI GdipGetLineBlend(GpLineGradient *brush,REAL *blend,REAL *positions,INT count);
  GpStatus WINAPI GdipSetLineBlend(GpLineGradient *brush,GDIPCONST REAL *blend,GDIPCONST REAL *positions,INT count);
  GpStatus WINAPI GdipGetLinePresetBlendCount(GpLineGradient *brush,INT *count);
  GpStatus WINAPI GdipGetLinePresetBlend(GpLineGradient *brush,ARGB *blend,REAL *positions,INT count);
  GpStatus WINAPI GdipSetLinePresetBlend(GpLineGradient *brush,GDIPCONST ARGB *blend,GDIPCONST REAL *positions,INT count);
  GpStatus WINAPI GdipSetLineSigmaBlend(GpLineGradient *brush,REAL focus,REAL scale);
  GpStatus WINAPI GdipSetLineLinearBlend(GpLineGradient *brush,REAL focus,REAL scale);
  GpStatus WINAPI GdipSetLineWrapMode(GpLineGradient *brush,GpWrapMode wrapmode);
  GpStatus WINAPI GdipGetLineWrapMode(GpLineGradient *brush,GpWrapMode *wrapmode);
  GpStatus WINAPI GdipGetLineTransform(GpLineGradient *brush,GpMatrix *matrix);
  GpStatus WINAPI GdipSetLineTransform(GpLineGradient *brush,GDIPCONST GpMatrix *matrix);
  GpStatus WINAPI GdipResetLineTransform(GpLineGradient *brush);
  GpStatus WINAPI GdipMultiplyLineTransform(GpLineGradient *brush,GDIPCONST GpMatrix *matrix,GpMatrixOrder order);
  GpStatus WINAPI GdipTranslateLineTransform(GpLineGradient *brush,REAL dx,REAL dy,GpMatrixOrder order);
  GpStatus WINAPI GdipScaleLineTransform(GpLineGradient *brush,REAL sx,REAL sy,GpMatrixOrder order);
  GpStatus WINAPI GdipRotateLineTransform(GpLineGradient *brush,REAL angle,GpMatrixOrder order);
  GpStatus WINAPI GdipCreatePathGradient(GDIPCONST GpPointF *points,INT count,GpWrapMode wrapMode,GpPathGradient **polyGradient);
  GpStatus WINAPI GdipCreatePathGradientI(GDIPCONST GpPoint *points,INT count,GpWrapMode wrapMode,GpPathGradient **polyGradient);
  GpStatus WINAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath *path,GpPathGradient **polyGradient);
  GpStatus WINAPI GdipGetPathGradientCenterColor(GpPathGradient *brush,ARGB *colors);
  GpStatus WINAPI GdipSetPathGradientCenterColor(GpPathGradient *brush,ARGB colors);
  GpStatus WINAPI GdipGetPathGradientSurroundColorsWithCount(GpPathGradient *brush,ARGB *color,INT *count);
  GpStatus WINAPI GdipSetPathGradientSurroundColorsWithCount(GpPathGradient *brush,GDIPCONST ARGB *color,INT *count);
  GpStatus WINAPI GdipGetPathGradientPath(GpPathGradient *brush,GpPath *path);
  GpStatus WINAPI GdipSetPathGradientPath(GpPathGradient *brush,GDIPCONST GpPath *path);
  GpStatus WINAPI GdipGetPathGradientCenterPoint(GpPathGradient *brush,GpPointF *points);
  GpStatus WINAPI GdipGetPathGradientCenterPointI(GpPathGradient *brush,GpPoint *points);
  GpStatus WINAPI GdipSetPathGradientCenterPoint(GpPathGradient *brush,GDIPCONST GpPointF *points);
  GpStatus WINAPI GdipSetPathGradientCenterPointI(GpPathGradient *brush,GDIPCONST GpPoint *points);
  GpStatus WINAPI GdipGetPathGradientRect(GpPathGradient *brush,GpRectF *rect);
  GpStatus WINAPI GdipGetPathGradientRectI(GpPathGradient *brush,GpRect *rect);
  GpStatus WINAPI GdipGetPathGradientPointCount(GpPathGradient *brush,INT *count);
  GpStatus WINAPI GdipGetPathGradientSurroundColorCount(GpPathGradient *brush,INT *count);
  GpStatus WINAPI GdipSetPathGradientGammaCorrection(GpPathGradient *brush,WINBOOL useGammaCorrection);
  GpStatus WINAPI GdipGetPathGradientGammaCorrection(GpPathGradient *brush,WINBOOL *useGammaCorrection);
  GpStatus WINAPI GdipGetPathGradientBlendCount(GpPathGradient *brush,INT *count);
  GpStatus WINAPI GdipGetPathGradientBlend(GpPathGradient *brush,REAL *blend,REAL *positions,INT count);
  GpStatus WINAPI GdipSetPathGradientBlend(GpPathGradient *brush,GDIPCONST REAL *blend,GDIPCONST REAL *positions,INT count);
  GpStatus WINAPI GdipGetPathGradientPresetBlendCount(GpPathGradient *brush,INT *count);
  GpStatus WINAPI GdipGetPathGradientPresetBlend(GpPathGradient *brush,ARGB *blend,REAL *positions,INT count);
  GpStatus WINAPI GdipSetPathGradientPresetBlend(GpPathGradient *brush,GDIPCONST ARGB *blend,GDIPCONST REAL *positions,INT count);
  GpStatus WINAPI GdipSetPathGradientSigmaBlend(GpPathGradient *brush,REAL focus,REAL scale);
  GpStatus WINAPI GdipSetPathGradientLinearBlend(GpPathGradient *brush,REAL focus,REAL scale);
  GpStatus WINAPI GdipGetPathGradientWrapMode(GpPathGradient *brush,GpWrapMode *wrapmode);
  GpStatus WINAPI GdipSetPathGradientWrapMode(GpPathGradient *brush,GpWrapMode wrapmode);
  GpStatus WINAPI GdipGetPathGradientTransform(GpPathGradient *brush,GpMatrix *matrix);
  GpStatus WINAPI GdipSetPathGradientTransform(GpPathGradient *brush,GpMatrix *matrix);
  GpStatus WINAPI GdipResetPathGradientTransform(GpPathGradient *brush);
  GpStatus WINAPI GdipMultiplyPathGradientTransform(GpPathGradient *brush,GDIPCONST GpMatrix *matrix,GpMatrixOrder order);
  GpStatus WINAPI GdipTranslatePathGradientTransform(GpPathGradient *brush,REAL dx,REAL dy,GpMatrixOrder order);
  GpStatus WINAPI GdipScalePathGradientTransform(GpPathGradient *brush,REAL sx,REAL sy,GpMatrixOrder order);
  GpStatus WINAPI GdipRotatePathGradientTransform(GpPathGradient *brush,REAL angle,GpMatrixOrder order);
  GpStatus WINAPI GdipGetPathGradientFocusScales(GpPathGradient *brush,REAL *xScale,REAL *yScale);
  GpStatus WINAPI GdipSetPathGradientFocusScales(GpPathGradient *brush,REAL xScale,REAL yScale);
  GpStatus WINAPI GdipCreatePen1(ARGB color,REAL width,GpUnit unit,GpPen **pen);
  GpStatus WINAPI GdipCreatePen2(GpBrush *brush,REAL width,GpUnit unit,GpPen **pen);
  GpStatus WINAPI GdipClonePen(GpPen *pen,GpPen **clonepen);
  GpStatus WINAPI GdipDeletePen(GpPen *pen);
  GpStatus WINAPI GdipSetPenWidth(GpPen *pen,REAL width);
  GpStatus WINAPI GdipGetPenWidth(GpPen *pen,REAL *width);
  GpStatus WINAPI GdipSetPenUnit(GpPen *pen,GpUnit unit);
  GpStatus WINAPI GdipGetPenUnit(GpPen *pen,GpUnit *unit);
  GpStatus WINAPI GdipSetPenLineCap197819(GpPen *pen,GpLineCap startCap,GpLineCap endCap,GpDashCap dashCap);
  GpStatus WINAPI GdipSetPenStartCap(GpPen *pen,GpLineCap startCap);
  GpStatus WINAPI GdipSetPenEndCap(GpPen *pen,GpLineCap endCap);
  GpStatus WINAPI GdipSetPenDashCap197819(GpPen *pen,GpDashCap dashCap);
  GpStatus WINAPI GdipGetPenStartCap(GpPen *pen,GpLineCap *startCap);
  GpStatus WINAPI GdipGetPenEndCap(GpPen *pen,GpLineCap *endCap);
  GpStatus WINAPI GdipGetPenDashCap197819(GpPen *pen,GpDashCap *dashCap);
  GpStatus WINAPI GdipSetPenLineJoin(GpPen *pen,GpLineJoin lineJoin);
  GpStatus WINAPI GdipGetPenLineJoin(GpPen *pen,GpLineJoin *lineJoin);
  GpStatus WINAPI GdipSetPenCustomStartCap(GpPen *pen,GpCustomLineCap *customCap);
  GpStatus WINAPI GdipGetPenCustomStartCap(GpPen *pen,GpCustomLineCap **customCap);
  GpStatus WINAPI GdipSetPenCustomEndCap(GpPen *pen,GpCustomLineCap *customCap);
  GpStatus WINAPI GdipGetPenCustomEndCap(GpPen *pen,GpCustomLineCap **customCap);
  GpStatus WINAPI GdipSetPenMiterLimit(GpPen *pen,REAL miterLimit);
  GpStatus WINAPI GdipGetPenMiterLimit(GpPen *pen,REAL *miterLimit);
  GpStatus WINAPI GdipSetPenMode(GpPen *pen,GpPenAlignment penMode);
  GpStatus WINAPI GdipGetPenMode(GpPen *pen,GpPenAlignment *penMode);
  GpStatus WINAPI GdipSetPenTransform(GpPen *pen,GpMatrix *matrix);
  GpStatus WINAPI GdipGetPenTransform(GpPen *pen,GpMatrix *matrix);
  GpStatus WINAPI GdipResetPenTransform(GpPen *pen);
  GpStatus WINAPI GdipMultiplyPenTransform(GpPen *pen,GDIPCONST GpMatrix *matrix,GpMatrixOrder order);
  GpStatus WINAPI GdipTranslatePenTransform(GpPen *pen,REAL dx,REAL dy,GpMatrixOrder order);
  GpStatus WINAPI GdipScalePenTransform(GpPen *pen,REAL sx,REAL sy,GpMatrixOrder order);
  GpStatus WINAPI GdipRotatePenTransform(GpPen *pen,REAL angle,GpMatrixOrder order);
  GpStatus WINAPI GdipSetPenColor(GpPen *pen,ARGB argb);
  GpStatus WINAPI GdipGetPenColor(GpPen *pen,ARGB *argb);
  GpStatus WINAPI GdipSetPenBrushFill(GpPen *pen,GpBrush *brush);
  GpStatus WINAPI GdipGetPenBrushFill(GpPen *pen,GpBrush **brush);
  GpStatus WINAPI GdipGetPenFillType(GpPen *pen,GpPenType *type);
  GpStatus WINAPI GdipGetPenDashStyle(GpPen *pen,GpDashStyle *dashstyle);
  GpStatus WINAPI GdipSetPenDashStyle(GpPen *pen,GpDashStyle dashstyle);
  GpStatus WINAPI GdipGetPenDashOffset(GpPen *pen,REAL *offset);
  GpStatus WINAPI GdipSetPenDashOffset(GpPen *pen,REAL offset);
  GpStatus WINAPI GdipGetPenDashCount(GpPen *pen,INT *count);
  GpStatus WINAPI GdipSetPenDashArray(GpPen *pen,GDIPCONST REAL *dash,INT count);
  GpStatus WINAPI GdipGetPenDashArray(GpPen *pen,REAL *dash,INT count);
  GpStatus WINAPI GdipGetPenCompoundCount(GpPen *pen,INT *count);
  GpStatus WINAPI GdipSetPenCompoundArray(GpPen *pen,GDIPCONST REAL *dash,INT count);
  GpStatus WINAPI GdipGetPenCompoundArray(GpPen *pen,REAL *dash,INT count);
  GpStatus WINAPI GdipCreateCustomLineCap(GpPath *fillPath,GpPath *strokePath,GpLineCap baseCap,REAL baseInset,GpCustomLineCap **customCap);
  GpStatus WINAPI GdipDeleteCustomLineCap(GpCustomLineCap *customCap);
  GpStatus WINAPI GdipCloneCustomLineCap(GpCustomLineCap *customCap,GpCustomLineCap **clonedCap);
  GpStatus WINAPI GdipGetCustomLineCapType(GpCustomLineCap *customCap,CustomLineCapType *capType);
  GpStatus WINAPI GdipSetCustomLineCapStrokeCaps(GpCustomLineCap *customCap,GpLineCap startCap,GpLineCap endCap);
  GpStatus WINAPI GdipGetCustomLineCapStrokeCaps(GpCustomLineCap *customCap,GpLineCap *startCap,GpLineCap *endCap);
  GpStatus WINAPI GdipSetCustomLineCapStrokeJoin(GpCustomLineCap *customCap,GpLineJoin lineJoin);
  GpStatus WINAPI GdipGetCustomLineCapStrokeJoin(GpCustomLineCap *customCap,GpLineJoin *lineJoin);
  GpStatus WINAPI GdipSetCustomLineCapBaseCap(GpCustomLineCap *customCap,GpLineCap baseCap);
  GpStatus WINAPI GdipGetCustomLineCapBaseCap(GpCustomLineCap *customCap,GpLineCap *baseCap);
  GpStatus WINAPI GdipSetCustomLineCapBaseInset(GpCustomLineCap *customCap,REAL inset);
  GpStatus WINAPI GdipGetCustomLineCapBaseInset(GpCustomLineCap *customCap,REAL *inset);
  GpStatus WINAPI GdipSetCustomLineCapWidthScale(GpCustomLineCap *customCap,REAL widthScale);
  GpStatus WINAPI GdipGetCustomLineCapWidthScale(GpCustomLineCap *customCap,REAL *widthScale);
  GpStatus WINAPI GdipCreateAdjustableArrowCap(REAL height,REAL width,WINBOOL isFilled,GpAdjustableArrowCap **cap);
  GpStatus WINAPI GdipSetAdjustableArrowCapHeight(GpAdjustableArrowCap *cap,REAL height);
  GpStatus WINAPI GdipGetAdjustableArrowCapHeight(GpAdjustableArrowCap *cap,REAL *height);
  GpStatus WINAPI GdipSetAdjustableArrowCapWidth(GpAdjustableArrowCap *cap,REAL width);
  GpStatus WINAPI GdipGetAdjustableArrowCapWidth(GpAdjustableArrowCap *cap,REAL *width);
  GpStatus WINAPI GdipSetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap *cap,REAL middleInset);
  GpStatus WINAPI GdipGetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap *cap,REAL *middleInset);
  GpStatus WINAPI GdipSetAdjustableArrowCapFillState(GpAdjustableArrowCap *cap,WINBOOL fillState);
  GpStatus WINAPI GdipGetAdjustableArrowCapFillState(GpAdjustableArrowCap *cap,WINBOOL *fillState);
  GpStatus WINAPI GdipLoadImageFromStream(IStream *stream,GpImage **image);
  GpStatus WINAPI GdipLoadImageFromFile(GDIPCONST WCHAR *filename,GpImage **image);
  GpStatus WINAPI GdipLoadImageFromStreamICM(IStream *stream,GpImage **image);
  GpStatus WINAPI GdipLoadImageFromFileICM(GDIPCONST WCHAR *filename,GpImage **image);
  GpStatus WINAPI GdipCloneImage(GpImage *image,GpImage **cloneImage);
  GpStatus WINAPI GdipDisposeImage(GpImage *image);
  GpStatus WINAPI GdipSaveImageToFile(GpImage *image,GDIPCONST WCHAR *filename,GDIPCONST CLSID *clsidEncoder,GDIPCONST EncoderParameters *encoderParams);
  GpStatus WINAPI GdipSaveImageToStream(GpImage *image,IStream *stream,GDIPCONST CLSID *clsidEncoder,GDIPCONST EncoderParameters *encoderParams);
  GpStatus WINAPI GdipSaveAdd(GpImage *image,GDIPCONST EncoderParameters *encoderParams);
  GpStatus WINAPI GdipSaveAddImage(GpImage *image,GpImage *newImage,GDIPCONST EncoderParameters *encoderParams);
  GpStatus WINAPI GdipGetImageGraphicsContext(GpImage *image,GpGraphics **graphics);
  GpStatus WINAPI GdipGetImageBounds(GpImage *image,GpRectF *srcRect,GpUnit *srcUnit);
  GpStatus WINAPI GdipGetImageDimension(GpImage *image,REAL *width,REAL *height);
  GpStatus WINAPI GdipGetImageType(GpImage *image,ImageType *type);
  GpStatus WINAPI GdipGetImageWidth(GpImage *image,UINT *width);
  GpStatus WINAPI GdipGetImageHeight(GpImage *image,UINT *height);
  GpStatus WINAPI GdipGetImageHorizontalResolution(GpImage *image,REAL *resolution);
  GpStatus WINAPI GdipGetImageVerticalResolution(GpImage *image,REAL *resolution);
  GpStatus WINAPI GdipGetImageFlags(GpImage *image,UINT *flags);
  GpStatus WINAPI GdipGetImageRawFormat(GpImage *image,GUID *format);
  GpStatus WINAPI GdipGetImagePixelFormat(GpImage *image,PixelFormat *format);
  GpStatus WINAPI GdipGetImageThumbnail(GpImage *image,UINT thumbWidth,UINT thumbHeight,GpImage **thumbImage,GetThumbnailImageAbort callback,VOID *callbackData);
  GpStatus WINAPI GdipGetEncoderParameterListSize(GpImage *image,GDIPCONST CLSID *clsidEncoder,UINT *size);
  GpStatus WINAPI GdipGetEncoderParameterList(GpImage *image,GDIPCONST CLSID *clsidEncoder,UINT size,EncoderParameters *buffer);
  GpStatus WINAPI GdipImageGetFrameDimensionsCount(GpImage *image,UINT *count);
  GpStatus WINAPI GdipImageGetFrameDimensionsList(GpImage *image,GUID *dimensionIDs,UINT count);
  GpStatus WINAPI GdipImageGetFrameCount(GpImage *image,GDIPCONST GUID *dimensionID,UINT *count);
  GpStatus WINAPI GdipImageSelectActiveFrame(GpImage *image,GDIPCONST GUID *dimensionID,UINT frameIndex);
  GpStatus WINAPI GdipImageRotateFlip(GpImage *image,RotateFlipType rfType);
  GpStatus WINAPI GdipGetImagePalette(GpImage *image,ColorPalette *palette,INT size);
  GpStatus WINAPI GdipSetImagePalette(GpImage *image,GDIPCONST ColorPalette *palette);
  GpStatus WINAPI GdipGetImagePaletteSize(GpImage *image,INT *size);
  GpStatus WINAPI GdipGetPropertyCount(GpImage *image,UINT *numOfProperty);
  GpStatus WINAPI GdipGetPropertyIdList(GpImage *image,UINT numOfProperty,PROPID *list);
  GpStatus WINAPI GdipGetPropertyItemSize(GpImage *image,PROPID propId,UINT *size);
  GpStatus WINAPI GdipGetPropertyItem(GpImage *image,PROPID propId,UINT propSize,PropertyItem *buffer);
  GpStatus WINAPI GdipGetPropertySize(GpImage *image,UINT *totalBufferSize,UINT *numProperties);
  GpStatus WINAPI GdipGetAllPropertyItems(GpImage *image,UINT totalBufferSize,UINT numProperties,PropertyItem *allItems);
  GpStatus WINAPI GdipRemovePropertyItem(GpImage *image,PROPID propId);
  GpStatus WINAPI GdipSetPropertyItem(GpImage *image,GDIPCONST PropertyItem *item);
  GpStatus WINAPI GdipImageForceValidation(GpImage *image);
  GpStatus WINAPI GdipCreateBitmapFromStream(IStream *stream,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR *filename,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateBitmapFromStreamICM(IStream *stream,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateBitmapFromFileICM(GDIPCONST WCHAR *filename,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateBitmapFromScan0(INT width,INT height,INT stride,PixelFormat format,BYTE *scan0,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateBitmapFromGraphics(INT width,INT height,GpGraphics *target,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateBitmapFromDirectDrawSurface(IDirectDrawSurface7 *surface,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateBitmapFromGdiDib(GDIPCONST BITMAPINFO *gdiBitmapInfo,VOID *gdiBitmapData,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateBitmapFromHBITMAP(HBITMAP hbm,HPALETTE hpal,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateHBITMAPFromBitmap(GpBitmap *bitmap,HBITMAP *hbmReturn,ARGB background);
  GpStatus WINAPI GdipCreateBitmapFromHICON(HICON hicon,GpBitmap **bitmap);
  GpStatus WINAPI GdipCreateHICONFromBitmap(GpBitmap *bitmap,HICON *hbmReturn);
  GpStatus WINAPI GdipCreateBitmapFromResource(HINSTANCE hInstance,GDIPCONST WCHAR *lpBitmapName,GpBitmap **bitmap);
  GpStatus WINAPI GdipCloneBitmapArea(REAL x,REAL y,REAL width,REAL height,PixelFormat format,GpBitmap *srcBitmap,GpBitmap **dstBitmap);
  GpStatus WINAPI GdipCloneBitmapAreaI(INT x,INT y,INT width,INT height,PixelFormat format,GpBitmap *srcBitmap,GpBitmap **dstBitmap);
  GpStatus WINAPI GdipBitmapLockBits(GpBitmap *bitmap,GDIPCONST GpRect *rect,UINT flags,PixelFormat format,BitmapData *lockedBitmapData);
  GpStatus WINAPI GdipBitmapUnlockBits(GpBitmap *bitmap,BitmapData *lockedBitmapData);
  GpStatus WINAPI GdipBitmapGetPixel(GpBitmap *bitmap,INT x,INT y,ARGB *color);
  GpStatus WINAPI GdipBitmapSetPixel(GpBitmap *bitmap,INT x,INT y,ARGB color);
  GpStatus WINAPI GdipBitmapSetResolution(GpBitmap *bitmap,REAL xdpi,REAL ydpi);
  GpStatus WINAPI GdipCreateImageAttributes(GpImageAttributes **imageattr);
  GpStatus WINAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes *imageattr,GpImageAttributes **cloneImageattr);
  GpStatus WINAPI GdipDisposeImageAttributes(GpImageAttributes *imageattr);
  GpStatus WINAPI GdipSetImageAttributesToIdentity(GpImageAttributes *imageattr,ColorAdjustType type);
  GpStatus WINAPI GdipResetImageAttributes(GpImageAttributes *imageattr,ColorAdjustType type);
  GpStatus WINAPI GdipSetImageAttributesColorMatrix(GpImageAttributes *imageattr,ColorAdjustType type,WINBOOL enableFlag,GDIPCONST ColorMatrix *colorMatrix,GDIPCONST ColorMatrix *grayMatrix,ColorMatrixFlags flags);
  GpStatus WINAPI GdipSetImageAttributesThreshold(GpImageAttributes *imageattr,ColorAdjustType type,WINBOOL enableFlag,REAL threshold);
  GpStatus WINAPI GdipSetImageAttributesGamma(GpImageAttributes *imageattr,ColorAdjustType type,WINBOOL enableFlag,REAL gamma);
  GpStatus WINAPI GdipSetImageAttributesNoOp(GpImageAttributes *imageattr,ColorAdjustType type,WINBOOL enableFlag);
  GpStatus WINAPI GdipSetImageAttributesColorKeys(GpImageAttributes *imageattr,ColorAdjustType type,WINBOOL enableFlag,ARGB colorLow,ARGB colorHigh);
  GpStatus WINAPI GdipSetImageAttributesOutputChannel(GpImageAttributes *imageattr,ColorAdjustType type,WINBOOL enableFlag,ColorChannelFlags channelFlags);
  GpStatus WINAPI GdipSetImageAttributesOutputChannelColorProfile(GpImageAttributes *imageattr,ColorAdjustType type,WINBOOL enableFlag,GDIPCONST WCHAR *colorProfileFilename);
  GpStatus WINAPI GdipSetImageAttributesRemapTable(GpImageAttributes *imageattr,ColorAdjustType type,WINBOOL enableFlag,UINT mapSize,GDIPCONST ColorMap *map);
  GpStatus WINAPI GdipSetImageAttributesWrapMode(GpImageAttributes *imageAttr,WrapMode wrap,ARGB argb,WINBOOL clamp);
  GpStatus WINAPI GdipSetImageAttributesICMMode(GpImageAttributes *imageAttr,WINBOOL on);
  GpStatus WINAPI GdipGetImageAttributesAdjustedPalette(GpImageAttributes *imageAttr,ColorPalette *colorPalette,ColorAdjustType colorAdjustType);
  GpStatus WINAPI GdipFlush(GpGraphics *graphics,GpFlushIntention intention);
  GpStatus WINAPI GdipCreateFromHDC(HDC hdc,GpGraphics **graphics);
  GpStatus WINAPI GdipCreateFromHDC2(HDC hdc,HANDLE hDevice,GpGraphics **graphics);
  GpStatus WINAPI GdipCreateFromHWND(HWND hwnd,GpGraphics **graphics);
  GpStatus WINAPI GdipCreateFromHWNDICM(HWND hwnd,GpGraphics **graphics);
  GpStatus WINAPI GdipDeleteGraphics(GpGraphics *graphics);
  GpStatus WINAPI GdipGetDC(GpGraphics *graphics,HDC *hdc);
  GpStatus WINAPI GdipReleaseDC(GpGraphics *graphics,HDC hdc);
  GpStatus WINAPI GdipSetCompositingMode(GpGraphics *graphics,CompositingMode compositingMode);
  GpStatus WINAPI GdipGetCompositingMode(GpGraphics *graphics,CompositingMode *compositingMode);
  GpStatus WINAPI GdipSetRenderingOrigin(GpGraphics *graphics,INT x,INT y);
  GpStatus WINAPI GdipGetRenderingOrigin(GpGraphics *graphics,INT *x,INT *y);
  GpStatus WINAPI GdipSetCompositingQuality(GpGraphics *graphics,CompositingQuality compositingQuality);
  GpStatus WINAPI GdipGetCompositingQuality(GpGraphics *graphics,CompositingQuality *compositingQuality);
  GpStatus WINAPI GdipSetSmoothingMode(GpGraphics *graphics,SmoothingMode smoothingMode);
  GpStatus WINAPI GdipGetSmoothingMode(GpGraphics *graphics,SmoothingMode *smoothingMode);
  GpStatus WINAPI GdipSetPixelOffsetMode(GpGraphics *graphics,PixelOffsetMode pixelOffsetMode);
  GpStatus WINAPI GdipGetPixelOffsetMode(GpGraphics *graphics,PixelOffsetMode *pixelOffsetMode);
  GpStatus WINAPI GdipSetTextRenderingHint(GpGraphics *graphics,TextRenderingHint mode);
  GpStatus WINAPI GdipGetTextRenderingHint(GpGraphics *graphics,TextRenderingHint *mode);
  GpStatus WINAPI GdipSetTextContrast(GpGraphics *graphics,UINT contrast);
  GpStatus WINAPI GdipGetTextContrast(GpGraphics *graphics,UINT *contrast);
  GpStatus WINAPI GdipSetInterpolationMode(GpGraphics *graphics,InterpolationMode interpolationMode);
  GpStatus WINAPI GdipGetInterpolationMode(GpGraphics *graphics,InterpolationMode *interpolationMode);
  GpStatus WINAPI GdipSetWorldTransform(GpGraphics *graphics,GpMatrix *matrix);
  GpStatus WINAPI GdipResetWorldTransform(GpGraphics *graphics);
  GpStatus WINAPI GdipMultiplyWorldTransform(GpGraphics *graphics,GDIPCONST GpMatrix *matrix,GpMatrixOrder order);
  GpStatus WINAPI GdipTranslateWorldTransform(GpGraphics *graphics,REAL dx,REAL dy,GpMatrixOrder order);
  GpStatus WINAPI GdipScaleWorldTransform(GpGraphics *graphics,REAL sx,REAL sy,GpMatrixOrder order);
  GpStatus WINAPI GdipRotateWorldTransform(GpGraphics *graphics,REAL angle,GpMatrixOrder order);
  GpStatus WINAPI GdipGetWorldTransform(GpGraphics *graphics,GpMatrix *matrix);
  GpStatus WINAPI GdipResetPageTransform(GpGraphics *graphics);
  GpStatus WINAPI GdipGetPageUnit(GpGraphics *graphics,GpUnit *unit);
  GpStatus WINAPI GdipGetPageScale(GpGraphics *graphics,REAL *scale);
  GpStatus WINAPI GdipSetPageUnit(GpGraphics *graphics,GpUnit unit);
  GpStatus WINAPI GdipSetPageScale(GpGraphics *graphics,REAL scale);
  GpStatus WINAPI GdipGetDpiX(GpGraphics *graphics,REAL *dpi);
  GpStatus WINAPI GdipGetDpiY(GpGraphics *graphics,REAL *dpi);
  GpStatus WINAPI GdipTransformPoints(GpGraphics *graphics,GpCoordinateSpace destSpace,GpCoordinateSpace srcSpace,GpPointF *points,INT count);
  GpStatus WINAPI GdipTransformPointsI(GpGraphics *graphics,GpCoordinateSpace destSpace,GpCoordinateSpace srcSpace,GpPoint *points,INT count);
  GpStatus WINAPI GdipGetNearestColor(GpGraphics *graphics,ARGB *argb);
  HPALETTE WINAPI GdipCreateHalftonePalette();
  GpStatus WINAPI GdipDrawLine(GpGraphics *graphics,GpPen *pen,REAL x1,REAL y1,REAL x2,REAL y2);
  GpStatus WINAPI GdipDrawLineI(GpGraphics *graphics,GpPen *pen,INT x1,INT y1,INT x2,INT y2);
  GpStatus WINAPI GdipDrawLines(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipDrawLinesI(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipDrawArc(GpGraphics *graphics,GpPen *pen,REAL x,REAL y,REAL width,REAL height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipDrawArcI(GpGraphics *graphics,GpPen *pen,INT x,INT y,INT width,INT height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipDrawBezier(GpGraphics *graphics,GpPen *pen,REAL x1,REAL y1,REAL x2,REAL y2,REAL x3,REAL y3,REAL x4,REAL y4);
  GpStatus WINAPI GdipDrawBezierI(GpGraphics *graphics,GpPen *pen,INT x1,INT y1,INT x2,INT y2,INT x3,INT y3,INT x4,INT y4);
  GpStatus WINAPI GdipDrawBeziers(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipDrawBeziersI(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipDrawRectangle(GpGraphics *graphics,GpPen *pen,REAL x,REAL y,REAL width,REAL height);
  GpStatus WINAPI GdipDrawRectangleI(GpGraphics *graphics,GpPen *pen,INT x,INT y,INT width,INT height);
  GpStatus WINAPI GdipDrawRectangles(GpGraphics *graphics,GpPen *pen,GDIPCONST GpRectF *rects,INT count);
  GpStatus WINAPI GdipDrawRectanglesI(GpGraphics *graphics,GpPen *pen,GDIPCONST GpRect *rects,INT count);
  GpStatus WINAPI GdipDrawEllipse(GpGraphics *graphics,GpPen *pen,REAL x,REAL y,REAL width,REAL height);
  GpStatus WINAPI GdipDrawEllipseI(GpGraphics *graphics,GpPen *pen,INT x,INT y,INT width,INT height);
  GpStatus WINAPI GdipDrawPie(GpGraphics *graphics,GpPen *pen,REAL x,REAL y,REAL width,REAL height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipDrawPieI(GpGraphics *graphics,GpPen *pen,INT x,INT y,INT width,INT height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipDrawPolygon(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipDrawPolygonI(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipDrawPath(GpGraphics *graphics,GpPen *pen,GpPath *path);
  GpStatus WINAPI GdipDrawCurve(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipDrawCurveI(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipDrawCurve2(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPointF *points,INT count,REAL tension);
  GpStatus WINAPI GdipDrawCurve2I(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPoint *points,INT count,REAL tension);
  GpStatus WINAPI GdipDrawCurve3(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPointF *points,INT count,INT offset,INT numberOfSegments,REAL tension);
  GpStatus WINAPI GdipDrawCurve3I(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPoint *points,INT count,INT offset,INT numberOfSegments,REAL tension);
  GpStatus WINAPI GdipDrawClosedCurve(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipDrawClosedCurveI(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipDrawClosedCurve2(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPointF *points,INT count,REAL tension);
  GpStatus WINAPI GdipDrawClosedCurve2I(GpGraphics *graphics,GpPen *pen,GDIPCONST GpPoint *points,INT count,REAL tension);
  GpStatus WINAPI GdipGraphicsClear(GpGraphics *graphics,ARGB color);
  GpStatus WINAPI GdipFillRectangle(GpGraphics *graphics,GpBrush *brush,REAL x,REAL y,REAL width,REAL height);
  GpStatus WINAPI GdipFillRectangleI(GpGraphics *graphics,GpBrush *brush,INT x,INT y,INT width,INT height);
  GpStatus WINAPI GdipFillRectangles(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpRectF *rects,INT count);
  GpStatus WINAPI GdipFillRectanglesI(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpRect *rects,INT count);
  GpStatus WINAPI GdipFillPolygon(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpPointF *points,INT count,GpFillMode fillMode);
  GpStatus WINAPI GdipFillPolygonI(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpPoint *points,INT count,GpFillMode fillMode);
  GpStatus WINAPI GdipFillPolygon2(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipFillPolygon2I(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipFillEllipse(GpGraphics *graphics,GpBrush *brush,REAL x,REAL y,REAL width,REAL height);
  GpStatus WINAPI GdipFillEllipseI(GpGraphics *graphics,GpBrush *brush,INT x,INT y,INT width,INT height);
  GpStatus WINAPI GdipFillPie(GpGraphics *graphics,GpBrush *brush,REAL x,REAL y,REAL width,REAL height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipFillPieI(GpGraphics *graphics,GpBrush *brush,INT x,INT y,INT width,INT height,REAL startAngle,REAL sweepAngle);
  GpStatus WINAPI GdipFillPath(GpGraphics *graphics,GpBrush *brush,GpPath *path);
  GpStatus WINAPI GdipFillClosedCurve(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpPointF *points,INT count);
  GpStatus WINAPI GdipFillClosedCurveI(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpPoint *points,INT count);
  GpStatus WINAPI GdipFillClosedCurve2(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpPointF *points,INT count,REAL tension,GpFillMode fillMode);
  GpStatus WINAPI GdipFillClosedCurve2I(GpGraphics *graphics,GpBrush *brush,GDIPCONST GpPoint *points,INT count,REAL tension,GpFillMode fillMode);
  GpStatus WINAPI GdipFillRegion(GpGraphics *graphics,GpBrush *brush,GpRegion *region);
  GpStatus WINAPI GdipDrawImage(GpGraphics *graphics,GpImage *image,REAL x,REAL y);
  GpStatus WINAPI GdipDrawImageI(GpGraphics *graphics,GpImage *image,INT x,INT y);
  GpStatus WINAPI GdipDrawImageRect(GpGraphics *graphics,GpImage *image,REAL x,REAL y,REAL width,REAL height);
  GpStatus WINAPI GdipDrawImageRectI(GpGraphics *graphics,GpImage *image,INT x,INT y,INT width,INT height);
  GpStatus WINAPI GdipDrawImagePoints(GpGraphics *graphics,GpImage *image,GDIPCONST GpPointF *dstpoints,INT count);
  GpStatus WINAPI GdipDrawImagePointsI(GpGraphics *graphics,GpImage *image,GDIPCONST GpPoint *dstpoints,INT count);
  GpStatus WINAPI GdipDrawImagePointRect(GpGraphics *graphics,GpImage *image,REAL x,REAL y,REAL srcx,REAL srcy,REAL srcwidth,REAL srcheight,GpUnit srcUnit);
  GpStatus WINAPI GdipDrawImagePointRectI(GpGraphics *graphics,GpImage *image,INT x,INT y,INT srcx,INT srcy,INT srcwidth,INT srcheight,GpUnit srcUnit);
  GpStatus WINAPI GdipDrawImageRectRect(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);
  GpStatus WINAPI GdipDrawImageRectRectI(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);
  GpStatus WINAPI GdipDrawImagePointsRect(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);
  GpStatus WINAPI GdipDrawImagePointsRectI(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);
  GpStatus WINAPI GdipEnumerateMetafileDestPoint(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST PointF &destPoint,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileDestPointI(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST Point &destPoint,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileDestRect(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST RectF &destRect,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileDestRectI(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST Rect &destRect,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileDestPoints(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST PointF *destPoints,INT count,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileDestPointsI(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST Point *destPoints,INT count,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileSrcRectDestPoint(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST PointF &destPoint,GDIPCONST RectF &srcRect,Unit srcUnit,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileSrcRectDestPointI(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST Point &destPoint,GDIPCONST Rect &srcRect,Unit srcUnit,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileSrcRectDestRect(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST RectF &destRect,GDIPCONST RectF &srcRect,Unit srcUnit,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileSrcRectDestRectI(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST Rect &destRect,GDIPCONST Rect &srcRect,Unit srcUnit,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileSrcRectDestPoints(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST PointF *destPoints,INT count,GDIPCONST RectF &srcRect,Unit srcUnit,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipEnumerateMetafileSrcRectDestPointsI(GpGraphics *graphics,GDIPCONST GpMetafile *metafile,GDIPCONST Point *destPoints,INT count,GDIPCONST Rect &srcRect,Unit srcUnit,EnumerateMetafileProc callback,VOID *callbackData,GDIPCONST GpImageAttributes *imageAttributes);
  GpStatus WINAPI GdipPlayMetafileRecord(GDIPCONST GpMetafile *metafile,EmfPlusRecordType recordType,UINT flags,UINT dataSize,GDIPCONST BYTE *data);
  GpStatus WINAPI GdipSetClipGraphics(GpGraphics *graphics,GpGraphics *srcgraphics,CombineMode combineMode);
  GpStatus WINAPI GdipSetClipRect(GpGraphics *graphics,REAL x,REAL y,REAL width,REAL height,CombineMode combineMode);
  GpStatus WINAPI GdipSetClipRectI(GpGraphics *graphics,INT x,INT y,INT width,INT height,CombineMode combineMode);
  GpStatus WINAPI GdipSetClipPath(GpGraphics *graphics,GpPath *path,CombineMode combineMode);
  GpStatus WINAPI GdipSetClipRegion(GpGraphics *graphics,GpRegion *region,CombineMode combineMode);
  GpStatus WINAPI GdipSetClipHrgn(GpGraphics *graphics,HRGN hRgn,CombineMode combineMode);
  GpStatus WINAPI GdipResetClip(GpGraphics *graphics);
  GpStatus WINAPI GdipTranslateClip(GpGraphics *graphics,REAL dx,REAL dy);
  GpStatus WINAPI GdipTranslateClipI(GpGraphics *graphics,INT dx,INT dy);
  GpStatus WINAPI GdipGetClip(GpGraphics *graphics,GpRegion *region);
  GpStatus WINAPI GdipGetClipBounds(GpGraphics *graphics,GpRectF *rect);
  GpStatus WINAPI GdipGetClipBoundsI(GpGraphics *graphics,GpRect *rect);
  GpStatus WINAPI GdipIsClipEmpty(GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipGetVisibleClipBounds(GpGraphics *graphics,GpRectF *rect);
  GpStatus WINAPI GdipGetVisibleClipBoundsI(GpGraphics *graphics,GpRect *rect);
  GpStatus WINAPI GdipIsVisibleClipEmpty(GpGraphics *graphics,WINBOOL *result);
  GpStatus WINAPI GdipIsVisiblePoint(GpGraphics *graphics,REAL x,REAL y,WINBOOL *result);
  GpStatus WINAPI GdipIsVisiblePointI(GpGraphics *graphics,INT x,INT y,WINBOOL *result);
  GpStatus WINAPI GdipIsVisibleRect(GpGraphics *graphics,REAL x,REAL y,REAL width,REAL height,WINBOOL *result);
  GpStatus WINAPI GdipIsVisibleRectI(GpGraphics *graphics,INT x,INT y,INT width,INT height,WINBOOL *result);
  GpStatus WINAPI GdipSaveGraphics(GpGraphics *graphics,GraphicsState *state);
  GpStatus WINAPI GdipRestoreGraphics(GpGraphics *graphics,GraphicsState state);
  GpStatus WINAPI GdipBeginContainer(GpGraphics *graphics,GDIPCONST GpRectF *dstrect,GDIPCONST GpRectF *srcrect,GpUnit unit,GraphicsContainer *state);
  GpStatus WINAPI GdipBeginContainerI(GpGraphics *graphics,GDIPCONST GpRect *dstrect,GDIPCONST GpRect *srcrect,GpUnit unit,GraphicsContainer *state);
  GpStatus WINAPI GdipBeginContainer2(GpGraphics *graphics,GraphicsContainer *state);
  GpStatus WINAPI GdipEndContainer(GpGraphics *graphics,GraphicsContainer state);
  GpStatus GdipGetMetafileHeaderFromWmf(HMETAFILE hWmf,GDIPCONST WmfPlaceableFileHeader *wmfPlaceableFileHeader,MetafileHeader *header);
  GpStatus WINAPI GdipGetMetafileHeaderFromEmf(HENHMETAFILE hEmf,MetafileHeader *header);
  GpStatus WINAPI GdipGetMetafileHeaderFromFile(GDIPCONST WCHAR *filename,MetafileHeader *header);
  GpStatus WINAPI GdipGetMetafileHeaderFromStream(IStream *stream,MetafileHeader *header);
  GpStatus WINAPI GdipGetMetafileHeaderFromMetafile(GpMetafile *metafile,MetafileHeader *header);
  GpStatus WINAPI GdipGetHemfFromMetafile(GpMetafile *metafile,HENHMETAFILE *hEmf);
  GpStatus WINAPI GdipCreateStreamOnFile(GDIPCONST WCHAR *filename,UINT access,IStream **stream);
  GpStatus WINAPI GdipCreateMetafileFromWmf(HMETAFILE hWmf,WINBOOL deleteWmf,GDIPCONST WmfPlaceableFileHeader *wmfPlaceableFileHeader,GpMetafile **metafile);
  GpStatus WINAPI GdipCreateMetafileFromEmf(HENHMETAFILE hEmf,WINBOOL deleteEmf,GpMetafile **metafile);
  GpStatus WINAPI GdipCreateMetafileFromFile(GDIPCONST WCHAR *file,GpMetafile **metafile);
  GpStatus WINAPI GdipCreateMetafileFromWmfFile(GDIPCONST WCHAR *file,GDIPCONST WmfPlaceableFileHeader *wmfPlaceableFileHeader,GpMetafile **metafile);
  GpStatus WINAPI GdipCreateMetafileFromStream(IStream *stream,GpMetafile **metafile);
  GpStatus WINAPI GdipRecordMetafile(HDC referenceHdc,EmfType type,GDIPCONST GpRectF *frameRect,MetafileFrameUnit frameUnit,GDIPCONST WCHAR *description,GpMetafile **metafile);
  GpStatus WINAPI GdipRecordMetafileI(HDC referenceHdc,EmfType type,GDIPCONST GpRect *frameRect,MetafileFrameUnit frameUnit,GDIPCONST WCHAR *description,GpMetafile **metafile);
  GpStatus WINAPI GdipRecordMetafileFileName(GDIPCONST WCHAR *fileName,HDC referenceHdc,EmfType type,GDIPCONST GpRectF *frameRect,MetafileFrameUnit frameUnit,GDIPCONST WCHAR *description,GpMetafile **metafile);
  GpStatus WINAPI GdipRecordMetafileFileNameI(GDIPCONST WCHAR *fileName,HDC referenceHdc,EmfType type,GDIPCONST GpRect *frameRect,MetafileFrameUnit frameUnit,GDIPCONST WCHAR *description,GpMetafile **metafile);
  GpStatus WINAPI GdipRecordMetafileStream(IStream *stream,HDC referenceHdc,EmfType type,GDIPCONST GpRectF *frameRect,MetafileFrameUnit frameUnit,GDIPCONST WCHAR *description,GpMetafile **metafile);
  GpStatus WINAPI GdipRecordMetafileStreamI(IStream *stream,HDC referenceHdc,EmfType type,GDIPCONST GpRect *frameRect,MetafileFrameUnit frameUnit,GDIPCONST WCHAR *description,GpMetafile **metafile);
  GpStatus WINAPI GdipSetMetafileDownLevelRasterizationLimit(GpMetafile *metafile,UINT metafileRasterizationLimitDpi);
  GpStatus WINAPI GdipGetMetafileDownLevelRasterizationLimit(GDIPCONST GpMetafile *metafile,UINT *metafileRasterizationLimitDpi);
  GpStatus WINAPI GdipGetImageDecodersSize(UINT *numDecoders,UINT *size);
  GpStatus WINAPI GdipGetImageDecoders(UINT numDecoders,UINT size,ImageCodecInfo *decoders);
  GpStatus WINAPI GdipGetImageEncodersSize(UINT *numEncoders,UINT *size);
  GpStatus WINAPI GdipGetImageEncoders(UINT numEncoders,UINT size,ImageCodecInfo *encoders);
  GpStatus WINAPI GdipComment(GpGraphics *graphics,UINT sizeData,GDIPCONST BYTE *data);
  GpStatus WINAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR *name,GpFontCollection *fontCollection,GpFontFamily **FontFamily);
  GpStatus WINAPI GdipDeleteFontFamily(GpFontFamily *FontFamily);
  GpStatus WINAPI GdipCloneFontFamily(GpFontFamily *FontFamily,GpFontFamily **clonedFontFamily);
  GpStatus WINAPI GdipGetGenericFontFamilySansSerif(GpFontFamily **nativeFamily);
  GpStatus WINAPI GdipGetGenericFontFamilySerif(GpFontFamily **nativeFamily);
  GpStatus WINAPI GdipGetGenericFontFamilyMonospace(GpFontFamily **nativeFamily);
  GpStatus WINAPI GdipGetFamilyName(GDIPCONST GpFontFamily *family,WCHAR name[LF_FACESIZE],LANGID language);
  GpStatus WINAPI GdipIsStyleAvailable(GDIPCONST GpFontFamily *family,INT style,WINBOOL *IsStyleAvailable);
  GpStatus WINAPI GdipFontCollectionEnumerable(GpFontCollection *fontCollection,GpGraphics *graphics,INT *numFound);
  GpStatus WINAPI GdipFontCollectionEnumerate(GpFontCollection *fontCollection,INT numSought,GpFontFamily *gpfamilies[],INT *numFound,GpGraphics *graphics);
  GpStatus WINAPI GdipGetEmHeight(GDIPCONST GpFontFamily *family,INT style,UINT16 *EmHeight);
  GpStatus WINAPI GdipGetCellAscent(GDIPCONST GpFontFamily *family,INT style,UINT16 *CellAscent);
  GpStatus WINAPI GdipGetCellDescent(GDIPCONST GpFontFamily *family,INT style,UINT16 *CellDescent);
  GpStatus WINAPI GdipGetLineSpacing(GDIPCONST GpFontFamily *family,INT style,UINT16 *LineSpacing);
  GpStatus WINAPI GdipCreateFontFromDC(HDC hdc,GpFont **font);
  GpStatus WINAPI GdipCreateFontFromLogfontA(HDC hdc,GDIPCONST LOGFONTA *logfont,GpFont **font);
  GpStatus WINAPI GdipCreateFontFromLogfontW(HDC hdc,GDIPCONST LOGFONTW *logfont,GpFont **font);
  GpStatus WINAPI GdipCreateFont(GDIPCONST GpFontFamily *fontFamily,REAL emSize,INT style,Unit unit,GpFont **font);
  GpStatus WINAPI GdipCloneFont(GpFont *font,GpFont **cloneFont);
  GpStatus WINAPI GdipDeleteFont(GpFont *font);
  GpStatus WINAPI GdipGetFamily(GpFont *font,GpFontFamily **family);
  GpStatus WINAPI GdipGetFontStyle(GpFont *font,INT *style);
  GpStatus WINAPI GdipGetFontSize(GpFont *font,REAL *size);
  GpStatus WINAPI GdipGetFontUnit(GpFont *font,Unit *unit);
  GpStatus WINAPI GdipGetFontHeight(GDIPCONST GpFont *font,GDIPCONST GpGraphics *graphics,REAL *height);
  GpStatus WINAPI GdipGetFontHeightGivenDPI(GDIPCONST GpFont *font,REAL dpi,REAL *height);
  GpStatus WINAPI GdipGetLogFontA(GpFont *font,GpGraphics *graphics,LOGFONTA *logfontA);
  GpStatus WINAPI GdipGetLogFontW(GpFont *font,GpGraphics *graphics,LOGFONTW *logfontW);
  GpStatus WINAPI GdipNewInstalledFontCollection(GpFontCollection **fontCollection);
  GpStatus WINAPI GdipNewPrivateFontCollection(GpFontCollection **fontCollection);
  GpStatus WINAPI GdipDeletePrivateFontCollection(GpFontCollection **fontCollection);
  GpStatus WINAPI GdipGetFontCollectionFamilyCount(GpFontCollection *fontCollection,INT *numFound);
  GpStatus WINAPI GdipGetFontCollectionFamilyList(GpFontCollection *fontCollection,INT numSought,GpFontFamily *gpfamilies[],INT *numFound);
  GpStatus WINAPI GdipPrivateAddFontFile(GpFontCollection *fontCollection,GDIPCONST WCHAR *filename);
  GpStatus WINAPI GdipPrivateAddMemoryFont(GpFontCollection *fontCollection,GDIPCONST void *memory,INT length);
  GpStatus WINAPI GdipDrawString(GpGraphics *graphics,GDIPCONST WCHAR *string,INT length,GDIPCONST GpFont *font,GDIPCONST RectF *layoutRect,GDIPCONST GpStringFormat *stringFormat,GDIPCONST GpBrush *brush);
  GpStatus WINAPI GdipMeasureString(GpGraphics *graphics,GDIPCONST WCHAR *string,INT length,GDIPCONST GpFont *font,GDIPCONST RectF *layoutRect,GDIPCONST GpStringFormat *stringFormat,RectF *boundingBox,INT *codepointsFitted,INT *linesFilled);
  GpStatus WINAPI GdipMeasureCharacterRanges(GpGraphics *graphics,GDIPCONST WCHAR *string,INT length,GDIPCONST GpFont *font,GDIPCONST RectF &layoutRect,GDIPCONST GpStringFormat *stringFormat,INT regionCount,GpRegion **regions);
  GpStatus WINAPI GdipDrawDriverString(GpGraphics *graphics,GDIPCONST UINT16 *text,INT length,GDIPCONST GpFont *font,GDIPCONST GpBrush *brush,GDIPCONST PointF *positions,INT flags,GDIPCONST GpMatrix *matrix);
  GpStatus WINAPI GdipMeasureDriverString(GpGraphics *graphics,GDIPCONST UINT16 *text,INT length,GDIPCONST GpFont *font,GDIPCONST PointF *positions,INT flags,GDIPCONST GpMatrix *matrix,RectF *boundingBox);
  GpStatus WINAPI GdipCreateStringFormat(INT formatAttributes,LANGID language,GpStringFormat **format);
  GpStatus WINAPI GdipStringFormatGetGenericDefault(GpStringFormat **format);
  GpStatus WINAPI GdipStringFormatGetGenericTypographic(GpStringFormat **format);
  GpStatus WINAPI GdipDeleteStringFormat(GpStringFormat *format);
  GpStatus WINAPI GdipCloneStringFormat(GDIPCONST GpStringFormat *format,GpStringFormat **newFormat);
  GpStatus WINAPI GdipSetStringFormatFlags(GpStringFormat *format,INT flags);
  GpStatus WINAPI GdipGetStringFormatFlags(GDIPCONST GpStringFormat *format,INT *flags);
  GpStatus WINAPI GdipSetStringFormatAlign(GpStringFormat *format,StringAlignment align);
  GpStatus WINAPI GdipGetStringFormatAlign(GDIPCONST GpStringFormat *format,StringAlignment *align);
  GpStatus WINAPI GdipSetStringFormatLineAlign(GpStringFormat *format,StringAlignment align);
  GpStatus WINAPI GdipGetStringFormatLineAlign(GDIPCONST GpStringFormat *format,StringAlignment *align);
  GpStatus WINAPI GdipSetStringFormatTrimming(GpStringFormat *format,StringTrimming trimming);
  GpStatus WINAPI GdipGetStringFormatTrimming(GDIPCONST GpStringFormat *format,StringTrimming *trimming);
  GpStatus WINAPI GdipSetStringFormatHotkeyPrefix(GpStringFormat *format,INT hotkeyPrefix);
  GpStatus WINAPI GdipGetStringFormatHotkeyPrefix(GDIPCONST GpStringFormat *format,INT *hotkeyPrefix);
  GpStatus WINAPI GdipSetStringFormatTabStops(GpStringFormat *format,REAL firstTabOffset,INT count,GDIPCONST REAL *tabStops);
  GpStatus WINAPI GdipGetStringFormatTabStops(GDIPCONST GpStringFormat *format,INT count,REAL *firstTabOffset,REAL *tabStops);
  GpStatus WINAPI GdipGetStringFormatTabStopCount(GDIPCONST GpStringFormat *format,INT *count);
  GpStatus WINAPI GdipSetStringFormatDigitSubstitution(GpStringFormat *format,LANGID language,StringDigitSubstitute substitute);
  GpStatus WINAPI GdipGetStringFormatDigitSubstitution(GDIPCONST GpStringFormat *format,LANGID *language,StringDigitSubstitute *substitute);
  GpStatus WINAPI GdipGetStringFormatMeasurableCharacterRangeCount(GDIPCONST GpStringFormat *format,INT *count);
  GpStatus WINAPI GdipSetStringFormatMeasurableCharacterRanges(GpStringFormat *format,INT rangeCount,GDIPCONST CharacterRange *ranges);
  GpStatus WINAPI GdipCreateCachedBitmap(GpBitmap *bitmap,GpGraphics *graphics,GpCachedBitmap **cachedBitmap);
  GpStatus WINAPI GdipDeleteCachedBitmap(GpCachedBitmap *cachedBitmap);
  GpStatus WINAPI GdipDrawCachedBitmap(GpGraphics *graphics,GpCachedBitmap *cachedBitmap,INT x,INT y);
  UINT WINAPI GdipEmfToWmfBits(HENHMETAFILE hemf,UINT cbData16,LPBYTE pData16,INT iMapMode,INT eFlags);
  GpStatus WINAPI GdipSetImageAttributesCachedBackground(GpImageAttributes *imageattr,WINBOOL enableFlag);
  GpStatus WINAPI GdipTestControl(GpTestControlEnum control,void *param);
  GpStatus WINAPI GdiplusNotificationHook(ULONG_PTR *token);
  VOID WINAPI GdiplusNotificationUnhook(ULONG_PTR token);

#ifdef __cplusplus
}
#endif
#endif
