forked from GLDsuh-a/qt-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBitmapUtil.h
271 lines (164 loc) · 5.14 KB
/
BitmapUtil.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
--*/
#ifndef __BITMAPUTIL__
#define __BITMAPUTIL__
namespace BitmapUtil
{
//////////////////////////////////////////////////////////////////////////
//
// GetBitmapHeaderSize
//
/*++
The GetBitmapHeaderSize function returns the size of the DIB header
ULONG
GetBitmapHeaderSize(
LPCVOID pDib
);
Parameters
pDib
[in] Pointer to the in-memory DIB that can be represented by
BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER or BITMAPV5HEADER.
Return Values
Returns the size of the DIB header in bytes or 0 if the header is
not recognized.
--*/
ULONG GetBitmapHeaderSize(LPCVOID pDib);
//////////////////////////////////////////////////////////////////////////
//
// GetBitmapLineWidthInBytes
//
/*++
The GetBitmapLineWidthInBytes function returns the number of bytes
in one scan line of the image
ULONG
GetBitmapLineWidthInBytes(
ULONG nWidthInPixels,
ULONG nBitCount
);
Parameters
nWidthInPixels
[in] Width of a scan line in pixels
nBitCount
[in] Number of bits per pixel
Return Values
Returns the size one scan line of the image in bytes.
--*/
ULONG GetBitmapLineWidthInBytes(ULONG nWidthInPixels, ULONG nBitCount);
//////////////////////////////////////////////////////////////////////////
//
// GetBitmapDimensions
//
/*++
The GetBitmapDimensions function returns the width and height of a DIB
BOOL
GetBitmapDimensions(
LPCVOID pDib,
UINT *pWidth,
UINT *pHeight
);
Parameters
pDib
[in] Pointer to the in-memory DIB that can be represented by
BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER or BITMAPV5HEADER.
pWidth
[out] Receives the width of the image
pHeight
[out] Receives the height of the image
Return Values
Returns TRUE if the header is recognized, FALSE otherwise.
--*/
BOOL GetBitmapDimensions(LPCVOID pDib, UINT *pWidth, UINT *pHeight);
//////////////////////////////////////////////////////////////////////////
//
// GetBitmapSize
//
/*++
The GetBitmapSize function returns total size of the DIB. The size is
the sum of the bitmap header, the color palette (if present), the color
profile data (if present) and the pixel data.
ULONG
GetBitmapSize(
LPCVOID pDib
);
Parameters
pDib
[in] Pointer to the in-memory DIB that can be represented by
BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER or BITMAPV5HEADER.
Return Values
Returns the size of the image in bytes or 0 if the header is not
recognized.
--*/
ULONG GetBitmapSize(LPCVOID pDib);
//////////////////////////////////////////////////////////////////////////
//
// GetBitmapOffsetBits
//
/*++
The GetBitmapOffsetBits function returns the offset, in bytes, from the
beginning of the DIB data block to the bitmap bits.
ULONG
GetBitmapOffsetBits(
LPCVOID pDib
);
Parameters
pDib
[in] Pointer to the in-memory DIB that can be represented by
BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER or BITMAPV5HEADER.
Return Values
Returns the offset from the beginning of the DIB data block to the bitmap
pixels in bytes or 0 if the header is not recognized.
--*/
ULONG GetBitmapOffsetBits(LPCVOID pDib);
//////////////////////////////////////////////////////////////////////////
//
// FixBitmapHeight
//
/*++
The FixBitmapHeight function calculates the height of the DIB if the
height is not specified in the header and fills in the biSizeImage and
biHeight fields of the header.
BOOL
FixBitmapHeight(
PVOID pDib,
ULONG nSize,
BOOL bTopDown
);
Parameters
pDib
[in] Pointer to the in-memory DIB that can be represented by
BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER or BITMAPV5HEADER.
nSize
[in] The total size of the image in bytes.
bTopDown
[in] TRUE if the first scan line in the memory corresponds to the top
line of the image, FALSE if it corresponds to the bottom line.
Return Values
Returns TRUE if the header is recognized, FALSE otherwise.
--*/
BOOL FixBitmapHeight(PVOID pDib, ULONG nSize, BOOL bTopDown);
//////////////////////////////////////////////////////////////////////////
//
// FillBitmapFileHeader
//
/*++
The FillBitmapFileHeader function fills in a BITMAPFILEHEADER structure
according to the values specified in the DIB.
BOOL
FillBitmapFileHeader(
LPCVOID pDib,
PBITMAPFILEHEADER pbmfh
);
Parameters
pDib
[in] Pointer to the in-memory DIB that can be represented by
BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER or BITMAPV5HEADER.
pbmfh
[out] Receives the BITMAPFILEHEADER structure filled with the
values specified in the DIB
Return Values
Returns TRUE if the header is recognized, FALSE otherwise.
--*/
BOOL FillBitmapFileHeader(LPCVOID pDib,PBITMAPFILEHEADER pbmfh);
}; // namespace BitmapUtil
#endif //__BITMAPUTIL__