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

Last change on this file since 234 was 232, checked in by umoeller, 23 years ago

New toolbar control.

  • 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-2000 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 /*
198 *@@ BKGNDINFO:
199 * background information passed into
200 * gpihFillBackground.
201 *
202 * The color flags apply always. The
203 * bitmap flags apply only if hbm is
204 * not NULLHANDLE.
205 *
206 *@@added V0.9.19 (2002-05-07) [umoeller]
207 */
208
209 typedef struct _BKGNDINFO
210 {
211 ULONG flPaintMode;
212 // a combination of one of the color
213 // flags and one of the bitmap flags:
214 // a) color flags
215 #define PMOD_COLORMASK 0x000F
216 #define PMOD_SOLID 0x0000 // solid color, use lcol1
217 #define PMOD_TOPBOTTOM 0x0001 // spectrum, lcol1 = top, lcol2 = bottom
218 #define PMOD_LEFTRIGHT 0x0002 // spectrum, lcol1 = left, lcol2 = right
219 // b) bitmap flags
220 #define PMOD_BMPMASK 0x00F0
221 #define PMOD_BMP_CENTER 0x0000 // center the bitmap
222 #define PMOD_BMP_SCALE_X 0x0002 // scale the bitmap to size in prcl,
223 // respect lScale
224 #define PMOD_BMP_TILE 0x0004 // tile the bitmap
225
226 LONG lcol1, // color 1 (RGB)
227 lcol2; // color 2 (RGB)
228
229 HBITMAP hbm; // bitmap or NULLHANDLE if none
230 ULONG lScale; // only with PMOD_BMP_SCALE_X: how many times
231 // the bmp should be scaled (as with WPS
232 // folder "Background" page); this cannot
233 // be zero then
234
235 } BKGNDINFO, *PBKGNDINFO;
236
237 VOID gpihFillBackground(HPS hps,
238 PRECTL prcl,
239 PBKGNDINFO pInfo);
240
241 /* ******************************************************************
242 *
243 * Font helpers
244 *
245 ********************************************************************/
246
247 BOOL XWPENTRY gpihMatchFont(HPS hps,
248 LONG lSize,
249 BOOL fFamily,
250 const char *pcszName,
251 USHORT usFormat,
252 FATTRS *pfa,
253 PFONTMETRICS pFontMetrics);
254 typedef BOOL XWPENTRY GPIHMATCHFONT(HPS hps,
255 LONG lSize,
256 BOOL fFamily,
257 const char *pcszName,
258 USHORT usFormat,
259 FATTRS *pfa,
260 PFONTMETRICS pFontMetrics);
261 typedef GPIHMATCHFONT *PGPIHMATCHFONT;
262
263 BOOL XWPENTRY gpihSplitPresFont(PSZ pszFontNameSize,
264 PULONG pulSize,
265 PSZ *ppszFaceName);
266 typedef BOOL XWPENTRY GPIHSPLITPRESFONT(PSZ pszFontNameSize,
267 PULONG pulSize,
268 PSZ *ppszFaceName);
269 typedef GPIHSPLITPRESFONT *PGPIHSPLITPRESFONT;
270
271 BOOL XWPENTRY gpihLockLCIDs(VOID);
272 typedef BOOL XWPENTRY GPIHLOCKLCIDS(VOID);
273 typedef GPIHLOCKLCIDS *PGPIHLOCKLCIDS;
274
275 VOID XWPENTRY gpihUnlockLCIDs(VOID);
276 typedef VOID XWPENTRY GPIHUNLOCKLCIDS(VOID);
277 typedef GPIHUNLOCKLCIDS *PGPIHUNLOCKLCIDS;
278
279 LONG XWPENTRY gpihCreateFont(HPS hps, FATTRS *pfa);
280 typedef LONG XWPENTRY GPIHCREATEFONT(HPS hps, FATTRS *pfa);
281 typedef GPIHCREATEFONT *PGPIHCREATEFONT;
282
283 LONG XWPENTRY gpihFindFont(HPS hps,
284 LONG lSize,
285 BOOL fFamily,
286 const char *pcszName,
287 USHORT usFormat,
288 PFONTMETRICS pFontMetrics);
289 typedef LONG XWPENTRY GPIHFINDFONT(HPS hps,
290 LONG lSize,
291 BOOL fFamily,
292 const char *pcszName,
293 USHORT usFormat,
294 PFONTMETRICS pFontMetrics);
295 typedef GPIHFINDFONT *PGPIHFINDFONT;
296
297 LONG XWPENTRY gpihFindPresFont(HWND hwnd,
298 BOOL fInherit,
299 HPS hps,
300 const char *pcszDefaultFont,
301 PFONTMETRICS pFontMetrics,
302 PLONG plSize);
303 typedef LONG XWPENTRY GPIHFINDPRESFONT(HWND hwnd,
304 BOOL fInherit,
305 HPS hps,
306 const char *pcszDefaultFont,
307 PFONTMETRICS pFontMetrics,
308 PLONG plSize);
309 typedef GPIHFINDPRESFONT *PGPIHFINDPRESFONT;
310
311 BOOL XWPENTRY gpihSetPointSize(HPS hps, LONG lPointSize);
312 typedef BOOL XWPENTRY GPIHSETPOINTSIZE(HPS hps, LONG lPointSize);
313 typedef GPIHSETPOINTSIZE *PGPIHSETPOINTSIZE;
314
315 LONG XWPENTRY gpihQueryLineSpacing(HPS hps);
316 typedef LONG XWPENTRY GPIHQUERYLINESPACING(HPS hps);
317 typedef GPIHQUERYLINESPACING *PGPIHQUERYLINESPACING;
318
319 /* ******************************************************************
320 *
321 * Bitmap helpers
322 *
323 ********************************************************************/
324
325 BOOL XWPENTRY gpihCreateMemPS(HAB hab, PSIZEL psizlPage, HDC *hdcMem, HPS *hpsMem);
326 typedef BOOL XWPENTRY GPIHCREATEMEMPS(HAB hab, PSIZEL psizlPage, HDC *hdcMem, HPS *hpsMem);
327 typedef GPIHCREATEMEMPS *PGPIHCREATEMEMPS;
328
329 HBITMAP XWPENTRY gpihCreateBitmap(HPS hpsMem, ULONG cx, ULONG cy);
330 typedef HBITMAP XWPENTRY GPIHCREATEBITMAP(HPS hpsMem, ULONG cx, ULONG cy);
331 typedef GPIHCREATEBITMAP *PGPIHCREATEBITMAP;
332
333 HBITMAP XWPENTRY gpihCreateBitmap2(HPS hpsMem, ULONG cx, ULONG cy, ULONG cPlanes, ULONG cBitCount);
334
335 HBITMAP XWPENTRY gpihCreateHalftonedBitmap(HAB hab, HBITMAP hbmSource, LONG lColorGray);
336 typedef HBITMAP XWPENTRY GPIHCREATEHALFTONEDBITMAP(HAB hab, HBITMAP hbmSource, LONG lColorGray);
337 typedef GPIHCREATEHALFTONEDBITMAP *PGPIHCREATEHALFTONEDBITMAP;
338
339 APIRET gpihLoadBitmap(HBITMAP *phbm,
340 HPS hps,
341 HMODULE hmodResource,
342 ULONG idBitmap);
343
344 APIRET XWPENTRY gpihLoadBitmapFile(HBITMAP *phbm, HPS hps, PCSZ pcszBmpFile);
345 typedef APIRET XWPENTRY GPIHLOADBITMAPFILE(HBITMAP *phbm, HPS hps, PCSZ pcszBmpFile);
346 typedef GPIHLOADBITMAPFILE *PGPIHLOADBITMAPFILE;
347
348 LONG XWPENTRY gpihStretchBitmap(HPS hpsTarget,
349 HBITMAP hbmSource,
350 PRECTL prclSource,
351 PRECTL prclTarget,
352 BOOL fProportional);
353 typedef LONG XWPENTRY GPIHSTRETCHBITMAP(HPS hpsTarget,
354 HBITMAP hbmSource,
355 PRECTL prclSource,
356 PRECTL prclTarget,
357 BOOL fProportional);
358 typedef GPIHSTRETCHBITMAP *PGPIHSTRETCHBITMAP;
359
360 /* BOOL XWPENTRY gpihIcon2Bitmap(HPS hpsMem,
361 HPOINTER hptr,
362 LONG lBkgndColor,
363 PPOINTL pptlLowerLeft,
364 ULONG ulIconSize); */
365
366 BOOL XWPENTRY gpihDrawPointer(HPS hps,
367 LONG x,
368 LONG y,
369 HPOINTER hptr,
370 PSIZEL pszlIcon,
371 PRECTL prclClip,
372 ULONG fl);
373 typedef BOOL XWPENTRY GPIHDRAWPOINTER(HPS hps,
374 LONG x,
375 LONG y,
376 HPOINTER hptr,
377 PSIZEL pszlIcon,
378 PRECTL prclClip,
379 ULONG fl);
380 typedef GPIHDRAWPOINTER *PGPIHDRAWPOINTER;
381
382 /* ******************************************************************
383 *
384 * XBitmap functions
385 *
386 ********************************************************************/
387
388 /*
389 *@@ XBITMAP:
390 * representation of an XBitmap, which is created
391 * with gpihCreateXBitmap and destroyed with
392 * gpihDestroyXBitmap.
393 *
394 * An XBitmap is essentially a set of a memory
395 * device context, a memory presentation space,
396 * and a bitmap which is selected into that
397 * HPS.
398 *
399 *@@added V0.9.12 (2001-05-20) [umoeller]
400 */
401
402 typedef struct _XBITMAP
403 {
404 HDC hdcMem; // memory DC
405 HPS hpsMem; // memory PS
406 HBITMAP hbm; // bitmap handle
407 SIZEL szl; // size of bitmap
408 } XBITMAP, *PXBITMAP;
409
410 PXBITMAP XWPENTRY gpihCreateXBitmap(HAB hab, LONG cx, LONG cy);
411 typedef PXBITMAP XWPENTRY GPIHCREATEXBITMAP(HAB hab, LONG cx, LONG cy);
412 typedef GPIHCREATEXBITMAP *PGPIHCREATEXBITMAP;
413
414 PXBITMAP gpihCreateXBitmap2(HAB hab,
415 LONG cx,
416 LONG cy,
417 ULONG cPlanes,
418 ULONG cBitCount);
419
420 HBITMAP XWPENTRY gpihDetachBitmap(PXBITMAP pbmp);
421
422 VOID XWPENTRY gpihDestroyXBitmap(PXBITMAP *ppbmp);
423 typedef VOID XWPENTRY GPIHDESTROYXBITMAP(PXBITMAP *ppbmp);
424 typedef GPIHDESTROYXBITMAP *PGPIHDESTROYXBITMAP;
425
426 PXBITMAP gpihCreateBmpFromPS(HAB hab,
427 HPS hpsScreen,
428 PRECTL prcl);
429
430#endif
431
432#if __cplusplus
433}
434#endif
435
Note: See TracBrowser for help on using the repository browser.