2005-08-23 Jordi Mas i Hernandez <jordi@ximian.com>
[mono.git] / mcs / class / System.Drawing / System.Drawing / StringFormat.cs
index 345f88fed7a6a73a4549001cb9f7ae7934ecbf6d..1344cd2e25cce5c3073645c11289d5153847a756 100644 (file)
@@ -6,10 +6,7 @@
 //   Miguel de Icaza (miguel@ximian.com)
 //   Jordi Mas i Hernandez (jordi@ximian.com)
 //
-// (C) 2002 Ximian, Inc
-// (C) 2003 Novell, Inc.
-//
-
+// Copyright (C) 2002 Ximian, Inc (http://www.ximian.com)
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
@@ -45,8 +42,7 @@ namespace System.Drawing
                private static StringFormat genericDefault;
                private IntPtr nativeStrFmt = IntPtr.Zero;
                 private int language = GDIPlus.LANG_NEUTRAL;
-               internal CharacterRange [] CharRanges;
-               
+                               
                public StringFormat() : this (0, GDIPlus.LANG_NEUTRAL)
                {                                          
                        
@@ -54,15 +50,12 @@ namespace System.Drawing
                
                public StringFormat(StringFormatFlags options, int lang)
                {
-                       lock (this)
-                       {
-                               Status status = GDIPlus.GdipCreateStringFormat (options, lang, out nativeStrFmt);                               
-                               GDIPlus.CheckStatus (status);
+                       Status status = GDIPlus.GdipCreateStringFormat (options, lang, out nativeStrFmt);                               
+                       GDIPlus.CheckStatus (status);
        
-                               LineAlignment =  StringAlignment.Near;
-                               Alignment =  StringAlignment.Near;                      
-                               language = lang;
-                       }
+                       LineAlignment =  StringAlignment.Near;
+                       Alignment =  StringAlignment.Near;                      
+                       language = lang;                        
                }
                
                internal StringFormat(IntPtr native)
@@ -70,12 +63,12 @@ namespace System.Drawing
                        nativeStrFmt = native;
                }
                
-               ~StringFormat()
+               ~StringFormat ()
                {       
-                       Dispose ();
+                       Dispose (false);
                }
                
-               public void Dispose()
+               public void Dispose ()
                {       
                        Dispose (true);
                        System.GC.SuppressFinalize (this);
@@ -83,31 +76,24 @@ namespace System.Drawing
 
                void Dispose (bool disposing)
                {
-                       if (disposing) {
-                               lock (this)
-                               {
-                                       Status status = GDIPlus.GdipDeleteStringFormat (nativeStrFmt);
-                                       GDIPlus.CheckStatus (status);
-                               }
+                       if (nativeStrFmt != IntPtr.Zero) {
+                               Status status = GDIPlus.GdipDeleteStringFormat (nativeStrFmt);
+                               GDIPlus.CheckStatus (status);
+                               
+                               nativeStrFmt = IntPtr.Zero;
                        }
                }
 
                public StringFormat (StringFormat source)
                {               
-                       lock (this)
-                       {       
-                               Status status = GDIPlus.GdipCloneStringFormat (source.NativeObject, out nativeStrFmt);
-                               GDIPlus.CheckStatus (status);
-                       }
+                       Status status = GDIPlus.GdipCloneStringFormat (source.NativeObject, out nativeStrFmt);
+                       GDIPlus.CheckStatus (status);                   
                }
 
                public StringFormat (StringFormatFlags flags)
                {
-                       lock (this)
-                       {                               
-                               Status status = GDIPlus.GdipCreateStringFormat (flags, GDIPlus.LANG_NEUTRAL, out nativeStrFmt);
-                               GDIPlus.CheckStatus (status);
-                       }
+                       Status status = GDIPlus.GdipCreateStringFormat (flags, GDIPlus.LANG_NEUTRAL, out nativeStrFmt);
+                       GDIPlus.CheckStatus (status);                   
                }
                
                public StringAlignment Alignment {
@@ -187,15 +173,13 @@ namespace System.Drawing
 
                public static StringFormat GenericDefault {
                        get {
-                               lock (typeof (StringFormat))
-                               {
-                                       IntPtr ptr;
+                               IntPtr ptr;
                                
-                                       Status status = GDIPlus.GdipStringFormatGetGenericDefault (out ptr);
-                                       GDIPlus.CheckStatus (status);
+                               Status status = GDIPlus.GdipStringFormatGetGenericDefault (out ptr);
+                               GDIPlus.CheckStatus (status);
        
-                                       return new StringFormat (ptr);
-                               }
+                               return new StringFormat (ptr);
+                               
                        }
                }
                
@@ -210,15 +194,12 @@ namespace System.Drawing
                public static StringFormat GenericTypographic {
                        get {
                        
-                               lock (typeof (StringFormat))
-                               {
-                                       IntPtr ptr;
+                               IntPtr ptr;
                                                
-                                       Status status = GDIPlus.GdipStringFormatGetGenericTypographic (out ptr);
-                                       GDIPlus.CheckStatus (status);
+                               Status status = GDIPlus.GdipStringFormatGetGenericTypographic (out ptr);
+                               GDIPlus.CheckStatus (status);
        
-                                       return new StringFormat (ptr);                          
-                               }
+                               return new StringFormat (ptr);
                        }
                }
 
@@ -235,28 +216,30 @@ namespace System.Drawing
 
 
                public void SetMeasurableCharacterRanges (CharacterRange [] range)
-               {
-                       CharRanges=(CharacterRange [])range.Clone();
+               {                                       
+                       Status status = GDIPlus.GdipSetStringFormatMeasurableCharacterRanges (nativeStrFmt, 
+                               range.Length,   range);
+                               
+                       GDIPlus.CheckStatus (status);
                }
-
-               internal CharacterRange [] GetCharRanges
+               
+               internal int GetMeasurableCharacterRangeCount () 
                {
-                       get {
-                               return(CharRanges);
-                       }
-               }
-       
+                       int cnt;                
+                       Status status = GDIPlus.GdipGetStringFormatMeasurableCharacterRangeCount (nativeStrFmt, out cnt);
+                               
+                       GDIPlus.CheckStatus (status);                   
+                       return cnt;                     
+               }                       
+                       
                public object Clone()
                {
-                       lock (this)
-                       {
-                               IntPtr native;
+                       IntPtr native;
                                
-                               Status status = GDIPlus.GdipCloneStringFormat (nativeStrFmt, out native);
-                               GDIPlus.CheckStatus (status);
+                       Status status = GDIPlus.GdipCloneStringFormat (nativeStrFmt, out native);
+                       GDIPlus.CheckStatus (status);
        
-                               return new StringFormat (native);
-                       }
+                       return new StringFormat (native);                       
                }
 
                public override string ToString()