aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/animlayer.h
blob: 94c45606a6a6397256ad2cfdaba378367cb6c3ad (plain) (blame)
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
#ifndef _ANIMLAYER_H
#define _ANIMLAYER_H

#include "layer.h"

// {6B64CD27-5A26-4c4b-8C59-E6A70CF6493A}
static const GUID animLayerGuid = 
{ 0x6b64cd27, 0x5a26, 0x4c4b, { 0x8c, 0x59, 0xe6, 0xa7, 0xc, 0xf6, 0x49, 0x3a } };

#define ANIMLAYER_SCRIPTPARENT Layer

class AnimLayerScriptController : public LayerScriptController {
  public:

    virtual const wchar_t *getClassName();
    virtual const wchar_t *getAncestorClassName();
    virtual ScriptObjectController *getAncestorController() { return layerController; }
    virtual int getNumFunctions();
    virtual const function_descriptor_struct *getExportedFunctions();
    virtual GUID getClassGuid();
    virtual ScriptObject *instantiate();
    virtual void destroy(ScriptObject *o);
    virtual void *encapsulate(ScriptObject *o);
    virtual void deencapsulate(void *o);

  private:

    static function_descriptor_struct exportedFunction[];
    
};

extern AnimLayerScriptController *animlayerController;


#ifndef _NOSTUDIO

#define TIMER_ANIM 872

#define ANIM_STOPPED 0
#define ANIM_PLAYING 1
#define ANIM_PAUSED 2

#define ANIMLAYER_PARENT Layer

#define ANIM_UNKNOWN 0
#define ANIM_VERT    1
#define ANIM_HORZ    2
#define ANIM_MULTI   3

class AnimatedLayer : public ANIMLAYER_SCRIPTPARENT {
public:
  AnimatedLayer();
	virtual ~AnimatedLayer();

  virtual int onInit();
	virtual int getHeight();
	virtual int getWidth();
	virtual void timerCallback(int id);
  virtual int getSourceOffsetY();
  virtual int getSourceOffsetX();
  virtual void setAutoPlay(int p);
  virtual int setXuiParam(int _xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *value);
  
	virtual void setHeight(int h, int selfset=0);
	virtual void setWidth(int w, int selfset=0);
  virtual SkinBitmap *getBitmap();

  void play();
  void pause();
  void stop();
  int getLength();
  void setStartFrame(int s);
  void setEndFrame(int e);
  void setAutoReplay(int r);
  int getStartFrame();
  int getEndFrame();
  int isPlaying();
  int isPaused();
  int isStopped();
  int getSpeed();
  int getDirection();
  void gotoFrame(int n);
  void setSpeed(int s);
  int getAutoReplay();
  int getCurFrame();
  void setRealtime(int r);

  virtual api_region *getBitmapRegion();
  SkinBitmap *getElementBitmap(int n);
  virtual void makeRegion();
  virtual void deleteRegion();
  void reloadMultipleElements();
  virtual void setElementFrames(int n);
  virtual void setBitmap(const wchar_t *name);

  virtual int onPaint(Canvas *canvas);

protected:
	/*static */void CreateXMLParameters(int master_handle);
  enum {
    ANIMLAYER_AUTOREPLAY=0,
    ANIMLAYER_AUTOPLAY,
    ANIMLAYER_SPEED,
    ANIMLAYER_FRAMEHEIGHT,
    ANIMLAYER_FRAMEWIDTH,
    ANIMLAYER_REALTIME,
    ANIMLAYER_ELEMENTFRAMES,
    ANIMLAYER_START,
    ANIMLAYER_END,
    ANIMLAYER_DEBUG,
  };

private:
  int frameHeight, frameWidth;
  int startframe;
  int endframe;
  int status;
  int curframe;
  int autoreplay;
  int speed;
  int timerset;
  int realtime;
  int style;
  int autoplay;
  PtrList<SkinBitmap> bitmap_elements;
  int multiple_elements_frames;
  int debug;
  int xuihandle;

  void _invalidate();

  void stopTimer();
  void startTimer();

  PtrList<RegionI> regionlist;
  int oldstyle;
	static XMLParamPair params[];

// FG>
// -- SCRIPT -----------------------------------------------------

public:

  // virtuals

  virtual void script_play();
  virtual void script_pause();
  virtual void script_stop();
  virtual int script_getLength();
  virtual void script_setStartFrame(int s);
  virtual void script_setEndFrame(int e);
  virtual void script_setAutoReplay(int r);
  virtual void script_setSpeed(int a);
  virtual int script_getStartFrame();
  virtual int script_getEndFrame();
  virtual int script_getSpeed();
  virtual int script_getDirection();
  virtual int script_getAutoReplay();
  virtual int script_isPlaying();
  virtual int script_isStopped();
  virtual int script_isPaused();
  //virtual void script_gotoFrame(int f);
  virtual void script_onFrame(int n);
  virtual void script_onStop();
  virtual void script_onPlay();
  virtual void script_onPause();
  virtual void script_onResume();
  virtual int script_getCurFrame();
  virtual void script_setRealtime(int r);

  static scriptVar script_vcpu_setSpeed(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s);
  static scriptVar script_vcpu_gotoFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar f);
  static scriptVar script_vcpu_setStartFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s);
  static scriptVar script_vcpu_setEndFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar e);
  static scriptVar script_vcpu_setAutoReplay(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar ar);
  static scriptVar script_vcpu_play(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_pause(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_stop(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);

  static scriptVar script_vcpu_isPlaying(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_isPaused(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_isStopped(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_getStartFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_getEndFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_getLength(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_getDirection(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_getAutoReplay(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_getSpeed(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_getCurFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_setRealtime(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar r);
  static scriptVar script_vcpu_onPlay(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_onStop(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_onPause(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_onResume(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_onFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar f);


#else
class AnimatedLayer : public ANIMLAYER_SCRIPTPARENT {

public:

#endif

//  INSERT_SCRIPT_OBJECT_CONTROL

};

extern const wchar_t animLayerXuiObjectStr[];
extern char animLayerXuiSvcName[];
class AnimLayerXuiSvc : public XuiObjectSvc<AnimatedLayer, animLayerXuiObjectStr, animLayerXuiSvcName> {};


#endif