2 // System.Drawing.Imaging.BitmapData.cs
\r
5 // Miguel de Icaza (miguel@ximian.com
\r
7 // (C) 2002 Ximian, Inc. http://www.ximian.com
\r
11 using System.Runtime.InteropServices;
\r
14 namespace System.Drawing.Imaging
\r
16 [StructLayout(LayoutKind.Sequential)]
\r
17 public sealed class BitmapData {
\r
18 internal int width, height, stride;
\r
19 internal PixelFormat pixel_format;
20 internal bool own_scan0;
21 internal IntPtr address;
\r
22 internal int reserved;
\r
23 private bool bAllocated = false;
\r
28 Marshal.FreeHGlobal(address);
\r
31 internal bool Allocated {
\r
32 set {bAllocated = value;}
\r
55 public PixelFormat PixelFormat {
\r
58 return pixel_format;
\r
62 pixel_format = value;
\r
66 public int Reserved {
\r
76 public IntPtr Scan0 {
\r
85 Marshal.FreeHGlobal(address);
\r
103 internal unsafe void swap_red_blue_bytes ()
\r
105 byte *start = (byte *) (void *) this.Scan0;
\r
106 int stride = this.Stride;
\r
107 for (int line = 0; line < this.Height; line++){
\r
108 // Exchange red <=> blue bytes
\r
109 // fixed (byte *pbuf = start) {
\r
110 byte* curByte = start;
\r
111 for (int i = 0; i < this.Width; i++) {
\r
112 byte t = *(curByte+2);
\r
113 *(curByte+2) = *curByte;
\r