
#ifndef _TERASIC_DX_INCLUDE_
#define _TERASIC_DX_INCLUDE_


//#define TERASIC_DX_EXPORTS
// The following ifdef block is the standard way of creating macros which make exporting 
// from a DLL simpler. All files within this DLL are compiled with the TERASIC_DX_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see 
// TERASIC_DX_API functions as being imported from a DLL, wheras this DLL sees symbols
// defined with this macro as being exported.
//#ifdef TERASIC_DX_EXPORTS
//#define TERASIC_DX_API __declspec(dllexport)
//#else
//#define TERASIC_DX_API __declspec(dllimport)
//#endif


#ifdef __cplusplus
extern "C" { 
#endif

#define TERASIC_DX_API	FAR PASCAL


BOOL TERASIC_DX_API DX_New(HWND hWnd);
void TERASIC_DX_API DX_Delete(void);
BOOL TERASIC_DX_API DX_OpenFile(LPTSTR szFile, int *pnVideoWidth, int *pnVideoHeight);
void TERASIC_DX_API DX_CloseFile(void);
BOOL TERASIC_DX_API DX_Capture2File(LPCTSTR szFile);
LPBITMAPINFOHEADER TERASIC_DX_API DX_CaptureImage(void);
void TERASIC_DX_API DX_Pause(void);
void TERASIC_DX_API DX_Stop(void);
BOOL TERASIC_DX_API DX_CanStep(void);
BOOL TERASIC_DX_API DX_Step(int nFrameToStep);
BOOL TERASIC_DX_API DX_SetDisplayRect(RECT rc);
void TERASIC_DX_API DX_Repaint(void);
LONGLONG TERASIC_DX_API DX_GetDuration(void);
LONGLONG TERASIC_DX_API DX_GetCurrentPosition(void);
BOOL TERASIC_DX_API DX_SeekToPosition(LONGLONG rt, BOOL bFlushData);

//================================================================================
// function prototype used for "dynamic load DLL"
typedef BOOL (TERASIC_DX_API *LPDX_New)(HWND hWnd);
typedef void (TERASIC_DX_API *LPDX_Delete)(void);
typedef BOOL (TERASIC_DX_API *LPDX_OpenFile)(LPTSTR szFile, int *pnVideoWidth, int *pnVideoHeight);
typedef void (TERASIC_DX_API *LPDX_CloseFile)(void);
typedef BOOL (TERASIC_DX_API *LPDX_Capture2File)(LPCTSTR szFile);
typedef LPBITMAPINFOHEADER (TERASIC_DX_API *LPDX_CaptureImage)(void);
typedef void (TERASIC_DX_API *LPDX_Pause)(void);
typedef void (TERASIC_DX_API *LPDX_Stop)(void);
typedef BOOL (TERASIC_DX_API *LPDX_CanStep)(void);
typedef BOOL (TERASIC_DX_API *LPDX_Step)(int nFrameToStep);
typedef BOOL (TERASIC_DX_API *LPDX_SetDisplayRect)(RECT rc);
typedef void (TERASIC_DX_API *LPDX_Repaint)(void);
typedef LONGLONG (TERASIC_DX_API *LPDX_GetDuration)(void);
typedef LONGLONG (TERASIC_DX_API *LPDX_GetCurrentPosition)(void);
typedef BOOL     (TERASIC_DX_API *LPDX_SeekToPosition)(LONGLONG rt, BOOL bFlushData);

#ifdef __cplusplus
	}
#endif




#endif //_TERASIC_DX_INCLUDE_

