⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mqemul2.h

📁 WinCE 3.0 BSP, 包含Inter SA1110, Intel_815E, Advantech_PCM9574 等
💻 H
字号:
#ifndef _MQEMUL2_H
#define _MQEMUL2_H

#define	IS_ODO		0x01
#define	IS_CEPC		0x02
#define	IS_WINSDK	0x04
#define	IS_EMUL		0x08


#ifdef _USE_MQEMUL
#include <windows.h>
#include <tchar.h>
#endif

//Helpful macro
#if defined( DEBUG ) || defined( _DEBUG )
#ifdef x86
#define	MyDebugBreak()	_asm {int 3}
#else
#define	MyDebugBreak()	DebugBreak()
#endif
#else
#define	MyDebugBreak()
#endif

#ifdef _WIN32_WCE
	#if defined ( SH3 )
		#if defined( _MQEMUL ) && defined( _USE_GPE )
		//#include "precomp.h"	//include iff driver
		#endif
		#define ETARGET	IS_ODO
	#elif defined ( _WIN32_WCE_EMULATION )
		#define ETARGET	IS_EMUL
	#else					//Must be CEPC
		#define ETARGET	IS_CEPC
		#if defined( _MQEMUL ) && defined( _USE_GPE )
		//#include "precomp.h"	//include iff driver
		#endif
	#endif
#endif	//_WIN32_WCE
#ifndef ETARGET
	#define ETARGET	IS_WINSDK
#endif


//Emulation Feature
//Emulated op starts from LSB.  Display op starts from MSB
//Note: CE_DRIVER and CE_HARDWARE_OFF flags are checked only after
//		none of the BLT_ and LINE_ features are on!!!
#define	LINE_ON				0x00000001L
#define	LINE_CE_DRIVER		0x00000002L	//Whatever in CE Driver.  Avail on ODO and CEPC

#define	BLT_ROP2			0x00000010L
#define	BLT_ROP3			0x00000020L
#define	BLT_PATTERN			0x00000040L
#define	BLT_RECTFILL		0x00000080L
#define	BLT_CE_DRIVER		0x00000100L	//Avail on ODO and CEPC

#define	BLT_AAFONT			0x00000200L


#define	ZOOM_ON				0x80000000L
#define	COMPARE_ON			0x40000000L
#define	CE_HARDWARE_OFF		0x20000000L	//No hardware acceleration is on
										//For CEPC, S3 acceleration is turned off.

//Emulation Masks
#define	BLT_ON		(BLT_ROP2 | BLT_ROP3 | BLT_PATTERN | BLT_RECTFILL | BLT_AAFONT)
#define	ALL_OP_ON	(ZOOM_ON | COMPARE_ON)
#define	ALL_ON		(ALL_OP_ON|LINE_ON|BLT_ON|CE_HARDWARE_OFF|BLT_CE_DRIVER|LINE_CE_DRIVER)

//BIU DMA related constants
#define	BIU_DMA_GE_ADDR		0
#define	BIU_DMA_FB_ADDR		1

#ifndef DLLEXPORT
#define	DLLEXPORT	_declspec(dllexport)
#endif
#ifndef DLLIMPORT
#define	DLLIMPORT	_declspec(dllimport)
#endif
#ifdef _MQEMUL
#define	DLLDIR	DLLEXPORT
#else	//_MQEMUL
#define	DLLDIR	DLLIMPORT
#endif	//_MQEMUL

#ifndef _USE_GPE
#define	PARAM_BRES_REGULAR	0x0000
#define	PARAM_BRES_CE		0x0001
typedef struct BresLineParms_struct	//Modified from GPELineParms
{
	long			xStart;
	long			yStart;
	int				cPels;
	unsigned long	dM;
	unsigned long	dN;
	long			llGamma;
	int				iDir;
	LPVOID	 		pDst;
	unsigned long	ulStride;
	unsigned long	solidColor;
	RECTL			*prclClip;
	unsigned short	mix;
	unsigned short	nBpp;
	unsigned short	iParamType;
} BresLineParms, *LPBresLineParms;
#endif	//_USE_GPE

#if ETARGET == IS_WINSDK
#define	VIDEO_FRONT_INT		0x00000001L
#define	VIDEO_BACK_INT		0x00000002L
#define	VIDEO_CSC_INT		0x00000004L

#define MAKE_FOURCC( ch0, ch1, ch2, ch3 )                       \
        ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |    \
        ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )

#define FOURCC_YUY2  MAKE_FOURCC('Y','U','Y','2')
#define FOURCC_UYVY  MAKE_FOURCC('U','Y','V','Y')
#define FOURCC_YVYU  MAKE_FOURCC('Y','V','Y','U')

typedef struct tagVideoFileStruct
{
	DWORD	dwWidth;
	DWORD	dwHeight;
	LONG	lPitch;
	DWORD	dwBytesPerDisplayRow;
	DWORD	dwDisplayRows;
	DWORD	dwFourCC;
	DWORD	dwBitsPerPixel;
} VideoFileStruct, *LPVideoFileStruct;
#endif	//IS_WINSDK

