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