-//\r
-// System.Drawing.Imaging.BitmapData.cs\r
-//\r
-// Author:\r
-// Miguel de Icaza (miguel@ximian.com\r
-//\r
-// (C) 2002 Ximian, Inc. http://www.ximian.com\r
-//\r
-\r
-using System;\r
-using System.Runtime.InteropServices;\r
-using System.IO;\r
-\r
-namespace System.Drawing.Imaging\r
-{\r
- [StructLayout(LayoutKind.Sequential)]\r
- public sealed class BitmapData {\r
- internal int width, height, stride;\r
- internal PixelFormat pixel_format;
- internal IntPtr address;\r
- internal int reserved;\r
- private bool bAllocated = false;\r
- internal bool own_scan0; \r
- \r
- ~BitmapData()\r
- { \r
- if (bAllocated)\r
- Marshal.FreeHGlobal(address); \r
- }\r
- \r
- internal bool Allocated {\r
- set {bAllocated = value;}\r
- }\r
- \r
- public int Height {\r
- get {\r
- return height;\r
- }\r
-\r
- set {\r
- height = value;\r
- }\r
- }\r
-\r
- public int Width {\r
- get {\r
- return width;\r
- }\r
-\r
- set {\r
- width = value;\r
- }\r
- }\r
-\r
- public PixelFormat PixelFormat {\r
- get {\r
- \r
- return pixel_format;\r
- }\r
-\r
- set {\r
- pixel_format = value;\r
- }\r
- }\r
-\r
- public int Reserved {\r
- get {\r
- return reserved;\r
- }\r
-\r
- set {\r
- reserved = value;\r
- }\r
- }\r
-\r
- public IntPtr Scan0 {\r
- get {\r
- return address;\r
- }\r
-\r
- set {\r
- \r
- if (bAllocated)\r
- {\r
- Marshal.FreeHGlobal(address); \r
- bAllocated = false;\r
- }\r
- \r
- address = value;\r
- }\r
- }\r
-\r
- public int Stride {\r
- get {\r
- return stride;\r
- }\r
-\r
- set {\r
- stride = value;\r
- }\r
- }\r
- \r
- internal unsafe void swap_red_blue_bytes () \r
- {\r
- byte *start = (byte *) (void *) this.Scan0;\r
- int stride = this.Stride;\r
- for (int line = 0; line < this.Height; line++){\r
- // Exchange red <=> blue bytes\r
-// fixed (byte *pbuf = start) {\r
- byte* curByte = start;\r
- for (int i = 0; i < this.Width; i++) {\r
- byte t = *(curByte+2);\r
- *(curByte+2) = *curByte;\r
- *curByte = t;\r
- curByte += 3;\r
- }\r
-// }\r
- start += stride;\r
- }\r
- }\r
- }\r
-}\r
+//
+// System.Drawing.Imaging.BitmapData.cs
+//
+// Author:
+// Miguel de Icaza (miguel@ximian.com)
+// Vladimir Vukicevic (vladimir@pobox.com)
+//
+// (C) 2002 Ximian, Inc. http://www.ximian.com
+// Copyright (C) 2004, 2006 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Runtime.InteropServices;
+
+namespace System.Drawing.Imaging
+{
+ // MUST BE KEPT IN SYNC WITH gdip.h in libgdiplus!
+ // The first 6 fields MUST also match MS definition
+#if TARGET_JVM
+ [MonoTODO]
+#endif
+ [StructLayout(LayoutKind.Sequential)]
+ public sealed class BitmapData {
+ private int width;
+ private int height;
+ private int stride;
+ private PixelFormat pixel_format; // int
+ private IntPtr scan0;
+ private int reserved;
+
+ // *** Warning *** don't depend on those fields in managed
+ // code as they won't exists when using MS
+ // GDI+
+ private IntPtr palette;
+ private int property_count;
+ private IntPtr property;
+ private float dpi_horz;
+ private float dpi_vert;
+ private int image_flags;
+ private int left;
+ private int top;
+ private int x;
+ private int y;
+ private int transparent;
+ // *** Warning ***
+
+
+ public int Height {
+ get {
+ return height;
+ }
+
+ set {
+ height = value;
+ }
+ }
+
+ public int Width {
+ get {
+ return width;
+ }
+
+ set {
+ width = value;
+ }
+ }
+
+ public PixelFormat PixelFormat {
+ get {
+
+ return pixel_format;
+ }
+
+ set {
+ pixel_format = value;
+ }
+ }
+
+ public int Reserved {
+ get {
+ return reserved;
+ }
+
+ set {
+ reserved = value;
+ }
+ }
+
+ public IntPtr Scan0 {
+ get {
+ return scan0;
+ }
+
+ set {
+ scan0 = value;
+ }
+ }
+
+ public int Stride {
+ get {
+ return stride;
+ }
+
+ set {
+ stride = value;
+ }
+ }
+ }
+}