[Mono-list] Patches for System.Drawing.Bitmap and Graphics
J. Perkins
jason@379.com
Fri, 14 Feb 2003 12:16:25 -0500
This is a multi-part message in MIME format.
--------------090203070006040009080405
Content-Type: text/plain;
charset=us-ascii;
format=flowed
Content-Transfer-Encoding: 7bit
Well, I guess my freeloading days are over ;) I need to
get some code into the Bitmap and Graphics classes, which
currently are just stubs. Looking at the datestamps, it
appears these classes haven't been touched in a while so
I have just gone ahead and started editing.
These patches stub in the methods that I need and clean
up Bitmap.cs in preparation for coding (adding [MonoTODO],
etc.)
Jason
379
--------------090203070006040009080405
Content-Type: text/plain;
charset=us-ascii;
name=Bitmap.patch
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename=Bitmap.patch
--- Bitmap.cs.old 2003-02-14 10:58:33.000000000 -0500
+++ Bitmap.cs 2003-02-14 10:54:07.000000000 -0500
@@ -1,9 +1,11 @@
//
// System.Drawing.Bitmap.cs
//
-// (C) 2002 Ximian, Inc. http://www.ximian.com
-// Author: Christian Meyer
-// eMail: Christian.Meyer@cs.tum.edu
+// (C) 2002 Ximian, Inc. http://www.ximian.com
+//
+// Authors:
+// Christian Meyer (Christian.Meyer@cs.tum.edu)
+// Jason Perkins (jason@379.com)
//
// No implementation has been done yet. I first want to write the method
// headers of every System.Drawing.
@@ -16,11 +18,14 @@
//C:\cygwin\usr\local\mcs\class\System.Drawing\System.Drawing\Bitmap.cs(54,20): warning CS0649: Field 'System.Drawing.BITMAPINFO.colorpalette' is never assigned to, and will always have its default value null
// 2002-03-27 Christian Meyer <Christian.Meyer@cs.tum.edu>
// I'll have a closer look at it next week.
-//
-using System;
+//
+
+using System;
+using System.Drawing.Imaging;
using System.IO;
namespace System.Drawing {
+
struct BITMAPFILEHEADER { // File info header
public uint bfType; // Specifies the type of file. This member must be BM.
public uint bfSize; // Specifies the size of the file, in bytes.
@@ -29,6 +34,7 @@
public uint bfOffBits; // Specifies the byte offset from the BITMAPFILEHEADER
// structure to the actual bitmap data in the file.
}
+
struct BITMAPINFOHEADER { // bitmap info header
public uint biSize;
public int biWidth;
@@ -49,10 +55,12 @@
public byte rgbRed;
public byte rgbReserved;
}
+
struct BITMAPINFO { // bitmap info
public BITMAPINFOHEADER bitmapinfoheader;
public RGBQUAD[] colorpalette;
}
+
// I do not think pinning is needed execpt for when locked
// Is layout packed attribute needed here?
struct bitmapstruct {
@@ -62,11 +70,18 @@
public BITMAPINFO info; //bitmap info
public byte[,] bits; //Actual bitmap bits
}
- public sealed class Bitmap : Image {
+
+ [MonoTODO]
+ public sealed class Bitmap : Image, IDisposable
+ {
+
// TODO: add following to an enum with BI_RLE4 and BI_RLE8
const int BI_RGB = 0; //? 0 is from example;
+
bitmapstruct bitmap = new bitmapstruct();
- private void CommonInit (int width, int height) {
+
+ private void CommonInit (int width, int height)
+ {
// Init BITMAPFILEHANDLE
// document I am working from says tyoe must allways be "BM",
// the example has this set to 19778.
@@ -129,148 +144,189 @@
bitmap.info.bitmapinfoheader.biYPelsPerMeter = 0;
bitmap.bits = new byte[width*4, height];
}
+
#region constructors
- // constructors
- public Bitmap (int width, int height) {
+
+ [MonoTODO]
+ public Bitmap (int width, int height)
+ {
CommonInit (width, height);
}
-
- public Bitmap (int width, int height, Graphics g) {
+
+ [MonoTODO]
+ public Bitmap (int width, int height, Graphics g)
+ {
//TODO: Error check X,Y
CommonInit (width,height);
//TODO: use graphics to set vertial and horzontal resolution.
//TODO: that is all the spec requires or desires
}
-
-// public Bitmap (int width, int heigth, PixelFormat format) {
-// if ((int)format != BI_RGB) {
-// throw new NotImplementedException ();
-// }
-// CommonInit (width, heigth);
-// }
-//
-// public Bitmap (Image origial) {
-// throw new NotImplementedException ();
-// //this.original = original;
-// }
-
- public Bitmap (Stream stream) {
+
+ [MonoTODO]
+ public Bitmap (int width, int height, PixelFormat format)
+ {
throw new NotImplementedException ();
- //this.stream = stream;
}
-
- public Bitmap (string filename) {
+
+ [MonoTODO]
+ public Bitmap (Image origial)
+ {
throw new NotImplementedException ();
- //this.filename = filename;
+ //this.original = original;
}
-
- public Bitmap (Image original, Size newSize) {
+
+ [MonoTODO]
+ public Bitmap (Stream stream)
+ {
throw new NotImplementedException ();
- //this.original = original;
- //this.newSize = newSize;
}
-
- public Bitmap (Stream stream, bool useIcm) {
+
+ [MonoTODO]
+ public Bitmap (string filename)
+ {
throw new NotImplementedException ();
- //this.stream = stream;
- //this.useIcm = useIcm;
}
-
- public Bitmap (string filename, bool useIcm) {
+
+ [MonoTODO]
+ public Bitmap (Image original, Size newSize)
+ {
throw new NotImplementedException ();
- //this.filename = filename;
- //this.useIcm = useIcm;
}
-
- public Bitmap (Type type, string resource) {
+
+ [MonoTODO]
+ public Bitmap (Stream stream, bool useIcm)
+ {
throw new NotImplementedException ();
- //this.type = type;
- //this.resource = resource;
}
-
- public Bitmap (Image original, int width, int heigth) {
+
+ [MonoTODO]
+ public Bitmap (string filename, bool useIcm)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public Bitmap (Type type, string resource)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public Bitmap (Image original, int width, int heigth)
+ {
throw new NotImplementedException ();
- //this.original = original;
- //this.width = width;
- //this.heigth = heigth;
}
-
-// public Bitmap (int width, int height, int stride,
-// PixelFormat format, IntPtr scan0) {
-// throw new NotImplementedException ();
-// //this.width = width;
-// //this.heigth = heigth;
-// //this.stride = stride;
-// //this.format = format;
-// //this.scan0 = scan0;
-// }
+
+ [MonoTODO]
+ public Bitmap (int width, int height, int stride, PixelFormat format, IntPtr scan0)
+ {
+ throw new NotImplementedException ();
+ }
+
#endregion
- // methods
- public Color GetPixel (int x, int y) {
+
+ [MonoTODO]
+ public Color GetPixel (int x, int y)
+ {
//TODO: Error check X,Y
return Color.FromArgb (bitmap.bits[x,y], bitmap.bits[x+1,y], bitmap.bits[x+2,y], bitmap.bits[x+3,y]);
}
-
- public void SetPixel (int x, int y, Color color) {
+
+ [MonoTODO]
+ public void SetPixel (int x, int y, Color color)
+ {
//TODO: Error check X,Y
bitmap.bits[x, y] = color.A;
bitmap.bits[x + 1, y] = color.R;
bitmap.bits[x + 2, y] = color.G;
bitmap.bits[x + 2, y] = color.B;
}
-
-// public Bitmap Clone (Rectangle rect,PixelFormat format) {
-// throw new NotImplementedException ();
-// }
-//
-// public Bitmap Clone (RectangleF rect, PixelFormat format) {
-// throw new NotImplementedException ();
-// }
-
- public static Bitmap FromHicon (IntPtr hicon) {
+
+ [MonoTODO]
+ public Bitmap Clone (Rectangle rect,PixelFormat format)
+ {
throw new NotImplementedException ();
}
-
- public static Bitmap FromResource (IntPtr hinstance,
- string bitmapName) {
+
+ [MonoTODO]
+ public Bitmap Clone (RectangleF rect, PixelFormat format)
+ {
throw new NotImplementedException ();
}
-
- public IntPtr GetHbitmap () {
+
+ public void Dispose()
+ {
+ }
+
+ [MonoTODO]
+ public static Bitmap FromHicon (IntPtr hicon)
+ {
throw new NotImplementedException ();
}
-
- public IntPtr GetHbitmap (Color background) {
+
+ [MonoTODO]
+ public static Bitmap FromResource (IntPtr hinstance, string bitmapName)
+ {
throw new NotImplementedException ();
}
-
- public IntPtr GetHicon () {
+
+ [MonoTODO]
+ public IntPtr GetHbitmap ()
+ {
throw new NotImplementedException ();
}
-
-// public BitmapData LockBits (Rectangle rect, ImageLockMode flags,
-// PixelFormat format) {
-// throw new NotImplementedException ();
-// }
-
- public void MakeTransparent () {
+
+ [MonoTODO]
+ public IntPtr GetHbitmap (Color background)
+ {
throw new NotImplementedException ();
}
-
- public void MakeTransparent (Color transparentColor) {
+
+ [MonoTODO]
+ public IntPtr GetHicon ()
+ {
throw new NotImplementedException ();
}
-
- public void SetResolution (float xDpi, float yDpi) {
+
+ [MonoTODO]
+ public BitmapData LockBits (Rectangle rect, ImageLockMode flags, PixelFormat format)
+ {
throw new NotImplementedException ();
}
-
-// public void UnlockBits (BitmapData bitmapdata) {
-// throw new NotImplementedException ();
-// }
-
- // properties
- // needs to be done ###FIXME###
+
+ [MonoTODO]
+ public void MakeTransparent ()
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public void MakeTransparent (Color transparentColor)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public PixelFormat PixelFormat
+ {
+ get
+ {
+ throw new NotImplementedException ();
+ }
+ }
+
+ [MonoTODO]
+ public void SetResolution (float xDpi, float yDpi)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public void UnlockBits (BitmapData bitmapdata)
+ {
+ throw new NotImplementedException ();
+ }
+
}
}
--------------090203070006040009080405
Content-Type: text/plain;
charset=us-ascii;
name=Graphics.patch
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename=Graphics.patch
--- Graphics.cs.old 2003-02-14 10:58:33.000000000 -0500
+++ Graphics.cs 2003-02-14 10:54:32.000000000 -0500
@@ -21,7 +21,13 @@
{
throw new NotImplementedException ();
}
-
+
+ [MonoTODO]
+ public void DrawImage(Image image, int x, int y, int width, int height)
+ {
+ throw new NotImplementedException ();
+ }
+
[MonoTODO]
public static Graphics FromHwnd (IntPtr hwnd)
{
@@ -38,6 +44,12 @@
public static Graphics FromHdc (IntPtr hdc, IntPtr hdevice)
{
throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public static Graphics FromImage (Image image)
+ {
+ throw new NotImplementedException ();
}
}
}
--------------090203070006040009080405--