2010-05-27 William Holmes <billholmes54@gmail.com>
[mono.git] / mcs / class / System.Drawing / System.Drawing.Imaging / FrameDimension.cs
index ad6f7feb37ae57180e4a66676e723ee563fd5573..3e8546c1627b8aabd7d21a71790f954aa288e6fe 100644 (file)
@@ -9,7 +9,7 @@
 // Jordi Mas i Hernanez (jordi@ximian.com)
 
 //
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004, 2008 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
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
 namespace System.Drawing.Imaging {
 
-using System;
+       public sealed class FrameDimension {
 
-public sealed class FrameDimension {
+               private Guid guid;
+               private string name;
+
+               static FrameDimension page;
+               static FrameDimension resolution;
+               static FrameDimension time;
 
-       readonly Guid guid;
-       
-       // constructor
-       public FrameDimension(Guid guid) 
-       {
-               this.guid = guid;
-       }
 
-       //properties
-       public Guid Guid {
-               get {
-                       return guid;
+               public FrameDimension (Guid guid) 
+               {
+                       this.guid = guid;
                }
-       }
-       
-       public static FrameDimension Page {
-               get {
-                       return new FrameDimension (new Guid ("7462dc86-6180-4c7e-8e3f-ee7333a7a483"));
+
+               internal FrameDimension (Guid guid, string name)
+               {
+                       this.guid = guid;
+                       this.name = name;
+               }
+
+               public Guid Guid {
+                       get { return guid; }
+               }
+
+               public static FrameDimension Page {
+                       get {
+                               if (page == null)
+                                       page = new FrameDimension (new Guid ("7462dc86-6180-4c7e-8e3f-ee7333a7a483"), "Page");
+                               return page;
+                       }
                }
-       }
        
-       public static FrameDimension Resolution {
-               get {
-                       return new FrameDimension (new Guid ("84236f7b-3bd3-428f-8dab-4ea1439ca315" ));                 
+               public static FrameDimension Resolution {
+                       get {
+                               if (resolution == null) {
+                                       resolution = new FrameDimension (new Guid ("84236f7b-3bd3-428f-8dab-4ea1439ca315"), 
+                                               "Resolution");
+                               }
+                               return resolution;
+                       }
                }
-       }
        
-       public static FrameDimension Time {
-               get {
-                       return new FrameDimension (new Guid ("6aedbd6d-3fb5-418a-83a6-7f45229dc872" ));                 
+               public static FrameDimension Time {
+                       get {
+                               if (time == null)
+                                       time = new FrameDimension (new Guid ("6aedbd6d-3fb5-418a-83a6-7f45229dc872"), "Time");
+                               return time;
+                       }
                }
-       }
 
-       //methods
-       public override bool Equals(object o) 
-       {
-               if (!(o is FrameDimension))
-                       return false;           
+               public override bool Equals (object o) 
+               {
+                       FrameDimension fd = (o as FrameDimension);
+                       if (fd == null)
+                               return false;           
                
-               return (guid == ((FrameDimension)o).guid);                      
-       }
+                       return (guid == fd.guid);                       
+               }
        
-       public override int GetHashCode() 
-       {
-               return guid.GetHashCode ();
-       }
+               public override int GetHashCode () 
+               {
+                       return guid.GetHashCode ();
+               }
        
-       public override string ToString() 
-       {
-               return "FrameDimension :" + guid;
+               public override string ToString ()
+               {
+                       if (name == null)
+                               name = String.Format ("[FrameDimension: {0}]", guid);
+                       return name;
+               }
        }
-
-}
 }