diff org.eclipse.swt.win32.win32.x86/src/org/eclipse/swt/internal/gdip/native.d @ 0:6dd524f61e62

add dwt win and basic java stuff
author Frank Benoit <benoit@tionex.de>
date Mon, 02 Mar 2009 14:44:16 +0100
parents
children 735224fcc45f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.eclipse.swt.win32.win32.x86/src/org/eclipse/swt/internal/gdip/native.d	Mon Mar 02 14:44:16 2009 +0100
@@ -0,0 +1,1714 @@
+/******************************************************************************
+
+  module:
+
+  Based on D version created by John Chapman for the Juno Project
+    see: www.dsource.org/projects/juno
+
+  Changes and Additions for SWT:
+    John Reimer <terminal.node@gmail.com>
+
+******************************************************************************/
+
+module org.eclipse.swt.internal.gdip.native;
+
+import org.eclipse.swt.internal.win32.WINTYPES;
+import tango.sys.SharedLib : SharedLib;
+import java.lang.all;
+
+extern(Windows):
+
+/******************************************************************************
+
+
+******************************************************************************/
+
+enum DebugEventLevel {
+  Fatal,
+  Warning
+}
+
+alias void  function(DebugEventLevel level, char* message) DebugEventProc;
+
+alias int   function(out uint token)    NotificationHookProc;
+alias void  function(uint token)        NotificationUnhookProc;
+
+
+/******************************************************************************
+
+
+******************************************************************************/
+
+
+struct GdiplusStartupInput {
+  uint GdiplusVersion;
+  DebugEventProc DebugEventCallback;
+  int SuppressBackgroundThread;
+  int SuppressExternalCodecs;
+}
+
+struct GdiplusStartupOutput {
+  NotificationHookProc NotificationHook;
+  NotificationUnhookProc NotificationUnhook;
+}
+
+struct GpBitmapData {
+  int Width;
+  int Height;
+  int Stride;
+  int PixelFormat;
+  void* Scan0;
+  int Reserved;
+}
+
+struct GpColorMatrix {
+  float[5][5] m;
+}
+
+struct GpPropertyItem {
+  int id;
+  int length;
+  short type;
+  void* value;
+}
+
+struct GpColorPalette {
+  int Flags;
+  int Count;
+  int[1] Entries;
+}
+
+public struct GpRectF {
+    public float X;
+    public float Y;
+    public float Width;
+    public float Height;
+}
+
+public struct GpRect {
+    public int X;
+    public int Y;
+    public int Width;
+    public int Height;
+}
+public struct GpPoint {
+    public int X;
+    public int Y;
+}
+public struct GpPointF {
+    public float X;
+    public float Y;
+}
+
+alias int function(void*) GpDrawImageAbort;
+alias GpDrawImageAbort GpGetThumbnailImageAbort;
+
+/******************************************************************************
+
+
+******************************************************************************/
+
+enum Status {
+  OK,
+  GenericError,
+  InvalidParameter,
+  OutOfMemory,
+  ObjectBusy,
+  InsufficientBuffer,
+  NotImplemented,
+  Win32Error,
+  WrongState,
+  Aborted,
+  FileNotFound,
+  ValueOverflow,
+  AccessDenied,
+  UnknownImageFormat,
+  FontFamilyNotFound,
+  FontStyleNotFound,
+  NotTrueTypeFont,
+  UnsupportedGdiplusVersion,
+  GdiplusNotInitialized,
+  PropertyNotFound,
+  PropertyNotSupported
+}
+
+/**************************************************************************
+
+	Opaque types managed by Gdi+
+
+**************************************************************************/
+typedef GpImage  GpBitmap;
+
+// alias   uint   ARGB;
+typedef Handle GpFontFamily;
+typedef Handle GpImage;
+typedef Handle GpBrush;
+typedef Handle GpFont;
+typedef Handle GpFontCollection;
+typedef Handle GpGraphics;
+typedef Handle GpGraphicsPath;
+typedef Handle GpImageAttributes;
+typedef Handle GpHatchBrush;
+typedef Handle GpLinearGradientBrush;
+typedef Handle GpMatrix;
+typedef Handle GpPen;
+typedef Handle GpRegion;
+typedef Handle GpSolidBrush;
+typedef Handle GpStringFormat;
+typedef Handle GpTextureBrush;
+typedef Handle GpPath;
+
+alias void* Handle;
+
+alias int BrushType;
+alias int CombineMode;
+alias int FlushIntention;
+alias int MatrixOrder;
+alias int GraphicsUnit;
+alias int QualityMode;
+alias int SmoothingMode;
+alias int InterpolationMode;
+alias int CompositingMode;
+alias int CompositingQuality;
+alias int PixelOffsetMode;
+alias int PixelFormat;
+alias int RotateFlipType;
+alias int CoordinateSpace;
+alias int WarpMode;
+alias int WrapMode;
+alias int FillMode;
+alias int LineJoin;
+alias int LineCap;
+alias int DashCap;
+alias int DashStyle;
+alias int PenAlignment;
+alias int ColorMatrixFlag;
+alias int ColorAdjustType;
+alias int ColorChannelFlag;
+alias int ImageLockMode;
+alias int ImageCodecFlags;
+alias int EncoderParameterValueType;
+alias int GenericFontFamilies;
+alias int FontStyle;
+alias int HatchStyle;
+alias int StringFormatFlags;
+alias int StringAlignment;
+alias int StringTrimming;
+alias int TextRenderingHint;
+alias int PenType;
+alias int LinearGradientMode;
+alias int KnownColor;
+alias int Unit;
+
+alias uint GraphicsState;
+
+/******************************************************************************
+
+	Flat GDI+ Exports (C Interface)
+
+******************************************************************************/
+
+extern (Windows):
+
+version( STATIC_GDIPLUS ){
+Status GdiplusStartup( uint* token, GdiplusStartupInput* input, GdiplusStartupOutput* output);
+void   GdiplusShutdown(uint token);
+Status GdipCreateFromHDC(Handle hdc, out Handle graphics);
+Status GdipCreateFromHDC2(Handle hdc, Handle hDevice, out Handle graphics);
+Status GdipCreateFromHWND(Handle hwnd, out Handle graphics);
+Status GdipGetImageGraphicsContext(Handle image, out Handle graphics);
+Status GdipDeleteGraphics(Handle graphics);
+Status GdipGetDC(Handle graphics, out Handle hdc);
+Status GdipReleaseDC(Handle graphics, Handle hdc);
+Status GdipSetClipGraphics(Handle graphics, Handle srcgraphics, CombineMode combineMode);
+Status GdipSetClipRectI(Handle graphics, int x, int y, int width, int height, CombineMode combineMode);
+Status GdipSetClipRect(Handle graphics, float x, float y, float width, float height, CombineMode combineMode);
+Status GdipSetClipPath(Handle graphics, Handle path, CombineMode combineMode);
+Status GdipSetClipRegion(Handle graphics, Handle region, CombineMode combineMode);
+Status GdipSetClipHrgn(Handle graphics, HRGN hRgn, CombineMode combineMode);
+
+Status GdipGetClip(Handle graphics, out Handle region);
+Status GdipResetClip(Handle graphics);
+Status GdipSaveGraphics(Handle graphics, out uint state);
+Status GdipRestoreGraphics(Handle graphics, int state);
+Status GdipFlush(Handle graphics, FlushIntention intention);
+Status GdipScaleWorldTransform(Handle graphics, float sx, float sy, MatrixOrder order);
+Status GdipRotateWorldTransform(Handle graphics, float angle, MatrixOrder order);
+Status GdipTranslateWorldTransform(Handle graphics, float dx, float dy, MatrixOrder order);
+Status GdipMultiplyWorldTransform(Handle graphics, Handle matrix, MatrixOrder order);
+Status GdipResetWorldTransform(Handle graphics);
+Status GdipBeginContainer(Handle graphics, ref GpRectF dstrect, ref GpRectF srcrect, GraphicsUnit unit, out int state);
+Status GdipBeginContainerI(Handle graphics, ref GpRect dstrect, ref GpRect srcrect, GraphicsUnit unit, out int state);
+Status GdipBeginContainer2(Handle graphics, out int state);
+Status GdipEndContainer(Handle graphics, int state);
+Status GdipGetDpiX(Handle graphics, out float dpi);
+Status GdipGetDpiY(Handle graphics, out float dpi);
+Status GdipGetPageUnit(Handle graphics, out GraphicsUnit unit);
+Status GdipSetPageUnit(Handle graphics, GraphicsUnit unit);
+Status GdipGetPageScale(Handle graphics, out float scale);
+Status GdipSetPageScale(Handle graphics, float scale);
+Status GdipGetWorldTransform(Handle graphics, Handle matrix); // out not necessary?
+Status GdipSetWorldTransform(Handle graphics, Handle matrix);
+Status GdipGetCompositingMode(Handle graphics, out CompositingMode compositingMode);
+Status GdipSetCompositingMode(Handle graphics, CompositingMode compositingMode);
+Status GdipGetCompositingQuality(Handle graphics, out CompositingQuality compositingQuality);
+Status GdipSetCompositingQuality(Handle graphics, CompositingQuality compositingQuality);
+Status GdipGetInterpolationMode(Handle graphics, out InterpolationMode interpolationMode);
+Status GdipSetInterpolationMode(Handle graphics, InterpolationMode interpolationMode);
+Status GdipGetSmoothingMode(Handle graphics, out SmoothingMode smoothingMode);
+Status GdipSetSmoothingMode(Handle graphics, SmoothingMode smoothingMode);
+Status GdipGetPixelOffsetMode(Handle graphics, out PixelOffsetMode pixelOffsetMode);
+Status GdipSetPixelOffsetMode(Handle graphics, PixelOffsetMode pixelOffsetMode);
+Status GdipGetTextContrast(Handle graphics, out uint textContrast);
+Status GdipSetTextContrast(Handle graphics, uint textContrast);
+Status GdipGraphicsClear(Handle graphics, int color);
+Status GdipDrawLine(Handle graphics, Handle pen, float x1, float y1, float x2, float y2);
+Status GdipDrawLines(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawLineI(Handle graphics, Handle pen, int x1, int y1, int x2, int y2);
+Status GdipDrawLinesI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawArc(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipDrawArcI(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipDrawBezier(Handle graphics, Handle pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4);
+Status GdipDrawBeziers(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawBezierI(Handle graphics, Handle pen, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+Status GdipDrawBeziersI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawRectangle(Handle graphics, Handle pen, float x, float y, float width, float height);
+Status GdipDrawRectangles(Handle graphics, Handle pen, GpRectF* rects, int count);
+Status GdipDrawRectangleI(Handle graphics, Handle pen, int x, int y, int width, int height);
+Status GdipDrawRectanglesI(Handle graphics, Handle pen, GpRect* rects, int count);
+Status GdipDrawEllipse(Handle graphics, Handle pen, float x, float y, float width, float height);
+Status GdipDrawEllipseI(Handle graphics, Handle pen, int x, int y, int width, int height);
+Status GdipDrawPie(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipDrawPieI(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipDrawPolygon(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawPolygonI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawCurve(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawCurve2(Handle graphics, Handle pen, GpPointF* points, int count, float tension);
+Status GdipDrawCurve3(Handle graphics, Handle pen, GpPointF* points, int count, int offset, int numberOfSegments, float tension);
+Status GdipDrawCurveI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawCurve2I(Handle graphics, Handle pen, GpPoint* points, int count, float tension);
+Status GdipDrawCurve3I(Handle graphics, Handle pen, GpPoint* points, int count, int offset, int numberOfSegments, float tension);
+Status GdipDrawClosedCurve(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawClosedCurve2(Handle graphics, Handle pen, GpPointF* points, int count, float tension);
+Status GdipDrawClosedCurveI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawClosedCurve2I(Handle graphics, Handle pen, GpPoint* points, int count, float tension);
+Status GdipFillRectangleI(Handle graphics, Handle brush, int x, int y, int width, int height);
+Status GdipFillRectangle(Handle graphics, Handle brush, float x, float y, float width, float height);
+Status GdipFillRectanglesI(Handle graphics, Handle brush, GpRect* rects, int count);
+Status GdipFillRectangles(Handle graphics, Handle brush, GpRectF* rects, int count);
+Status GdipFillPolygon(Handle graphics, Handle brush, GpPointF* rects, int count, FillMode fillMode);
+Status GdipFillPolygonI(Handle graphics, Handle brush, GpPoint* rects, int count, FillMode fillMode);
+Status GdipFillEllipse(Handle graphics, Handle brush, float x, float y, float width, float height);
+Status GdipFillEllipseI(Handle graphics, Handle brush, int x, int y, int width, int height);
+Status GdipFillPie(Handle graphics, Handle brush, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipFillPieI(Handle graphics, Handle brush, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipFillPath(Handle graphics, Handle brush, Handle path);
+Status GdipFillClosedCurve(Handle graphics, Handle brush, GpPointF* points, int count);
+Status GdipFillClosedCurveI(Handle graphics, Handle brush, GpPoint* points, int count);
+Status GdipFillClosedCurve2(Handle graphics, Handle brush, GpPointF* points, int count, FillMode fillMode, float tension);
+Status GdipFillClosedCurve2I(Handle graphics, Handle brush, GpPoint* points, int count, FillMode fillMode, float tension);
+Status GdipFillRegion(Handle graphics, Handle brush, Handle region);
+Status GdipDrawString(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, Handle brush);
+Status GdipMeasureString(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, ref GpRectF boundingBox, int* codepointsFitted, int* linesFitted);
+Status GdipGetStringFormatMeasurableCharacterRangeCount(Handle format, out int count);
+Status GdipCloneStringFormat(Handle format, out Handle newFormat);
+
+Status GdipMeasureCharacterRanges(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, int regionCount, Handle* regions);
+Status GdipDrawImage(Handle graphics, Handle image, float x, float y);
+Status GdipDrawImageI(Handle graphics, Handle image, int x, int y);
+Status GdipDrawImageRect(Handle graphics, Handle image, float x, float y, float width, float height);
+Status GdipDrawImageRectI(Handle graphics, Handle image, int x, int y, int width, int height);
+Status GdipDrawImagePointRect(Handle graphics, Handle image, float x, float y, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit);
+Status GdipDrawImagePointRectI(Handle graphics, Handle image, int x, int y, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit);
+Status GdipDrawImageRectRect(Handle graphics, Handle image, float dstx, float dsty, float dstwidth, float dstheight, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
+Status GdipDrawImageRectRectI(Handle graphics, Handle image, int dstx, int dsty, int dstwidth, int dstheight, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
+Status GdipDrawImagePoints(Handle graphics, Handle image, GpPointF* dstpoints, int count);
+Status GdipDrawImagePointsI(Handle graphics, Handle image, GpPoint* dstpoints, int count);
+Status GdipDrawImagePointsRect(Handle graphics, Handle image, GpPointF* dstpoints, int count, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
+Status GdipDrawImagePointsRectI(Handle graphics, Handle image, GpPoint* dstpoints, int count, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
+Status GdipIsVisiblePoint(Handle graphics, float x, float y, out int result);
+Status GdipIsVisiblePointI(Handle graphics, int x, int y, out int result);
+Status GdipIsVisibleRect(Handle graphics, float x, float y, float width, float height, out int result);
+Status GdipIsVisibleRectI(Handle graphics, int x, int y, int width, int height, out int result);
+Status GdipGetTextRenderingHint(Handle graphics, out TextRenderingHint mode);
+Status GdipSetTextRenderingHint(Handle graphics, TextRenderingHint mode);
+Status GdipGetClipBounds(Handle graphics, out GpRectF rect);
+Status GdipGetClipBoundsI(Handle graphics, out GpRect rect);
+Status GdipGetVisibleClipBounds(Handle graphics, out GpRectF rect);
+Status GdipGetVisibleClipBoundsI(Handle graphics, out GpRect rect);
+Status GdipIsClipEmpty(Handle graphics, out int result);
+Status GdipIsVisibleClipEmpty(Handle graphics, out int result);
+Status GdipGetRenderingOrigin(Handle graphics, out int x, out int y);
+Status GdipSetRenderingOrigin(Handle graphics, int x, int y);
+Status GdipGetNearestColor(Handle graphics, ref int argb);
+Status GdipComment(Handle graphics, uint sizeData, ubyte* data);
+Status GdipTransformPoints(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPointF* points, int count);
+Status GdipTransformPointsI(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPoint* points, int count);
+
+Status GdipCreateMatrix(out Handle matrix);
+Status GdipCreateMatrix2(float m11, float m12, float m21, float m22, float dx, float dy, out Handle matrix);
+Status GdipCreateMatrix3(ref GpRectF rect, GpPointF* dstplg, out Handle matrix);
+Status GdipCreateMatrix3I(ref GpRect rect, GpPoint* dstplg, out Handle matrix);
+Status GdipDeleteMatrix(Handle matrix);
+Status GdipCloneMatrix(Handle matrix, out Handle cloneMatrix);
+Status GdipGetMatrixElements(Handle matrix, float* matrixOut);
+Status GdipSetMatrixElements(Handle matrix, float m11, float m12, float m21, float m22, float xy, float dy);
+Status GdipInvertMatrix(Handle matrix);
+Status GdipMultiplyMatrix(Handle matrix, Handle matrix2, MatrixOrder order);
+Status GdipScaleMatrix(Handle matrix, float scaleX, float scaleY, MatrixOrder order);
+Status GdipShearMatrix(Handle matrix, float shearX, float shearY, MatrixOrder order);
+Status GdipRotateMatrix(Handle matrix, float angle, MatrixOrder order);
+Status GdipTranslateMatrix(Handle matrix, float offsetX, float offsetY, MatrixOrder order);
+Status GdipIsMatrixIdentity(Handle matrix, out int result);
+Status GdipIsMatrixInvertible(Handle matrix, out int result);
+Status GdipTransformMatrixPoints(Handle matrix, GpPointF *pts, int count);
+
+Status GdipGetBrushType(Handle brush, out BrushType type );
+Status GdipCloneBrush(Handle brush, out Handle cloneBrush);
+Status GdipDeleteBrush(Handle brush);
+
+Status GdipCreateSolidFill(int color, out Handle brush);
+Status GdipGetSolidFillColor(Handle brush, out int color);
+Status GdipSetSolidFillColor(Handle brush, int color);
+
+Status GdipCreateTexture(Handle image, WrapMode wrapMode, out Handle texture);
+Status GdipCreateTexture2(Handle image, WrapMode wrapMode, float x, float y, float width, float height, out Handle texture);
+Status GdipCreateTexture2I(Handle image, WrapMode wrapMode, int x, int y, int width, int height, out Handle texture);
+Status GdipGetTextureImage(Handle brush, out Handle image);
+Status GdipGetTextureTransform(Handle brush, out Handle matrix);
+Status GdipSetTextureTransform(Handle brush, Handle matrix);
+Status GdipGetTextureWrapMode(Handle brush, out WrapMode wrapmode);
+Status GdipSetTextureWrapMode(Handle brush, WrapMode wrapmode);
+
+Status GdipCreateHatchBrush(HatchStyle hatchstyle, int forecol, int backcol, out Handle brush);
+Status GdipGetHatchStyle(Handle brush, out HatchStyle hatchstyle);
+Status GdipGetHatchForegroundColor(Handle brush, out int forecol);
+Status GdipGetHatchBackgroundColor(Handle brush, out int backcol);
+
+Status GdipCreateLineBrushI(ref GpPoint point1, ref GpPoint point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrush(ref GpPointF point1, ref GpPointF point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrushFromRectI(ref GpRect rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrushFromRect(ref GpRectF rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrushFromRectWithAngleI(ref GpRect rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrushFromRectWithAngle(ref GpRectF rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient);
+Status GdipGetLineBlendCount(Handle brush, out int count);
+Status GdipGetLineBlend(Handle brush, float* blend, float* positions, int count);
+Status GdipSetLineBlend(Handle brush, float* blend, float* positions, int count);
+Status GdipGetLinePresetBlendCount(Handle brush, out int count);
+Status GdipGetLinePresetBlend(Handle brush, uint* blend, float* positions, int count);
+Status GdipSetLinePresetBlend(Handle brush, uint* blend, float* positions, int count);
+Status GdipGetLineWrapMode(Handle brush, out WrapMode wrapmode);
+Status GdipSetLineWrapMode(Handle brush, WrapMode wrapmode);
+Status GdipGetLineRect(Handle brush, out GpRectF rect);
+Status GdipGetLineColors(Handle brush, int* colors);
+Status GdipSetLineColors(Handle brush, int color1, int color2);
+Status GdipGetLineGammaCorrection(Handle brush, out int useGammaCorrection);
+Status GdipSetLineGammaCorrection(Handle brush, int useGammaCorrection);
+Status GdipSetLineSigmaBlend(Handle brush, float focus, float scale);
+Status GdipSetLineLinearBlend(Handle brush, float focus, float scale);
+Status GdipGetLineTransform(Handle brush, out Handle matrix);
+Status GdipSetLineTransform(Handle brush, Handle matrix);
+Status GdipResetLineTransform(Handle brush);
+Status GdipMultiplyLineTransform(Handle brush, Handle matrix, MatrixOrder order);
+Status GdipTranslateLineTransform(Handle brush, float dx, float dy, MatrixOrder order);
+Status GdipScaleLineTransform(Handle brush, float sx, float sy, MatrixOrder order);
+Status GdipRotateLineTransform(Handle brush, float angle, MatrixOrder order);
+
+Status GdipCreatePen1(int argb, float width, GraphicsUnit unit, out Handle pen);
+Status GdipCreatePen2(Handle brush, float width, GraphicsUnit unit, out Handle pen);
+Status GdipDeletePen(Handle pen);
+Status GdipClonePen(Handle pen, out Handle clonepen);
+Status GdipSetPenLineCap197819(Handle pen, LineCap startCap, LineCap endCap, DashCap dashCap);
+Status GdipGetPenStartCap(Handle pen, out LineCap startCap);
+Status GdipSetPenStartCap(Handle pen, LineCap startCap);
+Status GdipGetPenEndCap(Handle pen, out LineCap endCap);
+Status GdipSetPenEndCap(Handle pen, LineCap endCap);
+Status GdipGetPenDashCap197819(Handle pen, out DashCap endCap);
+Status GdipSetPenDashCap197819(Handle pen, DashCap endCap);
+Status GdipGetPenLineJoin(Handle pen, out LineJoin lineJoin);
+Status GdipSetPenLineJoin(Handle pen, LineJoin lineJoin);
+Status GdipGetPenMiterLimit(Handle pen, out float miterLimit);
+Status GdipSetPenMiterLimit(Handle pen, float miterLimit);
+Status GdipGetPenMode(Handle pen, out PenAlignment penMode);
+Status GdipSetPenMode(Handle pen, PenAlignment penMode);
+Status GdipGetPenTransform(Handle pen, out Handle matrix);
+Status GdipSetPenTransform(Handle pen, Handle matrix);
+Status GdipResetPenTransform(Handle pen);
+Status GdipMultiplyPenTransform(Handle pen, Handle matrix, MatrixOrder order);
+Status GdipTranslatePenTransform(Handle pen, float dx, float dy, MatrixOrder order);
+Status GdipScalePenTransform(Handle pen, float sx, float sy, MatrixOrder order);
+Status GdipRotatePenTransform(Handle pen, float angle, MatrixOrder order);
+Status GdipGetPenColor(Handle pen, out int argb);
+Status GdipSetPenColor(Handle pen, int argb);
+Status GdipGetPenWidth(Handle pen, out float width);
+Status GdipSetPenWidth(Handle pen, float width);
+Status GdipGetPenFillType(Handle pen, out PenType type);
+Status GdipGetPenBrushFill(Handle pen, out Handle brush);
+Status GdipSetPenBrushFill(Handle pen, Handle brush);
+Status GdipGetPenDashStyle(Handle pen, out DashStyle dashstyle);
+Status GdipSetPenDashStyle(Handle pen, DashStyle dashstyle);
+Status GdipGetPenDashOffset(Handle pen, out float offset);
+Status GdipSetPenDashOffset(Handle pen, float offset);
+Status GdipGetPenDashCount(Handle pen, out int count);
+Status GdipGetPenDashArray(Handle pen, float* dash, int count);
+Status GdipSetPenDashArray(Handle pen, float* dash, int count);
+Status GdipGetPenCompoundCount(Handle pen, out int count);
+Status GdipGetPenCompoundArray(Handle pen, float* dash, int count);
+Status GdipSetPenCompoundArray(Handle pen, float* dash, int count);
+
+Status GdipCreateRegion(out Handle region);
+Status GdipCreateRegionRect(ref GpRectF rect, out Handle region);
+Status GdipCreateRegionRectI(ref GpRect rect, out Handle region);
+Status GdipCreateRegionPath(Handle path, out Handle region);
+Status GdipCreateRegionHrgn(Handle hRgn, out Handle region);
+Status GdipDeleteRegion(Handle region);
+Status GdipSetInfinite(Handle region);
+Status GdipSetEmpty(Handle region);
+Status GdipCombineRegionRect(Handle region, ref GpRectF rect, CombineMode combineMode);
+Status GdipCombineRegionRectI(Handle region, ref GpRect rect, CombineMode combineMode);
+Status GdipCombineRegionPath(Handle region, Handle path, CombineMode combineMode);
+Status GdipCombineRegionRegion(Handle region, Handle region, CombineMode combineMode);
+Status GdipTranslateRegion(Handle region, float dx, float dy);
+Status GdipTranslateRegionI(Handle region, int dx, int dy);
+Status GdipTransformRegion(Handle region, Handle matrix);
+Status GdipGetRegionBounds(Handle region, Handle graphics, out GpRectF rect);
+Status GdipGetRegionHRgn(Handle region, Handle graphics, out Handle hRgn);
+Status GdipIsEmptyRegion(Handle region, Handle graphics, out int result);
+Status GdipIsInfiniteRegion(Handle region, Handle graphics, out int result);
+Status GdipIsEqualRegion(Handle region1, Handle region2, Handle graphics, out int result);
+Status GdipIsVisibleRegionPoint(Handle region, float x, float y, Handle graphics, out int result);
+Status GdipIsVisibleRegionRect(Handle region, float x, float y, float width, float height, Handle graphics, out int result);
+Status GdipIsVisibleRegionPointI(Handle region, int x, int y, Handle graphics, out int result);
+Status GdipIsVisibleRegionRectI(Handle region, int x, int y, int width, int height, Handle graphics, out int result);
+Status GdipGetRegionScansCount(Handle region, out int count, Handle matrix);
+Status GdipGetRegionScans(Handle region, GpRectF* rects, out int count, Handle matrix);
+
+Status GdipDisposeImage(Handle image);
+Status GdipImageForceValidation(Handle image);
+Status GdipLoadImageFromFileICM(wchar* filename, out Handle image);
+Status GdipLoadImageFromFile(wchar* filename, out Handle image);
+// Status GdipLoadImageFromStreamICM(IStream stream, out Handle image);
+// Status GdipLoadImageFromStream(IStream stream, out Handle image);
+// Status GdipGetImageRawFormat(Handle image, out GUID format);
+Status GdipGetImageEncodersSize(out int numEncoders, out int size);
+// Status GdipGetImageEncoders(int numEncoders, int size, GpImageCodecInfo* encoders);
+// Status GdipSaveImageToFile(Handle image, wchar* filename, ref GUID clsidEncoder, GpEncoderParameters* encoderParams);
+// Status GdipSaveImageToStream(Handle image, IStream stream, ref GUID clsidEncoder, GpEncoderParameters* encoderParams);
+// Status GdipSaveAdd(Handle image, GpEncoderParameters* encoderParams);
+// Status GdipSaveAddImage(Handle image, Handle newImage, GpEncoderParameters* encoderParams);
+Status GdipCloneImage(Handle image, out Handle cloneImage);
+Status GdipGetImageType(Handle image, out int type);
+Status GdipGetImageFlags(Handle image, out uint flags);
+Status GdipGetImageWidth(Handle image, out uint width);
+Status GdipGetImageHeight(Handle image, out uint height);
+Status GdipGetImageHorizontalResolution(Handle image, out float resolution);
+Status GdipGetImageVerticalResolution(Handle image, out float resolution);
+Status GdipGetPropertyCount(Handle image, out int numOfProperty);
+Status GdipGetPropertyIdList(Handle image, int numOfProperty, int* list);
+Status GdipGetImagePixelFormat(Handle image, out PixelFormat format);
+Status GdipGetImageDimension(Handle image, out float width, out float height);
+Status GdipGetImageThumbnail(Handle image, int thumbWidth, int thumbHeight, out Handle thumbImage, GpGetThumbnailImageAbort callback, void* callbackData);
+// Status GdipImageGetFrameCount(Handle image, ref GUID dimensionID, out int count);
+// Status GdipImageSelectActiveFrame(Handle image, ref GUID dimensionID, int frameCount);
+Status GdipImageGetFrameDimensionsCount(Handle image, out int count);
+// Status GdipImageGetFrameDimensionsList(Handle image, GUID* dimensionIDs, int count);
+Status GdipImageRotateFlip(Handle image, RotateFlipType rotateFlipType);
+Status GdipGetPropertyItemSize(Handle image, int propId, out uint propSize);
+Status GdipGetPropertyItem(Handle image, int propId, uint propSize, GpPropertyItem* buffer);
+Status GdipSetPropertyItem(Handle image, ref GpPropertyItem buffer);
+Status GdipRemovePropertyItem(Handle image, int propId);
+Status GdipGetPropertySize(Handle image, out uint totalBufferSize, ref int numProperties);
+Status GdipGetAllPropertyItems(Handle image, uint totalBufferSize, int numProperties, GpPropertyItem* allItems);
+Status GdipGetImageBounds(Handle image, out GpRectF srcRect, out GraphicsUnit srcUnit);
+// Status GdipGetEncoderParameterListSize(Handle image, ref GUID clsidEncoder, out uint size);
+// Status GdipGetEncoderParameterList(Handle image, ref GUID clsidEncoder, uint size, GpEncoderParameters* buffer);
+Status GdipGetImagePaletteSize(Handle image, out int size);
+Status GdipGetImagePalette(Handle image, GpColorPalette* palette, int size);
+Status GdipSetImagePalette(Handle image, GpColorPalette* palette);
+
+Status GdipCreateBitmapFromScan0(int width, int height, int stride, PixelFormat format, ubyte* scan0, out Handle bitmap);
+Status GdipCreateBitmapFromHBITMAP(Handle hbitmap, Handle hpalette, out Handle bitmap);
+Status GdipCreateBitmapFromHICON(Handle hicon, out Handle bitmap);
+Status GdipCreateBitmapFromFileICM(wchar* fileName, out Handle bitmap);
+Status GdipCreateBitmapFromFile(wchar* fileName, out Handle bitmap);
+// Status GdipCreateBitmapFromStreamICM(IStream stream, out Handle bitmap);
+// Status GdipCreateBitmapFromStream(IStream stream, out Handle bitmap);
+Status GdipCreateBitmapFromGraphics(int width, int height, Handle graphics, out Handle bitmap);
+Status GdipCloneBitmapArea(float x, float y, float width, float height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap);
+Status GdipCloneBitmapAreaI(int x, int y, int width, int height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap);
+Status GdipBitmapGetPixel(Handle bitmap, int x, int y, out int color);
+Status GdipBitmapSetPixel(Handle bitmap, int x, int y, int color);
+Status GdipBitmapLockBits(Handle bitmap, GpRect* rect, ImageLockMode flags, PixelFormat format, GpBitmapData* lockedBitmapData);
+Status GdipBitmapUnlockBits(Handle bitmap, GpBitmapData* lockedBitmapData);
+Status GdipBitmapSetResolution(Handle bitmap, float xdpi, float ydpi);
+Status GdipCreateHICONFromBitmap(Handle bitmap, out Handle hbmReturn);
+Status GdipCreateHBITMAPFromBitmap(Handle bitmap, out Handle hbmReturn, int background);
+
+Status GdipCreateImageAttributes(out Handle imageattr);
+Status GdipDisposeImageAttributes(Handle imageattr);
+Status GdipSetImageAttributesColorMatrix(Handle imageattr, ColorAdjustType type, int enableFlag, GpColorMatrix* colorMatrix, GpColorMatrix* grayMatrix, ColorMatrixFlag flags);
+Status GdipSetImageAttributesThreshold(Handle imageattr, ColorAdjustType type, int enableFlag, float threshold);
+Status GdipSetImageAttributesGamma(Handle imageattr, ColorAdjustType type, int enableFlag, float gamma);
+Status GdipSetImageAttributesNoOp(Handle imageattr, ColorAdjustType type, int enableFlag);
+Status GdipSetImageAttributesColorKeys(Handle imageattr, ColorAdjustType type, int enableFlag, int colorLow, int colorHigh);
+Status GdipSetImageAttributesOutputChannel(Handle imageattr, ColorAdjustType type, int enableFlag, ColorChannelFlag flags);
+Status GdipSetImageAttributesOutputChannelColorProfile(Handle imageattr, ColorAdjustType type, int enableFlag, wchar* colorProfileFilename);
+Status GdipSetImageAttributesWrapMode(Handle imageattr, WrapMode wrap, int argb, int clamp);
+
+Status GdipNewInstalledFontCollection(out Handle fontCollection);
+Status GdipNewPrivateFontCollection(out Handle fontCollection);
+Status GdipDeletePrivateFontCollection(Handle fontCollection);
+Status GdipPrivateAddFontFile(Handle fontCollection, wchar* filename);
+Status GdipPrivateAddMemoryFont(Handle fontCollection, void* memory, int length);
+Status GdipGetFontCollectionFamilyCount(Handle fontCollection, out int numFound);
+Status GdipGetFontCollectionFamilyList(Handle fontCollection, int numSought, Handle* gpfamilies, out int numFound);
+
+Status GdipCreateFontFamilyFromName(wchar* name, Handle fontCollection, out Handle FontFamily);
+Status GdipDeleteFontFamily(Handle FontFamily);
+Status GdipCloneFontFamily(Handle FontFamily, out Handle clonedFontFamily);
+Status GdipGetFamilyName(Handle family, wchar* name, int language);
+Status GdipGetGenericFontFamilyMonospace(out Handle nativeFamily);
+Status GdipGetGenericFontFamilySerif(out Handle nativeFamily);
+Status GdipGetGenericFontFamilySansSerif(out Handle nativeFamily);
+Status GdipGetEmHeight(Handle family, FontStyle style, out short EmHeight);
+Status GdipGetCellAscent(Handle family, FontStyle style, out short CellAscent);
+Status GdipGetCellDescent(Handle family, FontStyle style, out short CellDescent);
+Status GdipGetLineSpacing(Handle family, FontStyle style, out short LineSpacing);
+Status GdipIsStyleAvailable(Handle family, FontStyle style, out int IsStyleAvailable);
+
+Status GdipCreateFont(Handle fontFamily, float emSize, int style, int unit, out Handle font);
+Status GdipCreateFontFromDC(Handle hdc, out Handle font);
+Status GdipDeleteFont(Handle font);
+Status GdipCloneFont(Handle font, out Handle cloneFont);
+Status GdipGetFontSize(Handle font, out float size);
+Status GdipGetFontHeight(Handle font, Handle graphics, out float height);
+Status GdipGetFontHeightGivenDPI(Handle font, float dpi, out float height);
+Status GdipGetFontStyle(Handle font, out FontStyle style);
+Status GdipGetFontUnit(Handle font, out GraphicsUnit unit);
+Status GdipGetFamily(Handle font, out Handle family);
+Status GdipCreateFontFromLogfontW( Handle hdc, ref LOGFONTW logfont, out Handle font);
+Status GdipCreateFontFromLogfontA( Handle hdc, ref LOGFONTA logfont, out Handle font );
+
+Status GdipGetLogFontW(Handle font, Handle graphics, out LOGFONTW logfontW);
+alias GdipGetLogFontW GdipGetLogFont;
+
+Status GdipCreateStringFormat(StringFormatFlags formatAttributes, int language, out Handle format);
+Status GdipDeleteStringFormat(Handle format);
+Status GdipGetStringFormatFlags(Handle format, out StringFormatFlags flags);
+Status GdipSetStringFormatFlags(Handle format, StringFormatFlags flags);
+Status GdipGetStringFormatAlign(Handle format, out StringAlignment alignment);
+Status GdipSetStringFormatAlign(Handle format, StringAlignment alignment);
+Status GdipGetStringFormatLineAlign(Handle format, out StringAlignment alignment);
+Status GdipSetStringFormatLineAlign(Handle format, StringAlignment alignment);
+Status GdipGetStringFormatTrimming(Handle format, out StringTrimming trimming);
+Status GdipSetStringFormatTrimming(Handle format, StringTrimming trimming);
+
+Status GdipCreatePath(FillMode brushMode, out Handle path);
+Status GdipCreatePath2(GpPointF*, ubyte*, int, FillMode, out Handle);
+Status GdipCreatePath2I(GpPoint*, ubyte*, int, FillMode, out Handle);
+Status GdipDeletePath(Handle path);
+Status GdipClonePath(Handle path, out Handle clonepath);
+Status GdipResetPath(Handle path);
+Status GdipGetPathFillMode(Handle path, out FillMode fillmode);
+Status GdipSetPathFillMode(Handle path, FillMode fillmode);
+Status GdipStartPathFigure(Handle path);
+Status GdipClosePathFigure(Handle path);
+Status GdipClosePathFigures(Handle path);
+Status GdipSetPathMarker(Handle path);
+Status GdipClearPathMarkers(Handle path);
+Status GdipReversePath(Handle path);
+Status GdipGetPathLastPoint(Handle path, out GpPointF lastPoint);
+Status GdipAddPathLine(Handle path, float x1, float y1, float x2, float y2);
+Status GdipAddPathLineI(Handle path, int x1, int y1, int x2, int y2);
+Status GdipAddPathLine2(Handle path, GpPointF* points, int count);
+Status GdipAddPathLine2I(Handle path, GpPoint* points, int count);
+Status GdipAddPathArc(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipAddPathArcI(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipAddPathBezier(Handle path, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4);
+Status GdipAddPathBezierI(Handle path, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+Status GdipAddPathBeziers(Handle path, GpPointF* points, int count);
+Status GdipAddPathBeziersI(Handle path, GpPoint* points, int count);
+Status GdipAddPathCurve(Handle path, GpPointF* points, int count);
+Status GdipAddPathCurveI(Handle path, GpPoint* points, int count);
+Status GdipAddPathCurve2(Handle path, GpPointF* points, int count, float tension);
+Status GdipAddPathCurve2I(Handle path, GpPoint* points, int count, float tension);
+Status GdipAddPathCurve3(Handle path, GpPointF* points, int count, int offset, int numberOfSegments, float tension);
+Status GdipAddPathCurve3I(Handle path, GpPoint* points, int count, int offset, int numberOfSegments, float tension);
+Status GdipAddPathClosedCurve(Handle path, GpPointF* points, int count);
+Status GdipAddPathClosedCurveI(Handle path, GpPoint* points, int count);
+Status GdipAddPathClosedCurve2(Handle path, GpPointF* points, int count, float tension);
+Status GdipAddPathClosedCurve2I(Handle path, GpPoint* points, int count, float tension);
+Status GdipAddPathRectangle(Handle path, float x, float y, float width, float height);
+Status GdipAddPathRectangleI(Handle path, int x, int y, int width, int height);
+Status GdipAddPathRectangles(Handle path, GpRectF* rects, int count);
+Status GdipAddPathRectanglesI(Handle path, GpRect* rects, int count);
+Status GdipAddPathEllipse(Handle path, float x, float y, float width, float height);
+Status GdipAddPathEllipseI(Handle path, int x, int y, int width, int height);
+Status GdipAddPathPie(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipAddPathPieI(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipAddPathPolygon(Handle path, GpPointF* points, int count);
+Status GdipAddPathPolygonI(Handle path, GpPoint* points, int count);
+Status GdipAddPathPath(Handle path, Handle addingPath, int connect);
+Status GdipAddPathString(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRectF layoutRect, Handle format);
+Status GdipAddPathStringI(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRect layoutRect, Handle format);
+Status GdipTransformPath(Handle path, Handle matrix);
+Status GdipGetPathWorldBounds(Handle path, out GpRectF bounds, Handle matrix, Handle pen);
+Status GdipFlattenPath(Handle path, Handle matrix, float flatness);
+Status GdipWidenPath(Handle path, Handle pen, Handle matrix, float flatness);
+Status GdipWindingModeOutline(Handle path, Handle matrix, float flatness);
+Status GdipWarpPath(Handle path, Handle matrix, GpPointF* points, int count, float srcx, float srcy, float srcwidth, float srcwidth, WarpMode warpMode, float flatness);
+Status GdipGetPointCount(Handle path, out int count);
+Status GdipGetPathTypes(Handle path, byte* types, int count);
+Status GdipGetPathPoints(Handle path, GpPointF* points, int count);
+Status GdipIsVisiblePathPoint(Handle path, float x, float y, Handle graphics, out int result);
+Status GdipIsVisiblePathPointI(Handle path, int x, int y, Handle graphics, out int result);
+Status GdipIsOutlineVisiblePathPoint(Handle path, float x, float y, Handle pen, Handle graphics, out int result);
+Status GdipIsOutlineVisiblePathPointI(Handle path, int x, int y, Handle pen, Handle graphics, out int result);
+Status GdipDrawPath(Handle graphics, Handle pen, Handle path);
+
+
+Status GdipCreatePathIter(out Handle iterator, Handle path);
+Status GdipDeletePathIter(Handle iterator);
+Status GdipPathIterNextSubpath(Handle iterator, out int resultCount, out int startIndex, out int endIndex, out int isClosed);
+Status GdipPathIterNextSubpathPath(Handle iterator, out int resultCount, Handle path, out int isClosed);
+Status GdipPathIterNextPathType(Handle iterator, out int resultCount, out ubyte pathType, out int startIndex, out int endIndex);
+Status GdipPathIterNextMarker(Handle iterator, out int resultCount, out int startIndex, out int endIndex);
+Status GdipPathIterNextMarkerPath(Handle iterator, out int resultCount, Handle path);
+Status GdipPathIterGetCount(Handle iterator, out int count);
+Status GdipPathIterGetSubpathCount(Handle iterator, out int count);
+Status GdipPathIterHasCurve(Handle iterator, out int hasCurve);
+Status GdipPathIterRewind(Handle iterator);
+Status GdipPathIterEnumerate(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int count);
+Status GdipPathIterCopyData(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int startIndex, int endIndex);
+
+Status GdipCreatePathGradient(GpPointF* points, int count, WrapMode wrapMode, out Handle polyGradient);
+Status GdipCreatePathGradientI(GpPoint* points, int count, WrapMode wrapMode, out Handle polyGradient);
+Status GdipCreatePathGradientFromPath(Handle path, out Handle polyGradient);
+Status GdipGetPathGradientCenterColor(Handle brush, out int colors);
+Status GdipSetPathGradientCenterColor(Handle brush, int colors);
+Status GdipGetPathGradientSurroundColorCount(Handle brush, out int count);
+Status GdipGetPathGradientSurroundColorsWithCount(Handle brush, int* color, ref int count);
+Status GdipSetPathGradientSurroundColorsWithCount(Handle brush, int* color, ref int count);
+Status GdipGetPathGradientCenterPoint(Handle brush, ref GpPointF point);
+Status GdipSetPathGradientCenterPoint(Handle brush, ref GpPointF point);
+Status GdipGetPathGradientRect(Handle brush, ref GpRectF rect);
+Status GdipGetPathGradientBlendCount(Handle brush, out int count);
+Status GdipGetPathGradientBlend(Handle brush, float* blend, float* positions, int count);
+Status GdipSetPathGradientBlend(Handle brush, float* blend, float* positions, int count);
+Status GdipGetPathGradientPresetBlendCount(Handle brush, out int count);
+Status GdipGetPathGradientPresetBlend(Handle brush, int* blend, float* positions, int count);
+Status GdipSetPathGradientPresetBlend(Handle brush, int* blend, float* positions, int count);
+Status GdipSetPathGradientSigmaBlend(Handle brush, float focus, float scale);
+Status GdipSetPathGradientLinearBlend(Handle brush, float focus, float scale);
+Status GdipGetPathGradientTransform(Handle brush, out Handle matrix);
+Status GdipSetPathGradientTransform(Handle brush, Handle matrix);
+Status GdipResetPathGradientTransform(Handle brush);
+Status GdipMultiplyPathGradientTransform(Handle brush, Handle matrix, MatrixOrder order);
+Status GdipRotatePathGradientTransform(Handle brush, float angle, MatrixOrder order);
+Status GdipTranslatePathGradientTransform(Handle brush, float dx, float dy, MatrixOrder order);
+Status GdipScalePathGradientTransform(Handle brush, float sx, float sy, MatrixOrder order);
+Status GdipGetPathGradientFocusScales(Handle brush, out float xScale, out float yScale);
+Status GdipSetPathGradientFocusScales(Handle brush, float xScale, float yScale);
+Status GdipGetPathGradientWrapMode(Handle brush, out WrapMode wrapMode);
+Status GdipSetPathGradientWrapMode(Handle brush, WrapMode wrapMode);
+
+//added
+
+Status GdipResetTextureTransform( Handle brush );
+Status GdipScaleTextureTransform( Handle brush, float sx, float sy, MatrixOrder order );
+Status GdipTranslateTextureTransform( Handle brush, float dx, float dy, MatrixOrder order);
+Status GdipStringFormatGetGenericDefault(out Handle format);
+Status GdipStringFormatGetGenericTypographic(out Handle format);
+Status GdipSetStringFormatHotkeyPrefix(Handle format, int hotkeyPrefix);
+Status GdipSetStringFormatTabStops( Handle format, float firstTabOffset, int count, float* tabStops);
+
+void loadLib_Gdip(){
+    // do nothing in this version
+}
+
+}
+else{ // version(!STATIC_GDIPLUS)
+Status function( uint* token, GdiplusStartupInput* input, GdiplusStartupOutput* output) GdiplusStartup;
+void   function(uint token) GdiplusShutdown;
+Status function(Handle hdc, out Handle graphics) GdipCreateFromHDC;
+Status function(Handle hdc, Handle hDevice, out Handle graphics) GdipCreateFromHDC2;
+Status function(Handle hwnd, out Handle graphics) GdipCreateFromHWND;
+Status function(Handle image, out Handle graphics) GdipGetImageGraphicsContext;
+Status function(Handle graphics) GdipDeleteGraphics;
+Status function(Handle graphics, out Handle hdc) GdipGetDC;
+Status function(Handle graphics, Handle hdc) GdipReleaseDC;
+Status function(Handle graphics, Handle srcgraphics, CombineMode combineMode) GdipSetClipGraphics;
+Status function(Handle graphics, int x, int y, int width, int height, CombineMode combineMode) GdipSetClipRectI;
+Status function(Handle graphics, float x, float y, float width, float height, CombineMode combineMode) GdipSetClipRect;
+Status function(Handle graphics, Handle path, CombineMode combineMode) GdipSetClipPath;
+Status function(Handle graphics, Handle region, CombineMode combineMode) GdipSetClipRegion;
+Status function(Handle graphics, HRGN hRgn, CombineMode combineMode) GdipSetClipHrgn;
+Status function(Handle graphics, out Handle region) GdipGetClip;
+Status function(Handle graphics) GdipResetClip;
+Status function(Handle graphics, out uint state) GdipSaveGraphics;
+Status function(Handle graphics, int state) GdipRestoreGraphics;
+Status function(Handle graphics, FlushIntention intention) GdipFlush;
+Status function(Handle graphics, float sx, float sy, MatrixOrder order) GdipScaleWorldTransform;
+Status function(Handle graphics, float angle, MatrixOrder order) GdipRotateWorldTransform;
+Status function(Handle graphics, float dx, float dy, MatrixOrder order) GdipTranslateWorldTransform;
+Status function(Handle graphics, Handle matrix, MatrixOrder order) GdipMultiplyWorldTransform;
+Status function(Handle graphics) GdipResetWorldTransform;
+Status function(Handle graphics, ref GpRectF dstrect, ref GpRectF srcrect, GraphicsUnit unit, out int state) GdipBeginContainer;
+Status function(Handle graphics, ref GpRect dstrect, ref GpRect srcrect, GraphicsUnit unit, out int state) GdipBeginContainerI;
+Status function(Handle graphics, out int state) GdipBeginContainer2;
+Status function(Handle graphics, int state) GdipEndContainer;
+Status function(Handle graphics, out float dpi) GdipGetDpiX;
+Status function(Handle graphics, out float dpi) GdipGetDpiY;
+Status function(Handle graphics, out GraphicsUnit unit) GdipGetPageUnit;
+Status function(Handle graphics, GraphicsUnit unit) GdipSetPageUnit;
+Status function(Handle graphics, out float scale) GdipGetPageScale;
+Status function(Handle graphics, float scale) GdipSetPageScale;
+Status function(Handle graphics, Handle matrix) GdipGetWorldTransform;
+Status function(Handle graphics, Handle matrix) GdipSetWorldTransform;
+Status function(Handle graphics, out CompositingMode compositingMode) GdipGetCompositingMode;
+Status function(Handle graphics, CompositingMode compositingMode) GdipSetCompositingMode;
+Status function(Handle graphics, out CompositingQuality compositingQuality) GdipGetCompositingQuality;
+Status function(Handle graphics, CompositingQuality compositingQuality) GdipSetCompositingQuality;
+Status function(Handle graphics, out InterpolationMode interpolationMode) GdipGetInterpolationMode;
+Status function(Handle graphics, InterpolationMode interpolationMode) GdipSetInterpolationMode;
+Status function(Handle graphics, out SmoothingMode smoothingMode) GdipGetSmoothingMode;
+Status function(Handle graphics, SmoothingMode smoothingMode) GdipSetSmoothingMode;
+Status function(Handle graphics, out PixelOffsetMode pixelOffsetMode) GdipGetPixelOffsetMode;
+Status function(Handle graphics, PixelOffsetMode pixelOffsetMode) GdipSetPixelOffsetMode;
+Status function(Handle graphics, out uint textContrast) GdipGetTextContrast;
+Status function(Handle graphics, uint textContrast) GdipSetTextContrast;
+Status function(Handle graphics, int color) GdipGraphicsClear;
+Status function(Handle graphics, Handle pen, float x1, float y1, float x2, float y2) GdipDrawLine;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawLines;
+Status function(Handle graphics, Handle pen, int x1, int y1, int x2, int y2) GdipDrawLineI;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawLinesI;
+Status function(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipDrawArc;
+Status function(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipDrawArcI;
+Status function(Handle graphics, Handle pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) GdipDrawBezier;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawBeziers;
+Status function(Handle graphics, Handle pen, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) GdipDrawBezierI;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawBeziersI;
+Status function(Handle graphics, Handle pen, float x, float y, float width, float height) GdipDrawRectangle;
+Status function(Handle graphics, Handle pen, GpRectF* rects, int count) GdipDrawRectangles;
+Status function(Handle graphics, Handle pen, int x, int y, int width, int height) GdipDrawRectangleI;
+Status function(Handle graphics, Handle pen, GpRect* rects, int count) GdipDrawRectanglesI;
+Status function(Handle graphics, Handle pen, float x, float y, float width, float height) GdipDrawEllipse;
+Status function(Handle graphics, Handle pen, int x, int y, int width, int height) GdipDrawEllipseI;
+Status function(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipDrawPie;
+Status function(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipDrawPieI;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawPolygon;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawPolygonI;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawCurve;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count, float tension) GdipDrawCurve2;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count, int offset, int numberOfSegments, float tension) GdipDrawCurve3;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawCurveI;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count, float tension) GdipDrawCurve2I;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count, int offset, int numberOfSegments, float tension) GdipDrawCurve3I;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawClosedCurve;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count, float tension) GdipDrawClosedCurve2;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawClosedCurveI;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count, float tension) GdipDrawClosedCurve2I;
+Status function(Handle graphics, Handle brush, int x, int y, int width, int height) GdipFillRectangleI;
+Status function(Handle graphics, Handle brush, float x, float y, float width, float height) GdipFillRectangle;
+Status function(Handle graphics, Handle brush, GpRect* rects, int count) GdipFillRectanglesI;
+Status function(Handle graphics, Handle brush, GpRectF* rects, int count) GdipFillRectangles;
+Status function(Handle graphics, Handle brush, GpPointF* rects, int count, FillMode fillMode) GdipFillPolygon;
+Status function(Handle graphics, Handle brush, GpPoint* rects, int count, FillMode fillMode) GdipFillPolygonI;
+Status function(Handle graphics, Handle brush, float x, float y, float width, float height) GdipFillEllipse;
+Status function(Handle graphics, Handle brush, int x, int y, int width, int height) GdipFillEllipseI;
+Status function(Handle graphics, Handle brush, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipFillPie;
+Status function(Handle graphics, Handle brush, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipFillPieI;
+Status function(Handle graphics, Handle brush, Handle path) GdipFillPath;
+Status function(Handle graphics, Handle brush, GpPointF* points, int count) GdipFillClosedCurve;
+Status function(Handle graphics, Handle brush, GpPoint* points, int count) GdipFillClosedCurveI;
+Status function(Handle graphics, Handle brush, GpPointF* points, int count, FillMode fillMode, float tension) GdipFillClosedCurve2;
+Status function(Handle graphics, Handle brush, GpPoint* points, int count, FillMode fillMode, float tension) GdipFillClosedCurve2I;
+Status function(Handle graphics, Handle brush, Handle region) GdipFillRegion;
+Status function(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, Handle brush) GdipDrawString;
+Status function(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, ref GpRectF boundingBox, int* codepointsFitted, int* linesFitted) GdipMeasureString;
+Status function(Handle format, out int count) GdipGetStringFormatMeasurableCharacterRangeCount;
+Status function(Handle format, out Handle newFormat) GdipCloneStringFormat;
+Status function(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, int regionCount, Handle* regions) GdipMeasureCharacterRanges;
+Status function(Handle graphics, Handle image, float x, float y) GdipDrawImage;
+Status function(Handle graphics, Handle image, int x, int y) GdipDrawImageI;
+Status function(Handle graphics, Handle image, float x, float y, float width, float height) GdipDrawImageRect;
+Status function(Handle graphics, Handle image, int x, int y, int width, int height) GdipDrawImageRectI;
+Status function(Handle graphics, Handle image, float x, float y, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit) GdipDrawImagePointRect;
+Status function(Handle graphics, Handle image, int x, int y, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit) GdipDrawImagePointRectI;
+Status function(Handle graphics, Handle image, float dstx, float dsty, float dstwidth, float dstheight, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImageRectRect;
+Status function(Handle graphics, Handle image, int dstx, int dsty, int dstwidth, int dstheight, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImageRectRectI;
+Status function(Handle graphics, Handle image, GpPointF* dstpoints, int count) GdipDrawImagePoints;
+Status function(Handle graphics, Handle image, GpPoint* dstpoints, int count) GdipDrawImagePointsI;
+Status function(Handle graphics, Handle image, GpPointF* dstpoints, int count, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImagePointsRect;
+Status function(Handle graphics, Handle image, GpPoint* dstpoints, int count, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImagePointsRectI;
+Status function(Handle graphics, float x, float y, out int result) GdipIsVisiblePoint;
+Status function(Handle graphics, int x, int y, out int result) GdipIsVisiblePointI;
+Status function(Handle graphics, float x, float y, float width, float height, out int result) GdipIsVisibleRect;
+Status function(Handle graphics, int x, int y, int width, int height, out int result) GdipIsVisibleRectI;
+Status function(Handle graphics, out TextRenderingHint mode) GdipGetTextRenderingHint;
+Status function(Handle graphics, TextRenderingHint mode) GdipSetTextRenderingHint;
+Status function(Handle graphics, out GpRectF rect) GdipGetClipBounds;
+Status function(Handle graphics, out GpRect rect) GdipGetClipBoundsI;
+Status function(Handle graphics, out GpRectF rect) GdipGetVisibleClipBounds;
+Status function(Handle graphics, out GpRect rect) GdipGetVisibleClipBoundsI;
+Status function(Handle graphics, out int result) GdipIsClipEmpty;
+Status function(Handle graphics, out int result) GdipIsVisibleClipEmpty;
+Status function(Handle graphics, out int x, out int y) GdipGetRenderingOrigin;
+Status function(Handle graphics, int x, int y) GdipSetRenderingOrigin;
+Status function(Handle graphics, ref int argb) GdipGetNearestColor;
+Status function(Handle graphics, uint sizeData, ubyte* data) GdipComment;
+Status function(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPointF* points, int count) GdipTransformPoints;
+Status function(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPoint* points, int count) GdipTransformPointsI;
+Status function(out Handle matrix) GdipCreateMatrix;
+Status function(float m11, float m12, float m21, float m22, float dx, float dy, out Handle matrix) GdipCreateMatrix2;
+Status function(ref GpRectF rect, GpPointF* dstplg, out Handle matrix) GdipCreateMatrix3;
+Status function(ref GpRect rect, GpPoint* dstplg, out Handle matrix) GdipCreateMatrix3I;
+Status function(Handle matrix) GdipDeleteMatrix;
+Status function(Handle matrix, out Handle cloneMatrix) GdipCloneMatrix;
+Status function(Handle matrix, float* matrixOut) GdipGetMatrixElements;
+Status function(Handle matrix, float m11, float m12, float m21, float m22, float xy, float dy) GdipSetMatrixElements;
+Status function(Handle matrix) GdipInvertMatrix;
+Status function(Handle matrix, Handle matrix2, MatrixOrder order) GdipMultiplyMatrix;
+Status function(Handle matrix, float scaleX, float scaleY, MatrixOrder order) GdipScaleMatrix;
+Status function(Handle matrix, float shearX, float shearY, MatrixOrder order) GdipShearMatrix;
+Status function(Handle matrix, float angle, MatrixOrder order) GdipRotateMatrix;
+Status function(Handle matrix, float offsetX, float offsetY, MatrixOrder order) GdipTranslateMatrix;
+Status function(Handle matrix, out int result) GdipIsMatrixIdentity;
+Status function(Handle matrix, out int result) GdipIsMatrixInvertible;
+Status function(Handle matrix, GpPointF *pts, int count) GdipTransformMatrixPoints;
+Status function(Handle brush, out BrushType type ) GdipGetBrushType;
+Status function(Handle brush, out Handle cloneBrush) GdipCloneBrush;
+Status function(Handle brush) GdipDeleteBrush;
+Status function(int color, out Handle brush) GdipCreateSolidFill;
+Status function(Handle brush, out int color) GdipGetSolidFillColor;
+Status function(Handle brush, int color) GdipSetSolidFillColor;
+Status function(Handle image, WrapMode wrapMode, out Handle texture) GdipCreateTexture;
+Status function(Handle image, WrapMode wrapMode, float x, float y, float width, float height, out Handle texture) GdipCreateTexture2;
+Status function(Handle image, WrapMode wrapMode, int x, int y, int width, int height, out Handle texture) GdipCreateTexture2I;
+Status function(Handle brush, out Handle image) GdipGetTextureImage;
+Status function(Handle brush, out Handle matrix) GdipGetTextureTransform;
+Status function(Handle brush, Handle matrix) GdipSetTextureTransform;
+Status function(Handle brush, out WrapMode wrapmode) GdipGetTextureWrapMode;
+Status function(Handle brush, WrapMode wrapmode) GdipSetTextureWrapMode;
+Status function(HatchStyle hatchstyle, int forecol, int backcol, out Handle brush) GdipCreateHatchBrush;
+Status function(Handle brush, out HatchStyle hatchstyle) GdipGetHatchStyle;
+Status function(Handle brush, out int forecol) GdipGetHatchForegroundColor;
+Status function(Handle brush, out int backcol) GdipGetHatchBackgroundColor;
+Status function(ref GpPoint point1, ref GpPoint point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushI;
+Status function(ref GpPointF point1, ref GpPointF point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrush;
+Status function(ref GpRect rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRectI;
+Status function(ref GpRectF rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRect;
+Status function(ref GpRect rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRectWithAngleI;
+Status function(ref GpRectF rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRectWithAngle;
+Status function(Handle brush, out int count) GdipGetLineBlendCount;
+Status function(Handle brush, float* blend, float* positions, int count) GdipGetLineBlend;
+Status function(Handle brush, float* blend, float* positions, int count) GdipSetLineBlend;
+Status function(Handle brush, out int count) GdipGetLinePresetBlendCount;
+Status function(Handle brush, uint* blend, float* positions, int count) GdipGetLinePresetBlend;
+Status function(Handle brush, uint* blend, float* positions, int count) GdipSetLinePresetBlend;
+Status function(Handle brush, out WrapMode wrapmode) GdipGetLineWrapMode;
+Status function(Handle brush, WrapMode wrapmode) GdipSetLineWrapMode;
+Status function(Handle brush, out GpRectF rect) GdipGetLineRect;
+Status function(Handle brush, int* colors) GdipGetLineColors;
+Status function(Handle brush, int color1, int color2) GdipSetLineColors;
+Status function(Handle brush, out int useGammaCorrection) GdipGetLineGammaCorrection;
+Status function(Handle brush, int useGammaCorrection) GdipSetLineGammaCorrection;
+Status function(Handle brush, float focus, float scale) GdipSetLineSigmaBlend;
+Status function(Handle brush, float focus, float scale) GdipSetLineLinearBlend;
+Status function(Handle brush, out Handle matrix) GdipGetLineTransform;
+Status function(Handle brush, Handle matrix) GdipSetLineTransform;
+Status function(Handle brush) GdipResetLineTransform;
+Status function(Handle brush, Handle matrix, MatrixOrder order) GdipMultiplyLineTransform;
+Status function(Handle brush, float dx, float dy, MatrixOrder order) GdipTranslateLineTransform;
+Status function(Handle brush, float sx, float sy, MatrixOrder order) GdipScaleLineTransform;
+Status function(Handle brush, float angle, MatrixOrder order) GdipRotateLineTransform;
+Status function(int argb, float width, GraphicsUnit unit, out Handle pen) GdipCreatePen1;
+Status function(Handle brush, float width, GraphicsUnit unit, out Handle pen) GdipCreatePen2;
+Status function(Handle pen) GdipDeletePen;
+Status function(Handle pen, out Handle clonepen) GdipClonePen;
+Status function(Handle pen, LineCap startCap, LineCap endCap, DashCap dashCap) GdipSetPenLineCap197819;
+Status function(Handle pen, out LineCap startCap) GdipGetPenStartCap;
+Status function(Handle pen, LineCap startCap) GdipSetPenStartCap;
+Status function(Handle pen, out LineCap endCap) GdipGetPenEndCap;
+Status function(Handle pen, LineCap endCap) GdipSetPenEndCap;
+Status function(Handle pen, out DashCap endCap) GdipGetPenDashCap197819;
+Status function(Handle pen, DashCap endCap) GdipSetPenDashCap197819;
+Status function(Handle pen, out LineJoin lineJoin) GdipGetPenLineJoin;
+Status function(Handle pen, LineJoin lineJoin) GdipSetPenLineJoin;
+Status function(Handle pen, out float miterLimit) GdipGetPenMiterLimit;
+Status function(Handle pen, float miterLimit) GdipSetPenMiterLimit;
+Status function(Handle pen, out PenAlignment penMode) GdipGetPenMode;
+Status function(Handle pen, PenAlignment penMode) GdipSetPenMode;
+Status function(Handle pen, out Handle matrix) GdipGetPenTransform;
+Status function(Handle pen, Handle matrix) GdipSetPenTransform;
+Status function(Handle pen) GdipResetPenTransform;
+Status function(Handle pen, Handle matrix, MatrixOrder order) GdipMultiplyPenTransform;
+Status function(Handle pen, float dx, float dy, MatrixOrder order) GdipTranslatePenTransform;
+Status function(Handle pen, float sx, float sy, MatrixOrder order) GdipScalePenTransform;
+Status function(Handle pen, float angle, MatrixOrder order) GdipRotatePenTransform;
+Status function(Handle pen, out int argb) GdipGetPenColor;
+Status function(Handle pen, int argb) GdipSetPenColor;
+Status function(Handle pen, out float width) GdipGetPenWidth;
+Status function(Handle pen, float width) GdipSetPenWidth;
+Status function(Handle pen, out PenType type) GdipGetPenFillType;
+Status function(Handle pen, out Handle brush) GdipGetPenBrushFill;
+Status function(Handle pen, Handle brush) GdipSetPenBrushFill;
+Status function(Handle pen, out DashStyle dashstyle) GdipGetPenDashStyle;
+Status function(Handle pen, DashStyle dashstyle) GdipSetPenDashStyle;
+Status function(Handle pen, out float offset) GdipGetPenDashOffset;
+Status function(Handle pen, float offset) GdipSetPenDashOffset;
+Status function(Handle pen, out int count) GdipGetPenDashCount;
+Status function(Handle pen, float* dash, int count) GdipGetPenDashArray;
+Status function(Handle pen, float* dash, int count) GdipSetPenDashArray;
+Status function(Handle pen, out int count) GdipGetPenCompoundCount;
+Status function(Handle pen, float* dash, int count) GdipGetPenCompoundArray;
+Status function(Handle pen, float* dash, int count) GdipSetPenCompoundArray;
+Status function(out Handle region) GdipCreateRegion;
+Status function(ref GpRectF rect, out Handle region) GdipCreateRegionRect;
+Status function(ref GpRect rect, out Handle region) GdipCreateRegionRectI;
+Status function(Handle path, out Handle region) GdipCreateRegionPath;
+Status function(Handle hRgn, out Handle region) GdipCreateRegionHrgn;
+Status function(Handle region) GdipDeleteRegion;
+Status function(Handle region) GdipSetInfinite;
+Status function(Handle region) GdipSetEmpty;
+Status function(Handle region, ref GpRectF rect, CombineMode combineMode) GdipCombineRegionRect;
+Status function(Handle region, ref GpRect rect, CombineMode combineMode) GdipCombineRegionRectI;
+Status function(Handle region, Handle path, CombineMode combineMode) GdipCombineRegionPath;
+Status function(Handle region, Handle region, CombineMode combineMode) GdipCombineRegionRegion;
+Status function(Handle region, float dx, float dy) GdipTranslateRegion;
+Status function(Handle region, int dx, int dy) GdipTranslateRegionI;
+Status function(Handle region, Handle matrix) GdipTransformRegion;
+Status function(Handle region, Handle graphics, out GpRectF rect) GdipGetRegionBounds;
+Status function(Handle region, Handle graphics, out Handle hRgn) GdipGetRegionHRgn;
+Status function(Handle region, Handle graphics, out int result) GdipIsEmptyRegion;
+Status function(Handle region, Handle graphics, out int result) GdipIsInfiniteRegion;
+Status function(Handle region1, Handle region2, Handle graphics, out int result) GdipIsEqualRegion;
+Status function(Handle region, float x, float y, Handle graphics, out int result) GdipIsVisibleRegionPoint;
+Status function(Handle region, float x, float y, float width, float height, Handle graphics, out int result) GdipIsVisibleRegionRect;
+Status function(Handle region, int x, int y, Handle graphics, out int result) GdipIsVisibleRegionPointI;
+Status function(Handle region, int x, int y, int width, int height, Handle graphics, out int result) GdipIsVisibleRegionRectI;
+Status function(Handle region, out int count, Handle matrix) GdipGetRegionScansCount;
+Status function(Handle region, GpRectF* rects, out int count, Handle matrix) GdipGetRegionScans;
+Status function(Handle image) GdipDisposeImage;
+Status function(Handle image) GdipImageForceValidation;
+Status function(wchar* filename, out Handle image) GdipLoadImageFromFileICM;
+Status function(wchar* filename, out Handle image) GdipLoadImageFromFile;
+Status function(out int numEncoders, out int size) GdipGetImageEncodersSize;
+Status function(Handle image, out Handle cloneImage) GdipCloneImage;
+Status function(Handle image, out int type) GdipGetImageType;
+Status function(Handle image, out uint flags) GdipGetImageFlags;
+Status function(Handle image, out uint width) GdipGetImageWidth;
+Status function(Handle image, out uint height) GdipGetImageHeight;
+Status function(Handle image, out float resolution) GdipGetImageHorizontalResolution;
+Status function(Handle image, out float resolution) GdipGetImageVerticalResolution;
+Status function(Handle image, out int numOfProperty) GdipGetPropertyCount;
+Status function(Handle image, int numOfProperty, int* list) GdipGetPropertyIdList;
+Status function(Handle image, out PixelFormat format) GdipGetImagePixelFormat;
+Status function(Handle image, out float width, out float height) GdipGetImageDimension;
+Status function(Handle image, int thumbWidth, int thumbHeight, out Handle thumbImage, GpGetThumbnailImageAbort callback, void* callbackData) GdipGetImageThumbnail;
+Status function(Handle image, out int count) GdipImageGetFrameDimensionsCount;
+Status function(Handle image, RotateFlipType rotateFlipType) GdipImageRotateFlip;
+Status function(Handle image, int propId, out uint propSize) GdipGetPropertyItemSize;
+Status function(Handle image, int propId, uint propSize, GpPropertyItem* buffer) GdipGetPropertyItem;
+Status function(Handle image, ref GpPropertyItem buffer) GdipSetPropertyItem;
+Status function(Handle image, int propId) GdipRemovePropertyItem;
+Status function(Handle image, out uint totalBufferSize, ref int numProperties) GdipGetPropertySize;
+Status function(Handle image, uint totalBufferSize, int numProperties, GpPropertyItem* allItems) GdipGetAllPropertyItems;
+Status function(Handle image, out GpRectF srcRect, out GraphicsUnit srcUnit) GdipGetImageBounds;
+Status function(Handle image, out int size) GdipGetImagePaletteSize;
+Status function(Handle image, GpColorPalette* palette, int size) GdipGetImagePalette;
+Status function(Handle image, GpColorPalette* palette) GdipSetImagePalette;
+Status function(int width, int height, int stride, PixelFormat format, ubyte* scan0, out Handle bitmap) GdipCreateBitmapFromScan0;
+Status function(Handle hbitmap, Handle hpalette, out Handle bitmap) GdipCreateBitmapFromHBITMAP;
+Status function(Handle hicon, out Handle bitmap) GdipCreateBitmapFromHICON;
+Status function(wchar* fileName, out Handle bitmap) GdipCreateBitmapFromFileICM;
+Status function(wchar* fileName, out Handle bitmap) GdipCreateBitmapFromFile;
+Status function(int width, int height, Handle graphics, out Handle bitmap) GdipCreateBitmapFromGraphics;
+Status function(float x, float y, float width, float height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap) GdipCloneBitmapArea;
+Status function(int x, int y, int width, int height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap) GdipCloneBitmapAreaI;
+Status function(Handle bitmap, int x, int y, out int color) GdipBitmapGetPixel;
+Status function(Handle bitmap, int x, int y, int color) GdipBitmapSetPixel;
+Status function(Handle bitmap, GpRect* rect, ImageLockMode flags, PixelFormat format, GpBitmapData* lockedBitmapData) GdipBitmapLockBits;
+Status function(Handle bitmap, GpBitmapData* lockedBitmapData) GdipBitmapUnlockBits;
+Status function(Handle bitmap, float xdpi, float ydpi) GdipBitmapSetResolution;
+Status function(Handle bitmap, out Handle hbmReturn) GdipCreateHICONFromBitmap;
+Status function(Handle bitmap, out Handle hbmReturn, int background) GdipCreateHBITMAPFromBitmap;
+Status function(out Handle imageattr) GdipCreateImageAttributes;
+Status function(Handle imageattr) GdipDisposeImageAttributes;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, GpColorMatrix* colorMatrix, GpColorMatrix* grayMatrix, ColorMatrixFlag flags) GdipSetImageAttributesColorMatrix;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, float threshold) GdipSetImageAttributesThreshold;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, float gamma) GdipSetImageAttributesGamma;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag) GdipSetImageAttributesNoOp;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, int colorLow, int colorHigh) GdipSetImageAttributesColorKeys;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, ColorChannelFlag flags) GdipSetImageAttributesOutputChannel;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, wchar* colorProfileFilename) GdipSetImageAttributesOutputChannelColorProfile;
+Status function(Handle imageattr, WrapMode wrap, int argb, int clamp) GdipSetImageAttributesWrapMode;
+Status function(out Handle fontCollection) GdipNewInstalledFontCollection;
+Status function(out Handle fontCollection) GdipNewPrivateFontCollection;
+Status function(Handle fontCollection) GdipDeletePrivateFontCollection;
+Status function(Handle fontCollection, wchar* filename) GdipPrivateAddFontFile;
+Status function(Handle fontCollection, void* memory, int length) GdipPrivateAddMemoryFont;
+Status function(Handle fontCollection, out int numFound) GdipGetFontCollectionFamilyCount;
+Status function(Handle fontCollection, int numSought, Handle* gpfamilies, out int numFound) GdipGetFontCollectionFamilyList;
+Status function(wchar* name, Handle fontCollection, out Handle FontFamily) GdipCreateFontFamilyFromName;
+Status function(Handle FontFamily) GdipDeleteFontFamily;
+Status function(Handle FontFamily, out Handle clonedFontFamily) GdipCloneFontFamily;
+Status function(Handle family, wchar* name, int language) GdipGetFamilyName;
+Status function(out Handle nativeFamily) GdipGetGenericFontFamilyMonospace;
+Status function(out Handle nativeFamily) GdipGetGenericFontFamilySerif;
+Status function(out Handle nativeFamily) GdipGetGenericFontFamilySansSerif;
+Status function(Handle family, FontStyle style, out short EmHeight) GdipGetEmHeight;
+Status function(Handle family, FontStyle style, out short CellAscent) GdipGetCellAscent;
+Status function(Handle family, FontStyle style, out short CellDescent) GdipGetCellDescent;
+Status function(Handle family, FontStyle style, out short LineSpacing) GdipGetLineSpacing;
+Status function(Handle family, FontStyle style, out int IsStyleAvailable) GdipIsStyleAvailable;
+Status function(Handle fontFamily, float emSize, int style, int unit, out Handle font) GdipCreateFont;
+Status function(Handle hdc, out Handle font) GdipCreateFontFromDC;
+Status function(Handle font) GdipDeleteFont;
+Status function(Handle font, out Handle cloneFont) GdipCloneFont;
+Status function(Handle font, out float size) GdipGetFontSize;
+Status function(Handle font, Handle graphics, out float height) GdipGetFontHeight;
+Status function(Handle font, float dpi, out float height) GdipGetFontHeightGivenDPI;
+Status function(Handle font, out FontStyle style) GdipGetFontStyle;
+Status function(Handle font, out GraphicsUnit unit) GdipGetFontUnit;
+Status function(Handle font, out Handle family) GdipGetFamily;
+Status function( Handle hdc, ref LOGFONTW logfont, out Handle font) GdipCreateFontFromLogfontW;
+Status function( Handle hdc, ref LOGFONTA logfont, out Handle font ) GdipCreateFontFromLogfontA;
+Status function(Handle font, Handle graphics, out LOGFONTW logfontW) GdipGetLogFontW;
+Status function(StringFormatFlags formatAttributes, int language, out Handle format) GdipCreateStringFormat;
+Status function(Handle format) GdipDeleteStringFormat;
+Status function(Handle format, out StringFormatFlags flags) GdipGetStringFormatFlags;
+Status function(Handle format, StringFormatFlags flags) GdipSetStringFormatFlags;
+Status function(Handle format, out StringAlignment alignment) GdipGetStringFormatAlign;
+Status function(Handle format, StringAlignment alignment) GdipSetStringFormatAlign;
+Status function(Handle format, out StringAlignment alignment) GdipGetStringFormatLineAlign;
+Status function(Handle format, StringAlignment alignment) GdipSetStringFormatLineAlign;
+Status function(Handle format, out StringTrimming trimming) GdipGetStringFormatTrimming;
+Status function(Handle format, StringTrimming trimming) GdipSetStringFormatTrimming;
+Status function(FillMode brushMode, out Handle path) GdipCreatePath;
+Status function(GpPointF*, ubyte*, int, FillMode, out Handle) GdipCreatePath2;
+Status function(GpPoint*, ubyte*, int, FillMode, out Handle) GdipCreatePath2I;
+Status function(Handle path) GdipDeletePath;
+Status function(Handle path, out Handle clonepath) GdipClonePath;
+Status function(Handle path) GdipResetPath;
+Status function(Handle path, out FillMode fillmode) GdipGetPathFillMode;
+Status function(Handle path, FillMode fillmode) GdipSetPathFillMode;
+Status function(Handle path) GdipStartPathFigure;
+Status function(Handle path) GdipClosePathFigure;
+Status function(Handle path) GdipClosePathFigures;
+Status function(Handle path) GdipSetPathMarker;
+Status function(Handle path) GdipClearPathMarkers;
+Status function(Handle path) GdipReversePath;
+Status function(Handle path, out GpPointF lastPoint) GdipGetPathLastPoint;
+Status function(Handle path, float x1, float y1, float x2, float y2) GdipAddPathLine;
+Status function(Handle path, int x1, int y1, int x2, int y2) GdipAddPathLineI;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathLine2;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathLine2I;
+Status function(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipAddPathArc;
+Status function(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipAddPathArcI;
+Status function(Handle path, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) GdipAddPathBezier;
+Status function(Handle path, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) GdipAddPathBezierI;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathBeziers;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathBeziersI;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathCurve;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathCurveI;
+Status function(Handle path, GpPointF* points, int count, float tension) GdipAddPathCurve2;
+Status function(Handle path, GpPoint* points, int count, float tension) GdipAddPathCurve2I;
+Status function(Handle path, GpPointF* points, int count, int offset, int numberOfSegments, float tension) GdipAddPathCurve3;
+Status function(Handle path, GpPoint* points, int count, int offset, int numberOfSegments, float tension) GdipAddPathCurve3I;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathClosedCurve;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathClosedCurveI;
+Status function(Handle path, GpPointF* points, int count, float tension) GdipAddPathClosedCurve2;
+Status function(Handle path, GpPoint* points, int count, float tension) GdipAddPathClosedCurve2I;
+Status function(Handle path, float x, float y, float width, float height) GdipAddPathRectangle;
+Status function(Handle path, int x, int y, int width, int height) GdipAddPathRectangleI;
+Status function(Handle path, GpRectF* rects, int count) GdipAddPathRectangles;
+Status function(Handle path, GpRect* rects, int count) GdipAddPathRectanglesI;
+Status function(Handle path, float x, float y, float width, float height) GdipAddPathEllipse;
+Status function(Handle path, int x, int y, int width, int height) GdipAddPathEllipseI;
+Status function(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipAddPathPie;
+Status function(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipAddPathPieI;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathPolygon;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathPolygonI;
+Status function(Handle path, Handle addingPath, int connect) GdipAddPathPath;
+Status function(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRectF layoutRect, Handle format) GdipAddPathString;
+Status function(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRect layoutRect, Handle format) GdipAddPathStringI;
+Status function(Handle path, Handle matrix) GdipTransformPath;
+Status function(Handle path, out GpRectF bounds, Handle matrix, Handle pen) GdipGetPathWorldBounds;
+Status function(Handle path, Handle matrix, float flatness) GdipFlattenPath;
+Status function(Handle path, Handle pen, Handle matrix, float flatness) GdipWidenPath;
+Status function(Handle path, Handle matrix, float flatness) GdipWindingModeOutline;
+Status function(Handle path, Handle matrix, GpPointF* points, int count, float srcx, float srcy, float srcwidth, float srcwidth, WarpMode warpMode, float flatness) GdipWarpPath;
+Status function(Handle path, out int count) GdipGetPointCount;
+Status function(Handle path, byte* types, int count) GdipGetPathTypes;
+Status function(Handle path, GpPointF* points, int count) GdipGetPathPoints;
+Status function(Handle path, float x, float y, Handle graphics, out int result) GdipIsVisiblePathPoint;
+Status function(Handle path, int x, int y, Handle graphics, out int result) GdipIsVisiblePathPointI;
+Status function(Handle path, float x, float y, Handle pen, Handle graphics, out int result) GdipIsOutlineVisiblePathPoint;
+Status function(Handle path, int x, int y, Handle pen, Handle graphics, out int result) GdipIsOutlineVisiblePathPointI;
+Status function(Handle graphics, Handle pen, Handle path) GdipDrawPath;
+Status function(out Handle iterator, Handle path) GdipCreatePathIter;
+Status function(Handle iterator) GdipDeletePathIter;
+Status function(Handle iterator, out int resultCount, out int startIndex, out int endIndex, out int isClosed) GdipPathIterNextSubpath;
+Status function(Handle iterator, out int resultCount, Handle path, out int isClosed) GdipPathIterNextSubpathPath;
+Status function(Handle iterator, out int resultCount, out ubyte pathType, out int startIndex, out int endIndex) GdipPathIterNextPathType;
+Status function(Handle iterator, out int resultCount, out int startIndex, out int endIndex) GdipPathIterNextMarker;
+Status function(Handle iterator, out int resultCount, Handle path) GdipPathIterNextMarkerPath;
+Status function(Handle iterator, out int count) GdipPathIterGetCount;
+Status function(Handle iterator, out int count) GdipPathIterGetSubpathCount;
+Status function(Handle iterator, out int hasCurve) GdipPathIterHasCurve;
+Status function(Handle iterator) GdipPathIterRewind;
+Status function(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int count) GdipPathIterEnumerate;
+Status function(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int startIndex, int endIndex) GdipPathIterCopyData;
+Status function(GpPointF* points, int count, WrapMode wrapMode, out Handle polyGradient) GdipCreatePathGradient;
+Status function(GpPoint* points, int count, WrapMode wrapMode, out Handle polyGradient) GdipCreatePathGradientI;
+Status function(Handle path, out Handle polyGradient) GdipCreatePathGradientFromPath;
+Status function(Handle brush, out int colors) GdipGetPathGradientCenterColor;
+Status function(Handle brush, int colors) GdipSetPathGradientCenterColor;
+Status function(Handle brush, out int count) GdipGetPathGradientSurroundColorCount;
+Status function(Handle brush, int* color, ref int count) GdipGetPathGradientSurroundColorsWithCount;
+Status function(Handle brush, int* color, ref int count) GdipSetPathGradientSurroundColorsWithCount;
+Status function(Handle brush, ref GpPointF point) GdipGetPathGradientCenterPoint;
+Status function(Handle brush, ref GpPointF point) GdipSetPathGradientCenterPoint;
+Status function(Handle brush, ref GpRectF rect) GdipGetPathGradientRect;
+Status function(Handle brush, out int count) GdipGetPathGradientBlendCount;
+Status function(Handle brush, float* blend, float* positions, int count) GdipGetPathGradientBlend;
+Status function(Handle brush, float* blend, float* positions, int count) GdipSetPathGradientBlend;
+Status function(Handle brush, out int count) GdipGetPathGradientPresetBlendCount;
+Status function(Handle brush, int* blend, float* positions, int count) GdipGetPathGradientPresetBlend;
+Status function(Handle brush, int* blend, float* positions, int count) GdipSetPathGradientPresetBlend;
+Status function(Handle brush, float focus, float scale) GdipSetPathGradientSigmaBlend;
+Status function(Handle brush, float focus, float scale) GdipSetPathGradientLinearBlend;
+Status function(Handle brush, out Handle matrix) GdipGetPathGradientTransform;
+Status function(Handle brush, Handle matrix) GdipSetPathGradientTransform;
+Status function(Handle brush) GdipResetPathGradientTransform;
+Status function(Handle brush, Handle matrix, MatrixOrder order) GdipMultiplyPathGradientTransform;
+Status function(Handle brush, float angle, MatrixOrder order) GdipRotatePathGradientTransform;
+Status function(Handle brush, float dx, float dy, MatrixOrder order) GdipTranslatePathGradientTransform;
+Status function(Handle brush, float sx, float sy, MatrixOrder order) GdipScalePathGradientTransform;
+Status function(Handle brush, out float xScale, out float yScale) GdipGetPathGradientFocusScales;
+Status function(Handle brush, float xScale, float yScale) GdipSetPathGradientFocusScales;
+Status function(Handle brush, out WrapMode wrapMode) GdipGetPathGradientWrapMode;
+Status function(Handle brush, WrapMode wrapMode) GdipSetPathGradientWrapMode;
+Status function( Handle brush ) GdipResetTextureTransform;
+Status function( Handle brush, float sx, float sy, MatrixOrder order ) GdipScaleTextureTransform;
+Status function( Handle brush, float dx, float dy, MatrixOrder order) GdipTranslateTextureTransform;
+Status function(out Handle format) GdipStringFormatGetGenericDefault;
+Status function(out Handle format) GdipStringFormatGetGenericTypographic;
+Status function(Handle format, int hotkeyPrefix) GdipSetStringFormatHotkeyPrefix;
+Status function( Handle format, float firstTabOffset, int count, float* tabStops) GdipSetStringFormatTabStops;
+
+struct Symbol {
+    char[] name;
+    void** symbol;
+}
+
+Symbol[] symbols = [
+    { "GdiplusStartup", cast(void**)& GdiplusStartup },
+    { "GdiplusShutdown", cast(void**)& GdiplusShutdown },
+    { "GdipCreateFromHDC", cast(void**)& GdipCreateFromHDC },
+    { "GdipCreateFromHDC2", cast(void**)& GdipCreateFromHDC2 },
+    { "GdipCreateFromHWND", cast(void**)& GdipCreateFromHWND },
+    { "GdipGetImageGraphicsContext", cast(void**)& GdipGetImageGraphicsContext },
+    { "GdipDeleteGraphics", cast(void**)& GdipDeleteGraphics },
+    { "GdipGetDC", cast(void**)& GdipGetDC },
+    { "GdipReleaseDC", cast(void**)& GdipReleaseDC },
+    { "GdipSetClipGraphics", cast(void**)& GdipSetClipGraphics },
+    { "GdipSetClipRectI", cast(void**)& GdipSetClipRectI },
+    { "GdipSetClipRect", cast(void**)& GdipSetClipRect },
+    { "GdipSetClipPath", cast(void**)& GdipSetClipPath },
+    { "GdipSetClipRegion", cast(void**)& GdipSetClipRegion },
+    { "GdipSetClipHrgn", cast(void**)& GdipSetClipHrgn },
+    { "GdipGetClip", cast(void**)& GdipGetClip },
+    { "GdipResetClip", cast(void**)& GdipResetClip },
+    { "GdipSaveGraphics", cast(void**)& GdipSaveGraphics },
+    { "GdipRestoreGraphics", cast(void**)& GdipRestoreGraphics },
+    { "GdipFlush", cast(void**)& GdipFlush },
+    { "GdipScaleWorldTransform", cast(void**)& GdipScaleWorldTransform },
+    { "GdipRotateWorldTransform", cast(void**)& GdipRotateWorldTransform },
+    { "GdipTranslateWorldTransform", cast(void**)& GdipTranslateWorldTransform },
+    { "GdipMultiplyWorldTransform", cast(void**)& GdipMultiplyWorldTransform },
+    { "GdipResetWorldTransform", cast(void**)& GdipResetWorldTransform },
+    { "GdipBeginContainer", cast(void**)& GdipBeginContainer },
+    { "GdipBeginContainerI", cast(void**)& GdipBeginContainerI },
+    { "GdipBeginContainer2", cast(void**)& GdipBeginContainer2 },
+    { "GdipEndContainer", cast(void**)& GdipEndContainer },
+    { "GdipGetDpiX", cast(void**)& GdipGetDpiX },
+    { "GdipGetDpiY", cast(void**)& GdipGetDpiY },
+    { "GdipGetPageUnit", cast(void**)& GdipGetPageUnit },
+    { "GdipSetPageUnit", cast(void**)& GdipSetPageUnit },
+    { "GdipGetPageScale", cast(void**)& GdipGetPageScale },
+    { "GdipSetPageScale", cast(void**)& GdipSetPageScale },
+    { "GdipGetWorldTransform", cast(void**)& GdipGetWorldTransform },
+    { "GdipSetWorldTransform", cast(void**)& GdipSetWorldTransform },
+    { "GdipGetCompositingMode", cast(void**)& GdipGetCompositingMode },
+    { "GdipSetCompositingMode", cast(void**)& GdipSetCompositingMode },
+    { "GdipGetCompositingQuality", cast(void**)& GdipGetCompositingQuality },
+    { "GdipSetCompositingQuality", cast(void**)& GdipSetCompositingQuality },
+    { "GdipGetInterpolationMode", cast(void**)& GdipGetInterpolationMode },
+    { "GdipSetInterpolationMode", cast(void**)& GdipSetInterpolationMode },
+    { "GdipGetSmoothingMode", cast(void**)& GdipGetSmoothingMode },
+    { "GdipSetSmoothingMode", cast(void**)& GdipSetSmoothingMode },
+    { "GdipGetPixelOffsetMode", cast(void**)& GdipGetPixelOffsetMode },
+    { "GdipSetPixelOffsetMode", cast(void**)& GdipSetPixelOffsetMode },
+    { "GdipGetTextContrast", cast(void**)& GdipGetTextContrast },
+    { "GdipSetTextContrast", cast(void**)& GdipSetTextContrast },
+    { "GdipGraphicsClear", cast(void**)& GdipGraphicsClear },
+    { "GdipDrawLine", cast(void**)& GdipDrawLine },
+    { "GdipDrawLines", cast(void**)& GdipDrawLines },
+    { "GdipDrawLineI", cast(void**)& GdipDrawLineI },
+    { "GdipDrawLinesI", cast(void**)& GdipDrawLinesI },
+    { "GdipDrawArc", cast(void**)& GdipDrawArc },
+    { "GdipDrawArcI", cast(void**)& GdipDrawArcI },
+    { "GdipDrawBezier", cast(void**)& GdipDrawBezier },
+    { "GdipDrawBeziers", cast(void**)& GdipDrawBeziers },
+    { "GdipDrawBezierI", cast(void**)& GdipDrawBezierI },
+    { "GdipDrawBeziersI", cast(void**)& GdipDrawBeziersI },
+    { "GdipDrawRectangle", cast(void**)& GdipDrawRectangle },
+    { "GdipDrawRectangles", cast(void**)& GdipDrawRectangles },
+    { "GdipDrawRectangleI", cast(void**)& GdipDrawRectangleI },
+    { "GdipDrawRectanglesI", cast(void**)& GdipDrawRectanglesI },
+    { "GdipDrawEllipse", cast(void**)& GdipDrawEllipse },
+    { "GdipDrawEllipseI", cast(void**)& GdipDrawEllipseI },
+    { "GdipDrawPie", cast(void**)& GdipDrawPie },
+    { "GdipDrawPieI", cast(void**)& GdipDrawPieI },
+    { "GdipDrawPolygon", cast(void**)& GdipDrawPolygon },
+    { "GdipDrawPolygonI", cast(void**)& GdipDrawPolygonI },
+    { "GdipDrawCurve", cast(void**)& GdipDrawCurve },
+    { "GdipDrawCurve2", cast(void**)& GdipDrawCurve2 },
+    { "GdipDrawCurve3", cast(void**)& GdipDrawCurve3 },
+    { "GdipDrawCurveI", cast(void**)& GdipDrawCurveI },
+    { "GdipDrawCurve2I", cast(void**)& GdipDrawCurve2I },
+    { "GdipDrawCurve3I", cast(void**)& GdipDrawCurve3I },
+    { "GdipDrawClosedCurve", cast(void**)& GdipDrawClosedCurve },
+    { "GdipDrawClosedCurve2", cast(void**)& GdipDrawClosedCurve2 },
+    { "GdipDrawClosedCurveI", cast(void**)& GdipDrawClosedCurveI },
+    { "GdipDrawClosedCurve2I", cast(void**)& GdipDrawClosedCurve2I },
+    { "GdipFillRectangleI", cast(void**)& GdipFillRectangleI },
+    { "GdipFillRectangle", cast(void**)& GdipFillRectangle },
+    { "GdipFillRectanglesI", cast(void**)& GdipFillRectanglesI },
+    { "GdipFillRectangles", cast(void**)& GdipFillRectangles },
+    { "GdipFillPolygon", cast(void**)& GdipFillPolygon },
+    { "GdipFillPolygonI", cast(void**)& GdipFillPolygonI },
+    { "GdipFillEllipse", cast(void**)& GdipFillEllipse },
+    { "GdipFillEllipseI", cast(void**)& GdipFillEllipseI },
+    { "GdipFillPie", cast(void**)& GdipFillPie },
+    { "GdipFillPieI", cast(void**)& GdipFillPieI },
+    { "GdipFillPath", cast(void**)& GdipFillPath },
+    { "GdipFillClosedCurve", cast(void**)& GdipFillClosedCurve },
+    { "GdipFillClosedCurveI", cast(void**)& GdipFillClosedCurveI },
+    { "GdipFillClosedCurve2", cast(void**)& GdipFillClosedCurve2 },
+    { "GdipFillClosedCurve2I", cast(void**)& GdipFillClosedCurve2I },
+    { "GdipFillRegion", cast(void**)& GdipFillRegion },
+    { "GdipDrawString", cast(void**)& GdipDrawString },
+    { "GdipMeasureString", cast(void**)& GdipMeasureString },
+    { "GdipGetStringFormatMeasurableCharacterRangeCount", cast(void**)& GdipGetStringFormatMeasurableCharacterRangeCount },
+    { "GdipCloneStringFormat", cast(void**)& GdipCloneStringFormat },
+    { "GdipMeasureCharacterRanges", cast(void**)& GdipMeasureCharacterRanges },
+    { "GdipDrawImage", cast(void**)& GdipDrawImage },
+    { "GdipDrawImageI", cast(void**)& GdipDrawImageI },
+    { "GdipDrawImageRect", cast(void**)& GdipDrawImageRect },
+    { "GdipDrawImageRectI", cast(void**)& GdipDrawImageRectI },
+    { "GdipDrawImagePointRect", cast(void**)& GdipDrawImagePointRect },
+    { "GdipDrawImagePointRectI", cast(void**)& GdipDrawImagePointRectI },
+    { "GdipDrawImageRectRect", cast(void**)& GdipDrawImageRectRect },
+    { "GdipDrawImageRectRectI", cast(void**)& GdipDrawImageRectRectI },
+    { "GdipDrawImagePoints", cast(void**)& GdipDrawImagePoints },
+    { "GdipDrawImagePointsI", cast(void**)& GdipDrawImagePointsI },
+    { "GdipDrawImagePointsRect", cast(void**)& GdipDrawImagePointsRect },
+    { "GdipDrawImagePointsRectI", cast(void**)& GdipDrawImagePointsRectI },
+    { "GdipIsVisiblePoint", cast(void**)& GdipIsVisiblePoint },
+    { "GdipIsVisiblePointI", cast(void**)& GdipIsVisiblePointI },
+    { "GdipIsVisibleRect", cast(void**)& GdipIsVisibleRect },
+    { "GdipIsVisibleRectI", cast(void**)& GdipIsVisibleRectI },
+    { "GdipGetTextRenderingHint", cast(void**)& GdipGetTextRenderingHint },
+    { "GdipSetTextRenderingHint", cast(void**)& GdipSetTextRenderingHint },
+    { "GdipGetClipBounds", cast(void**)& GdipGetClipBounds },
+    { "GdipGetClipBoundsI", cast(void**)& GdipGetClipBoundsI },
+    { "GdipGetVisibleClipBounds", cast(void**)& GdipGetVisibleClipBounds },
+    { "GdipGetVisibleClipBoundsI", cast(void**)& GdipGetVisibleClipBoundsI },
+    { "GdipIsClipEmpty", cast(void**)& GdipIsClipEmpty },
+    { "GdipIsVisibleClipEmpty", cast(void**)& GdipIsVisibleClipEmpty },
+    { "GdipGetRenderingOrigin", cast(void**)& GdipGetRenderingOrigin },
+    { "GdipSetRenderingOrigin", cast(void**)& GdipSetRenderingOrigin },
+    { "GdipGetNearestColor", cast(void**)& GdipGetNearestColor },
+    { "GdipComment", cast(void**)& GdipComment },
+    { "GdipTransformPoints", cast(void**)& GdipTransformPoints },
+    { "GdipTransformPointsI", cast(void**)& GdipTransformPointsI },
+    { "GdipCreateMatrix", cast(void**)& GdipCreateMatrix },
+    { "GdipCreateMatrix2", cast(void**)& GdipCreateMatrix2 },
+    { "GdipCreateMatrix3", cast(void**)& GdipCreateMatrix3 },
+    { "GdipCreateMatrix3I", cast(void**)& GdipCreateMatrix3I },
+    { "GdipDeleteMatrix", cast(void**)& GdipDeleteMatrix },
+    { "GdipCloneMatrix", cast(void**)& GdipCloneMatrix },
+    { "GdipGetMatrixElements", cast(void**)& GdipGetMatrixElements },
+    { "GdipSetMatrixElements", cast(void**)& GdipSetMatrixElements },
+    { "GdipInvertMatrix", cast(void**)& GdipInvertMatrix },
+    { "GdipMultiplyMatrix", cast(void**)& GdipMultiplyMatrix },
+    { "GdipScaleMatrix", cast(void**)& GdipScaleMatrix },
+    { "GdipShearMatrix", cast(void**)& GdipShearMatrix },
+    { "GdipRotateMatrix", cast(void**)& GdipRotateMatrix },
+    { "GdipTranslateMatrix", cast(void**)& GdipTranslateMatrix },
+    { "GdipIsMatrixIdentity", cast(void**)& GdipIsMatrixIdentity },
+    { "GdipIsMatrixInvertible", cast(void**)& GdipIsMatrixInvertible },
+    { "GdipTransformMatrixPoints", cast(void**)& GdipTransformMatrixPoints },
+    { "GdipGetBrushType", cast(void**)& GdipGetBrushType },
+    { "GdipCloneBrush", cast(void**)& GdipCloneBrush },
+    { "GdipDeleteBrush", cast(void**)& GdipDeleteBrush },
+    { "GdipCreateSolidFill", cast(void**)& GdipCreateSolidFill },
+    { "GdipGetSolidFillColor", cast(void**)& GdipGetSolidFillColor },
+    { "GdipSetSolidFillColor", cast(void**)& GdipSetSolidFillColor },
+    { "GdipCreateTexture", cast(void**)& GdipCreateTexture },
+    { "GdipCreateTexture2", cast(void**)& GdipCreateTexture2 },
+    { "GdipCreateTexture2I", cast(void**)& GdipCreateTexture2I },
+    { "GdipGetTextureImage", cast(void**)& GdipGetTextureImage },
+    { "GdipGetTextureTransform", cast(void**)& GdipGetTextureTransform },
+    { "GdipSetTextureTransform", cast(void**)& GdipSetTextureTransform },
+    { "GdipGetTextureWrapMode", cast(void**)& GdipGetTextureWrapMode },
+    { "GdipSetTextureWrapMode", cast(void**)& GdipSetTextureWrapMode },
+    { "GdipCreateHatchBrush", cast(void**)& GdipCreateHatchBrush },
+    { "GdipGetHatchStyle", cast(void**)& GdipGetHatchStyle },
+    { "GdipGetHatchForegroundColor", cast(void**)& GdipGetHatchForegroundColor },
+    { "GdipGetHatchBackgroundColor", cast(void**)& GdipGetHatchBackgroundColor },
+    { "GdipCreateLineBrushI", cast(void**)& GdipCreateLineBrushI },
+    { "GdipCreateLineBrush", cast(void**)& GdipCreateLineBrush },
+    { "GdipCreateLineBrushFromRectI", cast(void**)& GdipCreateLineBrushFromRectI },
+    { "GdipCreateLineBrushFromRect", cast(void**)& GdipCreateLineBrushFromRect },
+    { "GdipCreateLineBrushFromRectWithAngleI", cast(void**)& GdipCreateLineBrushFromRectWithAngleI },
+    { "GdipCreateLineBrushFromRectWithAngle", cast(void**)& GdipCreateLineBrushFromRectWithAngle },
+    { "GdipGetLineBlendCount", cast(void**)& GdipGetLineBlendCount },
+    { "GdipGetLineBlend", cast(void**)& GdipGetLineBlend },
+    { "GdipSetLineBlend", cast(void**)& GdipSetLineBlend },
+    { "GdipGetLinePresetBlendCount", cast(void**)& GdipGetLinePresetBlendCount },
+    { "GdipGetLinePresetBlend", cast(void**)& GdipGetLinePresetBlend },
+    { "GdipSetLinePresetBlend", cast(void**)& GdipSetLinePresetBlend },
+    { "GdipGetLineWrapMode", cast(void**)& GdipGetLineWrapMode },
+    { "GdipSetLineWrapMode", cast(void**)& GdipSetLineWrapMode },
+    { "GdipGetLineRect", cast(void**)& GdipGetLineRect },
+    { "GdipGetLineColors", cast(void**)& GdipGetLineColors },
+    { "GdipSetLineColors", cast(void**)& GdipSetLineColors },
+    { "GdipGetLineGammaCorrection", cast(void**)& GdipGetLineGammaCorrection },
+    { "GdipSetLineGammaCorrection", cast(void**)& GdipSetLineGammaCorrection },
+    { "GdipSetLineSigmaBlend", cast(void**)& GdipSetLineSigmaBlend },
+    { "GdipSetLineLinearBlend", cast(void**)& GdipSetLineLinearBlend },
+    { "GdipGetLineTransform", cast(void**)& GdipGetLineTransform },
+    { "GdipSetLineTransform", cast(void**)& GdipSetLineTransform },
+    { "GdipResetLineTransform", cast(void**)& GdipResetLineTransform },
+    { "GdipMultiplyLineTransform", cast(void**)& GdipMultiplyLineTransform },
+    { "GdipTranslateLineTransform", cast(void**)& GdipTranslateLineTransform },
+    { "GdipScaleLineTransform", cast(void**)& GdipScaleLineTransform },
+    { "GdipRotateLineTransform", cast(void**)& GdipRotateLineTransform },
+    { "GdipCreatePen1", cast(void**)& GdipCreatePen1 },
+    { "GdipCreatePen2", cast(void**)& GdipCreatePen2 },
+    { "GdipDeletePen", cast(void**)& GdipDeletePen },
+    { "GdipClonePen", cast(void**)& GdipClonePen },
+    { "GdipSetPenLineCap197819", cast(void**)& GdipSetPenLineCap197819 },
+    { "GdipGetPenStartCap", cast(void**)& GdipGetPenStartCap },
+    { "GdipSetPenStartCap", cast(void**)& GdipSetPenStartCap },
+    { "GdipGetPenEndCap", cast(void**)& GdipGetPenEndCap },
+    { "GdipSetPenEndCap", cast(void**)& GdipSetPenEndCap },
+    { "GdipGetPenDashCap197819", cast(void**)& GdipGetPenDashCap197819 },
+    { "GdipSetPenDashCap197819", cast(void**)& GdipSetPenDashCap197819 },
+    { "GdipGetPenLineJoin", cast(void**)& GdipGetPenLineJoin },
+    { "GdipSetPenLineJoin", cast(void**)& GdipSetPenLineJoin },
+    { "GdipGetPenMiterLimit", cast(void**)& GdipGetPenMiterLimit },
+    { "GdipSetPenMiterLimit", cast(void**)& GdipSetPenMiterLimit },
+    { "GdipGetPenMode", cast(void**)& GdipGetPenMode },
+    { "GdipSetPenMode", cast(void**)& GdipSetPenMode },
+    { "GdipGetPenTransform", cast(void**)& GdipGetPenTransform },
+    { "GdipSetPenTransform", cast(void**)& GdipSetPenTransform },
+    { "GdipResetPenTransform", cast(void**)& GdipResetPenTransform },
+    { "GdipMultiplyPenTransform", cast(void**)& GdipMultiplyPenTransform },
+    { "GdipTranslatePenTransform", cast(void**)& GdipTranslatePenTransform },
+    { "GdipScalePenTransform", cast(void**)& GdipScalePenTransform },
+    { "GdipRotatePenTransform", cast(void**)& GdipRotatePenTransform },
+    { "GdipGetPenColor", cast(void**)& GdipGetPenColor },
+    { "GdipSetPenColor", cast(void**)& GdipSetPenColor },
+    { "GdipGetPenWidth", cast(void**)& GdipGetPenWidth },
+    { "GdipSetPenWidth", cast(void**)& GdipSetPenWidth },
+    { "GdipGetPenFillType", cast(void**)& GdipGetPenFillType },
+    { "GdipGetPenBrushFill", cast(void**)& GdipGetPenBrushFill },
+    { "GdipSetPenBrushFill", cast(void**)& GdipSetPenBrushFill },
+    { "GdipGetPenDashStyle", cast(void**)& GdipGetPenDashStyle },
+    { "GdipSetPenDashStyle", cast(void**)& GdipSetPenDashStyle },
+    { "GdipGetPenDashOffset", cast(void**)& GdipGetPenDashOffset },
+    { "GdipSetPenDashOffset", cast(void**)& GdipSetPenDashOffset },
+    { "GdipGetPenDashCount", cast(void**)& GdipGetPenDashCount },
+    { "GdipGetPenDashArray", cast(void**)& GdipGetPenDashArray },
+    { "GdipSetPenDashArray", cast(void**)& GdipSetPenDashArray },
+    { "GdipGetPenCompoundCount", cast(void**)& GdipGetPenCompoundCount },
+    { "GdipGetPenCompoundArray", cast(void**)& GdipGetPenCompoundArray },
+    { "GdipSetPenCompoundArray", cast(void**)& GdipSetPenCompoundArray },
+    { "GdipCreateRegion", cast(void**)& GdipCreateRegion },
+    { "GdipCreateRegionRect", cast(void**)& GdipCreateRegionRect },
+    { "GdipCreateRegionRectI", cast(void**)& GdipCreateRegionRectI },
+    { "GdipCreateRegionPath", cast(void**)& GdipCreateRegionPath },
+    { "GdipCreateRegionHrgn", cast(void**)& GdipCreateRegionHrgn },
+    { "GdipDeleteRegion", cast(void**)& GdipDeleteRegion },
+    { "GdipSetInfinite", cast(void**)& GdipSetInfinite },
+    { "GdipSetEmpty", cast(void**)& GdipSetEmpty },
+    { "GdipCombineRegionRect", cast(void**)& GdipCombineRegionRect },
+    { "GdipCombineRegionRectI", cast(void**)& GdipCombineRegionRectI },
+    { "GdipCombineRegionPath", cast(void**)& GdipCombineRegionPath },
+    { "GdipCombineRegionRegion", cast(void**)& GdipCombineRegionRegion },
+    { "GdipTranslateRegion", cast(void**)& GdipTranslateRegion },
+    { "GdipTranslateRegionI", cast(void**)& GdipTranslateRegionI },
+    { "GdipTransformRegion", cast(void**)& GdipTransformRegion },
+    { "GdipGetRegionBounds", cast(void**)& GdipGetRegionBounds },
+    { "GdipGetRegionHRgn", cast(void**)& GdipGetRegionHRgn },
+    { "GdipIsEmptyRegion", cast(void**)& GdipIsEmptyRegion },
+    { "GdipIsInfiniteRegion", cast(void**)& GdipIsInfiniteRegion },
+    { "GdipIsEqualRegion", cast(void**)& GdipIsEqualRegion },
+    { "GdipIsVisibleRegionPoint", cast(void**)& GdipIsVisibleRegionPoint },
+    { "GdipIsVisibleRegionRect", cast(void**)& GdipIsVisibleRegionRect },
+    { "GdipIsVisibleRegionPointI", cast(void**)& GdipIsVisibleRegionPointI },
+    { "GdipIsVisibleRegionRectI", cast(void**)& GdipIsVisibleRegionRectI },
+    { "GdipGetRegionScansCount", cast(void**)& GdipGetRegionScansCount },
+    { "GdipGetRegionScans", cast(void**)& GdipGetRegionScans },
+    { "GdipDisposeImage", cast(void**)& GdipDisposeImage },
+    { "GdipImageForceValidation", cast(void**)& GdipImageForceValidation },
+    { "GdipLoadImageFromFileICM", cast(void**)& GdipLoadImageFromFileICM },
+    { "GdipLoadImageFromFile", cast(void**)& GdipLoadImageFromFile },
+    { "GdipGetImageEncodersSize", cast(void**)& GdipGetImageEncodersSize },
+    { "GdipCloneImage", cast(void**)& GdipCloneImage },
+    { "GdipGetImageType", cast(void**)& GdipGetImageType },
+    { "GdipGetImageFlags", cast(void**)& GdipGetImageFlags },
+    { "GdipGetImageWidth", cast(void**)& GdipGetImageWidth },
+    { "GdipGetImageHeight", cast(void**)& GdipGetImageHeight },
+    { "GdipGetImageHorizontalResolution", cast(void**)& GdipGetImageHorizontalResolution },
+    { "GdipGetImageVerticalResolution", cast(void**)& GdipGetImageVerticalResolution },
+    { "GdipGetPropertyCount", cast(void**)& GdipGetPropertyCount },
+    { "GdipGetPropertyIdList", cast(void**)& GdipGetPropertyIdList },
+    { "GdipGetImagePixelFormat", cast(void**)& GdipGetImagePixelFormat },
+    { "GdipGetImageDimension", cast(void**)& GdipGetImageDimension },
+    { "GdipGetImageThumbnail", cast(void**)& GdipGetImageThumbnail },
+    { "GdipImageGetFrameDimensionsCount", cast(void**)& GdipImageGetFrameDimensionsCount },
+    { "GdipImageRotateFlip", cast(void**)& GdipImageRotateFlip },
+    { "GdipGetPropertyItemSize", cast(void**)& GdipGetPropertyItemSize },
+    { "GdipGetPropertyItem", cast(void**)& GdipGetPropertyItem },
+    { "GdipSetPropertyItem", cast(void**)& GdipSetPropertyItem },
+    { "GdipRemovePropertyItem", cast(void**)& GdipRemovePropertyItem },
+    { "GdipGetPropertySize", cast(void**)& GdipGetPropertySize },
+    { "GdipGetAllPropertyItems", cast(void**)& GdipGetAllPropertyItems },
+    { "GdipGetImageBounds", cast(void**)& GdipGetImageBounds },
+    { "GdipGetImagePaletteSize", cast(void**)& GdipGetImagePaletteSize },
+    { "GdipGetImagePalette", cast(void**)& GdipGetImagePalette },
+    { "GdipSetImagePalette", cast(void**)& GdipSetImagePalette },
+    { "GdipCreateBitmapFromScan0", cast(void**)& GdipCreateBitmapFromScan0 },
+    { "GdipCreateBitmapFromHBITMAP", cast(void**)& GdipCreateBitmapFromHBITMAP },
+    { "GdipCreateBitmapFromHICON", cast(void**)& GdipCreateBitmapFromHICON },
+    { "GdipCreateBitmapFromFileICM", cast(void**)& GdipCreateBitmapFromFileICM },
+    { "GdipCreateBitmapFromFile", cast(void**)& GdipCreateBitmapFromFile },
+    { "GdipCreateBitmapFromGraphics", cast(void**)& GdipCreateBitmapFromGraphics },
+    { "GdipCloneBitmapArea", cast(void**)& GdipCloneBitmapArea },
+    { "GdipCloneBitmapAreaI", cast(void**)& GdipCloneBitmapAreaI },
+    { "GdipBitmapGetPixel", cast(void**)& GdipBitmapGetPixel },
+    { "GdipBitmapSetPixel", cast(void**)& GdipBitmapSetPixel },
+    { "GdipBitmapLockBits", cast(void**)& GdipBitmapLockBits },
+    { "GdipBitmapUnlockBits", cast(void**)& GdipBitmapUnlockBits },
+    { "GdipBitmapSetResolution", cast(void**)& GdipBitmapSetResolution },
+    { "GdipCreateHICONFromBitmap", cast(void**)& GdipCreateHICONFromBitmap },
+    { "GdipCreateHBITMAPFromBitmap", cast(void**)& GdipCreateHBITMAPFromBitmap },
+    { "GdipCreateImageAttributes", cast(void**)& GdipCreateImageAttributes },
+    { "GdipDisposeImageAttributes", cast(void**)& GdipDisposeImageAttributes },
+    { "GdipSetImageAttributesColorMatrix", cast(void**)& GdipSetImageAttributesColorMatrix },
+    { "GdipSetImageAttributesThreshold", cast(void**)& GdipSetImageAttributesThreshold },
+    { "GdipSetImageAttributesGamma", cast(void**)& GdipSetImageAttributesGamma },
+    { "GdipSetImageAttributesNoOp", cast(void**)& GdipSetImageAttributesNoOp },
+    { "GdipSetImageAttributesColorKeys", cast(void**)& GdipSetImageAttributesColorKeys },
+    { "GdipSetImageAttributesOutputChannel", cast(void**)& GdipSetImageAttributesOutputChannel },
+    { "GdipSetImageAttributesOutputChannelColorProfile", cast(void**)& GdipSetImageAttributesOutputChannelColorProfile },
+    { "GdipSetImageAttributesWrapMode", cast(void**)& GdipSetImageAttributesWrapMode },
+    { "GdipNewInstalledFontCollection", cast(void**)& GdipNewInstalledFontCollection },
+    { "GdipNewPrivateFontCollection", cast(void**)& GdipNewPrivateFontCollection },
+    { "GdipDeletePrivateFontCollection", cast(void**)& GdipDeletePrivateFontCollection },
+    { "GdipPrivateAddFontFile", cast(void**)& GdipPrivateAddFontFile },
+    { "GdipPrivateAddMemoryFont", cast(void**)& GdipPrivateAddMemoryFont },
+    { "GdipGetFontCollectionFamilyCount", cast(void**)& GdipGetFontCollectionFamilyCount },
+    { "GdipGetFontCollectionFamilyList", cast(void**)& GdipGetFontCollectionFamilyList },
+    { "GdipCreateFontFamilyFromName", cast(void**)& GdipCreateFontFamilyFromName },
+    { "GdipDeleteFontFamily", cast(void**)& GdipDeleteFontFamily },
+    { "GdipCloneFontFamily", cast(void**)& GdipCloneFontFamily },
+    { "GdipGetFamilyName", cast(void**)& GdipGetFamilyName },
+    { "GdipGetGenericFontFamilyMonospace", cast(void**)& GdipGetGenericFontFamilyMonospace },
+    { "GdipGetGenericFontFamilySerif", cast(void**)& GdipGetGenericFontFamilySerif },
+    { "GdipGetGenericFontFamilySansSerif", cast(void**)& GdipGetGenericFontFamilySansSerif },
+    { "GdipGetEmHeight", cast(void**)& GdipGetEmHeight },
+    { "GdipGetCellAscent", cast(void**)& GdipGetCellAscent },
+    { "GdipGetCellDescent", cast(void**)& GdipGetCellDescent },
+    { "GdipGetLineSpacing", cast(void**)& GdipGetLineSpacing },
+    { "GdipIsStyleAvailable", cast(void**)& GdipIsStyleAvailable },
+    { "GdipCreateFont", cast(void**)& GdipCreateFont },
+    { "GdipCreateFontFromDC", cast(void**)& GdipCreateFontFromDC },
+    { "GdipDeleteFont", cast(void**)& GdipDeleteFont },
+    { "GdipCloneFont", cast(void**)& GdipCloneFont },
+    { "GdipGetFontSize", cast(void**)& GdipGetFontSize },
+    { "GdipGetFontHeight", cast(void**)& GdipGetFontHeight },
+    { "GdipGetFontHeightGivenDPI", cast(void**)& GdipGetFontHeightGivenDPI },
+    { "GdipGetFontStyle", cast(void**)& GdipGetFontStyle },
+    { "GdipGetFontUnit", cast(void**)& GdipGetFontUnit },
+    { "GdipGetFamily", cast(void**)& GdipGetFamily },
+    { "GdipCreateFontFromLogfontW", cast(void**)& GdipCreateFontFromLogfontW },
+    { "GdipCreateFontFromLogfontA", cast(void**)& GdipCreateFontFromLogfontA },
+    { "GdipGetLogFontW", cast(void**)& GdipGetLogFontW },
+    { "GdipCreateStringFormat", cast(void**)& GdipCreateStringFormat },
+    { "GdipDeleteStringFormat", cast(void**)& GdipDeleteStringFormat },
+    { "GdipGetStringFormatFlags", cast(void**)& GdipGetStringFormatFlags },
+    { "GdipSetStringFormatFlags", cast(void**)& GdipSetStringFormatFlags },
+    { "GdipGetStringFormatAlign", cast(void**)& GdipGetStringFormatAlign },
+    { "GdipSetStringFormatAlign", cast(void**)& GdipSetStringFormatAlign },
+    { "GdipGetStringFormatLineAlign", cast(void**)& GdipGetStringFormatLineAlign },
+    { "GdipSetStringFormatLineAlign", cast(void**)& GdipSetStringFormatLineAlign },
+    { "GdipGetStringFormatTrimming", cast(void**)& GdipGetStringFormatTrimming },
+    { "GdipSetStringFormatTrimming", cast(void**)& GdipSetStringFormatTrimming },
+    { "GdipCreatePath", cast(void**)& GdipCreatePath },
+    { "GdipCreatePath2", cast(void**)& GdipCreatePath2 },
+    { "GdipCreatePath2I", cast(void**)& GdipCreatePath2I },
+    { "GdipDeletePath", cast(void**)& GdipDeletePath },
+    { "GdipClonePath", cast(void**)& GdipClonePath },
+    { "GdipResetPath", cast(void**)& GdipResetPath },
+    { "GdipGetPathFillMode", cast(void**)& GdipGetPathFillMode },
+    { "GdipSetPathFillMode", cast(void**)& GdipSetPathFillMode },
+    { "GdipStartPathFigure", cast(void**)& GdipStartPathFigure },
+    { "GdipClosePathFigure", cast(void**)& GdipClosePathFigure },
+    { "GdipClosePathFigures", cast(void**)& GdipClosePathFigures },
+    { "GdipSetPathMarker", cast(void**)& GdipSetPathMarker },
+    { "GdipClearPathMarkers", cast(void**)& GdipClearPathMarkers },
+    { "GdipReversePath", cast(void**)& GdipReversePath },
+    { "GdipGetPathLastPoint", cast(void**)& GdipGetPathLastPoint },
+    { "GdipAddPathLine", cast(void**)& GdipAddPathLine },
+    { "GdipAddPathLineI", cast(void**)& GdipAddPathLineI },
+    { "GdipAddPathLine2", cast(void**)& GdipAddPathLine2 },
+    { "GdipAddPathLine2I", cast(void**)& GdipAddPathLine2I },
+    { "GdipAddPathArc", cast(void**)& GdipAddPathArc },
+    { "GdipAddPathArcI", cast(void**)& GdipAddPathArcI },
+    { "GdipAddPathBezier", cast(void**)& GdipAddPathBezier },
+    { "GdipAddPathBezierI", cast(void**)& GdipAddPathBezierI },
+    { "GdipAddPathBeziers", cast(void**)& GdipAddPathBeziers },
+    { "GdipAddPathBeziersI", cast(void**)& GdipAddPathBeziersI },
+    { "GdipAddPathCurve", cast(void**)& GdipAddPathCurve },
+    { "GdipAddPathCurveI", cast(void**)& GdipAddPathCurveI },
+    { "GdipAddPathCurve2", cast(void**)& GdipAddPathCurve2 },
+    { "GdipAddPathCurve2I", cast(void**)& GdipAddPathCurve2I },
+    { "GdipAddPathCurve3", cast(void**)& GdipAddPathCurve3 },
+    { "GdipAddPathCurve3I", cast(void**)& GdipAddPathCurve3I },
+    { "GdipAddPathClosedCurve", cast(void**)& GdipAddPathClosedCurve },
+    { "GdipAddPathClosedCurveI", cast(void**)& GdipAddPathClosedCurveI },
+    { "GdipAddPathClosedCurve2", cast(void**)& GdipAddPathClosedCurve2 },
+    { "GdipAddPathClosedCurve2I", cast(void**)& GdipAddPathClosedCurve2I },
+    { "GdipAddPathRectangle", cast(void**)& GdipAddPathRectangle },
+    { "GdipAddPathRectangleI", cast(void**)& GdipAddPathRectangleI },
+    { "GdipAddPathRectangles", cast(void**)& GdipAddPathRectangles },
+    { "GdipAddPathRectanglesI", cast(void**)& GdipAddPathRectanglesI },
+    { "GdipAddPathEllipse", cast(void**)& GdipAddPathEllipse },
+    { "GdipAddPathEllipseI", cast(void**)& GdipAddPathEllipseI },
+    { "GdipAddPathPie", cast(void**)& GdipAddPathPie },
+    { "GdipAddPathPieI", cast(void**)& GdipAddPathPieI },
+    { "GdipAddPathPolygon", cast(void**)& GdipAddPathPolygon },
+    { "GdipAddPathPolygonI", cast(void**)& GdipAddPathPolygonI },
+    { "GdipAddPathPath", cast(void**)& GdipAddPathPath },
+    { "GdipAddPathString", cast(void**)& GdipAddPathString },
+    { "GdipAddPathStringI", cast(void**)& GdipAddPathStringI },
+    { "GdipTransformPath", cast(void**)& GdipTransformPath },
+    { "GdipGetPathWorldBounds", cast(void**)& GdipGetPathWorldBounds },
+    { "GdipFlattenPath", cast(void**)& GdipFlattenPath },
+    { "GdipWidenPath", cast(void**)& GdipWidenPath },
+    { "GdipWindingModeOutline", cast(void**)& GdipWindingModeOutline },
+    { "GdipWarpPath", cast(void**)& GdipWarpPath },
+    { "GdipGetPointCount", cast(void**)& GdipGetPointCount },
+    { "GdipGetPathTypes", cast(void**)& GdipGetPathTypes },
+    { "GdipGetPathPoints", cast(void**)& GdipGetPathPoints },
+    { "GdipIsVisiblePathPoint", cast(void**)& GdipIsVisiblePathPoint },
+    { "GdipIsVisiblePathPointI", cast(void**)& GdipIsVisiblePathPointI },
+    { "GdipIsOutlineVisiblePathPoint", cast(void**)& GdipIsOutlineVisiblePathPoint },
+    { "GdipIsOutlineVisiblePathPointI", cast(void**)& GdipIsOutlineVisiblePathPointI },
+    { "GdipDrawPath", cast(void**)& GdipDrawPath },
+    { "GdipCreatePathIter", cast(void**)& GdipCreatePathIter },
+    { "GdipDeletePathIter", cast(void**)& GdipDeletePathIter },
+    { "GdipPathIterNextSubpath", cast(void**)& GdipPathIterNextSubpath },
+    { "GdipPathIterNextSubpathPath", cast(void**)& GdipPathIterNextSubpathPath },
+    { "GdipPathIterNextPathType", cast(void**)& GdipPathIterNextPathType },
+    { "GdipPathIterNextMarker", cast(void**)& GdipPathIterNextMarker },
+    { "GdipPathIterNextMarkerPath", cast(void**)& GdipPathIterNextMarkerPath },
+    { "GdipPathIterGetCount", cast(void**)& GdipPathIterGetCount },
+    { "GdipPathIterGetSubpathCount", cast(void**)& GdipPathIterGetSubpathCount },
+    { "GdipPathIterHasCurve", cast(void**)& GdipPathIterHasCurve },
+    { "GdipPathIterRewind", cast(void**)& GdipPathIterRewind },
+    { "GdipPathIterEnumerate", cast(void**)& GdipPathIterEnumerate },
+    { "GdipPathIterCopyData", cast(void**)& GdipPathIterCopyData },
+    { "GdipCreatePathGradient", cast(void**)& GdipCreatePathGradient },
+    { "GdipCreatePathGradientI", cast(void**)& GdipCreatePathGradientI },
+    { "GdipCreatePathGradientFromPath", cast(void**)& GdipCreatePathGradientFromPath },
+    { "GdipGetPathGradientCenterColor", cast(void**)& GdipGetPathGradientCenterColor },
+    { "GdipSetPathGradientCenterColor", cast(void**)& GdipSetPathGradientCenterColor },
+    { "GdipGetPathGradientSurroundColorCount", cast(void**)& GdipGetPathGradientSurroundColorCount },
+    { "GdipGetPathGradientSurroundColorsWithCount", cast(void**)& GdipGetPathGradientSurroundColorsWithCount },
+    { "GdipSetPathGradientSurroundColorsWithCount", cast(void**)& GdipSetPathGradientSurroundColorsWithCount },
+    { "GdipGetPathGradientCenterPoint", cast(void**)& GdipGetPathGradientCenterPoint },
+    { "GdipSetPathGradientCenterPoint", cast(void**)& GdipSetPathGradientCenterPoint },
+    { "GdipGetPathGradientRect", cast(void**)& GdipGetPathGradientRect },
+    { "GdipGetPathGradientBlendCount", cast(void**)& GdipGetPathGradientBlendCount },
+    { "GdipGetPathGradientBlend", cast(void**)& GdipGetPathGradientBlend },
+    { "GdipSetPathGradientBlend", cast(void**)& GdipSetPathGradientBlend },
+    { "GdipGetPathGradientPresetBlendCount", cast(void**)& GdipGetPathGradientPresetBlendCount },
+    { "GdipGetPathGradientPresetBlend", cast(void**)& GdipGetPathGradientPresetBlend },
+    { "GdipSetPathGradientPresetBlend", cast(void**)& GdipSetPathGradientPresetBlend },
+    { "GdipSetPathGradientSigmaBlend", cast(void**)& GdipSetPathGradientSigmaBlend },
+    { "GdipSetPathGradientLinearBlend", cast(void**)& GdipSetPathGradientLinearBlend },
+    { "GdipGetPathGradientTransform", cast(void**)& GdipGetPathGradientTransform },
+    { "GdipSetPathGradientTransform", cast(void**)& GdipSetPathGradientTransform },
+    { "GdipResetPathGradientTransform", cast(void**)& GdipResetPathGradientTransform },
+    { "GdipMultiplyPathGradientTransform", cast(void**)& GdipMultiplyPathGradientTransform },
+    { "GdipRotatePathGradientTransform", cast(void**)& GdipRotatePathGradientTransform },
+    { "GdipTranslatePathGradientTransform", cast(void**)& GdipTranslatePathGradientTransform },
+    { "GdipScalePathGradientTransform", cast(void**)& GdipScalePathGradientTransform },
+    { "GdipGetPathGradientFocusScales", cast(void**)& GdipGetPathGradientFocusScales },
+    { "GdipSetPathGradientFocusScales", cast(void**)& GdipSetPathGradientFocusScales },
+    { "GdipGetPathGradientWrapMode", cast(void**)& GdipGetPathGradientWrapMode },
+    { "GdipSetPathGradientWrapMode", cast(void**)& GdipSetPathGradientWrapMode },
+    { "GdipResetTextureTransform", cast(void**)& GdipResetTextureTransform },
+    { "GdipScaleTextureTransform", cast(void**)& GdipScaleTextureTransform },
+    { "GdipTranslateTextureTransform", cast(void**)& GdipTranslateTextureTransform },
+    { "GdipStringFormatGetGenericDefault", cast(void**)& GdipStringFormatGetGenericDefault },
+    { "GdipStringFormatGetGenericTypographic", cast(void**)& GdipStringFormatGetGenericTypographic },
+    { "GdipSetStringFormatHotkeyPrefix", cast(void**)& GdipSetStringFormatHotkeyPrefix },
+    { "GdipSetStringFormatTabStops", cast(void**)& GdipSetStringFormatTabStops },
+];
+
+
+void loadLib_Gdip(){
+    if (auto lib = SharedLib.load(`gdiplus.dll`)) {
+        foreach( inout s; symbols ){
+            *s.symbol = lib.getSymbol( s.name.ptr );
+            if( s.symbol is null ){
+                getDwtLogger.error("gdiplus.dll: Symbol '{}' not found", s.name );
+            }
+        }
+    } else {
+        getDwtLogger.error("Could not load the library gdiplus.dll");
+    }
+}
+
+}
+
+/******************************************************************************
+
+******************************************************************************/
+/+
+private uint initToken;
+private bool isShutdown;
+
+public int startup() {
+  static GdiplusStartupInput input = { 1, null, 0, 0 };
+  static GdiplusStartupOutput output;
+
+  return GdiplusStartup(initToken, input, output);
+}
+
+public void shutdown() {
+  // GC.collect();
+  isShutdown = true;
+
+  GdiplusShutdown(initToken);
+}
++/