ZFFramework
 
Loading...
Searching...
No Matches
ZFAniGroup.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFAniGroup_h_
7#define _ZFI_ZFAniGroup_h_
8
9#include "ZFAnimation.h"
11
13#define ZFSerializableKeyword_ZFAniGroup_child "child"
15#define ZFSerializableKeyword_ZFAniGroup_childDuration "childDuration"
17#define ZFSerializableKeyword_ZFAniGroup_childCurve "childCurve"
18
19// ============================================================
20zfclassFwd _ZFP_ZFAniGroupPrivate;
38zfclass ZFLIB_ZFUtility ZFAniGroup : zfextend ZFAnimation {
39 ZFOBJECT_DECLARE(ZFAniGroup, ZFAnimation)
40
41public:
42 // ============================================================
43 // event
49 ZFEVENT(ChildAniOnStart)
55 ZFEVENT(ChildAniOnStop)
56
57 // ============================================================
58 // serialize
59protected:
62 ZF_IN const ZFSerializableData &serializableData
63 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
64 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
65 );
68 ZF_IN_OUT ZFSerializableData &serializableData
69 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
70 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
71 );
72
73 // ============================================================
74 // object
75protected:
77 virtual void objectOnInit(void);
79 virtual void objectOnDealloc(void);
81 virtual void objectOnDeallocPrepare(void);
83 virtual ZFCompareResult objectCompareValueImpl(ZF_IN ZFObject *anotherObj);
84
85 // ============================================================
86 // child animation control
87public:
92 , ZFMP_IN(ZFAnimation *, ani)
93 , ZFMP_IN_OPT(zfindex, index, zfindexMax())
94 )
102 ZFMETHOD_DECLARE_1(zfanyT<ZFAnimation>, childAt
103 , ZFMP_IN(zfindex , index)
109 , ZFMP_IN(zfindex, index)
115
116public:
121 , ZFMP_IN(zfindex , index)
127 , ZFMP_IN(zfindex , index)
130
135 , ZFMP_IN(zfindex , index)
141 , ZFMP_IN(zfindex , index)
144
149 , ZFMP_IN(zfindex , index)
155 , ZFMP_IN(zfindex , index)
156 , ZFMP_IN(ZFCurve *, curve)
158
159 // ============================================================
160 // property
161public:
183
184public:
186 virtual zftimet durationFixed(void);
187
188 // ============================================================
189 // util for chained call
190public:
193 , ZFMP_IN(ZFObject *, target)
201 , ZFMP_IN(ZFCurve *, curve)
203
204public:
207 , ZFMP_IN(const ZFListener &, cb)
211 , ZFMP_IN(const ZFListener &, cb)
215 , ZFMP_IN(const ZFListener &, cb)
217
218 // ============================================================
219 // util
220public:
239 , ZFMP_IN(const ZFListener &, runImpl)
240 , ZFMP_IN_OPT(const ZFListener &, cancelImpl, zfnull)
242
243 // ============================================================
244 // start stop
245protected:
249 virtual void aniImplStart(void);
251 virtual void aniImplStop(void);
252
253protected:
255 virtual inline void childAniOnStart(ZF_IN ZFAnimation *childAni) {
257 }
258
259 virtual inline void childAniOnStop(ZF_IN ZFAnimation *childAni) {
261 }
262
263protected:
266
267protected:
268 virtual zfbool _ZFP_ZFAniGroup_queueType(void) {
269 return zffalse;
270 }
271
272private:
273 _ZFP_ZFAniGroupPrivate *d;
274 friend zfclassFwd _ZFP_ZFAniGroupPrivate;
275};
276
277// ============================================================
290zfclass ZFLIB_ZFUtility ZFAniQueue : zfextend ZFAniGroup {
291 ZFOBJECT_DECLARE(ZFAniQueue, ZFAniGroup)
292
293protected:
295 virtual zfbool _ZFP_ZFAniGroup_queueType(void) {
296 return zftrue;
297 }
298};
299
301#endif // #ifndef _ZFI_ZFAniGroup_h_
302
base class of all animation
#define ZF_OUT_OPT
dummy macro that shows the param used as optional output
Definition ZFCoreTypeDef_ClassType.h:192
#define zfextend
dummy macro shows class inherit from another
Definition ZFCoreTypeDef_ClassType.h:53
#define zfoverride
dummy macro shows that method override parent's method
Definition ZFCoreTypeDef_ClassType.h:58
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:180
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:184
#define ZF_IN_OUT
dummy macro that shows the param used as required input and output
Definition ZFCoreTypeDef_ClassType.h:196
#define zfclassFwd
forward declaration of a class type
Definition ZFCoreTypeDef_ClassType.h:31
_ZFT_t_zfbool zfbool
bool type
Definition ZFCoreTypeDef_CoreType.h:103
_ZFT_t_zfindex zfindex
similar to size_t, used for index and size only
Definition ZFCoreTypeDef_CoreType.h:154
#define zftrue
bool true type
Definition ZFCoreTypeDef_CoreType.h:107
_zft_zftimet zftimet
time unit, ensured at least 64 bit, ensured signed
Definition ZFCoreTypeDef_CoreType.h:203
#define zfindexMax()
(zfindex)-1, indicate a max index value, see zfindex
Definition ZFCoreTypeDef_CoreType.h:159
#define zffalse
bool false type
Definition ZFCoreTypeDef_CoreType.h:111
#define zfnull
same as NULL, defined for future use
Definition ZFCoreTypeDef_CoreType.h:88
ZFCompareResult
compare result of two ZFObjects
Definition ZFCoreTypeDef_OtherType.h:28
zft_zfstring< zfchar > zfstring
see zft_zfstring
Definition ZFCoreTypeDef_StringType.h:15
#define ZFMP_IN_OPT(ParamType, paramName, DefaultValue)
see ZFMP_IN
Definition ZFMethod.h:108
#define ZFMP_IN(ParamType, paramName)
macro to wrap param types for ZFMETHOD_INLINE_0 series
Definition ZFMethod.h:105
#define ZFMETHOD_DECLARE_0(ReturnType, MethodName)
see ZFMethod
Definition ZFMethodDeclare.h:693
#define ZFMETHOD_DECLARE_2(ReturnType, MethodName, ZFMP_0, ZFMP_1)
see ZFMethod
Definition ZFMethodDeclare.h:1025
#define ZFMETHOD_DECLARE_1(ReturnType, MethodName, ZFMP_0)
see ZFMethod
Definition ZFMethodDeclare.h:854
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
#define zfclass
same as class, shows that this class is a ZFObject type
Definition ZFObjectClassTypeFwd.h:38
#define ZFOBJECT_DECLARE(ChildClass, SuperClass,...)
necessary for every class inherit from ZFObject
Definition ZFObjectDeclare.h:126
#define ZFEVENT(YourEvent)
see ZFObject::observerNotify
Definition ZFObjectObserver.h:328
#define ZFPROPERTY_ASSIGN(Type, Name,...)
see ZFPROPERTY_RETAIN
Definition ZFPropertyDeclare.h:128
#define ZFLIB_ZFUtility
used to export symbols
Definition ZFUtilityDef.h:15
virtual void aniImplStart(void)
for subclass to achieve actual animation
virtual void childDuration(zftimet duration)
util to set last child's property
virtual void child(ZFAnimation *ani, zfindex index=(((zfindex) -1)))
add child animation
virtual void childOnStop(const ZFListener &cb)
util to attach observer
virtual zfany childTargetAt(zfindex index)
get child animation's target, or null if not specified
virtual void childTarget(ZFObject *target)
util to set last child's property
virtual void delay(zftimet duration=(0))
util to add a dummy child animation to delay specified duration
virtual void childRemoveAll()
remove all child animation
virtual void childAniOnStart(ZFAnimation *childAni)
see E_ChildAniOnStart
Definition ZFAniGroup.h:255
virtual void objectOnDeallocPrepare(void)
called before objectOnDealloc, safe to call virtual functions here
virtual zfautoT< ZFCurve > childCurveAt(zfindex index)
get child animation's curve, or null if not specified
static zfidentity E_ChildAniOnStop(void)
see ZFObject::observerNotify
virtual zfbool & autoUpdateTarget()
whether update all children's target, true by default
Definition ZFAniGroup.h:168
virtual zftimet durationFixed(void)
util method to duration
virtual void childRemoveAt(zfindex index)
remove child animation
static zfidentity E_ChildAniOnStart(void)
see ZFObject::observerNotify
virtual void childOnStart(const ZFListener &cb)
util to attach observer
virtual zftimet childDurationAt(zfindex index)
get child animation's duration, or 0 if not specified
virtual ZFCompareResult objectCompareValueImpl(ZFObject *anotherObj)
see objectCompareValue
virtual void childCurve(ZFCurve *curve)
util to set last child's property
virtual zfbool & autoUpdateCurve()
whether update all children's curve, true by default
Definition ZFAniGroup.h:182
virtual void step(const ZFListener &runImpl, const ZFListener &cancelImpl=(zft_zfnull))
util to attach callback to animation group
virtual void childOnLoop(const ZFListener &cb)
util to attach observer
virtual void aniImplStop(void)
for subclass to stop actual animation
virtual void objectOnInit(void)
override this to init your object
virtual zfbool aniImplCheckValid(void)
called to check whether the animation is currently valid, an invalid animation is ensured can't be st...
virtual zfanyT< ZFAnimation > childAt(zfindex index)
get child animation
virtual void objectOnDealloc(void)
override this to destroy your object
virtual zfbool serializableOnSerializeFromData(const ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializableData *outErrorPos=zft_zfnull)
for serializable data that has "category" attribute, ZFSerializable would ignore it and leave it to s...
virtual void objectInfoImplAppend(zfstring &ret)
see objectInfo
virtual zfbool serializableOnSerializeToData(ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
corresponding to serializableOnSerializeFromData, return whether the task is success,...
virtual zfindex childCount()
child animation count
virtual void childAniOnStop(ZFAnimation *childAni)
see E_ChildAniOnStop
Definition ZFAniGroup.h:259
virtual zfbool & autoUpdateDuration()
whether update all children's duration, true by default
Definition ZFAniGroup.h:175
virtual void target(ZFObject *target)
animation's target, assign only, but would be retain automatically while animation is running
virtual zfanyT< ZFCurve > const & curve()
curve for animation, null to use linear curve, null by default
Definition ZFAnimation.h:75
virtual zftimet & duration()
animation's duration in miliseconds, 0 to use ZFAniDuration, 0 by default
Definition ZFAnimation.h:57
time based event driver
Definition ZFCurve.h:18
listener as ZFCallback, mostly used by ZFObject::observerNotify
Definition ZFObjectObserver.h:30
void observerNotify(zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
notify the observer with eventId
ZFSerializable's data container, see ZFSerializable.
Definition ZFSerializableData.h:74
util method to cast ZFObject types freely
Definition zfany.h:35
see zfany
Definition zfany.h:106
type restrict version of zfauto
Definition zfautoFwd.h:110