#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