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

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

* empty log message *

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