/****************************** 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) International Business Machines Corporation 1981, 1988, 1989 * Copyright (c) Microsoft Corporation 1981, 1988, 1989 * * ========================================================================== * * 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 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;