source: trunk/src/ddraw/OS2SURFACE.H@ 478

Last change on this file since 478 was 422, checked in by hugh, 26 years ago

Created DIVEWRAp.h to presewrve FS selector

File size: 13.1 KB
Line 
1#ifndef __OS2SURFACE_H__
2#define __OS2SURFACE_H__
3#define FAR
4#define INITGUID
5#include "os2ddraw.h"
6#include "os2clipper.h"
7#include "os2palette.h"
8#include "divewrap.h"
9#include <commctrl.h>
10
11#define FAR
12#undef THIS
13#define THIS VOID*
14
15typedef struct _OS2RECTL {
16 LONG xLeft; /* X-coordinate of left-hand edge of rectangle. */
17 LONG yBottom; /* Y-coordinate of bottom edge of rectangle. */
18 LONG xRight; /* X-coordinate of right-hand edge of rectangle. */
19 LONG yTop; /* Y-coordinate of top edge of rectangle. */
20 } OS2RECTL;
21
22typedef struct _SURFPRIVATEDATA
23{
24 GUID guidTag;
25 void *pData;
26 DWORD dwFlags;
27 DWORD dwSize;
28 BOOL isValid;
29}SURFPRIVATEDATA , *PSURFPRIVATEDATA;
30
31class OS2IDirectDrawSurface
32{
33 public:
34 //this one has to go first!
35 IDirectDrawSurface4Vtbl *lpVtbl;
36 IDirectDrawSurface2Vtbl Vtbl2;
37 IDirectDrawSurface3Vtbl Vtbl3;
38 IDirectDrawSurface4Vtbl Vtbl; // With Dx6 CreateSurface creates per default one with Interface 4 !
39
40 OS2IDirectDrawSurface( OS2IDirectDraw *lpDirectDraw,
41 LPDDSURFACEDESC2 lpDDSurfaceDesc,
42 BOOL Implicit = FALSE, // Indicates that this surface was created as result of a complex surface
43 BOOL Mainchain = FALSE); // Indicates if an implicit surface belongs to the primary surface
44 ~OS2IDirectDrawSurface();
45 int Referenced;
46 inline HRESULT GetLastError() { return lastError; };
47 inline int GetDiveBufNr() { return diveBufNr; };
48 inline BOOL IsImplicitSurface() {return ImplicitSurface; };
49 inline OS2IDirectDrawSurface* GetFrontBuffer(){ return FrontBuffer;};
50 inline void SetFrontBuffer( OS2IDirectDrawSurface* NewFBuffer);
51 void ColorConversion(LPRECT lpRect);
52
53 private:
54 HRESULT ColorFill(LPRECT, DWORD);
55 protected:
56 HRESULT lastError;
57 HDIVE hDive;
58 HDIVE hDiveCC; // Color conversion DIVE Handle
59 ULONG height, width;
60 ULONG screenHeight, screenWidth;
61 ULONG surfaceType;
62 ULONG diveBufNr;
63 OS2IDirectDraw *lpDraw;
64 OS2IDirectDrawClipper *lpClipper;
65 OS2IDirectDrawPalette *lpPalette;
66 DDSURFACEDESC2 DDSurfaceDesc;
67 BOOL fLocked;
68 HDC hdcImage;
69 HBITMAP hbmImage;
70 HGDIOBJ hgdiOld;
71 DWORD dwLastDCUnique;
72 // The real pointers hold the allocated memory (for the free)
73 // The other an pointer addjusted to QWORDs which we use and report
74 char *pFrameBuffer, *pFBreal;
75 char *pDiveBuffer, *pDBreal;
76 DWORD *pTransBufferSrc;
77 DWORD *pTransBufferDest;
78 DWORD dwPitchFB;
79 DWORD dwPitchDB;
80 DWORD dwBytesPPDive;
81 BOOL Updated;
82 BOOL ImplicitSurface;
83
84 // DDraw internal vars
85
86 DWORD dwUniqueValue;
87 HDPA DPA_SurfacePrivateData;
88
89 BOOL fOverlayValid;
90 LONG lOverlayX;
91 LONG lOverlayY;
92
93 // surface management
94
95 OS2IDirectDrawSurface* BackBuffer; // Backbuffer goes in here
96 OS2IDirectDrawSurface* FrontBuffer; // NULL if the real frontbuffer of a Flipchain otherwise the prev. Backbuffer
97 OS2IDirectDrawSurface* NextFlip; // Only valid in a frontbuffer
98
99 HDPA DPA_SurfaceMipMaps;
100 HDPA DPA_SurfaceAttached;
101 HDPA DPA_LockedRects;
102
103 friend HRESULT __stdcall SurfQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
104 friend ULONG __stdcall SurfAddRef(THIS);
105 friend ULONG __stdcall SurfRelease(THIS);
106 friend HRESULT __stdcall SurfAddAttachedSurface(THIS, LPDIRECTDRAWSURFACE2);
107 friend HRESULT __stdcall SurfAddAttachedSurface4(THIS, LPDIRECTDRAWSURFACE4);
108 friend HRESULT __stdcall SurfAddOverlayDirtyRect(THIS, LPRECT);
109 friend HRESULT __stdcall SurfBlt(THIS, LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX);
110 friend HRESULT __stdcall SurfBlt4(THIS, LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX);
111 friend HRESULT __stdcall SurfBltBatch(THIS, LPDDBLTBATCH, DWORD, DWORD );
112 friend HRESULT __stdcall SurfBltFast(THIS, DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD);
113 friend HRESULT __stdcall SurfBltFast4(THIS, DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD);
114 friend HRESULT __stdcall SurfDeleteAttachedSurface(THIS, DWORD,LPDIRECTDRAWSURFACE2);
115 friend HRESULT __stdcall SurfDeleteAttachedSurface4(THIS, DWORD,LPDIRECTDRAWSURFACE4);
116 friend HRESULT __stdcall SurfEnumAttachedSurfaces(THIS, LPVOID,LPDDENUMSURFACESCALLBACK);
117 friend HRESULT __stdcall SurfEnumAttachedSurfaces4(THIS, LPVOID,LPDDENUMSURFACESCALLBACK2);
118 friend HRESULT __stdcall SurfEnumOverlayZOrders(THIS, DWORD,LPVOID,LPDDENUMSURFACESCALLBACK);
119 friend HRESULT __stdcall SurfEnumOverlayZOrders4(THIS, DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2);
120 friend HRESULT __stdcall SurfFlip(THIS, LPDIRECTDRAWSURFACE2 , DWORD);
121 friend HRESULT __stdcall SurfFlip4(THIS, LPDIRECTDRAWSURFACE4 , DWORD);
122 friend HRESULT __stdcall SurfGetAttachedSurface(THIS, LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *);
123 friend HRESULT __stdcall SurfGetAttachedSurface4(THIS, LPDDSCAPS2, LPDIRECTDRAWSURFACE4 FAR *);
124 friend HRESULT __stdcall SurfGetBltStatus(THIS, DWORD);
125 friend HRESULT __stdcall SurfGetCaps(THIS, LPDDSCAPS);
126 friend HRESULT __stdcall SurfGetCaps4(THIS, LPDDSCAPS2);
127 friend HRESULT __stdcall SurfGetClipper(THIS, LPDIRECTDRAWCLIPPER FAR*);
128 friend HRESULT __stdcall SurfGetColorKey(THIS, DWORD, LPDDCOLORKEY);
129 friend HRESULT __stdcall SurfGetDC(THIS, HDC FAR *);
130 friend HRESULT __stdcall SurfGetFlipStatus(THIS, DWORD);
131 friend HRESULT __stdcall SurfGetOverlayPosition(THIS, LPLONG, LPLONG );
132 friend HRESULT __stdcall SurfGetPalette(THIS, LPDIRECTDRAWPALETTE FAR*);
133 friend HRESULT __stdcall SurfGetPixelFormat(THIS, LPDDPIXELFORMAT);
134 friend HRESULT __stdcall SurfGetSurfaceDesc(THIS, LPDDSURFACEDESC);
135 friend HRESULT __stdcall SurfGetSurfaceDesc4(THIS, LPDDSURFACEDESC2);
136 friend HRESULT __stdcall SurfInitialize(THIS, LPDIRECTDRAW, LPDDSURFACEDESC);
137 friend HRESULT __stdcall SurfInitialize4(THIS, LPDIRECTDRAW, LPDDSURFACEDESC2);
138 friend HRESULT __stdcall SurfIsLost(THIS);
139 friend HRESULT __stdcall SurfLock(THIS, LPRECT,LPDDSURFACEDESC,DWORD,HANDLE);
140 friend HRESULT __stdcall SurfLock4(THIS, LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE);
141 friend HRESULT __stdcall SurfReleaseDC(THIS, HDC);
142 friend HRESULT __stdcall SurfRestore(THIS);
143 friend HRESULT __stdcall SurfSetClipper(THIS, LPDIRECTDRAWCLIPPER);
144 friend HRESULT __stdcall SurfSetColorKey(THIS, DWORD, LPDDCOLORKEY);
145 friend HRESULT __stdcall SurfSetOverlayPosition(THIS, LONG, LONG );
146 friend HRESULT __stdcall SurfSetPalette(THIS, LPDIRECTDRAWPALETTE);
147 friend HRESULT __stdcall SurfUnlock(THIS, LPVOID);
148 friend HRESULT __stdcall SurfUnlock4(THIS, LPRECT);
149 friend HRESULT __stdcall SurfUpdateOverlay(THIS, LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX);
150 friend HRESULT __stdcall SurfUpdateOverlay4(THIS, LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX);
151 friend HRESULT __stdcall SurfUpdateOverlayDisplay(THIS, DWORD);
152 friend HRESULT __stdcall SurfUpdateOverlayZOrder(THIS, DWORD, LPDIRECTDRAWSURFACE2);
153 friend HRESULT __stdcall SurfUpdateOverlayZOrder4(THIS, DWORD, LPDIRECTDRAWSURFACE4);
154 // Added in V2 interface
155 friend HRESULT __stdcall SurfGetDDInterface(THIS, LPVOID FAR *);
156 friend HRESULT __stdcall SurfPageLock(THIS, DWORD);
157 friend HRESULT __stdcall SurfPageUnlock(THIS, DWORD);
158 // Added in V3 interface
159 friend HRESULT __stdcall SurfSetSurfaceDesc(THIS, LPDDSURFACEDESC, DWORD);
160 friend HRESULT __stdcall SurfSetSurfaceDesc4(THIS, LPDDSURFACEDESC2, DWORD);
161 // Added in V4 interface
162 friend HRESULT __stdcall SurfSetPrivateData(THIS, REFGUID, LPVOID, DWORD, DWORD);
163 friend HRESULT __stdcall SurfGetPrivateData(THIS, REFGUID, LPVOID, LPDWORD);
164 friend HRESULT __stdcall SurfFreePrivateData(THIS, REFGUID);
165 friend HRESULT __stdcall SurfGetUniquenessValue(THIS, LPDWORD);
166 friend HRESULT __stdcall SurfChangeUniquenessValue(THIS);
167};
168
169
170HRESULT __stdcall SurfQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
171ULONG __stdcall SurfAddRef(THIS);
172ULONG __stdcall SurfRelease(THIS);
173HRESULT __stdcall SurfAddAttachedSurface(THIS, LPDIRECTDRAWSURFACE2);
174HRESULT __stdcall SurfAddAttachedSurface4(THIS, LPDIRECTDRAWSURFACE4);
175HRESULT __stdcall SurfAddOverlayDirtyRect(THIS, LPRECT);
176HRESULT __stdcall SurfBlt(THIS, LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX);
177HRESULT __stdcall SurfBlt4(THIS, LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX);
178HRESULT __stdcall SurfBltBatch(THIS, LPDDBLTBATCH, DWORD, DWORD );
179HRESULT __stdcall SurfBltFast(THIS, DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD);
180HRESULT __stdcall SurfBltFast4(THIS, DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD);
181HRESULT __stdcall SurfDeleteAttachedSurface(THIS, DWORD,LPDIRECTDRAWSURFACE2);
182HRESULT __stdcall SurfDeleteAttachedSurface4(THIS, DWORD,LPDIRECTDRAWSURFACE4);
183HRESULT __stdcall SurfEnumAttachedSurfaces(THIS, LPVOID,LPDDENUMSURFACESCALLBACK);
184HRESULT __stdcall SurfEnumAttachedSurfaces4(THIS, LPVOID,LPDDENUMSURFACESCALLBACK2);
185HRESULT __stdcall SurfEnumOverlayZOrders(THIS, DWORD,LPVOID,LPDDENUMSURFACESCALLBACK);
186HRESULT __stdcall SurfEnumOverlayZOrders4(THIS, DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2);
187HRESULT __stdcall SurfFlip(THIS, LPDIRECTDRAWSURFACE2 , DWORD);
188HRESULT __stdcall SurfFlip4(THIS, LPDIRECTDRAWSURFACE4 , DWORD);
189HRESULT __stdcall SurfGetAttachedSurface(THIS, LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *);
190HRESULT __stdcall SurfGetAttachedSurface4(THIS, LPDDSCAPS2, LPDIRECTDRAWSURFACE4 FAR *);
191HRESULT __stdcall SurfGetBltStatus(THIS, DWORD);
192HRESULT __stdcall SurfGetCaps4(THIS, LPDDSCAPS2);
193HRESULT __stdcall SurfGetCaps(THIS, LPDDSCAPS);
194HRESULT __stdcall SurfGetClipper(THIS, LPDIRECTDRAWCLIPPER FAR*);
195HRESULT __stdcall SurfGetColorKey(THIS, DWORD, LPDDCOLORKEY);
196HRESULT __stdcall SurfGetDC(THIS, HDC FAR *);
197HRESULT __stdcall SurfGetFlipStatus(THIS, DWORD);
198HRESULT __stdcall SurfGetOverlayPosition(THIS, LPLONG, LPLONG );
199HRESULT __stdcall SurfGetPalette(THIS, LPDIRECTDRAWPALETTE FAR*);
200HRESULT __stdcall SurfGetPixelFormat(THIS, LPDDPIXELFORMAT);
201HRESULT __stdcall SurfGetSurfaceDesc(THIS, LPDDSURFACEDESC);
202HRESULT __stdcall SurfGetSurfaceDesc4(THIS, LPDDSURFACEDESC2);
203HRESULT __stdcall SurfInitialize(THIS, LPDIRECTDRAW, LPDDSURFACEDESC);
204HRESULT __stdcall SurfInitialize4(THIS, LPDIRECTDRAW, LPDDSURFACEDESC2);
205HRESULT __stdcall SurfIsLost(THIS);
206HRESULT __stdcall SurfLock(THIS, LPRECT,LPDDSURFACEDESC,DWORD,HANDLE);
207HRESULT __stdcall SurfLock4(THIS, LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE);
208HRESULT __stdcall SurfReleaseDC(THIS, HDC);
209HRESULT __stdcall SurfRestore(THIS);
210HRESULT __stdcall SurfSetClipper(THIS, LPDIRECTDRAWCLIPPER);
211HRESULT __stdcall SurfSetColorKey(THIS, DWORD, LPDDCOLORKEY);
212HRESULT __stdcall SurfSetOverlayPosition(THIS, LONG, LONG );
213HRESULT __stdcall SurfSetPalette(THIS, LPDIRECTDRAWPALETTE);
214HRESULT __stdcall SurfUnlock(THIS, LPVOID);
215HRESULT __stdcall SurfUnlock4(THIS, LPRECT);
216HRESULT __stdcall SurfUpdateOverlay(THIS, LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX);
217HRESULT __stdcall SurfUpdateOverlay4(THIS, LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX);
218HRESULT __stdcall SurfUpdateOverlayDisplay(THIS, DWORD);
219HRESULT __stdcall SurfUpdateOverlayZOrder(THIS, DWORD, LPDIRECTDRAWSURFACE2);
220HRESULT __stdcall SurfUpdateOverlayZOrder4(THIS, DWORD, LPDIRECTDRAWSURFACE4);
221HRESULT __stdcall SurfGetDDInterface(THIS, LPVOID FAR *);
222HRESULT __stdcall SurfPageLock(THIS, DWORD);
223HRESULT __stdcall SurfPageUnlock(THIS, DWORD);
224HRESULT __stdcall SurfSetSurfaceDesc(THIS, LPDDSURFACEDESC, DWORD);
225HRESULT __stdcall SurfSetSurfaceDesc4(THIS, LPDDSURFACEDESC2, DWORD);
226HRESULT __stdcall SurfSetPrivateData(THIS, REFGUID, LPVOID, DWORD, DWORD);
227HRESULT __stdcall SurfGetPrivateData(THIS, REFGUID, LPVOID, LPDWORD);
228HRESULT __stdcall SurfFreePrivateData(THIS, REFGUID);
229HRESULT __stdcall SurfGetUniquenessValue(THIS, LPDWORD);
230HRESULT __stdcall SurfChangeUniquenessValue(THIS);
231
232void __cdecl MoveRects(char* pBuffer, LPRECT lpDestRect, LPRECT lpSrcRect, int bbp, LONG lPitch);
233void __cdecl TransSRCBlit8(LPDDSURFACEDESC2 pDestDesc, LPDDSURFACEDESC2 pSrcDesc, char *pAlpha, LPRECT lpSrcRect);
234void __cdecl TransSRCBlit16(LPDDSURFACEDESC2 pDestDesc, LPDDSURFACEDESC2 pSrcDesc, char *pAlpha, LPRECT lpSrcRect);
235void __cdecl TransSRCBlit24(LPDDSURFACEDESC2 pDestDesc, LPDDSURFACEDESC2 pSrcDesc, char *pAlpha, LPRECT lpSrcRect);
236void __cdecl TransSRCBlit32(LPDDSURFACEDESC2 pDestDesc, LPDDSURFACEDESC2 pSrcDesc, char *pAlpha, LPRECT lpSrcRect);
237
238
239#endif
Note: See TracBrowser for help on using the repository browser.