/*
* Animation class extra info
*
* Copyright 1998 Eric Kohl
*/
#ifndef __WINE_ANIMATE_H
#define __WINE_ANIMATE_H
#include "windef.h"
#include "winbase.h"
#include "vfw.h"
typedef struct tagANIMATE_INFO
{
/* pointer to msvideo functions. it's easier to put them here.
* to be correct, they should be defined on a per process basis, but
* this would required a per process storage. We're using a per object
* storage instead, which is not efficient on memory usage, but
* will lead to less bugs in the future
HIC (WINAPI* fnICOpen)(DWORD, DWORD, UINT);
LRESULT (WINAPI* fnICClose)(HIC);
LRESULT (WINAPI* fnICSendMessage)(HIC, UINT, DWORD, DWORD);
DWORD (WINAPIV* fnICDecompress)(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID);
HMMIO (WINAPI* fnmmioOpenA)(LPSTR,MMIOINFO*,DWORD);
MMRESULT (WINAPI * fnmmioClose)(HMMIO,UINT);
UINT (WINAPI * fnmmioAscend)(HMMIO,MMCKINFO*,UINT);
UINT (WINAPI * fnmmioDescend)(HMMIO,MMCKINFO*,const MMCKINFO*,UINT);
LONG (WINAPI * fnmmioSeek)(HMMIO,LONG,INT);
LONG (WINAPI * fnmmioRead)(HMMIO,HPSTR,LONG);
/* reference to input stream (file or resource) */
HGLOBAL hRes;
HMMIO hMMio; /* handle to mmio stream */
HWND hWnd;
/* information on the loaded AVI file */
MainAVIHeader mah;
AVIStreamHeader ash;
LPBITMAPINFOHEADER inbih;
LPDWORD lpIndex;
/* data for the decompressor */
HIC hic;
LPBITMAPINFOHEADER outbih;
LPVOID indata;
LPVOID outdata;
/* data for the background mechanism */
CRITICAL_SECTION cs;
HANDLE hService;
UINT uTimer;
/* data for playing the file */
int nFromFrame;
int nToFrame;
int nLoop;
int currFrame;
} ANIMATE_INFO;
extern VOID ANIMATE_Register (VOID);
extern VOID ANIMATE_Unregister (VOID);
#endif /* __WINE_ANIMATE_H */