YSTest: TextBox.h 源文件

YSTest PreAlpha_b500_20140530 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 文件列表
- 文件成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
TextBox.h
浏览该文件的文档.
1 /*
2 © 2014 FrankHB.
3
4 This file is part of the YSLib project, and may only be used,
5 modified, and distributed under the terms of the YSLib project
6 license, LICENSE.TXT. By continuing to use, modify, or distribute
7 this file you indicate that you have read the license and
8 understand and accept it fully.
9 */
10
28 #ifndef YSL_INC_UI_TextBox_h_
29 #define YSL_INC_UI_TextBox_h_ 1
30
31 #include "YModules.h"
32 #include YFM_YSLib_UI_YControl
33 #include YFM_YSLib_UI_Label
34 #include YFM_YSLib_Service_YTimer
35 #include YFM_YSLib_UI_YGUI
36 #include YFM_YSLib_UI_Animation
37
38 namespace YSLib
39 {
40
41 namespace UI
42 {
43
48 class YF_API Caret final
49 {
50 private:
55 static GAnimationSession<InvalidationUpdater> caret_animation;
56
57 public:
59 Timers::Timer CaretTimer{std::chrono::seconds(1)};
64 HBrush CaretBrush;
69 InvalidationUpdater::Invalidator CursorInvalidator;
70
76 Caret(IWidget&, HBrush, InvalidationUpdater::Invalidator);
77 ~Caret();
78
80 bool
81 Check(IWidget&);
82
84 static void
85 Stop();
86 };
87
88
93 struct YF_API TextSelection final
94 {
96 using Position = GBinaryGroup<size_t>;
101 using Span = pair<Position, Position>;
102
104 Span Range;
105
110 DefPred(const ynothrow, Empty, Range.first == Range.second)
111
112
116 PDefH(void, Collapse, )
117 ImplExpr(Range.first = Range.second)
118 };
119
120
128 class YF_API TextBox : public Control, protected MLabel, protected MHilightText
129 {
130 public:
131 using MLabel::Font;
132 using MLabel::Margin;
133 using MLabel::HorizontalAlignment;
134 using MLabel::VerticalAlignment;
135 using MLabel::AutoWrapLine;
136 using MLabel::Text;
138 using MHilightText::HilightBackColor;
140 using MHilightText::HilightTextColor;
141
146 TextSelection Selection;
151 Caret CursorCaret;
152
153 private:
158 SDst h_offset;
159
160 public:
165 explicit
166 TextBox(const Rect& = {}, const Drawing::Font& = {}, const
167 pair<Drawing::Color, Drawing::Color>& = FetchGUIState().Colors.GetPair(
168 Styles::Highlight, Styles::HighlightText));
169 DefDeMoveCtor(TextBox)
170
171
177 TextSelection::Position
178 GetCaretPosition(const Point&);
179
181 void
182 DrawClippedText(const Graphics&, const Rect&, TextState&) override;
183
190 static bool
191 InvalidateDefaultCaret(IWidget&);
192
194 void
195 Refresh(PaintEventArgs&&) override;
196
201 void
202 ReplaceSelection(const String&);
203
205 void
206 PaintDefaultCaret(PaintEventArgs&&);
207 };
208
209 } // namespace UI;
210
211 } // namespace YSLib;
212
213 #endif
214
YSLib::UI::Refresh
void Refresh(PaintEventArgs &&) override
刷新：按指定参数绘制界面并更新状态。
YModules.h
ystdex::iterator_transformation::first
static auto first(const _tIterator &i) -> decltype((i->first))
Definition: iterator.hpp:759
DefPred
#define DefPred(_q, _n,...)
Definition: YBaseMacro.h:172
YSLib::UI::FetchGUIState
YF_API GUIState & FetchGUIState()
取默认图形用户界面公共状态。
Definition: ygui.cpp:442
YSLib::UI::MLabel::Font
Drawing::Font Font
字体。
Definition: label.h:61
YSLib::UI::GAnimationSession
动画会话。
Definition: Animation.h:85
YSLib::Drawing::DrawClippedText
YF_API void DrawClippedText(const Graphics &g, const Rect &mask, TextState &ts, const String &str, bool line_wrap)
绘制剪切区域的文本。
Definition: TextRenderer.cpp:214
YSLib::UI::MHilightText::HilightTextColor
Color HilightTextColor
高亮文本色。
Definition: label.h:249
YSLib::UI::PaintEventArgs
部件绘制参数。
Definition: ywgtevt.h:276
YF_API
#define YF_API
Definition: Platform.h:64
YSLib::UI::TextBox::Selection
TextSelection Selection
选择区域：结束位置指示插入符光标逻辑位置。
Definition: TextBox.h:146
YSLib::UI::Caret::CaretBrush
HBrush CaretBrush
插入符画刷。 484
Definition: TextBox.h:64
YSLib::UI::TextSelection::Range
Span Range
选择的范围。
Definition: TextBox.h:104
platform::SDst
std::uint16_t SDst
屏幕坐标距离。
Definition: Video.h:39
YSLib::UI::Caret::CursorInvalidator
InvalidationUpdater::Invalidator CursorInvalidator
供闪烁动画使用的指定无效化区域的光标位置刷新器。
Definition: TextBox.h:69
YSLib::UI::TextSelection
文本选择区域。
Definition: TextBox.h:93
YSLib::UI::MHilightText::HilightBackColor
Color HilightBackColor
高亮背景色。
Definition: label.h:247
YSLib::UI::Control
控件。
Definition: ycontrol.h:275
YSLib::UI::TextBox
文本框。
Definition: TextBox.h:128
YSLib::UI::MLabel::Text
String Text
标签文本。
Definition: label.h:76
YSLib::UI::PDefH
PDefH(void, Activate, Console &console, Drawing::Color fc=Drawing::ColorSpace::White) ImplExpr(Activate(console
激活：使用指定屏幕、有效性、前景色和默认背景色。
YSLib::Text::String
YSLib 标准字符串（使用 UCS-2 作为内部编码）。
Definition: ystring.h:47
ImplExpr
#define ImplExpr(...)
Definition: YBaseMacro.h:93
YSLib::UI::TextSelection::Span
pair< Position, Position > Span
文本区段：表示起始和结束位置。
Definition: TextBox.h:101
ynothrow
#define ynothrow
YSLib 无异常抛出保证：若支持 noexcept 关键字， 指定特定的 noexcept 异常规范。
Definition: ydef.h:514
YSLib::Drawing::TextState
文本状态。
Definition: TextBase.h:87
YSLib::Drawing::Rect
屏幕标准矩形：表示屏幕矩形区域。
Definition: ygdibase.h:416
YSLib::UI::Styles::Highlight
高亮背景。
Definition: ystyle.h:190
YSLib::Drawing::GBinaryGroup
屏幕二元组。
Definition: ygdibase.h:54
YSLib::UI::GUIState::Colors
Styles::Palette Colors
调色板。
Definition: ygui.h:124
YSLib::UI::MLabel::HorizontalAlignment
TextAlignment HorizontalAlignment
文本水平和竖直对齐属性。
Definition: label.h:68
YSLib::UI::HBrush
std::function< void(PaintEventArgs &&)> HBrush
画刷回调函数。
Definition: YComponent.h:104
YSLib::UI::MLabel::AutoWrapLine
bool AutoWrapLine
启用自动换行。
Definition: label.h:73
YSLib::Drawing::Graphics
二维图形接口上下文。
Definition: ygdibase.h:721
YSLib::UI::MLabel::Margin
Drawing::Padding Margin
文本和容器的间距。
Definition: label.h:62
YSLib::UI::TextBox::h_offset
SDst h_offset
文字区域水平基准负偏移：文本内容在光标回退方向超出的未显示部分大小。
Definition: TextBox.h:158
YSLib::UI::TextBox::CursorCaret
Caret CursorCaret
插入符光标。
Definition: TextBox.h:151
YSLib::UI::Caret
插入符光标。
Definition: TextBox.h:48
YSLib::UI::MHilightText
高亮文本模块。
Definition: label.h:243
YSLib::UI::InvalidationUpdater::Invalidator
std::function< bool(IWidget &)> Invalidator
Definition: Animation.h:128
YSLib::UI::DefDeMoveCtor
Selected const shared_ptr< ListType > const pair< Color, Color > & DefDeMoveCtor(TextList) DefPredMem(const ynothrow
YSLib::UI::MLabel
标签模块。
Definition: label.h:58
YSLib::Drawing::Font
字体：字模，包含字型、样式和大小。
Definition: Font.h:546
ystdex::iterator_transformation::second
static auto second(const _tIterator &i) -> decltype((i->second))
Definition: iterator.hpp:765
YSLib::UI::Styles::HighlightText
Definition: ystyle.h:198
YSLib::UI::Caret::caret_animation
static GAnimationSession< InvalidationUpdater > caret_animation
插入符闪烁动画。
Definition: TextBox.h:55
YSLib::UI::MLabel::VerticalAlignment
TextAlignment VerticalAlignment
Definition: label.h:68
YSLib::Timers::Timer
计时器。
Definition: ytimer.h:100