YSTest: YSLib::UI::TextBox类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

Public 成员函数 | 静态 Public 成员函数 | Public 属性 | Private 属性 | 所有成员列表
YSLib::UI::TextBox类 参考

文本框。 更多...

`#include <TextBox.h>`

类 YSLib::UI::TextBox 继承关系图:
[图例]
YSLib::UI::TextBox 的协作图:
[图例]

## Public 成员函数

| TextBox (const Rect &={}, const Drawing::Font &={}, const pair< Drawing::Color, Drawing::Color > &=FetchGUIConfiguration().Colors .GetPair(Styles::Highlight, Styles::HighlightText))
| 构造：使用指定边界、字体和高亮背景色/文本色对。 更多...
YB_ATTR_nodiscard YB_PURE Point | GetCaretLocation () const
| 取插入符光标的显示位置。 更多...
YB_ATTR_nodiscard YB_PURE TextSelection::Position | GetCaretPosition (const Point &) const
| 取指定点所在的插入符光标逻辑位置。 更多...
YB_ATTR_nodiscard YB_PURE Point | GetPenOffset () const
| 取按字体和边距计算的起始笔偏移。 更多...
void | CollapseCaret ()
| 折叠选择区域、重置插入符光标计时器并导出插入符位置。 更多...
void | ExportCaretLocation () const
| 导出插入符位置到公共 GUI 状态。 更多...
void | PaintDefaultCaret (PaintEventArgs &&)
| 绘制默认插入符。 更多...
void | Refresh (PaintEventArgs &&) override
| 刷新：按指定参数绘制界面并更新状态。 更多...
void | SelectAll ()
| 全选操作。 更多...
| PDefH (void, RestoreCaretTimer,) ImplExpr(Activate(CursorCaret.CaretTimer)) void ReplaceSelection(const String &)
| 重置插入符光标计时器。 更多...
void | UpdateTextBoxClippedText (const PaintContext &, TextState &)
Public 成员函数 继承自 YSLib::UI::Widget
| Widget (const Rect &={})
| Widget (const Rect &, HBrush)
template<typename _tView , typename _tRenderer , typename _tController >
| Widget (_tView &&pView_=make_unique< View >(), _tRenderer &&pRenderer_=make_unique< Renderer >(), _tController &&pController_={})
| 构造：使用视图指针、渲染器指针和控制器指针，无背景。 更多...
| Widget (const Widget &)
| 复制构造：除容器指针为空外深复制。 更多...
| DefDelMoveCtor (Widget) virtual ~Widget()
| since build 428 更多...
| DefGetter (ImplI(IWidget), WidgetRange, Children, WidgetRange()) static HBrush MakeBlankBrush()
| 取空白画刷。 更多...
| DefGetter (const ImplI(IWidget), AController &, Controller, Deref(controller_ptr)) DefGetterMem(const ynothrow
| GetView ()) DefGetter(const ImplI(IWidget)
Renderer | Deref (renderer_ptr)) DefGetter(const ImplI(IWidget)
Renderer AView | Deref (view_ptr)) DefGetterMem(const ynothrow
Renderer AView | GetView ()) DefGetterMem(const ynothrow
Renderer AView | GetView ()) DefGetterMem(const ynothrow
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) void SetRenderer(unique_ptr< Renderer >)
| 设置渲染器为指定指针指向的对象，同时更新渲染器状态。 更多...
void | SetView (unique_ptr< AView >)
| 设置视图为指定指针指向的对象。 更多...

## 静态 Public 成员函数

static bool | InvalidateDefaultCaret (IWidget &)
| 无效化默认插入符。 更多...

## Public 属性

