ZFFramework
 
Loading...
Searching...
No Matches
ZFAudio.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFAudio_h_
7#define _ZFI_ZFAudio_h_
8
9#include "ZFUITypeDef.h"
11
12zfclassFwd _ZFP_ZFAudioPrivate;
16zfclass ZFLIB_ZFUIKit ZFAudio : zfextend ZFObject, zfimplement ZFTaskId {
17 ZFOBJECT_DECLARE(ZFAudio, ZFObject)
18 ZFIMPLEMENT_DECLARE(ZFTaskId)
19
20public:
21 // ============================================================
22 // events
30 ZFEVENT(AudioOnLoad)
36 ZFEVENT(AudioOnStart)
44 ZFEVENT(AudioOnStop)
51 ZFEVENT(AudioOnResume)
57 ZFEVENT(AudioOnPause)
63 ZFEVENT(AudioOnLoop)
64
65 // ============================================================
66public:
69
72
73public:
76
79
82
85
88
91
92public:
95 , ZFMP_IN(const ZFInput &, input)
96 )
97
100 , ZFMP_IN(const zfstring &, url)
102
111
114
117
120
127
130
142
146
152
155
156protected:
161protected:
163 virtual void objectOnInit(void);
165 virtual void objectOnDealloc(void);
166
170 ret += " ";
171 ret += this->stateHint();
172 if(this->started()) {
173 ret += " ";
174 zftimetToStringT(ret, this->position() / 1000);
175 ret += "/";
176 zftimetToStringT(ret, this->duration() / 1000);
177 }
178 }
179
180protected:
182 virtual void audioOnLoad(
183 ZF_IN ZFResultType result
184 , ZF_IN v_zfstring *errorHint
185 ) {
186 zfobj<v_ZFResultType> resultHolder;
187 resultHolder->enumValue(result);
188 this->observerNotify(ZFAudio::E_AudioOnLoad(), resultHolder, errorHint);
189 }
190
191 virtual void audioOnStart(void) {
193 }
194
195 virtual void audioOnStop(
196 ZF_IN ZFResultType result
197 , ZF_IN v_zfstring *errorHint
198 ) {
199 zfobj<v_ZFResultType> resultHolder;
200 resultHolder->enumValue(result);
201 this->observerNotify(ZFAudio::E_AudioOnStop(), resultHolder, errorHint);
202 }
203
204 virtual void audioOnResume(void) {
206 }
207
208 virtual void audioOnPause(void) {
210 }
211
212 virtual void audioOnLoop(void) {
214 }
215
216public:
217 zffinal void _ZFP_ZFAudio_OnLoad(
218 ZF_IN ZFResultType result
219 , ZF_IN v_zfstring *errorHint
220 );
221 zffinal void _ZFP_ZFAudio_OnStop(
222 ZF_IN ZFResultType result
223 , ZF_IN v_zfstring *errorHint
224 );
225 zffinal void _ZFP_ZFAudio_OnResume(void);
226 zffinal void _ZFP_ZFAudio_OnPause(void);
227private:
228 _ZFP_ZFAudioPrivate *d;
229};
230
232#endif // #ifndef _ZFI_ZFAudio_h_
233
_ZFT_t_zfchar zfchar
char wrapper
Definition ZFCoreTypeDef_CharType.h:17
#define zffinal
dummy macro shows that a method or class is designed must not to be overrided
Definition ZFCoreTypeDef_ClassType.h:63
#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_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
_zft_zftimet zftimet
time unit, ensured at least 64 bit, ensured signed
Definition ZFCoreTypeDef_CoreType.h:203
_zft_zffloat zffloat
same as float, see zfindex
Definition ZFCoreTypeDef_CoreType.h:183
zft_zfstring< zfchar > zfstring
see zft_zfstring
Definition ZFCoreTypeDef_StringType.h:15
#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_STATIC_0(ReturnType, MethodName)
see ZFMethod
Definition ZFMethodDeclare.h:708
#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_ON_INIT_DECLARE_1(ZFMP_0)
see ZFOBJECT_ON_INIT_INLINE_1
Definition ZFObjectDeclare.h:263
#define ZFOBJECT_DECLARE(ChildClass, SuperClass,...)
necessary for every class inherit from ZFObject
Definition ZFObjectDeclare.h:126
#define ZFIMPLEMENT_DECLARE(ImplementedInterfaces,...)
see ZFINTERFACE_DECLARE
Definition ZFObjectInterface.h:169
#define zfimplement
shows class implement from interface, see ZFInterface
Definition ZFObjectInterface.h:24
#define ZFEVENT(YourEvent)
see ZFObject::observerNotify
Definition ZFObjectObserver.h:328
#define ZFPROPERTY_ASSIGN(Type, Name,...)
see ZFPROPERTY_RETAIN
Definition ZFPropertyDeclare.h:128
#define ZFPROPERTY_ON_ATTACH_DECLARE(Type, Name)
see ZFPROPERTY_ON_INIT_DECLARE
Definition ZFPropertyDeclare.h:248
v_ZFResultType::ZFEnumType ZFResultType
see v_ZFResultType
Definition ZFResultType.h:23
zfbool zftimetToStringT(zfstring &s, _ZFP_PropTypeW_zftimet const &v, zfstring *errorHint=zft_zfnull)
util method to convert zftimet to string
#define ZFLIB_ZFUIKit
used to export symbols
Definition ZFUIKitDef.h:16
necessary header file for all ZFUIKit member
virtual zfbool startable()
whether able to start
virtual zfbool paused()
whether explicitly paused by user
virtual zfbool loaded()
whether loaded
virtual void audioOnLoop(void)
see E_AudioOnLoop
Definition ZFAudio.h:212
static zfidentity E_AudioOnStop(void)
see ZFObject::observerNotify
virtual void objectOnInit(const ZFInput &input)
load from input
static zfidentity E_AudioOnPause(void)
see ZFObject::observerNotify
virtual void pause()
pause play
virtual void audioOnPause(void)
see E_AudioOnPause
Definition ZFAudio.h:208
virtual void * nativeAudio()
the native audio
virtual void audioOnLoad(ZFResultType result, v_zfstring *errorHint)
see E_AudioOnLoad
Definition ZFAudio.h:182
static zfbool implAvailable()
whether impl is available
virtual zfbool loading()
whether loading
static zfidentity E_AudioOnLoop(void)
see ZFObject::observerNotify
virtual void audioOnStart(void)
see E_AudioOnStart
Definition ZFAudio.h:191
virtual zffloat & volume()
current volume
Definition ZFAudio.h:144
virtual void start()
start to play
virtual zfbool playing()
whether start success and playing, false when loading or still preparing to play or paused
virtual zftimet duration()
duration, valid only when loaded, may be 0 if impl not supported
virtual void load(const ZFInput &input)
load from input
virtual void resume()
resume play
virtual void objectInfoImplAppend(zfstring &ret)
see objectInfo
Definition ZFAudio.h:168
static zfidentity E_AudioOnLoad(void)
see ZFObject::observerNotify
virtual zftimet position()
current position, valid only when started
virtual void audioOnResume(void)
see E_AudioOnResume
Definition ZFAudio.h:204
virtual void objectOnDealloc(void)
override this to destroy your object
virtual zfindex loopCur()
current loop count
virtual zfindex & loop()
loop count of audio, 0 means play once, and zfindexMax means loop infinite until stop called
Definition ZFAudio.h:151
virtual void stop()
stop play
virtual const zfchar * stateHint()
return a state hint for debug
virtual void audioOnStop(ZFResultType result, v_zfstring *errorHint)
see E_AudioOnStop
Definition ZFAudio.h:195
static zfidentity E_AudioOnResume(void)
see ZFObject::observerNotify
virtual zfbool started()
whether started
static zfidentity E_AudioOnStart(void)
see ZFObject::observerNotify
general input callback
Definition ZFIOCallback_input.h:37
virtual void objectInfoImplAppend(zfstring &ret)
see objectInfo
Definition ZFObjectCore.h:331
void observerNotify(zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
notify the observer with eventId
type wrapper for ZFTypeId::Value
Definition ZFTypeId_CoreType.h:198
util class to alloc and hold ZFObject type
Definition ZFObjectAutoPtr.h:157