Crazy Eddie's GUI System 0.8.7
StaticText.h
1/***********************************************************************
2 created: Tue Jul 5 2005
3 author: Paul D Turner <paul@cegui.org.uk>
4*************************************************************************/
5/***************************************************************************
6 * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining
9 * a copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be
17 * included in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25 * OTHER DEALINGS IN THE SOFTWARE.
26 ***************************************************************************/
27#ifndef _FalStaticText_h_
28#define _FalStaticText_h_
29
30#include "CEGUI/WindowRendererSets/Core/Module.h"
31#include "CEGUI/WindowRendererSets/Core/Static.h"
32#include "CEGUI/falagard/Enums.h"
33#include "CEGUI/ColourRect.h"
34#include <vector>
35
36#if defined(_MSC_VER)
37# pragma warning(push)
38# pragma warning(disable : 4251)
39#endif
40
41// Start of CEGUI namespace section
42namespace CEGUI
43{
70 class COREWRSET_API FalagardStaticText : public FalagardStatic
71 {
72 public:
73 static const String TypeName;
74
75 /*************************************************************************
76 Child Widget name constants
77 *************************************************************************/
80
81 /************************************************************************
82 Constructor / Destructor
83 *************************************************************************/
89
92
93 /************************************************************************
94 Scrolled text implementation
95 *************************************************************************/
100 ColourRect getTextColours(void) const {return d_textCols;}
101
106 HorizontalTextFormatting getHorizontalFormatting(void) const {return d_horzFormatting;}
107
112 VerticalTextFormatting getVerticalFormatting(void) const {return d_vertFormatting;}
113
118 void setTextColours(const ColourRect& colours);
119
125
131
136 bool isVerticalScrollbarEnabled(void) const {return d_enableVertScrollbar;}
137
142 bool isHorizontalScrollbarEnabled(void) const {return d_enableHorzScrollbar;}
143
148 void setVerticalScrollbarEnabled(bool setting);
149
155
158
161
162 // overridden from base class
163 bool handleFontRenderSizeChange(const Font* const font);
164 void render(void);
165
180
194
201
208
224 void setHorizontalScrollPosition(float position);
225
240 void setVerticalScrollPosition(float position);
241
248
255
265
266 protected:
275 void updateFormatting() const;
276
278 void updateFormatting(const Sizef&) const;
279
280 // overridden from FalagardStatic base class
283
284 // text field with scrollbars methods
285 void renderScrolledText(void);
286
287 void configureScrollbars() const;
288
291
292 Scrollbar* getVertScrollbar() const;
293 Scrollbar* getHorzScrollbar() const;
294 Rectf getTextRenderArea() const;
295 Sizef getDocumentSize() const;
296
298 Sizef getDocumentSize(const Rectf& renderArea) const;
299
300 void setupStringFormatter() const;
301
302 // overridden event handlers
303 bool onTextChanged(const EventArgs& e);
304 bool onSized(const EventArgs& e);
305 bool onFontChanged(const EventArgs& e);
306 bool onMouseWheel(const EventArgs& e);
307
308 // event subscribers
309 bool handleScrollbarChange(const EventArgs& e);
310
311 // implementation data
319
322
323 typedef std::vector<Event::Connection> ConnectionList;
324 ConnectionList d_connections;
325
331 mutable bool d_formatValid;
332
333 private:
334 Scrollbar* getVertScrollbarWithoutUpdate() const;
335 Scrollbar* getHorzScrollbarWithoutUpdate() const;
336 Rectf getTextRenderAreaWithoutUpdate() const;
337 Sizef getDocumentSizeWithoutUpdate() const;
338 };
339
340} // End of CEGUI namespace section
341
342#if defined(_MSC_VER)
343# pragma warning(pop)
344#endif
345
346#endif // end of guard _FalStaticText_h_
Class that holds details of colours for the four corners of a rectangle.
Definition: ColourRect.h:45
Base class used as the argument to all subscribers Event object.
Definition: EventArgs.h:51
StaticText class for the FalagardBase module.
Definition: StaticText.h:71
void onLookNFeelAssigned()
Handler called when a Look'N'Feel is assigned to our window.
void updateFormatting() const
Update string formatting and scrollbars visibility.
float getHorizontalScrollPosition() const
Get the current position of the horizontal scrollbar within the text.
void invalidateFormatting()
Invalidate string formatting and scrollbars visibility.
VerticalTextFormatting d_vertFormatting
Vertical formatting to be applied to the text.
Definition: StaticText.h:315
float getVerticalScrollPosition() const
Get the current position of the vertical scrollbar within the text.
void setVerticalFormatting(VerticalTextFormatting v_fmt)
Set the vertical formatting required for the text.
void onLookNFeelUnassigned()
Handler called when a Look'N'Feel is removed/unassigned from our window.
ColourRect getTextColours(void) const
Return a ColourRect object containing the colours used when rendering this widget.
Definition: StaticText.h:100
static const String HorzScrollbarName
Widget name for the horizontal scrollbar component.
Definition: StaticText.h:79
~FalagardStaticText()
Destructor.
float getUnitIntervalHorizontalScrollPosition() const
return the current horizontal scrollbar position as a value in the interval [0, 1].
void setVerticalScrollbarEnabled(bool setting)
Set whether the vertical scroll bar will be shown if needed.
bool isVerticalScrollbarEnabled(void) const
Return whether the vertical scroll bar is set to be shown if needed.
Definition: StaticText.h:136
void setUnitIntervalVerticalScrollPosition(float position)
set the current vertical scrollbar position as a value in the interval [0, 1].
FalagardStaticText(const String &type)
Constructor.
void setUnitIntervalHorizontalScrollPosition(float position)
set the current horizontal scrollbar position as a value in the interval [0, 1].
ColourRect d_textCols
Colours used when rendering the text.
Definition: StaticText.h:316
void setHorizontalScrollPosition(float position)
Set the current position of the horizontal scrollbar within the text.
static const String VertScrollbarName
Widget name for the vertical scrollbar component.
Definition: StaticText.h:78
bool handleFontRenderSizeChange(const Font *const font)
Perform any updates needed because the given font's render size has changed.
bool d_enableVertScrollbar
true if vertical scroll bar is enabled.
Definition: StaticText.h:317
float getUnitIntervalVerticalScrollPosition() const
return the current vertical scrollbar position as a value in the interval [0, 1].
VerticalTextFormatting getVerticalFormatting(void) const
Return the current vertical formatting option set for this widget.
Definition: StaticText.h:112
Sizef getDocumentSize(const Rectf &renderArea) const
void render(void)
Populate render cache.
bool isHorizontalScrollbarEnabled(void) const
Return whether the horizontal scroll bar is set to be shown if needed.
Definition: StaticText.h:142
FormattedRenderedString * d_formattedRenderedString
Class that renders RenderedString with some formatting.
Definition: StaticText.h:321
float getVerticalTextExtent() const
return the current vertical formatted text extent in pixels.
void updateFormatting(const Sizef &) const
HorizontalTextFormatting getHorizontalFormatting(void) const
Return the current horizontal formatting option set for this widget.
Definition: StaticText.h:106
void setVerticalScrollPosition(float position)
Set the current position of the vertical scrollbar within the text.
void setHorizontalFormatting(HorizontalTextFormatting h_fmt)
Set the horizontal formatting required for the text.
void setHorizontalScrollbarEnabled(bool setting)
Set whether the horizontal scroll bar will be shown if needed.
bool d_formatValid
True when string formatting and scrollbars visibility are up to date.
Definition: StaticText.h:331
float getHorizontalTextExtent() const
return the current horizontal formatted text extent in pixels.
static const String TypeName
type name for this widget.
Definition: StaticText.h:73
void setTextColours(const ColourRect &colours)
Sets the colours to be applied when rendering the text.
bool d_enableHorzScrollbar
true if horizontal scroll bar is enabled.
Definition: StaticText.h:318
HorizontalTextFormatting d_horzFormatting
Horizontal formatting to be applied to the text.
Definition: StaticText.h:313
Static class for the FalagardBase module.
Definition: Static.h:57
Class that encapsulates a typeface.
Definition: Font.h:62
Root of a class hierarchy that wrap RenderedString objects and render them with additional formatting...
Definition: FormattedRenderedString.h:42
Base scroll bar class.
Definition: widgets/Scrollbar.h:90
String class used within the GUI system.
Definition: String.h:64
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1
VerticalTextFormatting
Enumeration of possible values to indicate the vertical formatting to be used for a text component.
Definition: Enums.h:85
HorizontalTextFormatting
Enumeration of possible values to indicate the horizontal formatting to be used for a text component.
Definition: Enums.h:96