2 // System.Drawing.StringFormat.cs
5 // Dennis Hayes (dennish@Raytek.com)
6 // Miguel de Icaza (miguel@ximian.com)
7 // Jordi Mas i Hernandez (jordi@ximian.com)
9 // Copyright (C) 2002 Ximian, Inc (http://www.ximian.com)
11 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using System.Drawing.Text;
35 namespace System.Drawing
38 /// Summary description for StringFormat.
40 public sealed class StringFormat : IDisposable, ICloneable
42 private static StringFormat genericDefault;
43 private int language = 0;
44 internal CharacterRange [] CharRanges;
47 internal StringAlignment alignment;
48 internal StringAlignment linealignment;
49 internal HotkeyPrefix prefix;
50 internal StringFormatFlags flags;
51 internal StringDigitSubstitute subst;
52 internal StringTrimming trimming;
53 internal float firstTabOffset;
54 internal float [] tabStops;
61 public StringFormat(StringFormatFlags options, int lang)
64 LineAlignment = StringAlignment.Near;
65 Alignment = StringAlignment.Near;
69 public StringFormat(StringFormatFlags options):this(options,0)
83 public StringFormat (StringFormat source)
85 Alignment = source.Alignment;
86 LineAlignment = source.LineAlignment;
87 HotkeyPrefix = source.HotkeyPrefix;
93 public StringAlignment Alignment
106 public StringAlignment LineAlignment
110 return linealignment;
114 linealignment = value;
118 public StringFormatFlags FormatFlags
131 public HotkeyPrefix HotkeyPrefix
145 public StringTrimming Trimming
158 public static StringFormat GenericDefault
162 return genericDefault;
167 public int DigitSubstitutionLanguage
176 public static StringFormat GenericTypographic
180 throw new NotImplementedException();
184 public StringDigitSubstitute DigitSubstitutionMethod
193 public void SetMeasurableCharacterRanges (CharacterRange [] range)
195 CharRanges=(CharacterRange [])range.Clone();
198 internal CharacterRange [] GetCharRanges
206 public object Clone()
208 throw new NotImplementedException();
211 public override string ToString()
213 return "[StringFormat, FormatFlags=" + this.FormatFlags.ToString() + "]";
216 public void SetTabStops(float firstTabOffset, float[] tabStops)
218 this.firstTabOffset = firstTabOffset;
219 this.tabStops = tabStops;
222 public void SetDigitSubstitution(int language, StringDigitSubstitute substitute)
227 public float[] GetTabStops(out float firstTabOffset)
229 firstTabOffset = this.firstTabOffset;
230 return this.tabStops;