#ifdef __cplusplus
extern "C"
{
#endif

//Global exported functions declarations
BOOL	DLLDIR WINAPI	EmulInitialize( DWORD ulFeatures, HWND hWnd,
									DWORD SysMemW=0, DWORD SysMemH=0,
									DWORD SysMemBpp=0, DWORD SysMemStride=0);
//#if ETARGET == IS_WINSDK
//BOOL	DLLDIR WINAPI	EmulLine( long x1, long y1, long x2, long y2, DWORD dwColor,
//				 USHORT mix, RECTL	*prclClip );
//BOOL	DLLDIR WINAPI	EmulBresLine( LPBresLineParms pLineParm );
//#else	//ETARGET == IS_WINSDK
//#ifdef _MQEMUL			//include iff drvr
//#ifndef _USE_GPE
//BOOL	DLLDIR WINAPI	EmulLine( LPBresLineParms pLineParm );
//#else
//BOOL	DLLDIR WINAPI	EmulLine( GPELineParms *pLineParm );
//#endif	//_USE_GPE
//#endif	//_MQEMUL
//#endif	//ETARGET == IS_WINSDK
BOOL	DLLDIR WINAPI	EmulTerminate( DWORD ulFeatures );
BOOL	DLLDIR WINAPI	EmulSetFeature( DWORD dwFeatOn, DWORD dwFeatOff );
BOOL	DLLDIR WINAPI	EmulSetFeatureValue( DWORD dwFeatureBit, LPVOID lpVal );
BOOL	DLLDIR WINAPI	EmulGetFeatureValue( DWORD dwFeatureBit, LPVOID lpVal );
BOOL	DLLDIR WINAPI	EmulDumpScreenBegin( LPTSTR lpFileName, RECT *lpRect, int stride );
BOOL	DLLDIR WINAPI	EmulDumpScreenSub( LPVOID lpSurf, LPRECT lpRect, int stride );
BOOL	DLLDIR WINAPI	EmulDumpScreenDone();
BOOL	DLLDIR WINAPI	EmulCaptureBegin( LPTSTR lpFileName, DWORD, BOOL, LPTSTR );
BOOL	DLLDIR WINAPI	EmulCaptureDone();
BOOL	DLLDIR WINAPI	EmulCaptureOpen();
BOOL	DLLDIR WINAPI	EmulCaptureClose();
BOOL	DLLDIR WINAPI	EmulCreateSysMem( DWORD width, DWORD height, DWORD bpp, DWORD stride, BYTE initVal=0 );
BOOL	DLLDIR WINAPI	EmulFreeSysMem();
#if ETARGET == IS_WINSDK
BOOL	DLLDIR WINAPI	EmulGetSurface( LPVOID );
BOOL	DLLDIR WINAPI	EmulReleaseSurface( LPVOID );
#endif
BOOL	DLLDIR WINAPI	StrToHex( TCHAR *lpStr, DWORD *dwValue, int len );
BOOL	DLLDIR WINAPI	HexToStr( TCHAR *lpStr, DWORD dwValue, int len, BOOL bPrefix );

#ifdef _USE_MQEMUL
//GE Specific.
BOOL	DLLDIR WINAPI	EmulGeReg( DWORD id, DWORD data );
#if ETARGET == IS_WINSDK
BOOL	DLLDIR WINAPI	EmulGeInit();
#else
BOOL	DLLDIR WINAPI	EmulGeInit( LPVOID pDrvSurf, DWORD lStride, int bpp );
#endif
BOOL	DLLDIR WINAPI	EmulGeTerminate();
BOOL	DLLDIR WINAPI	EmulGeWaitSrcFIFO( int count );
BOOL	DLLDIR WINAPI	EmulGeWaitCmdFIFO( int count );
//BIU DMA
BOOL	DLLDIR WINAPI	EmulBIUDMAWrBuf( DWORD index, DWORD data );
BOOL	DLLDIR WINAPI	EmulBIUDMARdBuf( DWORD index, DWORD *data );
BOOL	DLLDIR WINAPI	EmulBIUDMAWrBurst( DWORD address, DWORD count, int addrtype );
BOOL	DLLDIR WINAPI	EmulBIUDMARdBurst( DWORD address, DWORD count, int addrtype );
//GC Specific
BOOL	DLLDIR WINAPI	EmulGcReg( DWORD id, DWORD data );
//Video Specific
#if ETARGET == IS_WINSDK
BOOL	DLLDIR WINAPI	EmulVideoSetFeature( DWORD feature );
BOOL	DLLDIR WINAPI	EmulVideoGetCoeff( LPBYTE lpVCoeff, LPBYTE lpHCoeff, int *lpMaxVCoeff, int *lpMaxHCoeff );
BOOL	DLLDIR WINAPI	EmulVideoSetCoeff( LPBYTE lpVCoeff, LPBYTE lpHCoeff, BOOL isDefault, int MaxVCoeff, int MaxHCoeff );
BOOL	DLLDIR WINAPI	EmulVideoGetCSCMatrix( LPWORD lpwCSC, float *lpfCSC );
BOOL	DLLDIR WINAPI	EmulVideoSetCSCMatrix( LPWORD lpwCSC, float *lpfCSC, BOOL isDefault );
BOOL	DLLDIR WINAPI	EmulVideoReadFile( LPTSTR lpFileName, LPVideoFileStruct *lpvfs );
BOOL	DLLDIR WINAPI	EmulVideoReleaseFile();
//The below func should be removed when Video Input Spec is finalized
BOOL	DLLDIR WINAPI	EmulVideoSetAdjust( DWORD mode, WORD ygain, WORD cgain, int off, int rotate);
BOOL	DLLDIR WINAPI	EmulVideoSetFront( DWORD mode, WORD vdec, WORD hdec, WORD hfilter, DWORD hAccIncr, WORD width);
#endif	//IS_WINSDK
#endif	//_USE_MQEMUL

#ifdef __cplusplus
}
#endif

#endif	//_MQEMUL2_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -