YSTest: Animation.cpp 源文件

YSTest PreAlpha_b900_20201012 The YSLib Test Project

Animation.cpp
浏览该文件的文档.
1 /*
2 © 2013-2015 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_Animation
30 #include YFM_YSLib_UI_YControl // for IsEnabled;
31
32 namespace YSLib
33 {
34
35 namespace UI
36 {
37
38 bool
39 InvalidationUpdater::operator()() const
40 {
41 if(bool(Invalidate) && !(WidgetPtr && Invalidate(*WidgetPtr)))
42 Ready = {};
43 return Ready;
44 }
45
46 bool
47 InvalidationUpdater::DefaultInvalidate(IWidget& wgt)
48 {
49 InvalidateVisible(wgt);
50 return true;
51 }
52
53 bool
54 InvalidationUpdater::DefaultInvalidateControl(IWidget& wgt)
55 {
56 if(IsEnabled(wgt))
57 InvalidateVisible(wgt);
58 return true;
59 }
60
61
62 void
63 ActAfter(IWidget& wgt, Timers::TimeSpan delay)
64 {
65 auto p_ani(make_shared<GAnimationSession<InvalidationUpdater>>());
66 auto p_timer(make_shared<Timers::Timer>(delay));
67
68 SetupByTimer(*p_ani, wgt, *p_timer,
69 [p_ani, p_timer, &wgt](){
70 Hide(wgt);
71 YTraceDe(Debug, "Widget is hidden by UI::Display callback.");
72 p_ani->GetConnectionRef().Ready = {};
73 });
74 }
75
76 } // namespace UI;
77
78 } // namespace YSLib;
79
YSLib::UI::Hide
YF_API void Hide(IWidget &)
隐藏部件。
Definition: YWidget.cpp:100
ystdex::make_shared
std::shared_ptr< _type > make_shared(std::initializer_list< _tValue > il)
使用指定类型的初始化列表构造指定类型的 std::shared_ptr 对象。
Definition: memory.hpp:855
YSLib::UI::InvalidationUpdater::Invalidate
Invalidator Invalidate
指示对 WidgetPtr 用于判断是否继续动作的检查和无效化动作。
Definition: Animation.h:141
YSLib::UI::InvalidationUpdater::DefaultInvalidate
static bool DefaultInvalidate(IWidget &)
默认无效化：对部件调用 InvalidateVisible 。
Definition: Animation.cpp:47
YSLib::UI::InvalidationUpdater::DefaultInvalidateControl
static bool DefaultInvalidateControl(IWidget &)
默认无效化：对调用 IsEnabled 返回 true 的部件调用 InvalidateVisible 。
Definition: Animation.cpp:54
YSLib::UI::GAnimationSession< InvalidationUpdater >
YSLib::UI::SetupByTimer
void SetupByTimer(_tAnimation &ani, IWidget &wgt, _tTimer &&timer, _func f)
安装以计时器控制的动画效果。
Definition: Animation.h:218
YSLib::UI::InvalidateVisible
YF_API void InvalidateVisible(IWidget &, const Rect &)
无效化：使相对可见的部件的指定区域在直接和间接的窗口缓冲区中无效。
Definition: YWidget.cpp:148
YSLib::UI::InvalidationUpdater::WidgetPtr
observer_ptr< IWidget > WidgetPtr
Definition: Animation.h:132
YSLib::UI::ActAfter
YF_API void ActAfter(IWidget &, Timers::TimeSpan)
在一定时间后对部件进行操作。
Definition: Animation.cpp:63
YTraceDe
#define YTraceDe(...)
YCLib 默认调试跟踪。
Definition: Debug.h:407
YSLib::UI::InvalidationUpdater::operator()
bool operator()() const
更新函数：无效化后根据成员指定是否需要发送 SM_Task 消息。
Definition: Animation.cpp:39
YSLib
YSLib 命名空间。
Definition: AndroidHost.h:46
YModules.h
YSLib 用户界面模块配置文件。
YSLib::UI::wgt
IWidget & wgt
Definition: YControl.h:113
YSLib::Timers::TimeSpan
std::chrono::duration< Duration::rep, std::milli > TimeSpan
低精度时间间隔。
Definition: YClock.h:81
YSLib::UI::InvalidationUpdater::Ready
bool Ready
准备和最后持续状态：更新函数的最后结果。
Definition: Animation.h:134
platform::Descriptions::Debug
@ Debug
Definition: YCommon.h:186