Guiliani  Version 2.6 revision 7293 (documentation build 12)
GUIRichText.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef GUIRICHTEXT__H_
11#define GUIRICHTEXT__H_
12
13#include "GUIFontResource.h"
14#include "GUITextResource.h"
15#include "eC_TList_doubleLinked.h"
16#include "GUIText.h"
17#include "FntWrap.h"
18
19class CGUIObject;
20// @guiliani_doxygen toplevel_module Rich Text
32// @endguiliani_doxygen
33
115class CGUIRichText : public CGUIText
116{
117public:
129 const CGUIObject* const pkParentObject,
130 const eC_String &kText,
131 const eC_Value& vXPos=eC_FromInt(0),
132 const eC_Value& vYPos=eC_FromInt(0),
133 const eC_Bool &bSingleLine = true);
134
146 const CGUIObject* const pkParentObject,
147 const eC_String* const pkText,
148 const eC_Value& vXPos=eC_FromInt(0),
149 const eC_Value& vYPos=eC_FromInt(0),
150 const eC_Bool &bSingleLine = true);
151
163 const CGUIObject* const pkParentObject,
164 const TextResource_t &eTextID,
165 const eC_Value& vXPos=eC_FromInt(0),
166 const eC_Value& vYPos=eC_FromInt(0),
167 const eC_Bool &bSingleLine = true);
168
172 CGUIRichText(const CGUIRichText& kTextToBeCopied);
173
175 virtual ~CGUIRichText();
176
183 virtual void SetRichFonts(const FontResource_t& eFontNormal = DUMMY_FONT,
184 const FontResource_t& eFontBold = DUMMY_FONT,
185 const FontResource_t& eFontItalic = DUMMY_FONT,
186 const FontResource_t& eFontBoldItalic = DUMMY_FONT);
187
190 virtual void SetFont(const FontResource_t &eFontID)
191 {
192 SetRichFonts(eFontID, eFontID, eFontID, eFontID);
193 }
194
203
204 virtual void PrintText();
205 virtual void SetTextID(const TextResource_t &eTextID);
206 virtual void SetTextString(const eC_String& kTextString);
207 virtual void SetTextColor(const eC_UInt &uiTextColorStandard, const eC_UInt &uiTextColorHighlighted, const eC_UInt &uiTextColorGrayedOut, const eC_UInt &uiTextColorPressed);
208 virtual void GetRequiredOrgTextSpace(eC_Value& vTextWidth, eC_Value& vTextHeight);
209
213 inline void SetFormatTagBold(const eC_String& kTag) {m_kTagBold = kTag; ParseTextToRich();}
214
218 inline void SetFormatTagItalic(const eC_String& kTag) {m_kTagItalic = kTag; ParseTextToRich();}
219
223 inline void SetFormatTagUnderlined(const eC_String& kTag) {m_kTagUnderlined = kTag; ParseTextToRich();}
224
228 inline void SetFormatTagNoBreak(const eC_String& kTag) {m_kTagNoBreak = kTag; ParseTextToRich();}
229
233 inline void SetFormatTagLineBreak(const eC_String& kTag) {m_kTagLineBreak = kTag; ParseTextToRich();}
234
238 inline void SetFormatTagUnorderedList(const eC_String& kTag) {m_kTagUnorderedList = kTag; ParseTextToRich();}
239
243 inline void SetFormatTagOrderedList(const eC_String& kTag) {m_kTagOrderedList = kTag; ParseTextToRich();}
244
248 inline void SetFormatTagListItem(const eC_String& kTag) {m_kTagListItem = kTag; ParseTextToRich();}
249
253 inline void SetFormatTagColor(const eC_String& kTag) {m_kTagColor = kTag; ParseTextToRich();}
254
258 inline void SetFormatTagOpening(const eC_String& kTag) {m_kTagOpening = kTag; ParseTextToRich();}
259
263 inline void SetFormatTagClosing(const eC_String& kTag) {m_kTagClosing = kTag; ParseTextToRich();}
264
268 inline void SetFormatTagFinished(const eC_String& kTag) {m_kTagFinished = kTag; ParseTextToRich();}
269
273 inline const eC_String& GetFormatTagBold() const {return m_kTagBold;}
274
278 inline const eC_String& GetFormatTagItalic() const {return m_kTagItalic;}
279
283 inline const eC_String& GetFormatTagUnderlined() const {return m_kTagUnderlined;}
284
288 inline const eC_String& GetFormatTagNoBreak() const {return m_kTagNoBreak;}
289
293 inline const eC_String& GetFormatTagLineBreak() const {return m_kTagLineBreak;}
294
298 inline const eC_String& GetFormatTagUnorderedList() const {return m_kTagUnorderedList;}
299
303 inline const eC_String& GetFormatTagOrderedList() const {return m_kTagOrderedList;}
304
308 inline const eC_String& GetFormatTagListItem() const {return m_kTagListItem;}
309
313 inline const eC_String& GetFormatTagColor() const {return m_kTagColor;}
314
318 inline const eC_String& GetFormatTagOpening() const {return m_kTagOpening;}
319
323 inline const eC_String& GetFormatTagClosing() const {return m_kTagClosing;}
324
328 inline const eC_String& GetFormatTagFinished() const {return m_kTagFinished;}
329
334 void EnablePreformatting(const eC_Bool& bPreformatText) {m_bPreformatText = bPreformatText;}
335
340
343 virtual CGUIRichText* Clone() const;
344
345protected:
348 {
349 LT_ORDERED,
350 LT_UNORDERED,
351 LT_NONE
352 };
353
358
361
367 {
368 public:
370 m_eFontID(DUMMY_FONT),
371 m_kText(""),
372 m_uiColorStandard(0xFF000000),
373 m_uiColorHighlighted(0xFF000000),
374 m_uiColorGrayedOut(0xFF000000),
375 m_uiColorPressed(0xFF000000),
376 m_vWidth(0),
377 m_vHeight(0),
378 m_uiLine(0),
379 m_eFontStyle(CFntWrap::FNT_NORMAL),
383 m_eListType(LT_NONE)
384 {
385 }
386
388 eC_String m_kText;
393 eC_Value m_vWidth;
394 eC_Value m_vHeight;
395 eC_UInt m_uiLine;
401 };
402
405
412 eC_TArray< eC_Value> m_kLineWidths;
413
418
423
424 void AdaptText();
425
432 void FitFragmentWithEllipsis(CRichTextFragment &TextFragment, eC_Value vMaxWidth);
433
441 void SplitFragment(CRichTextFragment &FirstTextFragment, CRichTextFragment &SecondTextFragment, eC_Value vMaxWidth, eC_UInt uiCharOffsetFromStart);
442
443 // Font identifiers which will be used for the different formatting options
447
448 // Supported format tags
449 eC_String m_kTagBold;
450 eC_String m_kTagItalic;
452 eC_String m_kTagColor;
453 eC_String m_kTagNoBreak;
454 eC_String m_kTagLineBreak;
457 eC_String m_kTagListItem;
458 eC_String m_kTagOpening;
459 eC_String m_kTagClosing;
460 eC_String m_kTagFinished;
461
463
464 eC_Value m_vSpaceWidth;
467
469
470#ifdef GUILIANI_STREAM_GUI
471 virtual void ReadFromStream();
472#endif
473
474#ifdef GUILIANI_WRITE_GUI
475 virtual void WriteToStream(const eC_Bool bWriteTextType=false);
476#endif
477
478private:
482 CGUIRichText();
483
485 void Init();
486
491 void AddTextFragment(CRichTextFragment& kFragment, const eC_String& kStringFragment);
492
497 void ExtractTag(eC_String& kString, eC_String& kTag);
498
505 void AddEmptyLine(eC_Value& vRemainingHeight, eC_Bool& bAllAvailableSpaceUsed, eC_UInt& uiLine, eC_Value& vRemainingSpaceInLine);
506
511 eC_Bool RemoveLeadingSpace(CRichTextFragment& kFragment);
512
517 eC_Value GetListSignSpace(const ListType_t eListType, const eC_UInt uiPartOfListItem);
518};
519#endif
Helper Macros in Guiliani
FontResource_t
List of font resource ids.
Definition: GUIFontResource.h:54
Helper Macros in Guiliani
TextResource_t
List of text resource ids.
Definition: GUITextResource.h:40
GUIFont_t
Definition: FntWrap.h:44
This is the Guiliani base class all controls are derived from.
Definition: GUIObject.h:81
One fragment of a rich text.
Definition: GUIRichText.h:367
eC_String m_kText
Text contained by this fragment.
Definition: GUIRichText.h:388
CFntWrap::GUIFont_t m_eFontStyle
Font styles.
Definition: GUIRichText.h:396
eC_Value m_vHeight
Width and height are cached to avoid redundant calculations.
Definition: GUIRichText.h:394
eC_UInt m_uiColorStandard
Color of standard text.
Definition: GUIRichText.h:389
eC_UInt m_uiPartOfListItem
fragment is part of a list item with id X
Definition: GUIRichText.h:399
eC_Bool m_bLineBreakAllowed
Text fragment can be split up or not.
Definition: GUIRichText.h:397
eC_UInt m_uiForcedLineBreaks
Number of linebreaks before the fragment.
Definition: GUIRichText.h:398
ListType_t m_eListType
fragments list type
Definition: GUIRichText.h:400
eC_UInt m_uiLine
Line in which this fragment appears.
Definition: GUIRichText.h:395
FontResource_t m_eFontID
Font ID which is being used for printing this fragmend.
Definition: GUIRichText.h:387
eC_Value m_vWidth
Width and height are cached to avoid redundant calculations.
Definition: GUIRichText.h:393
eC_UInt m_uiColorPressed
Color of pressed text.
Definition: GUIRichText.h:392
eC_UInt m_uiColorGrayedOut
Color of grayed out text.
Definition: GUIRichText.h:391
eC_UInt m_uiColorHighlighted
Color of highlighted text.
Definition: GUIRichText.h:390
Text implementation which supports rich text.
Definition: GUIRichText.h:116
eC_String m_kUnorderedListSign
The unordered list sign.
Definition: GUIRichText.h:468
const eC_String & GetFormatTagUnderlined() const
Definition: GUIRichText.h:283
void PreformatText()
void AdaptText()
virtual void PrintText()
eC_String m_kTagBold
Format tag: bold.
Definition: GUIRichText.h:449
void FitFragmentWithEllipsis(CRichTextFragment &TextFragment, eC_Value vMaxWidth)
const eC_String & GetFormatTagUnorderedList() const
Definition: GUIRichText.h:298
void SetFormatTagListItem(const eC_String &kTag)
Definition: GUIRichText.h:248
virtual ~CGUIRichText()
eC_Value m_vListIndentation
Default list indentation.
Definition: GUIRichText.h:466
eC_String m_kTagOpening
Format tag: opening.
Definition: GUIRichText.h:458
eC_String m_kTagClosing
Format tag: closing.
Definition: GUIRichText.h:459
void SetFormatTagOpening(const eC_String &kTag)
Definition: GUIRichText.h:258
void SetFormatTagNoBreak(const eC_String &kTag)
Definition: GUIRichText.h:228
void SetFormatTagColor(const eC_String &kTag)
Definition: GUIRichText.h:253
const eC_String & GetFormatTagClosing() const
Definition: GUIRichText.h:323
const eC_String & GetFormatTagBold() const
Definition: GUIRichText.h:273
eC_String m_kTagLineBreak
Format tag: line break.
Definition: GUIRichText.h:454
void SetFormatTagItalic(const eC_String &kTag)
Definition: GUIRichText.h:218
const eC_String & GetFormatTagListItem() const
Definition: GUIRichText.h:308
const eC_String & GetFormatTagNoBreak() const
Definition: GUIRichText.h:288
const eC_String & GetFormatTagColor() const
Definition: GUIRichText.h:313
const eC_String & GetFormatTagOrderedList() const
Definition: GUIRichText.h:303
void SetFormatTagFinished(const eC_String &kTag)
Definition: GUIRichText.h:268
FontResource_t m_eFontBoldItalic
font resource: bold italic
Definition: GUIRichText.h:446
void OnNotification()
eC_Value m_vUnorderedListSignWidth
Width of the unordered list sign.
Definition: GUIRichText.h:465
virtual void SetFont(const FontResource_t &eFontID)
Definition: GUIRichText.h:190
eC_TArray< eC_Value > m_kLineWidths
Width of each line of text (required for X-Alignments)
Definition: GUIRichText.h:412
CGUIRichText(const CGUIObject *const pkParentObject, const eC_String *const pkText, const eC_Value &vXPos=eC_FromInt(0), const eC_Value &vYPos=eC_FromInt(0), const eC_Bool &bSingleLine=true)
eC_String m_kTagListItem
Format tag: list item.
Definition: GUIRichText.h:457
eC_Bool IsTextPreformatted()
Definition: GUIRichText.h:339
FontResource_t m_eFontItalic
font resource: italic
Definition: GUIRichText.h:445
virtual void ReadFromStream()
void SplitFragment(CRichTextFragment &FirstTextFragment, CRichTextFragment &SecondTextFragment, eC_Value vMaxWidth, eC_UInt uiCharOffsetFromStart)
CGUIRichText(const CGUIRichText &kTextToBeCopied)
eC_String m_kTagUnderlined
Format tag: underlined.
Definition: GUIRichText.h:451
void PreparePrintForFragment(const CRichTextFragment &Fragment)
virtual void SetTextString(const eC_String &kTextString)
eC_String m_kTagOrderedList
Format tag: ordered list.
Definition: GUIRichText.h:456
eC_Value m_vSpaceWidth
Width of a space to avoid calling RequiredSpace() too often.
Definition: GUIRichText.h:464
void SetFormatTagBold(const eC_String &kTag)
Definition: GUIRichText.h:213
void SetFormatTagUnorderedList(const eC_String &kTag)
Definition: GUIRichText.h:238
void SetFormatTagOrderedList(const eC_String &kTag)
Definition: GUIRichText.h:243
CGUIRichText & operator=(const CGUIRichText &kSource)
const eC_String & GetFormatTagOpening() const
Definition: GUIRichText.h:318
CGUIRichText(const CGUIObject *const pkParentObject, const eC_String &kText, const eC_Value &vXPos=eC_FromInt(0), const eC_Value &vYPos=eC_FromInt(0), const eC_Bool &bSingleLine=true)
const eC_String & GetFormatTagItalic() const
Definition: GUIRichText.h:278
eC_TListDoubleLinked< CRichTextFragment > RichTextFragmentList
A rich text fragment list is a double-linked list of rich text fragments.
Definition: GUIRichText.h:404
FontResource_t m_eFontBold
font resource: bold
Definition: GUIRichText.h:444
void SetFormatTagLineBreak(const eC_String &kTag)
Definition: GUIRichText.h:233
eC_String m_kTagNoBreak
Format tag: no break.
Definition: GUIRichText.h:453
ListType_t
List type.
Definition: GUIRichText.h:348
RichTextFragmentList m_kOriginalRichTextFragments
Original list of all Text-fragments within this text.
Definition: GUIRichText.h:410
eC_String m_kTagColor
Format tag: color.
Definition: GUIRichText.h:452
virtual CGUIRichText * Clone() const
virtual void SetTextColor(const eC_UInt &uiTextColorStandard, const eC_UInt &uiTextColorHighlighted, const eC_UInt &uiTextColorGrayedOut, const eC_UInt &uiTextColorPressed)
virtual void SetRichFonts(const FontResource_t &eFontNormal=DUMMY_FONT, const FontResource_t &eFontBold=DUMMY_FONT, const FontResource_t &eFontItalic=DUMMY_FONT, const FontResource_t &eFontBoldItalic=DUMMY_FONT)
eC_String m_kTagUnorderedList
Format tag: unordered list.
Definition: GUIRichText.h:455
eC_Bool m_bPreformatText
Controls whether PreformatText() is called.
Definition: GUIRichText.h:462
void SetFormatTagUnderlined(const eC_String &kTag)
Definition: GUIRichText.h:223
eC_String m_kTagItalic
Format tag: italic.
Definition: GUIRichText.h:450
CGUIRichText(const CGUIObject *const pkParentObject, const TextResource_t &eTextID, const eC_Value &vXPos=eC_FromInt(0), const eC_Value &vYPos=eC_FromInt(0), const eC_Bool &bSingleLine=true)
virtual void SetTextID(const TextResource_t &eTextID)
RichTextFragmentList m_kRichTextFragments
Definition: GUIRichText.h:408
const eC_String & GetFormatTagFinished() const
Definition: GUIRichText.h:328
const eC_String & GetFormatTagLineBreak() const
Definition: GUIRichText.h:293
eC_String m_kTagFinished
Format tag: finished.
Definition: GUIRichText.h:460
void ParseTextToRich()
void EnablePreformatting(const eC_Bool &bPreformatText)
Definition: GUIRichText.h:334
void SetFormatTagClosing(const eC_String &kTag)
Definition: GUIRichText.h:263
virtual void GetRequiredOrgTextSpace(eC_Value &vTextWidth, eC_Value &vTextHeight)
virtual void WriteToStream(const eC_Bool bWriteTextType=false)
Class for handling a text.
Definition: GUIText.h:103