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
42 namespace 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  *************************************************************************/
78  static const String VertScrollbarName;
79  static const String HorzScrollbarName;
80 
81  /************************************************************************
82  Constructor / Destructor
83  *************************************************************************/
88  FalagardStaticText(const String& type);
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 
154  void setHorizontalScrollbarEnabled(bool setting);
155 
157  float getHorizontalTextExtent() const;
158 
160  float getVerticalTextExtent() const;
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