summaryrefslogtreecommitdiff
path: root/coreengine/animation.h
diff options
context:
space:
mode:
Diffstat (limited to 'coreengine/animation.h')
-rw-r--r--coreengine/animation.h126
1 files changed, 126 insertions, 0 deletions
diff --git a/coreengine/animation.h b/coreengine/animation.h
new file mode 100644
index 0000000..64f17ad
--- /dev/null
+++ b/coreengine/animation.h
@@ -0,0 +1,126 @@
+#ifndef __ANIMATION_H
+#define __ANIMATION_H
+
+#include <vdr/skins.h>
+#include <vdr/thread.h>
+#include "definitions.h"
+
+#define FPS 50
+
+/******************************************************************
+* cScrollable
+******************************************************************/
+class cScrollable {
+protected:
+ cScrollable(void) {};
+ ~cScrollable(void) {};
+public:
+ virtual int ScrollDelay(void) = 0;
+ virtual int ScrollWidth(void) = 0;
+ virtual int ScrollHeight(void) = 0;
+ virtual eScrollMode ScrollMode(void) = 0;
+ virtual eScrollSpeed ScrollSpeed(void) = 0;
+ virtual eOrientation ScrollOrientation(void) = 0;
+ virtual void StartScrolling(void) = 0;
+ virtual void StopScrolling(void) = 0;
+ virtual void SetDrawPort(cPoint &point) = 0;
+ virtual void Flush(void) = 0;
+};
+
+/******************************************************************
+* cDetachable
+******************************************************************/
+class cDetachable {
+protected:
+ cDetachable(void) {};
+ ~cDetachable(void) {};
+public:
+ virtual int Delay(void) = 0;
+ virtual void ParseDetached(void) = 0;
+ virtual void RenderDetached(void) = 0;
+ virtual void StartAnimation(void) = 0;
+ virtual void Flush(void) = 0;
+};
+
+/******************************************************************
+* cFadable
+******************************************************************/
+class cFadable {
+protected:
+ cFadable(void) {};
+ ~cFadable(void) {};
+public:
+ virtual bool Detached(void) = 0;
+ virtual int Delay(void) = 0;
+ virtual int FadeTime(void) = 0;
+ virtual void SetTransparency(int transparency, bool force = false) = 0;
+ virtual void Flush(void) = 0;
+};
+
+/******************************************************************
+* cShiftable
+******************************************************************/
+class cShiftable {
+protected:
+ cShiftable(void) {};
+ ~cShiftable(void) {};
+public:
+ virtual bool Detached(void) = 0;
+ virtual int Delay(void) = 0;
+ virtual int ShiftTime(void) = 0;
+ virtual int ShiftMode(void) = 0;
+ virtual void SetPosition(cPoint &position, cPoint &reference, bool force = false) = 0;
+ virtual void Flush(void) = 0;
+};
+
+/******************************************************************
+* cBlinkable
+******************************************************************/
+class cBlinkable {
+protected:
+ cBlinkable(void) {};
+ ~cBlinkable(void) {};
+public:
+ virtual int BlinkFreq(int func) = 0;
+ virtual void DoBlink(int func, bool on) = 0;
+ virtual void Flush(void) = 0;
+};
+
+/******************************************************************
+* cAnimation
+******************************************************************/
+class cAnimation : public cThread, public cListObject {
+private:
+ cCondWait sleepWait;
+ cScrollable *scrollable;
+ cDetachable *detachable;
+ cFadable *fadable;
+ cShiftable *shiftable;
+ cBlinkable *blinkable;
+ bool waitOnWakeup;
+ bool doAnimation;
+ bool modeIn;
+ int blinkFunc;
+ cPoint shiftstart;
+ cPoint shiftend;
+ void Sleep(int duration);
+ void Wait(void);
+ void Scroll(void);
+ void Detach(void);
+ void Blink(void);
+protected:
+ virtual void Action(void);
+public:
+ cAnimation(cScrollable *scrollable);
+ cAnimation(cDetachable *detachable, bool wait, bool animation);
+ cAnimation(cFadable *fadable, bool fadein);
+ cAnimation(cShiftable *shiftable, cPoint &start, cPoint &end, bool shiftin);
+ cAnimation(cBlinkable *blinkable, int func);
+ ~cAnimation(void);
+ void WakeUp(void);
+ void Fade(void);
+ void Shift(void);
+ void Stop(bool deletePixmaps);
+};
+
+#endif //__ANIMATION_H \ No newline at end of file