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

Last change on this file since 201 was 97, checked in by phaller, 26 years ago

Add: added cvs variable $Id$ to source files.

File size: 8.2 KB
Line 
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
40class 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
129HRESULT __stdcall SurfQueryInterface(THIS_ REFIID riid, LPVOID FAR * ppvObj);
130ULONG __stdcall SurfAddRef(THIS);
131ULONG __stdcall SurfRelease(THIS);
132HRESULT __stdcall SurfAddAttachedSurface(THIS_ LPDIRECTDRAWSURFACE2);
133HRESULT __stdcall SurfAddOverlayDirtyRect(THIS_ W32_LPRECT);
134HRESULT __stdcall SurfBlt(THIS_ W32_LPRECT,LPDIRECTDRAWSURFACE2, W32_LPRECT,DWORD, LPDDBLTFX);
135HRESULT __stdcall SurfBltBatch(THIS_ LPDDBLTBATCH, DWORD, DWORD );
136HRESULT __stdcall SurfBltFast(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, W32_LPRECT,DWORD);
137HRESULT __stdcall SurfDeleteAttachedSurface(THIS_ DWORD,LPDIRECTDRAWSURFACE2);
138HRESULT __stdcall SurfEnumAttachedSurfaces(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK);
139HRESULT __stdcall SurfEnumOverlayZOrders(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK);
140HRESULT __stdcall SurfFlip(THIS_ LPDIRECTDRAWSURFACE2, DWORD);
141HRESULT __stdcall SurfGetAttachedSurface(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *);
142HRESULT __stdcall SurfGetBltStatus(THIS_ DWORD);
143HRESULT __stdcall SurfGetCaps(THIS_ LPDDSCAPS);
144HRESULT __stdcall SurfGetClipper(THIS_ LPDIRECTDRAWCLIPPER FAR*);
145HRESULT __stdcall SurfGetColorKey(THIS_ DWORD, LPDDCOLORKEY);
146HRESULT __stdcall SurfGetDC(THIS_ W32_HDC FAR *);
147HRESULT __stdcall SurfGetFlipStatus(THIS_ DWORD);
148HRESULT __stdcall SurfGetOverlayPosition(THIS_ LPLONG, LPLONG );
149HRESULT __stdcall SurfGetPalette(THIS_ LPDIRECTDRAWPALETTE FAR*);
150HRESULT __stdcall SurfGetPixelFormat(THIS_ LPDDPIXELFORMAT);
151HRESULT __stdcall SurfGetSurfaceDesc(THIS_ LPDDSURFACEDESC);
152HRESULT __stdcall SurfInitialize(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC);
153HRESULT __stdcall SurfIsLost(THIS);
154HRESULT __stdcall SurfLock(THIS_ W32_LPRECT,LPDDSURFACEDESC,DWORD,W32_HANDLE);
155HRESULT __stdcall SurfReleaseDC(THIS_ W32_HDC);
156HRESULT __stdcall SurfRestore(THIS);
157HRESULT __stdcall SurfSetClipper(THIS_ LPDIRECTDRAWCLIPPER);
158HRESULT __stdcall SurfSetColorKey(THIS_ DWORD, LPDDCOLORKEY);
159HRESULT __stdcall SurfSetOverlayPosition(THIS_ LONG, LONG );
160HRESULT __stdcall SurfSetPalette(THIS_ LPDIRECTDRAWPALETTE);
161HRESULT __stdcall SurfUnlock(THIS_ LPVOID);
162HRESULT __stdcall SurfUpdateOverlay(THIS_ W32_LPRECT, LPDIRECTDRAWSURFACE2,W32_LPRECT,DWORD, LPDDOVERLAYFX);
163HRESULT __stdcall SurfUpdateOverlayDisplay(THIS_ DWORD);
164HRESULT __stdcall SurfUpdateOverlayZOrder(THIS_ DWORD, LPDIRECTDRAWSURFACE2);
165HRESULT __stdcall SurfGetDDInterface(THIS_ LPVOID FAR *);
166HRESULT __stdcall SurfPageLock(THIS_ DWORD);
167HRESULT __stdcall SurfPageUnlock(THIS_ DWORD);
168
169#endif
Note: See TracBrowser for help on using the repository browser.