00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _FalStaticText_h_
00029 #define _FalStaticText_h_
00030
00031 #include "FalModule.h"
00032 #include "FalStatic.h"
00033 #include "FalStaticTextProperties.h"
00034 #include "../../falagard/CEGUIFalEnums.h"
00035 #include "../../CEGUIColourRect.h"
00036 #include <vector>
00037
00038 #if defined(_MSC_VER)
00039 # pragma warning(push)
00040 # pragma warning(disable : 4251)
00041 #endif
00042
00043
00044 namespace CEGUI
00045 {
00072 class FALAGARDBASE_API FalagardStaticText : public FalagardStatic
00073 {
00074 public:
00075 static const utf8 TypeName[];
00076
00077
00078
00079
00080 static const String VertScrollbarNameSuffix;
00081 static const String HorzScrollbarNameSuffix;
00082
00083
00084
00085
00090 FalagardStaticText(const String& type);
00091
00093 ~FalagardStaticText();
00094
00095
00096
00097
00102 ColourRect getTextColours(void) const {return d_textCols;}
00103
00108 HorizontalTextFormatting getHorizontalFormatting(void) const {return d_horzFormatting;}
00109
00114 VerticalTextFormatting getVerticalFormatting(void) const {return d_vertFormatting;}
00115
00120 void setTextColours(const ColourRect& colours);
00121
00126 void setVerticalFormatting(VerticalTextFormatting v_fmt);
00127
00132 void setHorizontalFormatting(HorizontalTextFormatting h_fmt);
00133
00138 bool isVerticalScrollbarEnabled(void) const {return d_enableVertScrollbar;}
00139
00144 bool isHorizontalScrollbarEnabled(void) const {return d_enableHorzScrollbar;}
00145
00150 void setVerticalScrollbarEnabled(bool setting);
00151
00156 void setHorizontalScrollbarEnabled(bool setting);
00157
00159 float getHorizontalTextExtent() const;
00160
00162 float getVerticalTextExtent() const;
00163
00164 void render(void);
00165
00166 protected:
00168 void updateFormatting() const;
00170 void updateFormatting(const Size& sz) const;
00171
00172
00173 void onLookNFeelAssigned();
00174 void onLookNFeelUnassigned();
00175
00176
00177 void renderScrolledText(void);
00178 void configureScrollbars(void);
00179 Scrollbar* getVertScrollbar(void) const;
00180 Scrollbar* getHorzScrollbar(void) const;
00181 Rect getTextRenderArea(void) const;
00182 Size getDocumentSize(const Rect& renderArea) const;
00183 void setupStringFormatter() const;
00184
00185
00186 bool onTextChanged(const EventArgs& e);
00187 bool onSized(const EventArgs& e);
00188 bool onFontChanged(const EventArgs& e);
00189 bool onMouseWheel(const EventArgs& e);
00190
00191
00192 bool handleScrollbarChange(const EventArgs& e);
00193
00194
00195 static FalagardStaticTextProperties::TextColours d_textColoursProperty;
00196 static FalagardStaticTextProperties::VertFormatting d_vertFormattingProperty;
00197 static FalagardStaticTextProperties::HorzFormatting d_horzFormattingProperty;
00198 static FalagardStaticTextProperties::VertScrollbar d_vertScrollbarProperty;
00199 static FalagardStaticTextProperties::HorzScrollbar d_horzScrollbarProperty;
00200 static FalagardStaticTextProperties::HorzExtent d_horzExtentProperty;
00201 static FalagardStaticTextProperties::VertExtent d_vertExtentProperty;
00202
00203
00205 HorizontalTextFormatting d_horzFormatting;
00207 VerticalTextFormatting d_vertFormatting;
00208 ColourRect d_textCols;
00209 bool d_enableVertScrollbar;
00210 bool d_enableHorzScrollbar;
00211
00213 mutable FormattedRenderedString* d_formattedRenderedString;
00214
00215 typedef std::vector<Event::Connection> ConnectionList;
00216 ConnectionList d_connections;
00217
00219 mutable bool d_formatValid;
00220 };
00221
00222 }
00223
00224 #if defined(_MSC_VER)
00225 # pragma warning(pop)
00226 #endif
00227
00228 #endif // end of guard _FalStaticText_h_