arsa  2.7
cdxlottie.h
Go to the documentation of this file.
1 #ifndef _CDXLOTTIE_H_
2 #define _CDXLOTTIE_H_
3 
4 // push avoid dll warning
5 #ifdef __WIN32__
6 #pragma warning( push )
7 #pragma warning( disable: 4251 )
8 #endif
9 
10 #include "arsa_begin_code.h"
11 #include <irrlicht.h>
12 
13 namespace rlottie
14 {
15  class Animation;
16 }
17 
18 struct LOTTIECACHE;
19 struct LOTTIEINFO;
20 
22 {
23 public:
24  CDXLottie( );
25  virtual ~CDXLottie( );
26 
27  virtual void Create( void );
28  virtual void Destroy( void );
29  virtual void Update(irr::u32 timeMs);
30  virtual LOTTIECACHE* GetLottie(const irr::io::path& filename, LOTTIECACHE* owner = 0);
31  virtual LOTTIECACHE* GetLottie(irr::io::IReadFile* fp, LOTTIECACHE* owner = 0);
32  virtual LOTTIECACHE* GetLottieThread(const irr::io::path& filename);
33 
34  virtual irr::core::stringc Load(LOTTIECACHE* lottie);
35  virtual LOTTIEINFO* Get(const irr::core::stringc& guid);
36  virtual const LOTTIEINFO* Get(const irr::core::stringc& guid) const;
37  virtual void Play(const irr::core::stringc& guid);
38  virtual void Pause(const irr::core::stringc& guid);
39  virtual void Stop(const irr::core::stringc& guid);
40  virtual void Loop(const irr::core::stringc& guid, irr::u32 loopflags);
41  virtual irr::u32 GetLoop(const irr::core::stringc& guid) const;
42  virtual void SetFPS(const irr::core::stringc& guid, irr::f32 fps);
43  virtual irr::f32 GetFPS(const irr::core::stringc& guid) const;
44  virtual bool IsPlaying(const irr::core::stringc& guid);
45  virtual bool IsEnd(const irr::core::stringc& guid);
46  virtual bool IsExist(const irr::core::stringc& guid) const;
47  virtual void SetFit(const irr::core::stringc& guid, bool fit);
48  virtual bool IsFit(const irr::core::stringc& guid) const;
49  virtual bool IsReadyFirst(const irr::core::stringc& guid);
50  virtual bool IsReady(const irr::core::stringc& guid) const;
51  virtual void SetFrame(const irr::core::stringc& guid, irr::s32 frame);
52  virtual irr::s32 GetFrame(const irr::core::stringc& guid) const;
53  virtual irr::s32 GetFrameCount(const irr::core::stringc& guid) const;
54  virtual irr::io::path GetFilename(const irr::core::stringc& guid) const;
55 
56 
57  //virtual bool CacheLottie(const irr::io::path& scriptname);
58  virtual void Remove( const irr::core::stringc& guid);
59  virtual void RemoveAll( void );
60  virtual void RemoveCache(const irr::io::path& filename);
61  virtual void RemoveCacheAll(void);
62 
63  // video
64  virtual bool Resize(const irr::core::stringc& guid, const irr::core::dimension2du& size);
65  virtual irr::core::dimension2du getTextureSize(const irr::core::stringc& guid);
66  virtual irr::video::ITexture* GetTexture(const irr::core::stringc& guid);
67 
68  virtual irr::u32 getCount() const { return m_Snds.size(); }
69  virtual irr::u32 getCacheCount() const { return m_SndCaches.size(); }
70  virtual const irr::core::map<irr::io::path, LOTTIEINFO*>& getMap() const { return m_Snds; }
71  virtual const irr::core::map<irr::io::path, LOTTIECACHE*>& getMapCache() const { return m_SndCaches; }
72  virtual const irr::core::map<irr::io::path, LOTTIECACHE*>& getMapCacheTemp() const { return m_SndCachesTemp; }
73 
74  // !!!DONT'T CALL!!!, thread and internal used only!
75  bool isQuit() const { return m_quit; }
76  bool isQuitCache() const { return m_quitCache; }
77  void lock();
78  void unlock();
79  void lockList();
80  void unlockList();
81  void lockListCache();
82  void unlockListCache();
83  void lockListCacheWhenRemove();
84  void unlockListCacheWhenRemove();
85 
86 private:
88  irr::core::map<irr::io::path, LOTTIECACHE*> m_SndCaches; // filename, pointer
89  irr::core::map<irr::io::path, LOTTIECACHE*> m_SndCachesTemp; // thread cache
90  bool m_quit;
91  bool m_quitCache;
92  void* m_lock;
93  void* m_lockList;
94  void* m_lockListCache;
95  void* m_lockListCacheWhenRemove;
96  void* m_thread;
97  void* m_threadCache;
98  irr::u32 LastTimeMs;
99  irr::f32 DeltaTime;
100 
101  void createThread();
102  void freeThread();
103  void createThreadCache();
104  void freeThreadCache();
105  void* createSemaphore( int value );
106  void freeSemaphore(void** semaphore);
107  void internal_lock( void* semaphore );
108  void internal_unlock( void* semaphore );
109 };
110 
111 // pop avoid dll warning
112 #ifdef __WIN32__
113 #pragma warning( pop )
114 #endif
115 
116 #endif
virtual const irr::core::map< irr::io::path, LOTTIECACHE * > & getMapCache() const
Definition: cdxlottie.h:71
Interface providing read access to a file.
Definition: IReadFile.h:18
float f32
32 bit floating point variable.
Definition: irrTypes.h:108
map template for associative arrays using a red-black tree
Definition: irrMap.h:18
Main header file of the irrlicht, the only file needed to include.
GLsizeiptr size
signed int s32
32 bit signed variable.
Definition: irrTypes.h:70
GLsizei const GLfloat * value
virtual irr::u32 getCacheCount() const
Definition: cdxlottie.h:69
bool isQuit() const
Definition: cdxlottie.h:75
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:62
bool isQuitCache() const
Definition: cdxlottie.h:76
virtual const irr::core::map< irr::io::path, LOTTIEINFO * > & getMap() const
Definition: cdxlottie.h:70
#define ARSA_API
virtual irr::u32 getCount() const
Definition: cdxlottie.h:68
Interface of a Video Driver dependent Texture.
Definition: ITexture.h:177
virtual const irr::core::map< irr::io::path, LOTTIECACHE * > & getMapCacheTemp() const
Definition: cdxlottie.h:72