- Fix build.
[reactos.git] / reactos / dll / directx / ddraw / rosdraw.h
index 4b2c081..576f129 100644 (file)
 #include <d3dhal.h>
 #include <ddrawgdi.h>
 
+
+/* this sturct are not longer in DDK 
+   I did recrate it by looking diffent betwin DD_xx struct and _DDHAL strucrt 
+   only diffent I found was the global pointer have been change from LPDDRAWI_DDRAWSURFACE_GBL
+   to DD_DIRECTDRAW_GLOBAL
+*/
+
+typedef struct _DDHAL_MAPMEMORYDATA 
+{
+  LPDDRAWI_DDRAWSURFACE_GBL  lpDD;
+  BOOL  bMap;
+  HANDLE  hProcess;
+  FLATPTR  fpProcess;
+  HRESULT  ddRVal;
+} DDHAL_MAPMEMORYDATA;
+
 /* own macro to alloc memmory */
 #define DxHeapMemAlloc(m)  HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, m) 
 #define DxHeapMemFree(p)   HeapFree(GetProcessHeap(), 0, p);
@@ -59,20 +75,45 @@ typedef struct
        /* HEL stuff */
        DWORD HELMemoryAvilable;
 
-} IDirectDrawImpl; 
+    /* internal counter */
+    ULONG ref;
+    
+    /*    Callbacks info */
+    DDHAL_CREATESURFACEDATA      mDdCreateSurface;
+    DDHAL_CANCREATESURFACEDATA   mDdCanCreateSurface;
 
-/******** Surface Object ********/
-typedef struct 
-{    
+    /* Primarey surface we must reach it from every where */
     DDRAWI_DDRAWSURFACE_GBL mPrimaryGlobal;
     DDRAWI_DDRAWSURFACE_MORE mPrimaryMore;
     DDRAWI_DDRAWSURFACE_LCL mPrimaryLocal;
     DDRAWI_DDRAWSURFACE_LCL *mpPrimaryLocals[1];
-
     DDRAWI_DDRAWCLIPPER_LCL mPrimaryClipperLocal;
     DDRAWI_DDRAWCLIPPER_GBL mPrimaryClipperGlobal;
 
     DDSURFACEDESC mddsdPrimary;
+
+} IDirectDrawImpl; 
+
+/******** Surface Object ********/
+typedef struct 
+{    
+
+    DDRAWI_DDRAWSURFACE_LCL *mpInUseSurfaceLocals[1];
+    
+    DDRAWI_DDRAWSURFACE_GBL mSurfGlobal;
+    DDRAWI_DDRAWSURFACE_MORE mSurfMore;
+    DDRAWI_DDRAWSURFACE_LCL mSurfLocal;
+    DDRAWI_DDRAWSURFACE_LCL *mpSurfLocals[1];
+    DDRAWI_DDRAWCLIPPER_LCL mSurfClipperLocal;
+    DDRAWI_DDRAWCLIPPER_GBL mSurfClipperGlobal;
+
+    DDRAWI_DDRAWSURFACE_GBL mOverlayGlobal;
+    DDRAWI_DDRAWSURFACE_LCL mOverlayLocal[6];
+    DDRAWI_DDRAWSURFACE_LCL *mpOverlayLocals[6];
+    DDRAWI_DDRAWSURFACE_MORE mOverlayMore[6];
+
+    DDSURFACEDESC mddsdOverlay;
+
 } DxSurf;
 
 typedef struct 
@@ -80,7 +121,7 @@ typedef struct
        IDirectDrawSurface7Vtbl* lpVtbl;
        IDirectDrawSurface3Vtbl* lpVtbl_v3;
    
-    IDirectDrawImpl* owner;
+    IDirectDrawImpl* Owner;
 
        DDRAWI_DDRAWSURFACE_GBL Global; 
        DDRAWI_DDRAWSURFACE_MORE More; 
@@ -118,6 +159,54 @@ typedef struct
 
 } IDirectDrawPaletteImpl;
 
+/******** Gamma Object ********/
+
+typedef struct 
+{
+       IDirectDrawGammaControlVtbl* lpVtbl;
+    LONG ref;
+    IDirectDrawImpl* Owner;
+    IDirectDrawSurfaceImpl* Surf;
+
+
+} IDirectDrawGammaImpl;
+
+/******** Color Object ********/
+
+typedef struct 
+{
+       IDirectDrawColorControlVtbl* lpVtbl;
+    LONG ref;
+    IDirectDrawImpl* Owner;
+    IDirectDrawSurfaceImpl* Surf;
+
+
+} IDirectDrawColorImpl;
+
+/******** Kernel Object ********/
+
+typedef struct 
+{
+       IDirectDrawKernelVtbl* lpVtbl;
+    LONG ref;
+    IDirectDrawImpl* Owner;
+    IDirectDrawSurfaceImpl* Surf;
+
+} IDirectDrawKernelImpl;
+
+/******** SurfaceKernel Object ********/
+
+typedef struct 
+{
+       IDirectDrawSurfaceKernelVtbl* lpVtbl;
+    LONG ref;
+    IDirectDrawImpl* Owner;
+    IDirectDrawSurfaceImpl* Surf;
+    IDirectDrawKernelImpl * Kernl;
+
+} IDirectDrawSurfaceKernelImpl;
+
+
 /*********** VTables ************/
 
 extern IDirectDraw7Vtbl                                DirectDraw7_Vtable;
