source: branches/branch-1-0/include/helpers/gpih.h@ 429

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