c52372fa509fd0e5526fc4278c85336888494602
[reactos.git] / reactos / 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 } BITMAPOBJ, *PBITMAPOBJ;
26
27 /* Internal interface */
28
29 #define BITMAPOBJ_AllocBitmap() \
30 ((PBITMAPOBJ) GDIOBJ_AllocObject (sizeof (BITMAPOBJ), GO_BITMAP_MAGIC))
31 #define BITMAPOBJ_FreeBitmap(hBMObj) GDIOBJ_FreeObject((HGDIOBJ) hBMObj)
32 #define BITMAPOBJ_HandleToPtr(hBMObj) \
33 ((PBITMAPOBJ) GDIOBJ_HandleToPtr ((HGDIOBJ) hBMObj, GO_BITMAP_MAGIC))
34 #define BITMAPOBJ_PtrToHandle(hBMObj) \
35 ((HBITMAP) GDIOBJ_PtrToHandle ((PGDIOBJ) hBMObj, GO_BITMAP_MAGIC))
36 #define BITMAPOBJ_LockBitmap(hBMObj) GDIOBJ_LockObject ((HGDIOBJ) hBMObj)
37 #define BITMAPOBJ_UnlockBitmap(hBMObj) GDIOBJ_UnlockObject ((HGDIOBJ) hBMObj)
38
39 INT BITMAPOBJ_GetWidthBytes (INT bmWidth, INT bpp);
40 HBITMAP BITMAPOBJ_CopyBitmap (HBITMAP hBitmap);
41 int DIB_GetDIBWidthBytes (int width, int depth);
42 int DIB_GetDIBImageBytes (int width, int height, int depth);
43 int DIB_BitmapInfoSize (const BITMAPINFO * info, WORD coloruse);
44
45 /* User Entry Points */
46 BOOL W32kBitBlt(HDC hDCDest,
47 INT XDest,
48 INT YDest,
49 INT Width,
50 INT Height,
51 HDC hDCSrc,
52 INT XSrc,
53 INT YSrc,
54 DWORD ROP);
55 HBITMAP W32kCreateBitmap(INT Width,
56 INT Height,
57 UINT Planes,
58 UINT BitsPerPel,
59 CONST VOID *Bits);
60 HBITMAP W32kCreateCompatibleBitmap(HDC hDC,
61 INT Width,
62 INT Height);
63 HBITMAP W32kCreateBitmapIndirect(CONST BITMAP *BM);
64 HBITMAP W32kCreateDIBitmap(HDC hDC,
65 CONST BITMAPINFOHEADER *bmih,
66 DWORD Init,
67 CONST VOID *bInit,
68 CONST BITMAPINFO *bmi,
69 UINT Usage);
70 HBITMAP W32kCreateDIBSection(HDC hDC,
71 CONST BITMAPINFO *bmi,
72 UINT Usage,
73 VOID *Bits,
74 HANDLE hSection,
75 DWORD dwOffset);
76 HBITMAP W32kCreateDiscardableBitmap(HDC hDC,
77 INT Width,
78 INT Height);
79 BOOL W32kExtFloodFill(HDC hDC,
80 INT XStart,
81 INT YStart,
82 COLORREF Color,
83 UINT FillType);
84 BOOL W32kFloodFill(HDC hDC,
85 INT XStart,
86 INT YStart,
87 COLORREF Fill);
88 LONG W32kGetBitmapBits(HBITMAP hBitmap,
89 LONG Buffer,
90 LPVOID Bits);
91 BOOL W32kGetBitmapDimensionEx(HBITMAP hBitmap,
92 LPSIZE Dimension);
93 UINT W32kGetDIBColorTable(HDC hDC,
94 UINT StartIndex,
95 UINT Entries,
96 RGBQUAD *Colors);
97 INT W32kGetDIBits(HDC hDC,
98 HBITMAP hBitmap,
99 UINT StartScan,
100 UINT ScanLines,
101 LPVOID Bits,
102 LPBITMAPINFO bi,
103 UINT Usage);
104 COLORREF W32kGetPixel(HDC hDC,
105 INT XPos,
106 INT YPos);
107 BOOL W32kMaskBlt(HDC hDCDest,
108 INT XDest,
109 INT YDest,
110 INT Width,
111 INT Height,
112 HDC hDCSrc,
113 INT XSrc,
114 INT YSrc,
115 HBITMAP hMaskBitmap,
116 INT xMask,
117 INT yMask,
118 DWORD ROP);
119 BOOL W32kPlgBlt(HDC hDCDest,
120 CONST POINT *Point,
121 HDC hDCSrc,
122 INT XSrc,
123 INT YSrc,
124 INT Width,
125 INT Height,
126 HBITMAP hMaskBitmap,
127 INT xMask,
128 INT yMask);
129 LONG W32kSetBitmapBits(HBITMAP hBitmap,
130 DWORD Bytes,
131 CONST VOID *Bits);
132 BOOL W32kSetBitmapDimensionEx(HBITMAP hBitmap,
133 INT Width,
134 INT Height,
135 LPSIZE Size);
136 UINT W32kSetDIBColorTable(HDC hDC,
137 UINT StartIndex,
138 UINT Entries,
139 CONST RGBQUAD *Colors);
140 INT W32kSetDIBits(HDC hDC,
141 HBITMAP hBitmap,
142 UINT StartScan,
143 UINT ScanLines,
144 CONST VOID *Bits,
145 CONST BITMAPINFO *bmi,
146 UINT ColorUse);
147 INT W32kSetDIBitsToDevice(HDC hDC,
148 INT XDest,
149 INT YDest,
150 DWORD Width,
151 DWORD Height,
152 INT XSrc,
153 INT YSrc,
154 UINT StartScan,
155 UINT ScanLines,
156 CONST VOID *Bits,
157 CONST BITMAPINFO *bmi,
158 UINT ColorUse);
159 COLORREF W32kSetPixel(HDC hDC,
160 INT X,
161 INT Y,
162 COLORREF Color);
163 BOOL W32kSetPixelV(HDC hDC,
164 INT X,
165 INT Y,
166 COLORREF Color);
167 BOOL W32kStretchBlt(HDC hDCDest,
168 INT XOriginDest,
169 INT YOriginDest,
170 INT WidthDest,
171 INT HeightDest,
172 HDC hDCSrc,
173 INT XOriginSrc,
174 INT YOriginSrc,
175 INT WidthSrc,
176 INT HeightSrc,
177 DWORD ROP);
178 INT W32kStretchDIBits(HDC hDC,
179 INT XDest,
180 INT YDest,
181 INT DestWidth,
182 INT DestHeight,
183 INT XSrc,
184 INT YSrc,
185 INT SrcWidth,
186 INT SrcHeight,
187 CONST VOID *Bits,
188 CONST BITMAPINFO *BitsInfo,
189 UINT Usage,
190 DWORD ROP);
191
192
193 #endif
194