source: trunk/include/helpers/gpih.h@ 433

Last change on this file since 433 was 412, checked in by pr, 13 years ago

Add gpihQueryNextFontID() prototype.

  • Property svn:eol-style set to CRLF
  • Property svn:keywords set to Author Date Id Revision
File size: 17.7 KB
Line 
1
2/*
3 *@@sourcefile gpih.h:
4 * header file for gpih.c (GPI helper functions). See remarks there.
5 *
6 * Note: Version numbering in this file relates to XWorkplace version
7 * numbering.
8 *
9 *@@include #define INCL_GPILOGCOLORTABLE // for some funcs
10 *@@include #include <os2.h>
11 *@@include #include "helpers\gpih.h"
12 */
13
14/*
15 * Copyright (C) 1997-2012 Ulrich M”ller.
16 * This file is part of the "XWorkplace helpers" source package.
17 * This is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License as published
19 * by the Free Software Foundation, in version 2 as it comes in the
20 * "COPYING" file of the XWorkplace main distribution.
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 */
26
27#if __cplusplus
28extern "C" {
29#endif
30
31#ifndef GPIH_HEADER_INCLUDED
32 #define GPIH_HEADER_INCLUDED
33
34 /* ******************************************************************
35 *
36 * Rectangle helpers
37 *
38 ********************************************************************/
39
40 BOOL gpihIsPointInRect(PRECTL prcl,
41 LONG x,
42 LONG y);
43
44 VOID gpihInflateRect(PRECTL prcl,
45 LONG l);
46
47 VOID gpihCopyRectIncl(PRECTL prclGpi,
48 PRECTL prclWin);
49
50 /* ******************************************************************
51 *
52 * Device helpers
53 *
54 ********************************************************************/
55
56 ULONG gpihQueryDisplayCaps(ULONG ulIndex);
57
58 /* ******************************************************************
59 *
60 * Color helpers
61 *
62 ********************************************************************/
63
64 // common RGB colors
65 #define RGBCOL_BLACK 0x00000000
66 #define RGBCOL_WHITE 0x00FFFFFF
67
68 #define RGBCOL_RED 0x00FF0000
69 #define RGBCOL_PINK 0x00FF00FF
70 #define RGBCOL_BLUE 0x000000FF
71 #define RGBCOL_CYAN 0x0000FFFF
72 #define RGBCOL_GREEN 0x0000FF00
73 #define RGBCOL_YELLOW 0x00FFFF00
74 #define RGBCOL_GRAY 0x00CCCCCC
75
76 #define RGBCOL_DARKRED 0x00800000
77 #define RGBCOL_DARKPINK 0x00800080
78 #define RGBCOL_DARKBLUE 0x00000080
79 #define RGBCOL_DARKCYAN 0x00008080
80 #define RGBCOL_DARKGREEN 0x00008000
81 #define RGBCOL_DARKYELLOW 0x00808000
82 #define RGBCOL_DARKGRAY 0x00808080
83
84 /*
85 *@@ GET_BLUE:
86 * gets the BLUE (first) byte from a
87 * LONG RGB value.
88 *
89 *@@added V0.9.14 (2001-08-03) [umoeller]
90 */
91
92 #define GET_BLUE(lcol) *( ((PBYTE)(&(lcol))) )
93
94 /*
95 *@@ GET_GREEN:
96 * gets the GREEN (second) byte from a
97 * LONG RGB value.
98 *
99 *@@added V0.9.14 (2001-08-03) [umoeller]
100 */
101
102 #define GET_GREEN(lcol) *( ((PBYTE)(&(lcol))) + 1 )
103
104 /*
105 *@@ GET_RED:
106 * gets the RED (third) byte from a
107 * LONG RGB value.
108 *
109 *@@added V0.9.14 (2001-08-03) [umoeller]
110 */
111
112 #define GET_RED(lcol) *( ((PBYTE)(&(lcol))) + 2 )
113
114 /*
115 *@@ MAKE_RGB:
116 * composes a LONG color value from
117 * three BYTE values for red, green,
118 * and blue.
119 *
120 *@@added V0.9.14 (2001-08-03) [umoeller]
121 */
122
123 #define MAKE_RGB(r, g, b) (LONG)((BYTE)(b)) + (((LONG)((BYTE)(g))) << 8) + (((LONG)((BYTE)(r))) << 16)
124
125 VOID XWPENTRY gpihManipulateRGB(PLONG plColor, double dFactor);
126 typedef VOID XWPENTRY GPIHMANIPULATERGB(PLONG plColor, double dFactor);
127 typedef GPIHMANIPULATERGB *PGPIHMANIPULATERGB;
128
129 LONG XWPENTRY gpihMediumRGB(LONG lcol1, LONG lcol2);
130 typedef LONG XWPENTRY GPIHMEDIUMRGB(LONG lcol1, LONG lcol2);
131 typedef GPIHMEDIUMRGB *PGPIHMEDIUMRGB;
132
133 BOOL XWPENTRY gpihSwitchToRGB(HPS hps);
134 typedef BOOL XWPENTRY GPIHSWITCHTORGB(HPS hps);
135 typedef GPIHSWITCHTORGB *PGPIHSWITCHTORGB;
136
137 /* ******************************************************************
138 *
139 * Drawing primitives helpers
140 *
141 ********************************************************************/
142
143 VOID XWPENTRY gpihDrawRect(HPS hps, PRECTL prcl);
144 typedef VOID XWPENTRY GPIHDRAWRECT(HPS hps, PRECTL prcl);
145 typedef GPIHDRAWRECT *PGPIHDRAWRECT;
146
147 VOID XWPENTRY gpihBox(HPS hps, LONG lControl, PRECTL prcl);
148 typedef VOID XWPENTRY GPIHBOX(HPS hps, LONG lControl, PRECTL prcl);
149 typedef GPIHBOX *PGPIHBOX;
150
151 VOID XWPENTRY gpihMarker(HPS hps, LONG x, LONG y, ULONG ulWidth);
152 typedef VOID XWPENTRY GPIHMARKER(HPS hps, LONG x, LONG y, ULONG ulWidth);
153 typedef GPIHMARKER *PGPIHMARKER;
154
155 VOID XWPENTRY gpihDrawThickFrame(HPS hps, PRECTL prcl, ULONG ulWidth);
156 typedef VOID XWPENTRY GPIHDRAWTHICKFRAME(HPS hps, PRECTL prcl, ULONG ulWidth);
157 typedef GPIHDRAWTHICKFRAME *PGPIHDRAWTHICKFRAME;
158
159 VOID XWPENTRY gpihDraw3DFrame2(HPS hps,
160 PRECTL prcl,
161 USHORT usWidth,
162 LONG lColorLeft,
163 LONG lColorRight);
164 typedef VOID XWPENTRY GPIHDRAW3DFRAME2(HPS hps,
165 PRECTL prcl,
166 USHORT usWidth,
167 LONG lColorLeft,
168 LONG lColorRight);
169 typedef GPIHDRAW3DFRAME2 *PGPIHDRAW3DFRAME2;
170
171 VOID XWPENTRY gpihDraw3DFrame(HPS hps,
172 PRECTL prcl,
173 USHORT usWidth,
174 LONG lColorLeft,
175 LONG lColorRight);
176 typedef VOID XWPENTRY GPIHDRAW3DFRAME(HPS hps,
177 PRECTL prcl,
178 USHORT usWidth,
179 LONG lColorLeft,
180 LONG lColorRight);
181 typedef GPIHDRAW3DFRAME *PGPIHDRAW3DFRAME;
182
183 LONG XWPENTRY gpihCharStringPosAt(HPS hps,
184 PPOINTL pptlStart,
185 PRECTL prclRect,
186 ULONG flOptions,
187 LONG lCount,
188 PCH pchString);
189 typedef LONG XWPENTRY GPIHCHARSTRINGPOSAT(HPS hps,
190 PPOINTL pptlStart,
191 PRECTL prclRect,
192 ULONG flOptions,
193 LONG lCount,
194 PCH pchString);
195 typedef GPIHCHARSTRINGPOSAT *PGPIHCHARSTRINGPOSAT;
196
197 VOID XWPENTRY gpihCalcTextExtent(HPS hps,
198 PCSZ pcsz,
199 PLONG pcx,
200 PULONG pcLines);
201
202 VOID XWPENTRY gpihDrawString(HPS hps,
203 PCSZ pcsz,
204 PRECTL prcl,
205 ULONG fl,
206 PFONTMETRICS pfm);
207
208 /*
209 *@@ BKGNDINFO:
210 * background information passed into
211 * gpihFillBackground.
212 *
213 * The color flags apply always. The
214 * bitmap flags apply only if hbm is
215 * not NULLHANDLE.
216 *
217 *@@added V0.9.19 (2002-05-07) [umoeller]
218 */
219
220 typedef struct _BKGNDINFO
221 {
222 ULONG flPaintMode;
223 // a combination of one of the color
224 // flags and one of the bitmap flags:
225 // a) color flags
226 #define PMOD_COLORMASK 0x000F
227 #define PMOD_SOLID 0x0000 // solid color, use lcol1
228 #define PMOD_TOPBOTTOM 0x0001 // spectrum, lcol1 = top, lcol2 = bottom
229 #define PMOD_LEFTRIGHT 0x0002 // spectrum, lcol1 = left, lcol2 = right
230 // b) bitmap flags
231 #define PMOD_BMPMASK 0x00F0
232 #define PMOD_BMP_CENTER 0x0000 // center the bitmap
233 #define PMOD_BMP_SCALE_X 0x0002 // scale the bitmap to size in prcl,
234 // respect lScale
235 #define PMOD_BMP_TILE 0x0004 // tile the bitmap
236
237 LONG lcol1, // color 1 (RGB)
238 lcol2; // color 2 (RGB)
239
240 HBITMAP hbm; // bitmap or NULLHANDLE if none
241 ULONG lScale; // only with PMOD_BMP_SCALE_X: how many times
242 // the bmp should be scaled (as with WPS
243 // folder "Background" page); this cannot
244 // be zero then
245
246 } BKGNDINFO, *PBKGNDINFO;
247
248 VOID gpihFillBackground(HPS hps,
249 PRECTL prcl,
250 PBKGNDINFO pInfo);
251
252 /* ******************************************************************
253 *
254 * Font helpers
255 *
256 ********************************************************************/
257
258 BOOL XWPENTRY gpihMatchFont(HPS hps,
259 LONG lSize,
260 BOOL fFamily,
261 const char *pcszName,
262 USHORT usFormat,
263 FATTRS *pfa,
264 PFONTMETRICS pFontMetrics);
265 typedef BOOL XWPENTRY GPIHMATCHFONT(HPS hps,
266 LONG lSize,
267 BOOL fFamily,
268 const char *pcszName,
269 USHORT usFormat,
270 FATTRS *pfa,
271 PFONTMETRICS pFontMetrics);
272 typedef GPIHMATCHFONT *PGPIHMATCHFONT;
273
274 BOOL XWPENTRY gpihSplitPresFont(PSZ pszFontNameSize,
275 PULONG pulSize,
276 PSZ *ppszFaceName);
277 typedef BOOL XWPENTRY GPIHSPLITPRESFONT(PSZ pszFontNameSize,
278 PULONG pulSize,
279 PSZ *ppszFaceName);
280 typedef GPIHSPLITPRESFONT *PGPIHSPLITPRESFONT;
281
282 BOOL XWPENTRY gpihLockLCIDs(VOID);
283 typedef BOOL XWPENTRY GPIHLOCKLCIDS(VOID);
284 typedef GPIHLOCKLCIDS *PGPIHLOCKLCIDS;
285
286 VOID XWPENTRY gpihUnlockLCIDs(VOID);
287 typedef VOID XWPENTRY GPIHUNLOCKLCIDS(VOID);
288 typedef GPIHUNLOCKLCIDS *PGPIHUNLOCKLCIDS;
289
290 LONG XWPENTRY gpihQueryNextFontID(HPS hps);
291
292 LONG XWPENTRY gpihCreateFont(HPS hps, FATTRS *pfa);
293 typedef LONG XWPENTRY GPIHCREATEFONT(HPS hps, FATTRS *pfa);
294 typedef GPIHCREATEFONT *PGPIHCREATEFONT;
295
296 LONG XWPENTRY gpihFindFont(HPS hps,
297 LONG lSize,
298 BOOL fFamily,
299 const char *pcszName,
300 USHORT usFormat,
301 PFONTMETRICS pFontMetrics);
302 typedef LONG XWPENTRY GPIHFINDFONT(HPS hps,
303 LONG lSize,
304 BOOL fFamily,
305 const char *pcszName,
306 USHORT usFormat,
307 PFONTMETRICS pFontMetrics);
308 typedef GPIHFINDFONT *PGPIHFINDFONT;
309
310 LONG XWPENTRY gpihFindPresFont(HWND hwnd,
311 BOOL fInherit,
312 HPS hps,
313 const char *pcszDefaultFont,
314 PFONTMETRICS pFontMetrics,
315 PLONG plSize);
316 typedef LONG XWPENTRY GPIHFINDPRESFONT(HWND hwnd,
317 BOOL fInherit,
318 HPS hps,
319 const char *pcszDefaultFont,
320 PFONTMETRICS pFontMetrics,
321 PLONG plSize);
322 typedef GPIHFINDPRESFONT *PGPIHFINDPRESFONT;
323
324 BOOL XWPENTRY gpihSetPointSize(HPS hps, LONG lPointSize);
325 typedef BOOL XWPENTRY GPIHSETPOINTSIZE(HPS hps, LONG lPointSize);
326 typedef GPIHSETPOINTSIZE *PGPIHSETPOINTSIZE;
327
328 LONG XWPENTRY gpihQueryLineSpacing(HPS hps);
329 typedef LONG XWPENTRY GPIHQUERYLINESPACING(HPS hps);
330 typedef GPIHQUERYLINESPACING *PGPIHQUERYLINESPACING;
331
332 /* ******************************************************************
333 *
334 * Bitmap helpers
335 *
336 ********************************************************************/
337
338 BOOL XWPENTRY gpihCreateMemPS(HAB hab, PSIZEL psizlPage, HDC *hdcMem, HPS *hpsMem);
339 typedef BOOL XWPENTRY GPIHCREATEMEMPS(HAB hab, PSIZEL psizlPage, HDC *hdcMem, HPS *hpsMem);
340 typedef GPIHCREATEMEMPS *PGPIHCREATEMEMPS;
341
342 HBITMAP XWPENTRY gpihCreateBitmap(HPS hpsMem, ULONG cx, ULONG cy);
343 typedef HBITMAP XWPENTRY GPIHCREATEBITMAP(HPS hpsMem, ULONG cx, ULONG cy);
344 typedef GPIHCREATEBITMAP *PGPIHCREATEBITMAP;
345
346 HBITMAP XWPENTRY gpihCreateBitmap2(HPS hpsMem, ULONG cx, ULONG cy, ULONG cPlanes, ULONG cBitCount);
347
348 HBITMAP XWPENTRY gpihCreateHalftonedBitmap(HAB hab, HBITMAP hbmSource, LONG lColorGray);
349 typedef HBITMAP XWPENTRY GPIHCREATEHALFTONEDBITMAP(HAB hab, HBITMAP hbmSource, LONG lColorGray);
350 typedef GPIHCREATEHALFTONEDBITMAP *PGPIHCREATEHALFTONEDBITMAP;
351
352 APIRET gpihLoadBitmap(HBITMAP *phbm,
353 HPS hps,
354 HMODULE hmodResource,
355 ULONG idBitmap);
356
357 APIRET XWPENTRY gpihLoadBitmapFile(HBITMAP *phbm, HPS hps, PCSZ pcszBmpFile);
358 typedef APIRET XWPENTRY GPIHLOADBITMAPFILE(HBITMAP *phbm, HPS hps, PCSZ pcszBmpFile);
359 typedef GPIHLOADBITMAPFILE *PGPIHLOADBITMAPFILE;
360
361 LONG XWPENTRY gpihStretchBitmap(HPS hpsTarget,
362 HBITMAP hbmSource,
363 PRECTL prclSource,
364 PRECTL prclTarget,
365 BOOL fProportional);
366 typedef LONG XWPENTRY GPIHSTRETCHBITMAP(HPS hpsTarget,
367 HBITMAP hbmSource,
368 PRECTL prclSource,
369 PRECTL prclTarget,
370 BOOL fProportional);
371 typedef GPIHSTRETCHBITMAP *PGPIHSTRETCHBITMAP;
372
373 /* BOOL XWPENTRY gpihIcon2Bitmap(HPS hpsMem,
374 HPOINTER hptr,
375 LONG lBkgndColor,
376 PPOINTL pptlLowerLeft,
377 ULONG ulIconSize); */
378
379 BOOL XWPENTRY gpihDrawPointer(HPS hps,
380 LONG x,
381 LONG y,
382 HPOINTER hptr,
383 PSIZEL pszlIcon,
384 PRECTL prclClip,
385 ULONG fl);
386 typedef BOOL XWPENTRY GPIHDRAWPOINTER(HPS hps,
387 LONG x,
388 LONG y,
389 HPOINTER hptr,
390 PSIZEL pszlIcon,
391 PRECTL prclClip,
392 ULONG fl);
393 typedef GPIHDRAWPOINTER *PGPIHDRAWPOINTER;
394
395 /* ******************************************************************
396 *
397 * XBitmap functions
398 *
399 ********************************************************************/
400
401 /*
402 *@@ XBITMAP:
403 * representation of an XBitmap, which is created
404 * with gpihCreateXBitmap and destroyed with
405 * gpihDestroyXBitmap.
406 *
407 * An XBitmap is essentially a set of a memory
408 * device context, a memory presentation space,
409 * and a bitmap which is selected into that
410 * HPS.
411 *
412 *@@added V0.9.12 (2001-05-20) [umoeller]
413 */
414
415 typedef struct _XBITMAP
416 {
417 HDC hdcMem; // memory DC
418 HPS hpsMem; // memory PS
419 HBITMAP hbm; // bitmap handle
420 SIZEL szl; // size of bitmap
421 } XBITMAP, *PXBITMAP;
422
423 PXBITMAP XWPENTRY gpihCreateXBitmap(HAB hab, LONG cx, LONG cy);
424 typedef PXBITMAP XWPENTRY GPIHCREATEXBITMAP(HAB hab, LONG cx, LONG cy);
425 typedef GPIHCREATEXBITMAP *PGPIHCREATEXBITMAP;
426
427 PXBITMAP gpihCreateXBitmap2(HAB hab,
428 LONG cx,
429 LONG cy,
430 ULONG cPlanes,
431 ULONG cBitCount);
432
433 HBITMAP XWPENTRY gpihDetachBitmap(PXBITMAP pbmp);
434
435 VOID XWPENTRY gpihDestroyXBitmap(PXBITMAP *ppbmp);
436 typedef VOID XWPENTRY GPIHDESTROYXBITMAP(PXBITMAP *ppbmp);
437 typedef GPIHDESTROYXBITMAP *PGPIHDESTROYXBITMAP;
438
439 PXBITMAP gpihCreateBmpFromPS(HAB hab,
440 HPS hpsScreen,
441 PRECTL prcl);
442
443#endif
444
445#if __cplusplus
446}
447#endif
448
Note: See TracBrowser for help on using the repository browser.