home *** CD-ROM | disk | FTP | other *** search
- /****************************** Module Header ******************************\
- *
- * Module Name: PMORD.H
- *
- * This is the include file which defines all the structures and constants
- * that can be used to build or intepret GOCA orders for the GPI
- *
- * Copyright (c) 1989-1990, Microsoft Corporation. All rights reserved.
- *
- * ==========================================================================
- *
- * The orders fall into 4 categories :-
- *
- * 1) 1-byte orders
- *
- * 2) 2-byte orders - second byte contains the value
- *
- * 3) Long orders - second byte gives the order length, subsequent bytes
- * contain the values (up to 256 bytes long)
- *
- * 4) Very long orders - third and fourth bytes gives the order length,
- * subsequent bytes contain the values (up to 64K long)
- *
- \***************************************************************************/
-
- /***************************************************************************\
- *
- * Miscellaneous structures used in this file
- *
- \***************************************************************************/
-
- #define PMORD_INCLUDED
-
- /* form of RECTL with shorts instead of longs */
- typedef struct _RECT1S { /* rcs */
- SHORT xLeft;
- SHORT yBottom;
- SHORT xRight;
- SHORT yTop;
- } RECT1S;
-
- /* form of POINTL with 1 byte offsets instead of longs */
- typedef struct _ODPOINT { /* odpt */
- CHAR dx;
- CHAR dy;
- } ODPOINT;
-
- /* form of SIZEL with shorts instead of longs */
- typedef struct _SIZES { /* sizs */
- SHORT cx;
- SHORT cy;
- } SIZES;
-
- /* unsigned two-byte swapped integer */
- typedef struct _SWPUSHORT { /* swpus */
- UCHAR HiByte;
- UCHAR LoByte;
- } SWPUSHORT;
-
- /***************************************************************************\
- *
- * 1-byte orders
- *
- \***************************************************************************/
-
- /* macro to tell whether this is a 1-byte order */
- #define BYTE_ORDER(oc) ((oc)==OCODE_GNOP1 || (oc)==OCODE_GESD)
-
- /* 1-byte order codes */
- #define OCODE_GNOP1 0x00 /* No-operation */
- #define OCODE_GESD 0xFF /* End symbol definition */
-
- /***************************************************************************\
- *
- * 2-byte orders
- *
- \***************************************************************************/
-
- /* definitions to help determine whether an order code is a 2-byte order */
- #define OCODE2_1 0x80
- #define OCODE2_2 0x88
-
- #define SHORT_ORDER(oc) ((((oc)^OCODE2_1)&OCODE2_2)==OCODE2_2)
-
- /* General 2-byte order structure */
- typedef struct _ORDER { /* ord */
- UCHAR idCode;
- UCHAR uchData;
- } ORDER;
-
- /* 2-byte order codes */
- #define OCODE_GBAR 0x68 /* Begin area */
- #define OCODE_GCFIG 0x7D /* Close figure */
- #define OCODE_GEEL 0x49 /* End element */
- #define OCODE_GEPTH 0x7F /* End path */
- #define OCODE_GEPROL 0x3E /* End prologue */
- #define OCODE_GPOP 0x3F /* Pop */
- #define OCODE_GSBMX 0x0D /* Set background mix */
- #define OCODE_GPSBMX 0x4D /* Push & set b/g mix */
- #define OCODE_GSCD 0x3A /* Set char direction */
- #define OCODE_GPSCD 0x7A /* Push & set char direction */
- #define OCODE_GSCR 0x39 /* Set char precision */
- #define OCODE_GPSCR 0x79 /* Push & set char precision */
- #define OCODE_GSCS 0x38 /* Set char set */
- #define OCODE_GPSCS 0x78 /* Push & set char set */
- #define OCODE_GSCOL 0x0A /* Set color */
- #define OCODE_GPSCOL 0x4A /* Push & set color */
- #define OCODE_GSLE 0x1A /* Set line end */
- #define OCODE_GPSLE 0x5A /* Push & set line end */
- #define OCODE_GSLJ 0x1B /* Set line join */
- #define OCODE_GPSLJ 0x5B /* Push & set line join */
- #define OCODE_GSLT 0x18 /* Set line type */
- #define OCODE_GPSLT 0x58 /* Push & set line type */
- #define OCODE_GSLW 0x19 /* Set line width */
- #define OCODE_GPSLW 0x59 /* Push & set line width */
- #define OCODE_GSMP 0x3B /* Set marker precision */
- #define OCODE_GPSMP 0x7B /* Push & set marker precision */
- #define OCODE_GSMS 0x3C /* Set marker set */
- #define OCODE_GPSMS 0x7C /* Push & set marker set */
- #define OCODE_GSMT 0x29 /* Set marker symbol */
- #define OCODE_GPSMT 0x69 /* Push & set marker symbol */
- #define OCODE_GSMX 0x0C /* Set mix */
- #define OCODE_GPSMX 0x4C /* Push & set mix */
- #define OCODE_GSPS 0x08 /* Set pattern set */
- #define OCODE_GPSPS 0x48 /* Push & set pattern set */
- #define OCODE_GSPT 0x28 /* Set pattern symbol */
- #define OCODE_GPSPT 0x09 /* Push & set pattern symbol */
-
- /* constants for 2-byte orders */
-
- /* Begin area */
- #define GBAR_RESERVED 0x80
- #define GBAR_BOUNDARY 0xC0
- #define GBAR_NOBOUNDARY 0x80
- #define GBAR_WINDING 0xA0
- #define GBAR_ALTERNATE 0x80
-
- /* Set Character Precision */
- #define GSCR_PRECISION 0x0F
-
- /***************************************************************************\
- *
- * Long orders
- *
- \***************************************************************************/
-
- /* definitions to help determine whether an order code is a long order */
-
- #define OCODE_VLONG 0xFE
-
- #define LONG_ORDER(oc) (!((oc)==OCODE_VLONG||BYTE_ORDER(oc)||SHORT_ORDER(oc)))
-
- /* long order structure */
- #define LORDER_ML 253
- typedef struct _LORDER { /* lord */
- UCHAR idCode;
- UCHAR uchLength;
- UCHAR uchData[LORDER_ML];
- } LORDER;
-
- /* Long orders for which the length of data is normally zero */
- #define OCODE_GEAR 0x60 /* End Area */
- #define OCODE_GEIMG 0x93 /* End Image */
-
- /* Long orders for which the data is contained in a type already defined */
-
- /* Character String */
- #define OCODE_GCCHST 0x83 /* char string at curr posn */
- #define GCCHST_MC 255 /* Max len of string in bytes */
-
- #define OCODE_GCHST 0xC3 /* char string at given pos */
- #define GCHST_SMC 251 /* Max len of string (S) */
- #define GCHST_LMC 247 /* Max len of string (L) */
-
- /* Character String Move */
- #define OCODE_GCCHSTM 0xB1 /* char string move at c.p. */
- #define GCCHSTM_MC 255 /* Max len of string in byte */
-
- #define OCODE_GCHSTM 0xF1 /* char string move at g.p. */
- #define GCHSTM_SMC 251 /* Max len of string (S) */
- #define GCHSTM_LMC 247 /* Max len of string (L) */
-
- /* Comment */
- #define OCODE_GCOMT 0x01 /* Comment */
- #define GCOMT_ML 255 /* Maximum len of comment data */
-
- /* Image */
- #define OCODE_GIMD 0x92 /* Image data */
- #define GIMD_ML 255 /* Maximum len of image data */
-
- /* Full Arc */
- #define OCODE_GCFARC 0x87 /* full arc at current posn */
- #define OCODE_GFARC 0xC7 /* full arc at given posn */
-
- /* Label */
- #define OCODE_GLABL 0xD3 /* Label */
-
- /* Set Current Position */
- #define OCODE_GSCP 0x21 /* Set current position */
- #define OCODE_GPSCP 0x61 /* Push and set curr posn */
-
- /* Bezier spline */
- #define OCODE_GCBEZ 0xA5 /* Bezier spline at curr pos */
- #define GCBEZ_SMB 21 /* Max number of splines (S) */
- #define GCBEZ_LMB 10 /* Max number of splines (L) */
-
- #define OCODE_GBEZ 0xE5 /* Bezier spline at given pos */
- #define GBEZ_SMB 20 /* Max number of splines (S) */
- #define GBEZ_LMB 10 /* Max number of splines (L) */
-
- /* Fillet */
- #define OCODE_GCFLT 0x85 /* fillet at current posn */
- #define GCFLT_SMP 63 /* Max number of points (S) */
- #define GCFLT_LMP 31 /* Max number of points (L) */
-
- #define OCODE_GFLT 0xC5 /* fillet at given position */
- #define GFLT_SMP 62 /* Max number of points (S) */
- #define GFLT_LMP 30 /* Max number of points (L) */
-
- /* Polyline */
- #define OCODE_GCLINE 0x81 /* polyline at current posn */
- #define GCLINE_SMP 63 /* Max number of points (S) */
- #define GCLINE_LMP 31 /* Max number of points (L) */
-
- #define OCODE_GLINE 0xC1 /* polyline at given posn */
- #define GLINE_SMP 62 /* Max number of points (S) */
- #define GLINE_LMP 30 /* Max number of points (L) */
-
- /* Polymarker */
- #define OCODE_GCMRK 0x82 /* marker at current posn */
- #define GCMRK_SMP 63 /* Max number of points (S) */
- #define GCMRK_LMP 31 /* Max number of points (L) */
-
- #define OCODE_GMRK 0xC2 /* marker at given posn */
- #define GMRK_SMP 62 /* Max number of points (S) */
- #define GMRK_LMP 30 /* Max number of points (L) */
-
- /* Relative Line */
- #define OCODE_GCRLINE 0xA1 /* Relative line at curr pos */
- #define GCRLINE_MP 127 /* Max number of points */
-
- #define OCODE_GRLINE 0xE1 /* Relative line at givn pos */
- #define GRLINE_SMP 125 /* Max number of points (S) */
- #define GRLINE_LMP 123 /* Max number of points (L) */
-
- /* Set Background Color */
- #define OCODE_GSBCOL 0x25 /* Set background color */
- #define OCODE_GPSBCOL 0x65 /* Push and set b/g color */
-
- /* Set Extended Color */
- #define OCODE_GSECOL 0x26 /* Set extended color */
- #define OCODE_GPSECOL 0x66 /* Push and set ext color */
-
- /* Extended Color values */
- #define SECOL_DEFAULT0 0x0000
- #define SECOL_DEFAULT1 0xFF00
- #define SECOL_NEUTRAL 0xFF07
- #define SECOL_RESET 0xFF08
-
- /* Set Character Angle */
- #define OCODE_GSCA 0x34 /* Set character angle */
- #define OCODE_GPSCA 0x74 /* Push and set char angle */
-
- /* Set Character Shear */
- #define OCODE_GSCH 0x35 /* Set character shear */
- #define OCODE_GPSCH 0x75 /* Push and set char shear */
-
- /* Set Fractional Line Width */
- #define OCODE_GSFLW 0x11 /* Set fractional line width */
- #define OCODE_GPSFLW 0x51 /* Push and set frac l width */
-
- /* Set Pick Identifier */
- #define OCODE_GSPIK 0x43 /* Set pick identifier */
- #define OCODE_GPSPIK 0x23 /* Push and set pick id */
-
-
- /* Long Orders for which a structure can be defined for the data */
-
- /* Arc */
- #define OCODE_GCARC 0x86 /* Arc at Current Position */
- #define OCODE_GARC 0xC6 /* Arc at Given Position */
-
- typedef struct _ORDERS_GCARC { /* osgcarc */
- POINTS ptInter;
- POINTS ptEnd;
- } ORDERS_GCARC;
-
- typedef struct _ORDERL_GCARC { /* olgcarc */
- POINTL ptInter;
- POINTL ptEnd;
- } ORDERL_GCARC;
-
- /* Begin Element */
- #define OCODE_GBEL 0xD2 /* Begin Element */
-
- #define GBEL_DL 251
- typedef struct _ORDER_GBEL { /* ogbel */
- LONG lElementType;
- CHAR achDesc[GBEL_DL];
- } ORDER_GBEL;
-
- /* Begin Image */
- #define OCODE_GCBIMG 0x91 /* Begin Image at curr posn */
- #define OCODE_GBIMG 0xD1 /* Begin Image at given posn */
-
- typedef struct _ORDER_GCBIMG { /* ogbimg */
- UCHAR uchFormat;
- UCHAR uchReserved;
- SWPUSHORT cx;
- SWPUSHORT cy;
- } ORDER_GCBIMG;
-
- /* Begin Path */
- #define OCODE_GBPTH 0xD0 /* Begin Path */
-
- typedef struct _ORDER_GBPTH { /* ogbpth */
- USHORT usReserved;
- LONG idPath;
- } ORDER_GBPTH;
-
- /* Box */
- #define OCODE_GCBOX 0x80 /* Box at current position */
- #define OCODE_GBOX 0xC0 /* Box at given position */
-
- typedef struct _ORDERS_GCBOX { /* osgcbox */
- UCHAR fbFlags;
- UCHAR uchReserved;
- POINTS ptCorner;
- SHORT hAxis;
- SHORT vAxis;
- } ORDERS_GCBOX;
-
- typedef struct _ORDERL_GCBOX { /* olgcbox */
- UCHAR fbFlags;
- UCHAR uchReserved;
- POINTL ptCorner;
- LONG hAxis;
- LONG vAxis;
- } ORDERL_GCBOX;
-
- #define GCBOX_FILL 0x40
- #define GCBOX_BOUNDARY 0x20
-
- /* Call Segment */
- #define OCODE_GCALLS 0x07 /* call segment */
-
- typedef struct _ORDER_GCALLS { /* ogcalls */
- USHORT sReserved;
- LONG idSegment;
- } ORDER_GCALLS;
-
- /* Fill Path */
- #define OCODE_GFPTH 0xD7 /* Fill path */
- typedef struct _ORDER_GFPTH { /* ogfpth */
- UCHAR fbFlags;
- UCHAR uchReserved;
- LONG idPath;
- } ORDER_GFPTH;
-
- #define GFPTH_ALTERNATE 0x00
- #define GFPTH_WINDING 0x40
- #define GFPTH_MODIFY 0x20
-
- /* Outline Path */
- #define OCODE_GOPTH 0xD4 /* Outline Path */
- typedef struct _ORDER_GOPTH { /* ogopth */
- UCHAR fbFlags;
- UCHAR uchReserved;
- LONG idPath;
- } ORDER_GOPTH;
-
- /* Modify Path */
- #define OCODE_GMPTH 0xD8 /* modify path */
-
- typedef struct _ORDER_GMPTH { /* ogmpth */
- UCHAR uchMode;
- UCHAR uchReserved;
- LONG idPath;
- } ORDER_GMPTH;
-
- #define GMPTH_STROKE 0x06
-
- /* Partial Arc */
- #define OCODE_GCPARC 0xA3 /* Partial arc at curr posn */
- #define OCODE_GPARC 0xE3 /* Partial arc at given posn */
-
- typedef struct _ORDERS_GCPARC { /* osgcparc */
- POINTS ptCenter;
- FIXED88 ufx88Multiplier;
- LONG usStartAngle;
- LONG usSweepAngle;
- } ORDERS_GCPARC;
-
- typedef struct _ORDERL_GCPARC { /* olgcparc */
- POINTL ptCenter;
- FIXED ufxMultiplier;
- LONG usStartAngle;
- LONG usSweepAngle;
- } ORDERL_GCPARC;
-
- /* Set Clip Path */
- #define OCODE_GSCPTH 0xB4 /* Set clip path */
-
- typedef struct _ORDER_GSCPTH { /* ogscpth */
- UCHAR fbFlags;
- UCHAR uchReserved;
- LONG idPath;
- } ORDER_GSCPTH;
-
- #define GSCPTH_ALTERNATE 0x00
- #define GSCPTH_WINDING 0x40
- #define GSCPTH_RESET 0x00
- #define GSCPTH_INTERSECT 0x20
-
- /* Set Arc Parameters */
- #define OCODE_GSAP 0x22 /* Set arc parameters */
- #define OCODE_GPSAP 0x62 /* Push and set arc params */
-
- typedef struct _ORDERS_GSAP { /* osgsap */
- SHORT p;
- SHORT q;
- SHORT r;
- SHORT s;
- } ORDERS_GSAP;
-
- typedef struct _ORDERL_GSAP { /* olgsap */
- LONG p;
- LONG q;
- LONG r;
- LONG s;
- } ORDERL_GSAP;
-
- /* Set Background Indexed Color */
- #define OCODE_GSBICOL 0xA7 /* Set b/g indexed color */
- #define OCODE_GPSBICOL 0xE7 /* Push and set b/g ind color */
- #define OCODE_GSICOL 0xA6 /* Set indexed color */
- #define OCODE_GPSICOL 0xE6 /* Push and set indexd color */
-
- typedef struct _ORDER_GSBICOL { /* ogbicol */
- UCHAR fbFlags;
- UCHAR auchColor[3];
- } ORDER_GSBICOL;
-
- #define SICOL_SPECIFY 0x00
- #define SICOL_SPECIAL 0x40
- #define SICOL_DEFAULT 0x80
- #define SICOL_BLACK 1
- #define SICOL_WHITE 2
- #define SICOL_ONES 4
- #define SICOL_ZEROES 5
-
- /* Set Character Cell */
- #define OCODE_GSCC 0x33 /* Set character cell */
- #define OCODE_GPSCC 0x03 /* Push and set char cell */
-
- typedef struct _ORDERS_GSCC { /* osgscc */
- SHORT cxInt;
- SHORT cyInt;
- USHORT cxFract;
- USHORT cyFract;
- UCHAR fbFlags;
- UCHAR uchReserved;
- } ORDERS_GSCC;
-
- typedef struct _ORDERL_GSCC { /* olgscc */
- LONG cxInt;
- LONG cyInt;
- USHORT cxFract;
- USHORT cyFract;
- UCHAR fbFlags;
- UCHAR uchReserved;
- } ORDERL_GSCC;
-
- #define GSCC_ZERODEF 0x00
- #define GSCC_ZEROZERO 0x80
-
- /* Set Marker Cell */
- #define OCODE_GSMC 0x37 /* Set marker cell */
- #define OCODE_GPSMC 0x77 /* Push and set marker cell */
-
- typedef struct _ORDERS_GSMC { /* osgsmc */
- SHORT cx;
- SHORT cy;
- UCHAR fbFlags;
- UCHAR uchReserved;
- } ORDERS_GSMC;
-
- typedef struct _ORDERL_GSMC { /* olgsmc */
- LONG cx;
- LONG cy;
- UCHAR fbFlags;
- UCHAR uchReserved;
- } ORDERL_GSMC;
-
- #define GSMC_ZERODEF 0x00
- #define GSMC_ZEROZERO 0x80
-
- /* Set Pattern Reference Point */
- #define OCODE_GSPRP 0xA0 /* Set pattern ref point */
- #define OCODE_GPSPRP 0xE0 /* Push and set patt ref pt */
-
- typedef struct _ORDERS_GSPRP { /* osgsprp */
- UCHAR fbFlags;
- UCHAR uchReserved;
- POINTS ptPos;
- } ORDERS_GSPRP;
-
- typedef struct _ORDERL_GSPRP { /* olgsprp */
- UCHAR fbFlags;
- UCHAR uchReserved;
- POINTL ptPos;
- } ORDERL_GSPRP;
-
- #define GSPRP_DEFAULT 0x80
- #define GSPRP_SPECIFY 0x00
-
-
- /* Set Individual Attribute */
- #define OCODE_GSIA 0x14 /* Set individual attribute */
- #define OCODE_GPSIA 0x54 /* Push and set ind attr */
-
- #define GSIA_VL 3
- typedef struct _ORDER_GSIA { /* ogsia */
- UCHAR uchAttrType;
- UCHAR uchPrimType;
- UCHAR fbFlags;
- UCHAR auchValue[GSIA_VL];
- } ORDER_GSIA;
-
- #define GSIA_COLOR 0x01
- #define GSIA_BCOLOR 0x02
- #define GSIA_MIX 0x03
- #define GSIA_BMIX 0x04
- #define GSIA_LINE 0x01
- #define GSIA_CHAR 0x02
- #define GSIA_MARKER 0x03
- #define GSIA_PATTERN 0x04
- #define GSIA_IMAGE 0x05
- #define GSIA_SPECIFY 0x00
- #define GSIA_SPECIAL 0x40
- #define GSIA_DEFAULT 0x80
- #define GSIA_BLACK 1
- #define GSIA_WHITE 2
- #define GSIA_ONES 4
- #define GSIA_ZEROES 5
-
-
- /* Set Model /Viewing Transform */
- #define OCODE_GSTM 0x24 /* Set model transform */
- #define OCODE_GPSTM 0x64 /* Push and set model tfm */
-
- #define OCODE_GSTV 0x31 /* Set Viewing Transform */
-
- #define GSTM_ML 16
- typedef struct _ORDERS_GSTM { /* osgstm */
- UCHAR uchReserved;
- UCHAR fbFlags;
- USHORT fsMask;
- SHORT asMatrix[GSTM_ML];
- } ORDERS_GSTM;
-
- typedef struct _ORDERL_GSTM { /* olgstm */
- UCHAR uchReserved;
- UCHAR fbFlags;
- USHORT fsMask;
- LONG alMatrix[GSTM_ML];
- } ORDERL_GSTM;
-
- #define GSTM_M11 0x8000
- #define GSTM_M12 0x4000
- #define GSTM_M13 0x2000
- #define GSTM_M14 0x1000
- #define GSTM_M21 0x0800
- #define GSTM_M22 0x0400
- #define GSTM_M23 0x0200
- #define GSTM_M24 0x0100
- #define GSTM_M31 0x0080
- #define GSTM_M32 0x0040
- #define GSTM_M33 0x0020
- #define GSTM_M34 0x0010
- #define GSTM_M41 0x0008
- #define GSTM_M42 0x0004
- #define GSTM_M43 0x0002
- #define GSTM_M44 0x0001
-
- #define GSTM_UNITY 0x00
- #define GSTM_AFTER 0x01
- #define GSTM_BEFORE 0x02
- #define GSTM_OVERWRITE 0x03
-
- #define GSTV_OVERWRITE 0x00
- #define GSTV_AFTER 0x04
-
- /* Set Segment Boundary, Viewing Window */
-
- #define OCODE_GSSB 0x32 /* Set segment boundary */
- #define OCODE_GSVW 0x27 /* Set viewing window */
- #define OCODE_GPSVW 0x67 /* Push and set view window */
-
- #define GSSB_ML 4
- typedef struct _ORDERS_GSSB { /* osgssb */
- UCHAR fbFlags;
- UCHAR fbMask;
- SHORT alMatrix[GSSB_ML];
- } ORDERS_GSSB;
-
- typedef struct _ORDERL_GSSB { /* olgssb */
- UCHAR fbFLags;
- UCHAR fbMask;
- LONG alMatrix[GSSB_ML];
- } ORDERL_GSSB;
-
- #define GSSB_XLEFT 0x20
- #define GSSB_XRIGHT 0x10
- #define GSSB_YBOTTOM 0x08
- #define GSSB_YTOP 0x04
-
- #define GSVW_INTERSECT 0x00
- #define GSVW_REPLACE 0x80
-
- /* Set Segment Characteristics */
- #define OCODE_GSGCH 0x04 /* Set segment characteristics */
-
- #define GSGCH_ML 254
- typedef struct _ORDER_GSGCH { /* ogsgch */
- UCHAR uchIdent;
- UCHAR auchData[GSGCH_ML];
- } ORDER_GSGCH;
-
- /* Set Stroke Line Width */
- #define OCODE_GSSLW 0x15 /* Set stroke line width */
- #define OCODE_GPSSLW 0x55 /* Push and set strk l width */
-
- typedef struct _ORDERS_GSSLW { /* osgsslw */
- UCHAR fbFlags;
- UCHAR uchReserved;
- SHORT LineWidth;
- } ORDERS_GSSLW;
-
- typedef struct _ORDERL_GSSLW { /* olgsslw */
- UCHAR fbFlags;
- UCHAR uchReserved;
- LONG LineWidth;
- } ORDERL_GSSLW;
-
- #define GSSLW_DEFAULT 0x80
- #define GSSLW_SPECIFY 0x00
-
- /* Sharp Fillet at Current Position */
- #define OCODE_GCSFLT 0xA4 /* Sharp fillet at curr pos */
- #define OCODE_GSFLT 0xE4 /* Sharp fillet at given pos */
-
- #define GCSFLT_SMF 21
- #define GSFLT_SMF 20
-
- typedef struct _ORDERS_GCSFLT { /* osgcsflt */
- POINTS apt[2*GCSFLT_SMF];
- FIXED afxSharpness[GCSFLT_SMF];
- } ORDERS_GCSFLT;
-
- #define GCSFLT_LMF 12
- #define GSFLT_LMF 12
-
- typedef struct _ORDERL_GCSFLT { /* olgcsflt */
- POINTL apt[2*GCSFLT_SMF];
- FIXED afxSharpness[GCSFLT_SMF];
- } ORDERL_GCSFLT;
-
- /* Bitblt */
- #define OCODE_GBBLT 0xD6 /* Bitblt */
-
- typedef struct _ORDERS_GBBLT { /* osgbblt */
- USHORT fsFlags;
- USHORT usMix;
- HBITMAP hbmSrc;
- LONG lOptions;
- RECT1S rcsTargetRect;
- RECTL rclSourceRect;
- } ORDERS_GBBLT;
-
- typedef struct _ORDERL_GBBLT { /* olgbblt */
- USHORT fsFlags;
- USHORT usMix;
- HBITMAP hbmSrc;
- LONG lOptions;
- RECTL rclTargetRect;
- RECTL rclSourceRect;
- } ORDERL_GBBLT;
-
- /* Escape */
- #define OCODE_GESCP 0xD5 /* Escape */
-
- /*
- * type describes type of escape order, identifier gives the escape
- * order if the type is registered
- */
- #define GESCP_ML 253
- typedef struct _ORDER_GESCP { /* ogescp */
- UCHAR uchType;
- UCHAR uchIdent;
- UCHAR auchData[GESCP_ML]; /* Escape data */
- } ORDER_GESCP;
-
- #define GESCP_REG 0x80 /* identifier is registered */
-
- /* Escape (Bitblt) */
- #define GEBB_REGID 0x02 /* uchIdent - Bitblt */
-
- #define ETYPE_GEBB 0x800200D5L
-
- #define GEBB_LMP 29
- typedef struct _ORDERL_GEBB { /* olgebb */
- UCHAR fbFlags;
- USHORT usMix;
- UCHAR cPoints;
- HBITMAP hbmSrc;
- LONG lReserved;
- LONG lOptions;
- POINTL aptPoints[GEBB_LMP];
- } ORDERL_GEBB;
-
- /* Escape (Set Pel) */
- #define GEPEL_REGID 0x01 /* uchIdent - Set Pel */
-
- #define ETYPE_GEPEL 0x800100D5L
-
- /* Element Types for attribute bundles */
- #define ETYPE_LINEBUNDLE 0x0000FD01L
- #define ETYPE_CHARBUNDLE 0x0000FD02L
- #define ETYPE_MARKERBUNDLE 0x0000FD03L
- #define ETYPE_AREABUNDLE 0x0000FD04L
- #define ETYPE_IMAGEBUNDLE 0x0000FD05L
-
- /***************************************************************************\
- *
- * Very long orders
- *
- \***************************************************************************/
-
- /* macro to tell whether this is a very long order */
- #define VLONG_ORDER(oc) ((oc)==OCODE_VLONG)
-
- /* Very long order structure */
- #define VORDER_ML 65531
- typedef struct _VORDER { /* vord */
- UCHAR idCode;
- UCHAR uchQualifier;
- SWPUSHORT uchLength;
- UCHAR uchData[VORDER_ML];
- } VORDER;
-
- /* Character String Extended */
- #define OCODEQ_GCCHSTE 0xB0 /* Qualifier - current posn */
- #define OCODEQ_GCHSTE 0xF0 /* Qualifier - given position */
-
- #define ETYPE_GCCHSTE 0x0000FEB0L
- #define ETYPE_GCHSTE 0x0000FEF0L
-
- typedef struct _ORDERS_GCCHSTE { /* osgcchste */
- UCHAR fbFlags;
- UCHAR uchReserved;
- POINTS ptRect[2];
- SWPUSHORT cchString;
- CHAR achString[1];
- SHORT adx[1];
- } ORDERS_GCCHSTE;
-
- typedef struct _ORDERL_GCCHSTE { /* olgcchste */
- UCHAR fbFlags;
- UCHAR uchReserved;
- POINTL ptRect[2];
- SWPUSHORT cchString;
- CHAR achString[1];
- LONG adx[1];
- } ORDERL_GCCHSTE;
-
- #define GCCHSTE_DRAWRECT 0x80
- #define GCCHSTE_NORECT 0x00
- #define GCCHSTE_CLIP 0x40
- #define GCCHSTE_NOCLIP 0x00
- #define GCCHSTE_DEEMPHASIZE 0x20
- #define GCCHSTE_NODEEMPHASIZE 0x00
- #define GCCHSTE_LEAVEPOS 0x10
- #define GCCHSTE_MOVEPOS 0x00
-
- /* Extended Escape */
- #define OCODEQ_GEESCP 0xD5 /* Qualifier - extended escape */
-
- #define GEESCP_ML 65533
- typedef struct _ORDER_GEESCP { /* ogeescp */
- UCHAR uchType;
- UCHAR uchIdent;
- UCHAR auchData[GEESCP_ML];
- } ORDER_GEESCP;
-