15#define GETPFN(name) ((PFN_Drv##name)(pandev->apfn[INDEX_Drv##name]))
80 DPRINT(
"PanEnablePDEV(ppdev %p %dx%dx%d -> %dx%dx%d %d Hz)\n",
82 pdm->dmPelsWidth, pdm->dmPelsHeight, pdm->dmBitsPerPel,
83 pdm->dmPanningWidth, pdm->dmPanningHeight, pdm->dmBitsPerPel, pdm->dmDisplayFrequency);
85 ASSERT(pdm->dmPanningWidth <= pdm->dmPelsWidth && pdm->dmPanningHeight <= pdm->dmPelsHeight);
91 DPRINT1(
"Failed to allocate memory\n");
100 underlyingDevmode = *pdm;
101 underlyingDevmode.
dmPelsWidth = pdm->dmPanningWidth;
116 DPRINT1(
"Failed to enable underlying PDEV\n");
146 DPRINT(
"PanCompletePDEV(%p %p)\n", dhpdev,
hdev);
159 DPRINT(
"PanDisablePDEV(%p)\n", dhpdev);
172 DPRINT(
"PanDisableSurface(%p)\n", dhpdev);
222 DPRINT1(
"Failed to enable underlying surface\n");
230 DPRINT1(
"Failed to lock underlying surface\n");
238 DPRINT1(
"EngCreateDeviceSurface() failed\n");
250 DPRINT1(
"EngAssociateSurface() failed\n");
258 DPRINT1(
"EngCreateBitmap() failed\n");
265 DPRINT1(
"EngLockSurface() failed\n");
269 return pandev->
hsurf;
296 pandev = (
PPANDEV)psoTrg->dhpdev;
305 res =
EngBitBlt(psoTrg,
psoSrc,
psoMask,
pco,
pxlo,
prclTrg,
pptlSrc,
pptlMask,
pbo,
pptlBrush,
rop4);
326 return PanBitBlt(psoDest,
psoSrc,
NULL,
pco,
pxlo,
prclDest,
pptlSrc,
NULL,
NULL,
NULL,
ROP4_SRCCOPY);
377 DPRINT(
"PanMovePointer(%d, %d)\n",
x,
y);
381 if (x < 0 || y >= 0)
return;
390 pfnMovePointer =
GETPFN(MovePointer);
395 y +=
pso->sizlBitmap.cy;
397 if (x < pandev->rclViewport.left)
409 if (y < pandev->rclViewport.top)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
struct _PDEVOBJ * PPDEVOBJ
#define _Out_writes_bytes_(size)
#define _In_reads_opt_(size)
BOOL APIENTRY PanTextOut(_Inout_ SURFOBJ *pso, _In_ STROBJ *pstro, _In_ FONTOBJ *pfo, _In_ CLIPOBJ *pco, _In_opt_ PRECTL prclExtra, _In_opt_ PRECTL prclOpaque, _In_ BRUSHOBJ *pboFore, _In_ BRUSHOBJ *pboOpaque, _In_ PPOINTL pptlOrg, _In_ MIX mix)
BOOL APIENTRY PanCopyBits(_Inout_ SURFOBJ *psoDest, _In_opt_ SURFOBJ *psoSrc, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ PRECTL prclDest, _In_opt_ PPOINTL pptlSrc)
HSURF APIENTRY PanEnableSurface(_In_ DHPDEV dhpdev)
BOOL APIENTRY PanBitBlt(_Inout_ SURFOBJ *psoTrg, _In_opt_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMask, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ PRECTL prclTrg, _In_opt_ PPOINTL pptlSrc, _In_opt_ PPOINTL pptlMask, _In_opt_ BRUSHOBJ *pbo, _In_opt_ PPOINTL pptlBrush, _In_ ROP4 rop4)
VOID APIENTRY PanDisableSurface(_In_ DHPDEV dhpdev)
DHPDEV APIENTRY PanEnablePDEV(_In_ PDEVMODEW pdm, _In_ LPWSTR pwszLogAddress, _In_ ULONG cPat, _In_reads_opt_(cPat) HSURF *phsurfPatterns, _In_ ULONG cjCaps, _Out_writes_bytes_(cjCaps) PULONG pdevcaps, _In_ ULONG cjDevInfo, _Out_writes_bytes_(cjDevInfo) PDEVINFO pdi, _In_ HDEV hdev, _In_ LPWSTR pwszDeviceName, _In_ HANDLE hDriver)
BOOL APIENTRY PanSynchronize(_In_ DHPDEV dhpdev, _In_ PRECTL prcl)
BOOL APIENTRY PanStrokePath(_Inout_ SURFOBJ *pso, _In_ PATHOBJ *ppo, _In_ CLIPOBJ *pco, _In_opt_ XFORMOBJ *pxo, _In_ BRUSHOBJ *pbo, _In_ PPOINTL pptlBrushOrg, _In_ PLINEATTRS plineattrs, _In_ MIX mix)
VOID APIENTRY PanCompletePDEV(_In_ DHPDEV dhpdev, _In_ HDEV hdev)
VOID APIENTRY PanMovePointer(_Inout_ SURFOBJ *pso, _In_ LONG x, _In_ LONG y, _In_ PRECTL prcl)
BOOL APIENTRY PanAlphaBlend(_Inout_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ PRECTL prclDest, _In_ PRECTL prclSrc, _In_ BLENDOBJ *pBlendObj)
VOID APIENTRY PanDisablePDEV(_In_ DHPDEV dhpdev)
BOOL APIENTRY PanGradientFill(_Inout_ SURFOBJ *pso, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ PTRIVERTEX pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nMesh, _In_ PRECTL prclExtents, _In_ PPOINTL pptlDitherOrg, _In_ ULONG ulMode)
void * EngAllocMem(int zero, unsigned long size, int tag=0)
ULONG flUnderlyingGraphicsCaps
#define RtlCopyMemory(Destination, Source, Length)
_In_ STROBJ _In_ FONTOBJ _In_ CLIPOBJ _Null_ RECTL * prclExtra
_In_ STROBJ _In_ FONTOBJ _In_ CLIPOBJ _Null_ RECTL _In_opt_ RECTL _In_ BRUSHOBJ * pboFore
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG cjDevInfo
#define INDEX_DrvAlphaBlend
#define INDEX_DrvStrokePath
LONG_PTR(APIENTRY * PFN)()
typedef DHPDEV(APIENTRY FN_DrvEnablePDEV)(_In_ DEVMODEW *pdm
_In_ PATHOBJ _In_ CLIPOBJ _In_ BRUSHOBJ _In_ POINTL _In_ MIX mix
ENGAPI BOOL APIENTRY EngDeleteSurface(_In_ _Post_ptr_invalid_ HSURF hsurf)
ENGAPI BOOL APIENTRY EngAlphaBlend(_Inout_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclDest, _In_ RECTL *prclSrc, _In_ BLENDOBJ *pBlendObj)
_In_ HANDLE _In_ SURFOBJ * pso
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO * pdi
#define INDEX_DrvDisableSurface
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID pMesh
#define INDEX_DrvGradientFill
ENGAPI SURFOBJ *APIENTRY EngLockSurface(_In_ HSURF hsurf)
#define INDEX_DrvMovePointer
#define INDEX_DrvSynchronize
ENGAPI BOOL APIENTRY EngBitBlt(_Inout_ SURFOBJ *psoTrg, _In_opt_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMask, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclTrg, _In_opt_ POINTL *pptlSrc, _In_opt_ POINTL *pptlMask, _In_opt_ BRUSHOBJ *pbo, _In_opt_ POINTL *pptlBrush, _In_ ROP4 rop4)
ENGAPI HBITMAP APIENTRY EngCreateBitmap(_In_ SIZEL sizl, _In_ LONG lWidth, _In_ ULONG iFormat, _In_ FLONG fl, _In_opt_ PVOID pvBits)
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL * prclTrg
_In_ LPWSTR pwszLogAddress
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL * pptlDitherOrg
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ _In_opt_ POINTL _In_ ROP4 rop4
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_ RECTL * prclSrc
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ _In_opt_ POINTL * pptlBrush
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG nVertex
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
#define INDEX_DrvCompletePDEV
_In_opt_ SURFOBJ _In_opt_ SURFOBJ * psoMask
_Must_inspect_result_ ENGAPI HSURF APIENTRY EngCreateDeviceSurface(_In_ DHSURF dhsurf, _In_ SIZEL sizl, _In_ ULONG iFormatCompat)
#define HOOK_GRADIENTFILL
_In_ LPWSTR _In_ ULONG _In_ ULONG cjCaps
ENGAPI BOOL APIENTRY EngCopyBits(_In_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ __in_data_source(USER_MODE) RECTL *prclDest, _In_ __in_data_source(USER_MODE) POINTL *pptlSrc)
_In_ LPWSTR _In_ ULONG cPat
#define INDEX_DrvEnablePDEV
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL * pptlSrc
_In_ STROBJ _In_ FONTOBJ _In_ CLIPOBJ _Null_ RECTL _In_opt_ RECTL _In_ BRUSHOBJ _In_ BRUSHOBJ * pboOpaque
#define INDEX_DrvCopyBits
ENGAPI BOOL APIENTRY EngAssociateSurface(_In_ HSURF hsurf, _In_ HDEV hdev, _In_ FLONG flHooks)
typedef HSURF(APIENTRY FN_DrvEnableSurface)(_In_ DHPDEV dhpdev)
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ * pbo
FN_DrvMovePointer * PFN_DrvMovePointer
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL * prclExtents
_In_ ULONG _In_ CLIPOBJ _In_ RECTL * prcl
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL _In_ ULONG ulMode
_Inout_ PATHOBJ _In_ CLIPOBJ _In_opt_ XFORMOBJ _In_ BRUSHOBJ _In_ LINEATTRS * plineattrs
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL * pptlMask
_In_ PATHOBJ _In_ CLIPOBJ _In_ BRUSHOBJ _In_ POINTL * pptlBrushOrg
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX * pVertex
struct _GDIINFO * PGDIINFO
_In_ STROBJ _In_ FONTOBJ _In_ CLIPOBJ _Null_ RECTL _In_opt_ RECTL * prclOpaque
_In_ XLATEOBJ _In_ XFORMOBJ * pxo
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO _In_ HDEV _In_ LPWSTR pwszDeviceName
ENGAPI VOID APIENTRY EngUnlockSurface(_In_ _Post_ptr_invalid_ SURFOBJ *pso)
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_ RECTL _In_ BLENDOBJ * pBlendObj
ENGAPI BOOL APIENTRY EngGradientFill(_Inout_ SURFOBJ *psoDest, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ TRIVERTEX *pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nMesh, _In_ RECTL *prclExtents, _In_ POINTL *pptlDitherOrg, _In_ ULONG ulMode)
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL * prclDest
_In_ STROBJ _In_ FONTOBJ _In_ CLIPOBJ _Null_ RECTL _In_opt_ RECTL _In_ BRUSHOBJ _In_ BRUSHOBJ _In_ POINTL * pptlOrg
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO _In_ HDEV _In_ LPWSTR _In_ HANDLE hDriver
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG nMesh
#define INDEX_DrvEnableSurface
#define INDEX_DrvDisablePDEV
_In_ SURFOBJ _In_ CLIPOBJ * pco