@@ -132,6 +221,8 @@ extern IDirectDrawPaletteVtbl               DirectDrawPalette_Vtable;
 extern IDirectDrawClipperVtbl          DirectDrawClipper_Vtable;
 extern IDirectDrawColorControlVtbl     DirectDrawColorControl_Vtable;
 extern IDirectDrawGammaControlVtbl     DirectDrawGammaControl_Vtable;
+extern IDirectDrawKernelVtbl        DirectDrawKernel_Vtable;
+extern IDirectDrawSurfaceKernelVtbl DirectDrawSurfaceKernel_Vtable;
 
 /********* Prototypes **********/
 
@@ -146,8 +237,12 @@ HRESULT Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7 , LPDWORD );
 HRESULT Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 ); 
 HRESULT Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7, DWORD, DWORD, DWORD, DWORD, DWORD );
 HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
-HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD, IDirectDrawSurfaceImpl *ppSurf, IUnknown *pUnkOuter);       
-
+HRESULT Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event);
+HRESULT Hal_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAWSURFACE7 override, DWORD dwFlags);
+HRESULT Hal_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags, LPDDCOLORKEY pCKey);
+HRESULT Hal_DDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect);     
+HRESULT Hal_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
+HRESULT Hal_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
 
 HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 );
 HRESULT Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 );
@@ -158,7 +253,25 @@ HRESULT Hel_DirectDraw_GetScanLine(LPDIRECTDRAW7 , LPDWORD );
 HRESULT Hel_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 );
 HRESULT Hel_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 , DWORD , DWORD ,DWORD , DWORD , DWORD );
 HRESULT Hel_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
-HRESULT Hel_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD, LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter);       
+HRESULT Hel_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event);
+HRESULT Hel_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags, LPDDCOLORKEY pCKey);
+HRESULT Hel_DDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect);
+HRESULT Hel_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
+HRESULT Hel_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAWSURFACE7 override, DWORD dwFlags);
+HRESULT Hel_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
+
+/* HEL CALLBACK */
+DWORD CALLBACK  HelDdDestroyDriver(LPDDHAL_DESTROYDRIVERDATA lpDestroyDriver);
+DWORD CALLBACK  HelDdCreateSurface(LPDDHAL_CREATESURFACEDATA lpCreateSurface);
+DWORD CALLBACK  HelDdSetColorKey(LPDDHAL_SETCOLORKEYDATA lpSetColorKey);
+DWORD CALLBACK  HelDdSetMode(LPDDHAL_SETMODEDATA SetMode);
+DWORD CALLBACK  HelDdWaitForVerticalBlank(LPDDHAL_WAITFORVERTICALBLANKDATA lpWaitForVerticalBlank);
+DWORD CALLBACK  HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA lpCanCreateSurface);
+DWORD CALLBACK  HelDdCreatePalette(LPDDHAL_CREATEPALETTEDATA lpCreatePalette);
+DWORD CALLBACK  HelDdGetScanLine(LPDDHAL_GETSCANLINEDATA lpGetScanLine);
+DWORD CALLBACK  HelDdSetExclusiveMode(LPDDHAL_SETEXCLUSIVEMODEDATA lpSetExclusiveMode);
+DWORD CALLBACK  HelDdFlipToGDISurface(LPDDHAL_FLIPTOGDISURFACEDATA lpFlipToGDISurface);
+
 
 /* Setting for HEL should be move to ros special reg key ? */
 
@@ -177,5 +290,49 @@ HRESULT Hel_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDS
                firstcall = FALSE; \
        } \
        return DDERR_UNSUPPORTED; 
+       
+#define DX_STUB_DD_OK \
+       static BOOL firstcall = TRUE; \
+       if (firstcall) \
+       { \
+               char buffer[1024]; \
+               sprintf ( buffer, "Function %s is not implemented yet (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \
+               OutputDebugStringA(buffer); \
+               firstcall = FALSE; \
+       } \
+       return DD_OK;   
+       
+
+#define DX_STUB_str(x) \
+               { \
+        char buffer[1024]; \
+               sprintf ( buffer, "Function %s %s (%s:%d)\n", __FUNCTION__,x,__FILE__,__LINE__ ); \
+               OutputDebugStringA(buffer); \
+        }
+
+
+//#define DX_WINDBG_trace()  
+
+
+#define DX_WINDBG_trace() \
+       static BOOL firstcallx = TRUE; \
+       if (firstcallx) \
+       { \
+               char buffer[1024]; \
+               sprintf ( buffer, "Enter Function %s (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \
+               OutputDebugStringA(buffer); \
+               firstcallx = TRUE; \
+       }
+
+
+#define DX_WINDBG_trace_res(width,height,bpp) \
+       static BOOL firstcallxx = TRUE; \
+       if (firstcallxx) \
+       { \
+               char buffer[1024]; \
+               sprintf ( buffer, "Setmode have been req width=%d, height=%d bpp=%d\n",width,height,bpp); \
+               OutputDebugStringA(buffer); \
+               firstcallxx = FALSE; \
+       }
 
 #endif /* __DDRAW_PRIVATE */