--- pmsdk/include/pmord.h 2018/08/09 12:28:13 1.1 +++ pmsdk/include/pmord.h 2018/08/09 12:28:36 1.1.1.2 @@ -1,817 +1,663 @@ -/****************************** 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) 1988 Microsoft Corporation -* Copyright (c) 1988 IBM Corporation -* -* ========================================================================== -* -* 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 -* -\***************************************************************************/ - -/* 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 shorts instead of longs */ -typedef struct _POINTS { /* pts */ - SHORT x; - SHORT y; -} POINTS; - -/* 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_NOADJUST 0x80 -#define GSCR_ADJUST 0x00 -#define GSCR_PRESERVE 0x40 -#define GSCR_NOPRESERVE 0x00 -#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 */ - -/* Delete Path */ -#define OCODE_GDPTH 0xDA /* Delete path */ - -/* Fill Path */ -#define OCODE_GFPTH 0xD7 /* Fill path */ - -/* Outline Path */ -#define OCODE_GOPTH 0xd6 /* Outline path */ - -/* Select Clip Path */ -#define OCODE_GSCPTH 0xD9 /* Select clip path */ - -/* 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 -#define SECOL_ALLONES 0xFF09 -#define SECOL_ALLZEROES 0xFF0A - -/* 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 */ - LONG idPath; - UCHAR cmdMode; -} ORDER_GBPTH; - -#define GBPTH_1D 0x00 -#define GBPTH_2DALTERNATE 0x01 -#define GBPTH_2DWINDING 0x02 - -/* 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; - -/* Combine Paths */ -#define OCODE_GCPTH 0xD4 /* Combine paths */ - -typedef struct _ORDER_GCPTH { /* ogcpth */ - LONG idSrc1Path; - LONG idSrc2Path; - LONG idDestPath; - UCHAR cmdMode; -} ORDER_GCPTH; - -#define GCPTH_OR 0x01 -#define GCPTH_COPY 0x02 -#define GCPTH_XOR 0x04 -#define GCPTH_AND 0x06 -#define GCPTH_DIFF 0x07 - -/* Modify Path */ -#define OCODE_GMPTH 0xD4 /* modify path */ - -typedef struct _ORDER_GMPTH { /* ogmpth */ - LONG idPath; - UCHAR cmdMode; -} ORDER_GMPTH; - -#define GMPTH_BOUNDARY 0x00 -#define GMPTH_INVERT 0x01 -#define GMPTH_CLIP 0x02 -#define GMPTH_WINDING 0x03 -#define GMPTH_ALTERNATE 0x04 -#define GMPTH_STROKE 0x05 - -/* 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; - FIXED ufxMultiplier; - USHORT usStartAngle; - USHORT usSweepAngle; -} ORDERS_GCPARC; - -typedef struct _ORDERL_GCPARC { /* olgcparc */ - POINTL ptCenter; - FIXED ufxMultiplier; - USHORT usStartAngle; - USHORT usSweepAngle; -} ORDERL_GCPARC; - -/* 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 0x01 -#define SICOL_DEFAULT 0x80 - -/* 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 */ - POINTS ptPos; - UCHAR fbFlags; - UCHAR uchReserved; -} ORDERS_GSPRP; - -typedef struct _ORDERL_GSPRP { /* olgsprp */ - POINTL ptPos; - UCHAR fbFlags; - UCHAR uchReserved; -} 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_DEFAULT 0x80 - - -/* 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 OCODE_GPSTV 0x30 /* Push and set viewing tfm */ - -#define GSTM_ML 16 -typedef struct _ORDER_GSTM { /* ogstm */ - UCHAR uchReserved; - UCHAR fbFlags; - USHORT fsMask; - LONG alMatrix[GSTM_ML]; -} ORDER_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_AFTER 0x00 -#define GSTV_OVERWRITE 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 characterstc s*/ - -#define GSGCH_ML 254 -typedef struct _ORDER_GSGCH { /* ogsgch */ - UCHAR uchIdent; - UCHAR auchData[GSGCH_ML]; -} ORDER_GSGCH; - -/* Set Stroke Line Type */ -#define OCODE_GSSLT 0x16 /* Set stroke line type */ -#define OCODE_GPSSLT 0x56 /* Push and set stroke l type */ - -#define GSSLT_SND 126 -typedef struct _ORDERS_GSSLT { /* osgsslt */ - UCHAR fbFlags; - UCHAR uchReserved; - SHORT aDashLengths[GSSLT_SND]; -} ORDERS_GSSLT; - -#define GSSLT_LND 63 -typedef struct _ORDERL_GSSLT { /* olgsslt */ - UCHAR fbFlags; - UCHAR uchReserved; - LONG aDashLengths[GSSLT_LND]; -} ORDERL_GSSLT; - -#define GSSLT_DEFAULT 0x80 -#define GSSLT_SPECIFY 0x00 -#define GSSLT_FIRSTON 0x40 -#define GSSLT_FIRSTOFF 0x00 -#define GSSLT_REPSECOND 0x20 -#define GSSLT_REPFIRST 0x00 - -/* 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 0x000200D5L - -#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 0x000100D5L - -/* 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; +/****************************** 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 Microsoft Corporation +* +* ========================================================================== +* +* 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 +* +\***************************************************************************/ + +/* 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 fe ʜ@  ᜓ@@@@@@`l`@@@@@@@@@@@@^T@@@@@@@@@@@@@@@@@@@@@@T^F@@@@@`rf@@@@@@@@@@@@^T@@@@@@@@@@@@@@@@@@@@@T^^T@@@@@@@@@@@@@@T^^T@@@T^F@@@@`pf@@@@@@@@@@@@^T@@@@@@@@@T^F@@@@@@@djj@@@@@@@@@@@@@^T@@@@@Abytes */ + +#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 pos& */ +"I4 D' I '' gD$''Dg'`88x8@g@L@ I '' gA'`88g g@@88g gD@D88g @88g @ 88@'L@ I 88x8` gDg`88fAD' C gDg`88x8@g@L@ C' gC`88g @D@D88gL'88@'L@ C88x8` g@`88fAD' H g@BD@ position */ +#define OCODE_GBOX 0xC0 /* Box at given positi'n */ + +typedef struct _ORDERS_GCBOX { /* Nsgcbox */ + 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 + +/* 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 alMatrixYGSSB_ML]; +} ORDERS_GSSB; + +typedef struct _ORDERL_GSSB { /* oh* 31#&0* 31&&'#0&94-/.>'""&/242#/&"*<242#/)$*<242#/'*'<242#/'<242#+*")<242#+"& <)):!00244242'"<)9:1002919242#/:<2299:/""/ { /* 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_GCSLπO@π" `s03 ds`0&$`` 3$s !\ւ h0O. +HIjhɊaAEI."eHm)H#%B|*:b   8  RFVb7G'V7B$DU%5t$$B$ @  A9HAD A9HA < 9 |8@H  2{KrshQI%2 F!Ć25 RΡ'z)t@.F"!\*II!& +&@Bg@@LH NH' g "I#@VB@' 1៟'  usM)x9៟'9$ <bmSrc; + LONG lOptiNHD)"&91$@DD88gLFFD88@'LH NH"22242'"<""Oppp@pρO  OOψ Oς ψOO Axe + * order if the type is registered + */ +#define GESCP_ML 253 +typedef struct _ORDER_GESCP { /* ogescp */ + UCHAR uchType2 + UCHAR uchIdent; + UCHAR auchData[GERCP_ML]; /* Es1< 30 008fine GESCP_REG 0x80 /* identifier is registered */ + +/* Esbape (Bitblt) */ +#define GEBB_REGID 0x02 /* uchIdent - Bitblt */ + +#define ETYPE_GEBB 0x000200D5L + +#define GEBB_LMP 29 +typedef s4ruct _ORDERL_GEBB { /* o'៟8'< 1៟'  ៟8'< ៟'9$ < ៟# !0  ៟# !0# ៟ $!#0099#  30 #0099T@x$L|