| 1 | /* $Id: OS2SURFACE.H,v 1.1 1999-05-24 20:19:37 ktk 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
|
|---|