diff options
author | Marek Safar <marek.safar@gmail.com> | 2017-08-07 17:39:39 +0300 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2017-10-05 23:43:54 +0300 |
commit | 411a37af27905eaa44dac1a31f6387a11c0b0244 (patch) | |
tree | 91ae551aa6c377e83f0c3ba8cfe93201296cce0b /mcs/class/System.Drawing | |
parent | 3e9d7d6e9cf8dc33eb29c497c350a1cd7df3a057 (diff) |
Bump corefx
Diffstat (limited to 'mcs/class/System.Drawing')
7 files changed, 297 insertions, 275 deletions
diff --git a/mcs/class/System.Drawing/System.Drawing.Drawing2D/LinearGradientBrush.cs b/mcs/class/System.Drawing/System.Drawing.Drawing2D/LinearGradientBrush.cs index d2e645d2ccb..2490309a275 100644 --- a/mcs/class/System.Drawing/System.Drawing.Drawing2D/LinearGradientBrush.cs +++ b/mcs/class/System.Drawing/System.Drawing.Drawing2D/LinearGradientBrush.cs @@ -29,6 +29,7 @@ // using System.ComponentModel; +using System.Runtime.InteropServices; namespace System.Drawing.Drawing2D { @@ -386,7 +387,7 @@ namespace System.Drawing.Drawing2D { public override object Clone () { IntPtr clonePtr; - Status status = GDIPlus.GdipCloneBrush (NativeBrush, out clonePtr); + Status status = (Status) GDIPlus.GdipCloneBrush (new HandleRef (this, NativeBrush), out clonePtr); GDIPlus.CheckStatus (status); return new LinearGradientBrush (clonePtr); diff --git a/mcs/class/System.Drawing/System.Drawing.Drawing2D/PathGradientBrush.cs b/mcs/class/System.Drawing/System.Drawing.Drawing2D/PathGradientBrush.cs index addf2366b92..abd6fc1a346 100644 --- a/mcs/class/System.Drawing/System.Drawing.Drawing2D/PathGradientBrush.cs +++ b/mcs/class/System.Drawing/System.Drawing.Drawing2D/PathGradientBrush.cs @@ -30,6 +30,7 @@ // using System.ComponentModel; +using System.Runtime.InteropServices; namespace System.Drawing.Drawing2D { @@ -383,7 +384,7 @@ namespace System.Drawing.Drawing2D { public override object Clone () { IntPtr clonePtr; - Status status = GDIPlus.GdipCloneBrush (NativeBrush, out clonePtr); + Status status = (Status) GDIPlus.GdipCloneBrush (new HandleRef(this, NativeBrush), out clonePtr); GDIPlus.CheckStatus (status); PathGradientBrush clone = new PathGradientBrush (clonePtr); diff --git a/mcs/class/System.Drawing/System.Drawing.dll.sources b/mcs/class/System.Drawing/System.Drawing.dll.sources index 18e12edb898..93cfada694a 100755 --- a/mcs/class/System.Drawing/System.Drawing.dll.sources +++ b/mcs/class/System.Drawing/System.Drawing.dll.sources @@ -1,6 +1,10 @@ -corefx/SR.cs System.Drawing/SR.cs Assembly/AssemblyInfo.cs + +System.Drawing/gdipFunctions.cs + +corefx/SR.cs + ../../build/common/Consts.cs ../../build/common/Locale.cs ../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/ClientUtils.cs @@ -13,7 +17,6 @@ Assembly/AssemblyInfo.cs ../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Internal/GPRECT.cs ../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Internal/GPRECTF.cs ../../../external/corefx/src/System.Drawing.Common/src/AssemblyRef.cs -../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Internal/ISystemEventTracker.cs System.Drawing/Bitmap.cs ../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/BitmapSuffixInSameAssemblyAttribute.cs ../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/BitmapSuffixInSatelliteAssemblyAttribute.cs @@ -221,3 +224,7 @@ System.Drawing.Text/PrivateFontCollection.cs ../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Text/InstalledFontCollection.cs ../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Text/TextRenderingHint.cs +../../../external/corefx/src/Common/src/System/Drawing/ColorTable.cs +../../../external/corefx/src/Common/src/System/Drawing/ColorUtil.netcoreapp21.cs + +../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Drawing2D/CustomLineCap.Unix.cs diff --git a/mcs/class/System.Drawing/System.Drawing/gdipFunctions.cs b/mcs/class/System.Drawing/System.Drawing/gdipFunctions.cs index af722ecbcc6..c42b38a20bc 100644 --- a/mcs/class/System.Drawing/System.Drawing/gdipFunctions.cs +++ b/mcs/class/System.Drawing/System.Drawing/gdipFunctions.cs @@ -43,10 +43,18 @@ using System.Runtime.InteropServices.ComTypes; namespace System.Drawing { + internal partial class SafeNativeMethods + { + internal partial class Gdip : GDIPlus + { + + } + } + /// <summary> /// GDI+ API Functions /// </summary> - internal static class GDIPlus { + internal /*static*/ class GDIPlus { public const int FACESIZE = 32; public const int LANG_NEUTRAL = 0; public static IntPtr Display = IntPtr.Zero; @@ -270,11 +278,11 @@ namespace System.Drawing // Brush functions [DllImport(GdiPlus)] - static internal extern Status GdipCloneBrush (IntPtr brush, out IntPtr clonedBrush); + static internal extern int GdipCloneBrush (HandleRef brush, out IntPtr clonedBrush); [DllImport(GdiPlus)] - static internal extern Status GdipDeleteBrush (IntPtr brush); + static internal extern int GdipDeleteBrush (HandleRef brush); [DllImport(GdiPlus)] - static internal extern Status GdipGetBrushType (IntPtr brush, out BrushType type); + static internal extern int GdipGetBrushType (HandleRef brush, out BrushType type); // Region functions @@ -384,53 +392,53 @@ namespace System.Drawing // Solid brush functions [DllImport(GdiPlus)] - static internal extern Status GdipCreateSolidFill (int color, out IntPtr brush); + static internal extern int GdipCreateSolidFill (int color, out IntPtr brush); [DllImport(GdiPlus)] - static internal extern Status GdipGetSolidFillColor (IntPtr brush, out int color); + static internal extern int GdipGetSolidFillColor (HandleRef brush, out int color); [DllImport(GdiPlus)] - static internal extern Status GdipSetSolidFillColor (IntPtr brush, int color); + static internal extern int GdipSetSolidFillColor (HandleRef brush, int color); // Hatch Brush functions [DllImport(GdiPlus)] - static internal extern Status GdipCreateHatchBrush (HatchStyle hatchstyle, int foreColor, int backColor, out IntPtr brush); + static internal extern int GdipCreateHatchBrush (/*HatchStyle*/ int hatchstyle, int foreColor, int backColor, out IntPtr brush); [DllImport(GdiPlus)] - static internal extern Status GdipGetHatchStyle (IntPtr brush, out HatchStyle hatchstyle); + static internal extern int GdipGetHatchStyle (HandleRef brush, out /*HatchStyle*/ int hatchstyle); [DllImport(GdiPlus)] - static internal extern Status GdipGetHatchForegroundColor (IntPtr brush, out int foreColor); + static internal extern int GdipGetHatchForegroundColor (HandleRef brush, out int foreColor); [DllImport(GdiPlus)] - static internal extern Status GdipGetHatchBackgroundColor (IntPtr brush, out int backColor); + static internal extern int GdipGetHatchBackgroundColor (HandleRef brush, out int backColor); // Texture brush functions [DllImport(GdiPlus)] - static internal extern Status GdipGetTextureImage (IntPtr texture, out IntPtr image); + static internal extern int GdipGetTextureImage (HandleRef texture, out IntPtr image); [DllImport(GdiPlus)] - static internal extern Status GdipCreateTexture (IntPtr image, WrapMode wrapMode, out IntPtr texture); + static internal extern int GdipCreateTexture (HandleRef image, /*WrapMode*/ int wrapMode, out IntPtr texture); [DllImport(GdiPlus)] - static internal extern Status GdipCreateTextureIAI (IntPtr image, IntPtr imageAttributes, int x, int y, int width, int height, out IntPtr texture); + static internal extern int GdipCreateTextureIAI (HandleRef image, HandleRef imageAttributes, int x, int y, int width, int height, out IntPtr texture); [DllImport(GdiPlus)] - static internal extern Status GdipCreateTextureIA (IntPtr image, IntPtr imageAttributes, float x, float y, float width, float height, out IntPtr texture); + static internal extern int GdipCreateTextureIA (HandleRef image, HandleRef imageAttributes, float x, float y, float width, float height, out IntPtr texture); [DllImport(GdiPlus)] - static internal extern Status GdipCreateTexture2I (IntPtr image, WrapMode wrapMode, int x, int y, int width, int height, out IntPtr texture); + static internal extern int GdipCreateTexture2I (HandleRef image, /*WrapMode*/ int wrapMode, int x, int y, int width, int height, out IntPtr texture); [DllImport(GdiPlus)] - static internal extern Status GdipCreateTexture2 (IntPtr image, WrapMode wrapMode, float x, float y, float width, float height, out IntPtr texture); + static internal extern int GdipCreateTexture2 (HandleRef image, /*WrapMode*/ int wrapMode, float x, float y, float width, float height, out IntPtr texture); [DllImport(GdiPlus)] - static internal extern Status GdipGetTextureTransform (IntPtr texture, IntPtr matrix); + static internal extern int GdipGetTextureTransform (HandleRef texture, HandleRef matrix); [DllImport(GdiPlus)] - static internal extern Status GdipSetTextureTransform (IntPtr texture, IntPtr matrix); + static internal extern int GdipSetTextureTransform (HandleRef texture, HandleRef matrix); [DllImport(GdiPlus)] - static internal extern Status GdipGetTextureWrapMode (IntPtr texture, out WrapMode wrapMode); + static internal extern int GdipGetTextureWrapMode (HandleRef texture, out /*WrapMode*/ int wrapMode); [DllImport(GdiPlus)] - static internal extern Status GdipSetTextureWrapMode (IntPtr texture, WrapMode wrapMode); + static internal extern int GdipSetTextureWrapMode (HandleRef texture, /*WrapMode*/ int wrapMode); [DllImport(GdiPlus)] - static internal extern Status GdipMultiplyTextureTransform (IntPtr texture, IntPtr matrix, MatrixOrder order); + static internal extern int GdipMultiplyTextureTransform (HandleRef texture, HandleRef matrix, MatrixOrder order); [DllImport(GdiPlus)] - static internal extern Status GdipResetTextureTransform (IntPtr texture); + static internal extern int GdipResetTextureTransform (HandleRef texture); [DllImport(GdiPlus)] - static internal extern Status GdipRotateTextureTransform (IntPtr texture, float angle, MatrixOrder order); + static internal extern int GdipRotateTextureTransform (HandleRef texture, float angle, MatrixOrder order); [DllImport(GdiPlus)] - static internal extern Status GdipScaleTextureTransform (IntPtr texture, float sx, float sy, MatrixOrder order); + static internal extern int GdipScaleTextureTransform (HandleRef texture, float sx, float sy, MatrixOrder order); [DllImport(GdiPlus)] - static internal extern Status GdipTranslateTextureTransform (IntPtr texture, float dx, float dy, MatrixOrder order); + static internal extern int GdipTranslateTextureTransform (HandleRef texture, float dx, float dy, MatrixOrder order); // PathGradientBrush functions [DllImport(GdiPlus)] @@ -640,41 +648,41 @@ namespace System.Drawing static internal extern Status GdipGetRenderingOrigin (IntPtr graphics, out int x, out int y); [DllImport (GdiPlus)] static internal extern Status GdipSetRenderingOrigin (IntPtr graphics, int x, int y); - [DllImport(GdiPlus)] - internal static extern Status GdipCloneBitmapArea (float x, float y, float width, float height, PixelFormat format, IntPtr original, out IntPtr bitmap); - [DllImport(GdiPlus)] - internal static extern Status GdipCloneBitmapAreaI (int x, int y, int width, int height, PixelFormat format, IntPtr original, out IntPtr bitmap); - [DllImport(GdiPlus)] - internal static extern Status GdipResetWorldTransform (IntPtr graphics); - [DllImport(GdiPlus)] - internal static extern Status GdipSetWorldTransform (IntPtr graphics, IntPtr matrix); - [DllImport(GdiPlus)] - internal static extern Status GdipGetWorldTransform (IntPtr graphics, IntPtr matrix); - [DllImport(GdiPlus)] - internal static extern Status GdipScaleWorldTransform (IntPtr graphics, float sx, float sy, MatrixOrder order); - [DllImport(GdiPlus)] - internal static extern Status GdipGraphicsClear(IntPtr graphics, int argb); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawClosedCurve(IntPtr graphics, IntPtr pen, PointF [] points, int count); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawClosedCurveI(IntPtr graphics, IntPtr pen, Point [] points, int count); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawClosedCurve2(IntPtr graphics, IntPtr pen, PointF [] points, int count, float tension); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawClosedCurve2I(IntPtr graphics, IntPtr pen, Point [] points, int count, float tension); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawCurve(IntPtr graphics, IntPtr pen, PointF [] points, int count); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawCurveI(IntPtr graphics, IntPtr pen, Point [] points, int count); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawCurve2(IntPtr graphics, IntPtr pen, PointF [] points, int count, float tension); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawCurve2I(IntPtr graphics, IntPtr pen, Point [] points, int count, float tension); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawCurve3(IntPtr graphics, IntPtr pen, PointF [] points, int count, int offset, int numberOfSegments, float tension); - [DllImport(GdiPlus)] - internal static extern Status GdipDrawCurve3I(IntPtr graphics, IntPtr pen, Point [] points, int count, int offset, int numberOfSegments, float tension); - [DllImport(GdiPlus)] + [DllImport(GdiPlus)] + internal static extern Status GdipCloneBitmapArea (float x, float y, float width, float height, PixelFormat format, IntPtr original, out IntPtr bitmap); + [DllImport(GdiPlus)] + internal static extern Status GdipCloneBitmapAreaI (int x, int y, int width, int height, PixelFormat format, IntPtr original, out IntPtr bitmap); + [DllImport(GdiPlus)] + internal static extern Status GdipResetWorldTransform (IntPtr graphics); + [DllImport(GdiPlus)] + internal static extern Status GdipSetWorldTransform (IntPtr graphics, IntPtr matrix); + [DllImport(GdiPlus)] + internal static extern Status GdipGetWorldTransform (IntPtr graphics, IntPtr matrix); + [DllImport(GdiPlus)] + internal static extern Status GdipScaleWorldTransform (IntPtr graphics, float sx, float sy, MatrixOrder order); + [DllImport(GdiPlus)] + internal static extern Status GdipGraphicsClear(IntPtr graphics, int argb); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawClosedCurve(IntPtr graphics, IntPtr pen, PointF [] points, int count); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawClosedCurveI(IntPtr graphics, IntPtr pen, Point [] points, int count); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawClosedCurve2(IntPtr graphics, IntPtr pen, PointF [] points, int count, float tension); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawClosedCurve2I(IntPtr graphics, IntPtr pen, Point [] points, int count, float tension); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawCurve(IntPtr graphics, IntPtr pen, PointF [] points, int count); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawCurveI(IntPtr graphics, IntPtr pen, Point [] points, int count); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawCurve2(IntPtr graphics, IntPtr pen, PointF [] points, int count, float tension); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawCurve2I(IntPtr graphics, IntPtr pen, Point [] points, int count, float tension); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawCurve3(IntPtr graphics, IntPtr pen, PointF [] points, int count, int offset, int numberOfSegments, float tension); + [DllImport(GdiPlus)] + internal static extern Status GdipDrawCurve3I(IntPtr graphics, IntPtr pen, Point [] points, int count, int offset, int numberOfSegments, float tension); + [DllImport(GdiPlus)] internal static extern Status GdipSetClipRect(IntPtr graphics, float x, float y, float width, float height, CombineMode combineMode); [DllImport(GdiPlus)] internal static extern Status GdipSetClipRectI(IntPtr graphics, int x, int y, int width, int height, CombineMode combineMode); @@ -897,51 +905,51 @@ namespace System.Drawing // CustomLineCap functions [DllImport(GdiPlus)] - internal static extern Status GdipCreateCustomLineCap (IntPtr fillPath, IntPtr strokePath, LineCap baseCap, float baseInset, out IntPtr customCap); + internal static extern int GdipCreateCustomLineCap (HandleRef fillPath, HandleRef strokePath, LineCap baseCap, float baseInset, out IntPtr customCap); [DllImport(GdiPlus)] - internal static extern Status GdipDeleteCustomLineCap (IntPtr customCap); + internal static extern int GdipDeleteCustomLineCap (HandleRef customCap); [DllImport(GdiPlus)] - internal static extern Status GdipCloneCustomLineCap (IntPtr customCap, out IntPtr clonedCap); + internal static extern int GdipCloneCustomLineCap (HandleRef customCap, out IntPtr clonedCap); [DllImport(GdiPlus)] - internal static extern Status GdipSetCustomLineCapStrokeCaps (IntPtr customCap, LineCap startCap, LineCap endCap); + internal static extern int GdipSetCustomLineCapStrokeCaps (HandleRef customCap, LineCap startCap, LineCap endCap); [DllImport(GdiPlus)] - internal static extern Status GdipGetCustomLineCapStrokeCaps (IntPtr customCap, out LineCap startCap, out LineCap endCap); + internal static extern int GdipGetCustomLineCapStrokeCaps (HandleRef customCap, out LineCap startCap, out LineCap endCap); [DllImport(GdiPlus)] - internal static extern Status GdipSetCustomLineCapStrokeJoin (IntPtr customCap, LineJoin lineJoin); + internal static extern int GdipSetCustomLineCapStrokeJoin (HandleRef customCap, LineJoin lineJoin); [DllImport(GdiPlus)] - internal static extern Status GdipGetCustomLineCapStrokeJoin (IntPtr customCap, out LineJoin lineJoin); + internal static extern int GdipGetCustomLineCapStrokeJoin (HandleRef customCap, out LineJoin lineJoin); [DllImport(GdiPlus)] - internal static extern Status GdipSetCustomLineCapBaseCap (IntPtr customCap, LineCap baseCap); + internal static extern int GdipSetCustomLineCapBaseCap (HandleRef customCap, LineCap baseCap); [DllImport(GdiPlus)] - internal static extern Status GdipGetCustomLineCapBaseCap (IntPtr customCap, out LineCap baseCap); + internal static extern int GdipGetCustomLineCapBaseCap (HandleRef customCap, out LineCap baseCap); [DllImport(GdiPlus)] - internal static extern Status GdipSetCustomLineCapBaseInset (IntPtr customCap, float inset); + internal static extern int GdipSetCustomLineCapBaseInset (HandleRef customCap, float inset); [DllImport(GdiPlus)] - internal static extern Status GdipGetCustomLineCapBaseInset (IntPtr customCap, out float inset); + internal static extern int GdipGetCustomLineCapBaseInset (HandleRef customCap, out float inset); [DllImport(GdiPlus)] - internal static extern Status GdipSetCustomLineCapWidthScale (IntPtr customCap, float widthScale); + internal static extern int GdipSetCustomLineCapWidthScale (HandleRef customCap, float widthScale); [DllImport(GdiPlus)] - internal static extern Status GdipGetCustomLineCapWidthScale (IntPtr customCap, out float widthScale); + internal static extern int GdipGetCustomLineCapWidthScale (HandleRef customCap, out float widthScale); // AdjustableArrowCap functions [DllImport(GdiPlus)] - internal static extern Status GdipCreateAdjustableArrowCap (float height, float width, bool isFilled, out IntPtr arrowCap); + internal static extern int GdipCreateAdjustableArrowCap (float height, float width, bool isFilled, out IntPtr arrowCap); [DllImport(GdiPlus)] - internal static extern Status GdipSetAdjustableArrowCapHeight (IntPtr arrowCap, float height); + internal static extern int GdipSetAdjustableArrowCapHeight (HandleRef arrowCap, float height); [DllImport(GdiPlus)] - internal static extern Status GdipGetAdjustableArrowCapHeight (IntPtr arrowCap, out float height); + internal static extern int GdipGetAdjustableArrowCapHeight (HandleRef arrowCap, out float height); [DllImport(GdiPlus)] - internal static extern Status GdipSetAdjustableArrowCapWidth (IntPtr arrowCap, float width); + internal static extern int GdipSetAdjustableArrowCapWidth (HandleRef arrowCap, float width); [DllImport(GdiPlus)] - internal static extern Status GdipGetAdjustableArrowCapWidth (IntPtr arrowCap, out float width); + internal static extern int GdipGetAdjustableArrowCapWidth (HandleRef arrowCap, out float width); [DllImport(GdiPlus)] - internal static extern Status GdipSetAdjustableArrowCapMiddleInset (IntPtr arrowCap, float middleInset); + internal static extern int GdipSetAdjustableArrowCapMiddleInset (HandleRef arrowCap, float middleInset); [DllImport(GdiPlus)] - internal static extern Status GdipGetAdjustableArrowCapMiddleInset (IntPtr arrowCap, out float middleInset); + internal static extern int GdipGetAdjustableArrowCapMiddleInset (HandleRef arrowCap, out float middleInset); [DllImport(GdiPlus)] - internal static extern Status GdipSetAdjustableArrowCapFillState (IntPtr arrowCap, bool isFilled); + internal static extern int GdipSetAdjustableArrowCapFillState (HandleRef arrowCap, bool isFilled); [DllImport(GdiPlus)] - internal static extern Status GdipGetAdjustableArrowCapFillState (IntPtr arrowCap, out bool isFilled); + internal static extern int GdipGetAdjustableArrowCapFillState (HandleRef arrowCap, out bool isFilled); [DllImport(GdiPlus)] @@ -1360,82 +1368,82 @@ namespace System.Drawing // GraphicsPathIterator [DllImport(GdiPlus)] - internal static extern Status GdipCreatePathIter (out IntPtr iterator, IntPtr path); + internal static extern int GdipCreatePathIter (out IntPtr iterator, HandleRef path); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterGetCount (IntPtr iterator, out int count); + internal static extern int GdipPathIterGetCount (HandleRef iterator, out int count); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterGetSubpathCount (IntPtr iterator, out int count); + internal static extern int GdipPathIterGetSubpathCount (HandleRef iterator, out int count); [DllImport(GdiPlus)] - internal static extern Status GdipDeletePathIter (IntPtr iterator); + internal static extern int GdipDeletePathIter (HandleRef iterator); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterCopyData (IntPtr iterator, out int resultCount, PointF [] points, byte [] types, int startIndex, int endIndex); + internal static extern int GdipPathIterCopyData (HandleRef iterator, out int resultCount, /*PointF[]*/ IntPtr points, byte [] types, int startIndex, int endIndex); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterEnumerate (IntPtr iterator, out int resultCount, PointF [] points, byte [] types, int count); + internal static extern int GdipPathIterEnumerate (HandleRef iterator, out int resultCount, /*PointF[]*/ IntPtr points, byte [] types, int count); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterHasCurve (IntPtr iterator, out bool curve); + internal static extern int GdipPathIterHasCurve (HandleRef iterator, out bool curve); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterNextMarkerPath (IntPtr iterator, out int resultCount, IntPtr path); + internal static extern int GdipPathIterNextMarkerPath (HandleRef iterator, out int resultCount, HandleRef path); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterNextMarker (IntPtr iterator, out int resultCount, out int startIndex, out int endIndex); + internal static extern int GdipPathIterNextMarker (HandleRef iterator, out int resultCount, out int startIndex, out int endIndex); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterNextPathType (IntPtr iterator, out int resultCount, out byte pathType, out int startIndex, out int endIndex); + internal static extern int GdipPathIterNextPathType (HandleRef iterator, out int resultCount, out byte pathType, out int startIndex, out int endIndex); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterNextSubpathPath (IntPtr iterator, out int resultCount, IntPtr path, out bool isClosed); + internal static extern int GdipPathIterNextSubpathPath (HandleRef iterator, out int resultCount, HandleRef path, out bool isClosed); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterNextSubpath (IntPtr iterator, out int resultCount, out int startIndex, out int endIndex, out bool isClosed); + internal static extern int GdipPathIterNextSubpath (HandleRef iterator, out int resultCount, out int startIndex, out int endIndex, out bool isClosed); [DllImport(GdiPlus)] - internal static extern Status GdipPathIterRewind (IntPtr iterator); + internal static extern int GdipPathIterRewind (HandleRef iterator); // ImageAttributes [DllImport (GdiPlus)] - internal static extern Status GdipCreateImageAttributes (out IntPtr imageattr); + internal static extern int GdipCreateImageAttributes (out IntPtr imageattr); [DllImport (GdiPlus)] - internal static extern Status GdipSetImageAttributesColorKeys (IntPtr imageattr, + internal static extern int GdipSetImageAttributesColorKeys (HandleRef imageattr, ColorAdjustType type, bool enableFlag, int colorLow, int colorHigh); [DllImport (GdiPlus)] - internal static extern Status GdipDisposeImageAttributes (IntPtr imageattr); + internal static extern int GdipDisposeImageAttributes (HandleRef imageattr); [DllImport (GdiPlus)] - internal static extern Status GdipSetImageAttributesColorMatrix (IntPtr imageattr, - ColorAdjustType type, bool enableFlag, IntPtr colorMatrix, - IntPtr grayMatrix, ColorMatrixFlag flags); + internal static extern int GdipSetImageAttributesColorMatrix (HandleRef imageattr, + ColorAdjustType type, bool enableFlag, ColorMatrix colorMatrix, + ColorMatrix grayMatrix, ColorMatrixFlag flags); [DllImport (GdiPlus)] - internal static extern Status GdipSetImageAttributesGamma (IntPtr imageattr, + internal static extern int GdipSetImageAttributesGamma (HandleRef imageattr, ColorAdjustType type, bool enableFlag, float gamma); [DllImport (GdiPlus)] - internal static extern Status GdipSetImageAttributesNoOp (IntPtr imageattr, + internal static extern int GdipSetImageAttributesNoOp (HandleRef imageattr, ColorAdjustType type, bool enableFlag); [DllImport (GdiPlus)] - internal static extern Status GdipSetImageAttributesOutputChannel (IntPtr imageattr, + internal static extern int GdipSetImageAttributesOutputChannel (HandleRef imageattr, ColorAdjustType type, bool enableFlag, ColorChannelFlag channelFlags); [DllImport (GdiPlus, CharSet=CharSet.Auto)] - internal static extern Status GdipSetImageAttributesOutputChannelColorProfile (IntPtr imageattr, + internal static extern int GdipSetImageAttributesOutputChannelColorProfile (HandleRef imageattr, ColorAdjustType type, bool enableFlag, [MarshalAs (UnmanagedType.LPWStr)] string profileName); [DllImport (GdiPlus)] - internal static extern Status GdipSetImageAttributesRemapTable (IntPtr imageattr, - ColorAdjustType type, bool enableFlag, uint mapSize, IntPtr colorMap); + internal static extern int GdipSetImageAttributesRemapTable (HandleRef imageattr, + ColorAdjustType type, bool enableFlag, int mapSize, HandleRef colorMap); [DllImport (GdiPlus)] - internal static extern Status GdipSetImageAttributesThreshold (IntPtr imageattr, + internal static extern int GdipSetImageAttributesThreshold (HandleRef imageattr, ColorAdjustType type, bool enableFlag, float thresHold); [DllImport (GdiPlus)] - internal static extern Status GdipCloneImageAttributes(IntPtr imageattr, out IntPtr cloneImageattr); + internal static extern int GdipCloneImageAttributes(HandleRef imageattr, out IntPtr cloneImageattr); [DllImport (GdiPlus)] - internal static extern Status GdipGetImageAttributesAdjustedPalette (IntPtr imageattr, IntPtr colorPalette, + internal static extern int GdipGetImageAttributesAdjustedPalette (HandleRef imageattr, HandleRef colorPalette, ColorAdjustType colorAdjustType); [DllImport (GdiPlus)] - internal static extern Status GdipSetImageAttributesWrapMode(IntPtr imageattr, WrapMode wrap, + internal static extern int GdipSetImageAttributesWrapMode(HandleRef imageattr, /*WrapMode*/ int wrap, int argb, bool clamp); @@ -1524,14 +1532,14 @@ namespace System.Drawing // FontCollection [DllImport (GdiPlus)] - internal static extern Status GdipGetFontCollectionFamilyCount (IntPtr collection, out int found); + internal static extern int GdipGetFontCollectionFamilyCount (HandleRef collection, out int found); [DllImport (GdiPlus)] - internal static extern Status GdipGetFontCollectionFamilyList (IntPtr collection, int getCount, IntPtr[] dest, out int retCount); + internal static extern int GdipGetFontCollectionFamilyList (HandleRef collection, int getCount, IntPtr[] dest, out int retCount); //internal static extern Status GdipGetFontCollectionFamilyList( IntPtr collection, int getCount, [Out] FontFamily [] familyList, out int retCount ); [DllImport (GdiPlus)] - internal static extern Status GdipNewInstalledFontCollection (out IntPtr collection); + internal static extern int GdipNewInstalledFontCollection (out IntPtr collection); [DllImport (GdiPlus)] internal static extern Status GdipNewPrivateFontCollection (out IntPtr collection); @@ -1591,7 +1599,7 @@ namespace System.Drawing internal static extern Status GdipGetFontHeightGivenDPI (IntPtr font, float dpi, out float height); [DllImport (GdiPlus)] - internal static extern Status GdipCloneFontFamily (IntPtr fontFamily, out IntPtr clone); + internal static extern int GdipCloneFontFamily (HandleRef fontFamily, out IntPtr clone); // String Format @@ -1687,13 +1695,13 @@ namespace System.Drawing #endif //ImageCodecInfo functions [DllImport(GdiPlus)] - static internal extern Status GdipGetImageDecodersSize (out int decoderNums, out int arraySize); + static internal extern int GdipGetImageDecodersSize (out int decoderNums, out int arraySize); [DllImport(GdiPlus)] - static internal extern Status GdipGetImageDecoders (int decoderNums, int arraySize, IntPtr decoders); + static internal extern int GdipGetImageDecoders (int decoderNums, int arraySize, IntPtr decoders); [DllImport(GdiPlus)] - static internal extern Status GdipGetImageEncodersSize (out int encoderNums, out int arraySize); + static internal extern int GdipGetImageEncodersSize (out int encoderNums, out int arraySize); [DllImport(GdiPlus)] - static internal extern Status GdipGetImageEncoders (int encoderNums, int arraySize, IntPtr encoders); + static internal extern int GdipGetImageEncoders (int encoderNums, int arraySize, IntPtr encoders); // // These are stuff that is unix-only diff --git a/mcs/class/System.Drawing/System.Drawing_test.dll.sources b/mcs/class/System.Drawing/System.Drawing_test.dll.sources index bbde755ab8a..aa4ba34fd16 100644 --- a/mcs/class/System.Drawing/System.Drawing_test.dll.sources +++ b/mcs/class/System.Drawing/System.Drawing_test.dll.sources @@ -1,25 +1,10 @@ ../../test-helpers/NunitHelpers.cs ../../../build/common/Locale.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Gdiplus.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/NativeMethods.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/UnsafeNativeMethods.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Internal/GPPOINT.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Internal/GPPOINTF.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Internal/GPRECT.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Internal/GPRECTF.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Drawing2D/CustomLineCapType.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/PropertyItemInternal.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Imaging/PropertyItem.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderWmf.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderEmf.cs -../../../../external/corefx/src/System.Drawing.Common/src/System/Drawing/Imaging/EmfPlusFlags.cs -../../../../external/corefx/src/System.Drawing.Common/src/misc/HandleCollector.cs -../corefx/SR.cs -../System.Drawing/SR.cs -../System.Drawing/ExternDll.cs -../System.Drawing/gdipEnums.cs + +../System.Drawing/gdipEnums.cs ../System.Drawing/gdipFunctions.cs ../System.Drawing/gdipStructs.cs + HostIgnoreList.cs System.Drawing/ColorTranslator.cs System.Drawing/ColorConverter.cs diff --git a/mcs/class/System.Drawing/Test/System.Drawing/GDIPlusTest.cs b/mcs/class/System.Drawing/Test/System.Drawing/GDIPlusTest.cs index 4e6c2572529..939dbd8fe63 100644 --- a/mcs/class/System.Drawing/Test/System.Drawing/GDIPlusTest.cs +++ b/mcs/class/System.Drawing/Test/System.Drawing/GDIPlusTest.cs @@ -40,6 +40,8 @@ namespace MonoTests.System.Drawing { [TestFixture] public class GDIPlusTest { + static readonly HandleRef HandleRefZero = new HandleRef (null, IntPtr.Zero); + // for the moment this LOGFONT is different (and ok) from the one defined internally in SD [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Auto)] public class LOGFONT { @@ -71,10 +73,10 @@ namespace MonoTests.System.Drawing { Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePath (FillMode.Alternate, out path), "GdipCreatePath"); // test invalid conditions for #81829 - Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateCustomLineCap (IntPtr.Zero, path, LineCap.Flat, 1.0f, out cap), "GdipCreateCustomLineCap-FillPath-Null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteCustomLineCap (cap), "GdipDeleteCustomLineCap-1"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateCustomLineCap (path, IntPtr.Zero, LineCap.Flat, 1.0f, out cap), "GdipCreateCustomLineCap-StrokePath-Null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteCustomLineCap (cap), "GdipDeleteCustomLineCap-2"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipCreateCustomLineCap (HandleRefZero, new HandleRef (this, path), LineCap.Flat, 1.0f, out cap), "GdipCreateCustomLineCap-FillPath-Null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDeleteCustomLineCap (new HandleRef (this, cap)), "GdipDeleteCustomLineCap-1"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipCreateCustomLineCap (new HandleRef (this, path), HandleRefZero, LineCap.Flat, 1.0f, out cap), "GdipCreateCustomLineCap-StrokePath-Null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDeleteCustomLineCap (new HandleRef (this, cap)), "GdipDeleteCustomLineCap-2"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePath (path), "GdipDeletePath"); } @@ -110,12 +112,14 @@ namespace MonoTests.System.Drawing { public void CloneFontFamily () { IntPtr font_family = IntPtr.Zero; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipCloneFontFamily (IntPtr.Zero, out font_family), "GdipCloneFontFamily(null)"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipCloneFontFamily (HandleRefZero, out font_family), "GdipCloneFontFamily(null)"); GDIPlus.GdipCreateFontFamilyFromName ("Arial", IntPtr.Zero, out font_family); if (font_family != IntPtr.Zero) { + var font_family_handle = new HandleRef (this, font_family); + IntPtr clone; - Assert.AreEqual (Status.Ok, GDIPlus.GdipCloneFontFamily (font_family, out clone), "GdipCloneFontFamily(arial)"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipCloneFontFamily (font_family_handle, out clone), "GdipCloneFontFamily(arial)"); Assert.IsTrue (clone != IntPtr.Zero, "clone"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteFontFamily (font_family), "GdipDeleteFontFamily(arial)"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteFontFamily (clone), "GdipDeleteFontFamily(clone)"); @@ -249,7 +253,7 @@ namespace MonoTests.System.Drawing { [Test] public void DeleteBrush () { - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDeleteBrush (IntPtr.Zero), "GdipDeleteBrush"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipDeleteBrush (HandleRefZero), "GdipDeleteBrush"); } // Graphics @@ -513,86 +517,88 @@ namespace MonoTests.System.Drawing { { IntPtr path; Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePath (FillMode.Alternate, out path), "GdipCreatePath"); - + var pathHandle = new HandleRef (this, path); + IntPtr iter; - Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePathIter (out iter, path), "GdipCreatePathIter"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipCreatePathIter (out iter, pathHandle), "GdipCreatePathIter"); + var iterHandle = new HandleRef (this, iter); int count = -1; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterGetCount (IntPtr.Zero, out count), "GdipPathIterGetCount-null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterGetCount (iter, out count), "GdipPathIterGetCount"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipPathIterGetCount (HandleRefZero, out count), "GdipPathIterGetCount-null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterGetCount (iterHandle, out count), "GdipPathIterGetCount"); Assert.AreEqual (0, count, "count-1"); count = -1; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterGetSubpathCount (IntPtr.Zero, out count), "GdipPathIterGetSubpathCount-null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterGetSubpathCount (iter, out count), "GdipPathIterGetSubpathCount"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipPathIterGetSubpathCount (HandleRefZero, out count), "GdipPathIterGetSubpathCount-null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterGetSubpathCount (iterHandle, out count), "GdipPathIterGetSubpathCount"); Assert.AreEqual (0, count, "count-2"); bool curve; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterHasCurve (IntPtr.Zero, out curve), "GdipPathIterHasCurve-null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterHasCurve (iter, out curve), "GdipPathIterHasCurve"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipPathIterHasCurve (HandleRefZero, out curve), "GdipPathIterHasCurve-null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterHasCurve (iterHandle, out curve), "GdipPathIterHasCurve"); Assert.IsFalse (curve, "curve"); int result; PointF[] points = new PointF[count]; byte[] types = new byte[count]; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterEnumerate (IntPtr.Zero, out result, points, types, count), "GdipPathIterEnumerate-iter"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterEnumerate (iter, out result, null, types, count), "GdipPathIterEnumerate-points"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterEnumerate (iter, out result, points, null, count), "GdipPathIterEnumerate-types"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterEnumerate (iter, out result, points, types, -1), "GdipPathIterEnumerate-count"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterEnumerate (iter, out result, points, types, count), "GdipPathIterEnumerate"); - - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterCopyData (IntPtr.Zero, out result, points, types, 0, 0), "GdipPathIterCopyData-iter"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterCopyData (iter, out result, null, types, 0, 0), "GdipPathIterCopyData-points"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterCopyData (iter, out result, points, null, 0, 0), "GdipPathIterCopyData-types"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterCopyData (iter, out result, points, types, -1, 0), "GdipPathIterCopyData-start"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterCopyData (iter, out result, points, types, 0, -1), "GdipPathIterCopyData-end"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterCopyData (iter, out result, points, types, 0, 0), "GdipPathIterCopyData"); - - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterNextMarkerPath (IntPtr.Zero, out result, path), "GdipPathIterNextMarkerPath-iter"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextMarkerPath (iter, out result, IntPtr.Zero), "GdipPathIterNextMarkerPath-path"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextMarkerPath (iter, out result, path), "GdipPathIterNextMarkerPath"); +// Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterEnumerate (HandleRefZero, out result, points, types, count), "GdipPathIterEnumerate-iter"); +// Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterEnumerate (iterHandle, out result, null, types, count), "GdipPathIterEnumerate-points"); +// Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterEnumerate (iterHandle, out result, points, null, count), "GdipPathIterEnumerate-types"); +// Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterEnumerate (iterHandle, out result, points, types, -1), "GdipPathIterEnumerate-count"); +// Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterEnumerate (iterHandle, out result, points, types, count), "GdipPathIterEnumerate"); + +// Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterCopyData (HandleRefZero, out result, points, types, 0, 0), "GdipPathIterCopyData-iter"); +// Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterCopyData (iterHandle, out result, null, types, 0, 0), "GdipPathIterCopyData-points"); +// Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterCopyData (iterHandle, out result, points, null, 0, 0), "GdipPathIterCopyData-types"); +// Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterCopyData (iterHandle, out result, points, types, -1, 0), "GdipPathIterCopyData-start"); +// Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterCopyData (iterHandle, out result, points, types, 0, -1), "GdipPathIterCopyData-end"); +// Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterCopyData (iterHandle, out result, points, types, 0, 0), "GdipPathIterCopyData"); + + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipPathIterNextMarkerPath (HandleRefZero, out result, pathHandle), "GdipPathIterNextMarkerPath-iter"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextMarkerPath (iterHandle, out result, HandleRefZero), "GdipPathIterNextMarkerPath-path"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextMarkerPath (iterHandle, out result, pathHandle), "GdipPathIterNextMarkerPath"); result = -1; int start = -1; int end = -1; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterNextMarker (IntPtr.Zero, out result, out start, out end), "GdipPathIterNextMarker-iter"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipPathIterNextMarker (HandleRefZero, out result, out start, out end), "GdipPathIterNextMarker-iter"); start = -1; end = -1; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextMarker (iter, out result, out start, out end), "GdipPathIterNextMarker"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextMarker (iterHandle, out result, out start, out end), "GdipPathIterNextMarker"); Assert.AreEqual (0, result, "result-4"); Assert.AreEqual (-1, start, "start-1"); Assert.AreEqual (-1, end, "end-1"); byte pathType = 255; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterNextPathType (IntPtr.Zero, out result, out pathType, out start, out end), "GdipPathIterNextPathType-iter"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipPathIterNextPathType (HandleRefZero, out result, out pathType, out start, out end), "GdipPathIterNextPathType-iter"); pathType = 255; start = -1; end = -1; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextPathType (iter, out result, out pathType, out start, out end), "GdipPathIterNextPathType"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextPathType (iterHandle, out result, out pathType, out start, out end), "GdipPathIterNextPathType"); Assert.AreEqual (0, result, "result-5"); Assert.AreEqual (255, pathType, "pathType"); Assert.AreEqual (-1, start, "start-2"); Assert.AreEqual (-1, end, "end-2"); bool closed = false; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterNextSubpathPath (IntPtr.Zero, out result, IntPtr.Zero, out closed), "GdipPathIterNextSubpathPath-iter"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipPathIterNextSubpathPath (HandleRefZero, out result, HandleRefZero, out closed), "GdipPathIterNextSubpathPath-iter"); closed = false; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextSubpathPath (iter, out result, IntPtr.Zero, out closed), "GdipPathIterNextSubpathPath-path"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextSubpathPath (iter, out result, path, out closed), "GdipPathIterNextSubpathPath"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextSubpathPath (iterHandle, out result, HandleRefZero, out closed), "GdipPathIterNextSubpathPath-path"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextSubpathPath (iterHandle, out result, pathHandle, out closed), "GdipPathIterNextSubpathPath"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterNextSubpath (IntPtr.Zero, out result, out start, out end, out closed), "GdipPathIterNextSubpath-iter"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipPathIterNextSubpath (HandleRefZero, out result, out start, out end, out closed), "GdipPathIterNextSubpath-iter"); start = -1; end = -1; closed = false; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextSubpath (iter, out result, out start, out end, out closed), "GdipPathIterNextSubpath"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextSubpath (iterHandle, out result, out start, out end, out closed), "GdipPathIterNextSubpath"); Assert.AreEqual (-1, start, "start-3"); Assert.AreEqual (-1, end, "end-3"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipPathIterRewind (IntPtr.Zero), "GdipPathIterRewind-null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterRewind (iter), "GdipPathIterRewind"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipPathIterRewind (HandleRefZero), "GdipPathIterRewind-null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterRewind (iterHandle), "GdipPathIterRewind"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDeletePathIter (IntPtr.Zero), "GdipDeletePathIter-null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePathIter (iter), "GdipDeletePathIter"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipDeletePathIter (HandleRefZero), "GdipDeletePathIter-null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDeletePathIter (iterHandle), "GdipDeletePathIter"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePath (path), "GdipDeletePath"); } @@ -601,37 +607,38 @@ namespace MonoTests.System.Drawing { { // a path isn't required to create an iterator - ensure we never crash for any api IntPtr iter; - Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePathIter (out iter, IntPtr.Zero), "GdipCreatePathIter-null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipCreatePathIter (out iter, HandleRefZero), "GdipCreatePathIter-null"); + var iterHandle = new HandleRef (this, iter); int count = -1; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterGetCount (iter, out count), "GdipPathIterGetCount"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterGetCount (iterHandle, out count), "GdipPathIterGetCount"); Assert.AreEqual (0, count, "count-1"); count = -1; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterGetSubpathCount (iter, out count), "GdipPathIterGetSubpathCount"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterGetSubpathCount (iterHandle, out count), "GdipPathIterGetSubpathCount"); Assert.AreEqual (0, count, "count-2"); bool curve; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterHasCurve (iter, out curve), "GdipPathIterHasCurve"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterHasCurve (iterHandle, out curve), "GdipPathIterHasCurve"); int result = -1; - PointF[] points = new PointF[count]; - byte[] types = new byte[count]; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterEnumerate (iter, out result, points, types, count), "GdipPathIterEnumerate"); - Assert.AreEqual (0, result, "result-1"); +// PointF[] points = new PointF[count]; +// byte[] types = new byte[count]; +// Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterEnumerate (iterHandle, out result, points, types, count), "GdipPathIterEnumerate"); +// Assert.AreEqual (0, result, "result-1"); - result = -1; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterCopyData (iter, out result, points, types, 0, 0), "GdipPathIterCopyData"); - Assert.AreEqual (0, result, "result-2"); +// result = -1; +// Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterCopyData (iterHandle, out result, points, types, 0, 0), "GdipPathIterCopyData"); +// Assert.AreEqual (0, result, "result-2"); result = -1; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextMarkerPath (iter, out result, IntPtr.Zero), "GdipPathIterNextMarkerPath"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextMarkerPath (iterHandle, out result, HandleRefZero), "GdipPathIterNextMarkerPath"); Assert.AreEqual (0, result, "result-3"); result = -1; int start = -1; int end = -1; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextMarker (iter, out result, out start, out end), "GdipPathIterNextMarker"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextMarker (iterHandle, out result, out start, out end), "GdipPathIterNextMarker"); Assert.AreEqual (0, result, "result-4"); Assert.AreEqual (-1, start, "start-1"); Assert.AreEqual (-1, end, "end-1"); @@ -640,25 +647,25 @@ namespace MonoTests.System.Drawing { byte pathType = 255; start = -1; end = -1; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextPathType (iter, out result, out pathType, out start, out end), "GdipPathIterNextPathType"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextPathType (iterHandle, out result, out pathType, out start, out end), "GdipPathIterNextPathType"); Assert.AreEqual (0, result, "result-5"); Assert.AreEqual (255, pathType, "pathType"); Assert.AreEqual (-1, start, "start-2"); Assert.AreEqual (-1, end, "end-2"); bool closed = false; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextSubpathPath (iter, out result, IntPtr.Zero, out closed), "GdipPathIterNextSubpathPath"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextSubpathPath (iterHandle, out result, HandleRefZero, out closed), "GdipPathIterNextSubpathPath"); start = -1; end = -1; closed = false; - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterNextSubpath (iter, out result, out start, out end, out closed), "GdipPathIterNextSubpath"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterNextSubpath (iterHandle, out result, out start, out end, out closed), "GdipPathIterNextSubpath"); Assert.AreEqual (-1, start, "start-3"); Assert.AreEqual (-1, end, "end-3"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipPathIterRewind (iter), "GdipPathIterRewind"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipPathIterRewind (iterHandle), "GdipPathIterRewind"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePathIter (iter), "GdipDeletePathIter"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDeletePathIter (iterHandle), "GdipDeletePathIter"); } // Matrix @@ -954,29 +961,24 @@ namespace MonoTests.System.Drawing { public void ImageAttribute () { IntPtr attr; - Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateImageAttributes (out attr), "GdipCreateImageAttributes"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipCreateImageAttributes (out attr), "GdipCreateImageAttributes"); + var attrHandle = new HandleRef (this, attr); IntPtr clone; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipCloneImageAttributes (IntPtr.Zero, out clone), "GdipCloneImageAttributes"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipCloneImageAttributes (attr, out clone), "GdipCloneImageAttributes"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipCloneImageAttributes (HandleRefZero, out clone), "GdipCloneImageAttributes"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipCloneImageAttributes (attrHandle, out clone), "GdipCloneImageAttributes"); + var cloneHandle = new HandleRef (this, clone); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipSetImageAttributesColorMatrix (attr, ColorAdjustType.Default, true, IntPtr.Zero, IntPtr.Zero, ColorMatrixFlag.Default), "GdipSetImageAttributesColorMatrix-true-matrix1"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipSetImageAttributesColorMatrix (attrHandle, ColorAdjustType.Default, true, null, null, ColorMatrixFlag.Default), "GdipSetImageAttributesColorMatrix-true-matrix1"); // the first color matrix can be null if enableFlag is false - Assert.AreEqual (Status.Ok, GDIPlus.GdipSetImageAttributesColorMatrix (attr, ColorAdjustType.Default, false, IntPtr.Zero, IntPtr.Zero, ColorMatrixFlag.Default), "GdipSetImageAttributesColorMatrix-false-matrix1"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipSetImageAttributesColorMatrix (attrHandle, ColorAdjustType.Default, false, null, null, ColorMatrixFlag.Default), "GdipSetImageAttributesColorMatrix-false-matrix1"); ColorMatrix cm = new ColorMatrix (); - IntPtr color = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (ColorMatrix))); - try { - Marshal.StructureToPtr (cm, color, false); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipSetImageAttributesColorMatrix (IntPtr.Zero, ColorAdjustType.Default, true, color, IntPtr.Zero, ColorMatrixFlag.Default), "GdipSetImageAttributesColorMatrix-null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipSetImageAttributesColorMatrix (attr, ColorAdjustType.Default, true, color, IntPtr.Zero, ColorMatrixFlag.Default), "GdipCloneImageAttributes"); - } - finally { - Marshal.FreeHGlobal (color); - } + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipSetImageAttributesColorMatrix (HandleRefZero, ColorAdjustType.Default, true, cm, null, ColorMatrixFlag.Default), "GdipSetImageAttributesColorMatrix-null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipSetImageAttributesColorMatrix (attrHandle, ColorAdjustType.Default, true, cm, null, ColorMatrixFlag.Default), "GdipCloneImageAttributes"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDisposeImageAttributes (IntPtr.Zero), "GdipDisposeImageAttributes-null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImageAttributes (attr), "GdipDisposeImageAttributes"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImageAttributes (clone), "GdipDisposeImageAttributes-clone"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipDisposeImageAttributes (HandleRefZero), "GdipDisposeImageAttributes-null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDisposeImageAttributes (attrHandle), "GdipDisposeImageAttributes"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDisposeImageAttributes (cloneHandle), "GdipDisposeImageAttributes-clone"); } // PathGradientBrush @@ -999,6 +1001,7 @@ namespace MonoTests.System.Drawing { points = new PointF[2] { new PointF (1, 2), new PointF (20, 30) }; Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePathGradient (points, 2, WrapMode.Clamp, out brush), "two"); Assert.IsTrue (brush != IntPtr.Zero, "Handle"); + var brushHandle = new HandleRef (this, brush); int count; Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPathGradientBlendCount (brush, out count), "GdipGetPathGradientBlendCount"); @@ -1009,7 +1012,7 @@ namespace MonoTests.System.Drawing { Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathGradientPresetBlend (brush, colors, positions, count), "GdipGetPathGradientBlend"); // can't call that for 1 count! - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush"); + Assert.AreEqual (0, GDIPlus.GdipDeleteBrush (brushHandle), "GdipDeleteBrush"); } [Test] @@ -1026,6 +1029,7 @@ namespace MonoTests.System.Drawing { Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePathGradientFromPath (path, out brush), "path"); Assert.IsTrue (brush != IntPtr.Zero, "Handle"); + var brushHandle = new HandleRef (this, brush); int count; Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPathGradientBlendCount (brush, out count), "GdipGetPathGradientBlendCount"); @@ -1035,7 +1039,7 @@ namespace MonoTests.System.Drawing { float[] positions = new float[count]; Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathGradientPresetBlend (brush, colors, positions, count), "GdipGetPathGradientBlend"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush"); + Assert.AreEqual (0, GDIPlus.GdipDeleteBrush (brushHandle), "GdipDeleteBrush"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePath (path), "GdipDeletePath"); } @@ -1051,6 +1055,7 @@ namespace MonoTests.System.Drawing { IntPtr brush; Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePathGradientFromPath (path, out brush), "path"); Assert.IsTrue (brush != IntPtr.Zero, "Handle"); + var brushHandle = new HandleRef (this, brush); int count; Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPathGradientBlendCount (brush, out count), "GdipGetPathGradientBlendCount"); @@ -1060,7 +1065,7 @@ namespace MonoTests.System.Drawing { float[] positions = new float[count]; Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathGradientPresetBlend (brush, colors, positions, count), "GdipGetPathGradientBlend"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush"); + Assert.AreEqual (0, GDIPlus.GdipDeleteBrush (brushHandle), "GdipDeleteBrush"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePath (path), "GdipDeletePath"); } @@ -1102,32 +1107,36 @@ namespace MonoTests.System.Drawing { try { int color = 0; IntPtr brush; + HandleRef brushHandle; Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPenBrushFill (IntPtr.Zero, out brush), "GdipGetPenBrushFill-null"); Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPenBrushFill (pen, out brush), "GdipGetPenBrushFill"); + brushHandle = new HandleRef (this, brush); + try { - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetSolidFillColor (IntPtr.Zero, out color), "GdipGetSolidFillColor-null"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipGetSolidFillColor (brush, out color), "GdipGetSolidFillColor-0"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipGetSolidFillColor (HandleRefZero, out color), "GdipGetSolidFillColor-null"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipGetSolidFillColor (brushHandle, out color), "GdipGetSolidFillColor-0"); Assert.AreEqual (0x7f0000ff, color, "color-0"); Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipSetPenColor (IntPtr.Zero, 0x7fff0000), "GdipSetPenColor-null"); Assert.AreEqual (Status.Ok, GDIPlus.GdipSetPenColor (pen, 0x7fff0000), "GdipSetPenColor"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipGetSolidFillColor (brush, out color), "GdipGetSolidFillColor-1"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipGetSolidFillColor (brushHandle, out color), "GdipGetSolidFillColor-1"); // previous brush color didn't change Assert.AreEqual (0x7f0000ff, color, "color-1"); } finally { - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDeleteBrush (brushHandle), "GdipDeleteBrush"); } Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPenBrushFill (pen, out brush), "GdipGetPenBrushFill-2"); + brushHandle = new HandleRef (this, brush); try { - Assert.AreEqual (Status.Ok, GDIPlus.GdipGetSolidFillColor (brush, out color), "GdipGetSolidFillColor-2"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipGetSolidFillColor (brushHandle, out color), "GdipGetSolidFillColor-2"); // new brush color is updated Assert.AreEqual (0x7fff0000, color, "color-2"); } finally { - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush-2"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDeleteBrush (brushHandle), "GdipDeleteBrush-2"); } } finally { @@ -1207,7 +1216,7 @@ namespace MonoTests.System.Drawing { IntPtr brush; GDIPlus.GdipCreateSolidFill (0, out brush); - + var brushHandle = new HandleRef (this, brush); Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipFillClosedCurveI (graphics, brush, new Point [] {}, 0), @@ -1222,7 +1231,7 @@ namespace MonoTests.System.Drawing { new Point (2, 2) }, 2), "FillClosedCurve with 2 pts"); - GDIPlus.GdipDeleteBrush (brush); + GDIPlus.GdipDeleteBrush (brushHandle); GDIPlus.GdipDeleteGraphics (graphics); GDIPlus.GdipDisposeImage (image); @@ -1344,19 +1353,22 @@ namespace MonoTests.System.Drawing { { IntPtr image; GDIPlus.GdipCreateBitmapFromScan0 (10, 10, 0, PixelFormat.Format32bppArgb, IntPtr.Zero, out image); + var imageHandle = new HandleRef (this, image); IntPtr brush; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipCreateTexture (IntPtr.Zero, WrapMode.Tile, out brush), "GdipCreateTexture-image"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTexture (image, (WrapMode)Int32.MinValue, out brush), "GdipCreateTexture-wrapmode"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateTexture (image, WrapMode.Tile, out brush), "GdipCreateTexture"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipCreateTexture (HandleRefZero, (int) WrapMode.Tile, out brush), "GdipCreateTexture-image"); + Assert.AreEqual ((int) Status.OutOfMemory, GDIPlus.GdipCreateTexture (imageHandle, Int32.MinValue, out brush), "GdipCreateTexture-wrapmode"); + + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipCreateTexture (imageHandle, (int) WrapMode.Tile, out brush), "GdipCreateTexture"); + var brushHandle = new HandleRef (this, brush); IntPtr image2; // this would throw an AccessViolationException under MS 2.0 (missing null check?) // Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetTextureImage (IntPtr.Zero, out image2), "GdipGetTextureImage-brush"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipGetTextureImage (brush, out image2), "GdipGetTextureImage"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipGetTextureImage (brushHandle, out image2), "GdipGetTextureImage"); Assert.IsFalse (image == image2, "image"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDeleteBrush (brushHandle), "GdipDeleteBrush"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImage (image), "GdipDisposeImage"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImage (image2), "GdipDisposeImage-image2"); } @@ -1366,34 +1378,37 @@ namespace MonoTests.System.Drawing { { IntPtr image; GDIPlus.GdipCreateBitmapFromScan0 (10, 10, 0, PixelFormat.Format32bppArgb, IntPtr.Zero, out image); + var imageHandle = new HandleRef (this, image); IntPtr brush; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipCreateTexture2 (IntPtr.Zero, WrapMode.Tile, 0, 0, 10, 10, out brush), "GdipCreateTexture2-image"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipCreateTexture2 (IntPtr.Zero, (WrapMode) Int32.MinValue, 0, 0, 10, 10, out brush), "GdipCreateTexture2-wrapmode"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (image, WrapMode.Tile, 0, 0, 0, 10, out brush), "GdipCreateTexture2-width"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (image, WrapMode.Tile, 0, 0, 10, 0, out brush), "GdipCreateTexture2-height"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (image, WrapMode.Tile, -1, 0, 0, 10, out brush), "GdipCreateTexture2-x"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (image, WrapMode.Tile, 0, -1, 10, 0, out brush), "GdipCreateTexture2-y"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (image, WrapMode.Tile, 1, 0, 10, 10, out brush), "GdipCreateTexture2-too-wide"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (image, WrapMode.Tile, 0, 1, 10, 10, out brush), "GdipCreateTexture2-too-tall"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateTexture2 (image, WrapMode.Tile, 0, 0, 10, 10, out brush), "GdipCreateTexture2"); - - WrapMode wm; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetTextureWrapMode (IntPtr.Zero, out wm), "GdipGetTextureWrapMode-brush"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipGetTextureWrapMode (brush, out wm), "GdipGetTextureWrapMode"); - Assert.AreEqual (WrapMode.Tile, wm, "WrapMode"); - - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipSetTextureWrapMode (IntPtr.Zero, WrapMode.Clamp), "GdipSetTextureWrapMode-brush"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipSetTextureWrapMode (brush, WrapMode.Clamp), "GdipSetTextureWrapMode"); - GDIPlus.GdipGetTextureWrapMode (brush, out wm); - Assert.AreEqual (WrapMode.Clamp, wm, "WrapMode.Clamp"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipCreateTexture2 (HandleRefZero, (int) WrapMode.Tile, 0, 0, 10, 10, out brush), "GdipCreateTexture2-image"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipCreateTexture2 (HandleRefZero, Int32.MinValue, 0, 0, 10, 10, out brush), "GdipCreateTexture2-wrapmode"); + Assert.AreEqual ((int) Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (imageHandle, (int) WrapMode.Tile, 0, 0, 0, 10, out brush), "GdipCreateTexture2-width"); + Assert.AreEqual ((int) Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (imageHandle, (int) WrapMode.Tile, 0, 0, 10, 0, out brush), "GdipCreateTexture2-height"); + Assert.AreEqual ((int) Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (imageHandle, (int) WrapMode.Tile, -1, 0, 0, 10, out brush), "GdipCreateTexture2-x"); + Assert.AreEqual ((int) Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (imageHandle, (int) WrapMode.Tile, 0, -1, 10, 0, out brush), "GdipCreateTexture2-y"); + Assert.AreEqual ((int) Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (imageHandle, (int) WrapMode.Tile, 1, 0, 10, 10, out brush), "GdipCreateTexture2-too-wide"); + Assert.AreEqual ((int) Status.OutOfMemory, GDIPlus.GdipCreateTexture2 (imageHandle, (int) WrapMode.Tile, 0, 1, 10, 10, out brush), "GdipCreateTexture2-too-tall"); + + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipCreateTexture2 (imageHandle, (int) WrapMode.Tile, 0, 0, 10, 10, out brush), "GdipCreateTexture2"); + var brushHandle = new HandleRef (this, brush); + + int wm; + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipGetTextureWrapMode (HandleRefZero, out wm), "GdipGetTextureWrapMode-brush"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipGetTextureWrapMode (brushHandle, out wm), "GdipGetTextureWrapMode"); + Assert.AreEqual ((int) WrapMode.Tile, wm, "WrapMode"); + + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipSetTextureWrapMode (HandleRefZero, (int) WrapMode.Clamp), "GdipSetTextureWrapMode-brush"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipSetTextureWrapMode (brushHandle, (int) WrapMode.Clamp), "GdipSetTextureWrapMode"); + GDIPlus.GdipGetTextureWrapMode (brushHandle, out wm); + Assert.AreEqual ((int) WrapMode.Clamp, wm, "WrapMode.Clamp"); // an invalid WrapMode is ignored - Assert.AreEqual (Status.Ok, GDIPlus.GdipSetTextureWrapMode (brush, (WrapMode) Int32.MinValue), "GdipSetTextureWrapMode-wrapmode"); - GDIPlus.GdipGetTextureWrapMode (brush, out wm); - Assert.AreEqual (WrapMode.Clamp, wm, "WrapMode/Invalid"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipSetTextureWrapMode (brushHandle, Int32.MinValue), "GdipSetTextureWrapMode-wrapmode"); + GDIPlus.GdipGetTextureWrapMode (brushHandle, out wm); + Assert.AreEqual ((int) WrapMode.Clamp, wm, "WrapMode/Invalid"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDeleteBrush (brushHandle), "GdipDeleteBrush"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImage (image), "GdipDisposeImage"); } @@ -1402,32 +1417,36 @@ namespace MonoTests.System.Drawing { { IntPtr image; GDIPlus.GdipCreateBitmapFromScan0 (10, 10, 0, PixelFormat.Format32bppArgb, IntPtr.Zero, out image); + var imageHandle = new HandleRef (this, image); IntPtr brush; - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipCreateTextureIA (IntPtr.Zero, IntPtr.Zero, 0, 0, 10, 10, out brush), "GdipCreateTexture2-image"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (image, IntPtr.Zero, 0, 0, 0, 10, out brush), "GdipCreateTexture2-width"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (image, IntPtr.Zero, 0, 0, 10, 0, out brush), "GdipCreateTexture2-height"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (image, IntPtr.Zero, -1, 0, 10, 10, out brush), "GdipCreateTexture2-x"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (image, IntPtr.Zero, 0, -1, 10, 10, out brush), "GdipCreateTexture2-y"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (image, IntPtr.Zero, 1, 0, 10, 10, out brush), "GdipCreateTexture2-too-wide"); - Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (image, IntPtr.Zero, 0, 1, 10, 10, out brush), "GdipCreateTexture2-too-tall"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateTextureIA (image, IntPtr.Zero, 0, 0, 10, 10, out brush), "GdipCreateTexture2"); + Assert.AreEqual ((int)Status.InvalidParameter, GDIPlus.GdipCreateTextureIA (HandleRefZero, HandleRefZero, 0, 0, 10, 10, out brush), "GdipCreateTexture2-image"); + Assert.AreEqual ((int)Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (imageHandle, HandleRefZero, 0, 0, 0, 10, out brush), "GdipCreateTexture2-width"); + Assert.AreEqual ((int)Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (imageHandle, HandleRefZero, 0, 0, 10, 0, out brush), "GdipCreateTexture2-height"); + Assert.AreEqual ((int)Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (imageHandle, HandleRefZero, -1, 0, 10, 10, out brush), "GdipCreateTexture2-x"); + Assert.AreEqual ((int)Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (imageHandle, HandleRefZero, 0, -1, 10, 10, out brush), "GdipCreateTexture2-y"); + Assert.AreEqual ((int)Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (imageHandle, HandleRefZero, 1, 0, 10, 10, out brush), "GdipCreateTexture2-too-wide"); + Assert.AreEqual ((int)Status.OutOfMemory, GDIPlus.GdipCreateTextureIA (imageHandle, HandleRefZero, 0, 1, 10, 10, out brush), "GdipCreateTexture2-too-tall"); + + Assert.AreEqual ((int)Status.Ok, GDIPlus.GdipCreateTextureIA (imageHandle, HandleRefZero, 0, 0, 10, 10, out brush), "GdipCreateTexture2"); + var brushHandle = new HandleRef (this, brush); // TODO - handle ImageAttribute in the tests IntPtr matrix; Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateMatrix (out matrix), "GdipCreateMatrix"); + var matrixHandle = new HandleRef (this, matrix); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetTextureTransform (IntPtr.Zero, matrix), "GdipGetTextureTransform-brush"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetTextureTransform (brush, IntPtr.Zero), "GdipGetTextureTransform-matrix"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipGetTextureTransform (brush, matrix), "GdipGetTextureTransform"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipGetTextureTransform (HandleRefZero, matrixHandle), "GdipGetTextureTransform-brush"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipGetTextureTransform (brushHandle, HandleRefZero), "GdipGetTextureTransform-matrix"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipGetTextureTransform (brushHandle, matrixHandle), "GdipGetTextureTransform"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipSetTextureTransform (IntPtr.Zero, matrix), "GdipSetTextureTransform-brush"); - Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipSetTextureTransform (brush, IntPtr.Zero), "GdipSetTextureTransform-matrix"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipSetTextureTransform (brush, matrix), "GdipSetTextureTransform"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipSetTextureTransform (HandleRefZero, matrixHandle), "GdipSetTextureTransform-brush"); + Assert.AreEqual ((int) Status.InvalidParameter, GDIPlus.GdipSetTextureTransform (brushHandle, HandleRefZero), "GdipSetTextureTransform-matrix"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipSetTextureTransform (brushHandle, matrixHandle), "GdipSetTextureTransform"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteMatrix (matrix), "GdipDeleteMatrix"); - Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush"); + Assert.AreEqual ((int) Status.Ok, GDIPlus.GdipDeleteBrush (brushHandle), "GdipDeleteBrush"); Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImage (image), "GdipDisposeImage"); } diff --git a/mcs/class/System.Drawing/corefx/SR.cs b/mcs/class/System.Drawing/corefx/SR.cs index 9575948818d..16c7132c853 100644 --- a/mcs/class/System.Drawing/corefx/SR.cs +++ b/mcs/class/System.Drawing/corefx/SR.cs @@ -95,4 +95,5 @@ partial class SR public const string DCTypeInvalid = "GetObjectType on this dc returned an invalid value."; public const string InvalidEnumArgument = "The value of argument '{0}' ({1}) is invalid for Enum type '{2}'."; public const string ConvertInvalidPrimitive = "{0} is not a valid value for {1}."; + public const string LibgdiplusNotFound = "The native library \"libgdiplus\" is not installed on the system, or was otherwise unable to be loaded."; } |