TextSelection | Selection
| 选择区域：结束位置指示插入符光标逻辑位置。 更多...
Caret | CursorCaret
| 插入符光标。 更多...
size_t | MaxLength {size_t(-1)}
| 用户界面输入文本的最大长度。 更多...
char32_t | MaskChar = char32_t()
| 掩码字符。 更多...
Color | ForeColor
Drawing::Font | Font
| 字体。 更多...
Drawing::Padding | Margin
| 文本和容器的间距。 更多...
TextAlignment | HorizontalAlignment
| 文本水平和竖直对齐属性。 更多...
TextAlignment | VerticalAlignment
bool | AutoWrapLine
| 启用自动换行。 更多...
String | Text
| 标签文本。 更多...
Color | HilightBackColor
Color | HilightTextColor
Public 属性 继承自 YSLib::UI::Widget
HBrush | Background
| 背景。 更多...
| SDst
| Height
Renderer | Renderer
Renderer AView | View
Renderer AView | SDst
Renderer AView | Width
Renderer AView | SPos
Renderer AView | X
Renderer AView | Y
Renderer AView | Height

## Private 属性

SDst | h_offset
| 文字区域水平基准负偏移：文本内容在光标回退方向超出的未显示部分大小。 更多...

## 额外继承的成员函数

Protected 成员函数 继承自 YSLib::UI::Control
| Control (const Rect &, HBrush)
| 构造：使用指定边界和背景画刷。 更多...
| Control (const Control &)
| 复制构造：除容器为空外深复制。 更多...
| ~Control () override
| 虚析构：类定义外默认实现。 更多...
virtual | PDefH (observer_ptr< IWidget >, GetBoundControlPtr, const KeyInput &) ImplRet(nullptr) void OnTouch_Close(CursorEventArgs &&)
| 取按键-指针设备输入默认事件组映射。 更多...
Protected 成员函数 继承自 YSLib::UI::MLabel
| MLabel (const Drawing::Font &={}, Color=Drawing::ColorSpace::Black, TextAlignment=TextAlignment::Left)
| 构造：使用指定字体、文本颜色和文本对齐样式。 更多...
void | operator() (PaintEventArgs &&) const
| 描画：使用发送者的大小并调用 DrawText 绘制文本。 更多...
YB_ATTR_nodiscard YB_PURE Point | GetAlignedPenOffset (const Size &) const
| 按参数指定的边界大小和当前状态计算笔的偏移位置。 更多...
| DefGetter (const ynothrow, SDst, ItemHeight, Font.GetHeight()+GetVerticalOf(Margin)) void DrawText(const Size &
| 绘制文本。 更多...
Protected 成员函数 继承自 YSLib::UI::MHilightText
| MHilightText (const Color &bc, const Color &fc)
template<class _type >
| MHilightText (const _type &pr)
静态 Protected 成员函数 继承自 YSLib::UI::MLabel
static void | DefaultUpdateClippedText (const PaintContext &, Drawing::TextState &, const String &, bool)
| 绘制剪切文本：使用指定的绘制上下文和文本状态。 更多...
Protected 属性 继承自 YSLib::UI::MLabel
Drawing::GBrushUpdater< Drawing::TextState &, const String &, bool > | UpdateClippedText {DefaultUpdateClippedText}
| 当前使用的剪切文本更新器。 更多...
Color | ForeColor {Drawing::ColorSpace::Black}
| 默认前景色。 更多...
Drawing::Font | Font
| 字体。 更多...
Drawing::Padding | Margin {Drawing::DefaultMargin}
| 文本和容器的间距。 更多...
TextAlignment | HorizontalAlignment
| 文本水平和竖直对齐属性。 更多...
TextAlignment | VerticalAlignment = TextAlignment::Center
bool | AutoWrapLine = {}
| 启用自动换行。 更多...
String | Text {}
| 标签文本。 更多...
const PaintContext & | const
Protected 属性 继承自 YSLib::UI::MHilightText
Color | HilightBackColor
| 高亮背景色。 更多...
Color | HilightTextColor
| 高亮文本色。 更多...
相关函数 继承自 YSLib::UI::Widget
template<class _tRenderer >
_tRenderer & | WrapRenderer (Widget &wgt, unique_ptr< _tRenderer > p_renderer)
| 包装渲染器：设置渲染器并返回被设置的渲染器引用。 更多...

## 详细描述

文本框。

参见
  Label

自从
  build 482

待办事项:
  支持多行模式的插入符光标移动、文本选中和插入。

在文件 TextBox.h 第 197 行定义.

## 构造及析构函数说明

## ◆ TextBox()

YSLib::UI::TextBox::TextBox | ( | const Rect & | = `{}`,
|  | const Drawing::Font & | = `{}`,
|  | const pair< Drawing::Color, Drawing::Color > & | = `FetchGUIConfiguration().Colors .GetPair(Styles::Highlight, Styles::HighlightText)`
| ) |  |

explicit

构造：使用指定边界、字体和高亮背景色/文本色对。

自从
  build 486

在文件 TextBox.cpp 第 94 行定义.

引用了 platform::KeyCodes::DS::Backspace, CollapseCaret(), YSLib::UI::RoutedEventArgs::Direct, YSLib::UI::e, platform::KeyCategory::Editing, platform::KeyCategory::FindFirstKeyInCategroy(), YSLib::UI::Invalidate(), platform::KeyCategory::Navigation, YSLib::UI::TextSelection::Range, Selection, platform::KeyCodes::DS::Shift, platform::KeyCodes::DS::Space, platform::KeyCodes::DS::Tab, YSLib::UI::MLabel::Text, YSLib::UI::MLabel::UpdateClippedText, UpdateTextBoxClippedText() , 以及 yunseq.

函数调用图:

## 成员函数说明

## ◆ CollapseCaret()

void YSLib::UI::TextBox::CollapseCaret | ( |  | ) |

折叠选择区域、重置插入符光标计时器并导出插入符位置。

注解
  若光标位置不变则无效。

自从
  build 514

在文件 TextBox.cpp 第 292 行定义.

引用了 YSLib::UI::TextSelection::Collapse, ExportCaretLocation(), YSLib::UI::TextSelection::Range , 以及 Selection.

被这些函数引用 TextBox().

函数调用图:
这是这个函数的调用关系图:

## ◆ ExportCaretLocation()

void YSLib::UI::TextBox::ExportCaretLocation | ( |  | ) | const

导出插入符位置到公共 GUI 状态。

注解
  仅当外部文本输入指示焦点部件为本对象时有效，否则忽略。

自从
  build 518

在文件 TextBox.cpp 第 303 行定义.

引用了 YSLib::UI::FetchGUIState() , 以及 GetCaretLocation().

被这些函数引用 CollapseCaret() , 以及 SelectAll().

函数调用图:
这是这个函数的调用关系图:

## ◆ GetCaretLocation()

Point YSLib::UI::TextBox::GetCaretLocation | ( |  | ) | const

取插入符光标的显示位置。

注解
  使用 pen_offset 计算。

返回
  插入符光标左上角相对部件左上角的偏移。

自从
  build 512

在文件 TextBox.cpp 第 247 行定义.

引用了 YSLib::Drawing::char32_t, YSLib::Drawing::FetchCharWidth(), YSLib::Drawing::FetchStringWidth(), YSLib::Drawing::Font::GetHeight(), GetPenOffset(), MaskChar, YSLib::UI::TextSelection::Range, Selection, YSLib::UI::Widget::SPos , 以及 YSLib::UI::MLabel::Text.

被这些函数引用 ExportCaretLocation() , 以及 PaintDefaultCaret().

函数调用图:
这是这个函数的调用关系图:

## ◆ GetCaretPosition()

TextSelection::Position YSLib::UI::TextBox::GetCaretPosition | ( | const Point & | pt | ) | const

取指定点所在的插入符光标逻辑位置。

注解
  参数为相对部件左上角偏移。

自从
  build 889

待办事项:
  AutoWrap 为 true 时判断行数。

在文件 TextBox.cpp 第 260 行定义.

引用了 YSLib::Drawing::char32_t, YSLib::Drawing::FetchCharWidth(), YSLib::Drawing::FetchStringOffsets(), h_offset, YSLib::Drawing::Padding::Left, YSLib::UI::MLabel::Margin, MaskChar, YSLib::UI::MLabel::Text, YSLib::Drawing::w , 以及 YSLib::Drawing::GBinaryGroup< _type >::X.

函数调用图:

## ◆ GetPenOffset()

Point YSLib::UI::TextBox::GetPenOffset | ( |  | ) | const

取按字体和边距计算的起始笔偏移。

自从
  build 582

在文件 TextBox.cpp 第 284 行定义.

引用了 YSLib::UI::MLabel::GetAlignedPenOffset(), YSLib::UI::GetSizeOf, YSLib::Drawing::Padding::Left, YSLib::UI::MLabel::Margin , 以及 YSLib::Drawing::Padding::Top.

被这些函数引用 GetCaretLocation().

函数调用图:
这是这个函数的调用关系图:

## ◆ InvalidateDefaultCaret()

bool YSLib::UI::TextBox::InvalidateDefaultCaret | ( | IWidget & | wgt | ) |

static

无效化默认插入符。

前置条件
  参数对象的动态类型为 TextBox 或其派生类。

参见
  Caret::CursorInvalidator

自从
  build 484

在文件 TextBox.cpp 第 312 行定义.

引用了 YSLib::UI::InvalidateVisible() , 以及 YSLib::UI::wgt.

函数调用图:

## ◆ PaintDefaultCaret()

void YSLib::UI::TextBox::PaintDefaultCaret | ( | PaintEventArgs && | e | ) |

绘制默认插入符。

在文件 TextBox.cpp 第 321 行定义.

引用了 YSLib::UI::e, YSLib::UI::MLabel::ForeColor, GetCaretLocation() , 以及 YSLib::Drawing::Font::GetHeight().

函数调用图:

## ◆ PDefH()

YSLib::UI::TextBox::PDefH | ( | void | ,
|  | RestoreCaretTimer |
| ) |  | const &

重置插入符光标计时器。

自从
  build 514

替换选中文本。

注解
  用于默认响应 TextInput 事件。
  当文本已超出长度限制时只允许缩短文本；其余情况保证不超过限制。

参见
  MaxLength

自从
  build 490

## ◆ Refresh()

void YSLib::UI::TextBox::Refresh | ( | PaintEventArgs && | e | ) |

overridevirtual

刷新：按指定参数绘制界面并更新状态。

重载 YSLib::UI::Widget .

在文件 TextBox.cpp 第 330 行定义.

引用了 YSLib::Drawing::char32_t, YSLib::UI::e, MaskChar , 以及 YSLib::UI::MLabel::Text.

## ◆ SelectAll()

void YSLib::UI::TextBox::SelectAll | ( |  | ) |

全选操作。

自从
  build 542

在文件 TextBox.cpp 第 358 行定义.

引用了 ExportCaretLocation(), YSLib::UI::TextSelection::Range, Selection , 以及 YSLib::UI::MLabel::Text.

函数调用图:

## ◆ UpdateTextBoxClippedText()

void YSLib::UI::TextBox::UpdateTextBoxClippedText | ( | const PaintContext & | pc,
|  | TextState & | ts
| ) |  |

自从
  build 525

在文件 TextBox.cpp 第 367 行定义.

引用了 YSLib::UI::MLabel::AutoWrapLine, CHRLib::c, YSLib::Drawing::char32_t, YSLib::Drawing::TextRenderer::ClipArea, YSLib::Drawing::TextState::Color, YSLib::UI::MLabel::DefaultUpdateClippedText(), YSLib::Drawing::FillRect(), YSLib::UI::MLabel::ForeColor, YSLib::Drawing::g, YSLib::UI::MHilightText::HilightBackColor, YSLib::UI::MHilightText::HilightTextColor, YSLib::IsInInterval(), platform::l, platform::p, YSLib::Drawing::PutText(), YSLib::UI::TextSelection::Range, YSLib::RestrictUnsignedStrict(), Selection, ystdex::cpp2017::swap(), YSLib::UI::MLabel::Text, YSLib::Drawing::ts, YSLib::Drawing::x1 , 以及 YSLib::Drawing::x2.

被这些函数引用 TextBox().

函数调用图:
这是这个函数的调用关系图:

## 类成员变量说明

## ◆ AutoWrapLine

bool YSLib::UI::MLabel::AutoWrapLine

启用自动换行。

自从
  build 309

在文件 Label.h 第 91 行定义.

## ◆ CursorCaret

Caret YSLib::UI::TextBox::CursorCaret

插入符光标。

自从
  build 484

在文件 TextBox.h 第 222 行定义.

## ◆ Font

Drawing::Font YSLib::UI::MLabel::Font

字体。

在文件 Label.h 第 78 行定义.

## ◆ ForeColor

Color YSLib::UI::MLabel::ForeColor

自从
  build 525

在文件 Label.h 第 77 行定义.

## ◆ h_offset

SDst YSLib::UI::TextBox::h_offset

private

文字区域水平基准负偏移：文本内容在光标回退方向超出的未显示部分大小。

自从
  build 484

在文件 TextBox.h 第 244 行定义.

被这些函数引用 GetCaretPosition().

## ◆ HilightBackColor

Color YSLib::UI::MHilightText::HilightBackColor

自从
  build 486

在文件 Label.h 第 215 行定义.

## ◆ HilightTextColor

Color YSLib::UI::MHilightText::HilightTextColor

自从
  build 486

在文件 Label.h 第 217 行定义.

## ◆ HorizontalAlignment

TextAlignment YSLib::UI::MLabel::HorizontalAlignment

文本水平和竖直对齐属性。

注解
  只在停用自动换行且可完整显示时有效。

自从
  build 208

在文件 Label.h 第 85 行定义.

## ◆ Margin

Drawing::Padding YSLib::UI::MLabel::Margin

文本和容器的间距。

在文件 Label.h 第 79 行定义.

## ◆ MaskChar

char32_t YSLib::UI::TextBox::MaskChar = char32_t()

掩码字符。

注解
  可作为屏蔽密码显示的字符。
  当前 char32_t 截取为 char16_t 。
  若不为空字符则默认在显示时使用此字符替换 Text 的每个字符。

自从
  build 641

参见
  Text

在文件 TextBox.h 第 237 行定义.

被这些函数引用 GetCaretLocation(), GetCaretPosition() , 以及 Refresh().

## ◆ MaxLength

size_t YSLib::UI::TextBox::MaxLength {size_t(-1)}

用户界面输入文本的最大长度。

注解
  仅限制 TextInput 事件修改 Text 。

自从
  build 516

在文件 TextBox.h 第 228 行定义.

## ◆ Selection

TextSelection YSLib::UI::TextBox::Selection

选择区域：结束位置指示插入符光标逻辑位置。

自从
  build 484

在文件 TextBox.h 第 217 行定义.

被这些函数引用 CollapseCaret(), GetCaretLocation(), SelectAll(), TextBox() , 以及 UpdateTextBoxClippedText().

## ◆ Text

String YSLib::UI::MLabel::Text

标签文本。

在文件 Label.h 第 94 行定义.

## ◆ VerticalAlignment

TextAlignment YSLib::UI::MLabel::VerticalAlignment

在文件 Label.h 第 86 行定义.

该类的文档由以下文件生成:

- TextBox.h
- TextBox.cpp