1 | /* $Id: OS2SURFACE.H,v 1.3 1999-06-10 17:10:56 phaller Exp $ */
|
---|
2 |
|
---|
3 | /*
|
---|
4 | * DirectDraw Surface 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 __OS2SURFACE_H__
|
---|
12 | #define __OS2SURFACE_H__
|
---|
13 |
|
---|
14 | #include "os2ddraw.h"
|
---|
15 | #include "os2clipper.h"
|
---|
16 | #include "os2palette.h"
|
---|
17 |
|
---|
18 |
|
---|
19 | typedef struct _OS2RECTL {
|
---|
20 | LONG xLeft; /* X-coordinate of left-hand edge of rectangle. */
|
---|
21 | LONG yBottom; /* Y-coordinate of bottom edge of rectangle. */
|
---|
22 | LONG xRight; /* X-coordinate of right-hand edge of rectangle. */
|
---|
23 | LONG yTop; /* Y-coordinate of top edge of rectangle. */
|
---|
24 | } OS2RECTL;
|
---|
25 |
|
---|
26 | #define MAX_COLORKEYTYPE 4
|
---|
27 | #define COLORKEY_DEST 0
|
---|
28 | #define COLORKEY_DESTOVERLAY 1
|
---|
29 | #define COLORKEY_SRC 2
|
---|
30 | #define COLORKEY_SRCOVERLAY 3
|
---|
31 |
|
---|
32 |
|
---|
33 |
|
---|
34 | /* KSO Apr 19 1999: Set correct interface. *
|
---|
35 | * (INTERFACE is used in the THIS and THIS_ macros) */
|
---|
36 | #undef INTERFACE
|
---|
37 | #define INTERFACE IDirectDrawSurface2
|
---|
38 |
|
---|
39 |
|
---|
40 | class OS2IDirectDrawSurface
|
---|
41 | {
|
---|
42 | public:
|
---|
43 | //this one has to go first!
|
---|
44 | IDirectDrawSurface2Vtbl *lpVtbl;
|
---|
45 | IDirectDrawSurface2Vtbl Vtbl;
|
---|
46 |
|
---|
47 | OS2IDirectDrawSurface(OS2IDirectDraw *lpDirectDraw, LPDDSURFACEDESC lpDDSurfaceDesc);
|
---|
48 | ~OS2IDirectDrawSurface();
|
---|
49 |
|
---|
50 | int Referenced;
|
---|
51 | inline HRESULT GetLastError() { return lastError; };
|
---|
52 | inline int GetDiveBufNr() { return diveBufNr; };
|
---|
53 | private:
|
---|
54 |
|
---|
55 | protected:
|
---|
56 | HRESULT lastError;
|
---|
57 | HDIVE hDive;
|
---|
58 | ULONG height, width;
|
---|
59 | ULONG surfaceType;
|
---|
60 | ULONG diveBufNr;
|
---|
61 | double screenXFact, screenYFact;
|
---|
62 | ULONG fccColorFormat, bpp;
|
---|
63 | OS2IDirectDraw *lpDraw;
|
---|
64 | OS2IDirectDrawClipper *lpClipper;
|
---|
65 | OS2IDirectDrawPalette *lpPalette;
|
---|
66 | DDSURFACEDESC DDSurfaceDesc;
|
---|
67 | DDCAPS SurfaceCaps;
|
---|
68 | BOOL fLocked;
|
---|
69 | HDC hdcImage;
|
---|
70 | HBITMAP hbmImage;
|
---|
71 | HGDIOBJ hgdiOld;
|
---|
72 | char *bitmapData;
|
---|
73 | char *pFrameBuffer;
|
---|
74 | PBYTE lpBuffer; //non-primary buffers
|
---|
75 |
|
---|
76 | ULONG ColorKeyFlags;
|
---|
77 | ULONG ColorSpaceLowValue[MAX_COLORKEYTYPE];
|
---|
78 | ULONG ColorSpaceHighValue[MAX_COLORKEYTYPE];
|
---|
79 |
|
---|
80 | OS2IDirectDrawSurface* attached; // attached surfaces
|
---|
81 | OS2IDirectDrawSurface* flip; // surface used for next flip
|
---|
82 |
|
---|
83 | // Linked list management
|
---|
84 | OS2IDirectDrawSurface* next; // Next OS2IDirectDraw
|
---|
85 | static OS2IDirectDrawSurface* ddraw; // List of OS2IDirectDraw
|
---|
86 |
|
---|
87 | friend HRESULT __stdcall SurfQueryInterface(THIS_ REFIID riid, LPVOID FAR * ppvObj);
|
---|
88 | friend ULONG __stdcall SurfAddRef(THIS);
|
---|
89 | friend ULONG __stdcall SurfRelease(THIS);
|
---|
90 | friend HRESULT __stdcall SurfAddAttachedSurface(THIS_ LPDIRECTDRAWSURFACE2);
|
---|
91 | friend HRESULT __stdcall SurfAddOverlayDirtyRect(THIS_ W32_LPRECT);
|
---|
92 | friend HRESULT __stdcall SurfBlt(THIS_ W32_LPRECT,LPDIRECTDRAWSURFACE2,W32_LPRECT,DWORD, LPDDBLTFX);
|
---|
93 | friend HRESULT __stdcall SurfBltBatch(THIS_ LPDDBLTBATCH, DWORD, DWORD );
|
---|
94 | friend HRESULT __stdcall SurfBltFast(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, W32_LPRECT,DWORD);
|
---|
95 | friend HRESULT __stdcall SurfDeleteAttachedSurface(THIS_ DWORD,LPDIRECTDRAWSURFACE2);
|
---|
96 | friend HRESULT __stdcall SurfEnumAttachedSurfaces(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK);
|
---|
97 | friend HRESULT __stdcall SurfEnumOverlayZOrders(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK);
|
---|
98 | friend HRESULT __stdcall SurfFlip(THIS_ LPDIRECTDRAWSURFACE2, DWORD);
|
---|
99 | friend HRESULT __stdcall SurfGetAttachedSurface(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *);
|
---|
100 | friend HRESULT __stdcall SurfGetBltStatus(THIS_ DWORD);
|
---|
101 | friend HRESULT __stdcall SurfGetCaps(THIS_ LPDDSCAPS);
|
---|
102 | friend HRESULT __stdcall SurfGetClipper(THIS_ LPDIRECTDRAWCLIPPER FAR*);
|
---|
103 | friend HRESULT __stdcall SurfGetColorKey(THIS_ DWORD, LPDDCOLORKEY);
|
---|
104 | friend HRESULT __stdcall SurfGetDC(THIS_ W32_HDC FAR *);
|
---|
105 | friend HRESULT __stdcall SurfGetFlipStatus(THIS_ DWORD);
|
---|
106 | friend HRESULT __stdcall SurfGetOverlayPosition(THIS_ LPLONG, LPLONG );
|
---|
107 | friend HRESULT __stdcall SurfGetPalette(THIS_ LPDIRECTDRAWPALETTE FAR*);
|
---|
108 | friend HRESULT __stdcall SurfGetPixelFormat(THIS_ LPDDPIXELFORMAT);
|
---|
109 | friend HRESULT __stdcall SurfGetSurfaceDesc(THIS_ LPDDSURFACEDESC);
|
---|
110 | friend HRESULT __stdcall SurfInitialize(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC);
|
---|
111 | friend HRESULT __stdcall SurfIsLost(THIS);
|
---|
112 | friend HRESULT __stdcall SurfLock(THIS_ W32_LPRECT,LPDDSURFACEDESC,DWORD,W32_HANDLE);
|
---|
113 | friend HRESULT __stdcall SurfReleaseDC(THIS_ W32_HDC);
|
---|
114 | friend HRESULT __stdcall SurfRestore(THIS);
|
---|
115 | friend HRESULT __stdcall SurfSetClipper(THIS_ LPDIRECTDRAWCLIPPER);
|
---|
116 | friend HRESULT __stdcall SurfSetColorKey(THIS_ DWORD, LPDDCOLORKEY);
|
---|
117 | friend HRESULT __stdcall SurfSetOverlayPosition(THIS_ LONG, LONG );
|
---|
118 | friend HRESULT __stdcall SurfSetPalette(THIS_ LPDIRECTDRAWPALETTE);
|
---|
119 | friend HRESULT __stdcall SurfUnlock(THIS_ LPVOID);
|
---|
120 | friend HRESULT __stdcall SurfUpdateOverlay(THIS_ W32_LPRECT, LPDIRECTDRAWSURFACE2,W32_LPRECT,DWORD, LPDDOVERLAYFX);
|
---|
121 | friend HRESULT __stdcall SurfUpdateOverlayDisplay(THIS_ DWORD);
|
---|
122 | friend HRESULT __stdcall SurfUpdateOverlayZOrder(THIS_ DWORD, LPDIRECTDRAWSURFACE2);
|
---|
123 | friend HRESULT __stdcall SurfGetDDInterface(THIS_ LPVOID FAR *);
|
---|
124 | friend HRESULT __stdcall SurfPageLock(THIS_ DWORD);
|
---|
125 | friend HRESULT __stdcall SurfPageUnlock(THIS_ DWORD);
|
---|
126 | };
|
---|
127 |
|
---|
128 |
|
---|
129 | HRESULT __stdcall SurfQueryInterface(THIS_ REFIID riid, LPVOID FAR * ppvObj);
|
---|
130 | ULONG __stdcall SurfAddRef(THIS);
|
---|
131 | ULONG __stdcall SurfRelease(THIS);
|
---|
132 | HRESULT __stdcall SurfAddAttachedSurface(THIS_ LPDIRECTDRAWSURFACE2);
|
---|
133 | HRESULT __stdcall SurfAddOverlayDirtyRect(THIS_ W32_LPRECT);
|
---|
134 | HRESULT __stdcall SurfBlt(THIS_ W32_LPRECT,LPDIRECTDRAWSURFACE2, W32_LPRECT,DWORD, LPDDBLTFX);
|
---|
135 | HRESULT __stdcall SurfBltBatch(THIS_ LPDDBLTBATCH, DWORD, DWORD );
|
---|
136 | HRESULT __stdcall SurfBltFast(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, W32_LPRECT,DWORD);
|
---|
137 | HRESULT __stdcall SurfDeleteAttachedSurface(THIS_ DWORD,LPDIRECTDRAWSURFACE2);
|
---|
138 | HRESULT __stdcall SurfEnumAttachedSurfaces(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK);
|
---|
139 | HRESULT __stdcall SurfEnumOverlayZOrders(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK);
|
---|
140 | HRESULT __stdcall SurfFlip(THIS_ LPDIRECTDRAWSURFACE2, DWORD);
|
---|
141 | HRESULT __stdcall SurfGetAttachedSurface(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *);
|
---|
142 | HRESULT __stdcall SurfGetBltStatus(THIS_ DWORD);
|
---|
143 | HRESULT __stdcall SurfGetCaps(THIS_ LPDDSCAPS);
|
---|
144 | HRESULT __stdcall SurfGetClipper(THIS_ LPDIRECTDRAWCLIPPER FAR*);
|
---|
145 | HRESULT __stdcall SurfGetColorKey(THIS_ DWORD, LPDDCOLORKEY);
|
---|
146 | HRESULT __stdcall SurfGetDC(THIS_ W32_HDC FAR *);
|
---|
147 | HRESULT __stdcall SurfGetFlipStatus(THIS_ DWORD);
|
---|
148 | HRESULT __stdcall SurfGetOverlayPosition(THIS_ LPLONG, LPLONG );
|
---|
149 | HRESULT __stdcall SurfGetPalette(THIS_ LPDIRECTDRAWPALETTE FAR*);
|
---|
150 | HRESULT __stdcall SurfGetPixelFormat(THIS_ LPDDPIXELFORMAT);
|
---|
151 | HRESULT __stdcall SurfGetSurfaceDesc(THIS_ LPDDSURFACEDESC);
|
---|
152 | HRESULT __stdcall SurfInitialize(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC);
|
---|
153 | HRESULT __stdcall SurfIsLost(THIS);
|
---|
154 | HRESULT __stdcall SurfLock(THIS_ W32_LPRECT,LPDDSURFACEDESC,DWORD,W32_HANDLE);
|
---|
155 | HRESULT __stdcall SurfReleaseDC(THIS_ W32_HDC);
|
---|
156 | HRESULT __stdcall SurfRestore(THIS);
|
---|
157 | HRESULT __stdcall SurfSetClipper(THIS_ LPDIRECTDRAWCLIPPER);
|
---|
158 | HRESULT __stdcall SurfSetColorKey(THIS_ DWORD, LPDDCOLORKEY);
|
---|
159 | HRESULT __stdcall SurfSetOverlayPosition(THIS_ LONG, LONG );
|
---|
160 | HRESULT __stdcall SurfSetPalette(THIS_ LPDIRECTDRAWPALETTE);
|
---|
161 | HRESULT __stdcall SurfUnlock(THIS_ LPVOID);
|
---|
162 | HRESULT __stdcall SurfUpdateOverlay(THIS_ W32_LPRECT, LPDIRECTDRAWSURFACE2,W32_LPRECT,DWORD, LPDDOVERLAYFX);
|
---|
163 | HRESULT __stdcall SurfUpdateOverlayDisplay(THIS_ DWORD);
|
---|
164 | HRESULT __stdcall SurfUpdateOverlayZOrder(THIS_ DWORD, LPDIRECTDRAWSURFACE2);
|
---|
165 | HRESULT __stdcall SurfGetDDInterface(THIS_ LPVOID FAR *);
|
---|
166 | HRESULT __stdcall SurfPageLock(THIS_ DWORD);
|
---|
167 | HRESULT __stdcall SurfPageUnlock(THIS_ DWORD);
|
---|
168 |
|
---|
169 | #endif
|
---|