X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Drawing%2FSystem.Drawing.Imaging%2FImageFormat.cs;h=e464daecbe9314745caec33a6727110e46d346bd;hb=1fabd87b02f8d2e359150ed7a9e92613e60383bc;hp=76d31a4ec83b13a5d352b3a04128f6af73d56e4e;hpb=234225d112c4b018b8d1796f4c06a15812137500;p=mono.git diff --git a/mcs/class/System.Drawing/System.Drawing.Imaging/ImageFormat.cs b/mcs/class/System.Drawing/System.Drawing.Imaging/ImageFormat.cs index 76d31a4ec83..e464daecbe9 100644 --- a/mcs/class/System.Drawing/System.Drawing.Imaging/ImageFormat.cs +++ b/mcs/class/System.Drawing/System.Drawing.Imaging/ImageFormat.cs @@ -6,12 +6,10 @@ // Andreas Nahr (ClassDevelopment@A-SoftTech.com) // Dennis Hayes (dennish@raytek.com) // Jordi Mas i Hernandez (jordi@ximian.com) +// Sebastien Pouliot // // (C) 2002-4 Ximian, Inc. http://www.ximian.com -// - -// -// Copyright (C) 2004 Novell, Inc (http://www.novell.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 @@ -33,148 +31,194 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // -using System; using System.ComponentModel; namespace System.Drawing.Imaging { [TypeConverter (typeof (ImageFormatConverter))] - public sealed class ImageFormat - { + public sealed class ImageFormat { + private Guid guid; - private static ImageFormat BmpImageFormat = new ImageFormat (new Guid ("b96b3cab-0728-11d3-9d7b-0000f81ef32e")); - private static ImageFormat EmfImageFormat = new ImageFormat (new Guid ("b96b3cac-0728-11d3-9d7b-0000f81ef32e")); - private static ImageFormat ExifImageFormat = new ImageFormat (new Guid ("b96b3cb2-0728-11d3-9d7b-0000f81ef32e")); - private static ImageFormat GifImageFormat = new ImageFormat (new Guid ("b96b3cb0-0728-11d3-9d7b-0000f81ef32e")); - private static ImageFormat TiffImageFormat = new ImageFormat (new Guid ("b96b3cb1-0728-11d3-9d7b-0000f81ef32e")); - private static ImageFormat PngImageFormat = new ImageFormat(new Guid("b96b3caf-0728-11d3-9d7b-0000f81ef32e")); - private static ImageFormat MemoryBmpImageFormat = new ImageFormat (new Guid ("b96b3caa-0728-11d3-9d7b-0000f81ef32e")); - private static ImageFormat IconImageFormat = new ImageFormat (new Guid ("b96b3cb5-0728-11d3-9d7b-0000f81ef32e")); - private static ImageFormat JpegImageFormat = new ImageFormat(new Guid("b96b3cae-0728-11d3-9d7b-0000f81ef32e")); - private static ImageFormat WmfImageFormat = new ImageFormat (new Guid ("b96b3cad-0728-11d3-9d7b-0000f81ef32e")); + private string name; + + private const string BmpGuid = "b96b3cab-0728-11d3-9d7b-0000f81ef32e"; + private const string EmfGuid = "b96b3cac-0728-11d3-9d7b-0000f81ef32e"; + private const string ExifGuid = "b96b3cb2-0728-11d3-9d7b-0000f81ef32e"; + private const string GifGuid = "b96b3cb0-0728-11d3-9d7b-0000f81ef32e"; + private const string TiffGuid = "b96b3cb1-0728-11d3-9d7b-0000f81ef32e"; + private const string PngGuid = "b96b3caf-0728-11d3-9d7b-0000f81ef32e"; + private const string MemoryBmpGuid = "b96b3caa-0728-11d3-9d7b-0000f81ef32e"; + private const string IconGuid = "b96b3cb5-0728-11d3-9d7b-0000f81ef32e"; + private const string JpegGuid = "b96b3cae-0728-11d3-9d7b-0000f81ef32e"; + private const string WmfGuid = "b96b3cad-0728-11d3-9d7b-0000f81ef32e"; + + // lock(this) is bad + // http://msdn.microsoft.com/library/en-us/dnaskdr/html/askgui06032003.asp?frame=true + private static object locker = new object (); + + private static ImageFormat BmpImageFormat; + private static ImageFormat EmfImageFormat; + private static ImageFormat ExifImageFormat; + private static ImageFormat GifImageFormat; + private static ImageFormat TiffImageFormat; + private static ImageFormat PngImageFormat; + private static ImageFormat MemoryBmpImageFormat; + private static ImageFormat IconImageFormat; + private static ImageFormat JpegImageFormat; + private static ImageFormat WmfImageFormat; // constructors - public ImageFormat (Guid guid) + public ImageFormat (Guid guid) { + this.name = null; this.guid = guid; } + + private ImageFormat (string name, string guid) + { + this.name = name; + this.guid = new Guid (guid); + } // methods - public override bool Equals(object o) { - - if (o is ImageFormat) - if ( ((ImageFormat)o).Guid.Equals(this.Guid)) - return true; - return false; + public override bool Equals (object o) + { + ImageFormat f = (o as ImageFormat); + if (f == null) + return false; + return f.Guid.Equals (guid); } - public override int GetHashCode() + public override int GetHashCode () + { + return guid.GetHashCode (); + } + + + public override string ToString () { - return guid.GetHashCode(); - } - - - public override string ToString() - { - if (Guid.Equals (Bmp.Guid)) - return "Bmp"; - - if (Guid.Equals (Emf.Guid)) - return "Emf"; - - if (Guid.Equals (Gif.Guid)) - return "Gif"; - - if (Guid.Equals (Jpeg.Guid)) - return "Jpeg"; - - if (Guid.Equals (MemoryBmp.Guid)) - return "MemoryBmp"; - - if (Guid.Equals (Png.Guid)) - return "Png"; - - if (Guid.Equals (Tiff.Guid)) - return "Tiff"; - - if (Guid.Equals (Wmf.Guid)) - return "Wmf"; - - // Default - return guid.ToString (); + if (name != null) + return name; + return ("[ImageFormat: " + guid.ToString () + "]"); } // properties - public Guid Guid - { + public Guid Guid { get { return guid; } } - public static ImageFormat Bmp - { - get { return BmpImageFormat; } + public static ImageFormat Bmp { + get { + lock (locker) { + if (BmpImageFormat == null) + BmpImageFormat = new ImageFormat ("Bmp", BmpGuid); + return BmpImageFormat; + } + } } - - public static ImageFormat Emf - { - get { return EmfImageFormat; } + public static ImageFormat Emf { + get { + lock (locker) { + if (EmfImageFormat == null) + EmfImageFormat = new ImageFormat ("Emf", EmfGuid); + return EmfImageFormat; + } + } } - public static ImageFormat Exif - { - get { return ExifImageFormat; } + public static ImageFormat Exif { + get { + lock (locker) { + if (ExifImageFormat == null) + ExifImageFormat = new ImageFormat ("Exif", ExifGuid); + return ExifImageFormat; + } + } } - public static ImageFormat Gif - { - get { return GifImageFormat; } + public static ImageFormat Gif { + get { + lock (locker) { + if (GifImageFormat == null) + GifImageFormat = new ImageFormat ("Gif", GifGuid); + return GifImageFormat; + } + } } - public static ImageFormat Icon - { - get { return IconImageFormat; } + public static ImageFormat Icon { + get { + lock (locker) { + if (IconImageFormat == null) + IconImageFormat = new ImageFormat ("Icon", IconGuid); + return IconImageFormat; + } + } } - public static ImageFormat Jpeg - { - get { return JpegImageFormat; } + public static ImageFormat Jpeg { + get { + lock (locker) { + if (JpegImageFormat == null) + JpegImageFormat = new ImageFormat ("Jpeg", JpegGuid); + return JpegImageFormat; + } + } } - public static ImageFormat MemoryBmp - { - get { return MemoryBmpImageFormat; } + public static ImageFormat MemoryBmp { + get { + lock (locker) { + if (MemoryBmpImageFormat == null) + MemoryBmpImageFormat = new ImageFormat ("MemoryBMP", MemoryBmpGuid); + return MemoryBmpImageFormat; + } + } } - public static ImageFormat Png - { - get { return PngImageFormat; } + public static ImageFormat Png { + get { + lock (locker) { + if (PngImageFormat == null) + PngImageFormat = new ImageFormat ("Png", PngGuid); + return PngImageFormat; + } + } } - public static ImageFormat Tiff - { - get { return TiffImageFormat; } + public static ImageFormat Tiff { + get { + lock (locker) { + if (TiffImageFormat == null) + TiffImageFormat = new ImageFormat ("Tiff", TiffGuid); + return TiffImageFormat; + } + } } - public static ImageFormat Wmf - { - get { return WmfImageFormat; } + public static ImageFormat Wmf { + get { + lock (locker) { + if (WmfImageFormat == null) + WmfImageFormat = new ImageFormat ("Wmf", WmfGuid); + return WmfImageFormat; + } + } } - } - }