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

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

Misc changes.

  • Property svn:eol-style set to CRLF
  • Property svn:keywords set to Author Date Id Revision
File size: 13.6 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 /* ******************************************************************
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 BOOL XWPENTRY gpihSwitchToRGB(HPS hps);
127 typedef BOOL XWPENTRY GPIHSWITCHTORGB(HPS hps);
128 typedef GPIHSWITCHTORGB *PGPIHSWITCHTORGB;
129
130 /* ******************************************************************
131 *
132 * Drawing primitives helpers
133 *
134 ********************************************************************/
135
136 VOID XWPENTRY gpihDrawRect(HPS hps, PRECTL prcl);
137 typedef VOID XWPENTRY GPIHDRAWRECT(HPS hps, PRECTL prcl);
138 typedef GPIHDRAWRECT *PGPIHDRAWRECT;
139
140 VOID XWPENTRY gpihBox(HPS hps, LONG lControl, PRECTL prcl);
141 typedef VOID XWPENTRY GPIHBOX(HPS hps, LONG lControl, PRECTL prcl);
142 typedef GPIHBOX *PGPIHBOX;
143
144 VOID XWPENTRY gpihMarker(HPS hps, LONG x, LONG y, ULONG ulWidth);
145 typedef VOID XWPENTRY GPIHMARKER(HPS hps, LONG x, LONG y, ULONG ulWidth);
146 typedef GPIHMARKER *PGPIHMARKER;
147
148 VOID XWPENTRY gpihDrawThickFrame(HPS hps, PRECTL prcl, ULONG ulWidth);
149 typedef VOID XWPENTRY GPIHDRAWTHICKFRAME(HPS hps, PRECTL prcl, ULONG ulWidth);
150 typedef GPIHDRAWTHICKFRAME *PGPIHDRAWTHICKFRAME;
151
152 VOID XWPENTRY gpihDraw3DFrame(HPS hps,
153 PRECTL prcl,
154 USHORT usWidth,
155 LONG lColorLeft,
156 LONG lColorRight);
157 typedef VOID XWPENTRY GPIHDRAW3DFRAME(HPS hps,
158 PRECTL prcl,
159 USHORT usWidth,
160 LONG lColorLeft,
161 LONG lColorRight);
162 typedef GPIHDRAW3DFRAME *PGPIHDRAW3DFRAME;
163
164 LONG XWPENTRY gpihCharStringPosAt(HPS hps,
165 PPOINTL pptlStart,
166 PRECTL prclRect,
167 ULONG flOptions,
168 LONG lCount,
169 PCH pchString);
170 typedef LONG XWPENTRY GPIHCHARSTRINGPOSAT(HPS hps,
171 PPOINTL pptlStart,
172 PRECTL prclRect,
173 ULONG flOptions,
174 LONG lCount,
175 PCH pchString);
176 typedef GPIHCHARSTRINGPOSAT *PGPIHCHARSTRINGPOSAT;
177
178 /* ******************************************************************
179 *
180 * Font helpers
181 *
182 ********************************************************************/
183
184 BOOL XWPENTRY gpihMatchFont(HPS hps,
185 LONG lSize,
186 BOOL fFamily,
187 const char *pcszName,
188 USHORT usFormat,
189 FATTRS *pfa,
190 PFONTMETRICS pFontMetrics);
191 typedef BOOL XWPENTRY GPIHMATCHFONT(HPS hps,
192 LONG lSize,
193 BOOL fFamily,
194 const char *pcszName,
195 USHORT usFormat,
196 FATTRS *pfa,
197 PFONTMETRICS pFontMetrics);
198 typedef GPIHMATCHFONT *PGPIHMATCHFONT;
199
200 BOOL XWPENTRY gpihSplitPresFont(PSZ pszFontNameSize,
201 PULONG pulSize,
202 PSZ *ppszFaceName);
203 typedef BOOL XWPENTRY GPIHSPLITPRESFONT(PSZ pszFontNameSize,
204 PULONG pulSize,
205 PSZ *ppszFaceName);
206 typedef GPIHSPLITPRESFONT *PGPIHSPLITPRESFONT;
207
208 BOOL XWPENTRY gpihLockLCIDs(VOID);
209 typedef BOOL XWPENTRY GPIHLOCKLCIDS(VOID);
210 typedef GPIHLOCKLCIDS *PGPIHLOCKLCIDS;
211
212 VOID XWPENTRY gpihUnlockLCIDs(VOID);
213 typedef VOID XWPENTRY GPIHUNLOCKLCIDS(VOID);
214 typedef GPIHUNLOCKLCIDS *PGPIHUNLOCKLCIDS;
215
216 LONG XWPENTRY gpihCreateFont(HPS hps, FATTRS *pfa);
217 typedef LONG XWPENTRY GPIHCREATEFONT(HPS hps, FATTRS *pfa);
218 typedef GPIHCREATEFONT *PGPIHCREATEFONT;
219
220 LONG XWPENTRY gpihFindFont(HPS hps,
221 LONG lSize,
222 BOOL fFamily,
223 const char *pcszName,
224 USHORT usFormat,
225 PFONTMETRICS pFontMetrics);
226 typedef LONG XWPENTRY GPIHFINDFONT(HPS hps,
227 LONG lSize,
228 BOOL fFamily,
229 const char *pcszName,
230 USHORT usFormat,
231 PFONTMETRICS pFontMetrics);
232 typedef GPIHFINDFONT *PGPIHFINDFONT;
233
234 LONG XWPENTRY gpihFindPresFont(HWND hwnd,
235 BOOL fInherit,
236 HPS hps,
237 const char *pcszDefaultFont,
238 PFONTMETRICS pFontMetrics,
239 PLONG plSize);
240 typedef LONG XWPENTRY GPIHFINDPRESFONT(HWND hwnd,
241 BOOL fInherit,
242 HPS hps,
243 const char *pcszDefaultFont,
244 PFONTMETRICS pFontMetrics,
245 PLONG plSize);
246 typedef GPIHFINDPRESFONT *PGPIHFINDPRESFONT;
247
248 BOOL XWPENTRY gpihSetPointSize(HPS hps, LONG lPointSize);
249 typedef BOOL XWPENTRY GPIHSETPOINTSIZE(HPS hps, LONG lPointSize);
250 typedef GPIHSETPOINTSIZE *PGPIHSETPOINTSIZE;
251
252 LONG XWPENTRY gpihQueryLineSpacing(HPS hps);
253 typedef LONG XWPENTRY GPIHQUERYLINESPACING(HPS hps);
254 typedef GPIHQUERYLINESPACING *PGPIHQUERYLINESPACING;
255
256 /* ******************************************************************
257 *
258 * Bitmap helpers
259 *
260 ********************************************************************/
261
262 BOOL XWPENTRY gpihCreateMemPS(HAB hab, PSIZEL psizlPage, HDC *hdcMem, HPS *hpsMem);
263 typedef BOOL XWPENTRY GPIHCREATEMEMPS(HAB hab, PSIZEL psizlPage, HDC *hdcMem, HPS *hpsMem);
264 typedef GPIHCREATEMEMPS *PGPIHCREATEMEMPS;
265
266 HBITMAP XWPENTRY gpihCreateBitmap(HPS hpsMem, ULONG cx, ULONG cy);
267 typedef HBITMAP XWPENTRY GPIHCREATEBITMAP(HPS hpsMem, ULONG cx, ULONG cy);
268 typedef GPIHCREATEBITMAP *PGPIHCREATEBITMAP;
269
270 HBITMAP XWPENTRY gpihCreateBitmap2(HPS hpsMem, ULONG cx, ULONG cy, ULONG cPlanes, ULONG cBitCount);
271
272 HBITMAP XWPENTRY gpihCreateHalftonedBitmap(HAB hab, HBITMAP hbmSource, LONG lColorGray);
273 typedef HBITMAP XWPENTRY GPIHCREATEHALFTONEDBITMAP(HAB hab, HBITMAP hbmSource, LONG lColorGray);
274 typedef GPIHCREATEHALFTONEDBITMAP *PGPIHCREATEHALFTONEDBITMAP;
275
276 APIRET XWPENTRY gpihLoadBitmapFile(HBITMAP *phbm, HPS hps, PCSZ pcszBmpFile);
277 typedef APIRET XWPENTRY GPIHLOADBITMAPFILE(HBITMAP *phbm, HPS hps, PCSZ pcszBmpFile);
278 typedef GPIHLOADBITMAPFILE *PGPIHLOADBITMAPFILE;
279
280 LONG XWPENTRY gpihStretchBitmap(HPS hpsTarget,
281 HBITMAP hbmSource,
282 PRECTL prclSource,
283 PRECTL prclTarget,
284 BOOL fProportional);
285 typedef LONG XWPENTRY GPIHSTRETCHBITMAP(HPS hpsTarget,
286 HBITMAP hbmSource,
287 PRECTL prclSource,
288 PRECTL prclTarget,
289 BOOL fProportional);
290 typedef GPIHSTRETCHBITMAP *PGPIHSTRETCHBITMAP;
291
292 BOOL XWPENTRY gpihIcon2Bitmap(HPS hpsMem,
293 HPOINTER hptr,
294 LONG lBkgndColor,
295 PPOINTL pptlLowerLeft,
296 ULONG ulIconSize);
297
298 /* ******************************************************************
299 *
300 * XBitmap functions
301 *
302 ********************************************************************/
303
304 /*
305 *@@ XBITMAP:
306 * representation of an XBitmap, which is created
307 * with gpihCreateXBitmap and destroyed with
308 * gpihDestroyXBitmap.
309 *
310 * An XBitmap is essentially a set of a memory
311 * device context, a memory presentation space,
312 * and a bitmap which is selected into that
313 * HPS.
314 *
315 *@@added V0.9.12 (2001-05-20) [umoeller]
316 */
317
318 typedef struct _XBITMAP
319 {
320 HDC hdcMem; // memory DC
321 HPS hpsMem; // memory PS
322 HBITMAP hbm; // bitmap handle
323 SIZEL szl; // size of bitmap
324 } XBITMAP, *PXBITMAP;
325
326 PXBITMAP XWPENTRY gpihCreateXBitmap(HAB hab, LONG cx, LONG cy);
327 typedef PXBITMAP XWPENTRY GPIHCREATEXBITMAP(HAB hab, LONG cx, LONG cy);
328 typedef GPIHCREATEXBITMAP *PGPIHCREATEXBITMAP;
329
330 PXBITMAP gpihCreateXBitmap2(HAB hab,
331 LONG cx,
332 LONG cy,
333 ULONG cPlanes,
334 ULONG cBitCount);
335
336 HBITMAP XWPENTRY gpihDetachBitmap(PXBITMAP pbmp);
337
338 VOID XWPENTRY gpihDestroyXBitmap(PXBITMAP *ppbmp);
339 typedef VOID XWPENTRY GPIHDESTROYXBITMAP(PXBITMAP *ppbmp);
340 typedef GPIHDESTROYXBITMAP *PGPIHDESTROYXBITMAP;
341
342 PXBITMAP gpihCreateBmpFromPS(HAB hab,
343 HPS hpsScreen,
344 PRECTL prcl);
345
346#endif
347
348#if __cplusplus
349}
350#endif
351
Note: See TracBrowser for help on using the repository browser.