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