Annotation of os232sdk/toolkt20/c/os2h/pmord.h, revision 1.1.1.1

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 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.