source: trunk/src/gdi32/oslibgpi.h@ 4598

Last change on this file since 4598 was 4596, checked in by sandervl, 25 years ago

(Ext)SelectClipRgn fixes

File size: 9.5 KB
Line 
1/* $Id: oslibgpi.h,v 1.8 2000-11-15 13:56:45 sandervl Exp $ */
2
3/*
4 * GPI interface code
5 *
6 * Copyright 1999 Christoph Bratschi (cbratschi@datacomm.ch)
7 *
8 * Project Odin Software License can be found in LICENSE.TXT
9 *
10 */
11#ifndef __OSLIBGPI_H__
12#define __OSLIBGPI_H__
13
14
15#ifdef DEBUG
16void dprintfOrigin(HDC hdc);
17#else
18#define dprintfOrigin(a)
19#endif
20
21#define APIENTRYOS2 _System
22
23PVOID APIENTRYOS2 _GpiQueryDCData(ULONG hps);
24
25inline PVOID OSLibGpiQueryDCData(ULONG hps)
26{
27 PVOID yyrc;
28 USHORT sel = RestoreOS2FS();
29
30 yyrc = _GpiQueryDCData(hps);
31 SetFS(sel);
32
33 return yyrc;
34}
35
36BOOL APIENTRYOS2 _GpiEnableYInversion(ULONG hps, LONG lHeight);
37
38inline BOOL GpiEnableYInversion(ULONG hps, LONG lHeight)
39{
40 BOOL yyrc;
41 USHORT sel = RestoreOS2FS();
42
43 yyrc = _GpiEnableYInversion(hps, lHeight);
44 SetFS(sel);
45
46 return yyrc;
47}
48
49BOOL APIENTRYOS2 _GpiQueryYInversion(ULONG hps);
50
51inline BOOL GpiQueryYInversion(ULONG hps)
52{
53 BOOL yyrc;
54 USHORT sel = RestoreOS2FS();
55
56 yyrc = _GpiQueryYInversion(hps);
57 SetFS(sel);
58
59 return yyrc;
60}
61
62typedef struct
63{
64 LONG xLeft;
65 LONG yBottom;
66 LONG xRight;
67 LONG yTop;
68} RECTLOS2, *PRECTLOS2;
69
70typedef struct //same as Win32 POINT
71{
72 LONG x;
73 LONG y;
74} POINTLOS2, *PPOINTLOS2;
75
76#define MapWin32ToOS2Rect(rectWin32,rectOS2) \
77{ \
78 (rectOS2).xLeft = (rectWin32).left; \
79 (rectOS2).yBottom = (rectWin32).bottom; \
80 (rectOS2).xRight = (rectWin32).right; \
81 (rectOS2).yTop = (rectWin32).top; \
82}
83
84#define MapOS2ToWin32Rect(rectOS2,rectWin32) \
85{ \
86 (rectWin32).left = (rectOS2).xLeft; \
87 (rectWin32).bottom = (rectOS2).yBottom; \
88 (rectWin32).right = (rectOS2).xRight; \
89 (rectWin32).top = (rectOS2).yTop; \
90}
91
92BOOL excludeBottomRightPoint(PVOID pHps,PPOINTLOS2 pptl);
93BOOL includeBottomRightPoint(PVOID pHps,PPOINTLOS2 pptl);
94BOOL getAlignUpdateCP(PVOID pHps);
95INT getWorldYDeltaFor1Pixel(PVOID pHps);
96INT getWorldXDeltaFor1Pixel(PVOID pHps);
97BOOL getInPath(PVOID pHps);
98VOID setInPath(PVOID pHps,BOOL inPath);
99BOOL getIsWideLine(PVOID pHps);
100BOOL getIsTopTop(PVOID pHps);
101ULONG getMapMode(PVOID pHps);
102
103BOOL OSLibGpiQueryCurrentPosition(PVOID pHps,PPOINTLOS2 ptl);
104BOOL OSLibGpiSetCurrentPosition(PVOID pHps,PPOINTLOS2 ptl);
105
106#define CHSOS_OPAQUE 0x0001L
107#define CHSOS_VECTOR 0x0002L
108#define CHSOS_LEAVEPOS 0x0008L
109#define CHSOS_CLIP 0x0010L
110#define CHSOS_UNDERSCORE 0x0200L
111#define CHSOS_STRIKEOUT 0x0400L
112
113#define GPIOS_ERROR 0L
114#define GPIOS_OK 1L
115#define GPIOS_ALTERROR (-1L)
116
117BOOL OSLibGpiCharStringPosAt(PVOID pHps,PPOINTLOS2 ptl,PRECTLOS2 rct,ULONG flOptions,LONG lCount,LPCSTR pchString,CONST INT *alAdx);
118BOOL OSLibGpiQueryCharStringPosAt(PVOID pHps,PPOINTLOS2 ptl,ULONG flOptions,LONG lCount,LPCSTR pchString,CONST INT *alAdx,PPOINTLOS2 aptlPos);
119
120#define TAOS_NORMAL_HORIZ 0x0001
121#define TAOS_LEFT 0x0002
122#define TAOS_CENTER 0x0003
123#define TAOS_RIGHT 0x0004
124#define TAOS_STANDARD_HORIZ 0x0005
125#define TAOS_NORMAL_VERT 0x0100
126#define TAOS_TOP 0x0200
127#define TAOS_HALF 0x0300
128#define TAOS_BASE 0x0400
129#define TAOS_BOTTOM 0x0500
130#define TAOS_STANDARD_VERT 0x0600
131
132BOOL OSLibGpiSetTextAlignment(PVOID pHps,LONG lHoriz,LONG lVert);
133BOOL OSLibGpiQueryTextAlignment(PVOID pHps,PLONG plHoriz,PLONG plVert);
134
135LONG OSLibGpiQueryTabbedTextExtent(PVOID pHps,INT lCount,LPCSTR pchString,INT lTabCount,PINT puTabStops);
136LONG OSLibGpiTabbedCharStringAt(PVOID pHps,PPOINTLOS2 pPtStart,PRECTLOS2 prclRect,ULONG flOptions,INT lCount,LPCSTR pchString,INT lTabCount,PINT puTabStops,INT lTabOrigin);
137
138#define TXTBOXOS_TOPLEFT 0L
139#define TXTBOXOS_BOTTOMLEFT 1L
140#define TXTBOXOS_TOPRIGHT 2L
141#define TXTBOXOS_BOTTOMRIGHT 3L
142#define TXTBOXOS_CONCAT 4L
143#define TXTBOXOS_COUNT 5L
144
145BOOL OSLibGpiQueryTextBox(PVOID pHps,LONG lCount1,LPCSTR pchString,LONG lCount2,PPOINTLOS2 aptlPoints);
146
147VOID calcDimensions(POINTLOS2 box[],PPOINTLOS2 point);
148
149#define BMOS_ERROR (-1L)
150#define BMOS_DEFAULT 0L
151#define BMOS_OR 1L
152#define BMOS_OVERPAINT 2L
153#define BMOS_LEAVEALONE 5L
154
155LONG OSLibGpiQueryBackMix(PVOID pHps);
156
157#define MMOS_TEXT 1
158#define MMOS_LOMETRIC 2
159#define MMOS_HIMETRIC 3
160#define MMOS_LOENGLISH 4
161#define MMOS_HIENGLISH 5
162#define MMOS_TWIPS 6
163#define MMOS_ISOTROPIC 7
164#define MMOS_ANISOTROPIC 8
165
166BOOL doesYAxisGrowNorth(PVOID pHps);
167
168#define DTOS_LEFT 0x00000000
169#define DTOS_QUERYEXTENT 0x00000002
170#define DTOS_UNDERSCORE 0x00000010
171#define DTOS_STRIKEOUT 0x00000020
172#define DTOS_TEXTATTRS 0x00000040
173#define DTOS_EXTERNALLEADING 0x00000080
174#define DTOS_CENTER 0x00000100
175#define DTOS_RIGHT 0x00000200
176#define DTOS_TOP 0x00000000
177#define DTOS_VCENTER 0x00000400
178#define DTOS_BOTTOM 0x00000800
179#define DTOS_HALFTONE 0x00001000
180#define DTOS_MNEMONIC 0x00002000
181#define DTOS_WORDBREAK 0x00004000
182#define DTOS_ERASERECT 0x00008000
183
184#define DTOS_SYSTEMFONT 0x00000001
185#define DTOS_SINGLELINE 0x00010000
186#define DTOS_MULTILINE 0x00020000
187#define DTOS_NOCLIP 0x00040000
188#define DTOS_OPAQUE 0x00080000
189#define DTOS_AMPERSAND 0x00100000
190#define DTOS_VERTICALEXTENT 0x00200000
191#define DTOS_INVERTCHAR 0x20000000
192#define DTOS_WORLDRECT 0x40000000
193#define DTOS_INVERT 0x80000000
194
195LONG OSLibWinDrawTabbedText(PVOID pHps,LONG cchText,LONG lTabs,LPCSTR lpchText,PVOID prcl,LONG clrFore,LONG clrBack,ULONG flCmd);
196
197int OSLibGpiQueryFontMaxHeight(HDC hdc);
198
199BOOL OSLibGpiMove(PVOID pHps,PPOINTLOS2 pptlPoint);
200LONG OSLibGpiLine(PVOID pHps,PPOINTLOS2 pptlEndPoint);
201
202BOOL OSLibGpiEndPath(PVOID pHps);
203
204BOOL drawLinePointCircle(PVOID pHps,INT width,INT height,LONG color);
205BOOL drawLinePoint(PVOID pHps,PPOINTLOS2 pt,LONG color);
206
207ULONG OSLibGpiQueryCp(HDC hdc);
208BOOL OSLibGpiSetCp(HDC hdc, ULONG codepage);
209
210
211 // from pmddi.h:
212 /* CopyClipRegion */
213
214 #define COPYCRGN_ALLINTERSECT 0L
215 #define COPYCRGN_VISRGN 1L
216 #define COPYCRGN_CLIPRGN 2L
217
218 /* SetupDC */
219
220 #define SETUPDC_VISRGN 0x00000001L
221 #define SETUPDC_ORIGIN 0x00000002L
222 #define SETUPDC_ACCUMBOUNDSON 0x00000004L
223 #define SETUPDC_ACCUMBOUNDSOFF 0x00000008L
224 #define SETUPDC_RECALCCLIP 0x00000010L
225 #define SETUPDC_SETOWNER 0x00000020L
226 #define SETUPDC_CLEANDC 0x00000040L
227
228ULONG APIENTRY Gre32Entry4(ULONG,ULONG,ULONG,ULONG);
229
230inline ULONG APIENTRY _Gre32Entry4 (ULONG a, ULONG b, ULONG c, ULONG d)
231{
232 ULONG yyrc;
233 USHORT sel = RestoreOS2FS();
234
235 yyrc = Gre32Entry4(a,b,c,d);
236 SetFS(sel);
237
238 return yyrc;
239}
240
241ULONG APIENTRY Gre32Entry5(ULONG,ULONG,ULONG,ULONG,ULONG);
242
243inline ULONG APIENTRY _Gre32Entry5 (ULONG a, ULONG b, ULONG c, ULONG d, ULONG e)
244{
245 ULONG yyrc;
246 USHORT sel = RestoreOS2FS();
247
248 yyrc = Gre32Entry5(a,b,c,d,e);
249 SetFS(sel);
250
251 return yyrc;
252}
253
254
255ULONG APIENTRY Gre32Entry6(ULONG,ULONG,ULONG,ULONG,ULONG,ULONG);
256
257inline ULONG APIENTRY _Gre32Entry6 (ULONG a, ULONG b, ULONG c, ULONG d, ULONG e, ULONG f)
258{
259 ULONG yyrc;
260 USHORT sel = RestoreOS2FS();
261
262 yyrc = Gre32Entry6(a,b,c,d,e,f);
263 SetFS(sel);
264
265 return yyrc;
266}
267
268ULONG APIENTRY Gre32Entry7(ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG);
269
270inline ULONG APIENTRY _Gre32Entry7 (ULONG a, ULONG b, ULONG c, ULONG d, ULONG e, ULONG f, ULONG g)
271{
272 ULONG yyrc;
273 USHORT sel = RestoreOS2FS();
274
275 yyrc = Gre32Entry7(a,b,c,d,e,f,g);
276 SetFS(sel);
277
278 return yyrc;
279}
280
281ULONG APIENTRY Gre32Entry8(ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG);
282
283inline ULONG APIENTRY _Gre32Entry8 (ULONG a, ULONG b, ULONG c, ULONG d, ULONG e, ULONG f, ULONG g, ULONG h)
284{
285 ULONG yyrc;
286 USHORT sel = RestoreOS2FS();
287
288 yyrc = Gre32Entry8(a,b,c,d,e,f,g,h);
289 SetFS(sel);
290
291 return yyrc;
292}
293
294
295 #define GreSetupDC(a,b,c,d,e,f) (BOOL) _Gre32Entry8((ULONG)(HDC)(a),(ULONG)(HRGN)(b),(ULONG)(LONG)(c),(ULONG)(LONG)(d),(ULONG)(PRECTL)(e),(ULONG)(ULONG)(f),0L,0x00004081L)
296 #define GreCreateRectRegion(a,b,c) (HRGN) _Gre32Entry5((ULONG)(HDC)(a),(ULONG)(PRECTL)(b),(ULONG)(LONG)(c),0L,0x00004062L)
297 #define GreGetPageUnits(a,b) (LONG) _Gre32Entry4((ULONG)(HDC)(a),(ULONG)(PULONG)(b),0L,0x00004083L)
298 #define GreCopyClipRegion(a,b,c,d) (INT) _Gre32Entry6((ULONG)(HDC)(a),(ULONG)(HRGN)(b),(ULONG)(PRECTL)(c),(ULONG)(ULONG)(d),0L,0x00004080L)
299 #define GreCombineRegion(a,b,c,d,e) (INT) _Gre32Entry7((ULONG)(HDC)(a),(ULONG)(HRGN)(b),(ULONG)(HRGN)(c),(ULONG)(HRGN)(d),(ULONG)(ULONG)(e),0L,0x00004065L)
300 #define GreDestroyRegion(a,b) (BOOL) _Gre32Entry4((ULONG)(HDC)(a),(ULONG)(HRGN)(b),0L,0x00004063L)
301 #define GreGetDCOrigin(a,b) (BOOL) _Gre32Entry4((ULONG)(HDC)(a),(ULONG)(PPOINTL)(b),0L,0x000040BAL)
302 #define GreDeviceSetDCOrigin(a,b) (BOOL) _Gre32Entry4((ULONG)(HDC)(a),(ULONG)(PPOINTL)(b),0L,0x000040BBL)
303 #define GreSelectClipRegion(a,b,c) (INT) _Gre32Entry5((ULONG)(HDC)(a),(ULONG)(HRGN)(b),(ULONG)(PHRGN)(c),0L,0x00004074L)
304 #define GreIntersectClipRectangle(a,b) (INT) _Gre32Entry4((ULONG)(HDC)(a),(ULONG)(PRECTL)(b),0L,0x00004075L)
305
306#endif
Note: See TracBrowser for help on using the repository browser.