Changeset 211 for trunk/src/ddraw/OS2DDRAW.H
- Timestamp:
- Jun 26, 1999, 1:36:08 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ddraw/OS2DDRAW.H
r97 r211 1 /* $Id: OS2DDRAW.H,v 1.3 1999-06-10 17:10:56 phaller Exp $ */ 1 #ifndef __OS2DDRAW_HPP__ 2 #define __OS2DDRAW_HPP__ 2 3 3 /* 4 * DirectDraw main class 5 * 6 * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl) 7 * 8 * Project Odin Software License can be found in LICENSE.TXT 9 * 10 */ 11 #ifndef __OS2DDRAW_HPP__ 12 #define __OS2DDRAW_HPP__ 4 #include <ddraw.h> 5 #include <d3d.h> 6 #include <dive.h> 13 7 14 15 /* KSO Apr 19 1999: Set correct interface. * 16 * (INTERFACE is used in the THIS and THIS_ macros) */17 #undef INTERFACE 18 # define INTERFACE IDirectDraw219 8 #define DEBUG 1 9 #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \ 10 ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \ 11 ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) ) 12 #include <fourcc.h> 13 #define THIS VOID* 20 14 class OS2IDirectDraw 21 15 { 22 public:16 public: 23 17 //this one has to go first! 24 IDirectDraw 2Vtbl *lpVtbl;18 IDirectDraw4Vtbl *lpVtbl; 25 19 IDirectDraw2Vtbl Vtbl; 20 // MS did it again with direct/X 6 they changed the behavior of the directdraw component 21 // So we now need 2 Virt. Tables one for the old and one for the new so we return the 22 // right interface if one creates a DX6 directdraw object but wants a DX2,3,5 interface 23 IDirectDraw4Vtbl Vtbl4; 26 24 IDirect3DVtbl Vtbl3D; 27 25 28 26 OS2IDirectDraw(GUID *lpGUID); 29 27 ~OS2IDirectDraw(); 28 // Simple management for Surfaces should be good enougth for now 29 inline BOOL HasPrimarySurface() { return PrimaryExists;} 30 void SetPrimarySurface(BOOL NewStatus){PrimaryExists = NewStatus;} 31 int Referenced; 32 inline HRESULT GetLastError() { return lastError; } 33 inline HDIVE GetDiveInstance() { return hDive; } 34 inline HDIVE GetCCDiveInstance() { return hDiveColorConv;} 35 inline char * GetFrameBuffer() { return pFrameBuffer; } 36 inline int GetScreenWidth() { return screenwidth; } 37 inline int GetScreenHeight() { return screenheight; } 38 inline int GetScreenBpp() { return screenbpp;} 39 FOURCC GetScreenFourCC(); 40 // We should be able to use any mode with less or same bits and same or 41 // smaller size to be able to report all supported mode in the enum 42 // functions we need the physical screen size. Other information is later 43 // also needed so get all the info we can get 44 DIVE_CAPS dCaps; 30 45 31 int Referenced; 32 inline HRESULT GetLastError() { return lastError; }; 33 inline HDIVE GetDiveInstance() { return hDive; }; 34 inline char * GetFrameBuffer() { return pFrameBuffer; }; 35 inline int GetScreenWidth() { return screenwidth; }; 36 inline int GetScreenHeight() { return screenheight; }; 37 inline BOOL IsFullScreen() { return fFullScreen; }; 38 inline W32_HWND GetWindowHandle() { return hwndClient; }; 46 private: 47 VOID SwitchDisplay(HWND hwnd); 39 48 40 private:41 49 42 protected: 43 HRESULT lastError; 44 HDIVE hDive; 45 char *pFrameBuffer; 46 W32_HWND hwndClient; 47 int screenwidth, screenheight, screenbpp; 50 protected: 48 51 49 BOOL fFullScreen; 52 HRESULT lastError; 53 HDIVE hDive; // Handle to Screen DIVE instance 54 HDIVE hDiveColorConv; // Handle to Offscreen DIVE instance for Color conversion 55 char *pFrameBuffer; 56 HWND hwndClient; 57 int screenwidth, screenheight, screenbpp; 58 BOOL PrimaryExists; 59 BOOL bScale; 50 60 51 61 // Linked list management 52 62 OS2IDirectDraw* next; // Next OS2IDirectDraw 53 63 static OS2IDirectDraw* ddraw; // List of OS2IDirectDraw 54 64 55 friend HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID FAR* ppvObj);65 friend HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID * ppvObj); 56 66 friend ULONG __stdcall DrawAddRef(THIS); 57 67 friend ULONG __stdcall DrawRelease(THIS); 58 68 friend HRESULT __stdcall DrawCompact(THIS); 59 friend HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ); 60 friend HRESULT __stdcall DrawCreatePalette(THIS, DWORD, W32_LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ); 61 friend HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *); 62 friend HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ); 69 friend HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER *, IUnknown * ); 70 friend HRESULT __stdcall DrawCreatePalette(THIS, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown * ); 71 friend HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE *, IUnknown *); 72 friend HRESULT __stdcall DrawCreateSurface4(THIS, LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 *, IUnknown *); 73 friend HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE * ); 74 friend HRESULT __stdcall DrawDuplicateSurface4(THIS, LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 * ); 63 75 friend HRESULT __stdcall DrawEnumDisplayModes(THIS, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ); 76 friend HRESULT __stdcall DrawEnumDisplayModes4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ); 64 77 friend HRESULT __stdcall DrawEnumSurfaces(THIS, DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ); 78 friend HRESULT __stdcall DrawEnumSurfaces4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ); 65 79 friend HRESULT __stdcall DrawFlipToGDISurface(THIS); 66 80 friend HRESULT __stdcall DrawGetCaps(THIS, LPDDCAPS, LPDDCAPS); 67 81 friend HRESULT __stdcall DrawGetDisplayMode(THIS, LPDDSURFACEDESC); 68 82 friend HRESULT __stdcall DrawGetFourCCCodes(THIS, LPDWORD, LPDWORD); 69 friend HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE FAR *); 83 friend HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE *); 84 friend HRESULT __stdcall DrawGetGDISurface4(THIS, LPDIRECTDRAWSURFACE4 *); 70 85 friend HRESULT __stdcall DrawGetMonitorFrequency(THIS, LPDWORD); 71 86 friend HRESULT __stdcall DrawGetScanLine(THIS, LPDWORD); 72 87 friend HRESULT __stdcall DrawGetVerticalBlankStatus(THIS, LPBOOL); 73 friend HRESULT __stdcall DrawInitialize(THIS, GUID FAR*);88 friend HRESULT __stdcall DrawInitialize(THIS, GUID *); 74 89 friend HRESULT __stdcall DrawRestoreDisplayMode(THIS); 75 friend HRESULT __stdcall DrawSetCooperativeLevel(THIS, W32_HWND, DWORD);90 friend HRESULT __stdcall DrawSetCooperativeLevel(THIS, HWND, DWORD); 76 91 friend HRESULT __stdcall DrawSetDisplayMode(THIS, DWORD, DWORD,DWORD); 77 92 friend HRESULT __stdcall DrawSetDisplayMode2(THIS, DWORD, DWORD,DWORD, DWORD, DWORD); 78 friend HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, W32_HANDLE); 93 friend HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, HANDLE); 94 // V2 Interface 79 95 friend HRESULT __stdcall DrawGetAvailableVidMem(THIS, LPDDSCAPS, LPDWORD, LPDWORD); 80 96 friend HRESULT __stdcall DrawGetAvailableVidMem4(THIS, LPDDSCAPS2, LPDWORD, LPDWORD); 97 // V4 Interface 98 friend HRESULT __stdcall GetSurfaceFromDC(THIS, HDC, LPDIRECTDRAWSURFACE4 *); 99 friend HRESULT __stdcall RestoreAllSurfaces(THIS) ; 100 friend HRESULT __stdcall TestCooperativeLevel(THIS) ; 101 friend HRESULT __stdcall GetDeviceIdentifier(THIS, LPDDDEVICEIDENTIFIER, DWORD ); 81 102 /*** IDirect3D methods ***/ 82 /* KSO Apr 19 1999: Set correct interface. * 83 * (INTERFACE is used in the THIS and THIS_ macros) */ 84 #undef INTERFACE 85 #define INTERFACE IDirect3D 86 friend HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj); 103 friend HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID * ppvObj); 87 104 friend ULONG __stdcall D3DAddRef(THIS); 88 105 friend ULONG __stdcall D3DRelease(THIS); … … 93 110 friend HRESULT __stdcall D3DCreateViewport(THIS, LPDIRECT3DVIEWPORT*, IUnknown*); 94 111 friend HRESULT __stdcall D3DFindDevice(THIS, LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT); 112 95 113 }; 96 114 97 98 115 //****************************************************************************** 99 /* KSO Apr 19 1999: Set correct interface. * 100 * (INTERFACE is used in the THIS and THIS_ macros) */ 101 #undef INTERFACE 102 #define INTERFACE IDirectDraw2 103 HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj); 116 HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID * ppvObj); 104 117 ULONG __stdcall DrawAddRef(THIS); 105 118 ULONG __stdcall DrawRelease(THIS); 106 119 HRESULT __stdcall DrawCompact(THIS); 107 HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR* );108 HRESULT __stdcall DrawCreatePalette(THIS, DWORD, W32_LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR* );109 HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR*);110 HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR* );120 HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER *, IUnknown * ); 121 HRESULT __stdcall DrawCreatePalette(THIS, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown * ); 122 HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE *, IUnknown *); 123 HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE * ); 111 124 HRESULT __stdcall DrawEnumDisplayModes(THIS, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ); 112 125 HRESULT __stdcall DrawEnumSurfaces(THIS, DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ); … … 115 128 HRESULT __stdcall DrawGetDisplayMode(THIS, LPDDSURFACEDESC); 116 129 HRESULT __stdcall DrawGetFourCCCodes(THIS, LPDWORD, LPDWORD); 117 HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE FAR*);130 HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE *); 118 131 HRESULT __stdcall DrawGetMonitorFrequency(THIS, LPDWORD); 119 132 HRESULT __stdcall DrawGetScanLine(THIS, LPDWORD); 120 133 HRESULT __stdcall DrawGetVerticalBlankStatus(THIS, LPBOOL); 121 HRESULT __stdcall DrawInitialize(THIS, GUID FAR*);134 HRESULT __stdcall DrawInitialize(THIS, GUID *); 122 135 HRESULT __stdcall DrawRestoreDisplayMode(THIS); 123 HRESULT __stdcall DrawSetCooperativeLevel(THIS, W32_HWND, DWORD);136 HRESULT __stdcall DrawSetCooperativeLevel(THIS, HWND, DWORD); 124 137 HRESULT __stdcall DrawSetDisplayMode(THIS, DWORD, DWORD,DWORD); 125 138 HRESULT __stdcall DrawSetDisplayMode2(THIS, DWORD, DWORD,DWORD, DWORD, DWORD); 126 HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, W32_HANDLE); 139 HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, HANDLE); 140 // V2 127 141 HRESULT __stdcall DrawGetAvailableVidMem(THIS, LPDDSCAPS, LPDWORD, LPDWORD); 142 // V4 143 HRESULT __stdcall DrawGetSurfaceFromDC(THIS, HDC, LPDIRECTDRAWSURFACE4 *); 144 HRESULT __stdcall DrawRestoreAllSurfaces(THIS) ; 145 HRESULT __stdcall DrawTestCooperativeLevel(THIS) ; 146 HRESULT __stdcall DrawGetDeviceIdentifier(THIS, LPDDDEVICEIDENTIFIER, DWORD ); 147 // functions which ifaces are changed in DirectX6 after all MS uses COM where an programmer 148 // isn't allowd to change a function iface after he published the iface (See MS COM docs!) 149 HRESULT __stdcall DrawCreateSurface4(THIS, LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 *, IUnknown *); 150 HRESULT __stdcall DrawDuplicateSurface4(THIS, LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 * ); 151 HRESULT __stdcall DrawEnumDisplayModes4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ); 152 HRESULT __stdcall DrawEnumSurfaces4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ); 153 HRESULT __stdcall DrawGetDisplayMode4(THIS, LPDDSURFACEDESC2); 154 HRESULT __stdcall DrawGetGDISurface4(THIS, LPDIRECTDRAWSURFACE4 *); 155 HRESULT __stdcall DrawGetAvailableVidMem4(THIS, LPDDSCAPS2, LPDWORD, LPDWORD); 128 156 129 157 /*** IDirect3D methods ***/ 130 /* KSO Apr 19 1999: Set correct interface. * 131 * (INTERFACE is used in the THIS and THIS_ macros) */ 132 #undef INTERFACE 133 #define INTERFACE IDirect3D 134 HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj); 158 HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID * ppvObj); 135 159 ULONG __stdcall D3DAddRef(THIS); 136 160 ULONG __stdcall D3DRelease(THIS); 137 HRESULT __stdcall D3DInitialize(THIS _REFIID);138 HRESULT __stdcall D3DEnumDevices(THIS _LPD3DENUMDEVICESCALLBACK, LPVOID);139 HRESULT __stdcall D3DCreateLight(THIS _LPDIRECT3DLIGHT*, IUnknown*);140 HRESULT __stdcall D3DCreateMaterial(THIS _LPDIRECT3DMATERIAL*, IUnknown*);141 HRESULT __stdcall D3DCreateViewport(THIS _LPDIRECT3DVIEWPORT*, IUnknown*);142 HRESULT __stdcall D3DFindDevice(THIS _LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT);161 HRESULT __stdcall D3DInitialize(THIS, REFIID); 162 HRESULT __stdcall D3DEnumDevices(THIS, LPD3DENUMDEVICESCALLBACK, LPVOID); 163 HRESULT __stdcall D3DCreateLight(THIS, LPDIRECT3DLIGHT*, IUnknown*); 164 HRESULT __stdcall D3DCreateMaterial(THIS, LPDIRECT3DMATERIAL*, IUnknown*); 165 HRESULT __stdcall D3DCreateViewport(THIS, LPDIRECT3DVIEWPORT*, IUnknown*); 166 HRESULT __stdcall D3DFindDevice(THIS, LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT); 143 167 144 168 #endif
Note:
See TracChangeset
for help on using the changeset viewer.