Merge pull request #461 from knocte/xbuild_improvements
[mono.git] / mcs / class / System.Drawing / System.Drawing / StringFormat.jvm.cs
index 10b08625cf315a19547c7d9015e6b899a99b244b..3d9ec7944ff6acc5f58f42ac59303b42cc0a84e0 100644 (file)
 using System;
 using System.Drawing.Text;
 
-namespace System.Drawing
-{
+namespace System.Drawing {
        /// <summary>
        /// Summary description for StringFormat.
        /// </summary>
-       public sealed class StringFormat : IDisposable, ICloneable
-       {
-               private static StringFormat genericDefault;
-               private int language = 0;
-               internal CharacterRange [] CharRanges;
-
-               //local storage
-               internal StringAlignment alignment;
-               internal StringAlignment linealignment;
-               internal HotkeyPrefix prefix;
-               internal StringFormatFlags flags;
-               internal StringDigitSubstitute subst;
-               internal StringTrimming trimming;
-               internal float firstTabOffset;
-               internal float [] tabStops;
+       public sealed class StringFormat : MarshalByRefObject, IDisposable, ICloneable {
                
-               public StringFormat()
-               {                                          
-                       
-               }               
                
-               public StringFormat(StringFormatFlags options, int lang)
-               {
-                               flags = options;
-                               LineAlignment =  StringAlignment.Near;
-                               Alignment =  StringAlignment.Near;                      
-                               language = lang;
+               private CharacterRange [] _charRanges;
+               private StringAlignment _alignment;
+               private StringAlignment _lineAlignment;
+               private HotkeyPrefix _hotkeyPrefix;
+               private StringFormatFlags _flags;
+               private StringDigitSubstitute _digitSubstituteMethod;
+               private int _digitSubstituteLanguage;
+               private StringTrimming _trimming;
+               
+               private float _firstTabOffset;
+               private float [] _tabStops;
+
+               private bool _genericTypeographic = false;
+               
+               #region Constructors
+
+               public StringFormat() : this(0, 0) {                                       
                }
                
-               public StringFormat(StringFormatFlags options):this(options,0)
-               {
+               public StringFormat(StringFormatFlags options) : this(options,0) {
                }
                
-//             ~StringFormat()
-//             {       
-//                     Dispose ();
-//             }
+               public StringFormat(StringFormatFlags options, int lang) {
+                       _alignment = StringAlignment.Near;
+                       _digitSubstituteLanguage = lang;
+                       _digitSubstituteMethod = StringDigitSubstitute.User;
+                       _flags = options;
+                       _hotkeyPrefix = HotkeyPrefix.None;
+                       _lineAlignment = StringAlignment.Near;
+                       _trimming = StringTrimming.Character;
+               }
                
-               public void Dispose()
-               {       
+               public StringFormat (StringFormat source) {
+                       if (source == null)
+                               throw new ArgumentNullException("format");
+
+                       _alignment = source.LineAlignment;
+                       _digitSubstituteLanguage = source.DigitSubstitutionLanguage;
+                       _digitSubstituteMethod = source.DigitSubstitutionMethod;
+                       _flags = source.FormatFlags;
+                       _hotkeyPrefix = source.HotkeyPrefix;
+                       _lineAlignment = source.LineAlignment;
+                       _trimming = source.Trimming;
                }
 
 
-               public StringFormat (StringFormat source)
-               {
-                       Alignment = source.Alignment;
-                       LineAlignment = source.LineAlignment;
-                       HotkeyPrefix = source.HotkeyPrefix;
-                       subst = source.subst;
-                       flags = source.flags;
+               #endregion
+
+               #region IDisposable
+
+               public void Dispose() { 
                }
 
-               
-               public StringAlignment Alignment 
-               {
-                       get 
-                       {
-                               return alignment;
+               #endregion
+
+               #region Public properties
+
+               public StringAlignment Alignment {
+                       get {
+                               return _alignment;
                        }
 
-                       set 
-                       {
-                               alignment = value;
+                       set {
+                               _alignment = value;
                        }
                }
 
-               public StringAlignment LineAlignment 
-               {
-                       get 
-                       {
-                               return linealignment;
+               public StringAlignment LineAlignment {
+                       get {
+                               return _lineAlignment;
                        }
-                       set 
-                       {
-                               linealignment = value;
+                       set {
+                               _lineAlignment = value;
                        }
                }
 
-               public StringFormatFlags FormatFlags 
-               {
-                       get 
-                       {                               
-                               return flags;
+               [MonoTODO]
+               public StringFormatFlags FormatFlags {
+                       get {                           
+                               return _flags;
                        }
 
-                       set 
-                       {
-                               flags = value;
+                       set {
+                               _flags = value;
                        }
                }
 
-               public HotkeyPrefix HotkeyPrefix 
-               {
-                       get 
-                       {                               
-                               return prefix;
+               [MonoTODO]
+               public HotkeyPrefix HotkeyPrefix {
+                       get {                           
+                               return _hotkeyPrefix;
                        }
 
-                       set 
-                       {
-                               prefix = value;
+                       set {
+                               _hotkeyPrefix = value;
                        }
                }
 
+               [MonoTODO]
+               public StringTrimming Trimming {
+                       get {
+                               return _trimming;
+                       }
 
-               public StringTrimming Trimming 
-               {
-                       get 
-                       {
-                               return trimming;
+                       set {
+                               _trimming = value;
                        }
+               }
 
-                       set 
-                       {
-                               trimming = value;
+               public int DigitSubstitutionLanguage {
+                       get {
+                               return _digitSubstituteLanguage;
                        }
                }
 
-               public static StringFormat GenericDefault 
-               {
-                       get 
-                       {
+               public StringDigitSubstitute DigitSubstitutionMethod {
+                       get {
+                               return _digitSubstituteMethod;     
+                       }
+               }
+
+
+               #endregion
+
+               #region static properties
+
+               public static StringFormat GenericDefault {
+                       get {
+                               StringFormat genericDefault = new StringFormat();
                                return genericDefault;
                        }
                }
                
-               
-               public int DigitSubstitutionLanguage 
-               {
-                       get
-                       {
-                               return language;
+               public static StringFormat GenericTypographic {
+                       get {
+                               StringFormat genericTypographic = new StringFormat(
+                                       StringFormatFlags.FitBlackBox |
+                                       StringFormatFlags.LineLimit |
+                                       StringFormatFlags.NoClip, 
+                                       0 );
+                               genericTypographic.Trimming = StringTrimming.None;
+                               genericTypographic._genericTypeographic = true;
+                               return genericTypographic;
                        }
                }
 
-               
-               public static StringFormat GenericTypographic 
-               {
-                       get 
-                       {
-                               throw new NotImplementedException();
+               #endregion
+
+               #region internal accessors
+               internal bool NoWrap {
+                       get {
+                               return (FormatFlags & StringFormatFlags.NoWrap) != 0;
                        }
                }
 
-               public StringDigitSubstitute  DigitSubstitutionMethod  
-               {
-                       get 
-                       {
-                               return subst;     
+               internal bool IsVertical {
+                       get {
+                               return (FormatFlags & StringFormatFlags.DirectionVertical) != 0;
                        }
                }
 
+               internal bool MeasureTrailingSpaces {
+                       get {
+                               return (FormatFlags & StringFormatFlags.MeasureTrailingSpaces) != 0;
+                       }
+               }
 
-               public void SetMeasurableCharacterRanges (CharacterRange [] range)
-               {
-                       CharRanges=(CharacterRange [])range.Clone();
+               internal bool LineLimit {
+                       get {
+                               return (FormatFlags & StringFormatFlags.LineLimit) != 0;
+                       }
+               }
+
+               internal bool NoClip {
+                       get {
+                               return (FormatFlags & StringFormatFlags.NoClip) != 0;
+                       }
                }
 
-               internal CharacterRange [] GetCharRanges
+               internal bool IsRightToLeft {
+                       get {
+                               return (FormatFlags & StringFormatFlags.DirectionRightToLeft) != 0;
+                       }
+               }
+               
+               internal CharacterRange [] CharRanges {
+                       get {
+                               return _charRanges;
+                       }
+               }
+
+               internal bool IsGenericTypographic
                {
-                       get 
-                       {
-                               return(CharRanges);
+                       get {
+                               return _genericTypeographic;
                        }
                }
+               #endregion
+
+               #region public methods
+
+               public void SetMeasurableCharacterRanges (CharacterRange [] range) {
+                       _charRanges = range != null ? (CharacterRange [])range.Clone() : null;
+               }
        
-               public object Clone()
-               {
-                       throw new NotImplementedException();
+               public object Clone() {
+                       StringFormat copy = (StringFormat)MemberwiseClone();
+                       if (_charRanges != null)
+                               copy._charRanges = (CharacterRange [])_charRanges.Clone();
+                       if (_tabStops != null)
+                               copy._tabStops = (float[])_tabStops.Clone();
+                       return copy;
                }
 
-               public override string ToString()
-               {
+               public override string ToString() {
                        return "[StringFormat, FormatFlags=" + this.FormatFlags.ToString() + "]";
                }
                
-               public void SetTabStops(float firstTabOffset, float[] tabStops)
-               {
-                       this.firstTabOffset = firstTabOffset;
-                       this.tabStops = tabStops;
+               public void SetTabStops(float firstTabOffset, float[] tabStops) {
+//                     _firstTabOffset = firstTabOffset;
+//                     _tabStops = tabStops != null ? (float[])tabStops.Clone() : null;
+                       throw new NotImplementedException();
                }
 
-               public void SetDigitSubstitution(int language,  StringDigitSubstitute substitute)
-               {
-                       subst = substitute;
+               public void SetDigitSubstitution(int language,  StringDigitSubstitute substitute) {
+//                     _digitSubstituteMethod = substitute;
+//                     _digitSubstituteLanguage = language;
+                       throw new NotImplementedException();
                }
 
-               public float[] GetTabStops(out float firstTabOffset)
-               {
-                       firstTabOffset = this.firstTabOffset;
-                       return this.tabStops;
+               [MonoTODO]
+               public float[] GetTabStops(out float firstTabOffset) {
+                       firstTabOffset = _firstTabOffset;
+                       return _tabStops != null ? (float[])_tabStops.Clone() : null;
                }
 
+               #endregion
        }
 }