/**************************************************************************** DVA.H Copyright (c) 1993-1994 Microsoft Corporation DVA 1.0 Interface Definitions ***************************************************************************/ #ifndef _INC_DVA #define _INC_DVA #ifdef WIN32 #define DVABeginAccess(hdva, x, y, dx, dy) 0 #define DVAEndAccess(hdva) 0 #define DVAGetSurfaceFmt(hdva) 0 #define DVAGetSurfacePtr(hdva) 0 #else #ifdef __cplusplus #define __inline inline extern "C" { #endif /**************************************************************************** ***************************************************************************/ #include "dvaddi.h" // interface to the display driver /**************************************************************************** ***************************************************************************/ typedef DVASURFACEINFO FAR *PDVA; typedef PDVA HDVA; /**************************************************************************** ***************************************************************************/ // // this code in biCompression means the frame buffer must be accesed via // 48 bit pointers! using *ONLY* the given selector // // BI_1632 has bitmasks (just like BI_BITFIELDS) for biBitCount == 16,24,32 // #ifndef BI_1632 #define BI_1632 0x32333631 // '1632' #endif #ifndef BI_BITFIELDS #define BI_BITFIELDS 3 #endif /**************************************************************************** ***************************************************************************/ #if defined(_INC_VFW) || defined(_INC_DRAWDIB) // // this API is in MSVIDEO.DLL // BOOL VFWAPI DVAGetSurface(HDC hdc, int nSurface, DVASURFACEINFO FAR *lpSurfaceInfo); #else // // this API uses the Escape to the display driver only // __inline BOOL DVAGetSurface(HDC hdc, int nSurface, DVASURFACEINFO FAR *pdva) { int i; i = Escape(hdc, DVAGETSURFACE,sizeof(int),(LPCSTR)&nSurface,(LPVOID)pdva); return i > 0; } #endif /**************************************************************************** ***************************************************************************/ __inline PDVA DVAOpenSurface(HDC hdc, int nSurface) { PDVA pdva; pdva = (PDVA)GlobalLock(GlobalAlloc(GHND|GMEM_SHARE, sizeof(DVASURFACEINFO))); if (pdva == NULL) return NULL; if (!DVAGetSurface(hdc, nSurface, pdva) || !pdva->OpenSurface(pdva->lpSurface)) { GlobalFree((HGLOBAL)SELECTOROF(pdva)); return NULL; } return pdva; } /**************************************************************************** ***************************************************************************/ __inline void DVACloseSurface(PDVA pdva) { if (pdva == NULL) return; pdva->CloseSurface(pdva->lpSurface); GlobalFree((HGLOBAL)SELECTOROF(pdva)); } /**************************************************************************** ***************************************************************************/ __inline BOOL DVABeginAccess(PDVA pdva, int x, int y, int dx, int dy) { return pdva->BeginAccess(pdva->lpSurface, x, y, dx, dy); } /**************************************************************************** ***************************************************************************/ __inline void DVAEndAccess(PDVA pdva) { pdva->EndAccess(pdva->lpSurface); } /**************************************************************************** ***************************************************************************/ __inline LPBITMAPINFOHEADER DVAGetSurfaceFmt(PDVA pdva) { if (pdva == NULL) return NULL; return &pdva->BitmapInfo; } /**************************************************************************** ***************************************************************************/ __inline LPVOID DVAGetSurfacePtr(PDVA pdva) { if (pdva == NULL) return NULL; return (LPVOID)MAKELONG(pdva->offSurface, pdva->selSurface); } #ifdef __cplusplus } #endif #endif // else WIN32 #endif // _INC_DVA