2006-01-18 Sebastien Pouliot <sebastien@ximian.com>
authorSebastien Pouliot <sebastien@ximian.com>
Wed, 18 Jan 2006 19:41:13 +0000 (19:41 -0000)
committerSebastien Pouliot <sebastien@ximian.com>
Wed, 18 Jan 2006 19:41:13 +0000 (19:41 -0000)
* gdipFunctions.cs: Added declaration for GdipCreateRegionRgnData.
* Region.cs: Implemented .ctor(RegionData)

svn path=/trunk/mcs/; revision=55753

mcs/class/System.Drawing/System.Drawing/ChangeLog
mcs/class/System.Drawing/System.Drawing/Region.cs
mcs/class/System.Drawing/System.Drawing/gdipFunctions.cs

index df12d28744908865e800a1a70223aef81ab20fec..9efc7edad1c0f6b01a9c548f8fbb2c2bf4329418 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-18  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * gdipFunctions.cs: Added declaration for GdipCreateRegionRgnData.
+       * Region.cs: Implemented .ctor(RegionData)
+
 2006-01-13  Miguel de Icaza  <miguel@novell.com>
 
        * Region.cs: Revert the Region.cs check in GetHrgn as it was used
index 35d9508ee56fdfbe8fe7367f56d6d3346902e63e..b53aaa37cf611972ea98bf61411b3a006d80f934 100644 (file)
@@ -78,9 +78,9 @@ namespace System.Drawing
                {
                        if (rgnData == null)
                                throw new ArgumentNullException ("rgnData");
-                       //Status status = GDIPlus.GdipCreateRegionRgnData (rgnData.Data, out nativeRegion);
-                       //GDIPlus.CheckStatus (status);
-                       throw new NotImplementedException ();
+                       // a NullReferenceException can be throw for rgnData.Data.Length (if rgnData.Data is null) just like MS
+                       Status status = GDIPlus.GdipCreateRegionRgnData (rgnData.Data, rgnData.Data.Length, out nativeRegion);
+                       GDIPlus.CheckStatus (status);
                }
                
                //                                                                                                     
index 74d7d4291544500fb0eca827f7c0e8a49e528559..d3a3226cb43531ea625ae0ff9804b16d2b31f462 100644 (file)
@@ -224,6 +224,9 @@ namespace System.Drawing
                 [DllImport("gdiplus.dll")]
                static internal extern Status GdipCreateRegion (out IntPtr region);
 
+               [DllImport("gdiplus.dll")]
+               static internal extern Status GdipCreateRegionRgnData (byte[] data, int size, out IntPtr region);
+
                 [DllImport("gdiplus.dll")]
                static internal extern Status GdipDeleteRegion (IntPtr region);