5 #ifndef __C_GUI_EDIT_BOX_H_INCLUDED__
6 #define __C_GUI_EDIT_BOX_H_INCLUDED__
8 #include "IrrCompileConfig.h"
9 #include "IGUIEditBox.h"
11 #include "IOSOperator.h"
12 #include "utils/leak_check.hpp"
14 #include "GlyphLayout.h"
20 #if !defined(SERVER_ONLY) && defined(_IRR_COMPILE_WITH_SDL_DEVICE_)
21 #include "SDL_events.h"
29 enum TextBoxType: int;
39 CGUIEditBox(
const wchar_t* text,
bool border, IGUIEnvironment* environment,
40 IGUIElement* parent, s32
id,
const core::rect<s32>& rectangle);
46 virtual void setOverrideFont(IGUIFont* font=0);
49 virtual void setOverrideColor(video::SColor color);
52 virtual video::SColor getOverrideColor()
const;
56 virtual void enableOverrideColor(
bool enable);
60 virtual bool isOverrideColorEnabled(
void)
const;
63 virtual void setDrawBorder(
bool border);
83 virtual void setAutoScroll(
bool enable);
87 virtual bool isAutoScrollEnabled()
const;
91 virtual core::dimension2du getTextDimension();
94 virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical);
97 virtual bool OnEvent(
const SEvent& event);
103 virtual void setText(
const core::stringw& text);
108 virtual void setMax(u32 max);
111 virtual u32 getMax()
const;
117 virtual void setPasswordBox(
bool passwordBox,
wchar_t passwordChar = L
'*');
120 virtual bool isPasswordBox()
const;
123 virtual void updateAbsolutePosition();
126 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options)
const;
129 virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options);
131 virtual irr::gui::IGUIFont* getOverrideFont()
const {
return NULL; }
132 virtual irr::gui::IGUIFont* getActiveFont()
const {
return NULL; }
133 virtual void setDrawBackground(
bool) { }
135 void fromAndroidEditText(
const std::u32string& text,
int start,
int end,
136 int composing_start,
int composing_end);
137 void openScreenKeyboard();
138 s32 getCursorPosInBox()
const {
return m_cursor_pos; }
139 s32 getTextCount()
const {
return (s32)m_edit_text.size(); }
140 void setTextBoxType(GUIEngine::TextBoxType t) { m_type = t; }
141 virtual void setComposingText(
const std::u32string& ct) { m_composing_text = ct; }
142 virtual void clearComposingText() { m_composing_text.clear(); }
143 virtual const core::position2di& getICPos()
const {
return m_ic_pos; }
144 void sendGuiEvent(EGUI_EVENT_TYPE type);
147 void setTextRect(s32 line);
149 virtual void inputChar(char32_t c);
151 void calculateScrollPos();
154 void setTextMarkers(s32 begin, s32 end);
155 void updateCursorDistance();
156 bool processKey(
const SEvent& event);
157 bool processMouse(
const SEvent& event);
158 s32 getCursorPos(s32 x, s32 y);
159 void updateGlyphLayouts();
163 bool OverrideColorEnabled;
167 GUIEngine::TextBoxType m_type;
169 video::SColor OverrideColor;
170 gui::IGUIFont *OverrideFont, *LastBreakFont;
171 IOSOperator* Operator;
173 uint64_t m_force_show_cursor_time;
176 s32 m_cursor_distance;
179 bool AutoScroll, PasswordBox;
180 char32_t PasswordChar;
181 EGUI_ALIGNMENT HAlign, VAlign;
183 core::rect<s32> CurrentTextRect, FrameRect;
185 s32 m_composing_start;
190 std::u32string m_edit_text;
192 std::u32string m_composing_text;
193 std::vector<GlyphLayout> m_glyph_layouts;
195 std::vector<wchar_t> m_surrogate_chars;
197 core::position2di m_ic_pos;
198 void correctCursor(s32& cursor_pos,
bool left);
199 void updateSurrogatePairText();
Definition: CGUIEditBox.hpp:33
virtual bool isMultiLineEnabled() const
Checks if multi line editing is enabled.
Definition: CGUIEditBox.hpp:79
virtual void setWordWrap(bool enable)
Enables or disables word wrap for using the edit box as multiline text editor.
Definition: CGUIEditBox.hpp:66
virtual bool isWordWrapEnabled() const
Checks if word wrap is enabled.
Definition: CGUIEditBox.hpp:70
virtual void setMultiLine(bool enable)
Enables or disables newlines.
Definition: CGUIEditBox.hpp:75
Contains all GUI engine related classes and functions.
Definition: abstract_state_manager.hpp:33