summaryrefslogtreecommitdiff
path: root/coreengine/animation.h
blob: 2147e8a5a0ebae751013e3a80e42bc5d110d4a2b (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
129
130
131
#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 SetStartShifting(void) = 0;
    virtual void SetEndShifting(void) = 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;
    bool doFlush;
    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, bool doFlush = true);
    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