source: trunk/src/ddraw/OS2DDRAW.H@ 46

Last change on this file since 46 was 46, checked in by sandervl, 26 years ago

* empty log message *

File size: 7.1 KB
Line 
1/*
2 * DirectDraw main class
3 *
4 * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl)
5 *
6 * Project Odin Software License can be found in LICENSE.TXT
7 *
8 */
9#ifndef __OS2DDRAW_HPP__
10#define __OS2DDRAW_HPP__
11
12
13/* KSO Apr 19 1999: Set correct interface. *
14 * (INTERFACE is used in the THIS and THIS_ macros) */
15#undef INTERFACE
16#define INTERFACE IDirectDraw2
17
18class OS2IDirectDraw
19{
20 public:
21 //this one has to go first!
22 IDirectDraw2Vtbl *lpVtbl;
23 IDirectDraw2Vtbl Vtbl;
24 IDirect3DVtbl Vtbl3D;
25
26 OS2IDirectDraw(GUID *lpGUID);
27 ~OS2IDirectDraw();
28
29 int Referenced;
30 inline HRESULT GetLastError() { return lastError; };
31 inline HDIVE GetDiveInstance() { return hDive; };
32 inline char * GetFrameBuffer() { return pFrameBuffer; };
33 inline int GetScreenWidth() { return screenwidth; };
34 inline int GetScreenHeight() { return screenheight; };
35 inline BOOL IsFullScreen() { return fFullScreen; };
36 inline W32_HWND GetWindowHandle() { return hwndClient; };
37
38 private:
39
40 protected:
41 HRESULT lastError;
42 HDIVE hDive;
43 char *pFrameBuffer;
44 W32_HWND hwndClient;
45 int screenwidth, screenheight, screenbpp;
46
47 BOOL fFullScreen;
48
49 // Linked list management
50 OS2IDirectDraw* next; // Next OS2IDirectDraw
51 static OS2IDirectDraw* ddraw; // List of OS2IDirectDraw
52
53 friend HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
54 friend ULONG __stdcall DrawAddRef(THIS);
55 friend ULONG __stdcall DrawRelease(THIS);
56 friend HRESULT __stdcall DrawCompact(THIS);
57 friend HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * );
58 friend HRESULT __stdcall DrawCreatePalette(THIS, DWORD, W32_LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * );
59 friend HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *);
60 friend HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * );
61 friend HRESULT __stdcall DrawEnumDisplayModes(THIS, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK );
62 friend HRESULT __stdcall DrawEnumSurfaces(THIS, DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK );
63 friend HRESULT __stdcall DrawFlipToGDISurface(THIS);
64 friend HRESULT __stdcall DrawGetCaps(THIS, LPDDCAPS, LPDDCAPS);
65 friend HRESULT __stdcall DrawGetDisplayMode(THIS, LPDDSURFACEDESC);
66 friend HRESULT __stdcall DrawGetFourCCCodes(THIS, LPDWORD, LPDWORD);
67 friend HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE FAR *);
68 friend HRESULT __stdcall DrawGetMonitorFrequency(THIS, LPDWORD);
69 friend HRESULT __stdcall DrawGetScanLine(THIS, LPDWORD);
70 friend HRESULT __stdcall DrawGetVerticalBlankStatus(THIS, LPBOOL);
71 friend HRESULT __stdcall DrawInitialize(THIS, GUID FAR *);
72 friend HRESULT __stdcall DrawRestoreDisplayMode(THIS);
73 friend HRESULT __stdcall DrawSetCooperativeLevel(THIS, W32_HWND, DWORD);
74 friend HRESULT __stdcall DrawSetDisplayMode(THIS, DWORD, DWORD,DWORD);
75 friend HRESULT __stdcall DrawSetDisplayMode2(THIS, DWORD, DWORD,DWORD, DWORD, DWORD);
76 friend HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, W32_HANDLE);
77 friend HRESULT __stdcall DrawGetAvailableVidMem(THIS, LPDDSCAPS, LPDWORD, LPDWORD);
78
79 /*** IDirect3D methods ***/
80 /* KSO Apr 19 1999: Set correct interface. *
81 * (INTERFACE is used in the THIS and THIS_ macros) */
82 #undef INTERFACE
83 #define INTERFACE IDirect3D
84 friend HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
85 friend ULONG __stdcall D3DAddRef(THIS);
86 friend ULONG __stdcall D3DRelease(THIS);
87 friend HRESULT __stdcall D3DInitialize(THIS, REFIID);
88 friend HRESULT __stdcall D3DEnumDevices(THIS, LPD3DENUMDEVICESCALLBACK, LPVOID);
89 friend HRESULT __stdcall D3DCreateLight(THIS, LPDIRECT3DLIGHT*, IUnknown*);
90 friend HRESULT __stdcall D3DCreateMaterial(THIS, LPDIRECT3DMATERIAL*, IUnknown*);
91 friend HRESULT __stdcall D3DCreateViewport(THIS, LPDIRECT3DVIEWPORT*, IUnknown*);
92 friend HRESULT __stdcall D3DFindDevice(THIS, LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT);
93};
94
95
96//******************************************************************************
97/* KSO Apr 19 1999: Set correct interface. *
98 * (INTERFACE is used in the THIS and THIS_ macros) */
99#undef INTERFACE
100#define INTERFACE IDirectDraw2
101HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
102ULONG __stdcall DrawAddRef(THIS);
103ULONG __stdcall DrawRelease(THIS);
104HRESULT __stdcall DrawCompact(THIS);
105HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * );
106HRESULT __stdcall DrawCreatePalette(THIS, DWORD, W32_LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * );
107HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *);
108HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * );
109HRESULT __stdcall DrawEnumDisplayModes(THIS, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK );
110HRESULT __stdcall DrawEnumSurfaces(THIS, DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK );
111HRESULT __stdcall DrawFlipToGDISurface(THIS);
112HRESULT __stdcall DrawGetCaps(THIS, LPDDCAPS, LPDDCAPS);
113HRESULT __stdcall DrawGetDisplayMode(THIS, LPDDSURFACEDESC);
114HRESULT __stdcall DrawGetFourCCCodes(THIS, LPDWORD, LPDWORD);
115HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE FAR *);
116HRESULT __stdcall DrawGetMonitorFrequency(THIS, LPDWORD);
117HRESULT __stdcall DrawGetScanLine(THIS, LPDWORD);
118HRESULT __stdcall DrawGetVerticalBlankStatus(THIS, LPBOOL);
119HRESULT __stdcall DrawInitialize(THIS, GUID FAR *);
120HRESULT __stdcall DrawRestoreDisplayMode(THIS);
121HRESULT __stdcall DrawSetCooperativeLevel(THIS, W32_HWND, DWORD);
122HRESULT __stdcall DrawSetDisplayMode(THIS, DWORD, DWORD,DWORD);
123HRESULT __stdcall DrawSetDisplayMode2(THIS, DWORD, DWORD,DWORD, DWORD, DWORD);
124HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, W32_HANDLE);
125HRESULT __stdcall DrawGetAvailableVidMem(THIS, LPDDSCAPS, LPDWORD, LPDWORD);
126
127/*** IDirect3D methods ***/
128/* KSO Apr 19 1999: Set correct interface. *
129 * (INTERFACE is used in the THIS and THIS_ macros) */
130#undef INTERFACE
131#define INTERFACE IDirect3D
132HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
133ULONG __stdcall D3DAddRef(THIS);
134ULONG __stdcall D3DRelease(THIS);
135HRESULT __stdcall D3DInitialize(THIS_ REFIID);
136HRESULT __stdcall D3DEnumDevices(THIS_ LPD3DENUMDEVICESCALLBACK, LPVOID);
137HRESULT __stdcall D3DCreateLight(THIS_ LPDIRECT3DLIGHT*, IUnknown*);
138HRESULT __stdcall D3DCreateMaterial(THIS_ LPDIRECT3DMATERIAL*, IUnknown*);
139HRESULT __stdcall D3DCreateViewport(THIS_ LPDIRECT3DVIEWPORT*, IUnknown*);
140HRESULT __stdcall D3DFindDevice(THIS_ LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT);
141
142#endif
Note: See TracBrowser for help on using the repository browser.