/****************************************************************************/ /* nddapi.h */ /* */ /* RDP DD functions. */ /* */ /* Copyright(c) Microsoft 1996-2000 */ /****************************************************************************/ #ifndef _H_NDDAPI #define _H_NDDAPI /****************************************************************************/ /* Structure: DD_PDEV */ /* */ /* Contents of the handle that the GDI always passes to the display driver. */ /* This structure is filled in from DrvEnablePDEV. */ /****************************************************************************/ typedef struct tagDD_PDEV { ULONG iBitmapFormat; /* Current colour depth as defined */ /* by the BMF_xBPP flags. */ /************************************************************************/ /* Rendering extensions colour information. */ /************************************************************************/ HANDLE hDriver; /* Handle to \Device\Screen */ HDEV hdevEng; /* Engine's handle to PDEV */ HSURF hsurfFrameBuf; /* Frame Buffer surface (bitmap) */ HSURF hsurfDevice; /* Device surface (used by engine) */ SURFOBJ *psoFrameBuf; /* pointer to frame buffer SURFOBJ */ LONG cxScreen; /* Visible screen width */ LONG cyScreen; /* Visible screen height */ LONG cClientBitsPerPel; /* Client display bpp (4,8,15,etc) */ LONG cProtocolBitsPerPel; /* Protocol bpp (8) */ ULONG ulMode; /* Mode the mini-port driver is in. */ FLONG flHooks; /* What we're hooking from GDI */ /************************************************************************/ /* Pointer to the Frame Buffer */ /************************************************************************/ PBYTE pFrameBuf; HANDLE SectionObject; /* Section Object for Frame Buffer */ /************************************************************************/ /* Palette stuff. */ /************************************************************************/ HPALETTE hpalDefault; /* GDI handle to the default palette*/ FLONG flRed; /* Red mask for bitmask modes */ FLONG flGreen; /* Green mask for bitmask modes */ FLONG flBlue; /* Blue mask for bitmask modes */ // NOTE!! This must be the last entry else the memset(0) code in nddapi.c // will get messed up. PALETTEENTRY Palette[256]; /* The palette if palette managed */ } DD_PDEV, * PDD_PDEV; /****************************************************************************/ // Structure: DD_DSURF // // Device surface for the offscreen bitmaps /****************************************************************************/ typedef struct tagDD_DSURF { ULONG bitmapId; INT shareId; SIZEL sizl; // size of the offscreen bitmap ULONG iBitmapFormat; // color depth for the bitmap, // defined by the BMF_xBPP flags. PDD_PDEV ppdev; // Need this for deleting the bitmap SURFOBJ *pso; // points to the backup GDI surface ULONG flags; #define DD_NO_OFFSCREEN 0x1 // If this flag is on, it indicates that the bitmap // has been punt off the offscreen list, // or there is a client offscreen error. // Either case, the server has to send the offscreen // bitmap as regular memory cached bitmap. } DD_DSURF, * PDD_DSURF; /****************************************************************************/ /* Number of functions supported by our display driver. */ /****************************************************************************/ #ifdef DRAW_GDIPLUS #ifdef DRAW_NINEGRID #define DD_NUM_DRIVER_INTERCEPTS 38 #else #define DD_NUM_DRIVER_INTERCEPTS 37 #endif #else // DRAW_GDIPLUS #ifdef DRAW_NINEGRID #define DD_NUM_DRIVER_INTERCEPTS 37 #else #define DD_NUM_DRIVER_INTERCEPTS 36 #endif #endif //DRAWGDIPLUS #ifdef DRAW_NINEGRID #define INDEX_DrvNineGrid 91L #define GCAPS2_REMOTEDRIVER 0x00000400 typedef struct NINEGRID { ULONG flFlags; LONG ulLeftWidth; LONG ulRightWidth; LONG ulTopHeight; LONG ulBottomHeight; COLORREF crTransparent; } NINEGRID, *PNINEGRID; BOOL DrvNineGrid( SURFOBJ *psoDst, SURFOBJ *psoSrc, CLIPOBJ *pco, XLATEOBJ *pxlo, PRECTL prclDst, PRECTL prclSrc, PNINEGRID png, BLENDOBJ *pBlendObj, PVOID pvReserved ); BOOL APIENTRY EngNineGrid( SURFOBJ *psoDst, SURFOBJ *psoSrc, CLIPOBJ *pco, XLATEOBJ *pxlo, PRECTL prclDst, PRECTL prclSrc, PNINEGRID png, BLENDOBJ *pBlendObj, PVOID pvReserved ); #endif /****************************************************************************/ /* Name of the display driver as passed back in the DEVMODEW structure. */ /****************************************************************************/ #define DD_DLL_NAME L"rdpdd" /****************************************************************************/ /* Prototypes. */ /****************************************************************************/ #ifdef DC_DEBUG void DrvDebugPrint(char *, ...); #endif #endif /* _H_NDDAPI */