--- /dev/null
+\r
+#ifndef __D3D8THK_H\r
+#define __D3D8THK_H\r
+\r
+#include <ddk\ddrawint.h>\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+BOOL STDCALL NtGdiD3dContextCreate(\r
+ HANDLE hDirectDrawLocal,\r
+ HANDLE hSurfColor,\r
+ HANDLE hSurfZ,\r
+ PD3DNTHAL_CONTEXTCREATEDATA pdcci\r
+);\r
+\r
+DWORD STDCALL NtGdiD3dContextDestroy( \r
+ PD3DNTHAL_CONTEXTDESTROYDATA pContextDestroyData\r
+);\r
+\r
+DWORD STDCALL NtGdiD3dContextDestroyAll(VOID);\r
+\r
+DWORD STDCALL NtGdiD3dDrawPrimitives2( \r
+ HANDLE hCmdBuf,\r
+ HANDLE hVBuf,\r
+ PD3DNTHAL_DRAWPRIMITIVES2DATA pded,\r
+ FLATPTR *pfpVidMemCmd,\r
+ DWORD *pdwSizeCmd,\r
+ FLATPTR *pfpVidMemVtx,\r
+ DWORD *pdwSizeVtx\r
+);\r
+\r
+DWORD STDCALL NtGdiD3dValidateTextureStageState( \r
+ PD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA pData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdAddAttachedSurface( \r
+ HANDLE hSurface,\r
+ HANDLE hSurfaceAttached,\r
+ PDD_ADDATTACHEDSURFACEDATA puAddAttachedSurfaceData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdAlphaBlt(VOID);\r
+\r
+BOOL STDCALL NtGdiDdAttachSurface( \r
+ HANDLE hSurfaceFrom,\r
+ HANDLE hSurfaceTo\r
+);\r
+\r
+DWORD STDCALL NtGdiDdBeginMoCompFrame( \r
+ HANDLE hMoComp,\r
+ PDD_BEGINMOCOMPFRAMEDATA puBeginFrameData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdBlt( \r
+ HANDLE hSurfaceDest,\r
+ HANDLE hSurfaceSrc,\r
+ PDD_BLTDATA puBltData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdCanCreateD3DBuffer( \r
+ HANDLE hDirectDraw,\r
+ PDD_CANCREATESURFACEDATA puCanCreateSurfaceData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdCanCreateSurface( \r
+ HANDLE hDirectDraw,\r
+ PDD_CANCREATESURFACEDATA puCanCreateSurfaceData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdColorControl( \r
+ HANDLE hSurface,\r
+ PDD_COLORCONTROLDATA puColorControlData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdCreateD3DBuffer( \r
+ HANDLE hDirectDraw,\r
+ HANDLE *hSurface,\r
+ DDSURFACEDESC *puSurfaceDescription,\r
+ DD_SURFACE_GLOBAL *puSurfaceGlobalData,\r
+ DD_SURFACE_LOCAL *puSurfaceLocalData,\r
+ DD_SURFACE_MORE *puSurfaceMoreData,\r
+ PDD_CREATESURFACEDATA puCreateSurfaceData,\r
+ HANDLE *puhSurface\r
+);\r
+\r
+HANDLE STDCALL NtGdiDdCreateDirectDrawObject( \r
+ HDC hdc\r
+);\r
+\r
+HANDLE STDCALL NtGdiDdCreateMoComp( \r
+ HANDLE hDirectDraw,\r
+ PDD_CREATEMOCOMPDATA puCreateMoCompData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdCreateSurface( \r
+ HANDLE hDirectDraw,\r
+ HANDLE *hSurface,\r
+ DDSURFACEDESC *puSurfaceDescription,\r
+ DD_SURFACE_GLOBAL *puSurfaceGlobalData,\r
+ DD_SURFACE_LOCAL *puSurfaceLocalData,\r
+ DD_SURFACE_MORE *puSurfaceMoreData,\r
+ PDD_CREATESURFACEDATA puCreateSurfaceData,\r
+ HANDLE *puhSurface\r
+);\r
+\r
+DWORD STDCALL NtGdiDdCreateSurfaceEx( \r
+ HANDLE hDirectDraw,\r
+ HANDLE hSurface,\r
+ DWORD dwSurfaceHandle\r
+);\r
+\r
+HANDLE STDCALL NtGdiDdCreateSurfaceObject( \r
+ HANDLE hDirectDrawLocal,\r
+ HANDLE hSurface,\r
+ PDD_SURFACE_LOCAL puSurfaceLocal,\r
+ PDD_SURFACE_MORE puSurfaceMore,\r
+ PDD_SURFACE_GLOBAL puSurfaceGlobal,\r
+ BOOL bComplete\r
+);\r
+\r
+BOOL STDCALL NtGdiDdDeleteDirectDrawObject( \r
+ HANDLE hDirectDrawLocal\r
+);\r
+\r
+BOOL STDCALL NtGdiDdDeleteSurfaceObject( \r
+ HANDLE hSurface\r
+);\r
+\r
+DWORD STDCALL NtGdiDdDestroyD3DBuffer( \r
+ HANDLE hSurface\r
+);\r
+\r
+DWORD STDCALL NtGdiDdDestroyMoComp( \r
+ HANDLE hMoComp,\r
+ PDD_DESTROYMOCOMPDATA puBeginFrameData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdDestroySurface( \r
+ HANDLE hSurface,\r
+ BOOL bRealDestroy\r
+);\r
+\r
+DWORD STDCALL NtGdiDdEndMoCompFrame( \r
+ HANDLE hMoComp,\r
+ PDD_ENDMOCOMPFRAMEDATA puEndFrameData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdFlip( \r
+ HANDLE hSurfaceCurrent,\r
+ HANDLE hSurfaceTarget,\r
+ HANDLE hSurfaceCurrentLeft,\r
+ HANDLE hSurfaceTargetLeft,\r
+ PDD_FLIPDATA puFlipData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdFlipToGDISurface( \r
+ HANDLE hDirectDraw,\r
+ PDD_FLIPTOGDISURFACEDATA puFlipToGDISurfaceData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetAvailDriverMemory( \r
+ HANDLE hDirectDraw,\r
+ PDD_GETAVAILDRIVERMEMORYDATA puGetAvailDriverMemoryData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetBltStatus( \r
+ HANDLE hSurface,\r
+ PDD_GETBLTSTATUSDATA puGetBltStatusData\r
+);\r
+\r
+HDC STDCALL NtGdiDdGetDC( \r
+ HANDLE hSurface,\r
+ PALETTEENTRY *puColorTable\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetDriverInfo( \r
+ HANDLE hDirectDraw,\r
+ PDD_GETDRIVERINFODATA puGetDriverInfoData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetDriverState( \r
+ PDD_GETDRIVERSTATEDATA pdata\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetDxHandle( \r
+ HANDLE hDirectDraw,\r
+ HANDLE hSurface,\r
+ BOOL bRelease\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetFlipStatus( \r
+ HANDLE hSurface,\r
+ PDD_GETFLIPSTATUSDATA puGetFlipStatusData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetInternalMoCompInfo( \r
+ HANDLE hDirectDraw,\r
+ PDD_GETINTERNALMOCOMPDATA puGetInternalData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetMoCompBuffInfo( \r
+ HANDLE hDirectDraw,\r
+ PDD_GETMOCOMPCOMPBUFFDATA puGetBuffData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetMoCompFormats( \r
+ HANDLE hDirectDraw,\r
+ PDD_GETMOCOMPFORMATSDATA puGetMoCompFormatsData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetMoCompGuids( \r
+ HANDLE hDirectDraw,\r
+ PDD_GETMOCOMPGUIDSDATA puGetMoCompGuidsData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdGetScanLine( \r
+ HANDLE hDirectDraw,\r
+ PDD_GETSCANLINEDATA puGetScanLineData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdLock( \r
+ HANDLE hSurface,\r
+ PDD_LOCKDATA puLockData,\r
+ HDC hdcClip\r
+);\r
+\r
+DWORD STDCALL NtGdiDdLockD3D( \r
+ HANDLE hSurface,\r
+ PDD_LOCKDATA puLockData\r
+);\r
+\r
+BOOL STDCALL NtGdiDdQueryDirectDrawObject( \r
+ HANDLE hDirectDrawLocal,\r
+ DD_HALINFO *pHalInfo,\r
+ DWORD *pCallBackFlags,\r
+ PD3DNTHAL_CALLBACKS puD3dCallbacks,\r
+ PD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData,\r
+ PDD_D3DBUFCALLBACKS puD3dBufferCallbacks,\r
+ LPDDSURFACEDESC puD3dTextureFormats,\r
+ DWORD *puNumHeaps,\r
+ VIDEOMEMORY *puvmList,\r
+ DWORD *puNumFourCC,\r
+ DWORD *puFourCC\r
+);\r
+\r
+DWORD STDCALL NtGdiDdQueryMoCompStatus( \r
+ HANDLE hMoComp,\r
+ PDD_QUERYMOCOMPSTATUSDATA puQueryMoCompStatusData\r
+);\r
+\r
+BOOL STDCALL NtGdiDdReenableDirectDrawObject( \r
+ HANDLE hDirectDrawLocal,\r
+ BOOL *pubNewMode\r
+);\r
+\r
+BOOL STDCALL NtGdiDdReleaseDC( \r
+ HANDLE hSurface\r
+);\r
+\r
+DWORD STDCALL NtGdiDdRenderMoComp( \r
+ HANDLE hMoComp,\r
+ PDD_RENDERMOCOMPDATA puRenderMoCompData\r
+);\r
+\r
+BOOL STDCALL NtGdiDdResetVisrgn( \r
+ HANDLE hSurface,\r
+ HWND hwnd\r
+);\r
+\r
+DWORD STDCALL NtGdiDdSetColorKey( \r
+ HANDLE hSurface,\r
+ PDD_SETCOLORKEYDATA puSetColorKeyData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdSetExclusiveMode( \r
+ HANDLE hDirectDraw,\r
+ PDD_SETEXCLUSIVEMODEDATA puSetExclusiveModeData\r
+);\r
+\r
+BOOL STDCALL NtGdiDdSetGammaRamp( \r
+ HANDLE hDirectDraw,\r
+ HDC hdc,\r
+ LPVOID lpGammaRamp\r
+);\r
+\r
+DWORD STDCALL NtGdiDdSetOverlayPosition( \r
+ HANDLE hSurfaceSource,\r
+ HANDLE hSurfaceDestination,\r
+ PDD_SETOVERLAYPOSITIONDATA puSetOverlayPositionData\r
+);\r
+\r
+VOID STDCALL NtGdiDdUnattachSurface( \r
+ HANDLE hSurface,\r
+ HANDLE hSurfaceAttached\r
+);\r
+\r
+DWORD STDCALL NtGdiDdUnlock( \r
+ HANDLE hSurface,\r
+ PDD_UNLOCKDATA puUnlockData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdUnlockD3D( \r
+ HANDLE hSurface,\r
+ PDD_UNLOCKDATA puUnlockData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdUpdateOverlay( \r
+ HANDLE hSurfaceDestination,\r
+ HANDLE hSurfaceSource,\r
+ PDD_UPDATEOVERLAYDATA puUpdateOverlayData\r
+);\r
+\r
+DWORD STDCALL NtGdiDdWaitForVerticalBlank( \r
+ HANDLE hDirectDraw,\r
+ PDD_WAITFORVERTICALBLANKDATA puWaitForVerticalBlankData\r
+);\r
+\r
+#ifdef __cplusplus\r
+} /* extern "C" */\r
+#endif\r
+\r
+#endif // __D3D8THK_H\r
--- /dev/null
+/*\r
+ *\r
+ * This library is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU Lesser General Public\r
+ * License as published by the Free Software Foundation; either\r
+ * version 2.1 of the License, or (at your option) any later version.\r
+ *\r
+ * This library is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+ * Lesser General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU Lesser General Public\r
+ * License along with this library; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+ */\r
+/*\r
+ * $Id:\r
+ * COPYRIGHT: See COPYING in the top level directory\r
+ * PROJECT: ReactOS GDI32\r
+ * PURPOSE: Gdi DirectX inteface\r
+ * FILE: lib/gdi32/misc/gdientry.c\r
+ * PROGRAMER: Magnus Olsen (magnus@greatlord.com)\r
+ * REVISION HISTORY: \r
+ * NOTES: \r
+ */\r
+\r
+\r
+#include "precomp.h"\r
+static LPDDRAWI_DIRECTDRAW_GBL pDirectDrawGlobalInternal;\r
+\r
+\r
+/*\r
+ * @implemented\r
+ *\r
+ * GDIEntry 1 \r
+ */\r
+BOOL STDCALL DdCreateDirectDrawObject( \r
+LPDDRAWI_DIRECTDRAW_GBL pDirectDrawGlobal,\r
+HDC hdc)\r
+{ \r
+ HDC newHdc;\r
+ /* check see if HDC is NULL or not \r
+ if it null we need create the DC */\r
+\r
+ if (hdc != NULL) \r
+ {\r
+ pDirectDrawGlobal->hDD = (ULONG_PTR)NtGdiDdCreateDirectDrawObject(hdc); \r
+ \r
+ /* if hDD ==NULL */\r
+ if (!pDirectDrawGlobal->hDD) \r
+ {\r
+ return FALSE;\r
+ }\r
+ return TRUE;\r
+ }\r
+\r
+ /* The hdc was not null we need check see if we alread \r
+ have create a directdraw handler */\r
+\r
+ /* if hDD !=NULL */\r
+ if (pDirectDrawGlobalInternal->hDD)\r
+ {\r
+ /* we have create a directdraw handler already */\r
+\r
+ pDirectDrawGlobal->hDD = pDirectDrawGlobalInternal->hDD;\r
+ return TRUE;\r
+ }\r
+\r
+ /* Now we create the DC */\r
+ newHdc = CreateDC(L"DISPLAY\0", NULL, NULL, NULL);\r
+\r
+ /* we are checking if we got a hdc or not */\r
+ if ((ULONG_PTR)newHdc != pDirectDrawGlobalInternal->hDD)\r
+ {\r
+ pDirectDrawGlobalInternal->hDD = (ULONG_PTR) NtGdiDdCreateDirectDrawObject(newHdc);\r
+ NtGdiDeleteDC(newHdc);\r
+ }\r
+\r
+ pDirectDrawGlobal->hDD = pDirectDrawGlobalInternal->hDD;\r
+\r
+ /* test see if we got a handler */\r
+ if (!pDirectDrawGlobalInternal->hDD)\r
+ { \r
+ return FALSE;\r
+ }\r
+\r
+ return TRUE;\r
+}\r