summaryrefslogtreecommitdiff
path: root/coreengine/animation.h
blob: 6a4b733bad340e09205d5d6ffbe21e1afec788bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#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 keepSleeping;
    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 ResetSleep(void);
    void Fade(void);
    void Shift(void);
    void Stop(bool deletePixmaps);
};

#endif //__ANIMATION_H