/// <summary> /// Adds one or more Character objects. /// </summary> public Character AddCharacter(SymbolName symbolType, int count) { Character character = new Character(); this.Add(character); character.SymbolName = symbolType; character.Count = count; return character; }
void RenderSpace(Character character) { this.currentXPosition += GetSpaceWidth(character); }
void RenderSymbol(Character character) { string sym = GetSymbol(character); string completeWord = sym; for (int idx = 1; idx < character.Count; ++idx) completeWord += sym; RenderWord(completeWord); }
/// <summary> /// Processes (measures) a special character within text. /// </summary> /// <param name="character">The character to process.</param> /// <returns>True if the character should start at a new line.</returns> FormatResult FormatCharacter(Character character) { switch (character.SymbolName) { case SymbolName.Blank: case SymbolName.Em: case SymbolName.Em4: case SymbolName.En: return FormatSpace(character); case SymbolName.LineBreak: return FormatLineBreak(); case SymbolName.Tab: return FormatTab(); default: return FormatSymbol(character); } }
void RenderCharacter(Character character) { switch (character.SymbolName) { case SymbolName.Blank: case SymbolName.Em: case SymbolName.Em4: case SymbolName.En: RenderSpace(character); break; case SymbolName.LineBreak: RenderLinebreak(); break; case SymbolName.Tab: RenderTab(); break; default: RenderSymbol(character); break; } }
static string GetSymbol(Character character) { char ch; switch (character.SymbolName) { case SymbolName.Euro: ch = '€'; break; case SymbolName.Copyright: ch = '©'; break; case SymbolName.Trademark: ch = '™'; break; case SymbolName.RegisteredTrademark: ch = '®'; break; case SymbolName.Bullet: ch = '•'; break; case SymbolName.Not: ch = '¬'; break; //REM: Non-breakable blanks are still ignored. // case SymbolName.SymbolNonBreakableBlank: // return "\xA0"; // break; case SymbolName.EmDash: ch = '—'; break; case SymbolName.EnDash: ch = '–'; break; default: char c = character.Char; char[] chars = System.Text.Encoding.Default.GetChars(new byte[] { (byte)c }); ch = chars[0]; break; } string returnString = ""; returnString += ch; int count = character.Count; while (--count > 0) returnString += ch; return returnString; }
FormatResult FormatSymbol(Character character) { return FormatWord(GetSymbol(character)); }
FormatResult FormatSpace(Character character) { XUnit width = GetSpaceWidth(character); return FormatAsWord(width); }
XUnit GetSpaceWidth(Character character) { XUnit width = 0; switch (character.SymbolName) { case SymbolName.Blank: width = MeasureString(" "); break; case SymbolName.Em: width = MeasureString("m"); break; case SymbolName.Em4: width = 0.25 * MeasureString("m"); break; case SymbolName.En: width = MeasureString("n"); break; } return width * character.Count; }
/// <summary> /// Adds a new Character /// </summary> public void Add(Character character) { this.Elements.Add(character); }
void RenderSpace(Character character) { XUnit width = GetSpaceWidth(character); RenderUnderline(width, false); RealizeHyperlink(width); _currentXPosition += width; }
/// <summary> /// Creates a new instance of the CharacterRenderer class. /// </summary> internal CharacterRenderer(DocumentObject domObj, RtfDocumentRenderer docRenderer) : base(domObj, docRenderer) { this.character = domObj as Character; }