8196f14db768115138adc1ad85a41099ebab58a2
[reactos.git] / include / win32k / bitmaps.h
1
2 #ifndef __WIN32K_BITMAPS_H
3 #define __WIN32K_BITMAPS_H
4
5 #include <win32k/dc.h>
6 #include <win32k/gdiobj.h>
7
8 typedef struct _DDBITMAP
9 {
10   const PDRIVER_FUNCTIONS  pDriverFunctions;
11 //  DHPDEV  PDev;
12 //  HSURF  Surface;
13 } DDBITMAP;
14
15 /* GDI logical bitmap object */
16 typedef struct _BITMAPOBJ
17 {
18   BITMAP      bitmap;
19   SIZE        size;   /* For SetBitmapDimension() */
20
21   DDBITMAP   *DDBitmap;
22
23   /* For device-independent bitmaps: */
24   DIBSECTION *dib;
25   RGBQUAD *ColorMap;
26 } BITMAPOBJ, *PBITMAPOBJ;
27
28 /*  Internal interface  */
29
30 #define  BITMAPOBJ_AllocBitmap()  \
31   ((HBITMAP) GDIOBJ_AllocObj (sizeof (BITMAPOBJ), GO_BITMAP_MAGIC))
32 #define  BITMAPOBJ_FreeBitmap(hBMObj)  \
33   GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GO_BITMAP_MAGIC, GDIOBJFLAG_DEFAULT)
34 #define  BITMAPOBJ_HandleToPtr(hBMObj)  \
35   ((PBITMAPOBJ) GDIOBJ_LockObj ((HGDIOBJ) hBMObj, GO_BITMAP_MAGIC))
36 #define  BITMAPOBJ_ReleasePtr(hBMObj)  \
37   GDIOBJ_UnlockObj ((HGDIOBJ) hBMObj, GO_BITMAP_MAGIC)
38
39 /*#define  BITMAPOBJ_PtrToHandle(hBMObj)  \
40   ((HBITMAP) GDIOBJ_PtrToHandle ((PGDIOBJ) hBMObj, GO_BITMAP_MAGIC))*/
41 #define  BITMAPOBJ_LockBitmap(hBMObj) GDIOBJ_LockObject ((HGDIOBJ) hBMObj)
42 #define  BITMAPOBJ_UnlockBitmap(hBMObj) GDIOBJ_UnlockObject ((HGDIOBJ) hBMObj)
43
44 INT  BITMAPOBJ_GetWidthBytes (INT bmWidth, INT bpp);
45 HBITMAP  BITMAPOBJ_CopyBitmap (HBITMAP  hBitmap);
46 int DIB_GetDIBWidthBytes (int  width, int  depth);
47 int DIB_GetDIBImageBytes (int  width, int  height, int  depth);
48 int DIB_BitmapInfoSize (const BITMAPINFO * info, WORD coloruse);
49 INT BITMAP_GetObject(BITMAPOBJ * bmp, INT count, LPVOID buffer);
50 BOOL Bitmap_InternalDelete( PBITMAPOBJ pBmp );
51 HBITMAP BitmapToSurf(PBITMAPOBJ BitmapObj);
52
53 /*  User Entry Points  */
54 BOOL
55 STDCALL
56 W32kBitBlt (
57         HDC     hDCDest,
58         INT     XDest,
59         INT     YDest,
60         INT     Width,
61         INT     Height,
62         HDC     hDCSrc,
63         INT     XSrc,
64         INT     YSrc,
65         DWORD   ROP
66         );
67 HBITMAP
68 STDCALL
69 W32kCreateBitmap (
70         INT             Width,
71         INT             Height,
72         UINT            Planes,
73         UINT            BitsPerPel,
74         CONST VOID      * Bits
75         );
76 HBITMAP
77 STDCALL
78 W32kCreateCompatibleBitmap (
79         HDC     hDC,
80         INT     Width,
81         INT     Height
82         );
83 HBITMAP
84 STDCALL
85 W32kCreateBitmapIndirect (
86         CONST BITMAP    * BM
87         );
88 HBITMAP
89 STDCALL
90 W32kCreateDIBitmap (
91         HDC                     hDC,
92         CONST BITMAPINFOHEADER  * bmih,
93         DWORD                   Init,
94         CONST VOID              * bInit,
95         CONST BITMAPINFO        * bmi,
96         UINT                    Usage
97         );
98 HBITMAP
99 STDCALL
100 W32kCreateDIBSection (
101         HDC                     hDC,
102         CONST BITMAPINFO        * bmi,
103         UINT                    Usage,
104         VOID                    * Bits,
105         HANDLE                  hSection,
106         DWORD                   dwOffset
107         );
108 HBITMAP
109 STDCALL
110 W32kCreateDiscardableBitmap (
111         HDC     hDC,
112         INT     Width,
113         INT     Height
114         );
115 BOOL
116 STDCALL
117 W32kExtFloodFill (
118         HDC             hDC,
119         INT             XStart,
120         INT             YStart,
121         COLORREF        Color,
122         UINT            FillType
123         );
124 BOOL
125 STDCALL
126 W32kFloodFill (
127         HDC             hDC,
128         INT             XStart,
129         INT             YStart,
130         COLORREF        Fill
131         );
132 LONG
133 STDCALL
134 W32kGetBitmapBits (
135         HBITMAP hBitmap,
136         LONG    Buffer,
137         LPVOID  Bits
138         );
139 BOOL
140 STDCALL
141 W32kGetBitmapDimensionEx (
142         HBITMAP hBitmap,
143         LPSIZE  Dimension
144         );
145 UINT
146 STDCALL
147 W32kGetDIBColorTable (
148         HDC     hDC,
149         UINT    StartIndex,
150         UINT    Entries,
151         RGBQUAD * Colors
152         );
153 INT
154 STDCALL
155 W32kGetDIBits (
156         HDC             hDC,
157         HBITMAP         hBitmap,
158         UINT            StartScan,
159         UINT            ScanLines,
160         LPVOID          Bits,
161         LPBITMAPINFO    bi,
162         UINT            Usage
163         );
164 COLORREF
165 STDCALL
166 W32kGetPixel (
167         HDC     hDC,
168         INT     XPos,
169         INT     YPos
170         );
171 BOOL
172 STDCALL
173 W32kMaskBlt (
174         HDC     hDCDest,
175         INT     XDest,
176         INT     YDest,
177         INT     Width,
178         INT     Height,
179         HDC     hDCSrc,
180         INT     XSrc,
181         INT     YSrc,
182         HBITMAP hMaskBitmap,
183         INT     xMask,
184         INT     yMask,
185         DWORD   ROP
186         );
187 BOOL
188 STDCALL
189 W32kPlgBlt (
190         HDC             hDCDest,
191         CONST POINT     * Point,
192         HDC             hDCSrc,
193         INT             XSrc,
194         INT             YSrc,
195         INT             Width,
196         INT             Height,
197         HBITMAP         hMaskBitmap,
198         INT             xMask,
199         INT             yMask
200         );
201 LONG
202 STDCALL
203 W32kSetBitmapBits (
204         HBITMAP         hBitmap,
205         DWORD           Bytes,
206         CONST VOID      * Bits
207         );
208 BOOL
209 STDCALL
210 W32kSetBitmapDimensionEx (
211         HBITMAP hBitmap,
212         INT     Width,
213         INT     Height,
214         LPSIZE  Size
215         );
216 UINT
217 STDCALL
218 W32kSetDIBColorTable (
219         HDC             hDC,
220         UINT            StartIndex,
221         UINT            Entries,
222         CONST RGBQUAD   * Colors
223         );
224 INT
225 STDCALL
226 W32kSetDIBits (
227         HDC                     hDC,
228         HBITMAP                 hBitmap,
229         UINT                    StartScan,
230         UINT                    ScanLines,
231         CONST VOID              * Bits,
232         CONST BITMAPINFO        * bmi,
233         UINT                    ColorUse
234         );
235 INT
236 STDCALL
237 W32kSetDIBitsToDevice (
238         HDC                     hDC,
239         INT                     XDest,
240         INT                     YDest,
241         DWORD                   Width,
242         DWORD                   Height,
243         INT                     XSrc,
244         INT                     YSrc,
245         UINT                    StartScan,
246         UINT                    ScanLines,
247         CONST VOID              * Bits,
248         CONST BITMAPINFO        * bmi,
249         UINT                    ColorUse
250         );
251 COLORREF
252 STDCALL
253 W32kSetPixel (
254         HDC             hDC,
255         INT             X,
256         INT             Y,
257         COLORREF        Color
258         );
259 BOOL
260 STDCALL
261 W32kSetPixelV (
262         HDC             hDC,
263         INT             X,
264         INT             Y,
265         COLORREF        Color
266         );
267 BOOL
268 STDCALL
269 W32kStretchBlt (
270         HDC     hDCDest,
271         INT     XOriginDest,
272         INT     YOriginDest,
273         INT     WidthDest,
274         INT     HeightDest,
275         HDC     hDCSrc,
276         INT     XOriginSrc,
277         INT     YOriginSrc,
278         INT     WidthSrc,
279         INT     HeightSrc,
280         DWORD   ROP
281         );
282 INT
283 STDCALL
284 W32kStretchDIBits (
285         HDC                     hDC,
286         INT                     XDest,
287         INT                     YDest,
288         INT                     DestWidth,
289         INT                     DestHeight,
290         INT                     XSrc,
291         INT                     YSrc,
292         INT                     SrcWidth,
293         INT                     SrcHeight,
294         CONST VOID              * Bits,
295         CONST BITMAPINFO        * BitsInfo,
296         UINT                    Usage,
297         DWORD                   ROP
298         );
299 #endif
300