Crazy Eddie's GUI System  0.8.2
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
WindowRendererSets/Core/Editbox.h
1 /***********************************************************************
2  filename: Editbox.h
3  created: Sat Jun 25 2005
4  author: Paul D Turner <paul@cegui.org.uk>
5 *************************************************************************/
6 /***************************************************************************
7  * Copyright (C) 2004 - 2009 Paul D Turner & The CEGUI Development Team
8  *
9  * Permission is hereby granted, free of charge, to any person obtaining
10  * a copy of this software and associated documentation files (the
11  * "Software"), to deal in the Software without restriction, including
12  * without limitation the rights to use, copy, modify, merge, publish,
13  * distribute, sublicense, and/or sell copies of the Software, and to
14  * permit persons to whom the Software is furnished to do so, subject to
15  * the following conditions:
16  *
17  * The above copyright notice and this permission notice shall be
18  * included in all copies or substantial portions of the Software.
19  *
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
24  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26  * OTHER DEALINGS IN THE SOFTWARE.
27  ***************************************************************************/
28 #ifndef _FalEditbox_h_
29 #define _FalEditbox_h_
30 
31 #include "CEGUI/WindowRendererSets/Core/Module.h"
32 #include "CEGUI/widgets/Editbox.h"
33 
34 #if defined(_MSC_VER)
35 # pragma warning(push)
36 # pragma warning(disable : 4251)
37 #endif
38 
39 // Start of CEGUI namespace section
40 namespace CEGUI
41 {
76 class COREWRSET_API FalagardEditbox : public EditboxWindowRenderer
77 {
78 public:
80  static const String TypeName;
81 
87  static const float DefaultCaretBlinkTimeout;
88 
93  FalagardEditbox(const String& type);
94 
100  void setColourRectToUnselectedTextColour(ColourRect& colour_rect) const;
101 
107  void setColourRectToSelectedTextColour(ColourRect& colour_rect) const;
108 
121  void setColourRectToOptionalPropertyColour(const String& propertyName,
122  ColourRect& colour_rect) const;
123 
125  bool isCaretBlinkEnabled() const;
127  float getCaretBlinkTimeout() const;
129  void setCaretBlinkEnabled(bool enable);
131  void setCaretBlinkTimeout(float seconds);
132 
144  void setTextFormatting(const HorizontalTextFormatting format);
145  HorizontalTextFormatting getTextFormatting() const;
146 
147  void render();
148 
149  // overridden from EditboxWindowRenderer base class.
150  size_t getTextIndexFromPosition(const Vector2f& pt) const;
151  // overridden from WindowRenderer class
152  void update(float elapsed);
153  bool handleFontRenderSizeChange(const Font* const font);
154 
155 protected:
157  void renderBaseImagery(const WidgetLookFeel& wlf) const;
159  void setupVisualString(String& visual) const;
160  size_t getCaretIndex(const String& visual_string) const;
161  float calculateTextOffset(const Rectf& text_area,
162  const float text_extent,
163  const float caret_width,
164  const float extent_to_caret);
165  void renderTextNoBidi(const WidgetLookFeel& wlf,
166  const String& text,
167  const Rectf& text_area,
168  float text_offset);
169  void renderTextBidi(const WidgetLookFeel& wlf,
170  const String& text,
171  const Rectf& text_area,
172  float text_offset);
173  bool editboxIsFocussed() const;
174  bool editboxIsReadOnly() const;
175  void renderCaret(const ImagerySection& imagery,
176  const Rectf& text_area,
177  const float text_offset,
178  const float extent_to_caret) const;
179 
180  bool isUnsupportedFormat(const HorizontalTextFormatting format);
181 
194 };
195 
196 } // End of CEGUI namespace section
197 
198 #if defined(_MSC_VER)
199 # pragma warning(pop)
200 #endif
201 
202 #endif // end of guard _FalEditbox_h_