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:
56 
57 public:
59  Timers::Timer CaretTimer{std::chrono::seconds(1)};
70 
77  ~Caret();
78 
80  bool
81  Check(IWidget&);
82 
84  static void
85  Stop();
86 };
87 
88 
93 struct YF_API TextSelection final
94 {
101  using Span = pair<Position, Position>;
102 
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;
135  using MLabel::AutoWrapLine;
136  using MLabel::Text;
141 
152 
153 private:
159 
160 public:
165  explicit
166  TextBox(const Rect& = {}, const Drawing::Font& = {}, const
167  pair<Drawing::Color, Drawing::Color>& = FetchGUIState().Colors.GetPair(
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 
void Refresh(PaintEventArgs &&) override
刷新:按指定参数绘制界面并更新状态。
static auto first(const _tIterator &i) -> decltype((i->first))
Definition: iterator.hpp:759
#define DefPred(_q, _n,...)
Definition: YBaseMacro.h:172
YF_API GUIState & FetchGUIState()
取默认图形用户界面公共状态。
Definition: ygui.cpp:442
Drawing::Font Font
字体。
Definition: label.h:61
动画会话。
Definition: Animation.h:85
YF_API void DrawClippedText(const Graphics &g, const Rect &mask, TextState &ts, const String &str, bool line_wrap)
绘制剪切区域的文本。
Color HilightTextColor
高亮文本色。
Definition: label.h:249
部件绘制参数。
Definition: ywgtevt.h:276
#define YF_API
Definition: Platform.h:64
TextSelection Selection
选择区域:结束位置指示插入符光标逻辑位置。
Definition: TextBox.h:146
HBrush CaretBrush
插入符画刷。 484
Definition: TextBox.h:64
Span Range
选择的范围。
Definition: TextBox.h:104
std::uint16_t SDst
屏幕坐标距离。
Definition: Video.h:39
InvalidationUpdater::Invalidator CursorInvalidator
供闪烁动画使用的指定无效化区域的光标位置刷新器。
Definition: TextBox.h:69
文本选择区域。
Definition: TextBox.h:93
Color HilightBackColor
高亮背景色。
Definition: label.h:247
控件。
Definition: ycontrol.h:275
文本框。
Definition: TextBox.h:128
String Text
标签文本。
Definition: label.h:76
PDefH(void, Activate, Console &console, Drawing::Color fc=Drawing::ColorSpace::White) ImplExpr(Activate(console
激活:使用指定屏幕、有效性、前景色和默认背景色。
YSLib 标准字符串(使用 UCS-2 作为内部编码)。
Definition: ystring.h:47
#define ImplExpr(...)
Definition: YBaseMacro.h:93
pair< Position, Position > Span
文本区段:表示起始和结束位置。
Definition: TextBox.h:101
#define ynothrow
YSLib 无异常抛出保证:若支持 noexcept 关键字, 指定特定的 noexcept 异常规范。
Definition: ydef.h:514
文本状态。
Definition: TextBase.h:87
屏幕标准矩形:表示屏幕矩形区域。
Definition: ygdibase.h:416
高亮背景。
Definition: ystyle.h:190
屏幕二元组。
Definition: ygdibase.h:54
Styles::Palette Colors
调色板。
Definition: ygui.h:124
TextAlignment HorizontalAlignment
文本水平和竖直对齐属性。
Definition: label.h:68
std::function< void(PaintEventArgs &&)> HBrush
画刷回调函数。
Definition: YComponent.h:104
bool AutoWrapLine
启用自动换行。
Definition: label.h:73
二维图形接口上下文。
Definition: ygdibase.h:721
Drawing::Padding Margin
文本和容器的间距。
Definition: label.h:62
SDst h_offset
文字区域水平基准负偏移:文本内容在光标回退方向超出的未显示部分大小。
Definition: TextBox.h:158
Caret CursorCaret
插入符光标。
Definition: TextBox.h:151
插入符光标。
Definition: TextBox.h:48
高亮文本模块。
Definition: label.h:243
std::function< bool(IWidget &)> Invalidator
Definition: Animation.h:128
Selected const shared_ptr< ListType > const pair< Color, Color > & DefDeMoveCtor(TextList) DefPredMem(const ynothrow
标签模块。
Definition: label.h:58
字体:字模,包含字型、样式和大小。
Definition: Font.h:546
static auto second(const _tIterator &i) -> decltype((i->second))
Definition: iterator.hpp:765
static GAnimationSession< InvalidationUpdater > caret_animation
插入符闪烁动画。
Definition: TextBox.h:55
TextAlignment VerticalAlignment
Definition: label.h:68
计时器。
Definition: ytimer.h:100