|
|
1.1 root 1: /***************************************************************************\
2: *
3: * Module Name: PMBITMAP.H
4: *
5: * OS/2 Presentation Manager Bit Map, Icon and Pointer type declarations.
6: *
7: * Copyright (c) International Business Machines Corporation 1981, 1988, 1989
8: * Copyright (c) Microsoft Corporation 1981, 1988, 1989
9: *
10: \***************************************************************************/
11:
12: /* XLATOFF */
13: #ifndef BITMAPS_INCLUDED /* multiple include protection */
14:
15: #pragma pack(2) /* pack on wordboundary */
16: /* XLATON */
17:
18: #define BITMAPS_INCLUDED
19:
20: /* rastor operations defined for GpiBitBlt */
21: #define ROP_SRCCOPY 0x00CCL
22: #define ROP_SRCPAINT 0x00EEL
23: #define ROP_SRCAND 0x0088L
24: #define ROP_SRCINVERT 0x0066L
25: #define ROP_SRCERASE 0x0044L
26: #define ROP_NOTSRCCOPY 0x0033L
27: #define ROP_NOTSRCERASE 0x0011L
28: #define ROP_MERGECOPY 0x00C0L
29: #define ROP_MERGEPAINT 0x00BBL
30: #define ROP_PATCOPY 0x00F0L
31: #define ROP_PATPAINT 0x00FBL
32: #define ROP_PATINVERT 0x005AL
33: #define ROP_DSTINVERT 0x0055L
34: #define ROP_ZERO 0x0000L
35: #define ROP_ONE 0x00FFL
36:
37: /* Blt options for GpiBitBlt */
38: #define BBO_OR 0L
39: #define BBO_AND 1L
40: #define BBO_IGNORE 2L
41:
42: /* Fill options for GpiFloodFill */
43: #define FF_BOUNDARY 0L
44: #define FF_SURFACE 1L
45:
46: /* error return for GpiSetBitmap */
47: #define HBM_ERROR ((HBITMAP)-1L)
48:
49: #ifndef INCL_DDIDEFS
50:
51: /*** bitmap and pel functions */
52: /* XLATOFF */
53: #ifdef INCL_16
54: #define GpiBitBlt Gpi16BitBlt
55: #define GpiDeleteBitmap Gpi16DeleteBitmap
56: #define GpiLoadBitmap Gpi16LoadBitmap
57: #define GpiSetBitmap Gpi16SetBitmap
58: #define GpiWCBitBlt Gpi16WCBitBlt
59: #endif /* INCL_16 */
60: /* XLATON */
61: LONG APIENTRY GpiBitBlt( HPS hpsTarget, HPS hpsSource, LONG lCount
62: , PPOINTL aptlPoints, LONG lRop, ULONG flOptions );
63: BOOL APIENTRY GpiDeleteBitmap( HBITMAP hbm );
64: HBITMAP APIENTRY GpiLoadBitmap( HPS hps, HMODULE Resource, USHORT idBitmap
65: , LONG lWidth, LONG lHeight );
66: HBITMAP APIENTRY GpiSetBitmap(HPS hps, HBITMAP hbm );
67: LONG APIENTRY GpiWCBitBlt( HPS hpsTarget, HBITMAP hbmSource, LONG lCount
68: , PPOINTL aptlPoints, LONG lRop, ULONG flOptions );
69:
70: #endif /* no INCL_DDIDEFS */
71:
72: #ifdef INCL_GPIBITMAPS
73:
74: /* usage flags for GpiCreateBitmap */
75: #define CBM_INIT 0x0004L
76:
77: /* bitmap parameterization used by GpiCreateBitmap and others */
78: typedef struct _BITMAPINFOHEADER { /* bmp */
79: ULONG cbFix;
80: USHORT cx;
81: USHORT cy;
82: USHORT cPlanes;
83: USHORT cBitCount;
84: } BITMAPINFOHEADER;
85: typedef BITMAPINFOHEADER FAR *PBITMAPINFOHEADER;
86:
87: /* RGB data for _BITMAPINFO struct */
88: typedef struct _RGB { /* rgb */
89: BYTE bBlue;
90: BYTE bGreen;
91: BYTE bRed;
92: } RGB;
93:
94: /* bitmap data used by GpiSetBitmapBits and others */
95: typedef struct _BITMAPINFO { /* bmi */
96: ULONG cbFix;
97: USHORT cx;
98: USHORT cy;
99: USHORT cPlanes;
100: USHORT cBitCount;
101: RGB argbColor[1];
102: } BITMAPINFO;
103: typedef BITMAPINFO FAR *PBITMAPINFO;
104:
105: #define BCA_UNCOMP 0L
106:
107: #define BRU_METRIC 0L
108:
109: #define BRA_BOTTOMUP 0L
110:
111: #define BRH_NOTHALFTONED 0L
112: #define BRH_ERRORDIFFUSION 1L
113: #define BRH_PANDA 2L
114: #define BRH_SUPERCIRCLE 3L
115:
116: #define BCE_RGB 0L
117:
118: typedef struct _BITMAPINFOHEADER2 { /* bmp2 */
119: ULONG cbFix; /* Length of structure */
120: ULONG cx; /* Bit-map width in pels */
121: ULONG cy; /* Bit-map height in pels */
122: USHORT cPlanes; /* Number of bit planes */
123: USHORT cBitCount; /* Number of bits per pel within a plane */
124: ULONG ulCompression; /* Compression scheme used to store the bitmap */
125: ULONG cbImage; /* Length of bit-map storage data in bytes */
126: ULONG cxResolution; /* x resolution of target device */
127: ULONG cyResolution; /* y resolution of target device */
128: ULONG cclrUsed; /* Number of color indices used */
129: ULONG cclrImportant; /* Number of important color indices */
130: USHORT usUnits; /* Units of measure */
131: USHORT usReserved; /* Reserved */
132: USHORT usRecording; /* Recording algorithm */
133: USHORT usRendering; /* Halftoning algorithm */
134: ULONG cSize1; /* Size value 1 */
135: ULONG cSize2; /* Size value 2 */
136: ULONG ulColorEncoding; /* Color encoding */
137: ULONG ulIdentifier; /* Reserved for application use */
138: } BITMAPINFOHEADER2;
139: typedef BITMAPINFOHEADER2 FAR *PBITMAPINFOHEADER2;
140:
141: typedef struct _RGB2 { /* rgb2 */
142: BYTE bBlue; /* Blue component of the color definition */
143: BYTE bGreen; /* Green component of the color definition*/
144: BYTE bRed; /* Red component of the color definition */
145: BYTE fcOptions; /* Reserved, must be zero */
146: } RGB2;
147: typedef RGB2 FAR *PRGB2;
148:
149: typedef struct _BITMAPINFO2 { /* bmi2 */
150: ULONG cbFix; /* Length of fixed portion of structure */
151: ULONG cx; /* Bit-map width in pels */
152: ULONG cy; /* Bit-map height in pels */
153: USHORT cPlanes; /* Number of bit planes */
154: USHORT cBitCount; /* Number of bits per pel within a plane */
155: ULONG ulCompression; /* Compression scheme used to store the bitmap */
156: ULONG cbImage; /* Length of bit-map storage data in bytes */
157: ULONG cxResolution; /* x resolution of target device */
158: ULONG cyResolution; /* y resolution of target device */
159: ULONG cclrUsed; /* Number of color indices used */
160: ULONG cclrImportant; /* Number of important color indices */
161: USHORT usUnits; /* Units of measure */
162: USHORT usReserved; /* Reserved */
163: USHORT usRecording; /* Recording algorithm */
164: USHORT usRendering; /* Halftoning algorithm */
165: ULONG cSize1; /* Size value 1 */
166: ULONG cSize2; /* Size value 2 */
167: ULONG ulColorEncoding; /* Color encoding */
168: ULONG ulIdentifier; /* Reserved for application use */
169: } BITMAPINFO2;
170: typedef BITMAPINFO2 FAR *PBITMAPINFO2;
171:
172: /* error return code for GpiSet/QueryBitmapBits */
173: #define BMB_ERROR (-1L)
174:
175: #ifndef INCL_DDIDEFS
176:
177: /*** bitmap and pel functions */
178: /* XLATOFF */
179: #ifdef INCL_16
180: #define GpiCreateBitmap Gpi16CreateBitmap
181: #define GpiSetBitmapBits Gpi16SetBitmapBits
182: #define GpiSetBitmapDimension Gpi16SetBitmapDimension
183: #define GpiSetBitmapId Gpi16SetBitmapId
184: #define GpiQueryBitmapBits Gpi16QueryBitmapBits
185: #define GpiQueryBitmapDimension Gpi16QueryBitmapDimension
186: #define GpiQueryBitmapHandle Gpi16QueryBitmapHandle
187: #define GpiQueryBitmapParameters Gpi16QueryBitmapParameters
188: #define GpiQueryBitmapInfoHeader Gpi16QueryBitmapInfoHeader
189: #define GpiQueryDeviceBitmapFormats Gpi16QueryDeviceBitmapFormats
190: #define GpiSetPel Gpi16SetPel
191: #define GpiQueryPel Gpi16QueryPel
192: #define GpiFloodFill Gpi16FloodFill
193: #define GpiDrawBits Gpi16DrawBits
194: #endif /* INCL_16 */
195: /* XLATON */
196: HBITMAP APIENTRY GpiCreateBitmap( HPS hps, PBITMAPINFOHEADER2 pbmpNew
197: , ULONG flOptions, PBYTE pbInitData
198: , PBITMAPINFO2 pbmiInfoTable );
199: LONG APIENTRY GpiSetBitmapBits( HPS hps, LONG lScanStart, LONG lScans
200: , PBYTE pbBuffer, PBITMAPINFO2 pbmiInfoTable );
201: BOOL APIENTRY GpiSetBitmapDimension( HBITMAP hbm, PSIZEL psizlBitmapDimension );
202: BOOL APIENTRY GpiSetBitmapId( HPS hps, HBITMAP hbm, LONG lLcid );
203: LONG APIENTRY GpiQueryBitmapBits( HPS hps, LONG lScanStart, LONG lScans
204: , PBYTE pbBuffer, PBITMAPINFO2 pbmiInfoTable );
205: BOOL APIENTRY GpiQueryBitmapDimension( HBITMAP hbm, PSIZEL psizlBitmapDimension );
206: HBITMAP APIENTRY GpiQueryBitmapHandle( HPS hps, LONG lLcid );
207: BOOL APIENTRY GpiQueryBitmapParameters( HBITMAP hbm
208: , PBITMAPINFOHEADER pbmpData );
209: BOOL APIENTRY GpiQueryBitmapInfoHeader( HBITMAP hbm
210: , PBITMAPINFOHEADER2 pbmpData );
211: BOOL APIENTRY GpiQueryDeviceBitmapFormats( HPS hps, LONG lCount
212: , PLONG alArray );
213:
214: LONG APIENTRY GpiSetPel( HPS hps, PPOINTL pptlPoint );
215: LONG APIENTRY GpiQueryPel( HPS hps, PPOINTL pptlPoint );
216:
217: LONG APIENTRY GpiFloodFill( HPS hps, LONG lOptions, LONG lColor );
218: LONG APIENTRY GpiDrawBits( HPS hps, PVOID pBits,
219: PBITMAPINFO2 pbmiInfoTable, LONG lCount,
220: PPOINTL aptlPoints, LONG lRop,
221: ULONG flOptions );
222:
223: #endif /* no INCL_DDIDEFS */
224:
225: /*
226: * This is the file format structure for Bit Maps, Pointers and Icons
227: * as stored in the resource file of a PM application.
228: *
229: * Notes on file format:
230: grepos2ch BITMAPFILEHEADER entry is immediately followed by the color table
231: * for the bit map bits it references.
232: * Icons and Pointers contain two BITMAPFILEHEADERs for each ARRAYHEADER
233: * item. The first one is for the ANDXOR mask, the second is for the
234: * COLOR mask. All offsets are absolute based on the start of the FILE.
235: */
236:
237: typedef struct _BITMAPFILEHEADER { /* bfh */
238: USHORT usType;
239: ULONG cbSize;
240: SHORT xHotspot;
241: SHORT yHotspot;
242: ULONG offBits;
243: BITMAPINFOHEADER bmp;
244: } BITMAPFILEHEADER;
245: typedef BITMAPFILEHEADER FAR *PBITMAPFILEHEADER;
246:
247: /*
248: * This is the 1.2 device independent format header
249: */
250: typedef struct _BITMAPARRAYFILEHEADER { /* bafh */
251: USHORT usType;
252: ULONG cbSize;
253: ULONG offNext;
254: USHORT cxDisplay;
255: USHORT cyDisplay;
256: BITMAPFILEHEADER bfh;
257: } BITMAPARRAYFILEHEADER;
258: typedef BITMAPARRAYFILEHEADER FAR *PBITMAPARRAYFILEHEADER;
259:
260:
261: typedef struct _BITMAPFILEHEADER2 { /* bfh2 */
262: USHORT usType;
263: ULONG cbSize;
264: SHORT xHotspot;
265: SHORT yHotspot;
266: ULONG offBits;
267: BITMAPINFOHEADER2 bmp2;
268: } BITMAPFILEHEADER2;
269: typedef BITMAPFILEHEADER2 FAR *PBITMAPFILEHEADER2;
270:
271:
272: typedef struct _BITMAPARRAYFILEHEADER2 { /* bafh2 */
273: USHORT usType;
274: ULONG cbSize;
275: ULONG offNext;
276: USHORT cxDisplay;
277: USHORT cyDisplay;
278: BITMAPFILEHEADER2 bfh2;
279: } BITMAPARRAYFILEHEADER2;
280: typedef BITMAPARRAYFILEHEADER2 FAR *PBITMAPARRAYFILEHEADER2;
281:
282: /*
283: * These are the identifying values that go in the usType field of the
284: * BITMAPFILEHEADER(2) and BITMAPARRAYFILEHEADER(2).
285: * (BFT_ => Bit map File Type)
286: */
287: #define BFT_ICON 0x4349 /* 'IC' */
288: #define BFT_BMAP 0x4d42 /* 'BM' */
289: #define BFT_POINTER 0x5450 /* 'PT' */
290: #define BFT_COLORICON 0x4943 /* 'CI' */
291: #define BFT_COLORPOINTER 0x5043 /* 'CP' */
292: #define BFT_BITMAPARRAY 0x4142 /* 'BA' */
293:
294: #endif /* INCL_GPIBITMAPS */
295:
296: /* XLATOFF */
297: #pragma pack() /* reset to default packing */
298:
299: #endif /* BITMAPS_INCLUDED */
300: /* XLATON */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.