MythTV master
Text.h
Go to the documentation of this file.
1/* Text.h
2
3 Copyright (C) David C. J. Matthews 2004 dm at prolingua.co.uk
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
18 Or, point your browser to http://www.gnu.org/copyleft/gpl.html
19
20*/
21
22
23#ifndef TEXT_H
24#define TEXT_H
25
26#include "Visible.h"
27#include "BaseActions.h"
28// Dependencies
29#include "Presentable.h"
30#include "Ingredients.h"
31#include "Root.h"
32#include "BaseClasses.h"
33
34class MHEngine;
35class MHTextDisplay;
36
37class MHText : public MHVisible
38{
39 public:
40 MHText() = default;
41 MHText(const MHText &ref);
42 ~MHText() override;
43 const char *ClassName() override // MHRoot
44 { return "Text"; }
45 void Initialise(MHParseNode *p, MHEngine *engine) override; // MHVisible
46 void PrintMe(FILE *fd, int nTabs) const override; // MHVisible
47
48 void Preparation(MHEngine *engine) override; // MHVisible
49 void ContentPreparation(MHEngine *engine) override; // MHIngredient
50 void ContentArrived(const unsigned char *data, int length, MHEngine *engine) override; // MHIngredient
51
52 // Actions.
53 // Extract the text from an object. This can be used to load content from a file.
54 void GetTextData(MHRoot *pDestination, MHEngine */*engine*/) override // MHRoot
55 { pDestination->SetVariableValue(m_content); }
56 MHIngredient *Clone(MHEngine */*engine*/) override // MHRoot
57 { return new MHText(*this); } // Create a clone of this ingredient.
58 void SetBackgroundColour(const MHColour &colour, MHEngine *engine) override; // MHRoot
59 void SetTextColour(const MHColour &colour, MHEngine *engine) override; // MHRoot
60 void SetFontAttributes(const MHOctetString &fontAttrs, MHEngine *engine) override; // MHRoot
61
62 // Enumerated type lookup functions for the text parser.
63 static int GetJustification(const QString& str);
64 static int GetLineOrientation(const QString& str);
65 static int GetStartCorner(const QString& str);
66
67 // Display function.
68 void Display(MHEngine *engine) override; // MHVisible
69 QRegion GetOpaqueArea() override; // MHVisible
70
71 protected:
72 void Redraw();
73
77 int m_nCharSet {-1};
78
79 enum Justification : std::uint8_t { Start = 1, End, Centre, Justified };
80 enum LineOrientation : std::uint8_t { Vertical = 1, Horizontal };
81 enum StartCorner : std::uint8_t { UpperLeft = 1, UpperRight, LowerLeft, LowerRight };
86 bool m_fTextWrap {false};
87 // Internal attributes. The font colour, background colour and font attributes are
88 // internal attributes in UK MHEG.
89// MHFontBody m_font;
92 MHOctetString m_content; // The content as an octet string
93
94 MHTextDisplay *m_pDisplay {nullptr}; // Pointer to the display object.
95 bool m_fNeedsRedraw {false};
96
97 // Create the Unicode content from the character input.
98 void CreateContent(const unsigned char *p, int s, MHEngine *engine);
99};
100
101class MHHyperText : public MHText, public MHInteractible
102{
103 public:
105 const char *ClassName() override // MHText
106 { return "HyperText"; }
107 ~MHHyperText() override = default;
108 void Initialise(MHParseNode *p, MHEngine *engine) override; // MHText
109 void PrintMe(FILE *fd, int nTabs) const override; // MHText
110
111 // Implement the actions in the main inheritance line.
112 void SetInteractionStatus(bool newStatus, MHEngine *engine) override // MHRoot
113 { InteractSetInteractionStatus(newStatus, engine); }
114 bool GetInteractionStatus(void) override // MHRoot
115 { return InteractGetInteractionStatus(); }
116 void SetHighlightStatus(bool newStatus, MHEngine *engine) override // MHRoot
117 { InteractSetHighlightStatus(newStatus, engine); }
118 bool GetHighlightStatus(void) override // MHRoot
119 { return InteractGetHighlightStatus(); }
120 void Deactivation(MHEngine */*engine*/) override // MHVisible
122};
123
124// Get Text Data - get the data out of a text object.
126{
127 public:
128 MHGetTextData(): MHActionObjectRef(":GetTextData") {}
129 void CallAction(MHEngine *engine, MHRoot *pTarget, MHRoot *pArg) override // MHActionObjectRef
130 { pTarget->GetTextData(pArg, engine); }
131};
132
133// Actions added in UK MHEG profile.
135 public:
136 MHSetBackgroundColour(): MHSetColour(":SetBackgroundColour") { }
137 protected:
138 void SetColour(const MHColour &colour, MHEngine *engine) override // MHSetColour
139 { Target(engine)->SetBackgroundColour(colour, engine); }
140};
141
143 public:
144 MHSetTextColour(): MHSetColour(":SetTextColour") { }
145 protected:
146 void SetColour(const MHColour &colour, MHEngine *engine) override // MHSetColour
147 { Target(engine)->SetTextColour(colour, engine); }
148};
149
151{
152 public:
153 MHSetFontAttributes(): MHElemAction(":SetFontAttributes") {}
154 void Initialise(MHParseNode *p, MHEngine *engine) override; // MHElemAction
155 void Perform(MHEngine *engine) override; // MHElemAction
156 protected:
157 void PrintArgs(FILE *fd, int /*nTabs*/) const override // MHElemAction
158 { m_fontAttrs.PrintMe(fd, 0); }
159 MHGenericOctetString m_fontAttrs; // New font attributes.
160};
161
162
163
164#endif
MHRoot * Target(MHEngine *engine)
Definition: BaseActions.cpp:46
void PrintMe(FILE *fd, int nTabs) const
void CallAction(MHEngine *engine, MHRoot *pTarget, MHRoot *pArg) override
Definition: Text.h:129
MHGetTextData()
Definition: Text.h:128
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Text.cpp:885
void Deactivation(MHEngine *) override
Definition: Text.h:120
~MHHyperText() override=default
MHHyperText()
Definition: Text.h:104
void SetHighlightStatus(bool newStatus, MHEngine *engine) override
Definition: Text.h:116
bool GetInteractionStatus(void) override
Definition: Text.h:114
void SetInteractionStatus(bool newStatus, MHEngine *engine) override
Definition: Text.h:112
void PrintMe(FILE *fd, int nTabs) const override
Definition: Text.cpp:892
bool GetHighlightStatus(void) override
Definition: Text.h:118
const char * ClassName() override
Definition: Text.h:105
bool InteractGetInteractionStatus(void) const
Definition: Visible.h:155
void InteractSetInteractionStatus(bool newStatus, MHEngine *engine)
Definition: Visible.cpp:558
void InteractSetHighlightStatus(bool newStatus, MHEngine *engine)
Definition: Visible.cpp:579
bool InteractGetHighlightStatus(void) const
Definition: Visible.h:157
void InteractDeactivation(void)
Definition: Visible.h:160
Definition: Root.h:45
virtual void SetTextColour(const MHColour &, MHEngine *)
Definition: Root.h:117
virtual void SetBackgroundColour(const MHColour &, MHEngine *)
Definition: Root.h:115
void SetColour(const MHColour &colour, MHEngine *engine) override
Definition: Text.h:138
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Text.cpp:904
MHGenericOctetString m_fontAttrs
Definition: Text.h:159
void PrintArgs(FILE *fd, int) const override
Definition: Text.h:157
void Perform(MHEngine *engine) override
Definition: Text.cpp:910
MHSetTextColour()
Definition: Text.h:144
void SetColour(const MHColour &colour, MHEngine *engine) override
Definition: Text.h:146
Definition: Text.h:38
MHColour m_bgColour
Definition: Text.h:90
LineOrientation
Definition: Text.h:80
@ Horizontal
Definition: Text.h:80
@ Vertical
Definition: Text.h:80
static int GetStartCorner(const QString &str)
Definition: Text.cpp:199
void SetTextColour(const MHColour &colour, MHEngine *engine) override
Definition: Text.cpp:374
Justification m_horizJ
Definition: Text.h:82
MHColour m_originalTextColour
Definition: Text.h:76
LineOrientation m_lineOrientation
Definition: Text.h:84
bool m_fNeedsRedraw
Definition: Text.h:95
MHColour m_originalBgColour
Definition: Text.h:76
void Redraw()
Definition: Text.cpp:545
MHText()=default
static int GetLineOrientation(const QString &str)
Definition: Text.cpp:178
~MHText() override
Definition: Text.cpp:60
MHTextDisplay * m_pDisplay
Definition: Text.h:94
MHOctetString m_fontAttrs
Definition: Text.h:91
MHIngredient * Clone(MHEngine *) override
Definition: Text.h:56
void Display(MHEngine *engine) override
Definition: Text.cpp:855
void SetBackgroundColour(const MHColour &colour, MHEngine *engine) override
Definition: Text.cpp:381
StartCorner
Definition: Text.h:81
@ LowerRight
Definition: Text.h:81
@ LowerLeft
Definition: Text.h:81
@ UpperLeft
Definition: Text.h:81
@ UpperRight
Definition: Text.h:81
MHColour m_textColour
Definition: Text.h:90
Justification m_vertJ
Definition: Text.h:83
static int GetJustification(const QString &str)
Definition: Text.cpp:159
bool m_fTextWrap
Definition: Text.h:86
MHOctetString m_content
Definition: Text.h:92
MHOctetString m_originalFontAttrs
Definition: Text.h:75
void Preparation(MHEngine *engine) override
Definition: Text.cpp:290
int m_nCharSet
Definition: Text.h:77
StartCorner m_startCorner
Definition: Text.h:85
void GetTextData(MHRoot *pDestination, MHEngine *) override
Definition: Text.h:54
MHFontBody m_origFont
Definition: Text.h:74
const char * ClassName() override
Definition: Text.h:43
void CreateContent(const unsigned char *p, int s, MHEngine *engine)
Definition: Text.cpp:366
void PrintMe(FILE *fd, int nTabs) const override
Definition: Text.cpp:212
void ContentPreparation(MHEngine *engine) override
Definition: Text.cpp:339
void ContentArrived(const unsigned char *data, int length, MHEngine *engine) override
Definition: Text.cpp:355
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Text.cpp:66
Justification
Definition: Text.h:79
@ Centre
Definition: Text.h:79
@ Justified
Definition: Text.h:79
@ Start
Definition: Text.h:79
@ End
Definition: Text.h:79
QRegion GetOpaqueArea() override
Definition: Text.cpp:875
void SetFontAttributes(const MHOctetString &fontAttrs, MHEngine *engine) override
Definition: Text.cpp:389
int FILE
Definition: mythburn.py:138