59 class SKYLICHT_API CGUIText :
public CGUIElement
63 typedef std::vector<int> ArrayInt;
64 typedef std::vector<SModuleOffset*> ArrayModuleOffset;
71 int m_charSpacePadding;
76 std::string m_defaultText;
80 ArrayInt m_textFormat;
82 bool m_enableTextFormat;
86 std::wstring m_textwId;
88 EGUIVerticalAlign TextVertical;
89 EGUIHorizontalAlign TextHorizontal;
97 SColor m_colorFormat[MAX_FORMATCOLOR];
99 bool m_updateTextRender;
101 std::vector<ArrayModuleOffset> m_arrayCharRender;
102 std::vector<ArrayInt> m_arrayCharFormat;
103 std::vector<ArrayInt> m_arrayCharId;
105 std::string m_fontSource;
106 std::string m_fontGUID;
119 float m_caretBlinkSpeed;
124 CGUIText(CCanvas* canvas, CGUIElement* parent,
IFont* font);
125 CGUIText(CCanvas* canvas, CGUIElement* parent,
const core::rectf& rect,
IFont* font);
127 virtual void renderText(ArrayModuleOffset&
string, ArrayInt& format,
int posX,
int posY,
int line);
134 virtual void render(
CCamera* camera);
136 void setTextAlign(EGUIHorizontalAlign h, EGUIVerticalAlign v)
150 void setFormatText(
const char* formatText);
154 void setColorFormat(
int id,
const SColor& c)
156 if (
id < MAX_FORMATCOLOR)
157 m_colorFormat[id] = c;
160 void setText(
const char* text);
161 void setTextStrim(
const char* text);
162 void setText(
const wchar_t* text);
163 void setTextStrim(
const wchar_t* text);
165 void setTextId(
const char* textId);
166 void setTextId(
const wchar_t* textId);
168 int getStringWidth(
const char* text);
169 int getStringWidth(
const wchar_t* text);
170 int getCharWidth(
wchar_t c);
172 const char* getText()
174 return m_text.c_str();
177 const char* getDefaultText()
179 return m_defaultText.c_str();
182 void setDefaultText(
const char* text);
184 void setDefaultText(
const wchar_t* text);
186 const wchar_t* getTextW()
188 return m_textw.c_str();
191 const char* getTextId()
193 return m_textId.c_str();
196 const wchar_t* getTextwId()
198 return m_textwId.c_str();
201 inline int getTextLength()
203 return (
int)m_textw.size();
206 inline bool isStrim()
211 inline void setEnableTextFormnat(
bool b)
213 m_enableTextFormat = b;
216 inline bool isEnableTextFormat()
218 return m_enableTextFormat;
221 void setPassword(
bool b);
223 inline bool isPassword()
228 inline void setCharPadding(
int charPadding)
230 m_charPadding = charPadding;
231 m_charSpacePadding = charPadding;
234 inline void setLinePadding(
int linePadding)
236 m_linePadding = linePadding;
239 inline void setMultiLine(
bool b)
244 inline void setCenterRotate(
bool b)
249 void setFontSource(
const char* fontSource);
253 void setCustomFont(
IFont* font);
255 inline IFont* getCustomFont()
265 const std::string& getFontSource()
270 const std::string& getFontId()
275 DECLARE_GETTYPENAME(CGUIText)
281 void getClosestCharacter(
float posX,
float posY,
int& line,
int& character);
284 inline void showCaret(
bool b)
289 inline void setCaret(
int line,
int character)
291 m_caret.set(character, line);
295 void setCaret(
int charPos);
297 inline void getCaretPosition(
int& line,
int& character)
299 character = m_caret.X;
303 inline int getNumLine()
305 return (
int)m_arrayCharRender.size();
308 int getNumCharacter(
int line);
310 bool getWordAtPosition(
int line,
int charPosition,
int& from,
int& to);
312 bool isCharacter(
wchar_t c);
318 void insert(
wchar_t c);
326 void updateSetCaret();
329 void updateSplitText();
331 void splitText(std::vector<ArrayModuleOffset>& split, std::vector<ArrayInt>& format, std::vector<ArrayInt>&
id,
int width);
333 void getClosestCharacter(
float posX,
int x,
int y,
int line,
const core::matrix4& world,
int& character);
335 wchar_t getDisplayCharacter(
wchar_t c)
const;
337 void initFont(
IFont* font);
339 IFont* getCurrentFont();