--- /dev/null
+/* public interfaces we doing pur type cast here instead in the code, it will make more cleaner code */
+
+HRESULT WINAPI
+Main_DirectDraw_QueryInterface (
+ LPDDRAWI_DIRECTDRAW_INT This,
+ REFIID id,
+ LPVOID *obj);
+
+ULONG WINAPI
+Main_DirectDraw_AddRef (LPDDRAWI_DIRECTDRAW_INT This);
+
+ULONG WINAPI
+Main_DirectDraw_Release (LPDDRAWI_DIRECTDRAW_INT This);
+
+HRESULT WINAPI
+Main_DirectDraw_Compact(LPDDRAWI_DIRECTDRAW_INT This);
+
+HRESULT WINAPI
+Main_DirectDraw_CreateClipper(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwFlags,
+ LPDIRECTDRAWCLIPPER *ppClipper,
+ IUnknown *pUnkOuter);
+
+HRESULT WINAPI
+Main_DirectDraw_CreatePalette(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwFlags,
+ LPPALETTEENTRY palent,
+ LPDIRECTDRAWPALETTE* ppPalette,
+ LPUNKNOWN pUnkOuter);
+
+HRESULT WINAPI
+Main_DirectDraw_CreateSurface(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDDSURFACEDESC pDDSD,
+ LPDDRAWI_DDRAWSURFACE_INT *ppSurf,
+ IUnknown *pUnkOuter);
+
+HRESULT WINAPI
+Main_DirectDraw_CreateSurface4(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDDSURFACEDESC2 pDDSD,
+ LPDDRAWI_DDRAWSURFACE_INT *ppSurf,
+ IUnknown *pUnkOuter);
+
+HRESULT WINAPI
+Main_DirectDraw_DuplicateSurface(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDIRECTDRAWSURFACE7 src,
+ LPDIRECTDRAWSURFACE7* dst);
+
+HRESULT WINAPI
+Main_DirectDraw_EnumDisplayModes(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwFlags,
+ LPDDSURFACEDESC pDDSD,
+ LPVOID pContext,
+ LPDDENUMMODESCALLBACK pCallback);
+
+HRESULT WINAPI
+Main_DirectDraw_EnumDisplayModes4(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwFlags,
+ LPDDSURFACEDESC2 pDDSD,
+ LPVOID pContext,
+ LPDDENUMMODESCALLBACK2 pCallback);
+
+HRESULT WINAPI
+Main_DirectDraw_EnumSurfaces(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwFlags,
+ LPDDSURFACEDESC lpDDSD2,
+ LPVOID context,
+ LPDDENUMSURFACESCALLBACK callback);
+
+HRESULT WINAPI
+Main_DirectDraw_EnumSurfaces4(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwFlags,
+ LPDDSURFACEDESC2 lpDDSD2,
+ LPVOID context,
+ LPDDENUMSURFACESCALLBACK2 callback);
+
+HRESULT WINAPI
+Main_DirectDraw_EnumSurfaces7(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwFlags,
+ LPDDSURFACEDESC2 lpDDSD2,
+ LPVOID context,
+ LPDDENUMSURFACESCALLBACK7 callback);
+
+HRESULT WINAPI
+Main_DirectDraw_FlipToGDISurface(LPDDRAWI_DIRECTDRAW_INT This);
+
+HRESULT WINAPI
+Main_DirectDraw_GetCaps(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDDCAPS pDriverCaps,
+ LPDDCAPS pHELCaps);
+
+HRESULT WINAPI
+Main_DirectDraw_GetDisplayMode (
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDDSURFACEDESC pDDSD);
+
+HRESULT WINAPI
+Main_DirectDraw_GetDisplayMode4 (
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDDSURFACEDESC2 pDDSD);
+
+HRESULT WINAPI
+Main_DirectDraw_GetFourCCCodes(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDWORD lpNumCodes,
+ LPDWORD lpCodes);
+
+HRESULT WINAPI
+Main_DirectDraw_GetGDISurface(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDIRECTDRAWSURFACE7 *lplpGDIDDSSurface);
+
+HRESULT WINAPI
+Main_DirectDraw_GetMonitorFrequency (
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDWORD lpFreq);
+
+
+HRESULT WINAPI
+Main_DirectDraw_GetScanLine(LPDDRAWI_DIRECTDRAW_INT This,
+ LPDWORD lpdwScanLine);
+
+HRESULT WINAPI
+Main_DirectDraw_GetVerticalBlankStatus(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPBOOL lpbIsInVB);
+
+HRESULT WINAPI
+Main_DirectDraw_Initialize (
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPGUID lpGUID);
+
+
+HRESULT WINAPI
+Main_DirectDraw_RestoreDisplayMode (LPDDRAWI_DIRECTDRAW_INT This);
+
+HRESULT WINAPI
+Main_DirectDraw_SetCooperativeLevel (
+ LPDDRAWI_DIRECTDRAW_INT This,
+ HWND hwnd,
+ DWORD cooplevel);
+
+HRESULT WINAPI
+Main_DirectDraw_SetDisplayMode(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwWidth,
+ DWORD dwHeight,
+ DWORD dwBPP);
+
+HRESULT WINAPI
+Main_DirectDraw_SetDisplayMode2(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwWidth,
+ DWORD dwHeight,
+ DWORD dwBPP,
+ DWORD dwRefreshRate,
+ DWORD dwFlags);
+
+HRESULT WINAPI
+Main_DirectDraw_WaitForVerticalBlank(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD dwFlags,
+ HANDLE h);
+
+
+HRESULT WINAPI
+Main_DirectDraw_GetAvailableVidMem4(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDDSCAPS2 ddscaps,
+ LPDWORD dwTotal,
+ LPDWORD dwFree);
+
+HRESULT WINAPI
+Main_DirectDraw_GetSurfaceFromDC(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ HDC hdc,
+ LPDIRECTDRAWSURFACE7 *lpDDS);
+
+HRESULT WINAPI
+Main_DirectDraw_RestoreAllSurfaces(LPDDRAWI_DIRECTDRAW_INT This);
+
+HRESULT WINAPI
+Main_DirectDraw_TestCooperativeLevel(LPDDRAWI_DIRECTDRAW_INT This);
+
+HRESULT WINAPI
+Main_DirectDraw_GetDeviceIdentifier7(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPDDDEVICEIDENTIFIER2 pDDDI,
+ DWORD dwFlags);
+
+HRESULT WINAPI
+Main_DirectDraw_StartModeTest(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ LPSIZE pModes,
+ DWORD dwNumModes,
+ DWORD dwFlags);
+
+HRESULT WINAPI
+Main_DirectDraw_EvaluateMode(
+ LPDDRAWI_DIRECTDRAW_INT This,
+ DWORD a,
+ DWORD* b);
+
+
+
+
+// hel callbacks
+
+DWORD CALLBACK HelDdSurfAddAttachedSurface(LPDDHAL_ADDATTACHEDSURFACEDATA lpDestroySurface);
+DWORD CALLBACK HelDdSurfBlt(LPDDHAL_BLTDATA lpBltData);
+DWORD CALLBACK HelDdSurfDestroySurface(LPDDHAL_DESTROYSURFACEDATA lpDestroySurfaceData);
+DWORD CALLBACK HelDdSurfFlip(LPDDHAL_FLIPDATA lpFlipData);
+DWORD CALLBACK HelDdSurfGetBltStatus(LPDDHAL_GETBLTSTATUSDATA lpGetBltStatusData);
+DWORD CALLBACK HelDdSurfGetFlipStatus(LPDDHAL_GETFLIPSTATUSDATA lpGetFlipStatusData);
+DWORD CALLBACK HelDdSurfLock(LPDDHAL_LOCKDATA lpLockData);
+DWORD CALLBACK HelDdSurfreserved4(DWORD *lpPtr);
+DWORD CALLBACK HelDdSurfSetClipList(LPDDHAL_SETCLIPLISTDATA lpSetClipListData);
+DWORD CALLBACK HelDdSurfSetColorKey(LPDDHAL_SETCOLORKEYDATA lpSetColorKeyData);
+DWORD CALLBACK HelDdSurfSetOverlayPosition(LPDDHAL_SETOVERLAYPOSITIONDATA lpSetOverlayPositionData);
+DWORD CALLBACK HelDdSurfSetPalette(LPDDHAL_SETPALETTEDATA lpSetPaletteData);
+DWORD CALLBACK HelDdSurfUnlock(LPDDHAL_UNLOCKDATA lpUnLockData);
+DWORD CALLBACK HelDdSurfUpdateOverlay(LPDDHAL_UPDATEOVERLAYDATA lpUpDateOverLayData);
+
+
+
+