YSTest: YSLib::UI::GUIState类 参考

YSTest PreAlpha_b500_20140530 The YSLib Test Project

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

- 类列表
- 类索引
- 类继承关系
- 类成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
Public 成员函数 | Public 属性 | Private 成员函数 | Private 属性 | 所有成员列表
YSLib::UI::GUIState类 参考

图形用户界面公共状态。 更多...

`#include <ygui.h>`

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

## Public 成员函数

| GUIState () ynothrow
| DefPred (const ynothrow, Entered, entered) DefGetter(const ynothrow
const KeyInput checked_held | DefGetter (const ynothrow, IWidget *, CursorOverPtr, p_CursorOver) DefGetter(const ynothrow
bool | CheckDraggingOffset (IWidget *={})
| 若拖放偏移量无效则按指定部件的屏幕坐标更新拖放偏移量。 更多...
void | CleanupReferences (IWidget &)
| 清除状态对指定部件的引用。 更多...
void | Reset ()
| 复位图形用户界面状态。 更多...
void | ResetHeldState (InputTimer::HeldStateType &, const KeyInput &)
| 复位接触保持状态。 更多...
void | ResponseKey (KeyEventArgs &, VisualEvent)
| 响应标准按键状态。 更多...
void | ResponseKeyBase (KeyEventArgs &, VisualEvent)
| 响应标准按键状态。 更多...
const KeyInput checked_held IWidget p_indp_focus | PDefH (bool, CheckHeldState, const KeyInput &keys) ImplRet(CheckHeldState(keys
| 检查输入保持状态。 更多...
const KeyInput checked_held IWidget p_indp_focus KeyHeldState bool | CheckHeldState (const KeyInput &, InputTimer::HeldStateType &)
void | ResponseCursor (CursorEventArgs &, VisualEvent)
| 响应屏幕接触状态。 更多...
void | ResponseCursorBase (CursorEventArgs &, VisualEvent)
| 响应标准指针设备状态。 更多...

## Public 属性

InputTimer::HeldStateType | KeyHeldState
| 输入接触状态。 更多...
InputTimer::HeldStateType | TouchHeldState
Drawing::Vec | DraggingOffset
| 拖放偏移量。 更多...
InputTimer | HeldTimer
| 输入接触保持计时器。 更多...
Drawing::Point | CursorLocation
| 最近的指针设备操作时的控件全局位置（相对于顶层部件的坐标）。 更多...
Styles::Palette | Colors
| 调色板。 更多...
Styles::StyleMap | Styles
| 样式映射。 更多...
const KeyInput | CheckedHeldKeys
const KeyInput checked_held IWidget | IndependentFocusPtr

## Private 成员函数

void | HandleCascade (RoutedEventArgs &, IWidget &)
| 处理级联焦点指针，保证指向的部件具有焦点。 更多...
Private 成员函数 继承自 ystdex::noncopyable
| noncopyable (const noncopyable &)=delete
| 禁止复制构造。 更多...
noncopyable & | operator= (const noncopyable &)=delete
| 禁止赋值复制。 更多...
| noncopyable ()=default
| `protected` 构造：默认实现。 更多...
| ~noncopyable ()=default
| `protected` 析构：默认实现。 更多...
Private 成员函数 继承自 ystdex::nonmovable
| nonmovable (const nonmovable &)=delete
| 禁止复制构造。 更多...
nonmovable & | operator= (const nonmovable &)=delete
| 禁止赋值复制。 更多...
| nonmovable ()=default
| `protected` 构造：默认实现。 更多...
| ~nonmovable ()=default
| `protected` 析构：默认实现。 更多...

## Private 属性

IWidget * | p_CursorOver = {}
| 光标设备指针对应的部件。 更多...
IWidget * | p_indp_focus = {}
| 独立焦点指针：自由状态时即时输入（按下）状态捕获的部件指针。 更多...
IWidget * | p_cascade_focus = {}
| 级联焦点指针：缓冲最后一次通过直接策略路由事件的进入的部件状态。 更多...
bool | entered = {}
| 记录按键时的光标是否在部件内部。 更多...
KeyInput | checked_held {}
| 记录检查时的按键输入。 更多...
size_t | master_key = 0
| 记录需要映射的主要字符的按键编码。 更多...
char | UpdateChar (KeyInput &)
| 当指定按键状态和按键保持状态不同时按需更新映射的字符和参数。 更多...
void | Wrap (IWidget &)
| 包装部件响应 Enter/Leave 事件。 更多...
void | TryEntering (CursorEventArgs &&)
void | TryLeaving (CursorEventArgs &&)

## 详细描述

图形用户界面公共状态。

警告
  非虚析构。

自从
  build 287

在文件 ygui.h 第 105 行定义.

## 构造及析构函数说明

YSLib::UI::GUIState::GUIState | ( |  | ) |

在文件 ygui.cpp 第 127 行定义.

## 成员函数说明

bool YSLib::UI::GUIState::CheckDraggingOffset | ( | IWidget * | p = `{}` | ) |

若拖放偏移量无效则按指定部件的屏幕坐标更新拖放偏移量。

返回
  是否已在拖放状态。

注解
  若参数为空则检查独立焦点指针，如已被按下则指定为独立焦点，否则忽略。

自从
  build 434

在文件 ygui.cpp 第 147 行定义.

参考 CursorLocation, DraggingOffset, YSLib::UI::GetLocationOf, YSLib::Drawing::GBinaryGroup< SPos >::Invalid , 以及 p_indp_focus.

bool YSLib::UI::GUIState::CheckHeldState | ( | const KeyInput & | keys,
|  | InputTimer::HeldStateType & | s
| ) |  |

在文件 ygui.cpp 第 134 行定义.

参考 checked_held, YSLib::UI::InputTimer::Free , 以及 yunseq.

void YSLib::UI::GUIState::CleanupReferences | ( | IWidget & | wgt | ) |

清除状态对指定部件的引用。

后置条件
  p_CursorOver 和 p_indp_focus 和指定部件的指针不相等。

注解
  若没有找到对指定部件的引用则不改变状态。

自从
  build 428

在文件 ygui.cpp 第 162 行定义.

参考 p_cascade_focus, p_CursorOver , 以及 p_indp_focus.

const KeyInput checked_held YSLib::UI::GUIState::DefGetter | ( | const ynothrow | ,
|  | IWidget * | ,
|  | CursorOverPtr | ,
|  | p_CursorOver |
| ) |  | const

自从
  build 422
  build 464

YSLib::UI::GUIState::DefPred | ( | const ynothrow | ,
|  | Entered | ,
|  | entered |
| ) |  | const

自从
  build 422
  build 487

void YSLib::UI::GUIState::HandleCascade | ( | RoutedEventArgs & | e,
|  | IWidget & | wgt
| ) |  |

private

处理级联焦点指针，保证指向的部件具有焦点。

自从
  build 483

在文件 ygui.cpp 第 173 行定义.

参考 YSLib::UI::IsFocused(), p_cascade_focus , 以及 YSLib::UI::wgt.

参考自 ResponseCursor() , 以及 ResponseKey().

函数调用图:

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

const KeyInput checked_held IWidget p_indp_focus YSLib::UI::GUIState::PDefH | ( | bool | ,
|  | CheckHeldState | ,
|  | const KeyInput & | keys
| ) |  |

检查输入保持状态。

返回
  保持状态是否被参数改变。

注解
  接受的按键参数一般是按下状态或保持状态。

自从
  build 488

若被记录的按键状态为空则记录参数指定的按键状态；否则若当记录的按键状态和 参数不等时追加（位或）更新记录的按键状态并设置为参数，同时设置保持状态为 InputTimer::Free 。

void YSLib::UI::GUIState::Reset | ( |  | ) |

复位图形用户界面状态。

注解
  需要在没有销毁时自动释放焦点的相关控件对象被销毁后立即调用， 以避免处理无效指针。

在文件 ygui.cpp 第 185 行定义.

参考 checked_held, CursorLocation, DraggingOffset, entered, YSLib::UI::InputTimer::Free, HeldTimer, YSLib::Drawing::GBinaryGroup< SPos >::Invalid, KeyHeldState, p_cascade_focus, p_CursorOver, p_indp_focus, YSLib::UI::InputTimer::ResetInput(), TouchHeldState , 以及 yunseq.

参考自 YSLib::Shells::GUIShell::GUIShell().

函数调用图:

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

void YSLib::UI::GUIState::ResetHeldState | ( | InputTimer::HeldStateType & | s,
|  | const KeyInput & | k
| ) |  |

复位接触保持状态。

注解
  使用参数指定的按键清除检查时的按键输入，当结果为空时复位状态和计时器。

自从
  build 489

在文件 ygui.cpp 第 196 行定义.

参考 checked_held, YSLib::UI::InputTimer::Free, HeldTimer , 以及 YSLib::UI::InputTimer::ResetInput().

参考自 Wrap().

函数调用图:

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

void YSLib::UI::GUIState::ResponseCursor | ( | CursorEventArgs & | ,
|  | VisualEvent |
| ) |  |

响应屏幕接触状态。

自从
  build 424

参见
  ResponseCursorBase

在文件 ygui.cpp 第 255 行定义.

参考 YSLib::UI::RoutedEventArgs::Bubble, CursorLocation, YSLib::UI::RoutedEventArgs::Direct, YSLib::UI::GetLocationOf, HandleCascade(), YSLib::UI::RoutedEventArgs::Handled, YSLib::UI::IsEnabled(), YSLib::UI::IsVisible, YSLib::UI::CursorEventArgs::Position, ResponseCursorBase(), YSLib::UI::RoutedEventArgs::Strategy, YSLib::UI::RoutedEventArgs::Tunnel , 以及 YAssertNonnull.

函数调用图:

void YSLib::UI::GUIState::ResponseCursorBase | ( | CursorEventArgs & | ,
|  | VisualEvent |
| ) |  |

响应标准指针设备状态。

注解
  无视事件路由，直接响应。
  支持 `Touch*` 和 `Cursor*` 事件。
  对于 `TouchHeld` 请求实现记录坐标偏移（用于拖放）或触发事件。

警告
  调用的事件和参数的动态类型必须匹配。

在文件 ygui.cpp 第 299 行定义.

参考 YSLib::UI::RoutedEventArgs::Direct, p_indp_focus, YSLib::UI::RoutedEventArgs::Strategy , 以及 YAssert.

参考自 ResponseCursor().

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

void YSLib::UI::GUIState::ResponseKey | ( | KeyEventArgs & | ,
|  | VisualEvent |
| ) |  |

响应标准按键状态。

参见
  ResponseKeyBase

在文件 ygui.cpp 第 207 行定义.

参考 YSLib::UI::RoutedEventArgs::Bubble, YSLib::UI::RoutedEventArgs::Direct, HandleCascade(), YSLib::UI::RoutedEventArgs::Handled, YSLib::UI::IsEnabled(), YSLib::UI::IsVisible, ResponseKeyBase(), YSLib::UI::RoutedEventArgs::Strategy, YSLib::UI::RoutedEventArgs::Tunnel , 以及 YAssertNonnull.

函数调用图:

void YSLib::UI::GUIState::ResponseKeyBase | ( | KeyEventArgs & | ,
|  | VisualEvent |
| ) |  |

响应标准按键状态。

注解
  无视事件路由，直接响应。
  支持 `Key*` 事件。

警告
  调用的事件和参数的动态类型必须匹配。

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

参考 YAssert.

参考自 ResponseKey().

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

void YSLib::UI::GUIState::TryEntering | ( | CursorEventArgs && | e | ) |

private

自从
  build 423

在文件 ygui.cpp 第 324 行定义.

参考 entered.

void YSLib::UI::GUIState::TryLeaving | ( | CursorEventArgs && | e | ) |

private

在文件 ygui.cpp 第 334 行定义.

参考 entered.

char YSLib::UI::GUIState::UpdateChar | ( | KeyInput & | keys | ) |

当指定按键状态和按键保持状态不同时按需更新映射的字符和参数。

注解
  一般用于响应 KeyDown 事件。通过参数区分是否由 KeyHeld 引起而按需更新。

返回
  更新后的字符。

参见
  MapKeyChar

自从
  build 489

在文件 ygui.cpp 第 344 行定义.

参考 platform::KeyCategory::Character, checked_held, platform::KeyCategory::FindFirstKeyInCategroy(), YSLib::UI::InputTimer::Free, KeyHeldState, platform::MapKeyChar, master_key , 以及 yunseq.

函数调用图:

void YSLib::UI::GUIState::Wrap | ( | IWidget & | wgt | ) |

包装部件响应 Enter/Leave 事件。

在文件 ygui.cpp 第 356 行定义.

参考 platform::KeyCategory::Character, checked_held, YSLib::UI::RoutedEventArgs::Direct, platform::KeyCategory::FindFirstKeyInCategroy(), KeyHeldState, master_key, p_indp_focus, ResetHeldState(), YSLib::UI::wgt , 以及 yunseq.

函数调用图:

## 类成员变量说明

KeyInput YSLib::UI::GUIState::checked_held {}

private

记录检查时的按键输入。

参见
  CheckHeldState

自从
  build 487

在文件 ygui.h 第 158 行定义.

参考自 CheckHeldState(), Reset(), ResetHeldState(), UpdateChar() , 以及 Wrap().

const KeyInput YSLib::UI::GUIState::CheckedHeldKeys

在文件 ygui.h 第 174 行定义.

Styles::Palette YSLib::UI::GUIState::Colors

调色板。

在文件 ygui.h 第 124 行定义.

参考自 YSLib::UI::Menu::DrawItem().

Drawing::Point YSLib::UI::GUIState::CursorLocation

最近的指针设备操作时的控件全局位置（相对于顶层部件的坐标）。

自从
  build 445

在文件 ygui.h 第 123 行定义.

参考自 CheckDraggingOffset(), Reset() , 以及 ResponseCursor().

Drawing::Vec YSLib::UI::GUIState::DraggingOffset

拖放偏移量。

在文件 ygui.h 第 113 行定义.

参考自 CheckDraggingOffset() , 以及 Reset().

bool YSLib::UI::GUIState::entered = {}

private

记录按键时的光标是否在部件内部。

自从
  build 422

在文件 ygui.h 第 151 行定义.

参考自 Reset(), TryEntering() , 以及 TryLeaving().

InputTimer YSLib::UI::GUIState::HeldTimer

输入接触保持计时器。

自从
  build 300

在文件 ygui.h 第 118 行定义.

参考自 Reset() , 以及 ResetHeldState().

const KeyInput checked_held IWidget YSLib::UI::GUIState::IndependentFocusPtr

在文件 ygui.h 第 178 行定义.

InputTimer::HeldStateType YSLib::UI::GUIState::KeyHeldState

输入接触状态。

自从
  build 300

在文件 ygui.h 第 112 行定义.

参考自 Reset(), UpdateChar() , 以及 Wrap().

size_t YSLib::UI::GUIState::master_key = 0

private

记录需要映射的主要字符的按键编码。

参见
  UpdateChar

自从
  build 487

在文件 ygui.h 第 165 行定义.

参考自 UpdateChar() , 以及 Wrap().

IWidget* YSLib::UI::GUIState::p_cascade_focus = {}

private

级联焦点指针：缓冲最后一次通过直接策略路由事件的进入的部件状态。

自从
  build 483

在文件 ygui.h 第 146 行定义.

参考自 CleanupReferences(), HandleCascade() , 以及 Reset().

IWidget* YSLib::UI::GUIState::p_CursorOver = {}

private

光标设备指针对应的部件。

自从
  build 422

在文件 ygui.h 第 136 行定义.

参考自 CleanupReferences() , 以及 Reset().

IWidget* YSLib::UI::GUIState::p_indp_focus = {}

private

独立焦点指针：自由状态时即时输入（按下）状态捕获的部件指针。

自从
  build 464

在文件 ygui.h 第 141 行定义.

参考自 CheckDraggingOffset(), CleanupReferences(), Reset(), ResponseCursorBase() , 以及 Wrap().

Styles::StyleMap YSLib::UI::GUIState::Styles

样式映射。

自从
  build 468

在文件 ygui.h 第 129 行定义.

参考自 YSLib::UI::Styles::FetchDefault(), YSLib::UI::Styles::InitExStyles(), YSLib::UI::Styles::Painter::operator()(), YSLib::UI::CheckBox::Refresh() , 以及 YSLib::UI::RadioBox::Refresh().

InputTimer::HeldStateType YSLib::UI::GUIState::TouchHeldState

在文件 ygui.h 第 112 行定义.

参考自 Reset().

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

- ygui.h
- ygui.cpp