/******************************Module*Header*******************************\
* Module Name: mtkanim.hxx
*
* Copyright (c) 1997 Microsoft Corporation
*
\**************************************************************************/

#ifndef __mtkanim_hxx__
#define __mtkanim_hxx__

#include "mtk.hxx"

// Animation modes

enum {
    MTK_ANIMATE_NONE = 0, // ? is this useful ?
    MTK_ANIMATE_CONTINUOUS,
    MTK_ANIMATE_INTERVAL
};

enum {
    MTK_ANIMATE_TIMER_ID = 1
};

typedef void (CALLBACK* MTK_ANIMATEPROC)();

/**************************************************************************\
* MTKANIMATOR
*
\**************************************************************************/

class MTKANIMATOR {
public:
    MTKANIMATOR();
    MTKANIMATOR( HWND hwndAttach );
    ~MTKANIMATOR();
    void    SetHwnd( HWND hwndAttach ) { hwnd = hwndAttach; };
    void    SetFunc(MTK_ANIMATEPROC Func);
    void    SetMode( UINT mode, float *fParam );

    BOOL    Draw();  // Call animation function
    void    Start();
    void    Stop();
//mf: ? need Suspend, Resume ?
private:
    void    Init();

    HWND    hwnd;  // window the animator is attached to
    MTK_ANIMATEPROC   AnimateFunc;
    UINT    msUpdateInterval; // update interval, in milliseconds
    int     nFrames;
    UINT    mode;
    UINT    idTimer;    // animate timer
};

typedef MTKANIMATOR*    PMTKANIMATOR;

#endif // __mtkanim_hxx__