17 #if !defined(OPENNURBS_TEXTITERATOR_INC_) 18 #define OPENNURBS_TEXTITERATOR_INC_ 89 const wchar_t* m_text =
nullptr;
91 size_t m_prev_text_ci = 0;
92 size_t m_next_text_ci = 0;
93 size_t m_cur_text_ci = 0;
94 ON__UINT32 m_prev_codepoint = 0;
95 ON__UINT32 m_cur_codepoint = 0;
120 unsigned int charset)
122 , m_stackscale(stackscale)
124 , m_stackformat(stackformat)
127 , m_underlined(underlined)
128 , m_strikethrough(strikethrough)
146 if (0.0 < s && 10.0 > s)
159 return m_stackformat;
187 m_underlined = underlined;
191 return m_strikethrough;
195 m_strikethrough = strikethrough;
203 m_codepage = codepage;
215 m_codepage = ON_MapRTFcharsetToWindowsCodePage(charset, 1252);
220 double m_height = 1.0;
221 double m_stackscale = 0.7;
225 bool m_italic =
false;
226 bool m_underlined =
false;
227 bool m_strikethrough =
false;
228 unsigned int m_codepage = 1252;
229 unsigned int m_charset = 0;
260 virtual void FlushText(
size_t count, ON__UINT32* cp_array);
267 virtual void FontTag(
const wchar_t* value);
268 virtual void FontSize(
const wchar_t* value);
269 virtual void CharSet(
const wchar_t* value);
270 virtual void CodePage(
const wchar_t* value);
278 virtual void Bold(
const wchar_t* value);
279 virtual void Italic(
const wchar_t* value);
289 virtual void ColorRed(
const wchar_t* value);
290 virtual void ColorGreen(
const wchar_t* value);
291 virtual void ColorBlue(
const wchar_t* value);
299 virtual void TextField(
const wchar_t* name);
302 virtual void UniDest(
const wchar_t* value);
304 virtual void UniCpCount(
const wchar_t* value);
305 virtual void UniDecimal(
const wchar_t* value);
352 void FlushText(
size_t count, ON__UINT32* cp_array)
override;
359 void FontTag(
const wchar_t* value)
override;
360 void FontSize(
const wchar_t* value)
override;
368 void Bold(
const wchar_t* value)
override;
369 void Italic(
const wchar_t* value)
override;
379 void ColorRed(
const wchar_t* value)
override;
380 void ColorGreen(
const wchar_t* value)
override;
381 void ColorBlue(
const wchar_t* value)
override;
389 void TextField(
const wchar_t* name)
override;
392 void UniDest(
const wchar_t* value)
override;
428 m_underlined =
false;
429 m_strikethrough =
false;
438 m_font_index = index;
455 return m_strikethrough;
477 size_t i = wcslen(str);
478 if(str[i-1] == L
' ' || str[i-1] == L
'{' || str[i-1] == L
'}')
481 m_terminated =
false;
482 m_has_content =
true;
491 m_has_content =
true;
500 m_has_content =
true;
505 m_terminated = terminated;
524 bool m_has_content =
false;
525 bool m_terminated =
true;
528 bool m_italic =
false;
529 bool m_underlined =
false;
530 bool m_strikethrough =
false;
531 int m_font_index = -1;
537 bool m_in_font_table =
false;
538 bool m_in_color_table =
false;
540 bool m_skip_color_tbl =
false;
541 bool m_skip_bold =
false;
542 bool m_skip_italic =
false;
543 bool m_skip_underline =
false;
544 bool m_skip_facename =
false;
546 bool m_make_bold =
false;
547 bool m_make_italic =
false;
548 bool m_make_underline =
false;
549 bool m_make_facename =
false;
554 bool m_have_rtf =
false;
607 void FontTag(
const wchar_t* value)
override;
608 void FontSize(
const wchar_t* value)
override;
616 void Bold(
const wchar_t* value)
override;
617 void Italic(
const wchar_t* value)
override;
627 void ColorRed(
const wchar_t* value)
override;
628 void ColorGreen(
const wchar_t* value)
override;
629 void ColorBlue(
const wchar_t* value)
override;
633 void TextField(
const wchar_t* name)
override;
638 void UniDecimal(
const wchar_t* value)
override;
639 void UniDest(
const wchar_t* value)
override;
677 m_underlined =
false;
678 m_strikethrough =
false;
687 m_font_index = index;
704 return m_strikethrough;
729 m_has_content =
true;
738 bool m_has_content =
false;
739 bool m_terminated =
true;
742 bool m_italic =
false;
743 bool m_underlined =
false;
744 bool m_strikethrough =
false;
745 int m_font_index = -1;
750 bool m_in_font_table =
false;
751 bool m_in_color_table =
false;
753 bool m_have_rtf =
false;
778 void TextField(
const wchar_t* name)
override;
781 void FontTag(
const wchar_t* value)
override;
783 void Bold(
const wchar_t* value)
override;
784 void Italic(
const wchar_t* value)
override;
802 ON__UINT32 Internal_ParseMBCSString(
803 const ON__UINT32 windows_code_page
813 bool ReadTag(
bool optional);
814 bool ProcessTag(
const wchar_t* name,
const wchar_t* value,
bool optional);
829 bool m_italic =
false;
830 bool m_underline =
false;
831 bool m_strikeout =
false;
833 int m_facename_key = -1;
837 static bool ComposeA(
847 static void ComposeRunA(
859 static void ComposeRun(
873 static bool RecomposeRTF();
874 static void SetRecomposeRTF(
bool b);
877 static bool m_bComposeRTF;
880 static unsigned int GetFacenameKey(
const wchar_t* facename,
ON_SimpleArray<
wchar_t[34] >& fonttable);
882 static bool FormatTextHeight(
double height,
ON_wString& str);
void SetInFontTable(bool b)
TextProps()
Definition: opennurbs_textiterator.h:109
ON_SimpleArray< const ON_Font *> m_font_stack
Definition: opennurbs_textiterator.h:341
TextRun()
Definition: opennurbs_textiterator.h:660
void SetOverrideFacename(const wchar_t *facename)
unsigned int CharSetFromMap(int nval)
void EmptyText()
Definition: opennurbs_textiterator.h:513
Definition: opennurbs_textiterator.h:819
virtual void UnderlineOn()
Definition: opennurbs_unicode.h:345
Definition: opennurbs_textiterator.h:22
ON_TextRunBuilder(ON_TextContent &text, ON_TextRunArray &runs, const ON_DimStyle *dimstyle, double height, ON_Color color)
void TextField(const wchar_t *name) override
double StackScale() const
Definition: opennurbs_textiterator.h:140
ON_TextRun::RunType Type() const
Definition: opennurbs_textiterator.h:413
void SetType(ON_TextRun::RunType type)
Definition: opennurbs_textiterator.h:417
ON_TextRun m_current_run
Definition: opennurbs_textiterator.h:344
bool ReadCharValue(unsigned char &c)
void ColorBlue(const wchar_t *value) override
void ColorRed(const wchar_t *value) override
bool IsUnderlined() const
Definition: opennurbs_textiterator.h:449
~ON_TextIterator()=default
void Strikethrough(const wchar_t *value) override
ON__INT32 m_current_UTF16_buffer_count
Definition: opennurbs_textiterator.h:246
void Bold(const wchar_t *value) override
int m_rtf_font_index
Definition: opennurbs_textiterator.h:31
ON_DimStyle::stack_format StackFormat() const
Definition: opennurbs_textiterator.h:157
virtual void Strikethrough(const wchar_t *value)
void SetHeight(double h)
Definition: opennurbs_textiterator.h:135
ON__INT32 m_in_run
Definition: opennurbs_textiterator.h:250
void SetCodePage(unsigned int codepage)
Definition: opennurbs_textiterator.h:201
void BeginFontTable() override
void SetUnderlined(bool b)
Definition: opennurbs_textiterator.h:465
void SetMakeUnderline(bool b)
void UniDest(const wchar_t *value) override
void SetMakeFacename(bool b)
void BeginHeader() override
A range of text with all the same attributes.
Definition: opennurbs_textrun.h:66
ON__UINT32 * RunCodePoints(const ON_TextRun &run)
virtual void BeginFontTable()
Definition: opennurbs_textiterator.h:657
Converts wchar_t characters to Unicode codepoints.
Definition: opennurbs_textiterator.h:38
virtual ~ON_RtfStringBuilder()
void Bold(const wchar_t *value) override
virtual void ColorForeground(const wchar_t *value)
bool IsUnderlined() const
Definition: opennurbs_textiterator.h:698
virtual void FontSize(const wchar_t *value)
void BeginColorTable() override
void TextField(const wchar_t *name) override
ON_wString m_facename
Definition: opennurbs_textiterator.h:32
void SetSkipColorTbl(bool b)
const ON_wString FaceNameFromMap(int nval)
ON__INT32 m_level
Definition: opennurbs_textiterator.h:251
bool IsItalic() const
Definition: opennurbs_textiterator.h:694
ON__INT32 m_font_table_level
Definition: opennurbs_textiterator.h:252
void SetSkipUnderline(bool b)
virtual void BeginHeader()
void AddControl(const wchar_t *str)
Definition: opennurbs_textiterator.h:474
void InitStringBuilder(const ON_DimStyle *default_style)
void FontSize(const wchar_t *value) override
void UnderlineOff() override
virtual void UniDest(const wchar_t *value)
stack_format
Format of stacked fractions
Definition: opennurbs_dimensionstyle.h:1000
void PushRun(TextRun &run)
virtual void Italic(const wchar_t *value)
Definition: opennurbs_textiterator.h:647
void BeginHeader() override
void FontSize(const wchar_t *value) override
void SetStackScale(double s)
Definition: opennurbs_textiterator.h:144
Definition: opennurbs_textrun.h:366
TextProps(double height, double stackscale, ON_Color color, ON_DimStyle::stack_format stackformat, bool bold, bool italic, bool underlined, bool strikethrough, unsigned int charset)
Definition: opennurbs_textiterator.h:111
Definition: opennurbs_textiterator.h:28
Definition: opennurbs_textiterator.h:822
virtual void UniEmbeddedDest(const wchar_t *value)
void UniDest(const wchar_t *value) override
bool IsUnderlined()
Definition: opennurbs_textiterator.h:181
void SetMakeItalic(bool b)
void UnderlineOn() override
bool IsBold() const
Definition: opennurbs_textiterator.h:690
Definition: opennurbs_textiterator.h:795
void SetStackFormat(ON_DimStyle::stack_format s)
Definition: opennurbs_textiterator.h:161
Definition: opennurbs_string.h:2089
bool IsStrikethrough()
Definition: opennurbs_textiterator.h:189
bool IsStrikeThrough() const
Definition: opennurbs_textiterator.h:702
Definition: opennurbs_dimensionstyle.h:224
virtual void ParagraphDefaults()
void ColorGreen(const wchar_t *value) override
virtual void CharSet(const wchar_t *value)
bool ReadCodePoint(ON__UINT32 &unicode_code_point)
unsigned int m_codepage
Definition: opennurbs_textiterator.h:33
ON_ClassArray< ON_FaceNameKey > m_facename_map
Definition: opennurbs_textiterator.h:257
void SetItalic(bool b)
Definition: opennurbs_textiterator.h:710
void SetTerminated(bool terminated)
Definition: opennurbs_textiterator.h:503
virtual void ColorBackground(const wchar_t *value)
void SetSkipItalic(bool b)
void SetType(ON_TextRun::RunType type)
Definition: opennurbs_textiterator.h:666
ON_ClassArray< TextProps > m_prop_stack
Definition: opennurbs_textiterator.h:232
void ParagraphDefaults() override
void ParagraphDefaults() override
void InitBuilder(const ON_Font *default_font) override
virtual void UniCpCount(const wchar_t *value)
const ON_wString & TextString()
Definition: opennurbs_textiterator.h:518
void Strikethrough(const wchar_t *value) override
virtual void StackFraction(const wchar_t *value)
unsigned int CodePageFromMap(int nval)
void ColorBlue(const wchar_t *value) override
void SetStrikeThrough(bool b)
Definition: opennurbs_textiterator.h:469
void PushRun(TextRun &run)
Definition: opennurbs_color.h:24
value must be > 0xE000 and uncommon unicode code point
Definition: opennurbs_textiterator.h:243
TextRun m_current_run
Definition: opennurbs_textiterator.h:757
void BeginColorTable() override
void DefaultFont(const wchar_t *value) override
void SetStrikethrough(bool strikethrough)
Definition: opennurbs_textiterator.h:193
bool PeekCodePoint(ON__UINT32 &unicode_code_point) const
void ColorGreen(const wchar_t *value) override
Definition: opennurbs_text.h:28
void FlushText(size_t count, ON__UINT32 *cp_array) override
virtual void Bold(const wchar_t *value)
virtual void ColorGreen(const wchar_t *value)
void SetStackScale(const wchar_t *value) override
void GroupBegin() override
virtuals
ON_RtfParser(ON_TextIterator &iter, ON_TextBuilder &builder)
void BeginColorTable() override
void ColorBackground(const wchar_t *value) override
ON_Color Color() const
Definition: opennurbs_textiterator.h:149
ON_TextRun::RunType Type() const
Definition: opennurbs_textiterator.h:662
void FontTag(const wchar_t *value) override
virtual ~ON_TextBuilder()
ON_TextIterator & operator=(const ON_TextIterator &)=default
void GroupBegin() override
virtuals
void FontTag(const wchar_t *value) override
void UniEmbeddedDest(const wchar_t *value) override
bool IsTerminated()
Definition: opennurbs_textiterator.h:508
bool IsBold() const
Definition: opennurbs_textiterator.h:441
bool IsItalic()
Definition: opennurbs_textiterator.h:173
void InitStringBuilder(const ON_DimStyle *default_style)
int FontIndex()
Definition: opennurbs_textiterator.h:680
void SetBold(bool b)
Definition: opennurbs_textiterator.h:706
void SetBold(bool b)
Definition: opennurbs_textiterator.h:457
ON_SimpleArray< int > m_ansi_equiv_chars
Definition: opennurbs_textiterator.h:255
bool Back()
move position back and return current codepoint after moving back
void SetCharSet(unsigned int charset, bool setcodepage)
Definition: opennurbs_textiterator.h:210
void UnderlineOn() override
void UniDecimal(const wchar_t *value) override
void BeginFontTable() override
virtual void BeginColorTable()
unsigned int m_charset
Definition: opennurbs_textiterator.h:34
void SetColor(ON_Color c)
Definition: opennurbs_textiterator.h:153
Definition: opennurbs_textiterator.h:106
virtual void InitBuilder(const ON_Font *default_font)
An ON_Font is a face in a font family. It corresponds to a Windows LOGFONT, a .NET System...
Definition: opennurbs_font.h:225
void SetSkipFacename(bool b)
virtual void FlushText(size_t count, ON__UINT32 *cp_array)
const ON_wString OutputString()
virtual void FontTag(const wchar_t *value)
RunType
Definition: opennurbs_textrun.h:125
void SetItalic(bool italic)
Definition: opennurbs_textiterator.h:177
bool IsBold()
Definition: opennurbs_textiterator.h:165
void FontTag(const wchar_t *value) override
virtual bool AppendCodePoint(ON__UINT32 codept)
void SetFontIndex(int index)
Definition: opennurbs_textiterator.h:435
void SetBold(bool bold)
Definition: opennurbs_textiterator.h:169
Definition: opennurbs_textiterator.h:99
void InitRun()
Definition: opennurbs_textiterator.h:421
virtual void TextField(const wchar_t *name)
const ON_wString OutputString()
const ON_Font * m_current_font
Definition: opennurbs_textiterator.h:342
ON_TextRunArray & m_runs
Definition: opennurbs_textiterator.h:345
void NoSuperSub() override
ON_wString m_run_text
Definition: opennurbs_textiterator.h:827
void Paragraph() override
void DefaultFont(const wchar_t *value) override
Definition: opennurbs_textiterator.h:408
void BeginFontTable() override
virtual void SetStackScale(const wchar_t *value)
void UnderlineOn() override
virtual void CodePage(const wchar_t *value)
ON_RtfFirstChar(const ON_DimStyle *dimstyle, double height, ON_Color color)
virtual void GroupBegin()
bool AtBackslashTic() const
ON_RtfStringBuilder(const ON_DimStyle *dimstyle, double height, ON_Color color)
void ColorForeground(const wchar_t *value) override
void AddChar(const wchar_t ch)
Definition: opennurbs_textiterator.h:494
void Italic(const wchar_t *value) override
Stack with horizontal line
int FontIndex()
Definition: opennurbs_textiterator.h:431
void TextField(const wchar_t *name) override
void SetUnderlined(bool b)
Definition: opennurbs_textiterator.h:714
ON__INT32 m_default_font_index
Definition: opennurbs_textiterator.h:254
void UnderlineOff() override
void Italic(const wchar_t *value) override
void ColorForeground(const wchar_t *value) override
const ON_Font * managed_font
Definition: opennurbs_textiterator.h:25
void SetItalic(bool b)
Definition: opennurbs_textiterator.h:461
int rtf_font_index
Definition: opennurbs_textiterator.h:24
void Superscript() override
virtual void Superscript()
void StackFraction(const wchar_t *value) override
void SetUnderlined(bool underlined)
Definition: opennurbs_textiterator.h:185
void SetInColorTable(bool b)
bool AppendCodePoint(ON__UINT32 codept) override
void SetInColorTable(bool b)
void SetInFontTable(bool b)
Definition: opennurbs_array.h:412
bool IsItalic() const
Definition: opennurbs_textiterator.h:445
ON_ClassArray< TextRun > m_run_stack
Definition: opennurbs_textiterator.h:559
TextProps m_current_props
Definition: opennurbs_textiterator.h:233
void Superscript() override
TextRun m_current_run
Definition: opennurbs_textiterator.h:558
void AddText(const wchar_t *str)
Definition: opennurbs_textiterator.h:723
void NoSuperSub() override
void AddText(const wchar_t *str)
Definition: opennurbs_textiterator.h:485
static const ON_wString EmptyString
Definition: opennurbs_string.h:2095
void Empty()
sets length to zero - if possible, memory is retained
void ColorBackground(const wchar_t *value) override
ON_TextContent & m_text
Definition: opennurbs_textiterator.h:346
void SetFontIndex(int index)
Definition: opennurbs_textiterator.h:684
void ColorRed(const wchar_t *value) override
void InitRun()
Definition: opennurbs_textiterator.h:670
static const ON_Font Default
Definition: opennurbs_font.h:512
void BeginHeader() override
Definition: opennurbs_textiterator.h:398
unsigned int CodePage()
Definition: opennurbs_textiterator.h:197
virtual void UniDecimal(const wchar_t *value)
ON__UINT16 m_current_UTF16_buffer[2]
Definition: opennurbs_textiterator.h:247
virtual void DefaultFont(const wchar_t *value)
void Subscript() override
double Height() const
Definition: opennurbs_textiterator.h:131
void GroupBegin() override
virtual void ColorBlue(const wchar_t *value)
void UniEmbeddedDest(const wchar_t *value) override
void Subscript() override
Definition: opennurbs_textiterator.h:329
void Italic(const wchar_t *value) override
void Strikethrough(const wchar_t *value) override
virtual ~ON_RtfFirstChar()
void SetDefaultFacename(const wchar_t *facename)
ON_SimpleArray< ON__UINT32 > m_current_codepoints
Definition: opennurbs_textiterator.h:249
value must be > m_UFT16_waiting, <= 0xFFFF, and uncommon unicode code point
Definition: opennurbs_textiterator.h:244
const ON_wString & Text()
Definition: opennurbs_textiterator.h:732
virtual void NoSuperSub()
virtual void UnderlineOff()
bool AppendCodePoint(ON__UINT32 codept) override
ON__INT32 m_font_index
Definition: opennurbs_textiterator.h:253
TextRun()
Definition: opennurbs_textiterator.h:411
void SetStrikeThrough(bool b)
Definition: opennurbs_textiterator.h:718
void UnderlineOff() override
static const ON_Color Black
0x00000000u
Definition: opennurbs_color.h:33
unsigned int CharSet()
Definition: opennurbs_textiterator.h:206
virtual void ColorRed(const wchar_t *value)
virtual ~ON_TextRunBuilder()
ON_ClassArray< TextRun > m_run_stack
Definition: opennurbs_textiterator.h:758
void Paragraph() override
void Bold(const wchar_t *value) override
bool IsStrikeThrough() const
Definition: opennurbs_textiterator.h:453