|
|
1.1 root 1: /****************************** Module Header ******************************\
2: *
3: * IBM/MicroSoft Confidential
4: *
5: * Copyright (c) IBM Corporation 1987, 1989
6: * Copyright (c) MicroSoft Corporation 1987,1989
7: *
8: * Module Name: PMORD.H
9: *
10: * This is the include file which defines all the structures and constants
11: * that can be used to build or intepret GOCA orders for the GPI
12: *
13: *
14: * ==========================================================================
15: *
16: * The orders fall into 4 categories :-
17: *
18: * 1) 1-byte orders
19: *
20: * 2) 2-byte orders - second byte contains the value
21: *
22: * 3) Long orders - second byte gives the order length, subsequent bytes
23: * contain the values (up to 256 bytes long)
24: *
25: * 4) Very long orders - third and fourth bytes gives the order length,
26: * subsequent bytes contain the values (up to 64K long)
27: *
28: \***************************************************************************/
29:
30: #if !(defined(INCL_32) || defined(INCL_16))
31: #ifdef M_I386
32: #define INCL_32
33: #else /* not M_I386 */
34: #define INCL_16
35: #endif /* M_I386 */
36: #endif /* INCL_32 || INCL_16 */
37:
38: /* XLATOFF */
39: #pragma pack(1) /* pack on byte boundary @P3A*/
40: /* XLATON */
41:
42: /***************************************************************************\
43: *
44: * Miscellaneous structures used in this file
45: *
46: \***************************************************************************/
47:
48: /* form of RECTL with shorts instead of longs */
49: typedef struct _RECT1S { /* rcs */
50: SHORT xLeft;
51: SHORT yBottom;
52: SHORT xRight;
53: SHORT yTop;
54: } RECT1S;
55:
56: /* form of POINTL with 1 byte offsets instead of longs */
57: typedef struct _ODPOINT { /* odpt */
58: CHAR dx;
59: CHAR dy;
60: } ODPOINT;
61:
62: /* form of SIZEL with shorts instead of longs */
63: typedef struct _SIZES { /* sizs */
64: SHORT cx;
65: SHORT cy;
66: } SIZES;
67:
68:
69: /* unsigned two-byte swapped integer */
70: typedef struct _SWPUSHORT { /* swpus */
71: UCHAR HiByte;
72: UCHAR LoByte;
73: } SWPUSHORT;
74:
75: /***************************************************************************\
76: *
77: * 1-byte orders
78: *
79: \***************************************************************************/
80:
81: /* macro to tell whether this is a 1-byte order */
82: #define BYTE_ORDER(oc) ((oc)==OCODE_GNOP1 || (oc)==OCODE_GESD)
83:
84: /* 1-byte order codes */
85: #define OCODE_GNOP1 0x00 /* No-operation */
86: #define OCODE_GESD 0xFF /* End symbol definition */
87:
88: /***************************************************************************\
89: *
90: * 2-byte orders
91: *
92: \***************************************************************************/
93:
94: /* definitions to help determine whether an order code is a 2-byte order */
95: #define OCODE2_1 0x80
96: #define OCODE2_2 0x88
97:
98: #define SHORT_ORDER(oc) ((((oc)^OCODE2_1)&OCODE2_2)==OCODE2_2)
99:
100: /* General 2-byte order structure */
101: typedef struct _ORDER { /* ord */
102: UCHAR idCode;
103: UCHAR uchData;
104: } ORDER;
105:
106: /* 2-byte order codes */
107: #define OCODE_GBAR 0x68 /* Begin area */
108: #define OCODE_GCFIG 0x7D /* Close figure */
109: #define OCODE_GEEL 0x49 /* End element */
110: #define OCODE_GEPTH 0x7F /* End path */
111: #define OCODE_GEPROL 0x3E /* End prologue */
112: #define OCODE_GPOP 0x3F /* Pop */
113: #define OCODE_GSBMX 0x0D /* Set background mix */
114: #define OCODE_GPSBMX 0x4D /* Push & set b/g mix */
115: #define OCODE_GSCD 0x3A /* Set char direction */
116: #define OCODE_GPSCD 0x7A /* Push & set char direction */
117: #define OCODE_GSCR 0x39 /* Set char precision */
118: #define OCODE_GPSCR 0x79 /* Push & set char precision */
119: #define OCODE_GSCS 0x38 /* Set char set */
120: #define OCODE_GPSCS 0x78 /* Push & set char set */
121: #define OCODE_GSCOL 0x0A /* Set color */
122: #define OCODE_GPSCOL 0x4A /* Push & set color */
123: #define OCODE_GSLE 0x1A /* Set line end */
124: #define OCODE_GPSLE 0x5A /* Push & set line end */
125: #define OCODE_GSLJ 0x1B /* Set line join */
126: #define OCODE_GPSLJ 0x5B /* Push & set line join */
127: #define OCODE_GSLT 0x18 /* Set line type */
128: #define OCODE_GPSLT 0x58 /* Push & set line type */
129: #define OCODE_GSLW 0x19 /* Set line width */
130: #define OCODE_GPSLW 0x59 /* Push & set line width */
131: #define OCODE_GSMP 0x3B /* Set marker precision */
132: #define OCODE_GPSMP 0x7B /* Push & set marker precision */
133: #define OCODE_GSMS 0x3C /* Set marker set */
134: #define OCODE_GPSMS 0x7C /* Push & set marker set */
135: #define OCODE_GSMT 0x29 /* Set marker symbol */
136: #define OCODE_GPSMT 0x69 /* Push & set marker symbol */
137: #define OCODE_GSMX 0x0C /* Set mix */
138: #define OCODE_GPSMX 0x4C /* Push & set mix */
139: #define OCODE_GSPS 0x08 /* Set pattern set */
140: #define OCODE_GPSPS 0x48 /* Push & set pattern set */
141: #define OCODE_GSPT 0x28 /* Set pattern symbol */
142: #define OCODE_GPSPT 0x09 /* Push & set pattern symbol */
143:
144: /* constants for 2-byte orders */
145:
146: /* Begin area */
147: #define GBAR_RESERVED 0x80
148: #define GBAR_BOUNDARY 0xC0
149: #define GBAR_NOBOUNDARY 0x80
150: #define GBAR_WINDING 0xA0
151: #define GBAR_ALTERNATE 0x80
152:
153: /* Set Character Precision */
154: #define GSCR_PRECISION 0x0F
155:
156: /***************************************************************************\
157: *
158: * Long orders
159: *
160: \***************************************************************************/
161:
162: /* definitions to help determine whether an order code is a long order */
163:
164: #define OCODE_VLONG 0xFE
165:
166: #define LONG_ORDER(oc) (!((oc)==OCODE_VLONG||BYTE_ORDER(oc)||SHORT_ORDER(oc)))
167:
168: /* long order structure */
169: #define LORDER_ML 253
170: typedef struct _LORDER { /* lord */
171: UCHAR idCode;
172: UCHAR uchLength;
173: UCHAR uchData[LORDER_ML];
174: } LORDER;
175:
176: /* Long orders for which the length of data is normally zero */
177: #define OCODE_GEAR 0x60 /* End Area */
178: #define OCODE_GEIMG 0x93 /* End Image */
179:
180: /* Long orders for which the data is contained in a type already defined */
181:
182: /* Character String */
183: #define OCODE_GCCHST 0x83 /* char string at curr posn */
184: #define GCCHST_MC 255 /* Max len of string in bytes */
185:
186: #define OCODE_GCHST 0xC3 /* char string at given pos */
187: #define GCHST_SMC 251 /* Max len of string (S) */
188: #define GCHST_LMC 247 /* Max len of string (L) */
189:
190: /* Character String Move */
191: #define OCODE_GCCHSTM 0xB1 /* char string move at c.p. */
192: #define GCCHSTM_MC 255 /* Max len of string in byte */
193:
194: #define OCODE_GCHSTM 0xF1 /* char string move at g.p. */
195: #define GCHSTM_SMC 251 /* Max len of string (S) */
196: #define GCHSTM_LMC 247 /* Max len of string (L) */
197:
198: /* Comment */
199: #define OCODE_GCOMT 0x01 /* Comment */
200: #define GCOMT_ML 255 /* Maximum len of comment data */
201:
202: /* Image */
203: #define OCODE_GIMD 0x92 /* Image data */
204: #define GIMD_ML 255 /* Maximum len of image data */
205:
206: /* Full Arc */
207: #define OCODE_GCFARC 0x87 /* full arc at current posn */
208: #define OCODE_GFARC 0xC7 /* full arc at given posn */
209:
210: /* Label */
211: #define OCODE_GLABL 0xD3 /* Label */
212:
213: /* Set Current Position */
214: #define OCODE_GSCP 0x21 /* Set current position */
215: #define OCODE_GPSCP 0x61 /* Push and set curr posn */
216:
217: /* Bezier spline */
218: #define OCODE_GCBEZ 0xA5 /* Bezier spline at curr pos */
219: #define GCBEZ_SMB 21 /* Max number of splines (S) */
220: #define GCBEZ_LMB 10 /* Max number of splines (L) */
221:
222: #define OCODE_GBEZ 0xE5 /* Bezier spline at given pos */
223: #define GBEZ_SMB 20 /* Max number of splines (S) */
224: #define GBEZ_LMB 10 /* Max number of splines (L) */
225:
226: /* Fillet */
227: #define OCODE_GCFLT 0x85 /* fillet at current posn */
228: #define GCFLT_SMP 63 /* Max number of points (S) */
229: #define GCFLT_LMP 31 /* Max number of points (L) */
230:
231: #define OCODE_GFLT 0xC5 /* fillet at given position */
232: #define GFLT_SMP 62 /* Max number of points (S) */
233: #define GFLT_LMP 30 /* Max number of points (L) */
234:
235: /* Polyline */
236: #define OCODE_GCLINE 0x81 /* polyline at current posn */
237: #define GCLINE_SMP 63 /* Max number of points (S) */
238: #define GCLINE_LMP 31 /* Max number of points (L) */
239:
240: #define OCODE_GLINE 0xC1 /* polyline at given posn */
241: #define GLINE_SMP 62 /* Max number of points (S) */
242: #define GLINE_LMP 30 /* Max number of points (L) */
243:
244: /* Polymarker */
245: #define OCODE_GCMRK 0x82 /* marker at current posn */
246: #define GCMRK_SMP 63 /* Max number of points (S) */
247: #define GCMRK_LMP 31 /* Max number of points (L) */
248:
249: #define OCODE_GMRK 0xC2 /* marker at given posn */
250: #define GMRK_SMP 62 /* Max number of points (S) */
251: #define GMRK_LMP 30 /* Max number of points (L) */
252:
253: /* Relative Line */
254: #define OCODE_GCRLINE 0xA1 /* Relative line at curr pos */
255: #define GCRLINE_MP 127 /* Max number of points */
256:
257: #define OCODE_GRLINE 0xE1 /* Relative line at givn pos */
258: #define GRLINE_SMP 125 /* Max number of points (S) */
259: #define GRLINE_LMP 123 /* Max number of points (L) */
260:
261: /* Set Background Color */
262: #define OCODE_GSBCOL 0x25 /* Set background color */
263: #define OCODE_GPSBCOL 0x65 /* Push and set b/g color */
264:
265: /* Set Extended Color */
266: #define OCODE_GSECOL 0x26 /* Set extended color */
267: #define OCODE_GPSECOL 0x66 /* Push and set ext color */
268:
269: /* Extended Color values */
270: #define SECOL_DEFAULT0 0x0000
271: #define SECOL_DEFAULT1 0xFF00
272: #define SECOL_NEUTRAL 0xFF07
273: #define SECOL_RESET 0xFF08
274:
275: /* Set Character Angle */
276: #define OCODE_GSCA 0x34 /* Set character angle */
277: #define OCODE_GPSCA 0x74 /* Push and set char angle */
278:
279: /* Set Character Shear */
280: #define OCODE_GSCH 0x35 /* Set character shear */
281: #define OCODE_GPSCH 0x75 /* Push and set char shear */
282:
283: /* Set Fractional Line Width */
284: #define OCODE_GSFLW 0x11 /* Set fractional line width */
285: #define OCODE_GPSFLW 0x51 /* Push and set frac l width */
286:
287: /* Set Pick Identifier */
288: #define OCODE_GSPIK 0x43 /* Set pick identifier */
289: #define OCODE_GPSPIK 0x23 /* Push and set pick id */
290:
291:
292: /* Long Orders for which a structure can be defined for the data */
293:
294: /* Arc */
295: #define OCODE_GCARC 0x86 /* Arc at Current Position */
296: #define OCODE_GARC 0xC6 /* Arc at Given Position */
297:
298: typedef struct _ORDERS_GCARC { /* osgcarc */
299: POINTS ptInter;
300: POINTS ptEnd;
301: } ORDERS_GCARC;
302:
303: typedef struct _ORDERL_GCARC { /* olgcarc */
304: POINTL ptInter;
305: POINTL ptEnd;
306: } ORDERL_GCARC;
307:
308: /* Begin Element */
309: #define OCODE_GBEL 0xD2 /* Begin Element */
310:
311: #define GBEL_DL 251
312: typedef struct _ORDER_GBEL { /* ogbel */
313: LONG lElementType;
314: CHAR achDesc[GBEL_DL];
315: } ORDER_GBEL;
316:
317: /* Begin Image */
318: #define OCODE_GCBIMG 0x91 /* Begin Image at curr posn */
319: #define OCODE_GBIMG 0xD1 /* Begin Image at given posn */
320:
321: typedef struct _ORDER_GCBIMG { /* ogbimg */
322: UCHAR uchFormat;
323: UCHAR uchReserved;
324: SWPUSHORT cx;
325: SWPUSHORT cy;
326: } ORDER_GCBIMG;
327:
328: /* Begin Path */
329: #define OCODE_GBPTH 0xD0 /* Begin Path */
330:
331: typedef struct _ORDER_GBPTH { /* ogbpth */
332: USHORT usReserved;
333: LONG idPath;
334: } ORDER_GBPTH;
335:
336: /* Box */
337: #define OCODE_GCBOX 0x80 /* Box at current position */
338: #define OCODE_GBOX 0xC0 /* Box at given position */
339:
340: typedef struct _ORDERS_GCBOX { /* osgcbox */
341: UCHAR fbFlags;
342: UCHAR uchReserved;
343: POINTS ptCorner;
344: SHORT hAxis;
345: SHORT vAxis;
346: } ORDERS_GCBOX;
347:
348: typedef struct _ORDERL_GCBOX { /* olgcbox */
349: UCHAR fbFlags;
350: UCHAR uchReserved;
351: POINTL ptCorner;
352: LONG hAxis;
353: LONG vAxis;
354: } ORDERL_GCBOX;
355:
356: #define GCBOX_FILL 0x40
357: #define GCBOX_BOUNDARY 0x20
358:
359: /* Call Segment */
360: #define OCODE_GCALLS 0x07 /* call segment */
361:
362: typedef struct _ORDER_GCALLS { /* ogcalls */
363: USHORT sReserved;
364: LONG idSegment;
365: } ORDER_GCALLS;
366:
367: /* Fill Path */
368: #define OCODE_GFPTH 0xD7 /* Fill path */
369: typedef struct _ORDER_GFPTH { /* ogfpth */
370: UCHAR fbFlags;
371: UCHAR uchReserved;
372: LONG idPath;
373: } ORDER_GFPTH;
374:
375: #define GFPTH_ALTERNATE 0x00
376: #define GFPTH_WINDING 0x40
377: #define GFPTH_MODIFY 0x20
378:
379: /* Outline Path */
380: #define OCODE_GOPTH 0xD4 /* Outline Path */
381: typedef struct _ORDER_GOPTH { /* ogopth */
382: UCHAR fbFlags;
383: UCHAR uchReserved;
384: LONG idPath;
385: } ORDER_GOPTH;
386:
387: /* Modify Path */
388: #define OCODE_GMPTH 0xD8 /* modify path */
389:
390: typedef struct _ORDER_GMPTH { /* ogmpth */
391: UCHAR uchMode;
392: UCHAR uchReserved;
393: LONG idPath;
394: } ORDER_GMPTH;
395:
396: #define GMPTH_STROKE 0x06
397:
398: /* Partial Arc */
399: #define OCODE_GCPARC 0xA3 /* Partial arc at curr posn */
400: #define OCODE_GPARC 0xE3 /* Partial arc at given posn */
401:
402: typedef struct _ORDERS_GCPARC { /* osgcparc */
403: POINTS ptCenter;
404: FIXED88 ufx88Multiplier;
405: LONG usStartAngle;
406: LONG usSweepAngle;
407: } ORDERS_GCPARC;
408:
409: typedef struct _ORDERL_GCPARC { /* olgcparc */
410: POINTL ptCenter;
411: FIXED ufxMultiplier;
412: LONG usStartAngle;
413: LONG usSweepAngle;
414: } ORDERL_GCPARC;
415:
416: /* Set Clip Path */
417: #define OCODE_GSCPTH 0xB4 /* Set clip path */
418:
419: typedef struct _ORDER_GSCPTH { /* ogscpth */
420: UCHAR fbFlags;
421: UCHAR uchReserved;
422: LONG idPath;
423: } ORDER_GSCPTH;
424:
425: #define GSCPTH_ALTERNATE 0x00
426: #define GSCPTH_WINDING 0x40
427: #define GSCPTH_RESET 0x00
428: #define GSCPTH_INTERSECT 0x20
429:
430: /* Set Arc Parameters */
431: #define OCODE_GSAP 0x22 /* Set arc parameters */
432: #define OCODE_GPSAP 0x62 /* Push and set arc params */
433:
434: typedef struct _ORDERS_GSAP { /* osgsap */
435: SHORT p;
436: SHORT q;
437: SHORT r;
438: SHORT s;
439: } ORDERS_GSAP;
440:
441: typedef struct _ORDERL_GSAP { /* olgsap */
442: LONG p;
443: LONG q;
444: LONG r;
445: LONG s;
446: } ORDERL_GSAP;
447:
448: /* Set Background Indexed Color */
449: #define OCODE_GSBICOL 0xA7 /* Set b/g indexed color */
450: #define OCODE_GPSBICOL 0xE7 /* Push and set b/g ind color */
451: #define OCODE_GSICOL 0xA6 /* Set indexed color */
452: #define OCODE_GPSICOL 0xE6 /* Push and set indexd color */
453:
454: typedef struct _ORDER_GSBICOL { /* ogbicol */
455: UCHAR fbFlags;
456: UCHAR auchColor[3];
457: } ORDER_GSBICOL;
458:
459: #define SICOL_SPECIFY 0x00
460: #define SICOL_SPECIAL 0x40
461: #define SICOL_DEFAULT 0x80
462: #define SICOL_BLACK 1
463: #define SICOL_WHITE 2
464: #define SICOL_ONES 4
465: #define SICOL_ZEROES 5
466:
467: /* Set Character Cell */
468: #define OCODE_GSCC 0x33 /* Set character cell */
469: #define OCODE_GPSCC 0x03 /* Push and set char cell */
470:
471: typedef struct _ORDERS_GSCC { /* osgscc */
472: SHORT cxInt;
473: SHORT cyInt;
474: USHORT cxFract;
475: USHORT cyFract;
476: UCHAR fbFlags;
477: UCHAR uchReserved;
478: } ORDERS_GSCC;
479:
480: typedef struct _ORDERL_GSCC { /* olgscc */
481: LONG cxInt;
482: LONG cyInt;
483: USHORT cxFract;
484: USHORT cyFract;
485: UCHAR fbFlags;
486: UCHAR uchReserved;
487: } ORDERL_GSCC;
488:
489: #define GSCC_ZERODEF 0x00
490: #define GSCC_ZEROZERO 0x80
491:
492: /* Set Marker Cell */
493: #define OCODE_GSMC 0x37 /* Set marker cell */
494: #define OCODE_GPSMC 0x77 /* Push and set marker cell */
495:
496: typedef struct _ORDERS_GSMC { /* osgsmc */
497: SHORT cx;
498: SHORT cy;
499: UCHAR fbFlags;
500: UCHAR uchReserved;
501: } ORDERS_GSMC;
502:
503: typedef struct _ORDERL_GSMC { /* olgsmc */
504: LONG cx;
505: LONG cy;
506: UCHAR fbFlags;
507: UCHAR uchReserved;
508: } ORDERL_GSMC;
509:
510: #define GSMC_ZERODEF 0x00
511: #define GSMC_ZEROZERO 0x80
512:
513: /* Set Pattern Reference Point */
514: #define OCODE_GSPRP 0xA0 /* Set pattern ref point */
515: #define OCODE_GPSPRP 0xE0 /* Push and set patt ref pt */
516:
517: typedef struct _ORDERS_GSPRP { /* osgsprp */
518: UCHAR fbFlags;
519: UCHAR uchReserved;
520: POINTS ptPos;
521: } ORDERS_GSPRP;
522:
523: typedef struct _ORDERL_GSPRP { /* olgsprp */
524: UCHAR fbFlags;
525: UCHAR uchReserved;
526: POINTL ptPos;
527: } ORDERL_GSPRP;
528:
529: #define GSPRP_DEFAULT 0x80
530: #define GSPRP_SPECIFY 0x00
531:
532:
533: /* Set Individual Attribute */
534: #define OCODE_GSIA 0x14 /* Set individual attribute */
535: #define OCODE_GPSIA 0x54 /* Push and set ind attr */
536:
537: #define GSIA_VL 3
538: typedef struct _ORDER_GSIA { /* ogsia */
539: UCHAR uchAttrType;
540: UCHAR uchPrimType;
541: UCHAR fbFlags;
542: UCHAR auchValue[GSIA_VL];
543: } ORDER_GSIA;
544:
545: #define GSIA_COLOR 0x01
546: #define GSIA_BCOLOR 0x02
547: #define GSIA_MIX 0x03
548: #define GSIA_BMIX 0x04
549: #define GSIA_LINE 0x01
550: #define GSIA_CHAR 0x02
551: #define GSIA_MARKER 0x03
552: #define GSIA_PATTERN 0x04
553: #define GSIA_IMAGE 0x05
554: #define GSIA_SPECIFY 0x00
555: #define GSIA_SPECIAL 0x40
556: #define GSIA_DEFAULT 0x80
557: #define GSIA_BLACK 1
558: #define GSIA_WHITE 2
559: #define GSIA_ONES 4
560: #define GSIA_ZEROES 5
561:
562:
563: /* Set Model /Viewing Transform */
564: #define OCODE_GSTM 0x24 /* Set model transform */
565: #define OCODE_GPSTM 0x64 /* Push and set model tfm */
566:
567: #define OCODE_GSTV 0x31 /* Set Viewing Transform */
568:
569: #define GSTM_ML 16
570: typedef struct _ORDERS_GSTM { /* osgstm */
571: UCHAR uchReserved;
572: UCHAR fbFlags;
573: USHORT fsMask;
574: SHORT asMatrix[GSTM_ML];
575: } ORDERS_GSTM;
576:
577: typedef struct _ORDERL_GSTM { /* olgstm */
578: UCHAR uchReserved;
579: UCHAR fbFlags;
580: USHORT fsMask;
581: LONG alMatrix[GSTM_ML];
582: } ORDERL_GSTM;
583:
584: #define GSTM_M11 0x8000
585: #define GSTM_M12 0x4000
586: #define GSTM_M13 0x2000
587: #define GSTM_M14 0x1000
588: #define GSTM_M21 0x0800
589: #define GSTM_M22 0x0400
590: #define GSTM_M23 0x0200
591: #define GSTM_M24 0x0100
592: #define GSTM_M31 0x0080
593: #define GSTM_M32 0x0040
594: #define GSTM_M33 0x0020
595: #define GSTM_M34 0x0010
596: #define GSTM_M41 0x0008
597: #define GSTM_M42 0x0004
598: #define GSTM_M43 0x0002
599: #define GSTM_M44 0x0001
600:
601: #define GSTM_UNITY 0x00
602: #define GSTM_AFTER 0x01
603: #define GSTM_BEFORE 0x02
604: #define GSTM_OVERWRITE 0x03
605:
606: #define GSTV_OVERWRITE 0x00
607: #define GSTV_AFTER 0x04
608:
609: /* Set Segment Boundary, Viewing Window */
610:
611: #define OCODE_GSSB 0x32 /* Set segment boundary */
612: #define OCODE_GSVW 0x27 /* Set viewing window */
613: #define OCODE_GPSVW 0x67 /* Push and set view window */
614:
615: #define GSSB_ML 4
616: typedef struct _ORDERS_GSSB { /* osgssb */
617: UCHAR fbFlags;
618: UCHAR fbMask;
619: SHORT alMatrix[GSSB_ML];
620: } ORDERS_GSSB;
621:
622: typedef struct _ORDERL_GSSB { /* olgssb */
623: UCHAR fbFLags;
624: UCHAR fbMask;
625: LONG alMatrix[GSSB_ML];
626: } ORDERL_GSSB;
627:
628: #define GSSB_XLEFT 0x20
629: #define GSSB_XRIGHT 0x10
630: #define GSSB_YBOTTOM 0x08
631: #define GSSB_YTOP 0x04
632:
633: #define GSVW_INTERSECT 0x00
634: #define GSVW_REPLACE 0x80
635:
636: /* Set Segment Characteristics */
637: #define OCODE_GSGCH 0x04 /* Set segment characteristics */
638:
639: #define GSGCH_ML 254
640: typedef struct _ORDER_GSGCH { /* ogsgch */
641: UCHAR uchIdent;
642: UCHAR auchData[GSGCH_ML];
643: } ORDER_GSGCH;
644:
645: /* Set Stroke Line Width */
646: #define OCODE_GSSLW 0x15 /* Set stroke line width */
647: #define OCODE_GPSSLW 0x55 /* Push and set strk l width */
648:
649: typedef struct _ORDERS_GSSLW { /* osgsslw */
650: UCHAR fbFlags;
651: UCHAR uchReserved;
652: SHORT LineWidth;
653: } ORDERS_GSSLW;
654:
655: typedef struct _ORDERL_GSSLW { /* olgsslw */
656: UCHAR fbFlags;
657: UCHAR uchReserved;
658: LONG LineWidth;
659: } ORDERL_GSSLW;
660:
661: #define GSSLW_DEFAULT 0x80
662: #define GSSLW_SPECIFY 0x00
663:
664: /* Sharp Fillet at Current Position */
665: #define OCODE_GCSFLT 0xA4 /* Sharp fillet at curr pos */
666: #define OCODE_GSFLT 0xE4 /* Sharp fillet at given pos */
667:
668: #define GCSFLT_SMF 21
669: #define GSFLT_SMF 20
670:
671: typedef struct _ORDERS_GCSFLT { /* osgcsflt */
672: POINTS apt[2*GCSFLT_SMF];
673: FIXED afxSharpness[GCSFLT_SMF];
674: } ORDERS_GCSFLT;
675:
676: #define GCSFLT_LMF 12
677: #define GSFLT_LMF 12
678:
679: typedef struct _ORDERL_GCSFLT { /* olgcsflt */
680: POINTL apt[2*GCSFLT_SMF];
681: FIXED afxSharpness[GCSFLT_SMF];
682: } ORDERL_GCSFLT;
683:
684: /* Bitblt */
685: #define OCODE_GBBLT 0xD6 /* Bitblt */
686:
687: typedef struct _ORDERS_GBBLT { /* osgbblt */
688: USHORT fsFlags;
689: USHORT usMix;
690: HBITMAP hbmSrc;
691: LONG lOptions;
692: RECT1S rcsTargetRect;
693: RECTL rclSourceRect;
694: } ORDERS_GBBLT;
695:
696: typedef struct _ORDERL_GBBLT { /* olgbblt */
697: USHORT fsFlags;
698: USHORT usMix;
699: HBITMAP hbmSrc;
700: LONG lOptions;
701: RECTL rclTargetRect;
702: RECTL rclSourceRect;
703: } ORDERL_GBBLT;
704:
705: /* Char & break extra */ /* @P4A*/
706: #define OCODE_GSCE 0x17 /* Set char extra */
707: #define OCODE_GPSCE 0x57 /* Push and set char extra */
708: #define OCODE_GSCBE 0x05 /* Set char break extra */
709: #define OCODE_GPSCBE 0x45 /* Push and set char break extra */
710:
711: typedef struct _ORDER_GSCBE { /* osgsce */
712: UCHAR fbFlags;
713: UCHAR uchReserved;
714: FIXED ufxextra;
715: } ORDER_GSCE, ORDER_GPSCE, ORDER_GSCBE, ORDER_GPSCBE;
716:
717: /* Escape */
718: #define OCODE_GESCP 0xD5 /* Escape */
719:
720: /*
721: * type describes type of escape order, identifier gives the escape
722: * order if the type is registered
723: */
724: #define GESCP_ML 253
725: typedef struct _ORDER_GESCP { /* ogescp */
726: UCHAR uchType;
727: UCHAR uchIdent;
728: UCHAR auchData[GESCP_ML]; /* Escape data */
729: } ORDER_GESCP;
730:
731: #define GESCP_REG 0x80 /* identifier is registered */
732:
733: /* Escape (Bitblt) */
734: #define GEBB_REGID 0x02 /* uchIdent - Bitblt */
735:
736: #define ETYPE_GEBB 0x800200D5L
737:
738: #define GEBB_LMP 29
739: typedef struct _ORDERL_GEBB { /* olgebb */
740: UCHAR fbFlags;
741: USHORT usMix;
742: UCHAR cPoints;
743: HBITMAP hbmSrc;
744: LONG lReserved;
745: LONG lOptions;
746: POINTL aptPoints[GEBB_LMP];
747: } ORDERL_GEBB;
748:
749: /* Escape (Set Pel) */
750: #define GEPEL_REGID 0x01 /* uchIdent - Set Pel */
751:
752: #define ETYPE_GEPEL 0x800100D5L
753:
754: /* Escape (DrawBits) */ /* @D1A*/
755: #define GEDB_REGID 0x04 /* uchIdent - DrawBits */ /* @D1A*/
756: /* @D1A*/
757: #define ETYPE_GEDB 0x800400D5L /* @D1A*/
758: /* @D1A*/
759: typedef struct _ORDERL_GEDB { /* olgedb */ /* @D1A*/
760: USHORT fsFlags; /* @D1A*/
761: USHORT usMix; /* @D1A*/
762: PVOID pBits; /* @D1A*/
763: PBITMAPINFO2 pbmi; /* @D3C*/
764: LONG lOptions; /* @D1A*/
765: RECTL rclTargetRect; /* @D1A*/
766: RECTL rclSourceRect; /* @D1A*/
767: } ORDERL_GEDB; /* @D1A*/
768:
769:
770: /* Escape (FloodFill) */ /* @D2A*/
771: #define GEFF_REGID 0x03 /* uchIdent - FloodFill */ /* @D2A*/
772:
773: #define ETYPE_GEFF 0x800300D5L /* @D2A*/
774:
775: typedef struct _ORDERL_GEFF { /* olgeff */ /* @D2A*/
776: UCHAR fsFlags; /* @D2A*/
777: UCHAR auchColor[3]; /* @D2A*/
778: } ORDERL_GEFF; /* @D2A*/
779:
780:
781: /* Element Types for attribute bundles */
782: #define ETYPE_LINEBUNDLE 0x0000FD01L
783: #define ETYPE_CHARBUNDLE 0x0000FD02L
784: #define ETYPE_MARKERBUNDLE 0x0000FD03L
785: #define ETYPE_AREABUNDLE 0x0000FD04L
786: #define ETYPE_IMAGEBUNDLE 0x0000FD05L
787:
788:
789: /***************************************************************************\
790: *
791: * Very long orders
792: *
793: \***************************************************************************/
794:
795: /* macro to tell whether this is a very long order */
796: #define VLONG_ORDER(oc) ((oc)==OCODE_VLONG)
797:
798: /* Very long order structure */
799: #define VORDER_ML 65531
800: typedef struct _VORDER { /* vord */
801: UCHAR idCode;
802: UCHAR uchQualifier;
803: SWPUSHORT uchLength;
804: UCHAR uchData[VORDER_ML];
805: } VORDER;
806:
807: /* Character String Extended */
808: #define OCODEQ_GCCHSTE 0xB0 /* Qualifier - current posn */
809: #define OCODEQ_GCHSTE 0xF0 /* Qualifier - given position */
810:
811: #define ETYPE_GCCHSTE 0x0000FEB0L
812: #define ETYPE_GCHSTE 0x0000FEF0L
813:
814: typedef struct _ORDERS_GCCHSTE { /* osgcchste */
815: UCHAR fbFlags;
816: UCHAR uchReserved;
817: POINTS ptRect[2];
818: SWPUSHORT cchString;
819: CHAR achString[1];
820: SHORT adx[1];
821: } ORDERS_GCCHSTE;
822:
823: typedef struct _ORDERL_GCCHSTE { /* olgcchste */
824: UCHAR fbFlags;
825: UCHAR uchReserved;
826: POINTL ptRect[2];
827: SWPUSHORT cchString;
828: CHAR achString[1];
829: LONG adx[1];
830: } ORDERL_GCCHSTE;
831:
832: #define GCCHSTE_DRAWRECT 0x80
833: #define GCCHSTE_NORECT 0x00
834: #define GCCHSTE_CLIP 0x40
835: #define GCCHSTE_NOCLIP 0x00
836: #define GCCHSTE_DEEMPHASIZE 0x20 /* Reserved @P2C*/
837: #define GCCHSTE_NODEEMPHASIZE 0x00
838: #define GCCHSTE_LEAVEPOS 0x10
839: #define GCCHSTE_MOVEPOS 0x00
840: #define GCCHSTE_UNDERSCORE 0x08 /* @P2A*/
841: #define GCCHSTE_NOUNDERSCORE 0x00 /* @P2A*/
842: #define GCCHSTE_STRIKEOUT 0x04 /* @P2A*/
843: #define GCCHSTE_NOSTRIKEOUT 0x00 /* @P2A*/
844:
845: /* Extended Escape */
846: #define OCODEQ_GEESCP 0xD5 /* Qualifier - extended escape */
847:
848: #define GEESCP_ML 65533
849: typedef struct _ORDER_GEESCP { /* ogeescp */
850: UCHAR uchType;
851: UCHAR uchIdent;
852: UCHAR auchData[GEESCP_ML];
853: } ORDER_GEESCP;
854: /* @P3A*/
855: /* XLATOFF */
856: #pragma pack() /* reset to default packing @P3A*/
857: /* XLATON */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.