|
|
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.