YSTest: YPanel.cpp 源文件

YSTest PreAlpha_b700_20160611 The YSLib Test Project

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

- 文件列表
- 文件成员

YPanel.cpp
浏览该文件的文档.
1 /*
2 © 2011-2014, 2016 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 #include "YSLib/UI/YModules.h"
29 #include YFM_YSLib_UI_YPanel
30
31 namespace YSLib
32 {
33
34 namespace UI
35 {
36
37 Panel::Panel(const Rect& r)
38 : Control(r, MakeBlankBrush()), MUIContainer()
39 {}
40
41 void
42 Panel::operator+=(IWidget& wgt)
43 {
44 MUIContainer::operator+=(wgt);
45 SetContainerPtrOf(wgt, make_observer(this));
46 }
47
48 bool
49 Panel::operator-=(IWidget& wgt)
50 {
51 return RemoveFrom(wgt, *this) ? MUIContainer::operator-=(wgt) : false;
52 }
53
54 void
55 Panel::Add(IWidget& wgt, ZOrder z)
56 {
57 MUIContainer::Add(wgt, z);
58 SetContainerPtrOf(wgt, make_observer(this));
59 }
60
61 void
62 Panel::ClearContents()
63 {
64 ClearFocusingOf(*this);
65 mWidgets.clear();
66 SetInvalidationOf(*this);
67 }
68
69 bool
70 Panel::MoveToFront(IWidget& wgt)
71 {
72 const auto i(std::find_if(mWidgets.cbegin(), mWidgets.cend(),
73 [&](decltype(*mWidgets.cend()) pr){
74 return ystdex::is_equal()(pr.second, wgt);
75 }));
76
77 if(i != mWidgets.cend())
78 {
79 const auto z(i->first);
80
81 mWidgets.erase(i);
82 mWidgets.emplace(z, ystdex::ref(wgt));
83 Invalidate(wgt);
84 return true;
85 }
86 return {};
87 }
88
89 void
90 Panel::Refresh(PaintEventArgs&& e)
91 {
92 if(!e.ClipArea.IsUnstrictlyEmpty())
93 PaintVisibleChildren(e);
94 }
95
96 } // namespace UI;
97
98 } // namespace YSLib;
99
YSLib::UI::MUIContainer::mWidgets
WidgetMap mWidgets
部件映射：存储 Z 顺序映射至部件引用。
Definition: YUIContainer.h:333
YSLib::UI::Control
控件。
Definition: YControl.h:275
YSLib::UI::ZOrder
std::uint8_t ZOrder
Z 顺序类型：覆盖顺序，值越大表示越接近顶层。
Definition: YUIContainer.h:176
YSLib
YSLib 命名空间。
Definition: AndroidHost.h:45
YSLib::UI::Panel::operator-=
virtual bool operator-=(IWidget &)
Definition: YPanel.cpp:49
ystdex::is_equal
相等关系仿函数。
Definition: functor.hpp:185
YSLib::UI::Panel::ClearContents
void ClearContents()
清除内容。
Definition: YPanel.cpp:62
YSLib::UI::Invalidate
YF_API void Invalidate(IWidget &, const Rect &)
无效化：使相对部件的指定区域在直接和间接的窗口缓冲区中无效。
Definition: YWidget.cpp:108
YSLib::UI::Panel::Refresh
void Refresh(PaintEventArgs &&) override
刷新：按指定参数绘制界面并更新状态。
Definition: YPanel.cpp:90
YSLib::UI::ClearFocusingOf
wgt wgt YF_API void ClearFocusingOf(IWidget &)
清除焦点指针并以此部件作为事件源调用被清除焦点部件的 LostFocus 事件。
Definition: YFocus.cpp:111
YSLib::UI::RemoveFrom
YF_API bool RemoveFrom(IWidget &, IWidget &)
从容器中移除部件。
Definition: YUIContainer.cpp:164
YSLib::UI::SetInvalidationOf
void SetInvalidationOf(IWidget &wgt)
Definition: YWidget.cpp:63
YSLib::UI::Panel::Panel
Panel(const Rect &={})
构造：使用指定边界。
Definition: YPanel.cpp:37
YSLib::UI::wgt
IWidget & wgt
Definition: YControl.h:112
YSLib::Drawing::Rect
屏幕标准矩形：表示屏幕矩形区域。
Definition: YGDIBase.h:540
YSLib::UI::Panel::MoveToFront
bool MoveToFront(IWidget &)
提升部件至 Z 顺序相等的同组部件的顶端。
Definition: YPanel.cpp:70
YSLib::Drawing::r
The boundary is out of the const Graphics const Rect const Point const Point Color c const Rect const Rect & r
Definition: YDraw.h:174
UI
YSLib::i
return i
Definition: YCoreUtilities.h:176
YSLib::UI::MUIContainer::PaintVisibleChildren
void PaintVisibleChildren(PaintEventArgs &)
绘制可视子部件。
Definition: YUIContainer.cpp:253
YSLib::UI::e
void e
Definition: YWidget.h:352
YModules.h
ystdex::make_observer
observer_ptr< _type > make_observer(_type *p)
Definition: memory.hpp:1042
YSLib::UI::PaintEventArgs
部件绘制参数。
Definition: YWidgetEvent.h:323
YSLib::UI::MUIContainer
部件容器模块。
Definition: YUIContainer.h:311
ystdex::ref
lref< _type > ref(_type &t)
构造引用包装。
Definition: ref.hpp:120