Crazy Eddie's GUI System 0.8.7
Loading...
Searching...
No Matches
WindowRendererSets/Core/Editbox.h
1/***********************************************************************
2 created: Sat Jun 25 2005
3 author: Paul D Turner <paul@cegui.org.uk>
4*************************************************************************/
5/***************************************************************************
6 * Copyright (C) 2004 - 2009 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 _FalEditbox_h_
28#define _FalEditbox_h_
29
30#include "CEGUI/WindowRendererSets/Core/Module.h"
31#include "CEGUI/widgets/Editbox.h"
32
33#if defined(_MSC_VER)
34# pragma warning(push)
35# pragma warning(disable : 4251)
36#endif
37
38// Start of CEGUI namespace section
39namespace CEGUI
40{
75class COREWRSET_API FalagardEditbox : public EditboxWindowRenderer
76{
77public:
79 static const String TypeName;
80
90 static const float DefaultCaretBlinkTimeout;
91
96 FalagardEditbox(const String& type);
97
104
111
125 ColourRect& colour_rect) const;
126
130 float getCaretBlinkTimeout() const;
132 void setCaretBlinkEnabled(bool enable);
135
148 HorizontalTextFormatting getTextFormatting() const;
149
150 void render();
151
152 // overridden from EditboxWindowRenderer base class.
154 // overridden from WindowRenderer class
155 void update(float elapsed);
156 bool handleFontRenderSizeChange(const Font* const font);
157
158protected:
163 size_t getCaretIndex(const String& visual_text) const;
164
171 const float caret_width) const;
172
173 float calculateTextOffset(const Rectf& text_area,
174 const float text_extent,
175 const float caret_width,
176 const float extent_to_caret);
177
183 float textOffsetVisual(const Rectf& text_area, const float text_extent) const;
184
185 void renderTextNoBidi(const WidgetLookFeel& wlf,
186 const String& text,
187 const Rectf& text_area,
188 float text_offset);
189 void renderTextBidi(const WidgetLookFeel& wlf,
190 const String& text,
191 const Rectf& text_area,
192 float text_offset);
193 bool editboxIsFocussed() const;
194 bool editboxIsReadOnly() const;
195 void renderCaret(const ImagerySection& imagery,
196 const Rectf& text_area,
197 const float text_offset,
198 const float extent_to_caret) const;
199
200 bool isUnsupportedFormat(const HorizontalTextFormatting format);
201
214};
215
216} // End of CEGUI namespace section
217
218#if defined(_MSC_VER)
219# pragma warning(pop)
220#endif
221
222#endif // end of guard _FalEditbox_h_
Class that holds details of colours for the four corners of a rectangle.
Definition ColourRect.h:45
Base class for the EditboxWindowRenderer class.
Definition widgets/Editbox.h:46
Editbox class for the FalagardBase module.
Definition WindowRendererSets/Core/Editbox.h:76
static const String ActiveSelectionColourPropertyName
Name of the optional property to access to obtain active selection rendering colour.
Definition WindowRendererSets/Core/Editbox.h:86
bool d_blinkCaret
true if the caret imagery should blink.
Definition WindowRendererSets/Core/Editbox.h:205
HorizontalTextFormatting d_textFormatting
horizontal formatting. Only supports left, right, and centred.
Definition WindowRendererSets/Core/Editbox.h:213
void render()
Populate render cache.
void setCaretBlinkEnabled(bool enable)
set whether the blinking caret is enabled.
static const String TypeName
type name for this widget.
Definition WindowRendererSets/Core/Editbox.h:79
float getCaretBlinkTimeout() const
return the caret blink timeout period (only used if blink is enabled).
void setColourRectToUnselectedTextColour(ColourRect &colour_rect) const
Set the given ColourRect to the colour to be used for rendering Editbox text oustside of the selected...
static const String SelectedTextColourPropertyName
Name of the optional property to access for the selected text colour.
Definition WindowRendererSets/Core/Editbox.h:84
FalagardEditbox(const String &type)
Constructor.
void setTextFormatting(const HorizontalTextFormatting format)
Sets the horizontal text formatting to be used from now onwards.
static const float DefaultCaretBlinkTimeout
The default timeout (in seconds) used when blinking the caret.
Definition WindowRendererSets/Core/Editbox.h:90
static const String InactiveSelectionColourPropertyName
Name of the optional property to access to obtain inactive selection rendering colour.
Definition WindowRendererSets/Core/Editbox.h:88
float d_caretBlinkTimeout
time-out in seconds used for blinking the caret.
Definition WindowRendererSets/Core/Editbox.h:207
float d_caretBlinkElapsed
current time elapsed since last caret blink state change.
Definition WindowRendererSets/Core/Editbox.h:209
void setCaretBlinkTimeout(float seconds)
set the caret blink timeout period (only used if blink is enabled).
float extentToCarretLogical(const float extent_to_caret_visual, const float text_extent, const float caret_width) const
"Logical" here means that if the text is e.g. right aligned, then it's measured from the right end of...
float textOffsetVisual(const Rectf &text_area, const float text_extent) const
"Visual" here means that it's always measured from the right end of the text area rect,...
bool handleFontRenderSizeChange(const Font *const font)
Perform any updates needed because the given font's render size has changed.
bool d_showCaret
true if caret should be shown.
Definition WindowRendererSets/Core/Editbox.h:211
void setupVisualString(String &visual) const
helper to set 'visual' to the string we will render (part of)
void setColourRectToOptionalPropertyColour(const String &propertyName, ColourRect &colour_rect) const
Set the given ColourRect to the colour(s) fetched from the named property if it exists,...
void renderBaseImagery(const WidgetLookFeel &wlf) const
helper to draw the base imagery (container and what have you)
static const String UnselectedTextColourPropertyName
Name of the optional property to access for the unselected text colour.
Definition WindowRendererSets/Core/Editbox.h:82
void setColourRectToSelectedTextColour(ColourRect &colour_rect) const
Set the given ColourRect to the colour to be used for rendering Editbox text falling within the selec...
bool isCaretBlinkEnabled() const
return whether the blinking caret is enabled.
size_t getTextIndexFromPosition(const Vector2f &pt) const
Return the text code point index that is rendered closest to screen position pt.
void update(float elapsed)
perform any time based updates for this WindowRenderer.
float d_lastTextOffset
x rendering offset used last time we drew the widget.
Definition WindowRendererSets/Core/Editbox.h:203
Class that encapsulates a typeface.
Definition Font.h:62
Class that encapsulates a re-usable collection of imagery specifications.
Definition ImagerySection.h:49
String class used within the GUI system.
Definition String.h:64
base class for properties able to do native set/get
Definition TypedProperty.h:50
Class that encapsulates Look N' Feel information for a widget.
Definition WidgetLookFeel.h:56
Main namespace for Crazy Eddie's GUI Library.
Definition arch_overview.dox:1
HorizontalTextFormatting
Enumeration of possible values to indicate the horizontal formatting to be used for a text component.
Definition Enums.h:96