home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / orders.def < prev    next >
Text File  |  1994-07-06  |  48KB  |  1,167 lines

  1. DEFINITION MODULE ORDERS;
  2.  
  3. (************************************************************************
  4.   OS/2 2.x interface for Presentation Manager:
  5.  
  6.            This include file defines all the structures and constants
  7.            that can be used to build or interpret GOCA orders for the GPI
  8.  
  9.            The orders fall into 4 categories :
  10.  
  11.            1) 1-byte orders
  12.            2) 2-byte orders
  13.               - second byte contains the value
  14.            3) Long orders
  15.               - second byte gives the order length, subsequent bytes
  16.                 contain the values (up to 256 bytes long)
  17.            4) Very long orders
  18.               - third and fourth bytes gives the order length,
  19.                 subsequent bytes contain the values (up to 64K long)
  20.  
  21.  
  22.   Copyright (c) 1992, 1994 by Juergen Neuhoff
  23. *************************************************************************)
  24.  
  25. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  26. (*$CDECL+    C-style procedures                                         *)
  27. (*$A1        BYTE alignment for record fields                           *)
  28.  
  29. IMPORT SYSTEM;
  30. FROM   OS2DEF     IMPORT TYPEPREFIX, POINTS, POINTL, HBITMAP, RECTL;
  31. FROM   GPIDEF     IMPORT SIZEL, FIXED88, FIXED;
  32. FROM   GPIBITMAPS IMPORT PBITMAPINFO2;
  33.  
  34. (***************************************************************************\
  35. *
  36. * Miscellaneous structures used in this file
  37. *
  38. \***************************************************************************)
  39.  
  40. TYPE (* form of OS2DEF.RECTL with shorts instead of longs *)
  41.   RECT1S                    = RECORD   (* rcs *)
  42.     xLeft                     : INTEGER;
  43.     yBottom                   : INTEGER;
  44.     xRight                    : INTEGER;
  45.     yTop                      : INTEGER;
  46.                               END;
  47.  
  48. TYPE (* form of OS2DEF.POINTL with 1 byte offsets instead of longs *)
  49.   ODPOINT                   = RECORD   (* odpt *)
  50.     dx                        : SHORTINT;
  51.     dy                        : SHORTINT;
  52.                               END;
  53.  
  54. TYPE (* form of OS2DEF.SIZEL with shorts instead of longs *)
  55.   SIZES                     = RECORD  (* sizs *)
  56.     CASE                      : TYPEPREFIX OF
  57.     | TRUE                    :
  58.       cx                      : INTEGER;
  59.       cy                      : INTEGER;
  60.     | FALSE                   :
  61.       xSize                   : INTEGER;
  62.       ySize                   : INTEGER;
  63.     END;                      END;
  64.  
  65.  
  66. TYPE (* unsigned two-byte swapped integer *)
  67.   SWPUSHORT                 = RECORD  (* swpus *)
  68.     HiByte                    : SHORTCARD;
  69.     LoByte                    : SHORTCARD;
  70.                               END;
  71.  
  72. (***************************************************************************\
  73. *
  74. * 1-byte orders
  75. *
  76. \***************************************************************************)
  77.  
  78. (* function to tell whether this is a 1-byte order *)
  79. PROCEDURE BYTE_ORDER( oc:SYSTEM.BYTE ):BOOLEAN;
  80.  
  81. CONST (* 1-byte order codes *)
  82.   OCODE_GNOP1               = 000H;     (* No-operation                *)
  83.   OCODE_GESD                = 0FFH;     (* End symbol definition       *)
  84.  
  85. (***************************************************************************\
  86. *
  87. * 2-byte orders
  88. *
  89. \***************************************************************************)
  90.  
  91. CONST (* definitions to determine whether an order code is a 2-byte order *)
  92.   OCODE2_1                  = 80H;
  93.   OCODE2_2                  = 88H;
  94.  
  95. PROCEDURE SHORT_ORDER( oc:SYSTEM.BYTE ):BOOLEAN;
  96.  
  97. TYPE (* General 2-byte order structure *)
  98.   ORDER                     = RECORD   (* ord *)
  99.     CASE                      : TYPEPREFIX OF
  100.     | TRUE                    :
  101.       idCode                  : SHORTCARD;
  102.       uchData                 : SHORTCARD;
  103.     | FALSE                   :
  104.       CodeId                  : SHORTCARD;
  105.       Data                    : SHORTCARD;
  106.     END;                      END;
  107.  
  108. CONST (* 2-byte order codes *)
  109.   OCODE_GBAR                = 68H;  (* Begin area                  *)
  110.   OCODE_GCFIG               = 7DH;  (* Close figure                *)
  111.   OCODE_GEEL                = 49H;  (* End element                 *)
  112.   OCODE_GEPTH               = 7FH;  (* End path                    *)
  113.   OCODE_GEPROL              = 3EH;  (* End prologue                *)
  114.   OCODE_GPOP                = 3FH;  (* Pop                         *)
  115.   OCODE_GSBMX               = 0DH;  (* Set background mix          *)
  116.   OCODE_GPSBMX              = 4DH;  (* Push & set b/g mix          *)
  117.   OCODE_GSCD                = 3AH;  (* Set char direction          *)
  118.   OCODE_GPSCD               = 7AH;  (* Push & set char direction   *)
  119.   OCODE_GSCR                = 39H;  (* Set char precision          *)
  120.   OCODE_GPSCR               = 79H;  (* Push & set char precision   *)
  121.   OCODE_GSCS                = 38H;  (* Set char set                *)
  122.   OCODE_GPSCS               = 78H;  (* Push & set char set         *)
  123.   OCODE_GSCOL               = 0AH;  (* Set color                   *)
  124.   OCODE_GPSCOL              = 4AH;  (* Push & set color            *)
  125.   OCODE_GSLE                = 1AH;  (* Set line end                *)
  126.   OCODE_GPSLE               = 5AH;  (* Push & set line end         *)
  127.   OCODE_GSLJ                = 1BH;  (* Set line join               *)
  128.   OCODE_GPSLJ               = 5BH;  (* Push & set line join        *)
  129.   OCODE_GSLT                = 18H;  (* Set line type               *)
  130.   OCODE_GPSLT               = 58H;  (* Push & set line type        *)
  131.   OCODE_GSLW                = 19H;  (* Set line width              *)
  132.   OCODE_GPSLW               = 59H;  (* Push & set line width       *)
  133.   OCODE_GSMP                = 3BH;  (* Set marker precision        *)
  134.   OCODE_GPSMP               = 7BH;  (* Push & set marker precision *)
  135.   OCODE_GSMS                = 3CH;  (* Set marker set              *)
  136.   OCODE_GPSMS               = 7CH;  (* Push & set marker set       *)
  137.   OCODE_GSMT                = 29H;  (* Set marker symbol           *)
  138.   OCODE_GPSMT               = 69H;  (* Push & set marker symbol    *)
  139.   OCODE_GSMX                = 0CH;  (* Set mix                     *)
  140.   OCODE_GPSMX               = 4CH;  (* Push & set mix              *)
  141.   OCODE_GSPS                = 08H;  (* Set pattern set             *)
  142.   OCODE_GPSPS               = 48H;  (* Push & set pattern set      *)
  143.   OCODE_GSPT                = 28H;  (* Set pattern symbol          *)
  144.   OCODE_GPSPT               = 09H;  (* Push & set pattern symbol   *)
  145.  
  146. CONST (* constants for 2-byte orders: Begin area *)
  147.   GBAR_RESERVED             = 080H;
  148.   GBAR_BOUNDARY             = 0C0H;
  149.   GBAR_NOBOUNDARY           = 080H;
  150.   GBAR_WINDING              = 0A0H;
  151.   GBAR_ALTERNATE            = 080H;
  152.  
  153. CONST (* constants for 2-byte orders: Set Character Precision *)
  154.   GSCR_PRECISION            = 0FH;
  155.  
  156. (***************************************************************************\
  157. *
  158. * Long orders
  159. *
  160. \***************************************************************************)
  161.  
  162. (* function to help determine whether an order code is a long order *)
  163.  
  164. CONST
  165.   OCODE_VLONG               = 0FEH;
  166.  
  167. PROCEDURE LONG_ORDER( oc:SYSTEM.BYTE ):BOOLEAN;
  168.  
  169. CONST
  170.   LORDER_ML                 = 253;
  171.  
  172. TYPE (* long order structure *)
  173.   LORDER                    = RECORD (* lord *)
  174.     CASE                      : TYPEPREFIX OF
  175.     | TRUE                    :
  176.       idCode                  : SHORTCARD;
  177.       uchLength               : SHORTCARD;
  178.       uchData                 : ARRAY [0..LORDER_ML-1] OF SHORTCARD;
  179.     | FALSE                   :
  180.       CodeId                  : SHORTCARD;
  181.       Length                  : SHORTCARD;
  182.       Data                    : ARRAY [0..LORDER_ML-1] OF SHORTCARD;
  183.     END;                      END;
  184.  
  185. CONST (* Long orders for which the length of data is normally zero  *)
  186.   OCODE_GEAR                = 60H;   (* End Area                    *)
  187.   OCODE_GEIMG               = 93H;   (* End Image                   *)
  188.  
  189.  
  190. (* Long orders for which the data is contained in a type already defined *)
  191.  
  192. CONST (* Character String *)
  193.   OCODE_GCCHST              = 83H;   (* char string at curr posn    *)
  194.   GCCHST_MC                 = 255;   (* Max len of string in bytes  *)
  195.   OCODE_GCHST               = 0C3H;  (* char string at given pos    *)
  196.   GCHST_SMC                 = 251;   (* Max len of string (S)       *)
  197.   GCHST_LMC                 = 247;   (* Max len of string (L)       *)
  198.  
  199. CONST (* Character String Move *)
  200.   OCODE_GCCHSTM             = 0B1H;  (* char string move at c.p.    *)
  201.   GCCHSTM_MC                = 255;   (* Max len of string in byte   *)
  202.   OCODE_GCHSTM              = 0F1H;  (* char string move at g.p.    *)
  203.   GCHSTM_SMC                = 251;   (* Max len of string (S)       *)
  204.   GCHSTM_LMC                = 247;   (* Max len of string (L)       *)
  205.  
  206. CONST (* Comment *)
  207.   OCODE_GCOMT               = 01H;   (* Comment                     *)
  208.   GCOMT_ML                  = 255;   (* Maximum len of comment data *)
  209.  
  210. CONST (* Image *)
  211.   OCODE_GIMD                = 92H;   (* Image data                  *)
  212.   GIMD_ML                   = 255;   (* Maximum len of image data   *)
  213.  
  214. CONST (* Full Arc *)
  215.   OCODE_GCFARC              = 087H;  (* full arc at current posn    *)
  216.   OCODE_GFARC               = 0C7H;  (* full arc at given posn      *)
  217.  
  218. CONST (* Label *)
  219.   OCODE_GLABL               = 0D3H;  (* Label                       *)
  220.  
  221. CONST (* Set Current Position *)
  222.   OCODE_GSCP                = 21H;   (* Set current position        *)
  223.   OCODE_GPSCP               = 61H;   (* Push and set curr posn      *)
  224.  
  225. CONST (* Bezier spline *)
  226.   OCODE_GCBEZ               = 0A5H;  (* Bezier spline at curr pos   *)
  227.   GCBEZ_SMB                 = 21;    (* Max number of splines (S)   *)
  228.   GCBEZ_LMB                 = 10;    (* Max number of splines (L)   *)
  229.   OCODE_GBEZ                = 0E5H;  (* Bezier spline at given pos  *)
  230.   GBEZ_SMB                  = 20;    (* Max number of splines (S)   *)
  231.   GBEZ_LMB                  = 10;    (* Max number of splines (L)   *)
  232.  
  233. CONST (* Fillet *)
  234.   OCODE_GCFLT               = 85H;   (* fillet at current posn      *)
  235.   GCFLT_SMP                 = 63;    (* Max number of points (S)    *)
  236.   GCFLT_LMP                 = 31;    (* Max number of points (L)    *)
  237.   OCODE_GFLT                = 0C5H;  (* fillet at given position    *)
  238.   GFLT_SMP                  = 62;    (* Max number of points (S)    *)
  239.   GFLT_LMP                  = 30;    (* Max number of points (L)    *)
  240.  
  241. CONST (* Polyline *)
  242.   OCODE_GCLINE              = 81H;   (* polyline at current posn    *)
  243.   GCLINE_SMP                = 63;    (* Max number of points (S)    *)
  244.   GCLINE_LMP                = 31;    (* Max number of points (L)    *)
  245.   OCODE_GLINE               = 0C1H;  (* polyline at given posn      *)
  246.   GLINE_SMP                 = 62;    (* Max number of points (S)    *)
  247.   GLINE_LMP                 = 30;    (* Max number of points (L)    *)
  248.  
  249. CONST (* Polymarker *)
  250.   OCODE_GCMRK               = 82H;   (* marker at current posn      *)
  251.   GCMRK_SMP                 = 63;    (* Max number of points (S)    *)
  252.   GCMRK_LMP                 = 31;    (* Max number of points (L)    *)
  253.   OCODE_GMRK                = 0C2H;  (* marker at given posn        *)
  254.   GMRK_SMP                  = 62;    (* Max number of points (S)    *)
  255.   GMRK_LMP                  = 30;    (* Max number of points (L)    *)
  256.  
  257. CONST (* Relative Line *)
  258.   OCODE_GCRLINE             = 0A1H;  (* Relative line at curr pos   *)
  259.   GCRLINE_MP                = 127;   (* Max number of points        *)
  260.   OCODE_GRLINE              = 0E1H;  (* Relative line at givn pos   *)
  261.   GRLINE_SMP                = 125;   (* Max number of points (S)    *)
  262.   GRLINE_LMP                = 123;   (* Max number of points (L)    *)
  263.  
  264. CONST (* Set Background Color *)
  265.   OCODE_GSBCOL              = 25H;   (* Set background color        *)
  266.   OCODE_GPSBCOL             = 65H;   (* Push and set b/g color      *)
  267.  
  268. CONST (* Set Extended Color *)
  269.   OCODE_GSECOL              = 26H;   (* Set extended color          *)
  270.   OCODE_GPSECOL             = 66H;   (* Push and set ext color      *)
  271.  
  272. CONST (* Extended Color values *)
  273.   SECOL_DEFAULT0            = 00000H;
  274.   SECOL_DEFAULT1            = 0FF00H;
  275.   SECOL_NEUTRAL             = 0FF07H;
  276.   SECOL_RESET               = 0FF08H;
  277.  
  278. CONST (* Set Character Angle *)
  279.   OCODE_GSCA                = 34H;   (* Set character angle         *)
  280.   OCODE_GPSCA               = 74H;   (* Push and set char angle     *)
  281.  
  282. CONST (* Set Character Shear *)
  283.   OCODE_GSCH                = 35H;   (* Set character shear         *)
  284.   OCODE_GPSCH               = 75H;   (* Push and set char shear     *)
  285.  
  286. CONST (* Set Fractional Line Width *)
  287.   OCODE_GSFLW               = 11H;   (* Set fractional line width   *)
  288.   OCODE_GPSFLW              = 51H;   (* Push and set frac l width   *)
  289.  
  290. CONST (* Set Pick Identifier *)
  291.   OCODE_GSPIK               = 43H;   (* Set pick identifier         *)
  292.   OCODE_GPSPIK              = 23H;   (* Push and set pick id        *)
  293.  
  294.  
  295. (* Long Orders for which a structure can be defined for the data *)
  296.  
  297. CONST (* Arc *)
  298.   OCODE_GCARC               = 086H;  (* Arc at Current Position     *)
  299.   OCODE_GARC                = 0C6H;  (* Arc at Given Position       *)
  300.  
  301. TYPE
  302.   ORDERS_GCARC              = RECORD (* osgcarc *)
  303.     CASE                      : TYPEPREFIX OF
  304.     | TRUE                    :
  305.       ptInter                 : POINTS;
  306.       ptEnd                   : POINTS;
  307.     | FALSE                   :
  308.       InterPoint              : POINTS;
  309.       EndPoint                : POINTS;
  310.     END;                      END;
  311.  
  312. TYPE
  313.   ORDERL_GCARC              = RECORD  (* olgcarc *)
  314.     CASE                      : TYPEPREFIX OF
  315.     | TRUE                    :
  316.       ptInter                 : POINTL;
  317.       ptEnd                   : POINTL;
  318.     | FALSE                   :
  319.       InterPoint              : POINTL;
  320.       EndPoint                : POINTL;
  321.     END;                      END;
  322.  
  323. CONST (* Begin Element *)
  324.   OCODE_GBEL                = 0D2H;  (* Begin Element               *)
  325.   GBEL_DL                   = 251;
  326.  
  327. TYPE (* Begin Element *)
  328.   ORDER_GBEL                = RECORD (* ogbel *)
  329.     CASE                      : TYPEPREFIX OF
  330.     | TRUE                    :
  331.       lElementType            : LONGINT;
  332.       achDesc                 : ARRAY [0..GBEL_DL] OF SHORTCARD;
  333.     | FALSE                   :
  334.       ElementType             : LONGINT;
  335.       Desc                    : ARRAY [0..GBEL_DL] OF SHORTCARD;
  336.     END;                      END;
  337.  
  338. CONST (* Begin Image *)
  339.   OCODE_GCBIMG              = 091H;  (* Begin Image at curr posn    *)
  340.   OCODE_GBIMG               = 0D1H;  (* Begin Image at given posn   *)
  341.  
  342. TYPE (* Begin Image *)
  343.   ORDER_GCBIMG              = RECORD (* ogbimg *)
  344.     CASE                      : TYPEPREFIX OF
  345.     | TRUE                    :
  346.       uchFormat               : SHORTCARD;
  347.       uchReserved             : SHORTCARD;
  348.       cx                      : SWPUSHORT;
  349.       cy                      : SWPUSHORT;
  350.     | FALSE                   :
  351.       Format                  : SHORTCARD;
  352.       Reserved                : SHORTCARD;
  353.       xSize                   : SWPUSHORT;
  354.       ySize                   : SWPUSHORT;
  355.     END;                      END;
  356.  
  357. CONST (* Begin Path *)
  358.   OCODE_GBPTH               = 0D0H;  (* Begin Path                  *)
  359.  
  360. TYPE (* Begin Path *)
  361.   ORDER_GBPTH               = RECORD (* ogbpth *)
  362.     CASE                      : TYPEPREFIX OF
  363.     | TRUE                    :
  364.       usReserved              : CARDINAL;
  365.       idPath                  : LONGINT;
  366.     | FALSE                   :
  367.       Reserved                : CARDINAL;
  368.       PathId                  : LONGINT;
  369.     END;                      END;
  370.  
  371. CONST (* Box *)
  372.   OCODE_GCBOX               = 080H;  (* Box at current position     *)
  373.   OCODE_GBOX                = 0C0H;  (* Box at given position       *)
  374.  
  375. TYPE  (* Box *)
  376.   ORDERS_GCBOX              = RECORD (* osgcbox *)
  377.     CASE                      : TYPEPREFIX OF
  378.     | TRUE                    :
  379.       fbFlags                 : SHORTCARD;
  380.       uchReserved             : SHORTCARD;
  381.       ptCorner                : POINTS;
  382.       hAxis                   : INTEGER;
  383.       vAxis                   : INTEGER;
  384.     | FALSE                   :
  385.       Flags                   : SHORTCARD;
  386.       Reserved                : SHORTCARD;
  387.       CornerPoint             : POINTS;
  388.       HorizonatlAxis          : INTEGER;
  389.       VerticalAxis            : INTEGER;
  390.     END;                      END;
  391.   ORDERL_GCBOX              = RECORD (* olgcbox *)
  392.     CASE                      : TYPEPREFIX OF
  393.     | TRUE                    :
  394.       fbFlags                 : SHORTCARD;
  395.       uchReserved             : SHORTCARD;
  396.       ptCorner                : POINTL;
  397.       hAxis                   : LONGINT;
  398.       vAxis                   : LONGINT;
  399.     | FALSE                   :
  400.       Flags                   : SHORTCARD;
  401.       Reserved                : SHORTCARD;
  402.       CornerPoint             : POINTL;
  403.       HorizontalAxis          : LONGINT;
  404.       VerticalAxis            : LONGINT;
  405.     END;                      END;
  406.  
  407. CONST (* Box *)
  408.   GCBOX_FILL                = 40H;
  409.   GCBOX_BOUNDARY            = 20H;
  410.  
  411. CONST (* Call Segment *)
  412.   OCODE_GCALLS              = 07H;   (* call segment                *)
  413.  
  414. TYPE  (* Call Segment *)
  415.   ORDER_GCALLS              = RECORD (* ogcalls *)
  416.     CASE                      : TYPEPREFIX OF
  417.     | TRUE                    :
  418.       sReserved               : CARDINAL;
  419.       idSegment               : LONGINT;
  420.     | FALSE                   :
  421.       Reserved                : CARDINAL;
  422.       SegmentId               : LONGINT;
  423.     END;                      END;
  424.  
  425. CONST (* Fill Path *)
  426.   OCODE_GFPTH               = 0D7H;  (* Fill path                   *)
  427.  
  428. TYPE  (* Fill Path *)
  429.   ORDER_GFPTH               = RECORD (* ogfpth *)
  430.     CASE                      : TYPEPREFIX OF
  431.     | TRUE                    :
  432.       fbFlags                 : SHORTCARD;
  433.       uchReserved             : SHORTCARD;
  434.       idPath                  : LONGINT;
  435.     | FALSE                   :
  436.       Flags                   : SHORTCARD;
  437.       Reserved                : SHORTCARD;
  438.       PathId                  : LONGINT;
  439.     END;                      END;
  440.  
  441. CONST (* Fill Path *)
  442.   GFPTH_ALTERNATE           = 00H;
  443.   GFPTH_WINDING             = 40H;
  444.   GFPTH_MODIFY              = 20H;
  445.  
  446. CONST (* Outline Path *)
  447.   OCODE_GOPTH               = 0D4H;  (* Outline Path                *)
  448.  
  449. TYPE  (* Outline Path *)
  450.   ORDER_GOPTH               = RECORD (* ogopth *)
  451.     CASE                      : TYPEPREFIX OF
  452.     | TRUE                    :
  453.       fbFlags                 : SHORTCARD;
  454.       uchReserved             : SHORTCARD;
  455.       idPath                  : LONGINT;
  456.     | FALSE                   :
  457.       Flags                   : SHORTCARD;
  458.       Reserved                : SHORTCARD;
  459.       PathId                  : LONGINT;
  460.     END;                      END;
  461.  
  462. CONST (* Modify Path *)
  463.   OCODE_GMPTH               = 0D8H;  (* modify path                 *)
  464.  
  465. TYPE  (* Modify Path *)
  466.   ORDER_GMPTH               = RECORD (* ogmpth *)
  467.     CASE                      : TYPEPREFIX OF
  468.     | TRUE                    :
  469.       uchMode                 : SHORTCARD;
  470.       uchReserved             : SHORTCARD;
  471.       idPath                  : LONGINT;
  472.     | FALSE                   :
  473.       Mode                    : SHORTCARD;
  474.       Reserved                : SHORTCARD;
  475.       PathId                  : LONGINT;
  476.     END;                      END;
  477.  
  478. CONST (* Modify Path *)
  479.   GMPTH_STROKE              = 06H;
  480.  
  481. CONST (* Partial Arc *)
  482.   OCODE_GCPARC              = 0A3H;  (* Partial arc at curr posn    *)
  483.   OCODE_GPARC               = 0E3H;  (* Partial arc at given posn   *)
  484.  
  485. TYPE  (* Partial Arc *)
  486.   ORDERS_GCPARC             = RECORD (* osgcparc *)
  487.     CASE                      : TYPEPREFIX OF
  488.     | TRUE                    :
  489.       ptCenter                : POINTS;
  490.       ufx88Multiplier         : FIXED88;
  491.       usStartAngle            : LONGINT;
  492.       usSweepAngle            : LONGINT;
  493.     | FALSE                   :
  494.       CenterPoint             : POINTS;
  495.       Multiplier              : FIXED88;
  496.       StartAngle              : LONGINT;
  497.       SweepAngle              : LONGINT;
  498.     END;                      END;
  499.   ORDERL_GCPARC             = RECORD (* olgcparc *)
  500.     CASE                      : TYPEPREFIX OF
  501.     | TRUE                    :
  502.       ptCenter                : POINTL;
  503.       ufxMultiplier           : FIXED;
  504.       usStartAngle            : LONGINT;
  505.       usSweepAngle            : LONGINT;
  506.     | FALSE                   :
  507.       CenterPoint             : POINTL;
  508.       Multiplier              : FIXED;
  509.       StartAngle              : LONGINT;
  510.       SweepAngle              : LONGINT;
  511.     END;                      END;
  512.  
  513. CONST (* Set Clip Path *)
  514.   OCODE_GSCPTH              = 0B4H;  (* Set clip path               *)
  515.  
  516. TYPE  (* Set Clip Path *)
  517.   ORDER_GSCPTH              = RECORD (* ogscpth *)
  518.     CASE                      : TYPEPREFIX OF
  519.     | TRUE                    :
  520.       fbFlags                 : SHORTCARD;
  521.       uchReserved             : SHORTCARD;
  522.       idPath                  : LONGINT;
  523.     | FALSE                   :
  524.       Flags                   : SHORTCARD;
  525.       Reserved                : SHORTCARD;
  526.       PathId                  : LONGINT;
  527.     END;                      END;
  528.  
  529. CONST (* Set Clip Path *)
  530.   GSCPTH_ALTERNATE          = 00H;
  531.   GSCPTH_WINDING            = 40H;
  532.   GSCPTH_RESET              = 00H;
  533.   GSCPTH_INTERSECT          = 20H;
  534.  
  535. CONST (* Set Arc Parameters *)
  536.   OCODE_GSAP                = 22H;   (* Set arc parameters          *)
  537.   OCODE_GPSAP               = 62H;   (* Push and set arc params     *)
  538.  
  539. TYPE  (* Set Arc Parameters *)
  540.   ORDERS_GSAP               = RECORD (* osgsap *)
  541.     p                         : INTEGER;
  542.     q                         : INTEGER;
  543.     r                         : INTEGER;
  544.     s                         : INTEGER;
  545.                               END;
  546.   ORDERL_GSAP               = RECORD (* olgsap *)
  547.     p                         : LONGINT;
  548.     q                         : LONGINT;
  549.     r                         : LONGINT;
  550.     s                         : LONGINT;
  551.                               END;
  552.  
  553. CONST (* Set Background Indexed Color *)
  554.   OCODE_GSBICOL             = 0A7H;  (* Set b/g indexed color       *)
  555.   OCODE_GPSBICOL            = 0E7H;  (* Push and set b/g ind color  *)
  556.   OCODE_GSICOL              = 0A6H;  (* Set indexed color           *)
  557.   OCODE_GPSICOL             = 0E6H;  (* Push and set indexd color   *)
  558.  
  559. TYPE  (* Set Background Indexed Color *)
  560.   ORDER_GSBICOL             = RECORD (* ogbicol *)
  561.     CASE                      : TYPEPREFIX OF
  562.     | TRUE                    :
  563.       fbFlags                 : SHORTCARD;
  564.       auchColor               : ARRAY [0..2] OF SHORTCARD;
  565.     | FALSE                   :
  566.       Flags                   : SHORTCARD;
  567.       Color                   : ARRAY [0..2] OF SHORTCARD;
  568.     END;                      END;
  569.  
  570. CONST (* Set Background Indexed Color *)
  571.   SICOL_SPECIFY             = 00H;
  572.   SICOL_SPECIAL             = 40H;
  573.   SICOL_DEFAULT             = 80H;
  574.   SICOL_BLACK               = 1;
  575.   SICOL_WHITE               = 2;
  576.   SICOL_ONES                = 4;
  577.   SICOL_ZEROES              = 5;
  578.  
  579. CONST (* Set Character Cell *)
  580.   OCODE_GSCC                = 33H;   (* Set character cell          *)
  581.   OCODE_GPSCC               = 03H;   (* Push and set char cell      *)
  582.  
  583. TYPE  (* Set Character Cell *)
  584.   ORDERS_GSCC               = RECORD (* osgscc *)
  585.     CASE                      : TYPEPREFIX OF
  586.     | TRUE                    :
  587.       cxInt                   : INTEGER;
  588.       cyInt                   : INTEGER;
  589.       cxFract                 : CARDINAL;
  590.       cyFract                 : CARDINAL;
  591.       fbFlags                 : SHORTCARD;
  592.       uchReserved             : SHORTCARD;
  593.     | FALSE                   :
  594.       xIntSize                : INTEGER;
  595.       yIntSize                : INTEGER;
  596.       xFractSize              : CARDINAL;
  597.       yFractSize              : CARDINAL;
  598.       Flags                   : SHORTCARD;
  599.       Reserved                : SHORTCARD;
  600.     END;                      END;
  601.   ORDERL_GSCC               = RECORD (* olgscc *)
  602.     CASE                      : TYPEPREFIX OF
  603.     | TRUE                    :
  604.       cxInt                   : LONGINT;
  605.       cyInt                   : LONGINT;
  606.       cxFract                 : CARDINAL;
  607.       cyFract                 : CARDINAL;
  608.       fbFlags                 : SHORTCARD;
  609.       uchReserved             : SHORTCARD;
  610.     | FALSE                   :
  611.       xIntSize                : LONGINT;
  612.       yIntSize                : LONGINT;
  613.       xFractSize              : CARDINAL;
  614.       yFractSize              : CARDINAL;
  615.       Flags                   : SHORTCARD;
  616.       Reserved                : SHORTCARD;
  617.     END;                      END;
  618.  
  619. CONST (* Set Character Cell *)
  620.   GSCC_ZERODEF              = 00H;
  621.   GSCC_ZEROZERO             = 80H;
  622.  
  623. CONST (* Set Marker Cell *)
  624.   OCODE_GSMC                = 37H;   (* Set marker cell             *)
  625.   OCODE_GPSMC               = 77H;   (* Push and set marker cell    *)
  626.  
  627. TYPE  (* Set Marker Cell *)
  628.   ORDERS_GSMC               = RECORD (* osgsmc *)
  629.     CASE                      : TYPEPREFIX OF
  630.     | TRUE                    :
  631.       cx                      : INTEGER;
  632.       cy                      : INTEGER;
  633.       fbFlags                 : SHORTCARD;
  634.       uchReserved             : SHORTCARD;
  635.     | FALSE                   :
  636.       xSize                   : INTEGER;
  637.       ySize                   : INTEGER;
  638.       Flags                   : SHORTCARD;
  639.       Reserved                : SHORTCARD;
  640.     END;                      END;
  641.   ORDERL_GSMC               = RECORD (* olgsmc *)
  642.     CASE                      : TYPEPREFIX OF
  643.     | TRUE                    :
  644.       cx                      : LONGINT;
  645.       cy                      : LONGINT;
  646.       fbFlags                 : SHORTCARD;
  647.       uchReserved             : SHORTCARD;
  648.     | FALSE                   :
  649.       xSize                   : LONGINT;
  650.       ySize                   : LONGINT;
  651.       Flags                   : SHORTCARD;
  652.       Reserved                : SHORTCARD;
  653.     END;                      END;
  654.  
  655. CONST (* Set Marker Cell *)
  656.   GSMC_ZERODEF              = 00H;
  657.   GSMC_ZEROZERO             = 80H;
  658.  
  659. CONST (* Set Pattern Reference Point *)
  660.   OCODE_GSPRP               = 0A0H;  (* Set pattern ref point       *)
  661.   OCODE_GPSPRP              = 0E0H;  (* Push and set patt ref pt    *)
  662.  
  663. TYPE  (* Set Pattern Reference Point *)
  664.   ORDERS_GSPRP              = RECORD (* osgsprp *)
  665.     CASE                      : TYPEPREFIX OF
  666.     | TRUE                    :
  667.       fbFlags                 : SHORTCARD;
  668.       uchReserved             : SHORTCARD;
  669.       ptPos                   : POINTS;
  670.     | FALSE                   :
  671.       Flags                   : SHORTCARD;
  672.       Reserved                : SHORTCARD;
  673.       Pos                     : POINTS;
  674.     END;                      END;
  675.   ORDERL_GSPRP              = RECORD (* olgsprp *)
  676.     CASE                      : TYPEPREFIX OF
  677.     | TRUE                    :
  678.       fbFlags                 : SHORTCARD;
  679.       uchReserved             : SHORTCARD;
  680.       ptPos                   : POINTL;
  681.     | FALSE                   :
  682.       Flags                   : SHORTCARD;
  683.       Reserved                : SHORTCARD;
  684.       Pos                     : POINTL;
  685.     END;                      END;
  686.  
  687. CONST (* Set Pattern Reference Point *)
  688.   GSPRP_DEFAULT             = 80H;
  689.   GSPRP_SPECIFY             = 00H;
  690.  
  691. CONST (* Set Individual Attribute *)
  692.   OCODE_GSIA                = 14H;   (* Set individual attribute    *)
  693.   OCODE_GPSIA               = 54H;   (* Push and set ind attr       *)
  694.   GSIA_VL                   = 3;
  695.  
  696. TYPE  (* Set Individual Attribute *)
  697.   ORDER_GSIA                = RECORD (* ogsia *)
  698.     CASE                      : TYPEPREFIX OF
  699.     | TRUE                    :
  700.       uchAttrType             : SHORTCARD;
  701.       uchPrimType             : SHORTCARD;
  702.       fbFlags                 : SHORTCARD;
  703.       auchValue               : ARRAY [0..GSIA_VL-1] OF SHORTCARD;
  704.     | FALSE                   :
  705.       AttrType                : SHORTCARD;
  706.       PrimType                : SHORTCARD;
  707.       Flags                   : SHORTCARD;
  708.       Value                   : ARRAY [0..GSIA_VL-1] OF SHORTCARD;
  709.     END;                      END;
  710.  
  711. CONST (* Set Individual Attribute *)
  712.   GSIA_COLOR                = 01H;
  713.   GSIA_BCOLOR               = 02H;
  714.   GSIA_MIX                  = 03H;
  715.   GSIA_BMIX                 = 04H;
  716.   GSIA_LINE                 = 01H;
  717.   GSIA_CHAR                 = 02H;
  718.   GSIA_MARKER               = 03H;
  719.   GSIA_PATTERN              = 04H;
  720.   GSIA_IMAGE                = 05H;
  721.   GSIA_SPECIFY              = 00H;
  722.   GSIA_SPECIAL              = 40H;
  723.   GSIA_DEFAULT              = 80H;
  724.   GSIA_BLACK                = 1;
  725.   GSIA_WHITE                = 2;
  726.   GSIA_ONES                 = 4;
  727.   GSIA_ZEROES               = 5;
  728.  
  729. CONST (* Set Model /Viewing Transform *)
  730.   OCODE_GSTM                = 24H;   (* Set model transform         *)
  731.   OCODE_GPSTM               = 64H;   (* Push and set model tfm      *)
  732.   OCODE_GSTV                = 31H;   (* Set Viewing Transform       *)
  733.   GSTM_ML                   = 16;
  734.  
  735. TYPE (* Set Model /Viewing Transform *)
  736.   ORDERS_GSTM               = RECORD (* osgstm *)
  737.     CASE                      : TYPEPREFIX OF
  738.     | TRUE                    :
  739.       uchReserved             : SHORTCARD;
  740.       fbFlags                 : SHORTCARD;
  741.       fsMask                  : CARDINAL;
  742.       asMatrix                : ARRAY [0..GSTM_ML-1] OF INTEGER;
  743.     | FALSE                   :
  744.       Reserved                : SHORTCARD;
  745.       Flags                   : SHORTCARD;
  746.       Mask                    : CARDINAL;
  747.       Matrix                  : ARRAY [0..GSTM_ML-1] OF INTEGER;
  748.     END;                      END;
  749.   ORDERL_GSTM               = RECORD (* olgstm *)
  750.     CASE                      : TYPEPREFIX OF
  751.     | TRUE                    :
  752.       uchReserved             : SHORTCARD;
  753.       fbFlags                 : SHORTCARD;
  754.       fsMask                  : SHORTCARD;
  755.       alMatrix                : ARRAY [0..GSTM_ML-1] OF LONGINT;
  756.     | FALSE                   :
  757.       Reserved                : SHORTCARD;
  758.       Flags                   : SHORTCARD;
  759.       Mask                    : SHORTCARD;
  760.       Matrix                  : ARRAY [0..GSTM_ML-1] OF LONGINT;
  761.     END;                      END;
  762.  
  763. CONST (* Set Model /Viewing Transform *)
  764.   GSTM_M11                  = 8000H;
  765.   GSTM_M12                  = 4000H;
  766.   GSTM_M13                  = 2000H;
  767.   GSTM_M14                  = 1000H;
  768.   GSTM_M21                  = 0800H;
  769.   GSTM_M22                  = 0400H;
  770.   GSTM_M23                  = 0200H;
  771.   GSTM_M24                  = 0100H;
  772.   GSTM_M31                  = 0080H;
  773.   GSTM_M32                  = 0040H;
  774.   GSTM_M33                  = 0020H;
  775.   GSTM_M34                  = 0010H;
  776.   GSTM_M41                  = 0008H;
  777.   GSTM_M42                  = 0004H;
  778.   GSTM_M43                  = 0002H;
  779.   GSTM_M44                  = 0001H;
  780.   GSTM_UNITY                = 00H;
  781.   GSTM_AFTER                = 01H;
  782.   GSTM_BEFORE               = 02H;
  783.   GSTM_OVERWRITE            = 03H;
  784.   GSTV_OVERWRITE            = 00H;
  785.   GSTV_AFTER                = 04H;
  786.  
  787. CONST (* Set Segment Boundary, Viewing Window *)
  788.   OCODE_GSSB                = 32H;   (* Set segment boundary        *)
  789.   OCODE_GSVW                = 27H;   (* Set viewing window          *)
  790.   OCODE_GPSVW               = 67H;   (* Push and set view window    *)
  791.   GSSB_ML                   = 4;
  792.  
  793. TYPE  (* Set Segment Boundary, Viewing Window *)
  794.   ORDERS_GSSB               = RECORD (* osgssb *)
  795.     CASE                      : TYPEPREFIX OF
  796.     | TRUE                    :
  797.       fbFlags                 : SHORTCARD;
  798.       fbMask                  : SHORTCARD;
  799.       alMatrix                : ARRAY [0..GSSB_ML-1] OF INTEGER;
  800.     | FALSE                   :
  801.       Flags                   : SHORTCARD;
  802.       Mask                    : SHORTCARD;
  803.       Matrix                  : ARRAY [0..GSSB_ML-1] OF INTEGER;
  804.     END;                      END;
  805.   ORDERL_GSSB               = RECORD (* olgssb *)
  806.     CASE                      : TYPEPREFIX OF
  807.     | TRUE                    :
  808.       fbFLags                 : SHORTCARD;
  809.       fbMask                  : SHORTCARD;
  810.       alMatrix                : ARRAY [0..GSSB_ML-1] OF LONGINT;
  811.     | FALSE                   :
  812.       FLags                   : SHORTCARD;
  813.       Mask                    : SHORTCARD;
  814.       Matrix                  : ARRAY [0..GSSB_ML-1] OF LONGINT;
  815.     END;                      END;
  816.  
  817. CONST (* Set Segment Boundary, Viewing Window *)
  818.   GSSB_XLEFT                = 20H;
  819.   GSSB_XRIGHT               = 10H;
  820.   GSSB_YBOTTOM              = 08H;
  821.   GSSB_YTOP                 = 04H;
  822.   GSVW_INTERSECT            = 00H;
  823.   GSVW_REPLACE              = 80H;
  824.  
  825. CONST (* Set Segment Characteristics *)
  826.   OCODE_GSGCH               = 04H;   (* Set segment characteristics *)
  827.   GSGCH_ML                  = 254;
  828.  
  829. TYPE  (* Set Segment Characteristics *)
  830.   ORDER_GSGCH               = RECORD (* ogsgch *)
  831.     CASE                      : TYPEPREFIX OF
  832.     | TRUE                    :
  833.        uchIdent               : SHORTCARD;
  834.        auchData               : ARRAY [0..GSGCH_ML-1] OF SHORTCARD;
  835.     | FALSE                   :
  836.        Ident                  : SHORTCARD;
  837.        Data                   : ARRAY [0..GSGCH_ML-1] OF SHORTCARD;
  838.     END;                      END;
  839.  
  840. CONST (* Set Stroke Line Width *)
  841.   OCODE_GSSLW               = 15H;   (* Set stroke line width       *)
  842.   OCODE_GPSSLW              = 55H;   (* Push and set strk l width   *)
  843.  
  844. TYPE  (* Set Stroke Line Width *)
  845.   ORDERS_GSSLW              = RECORD (* osgsslw *)
  846.     CASE                      : TYPEPREFIX OF
  847.     | TRUE                    :
  848.       fbFlags                 : SHORTCARD;
  849.       uchReserved             : SHORTCARD;
  850.     | FALSE                   :
  851.       Flags                   : SHORTCARD;
  852.       Reserved                : SHORTCARD;
  853.     END;
  854.     LineWidth                 : INTEGER;
  855.                               END;
  856.   ORDERL_GSSLW              = RECORD (* olgsslw *)
  857.     CASE                      : TYPEPREFIX OF
  858.     | TRUE                    :
  859.       fbFlags                 : SHORTCARD;
  860.       uchReserved             : SHORTCARD;
  861.     | FALSE                   :
  862.       Flags                   : SHORTCARD;
  863.       Reserved                : SHORTCARD;
  864.     END;
  865.     LineWidth                 : LONGINT;
  866.                               END;
  867.  
  868. CONST (* Set Stroke Line Width *)
  869.   GSSLW_DEFAULT             = 80H;
  870.   GSSLW_SPECIFY             = 00H;
  871.  
  872. CONST (* Sharp Fillet at Current Position *)
  873.   OCODE_GCSFLT              = 0A4H;  (* Sharp fillet at curr pos    *)
  874.   OCODE_GSFLT               = 0E4H;  (* Sharp fillet at given pos   *)
  875.   GCSFLT_SMF                = 21;
  876.   GSFLT_SMF                 = 20;
  877.  
  878. TYPE  (* Sharp Fillet at Current Position *)
  879.   ORDERS_GCSFLT             = RECORD (* osgcsflt *)
  880.     CASE                      : TYPEPREFIX OF
  881.     | TRUE                    :
  882.       apt                     : ARRAY [0..2*GCSFLT_SMF-1] OF POINTS;
  883.       afxSharpness            : ARRAY [0..GCSFLT_SMF-1] OF FIXED;
  884.     | FALSE                   :
  885.       Point                   : ARRAY [0..2*GCSFLT_SMF-1] OF POINTS;
  886.       Sharpness               : ARRAY [0..GCSFLT_SMF-1] OF FIXED;
  887.     END;                      END;
  888.  
  889. CONST (* Sharp Fillet at Current Position *)
  890.   GCSFLT_LMF                = 12;
  891.   GSFLT_LMF                 = 12;
  892.  
  893. TYPE  (* Sharp Fillet at Current Position *)
  894.   ORDERL_GCSFLT             = RECORD (* olgcsflt *)
  895.     CASE                      : TYPEPREFIX OF
  896.     | TRUE                    :
  897.       apt                     : ARRAY [0..2*GCSFLT_SMF-1] OF POINTL;
  898.       afxSharpness            : ARRAY [0..GCSFLT_SMF-1] OF FIXED;
  899.     | FALSE                   :
  900.       Point                   : ARRAY [0..2*GCSFLT_SMF-1] OF POINTL;
  901.       Sharpness               : ARRAY [0..GCSFLT_SMF-1] OF FIXED;
  902.     END;                      END;
  903.  
  904. CONST (* Bitblt *)
  905.   OCODE_GBBLT               = 0D6H;  (* Bitblt                      *)
  906.  
  907. TYPE  (* Bitblt *)
  908.   ORDERS_GBBLT              = RECORD (* osgbblt *)
  909.     CASE                      : TYPEPREFIX OF
  910.     | TRUE                    :
  911.       fsFlags                 : CARDINAL;
  912.       usMix                   : CARDINAL;
  913.       hbmSrc                  : HBITMAP;
  914.       lOptions                : LONGINT;
  915.       rcsTargetRect           : RECT1S;
  916.       rclSourceRect           : RECTL;
  917.     | FALSE                   :
  918.       Flags                   : CARDINAL;
  919.       Mix                     : CARDINAL;
  920.       SourceBitMapHandle      : HBITMAP;
  921.       Options                 : LONGINT;
  922.       TargetRect              : RECT1S;
  923.       SourceRect              : RECTL;
  924.     END;                      END;
  925.   ORDERL_GBBLT              = RECORD (* olgbblt *)
  926.     CASE                      : TYPEPREFIX OF
  927.     | TRUE                    :
  928.       fsFlags                 : CARDINAL;
  929.       usMix                   : CARDINAL;
  930.       hbmSrc                  : HBITMAP;
  931.       lOptions                : LONGINT;
  932.       rclTargetRect           : RECTL;
  933.       rclSourceRect           : RECTL;
  934.     | FALSE                   :
  935.       Flags                   : CARDINAL;
  936.       Mix                     : CARDINAL;
  937.       SourceBitMapHandle      : HBITMAP;
  938.       Options                 : LONGINT;
  939.       TargetRect              : RECTL;
  940.       SourceRect              : RECTL;
  941.     END;                      END;
  942.  
  943. CONST (* Char & break extra *)
  944.   OCODE_GSCE                = 17H;   (* Set char extra                *)
  945.   OCODE_GPSCE               = 57H;   (* Push and set char extra       *)
  946.   OCODE_GSCBE               = 05H;   (* Set char break extra          *)
  947.   OCODE_GPSCBE              = 45H;   (* Push and set char break extra *)
  948.  
  949. TYPE  (* Char & break extra *)
  950.   ORDER_GSCBE               = RECORD (* osgsce *)
  951.     CASE                      : TYPEPREFIX OF
  952.     | TRUE                    :
  953.       fbFlags                 : SHORTCARD;
  954.       uchReserved             : SHORTCARD;
  955.       ufxextra                : FIXED;
  956.     | FALSE                   :
  957.       Flags                   : SHORTCARD;
  958.       Reserved                : SHORTCARD;
  959.       Extra                   : FIXED;
  960.     END;                      END;
  961.   ORDER_GSCE                = ORDER_GSCBE;
  962.   ORDER_GPSCE               = ORDER_GSCBE;
  963.   ORDER_GPSCBE              = ORDER_GSCBE;
  964.  
  965. CONST (* Escape *)
  966.   OCODE_GESCP               = 0D5H;  (* Escape                      *)
  967.   GESCP_ML                  = 253;
  968.  
  969. TYPE
  970.   (* type describes type of escape order, identifier gives the escape *)
  971.   (* order if the type is registered                                  *)
  972.   ORDER_GESCP               = RECORD (* ogescp *)
  973.     CASE                      : TYPEPREFIX OF
  974.     | TRUE                    :
  975.       uchType                 : SHORTCARD;
  976.       uchIdent                : SHORTCARD;
  977.       auchData                : ARRAY [0..GESCP_ML-1] OF SHORTCARD;
  978.     | FALSE                   :
  979.       Type                    : SHORTCARD;
  980.       Ident                   : SHORTCARD;
  981.       Data                    : ARRAY [0..GESCP_ML-1] OF SHORTCARD;
  982.     END;                      END;
  983.  
  984. CONST (* Escape *)
  985.   GESCP_REG                 = 80H;   (* identifier is registered    *)
  986.  
  987. CONST (* Escape (Bitblt) *)
  988.   GEBB_REGID                = 02H;   (* uchIdent - Bitblt           *)
  989.   ETYPE_GEBB                = 800200D5H;
  990.   GEBB_LMP                  = 29;
  991.  
  992. TYPE  (* Escape (Bitblt) *)
  993.   ORDERL_GEBB               = RECORD (* olgebb *)
  994.     CASE                      : TYPEPREFIX OF
  995.     | TRUE                    :
  996.       fbFlags                 : SHORTCARD;
  997.       usMix                   : CARDINAL;
  998.       cPoints                 : SHORTCARD;
  999.       hbmSrc                  : HBITMAP;
  1000.       lReserved               : LONGINT;
  1001.       lOptions                : LONGINT;
  1002.       aptPoints               : ARRAY [0..GEBB_LMP-1] OF POINTL;
  1003.     | FALSE                   :
  1004.       Flags                   : SHORTCARD;
  1005.       Mix                     : CARDINAL;
  1006.       PointCount              : SHORTCARD;
  1007.       SourceBitMapHandle      : HBITMAP;
  1008.       Reserved                : LONGINT;
  1009.       Options                 : LONGINT;
  1010.       Points                  : ARRAY [0..GEBB_LMP-1] OF POINTL;
  1011.     END;                      END;
  1012.  
  1013. CONST (* Escape (Set Pel) *)
  1014.   GEPEL_REGID               = 01H;   (* uchIdent - Set Pel          *)
  1015.   ETYPE_GEPEL               = 800100D5H;
  1016.  
  1017. CONST (* Escape (DrawBits) *)
  1018.   GEDB_REGID                = 04H;   (* uchIdent - DrawBits *)
  1019.   ETYPE_GEDB                = 800400D5H;
  1020.  
  1021. TYPE  (* Escape (DrawBits) *)
  1022.   ORDERL_GEDB               = RECORD (* olgedb *)
  1023.     CASE                      : TYPEPREFIX OF
  1024.     | TRUE                    :
  1025.       fsFlags                 : CARDINAL;
  1026.       usMix                   : CARDINAL;
  1027.       pBits                   : SYSTEM.ADDRESS;
  1028.       pbmi                    : PBITMAPINFO2;
  1029.       lOptions                : LONGINT;
  1030.       rclTargetRect           : RECTL;
  1031.       rclSourceRect           : RECTL;
  1032.     | FALSE                   :
  1033.       Flags                   : CARDINAL;
  1034.       Mix                     : CARDINAL;
  1035.       Bits                    : SYSTEM.ADDRESS;
  1036.       BitMapInfo              : PBITMAPINFO2;
  1037.       Options                 : LONGINT;
  1038.       TargetRect              : RECTL;
  1039.       SourceRect              : RECTL;
  1040.     END;                      END;
  1041.  
  1042. CONST (* Escape (FloodFill) *)
  1043.   GEFF_REGID                = 03H;   (* uchIdent - FloodFill *)
  1044.   ETYPE_GEFF                = 800300D5H;
  1045.  
  1046. TYPE  (* Escape (FloodFill) *)
  1047.   ORDERL_GEFF               = RECORD (* olgeff *)
  1048.     CASE                      : TYPEPREFIX OF
  1049.     | TRUE                    :
  1050.       fsFlags                 : SHORTCARD;
  1051.       auchColor               : ARRAY [0..2] OF SHORTCARD;
  1052.     | FALSE                   :
  1053.       Flags                   : SHORTCARD;
  1054.       Color                   : ARRAY [0..2] OF SHORTCARD;
  1055.     END;                      END;
  1056.  
  1057. CONST (* Element Types for attribute bundles *)
  1058.   ETYPE_LINEBUNDLE          = 0000FD01H;
  1059.   ETYPE_CHARBUNDLE          = 0000FD02H;
  1060.   ETYPE_MARKERBUNDLE        = 0000FD03H;
  1061.   ETYPE_AREABUNDLE          = 0000FD04H;
  1062.   ETYPE_IMAGEBUNDLE         = 0000FD05H;
  1063.  
  1064.  
  1065. (***************************************************************************\
  1066. *
  1067. * Very long orders
  1068. *
  1069. \***************************************************************************)
  1070.  
  1071. (* function to tell whether this is a very long order *)
  1072. PROCEDURE VLONG_ORDER( oc:SYSTEM.BYTE ):BOOLEAN;
  1073.  
  1074. CONST (* Very long order structure *)
  1075.   VORDER_ML                 = 65531;
  1076.  
  1077. TYPE  (* Very long order structure *)
  1078.   VORDER                    = RECORD (* vord *)
  1079.     CASE                      : TYPEPREFIX OF
  1080.     | TRUE                    :
  1081.       idCode                  : SHORTCARD;
  1082.       uchQualifier            : SHORTCARD;
  1083.       uchLength               : SWPUSHORT;
  1084.       uchData                 : ARRAY [0..VORDER_ML-1] OF SHORTCARD;
  1085.     | FALSE                   :
  1086.       CodeId                  : SHORTCARD;
  1087.       Qualifier               : SHORTCARD;
  1088.       Length                  : SWPUSHORT;
  1089.       Data                    : ARRAY [0..VORDER_ML-1] OF SHORTCARD;
  1090.     END;                      END;
  1091.  
  1092. CONST (* Character String Extended *)
  1093.   OCODEQ_GCCHSTE            = 0B0H;  (* Qualifier - current posn    *)
  1094.   OCODEQ_GCHSTE             = 0F0H;  (* Qualifier - given position  *)
  1095.   ETYPE_GCCHSTE             = 0000FEB0H;
  1096.   ETYPE_GCHSTE              = 0000FEF0H;
  1097.  
  1098. TYPE  (* Character String Extended *)
  1099.   ORDERS_GCCHSTE            = RECORD (* osgcchste *)
  1100.     CASE                      : TYPEPREFIX OF
  1101.     | TRUE                    :
  1102.       fbFlags                 : SHORTCARD;
  1103.       uchReserved             : SHORTCARD;
  1104.       ptRect                  : ARRAY [0..1] OF POINTS;
  1105.       cchString               : SWPUSHORT;
  1106.       achString               : ARRAY [0..0] OF CHAR;
  1107.       adx                     : ARRAY [0..0] OF INTEGER;
  1108.     | FALSE                   :
  1109.       Flags                   : SHORTCARD;
  1110.       Reserved                : SHORTCARD;
  1111.       Rect                    : ARRAY [0..1] OF POINTS;
  1112.       StringSize              : SWPUSHORT;
  1113.       String                  : ARRAY [0..0] OF CHAR;
  1114.       dx                      : ARRAY [0..0] OF INTEGER;
  1115.     END;                      END;
  1116.   ORDERL_GCCHSTE            = RECORD (* olgcchste *)
  1117.     CASE                      : TYPEPREFIX OF
  1118.     | TRUE                    :
  1119.       fbFlags                 : SHORTCARD;
  1120.       uchReserved             : SHORTCARD;
  1121.       ptRect                  : ARRAY [0..1] OF POINTL;
  1122.       cchString               : SWPUSHORT;
  1123.       achString               : ARRAY [0..0] OF CHAR;
  1124.       adx                     : ARRAY [0..0] OF LONGINT;
  1125.     | FALSE                   :
  1126.       Flags                   : SHORTCARD;
  1127.       Reserved                : SHORTCARD;
  1128.       Rect                    : ARRAY [0..1] OF POINTL;
  1129.       StringSize              : SWPUSHORT;
  1130.       String                  : ARRAY [0..0] OF CHAR;
  1131.       dx                      : ARRAY [0..0] OF LONGINT;
  1132.     END;                      END;
  1133.  
  1134. CONST (* Character String Extended *)
  1135.   GCCHSTE_DRAWRECT          = 80H;
  1136.   GCCHSTE_NORECT            = 00H;
  1137.   GCCHSTE_CLIP              = 40H;
  1138.   GCCHSTE_NOCLIP            = 00H;
  1139.   GCCHSTE_DEEMPHASIZE       = 20H;   (* Reserved *)
  1140.   GCCHSTE_NODEEMPHASIZE     = 00H;
  1141.   GCCHSTE_LEAVEPOS          = 10H;
  1142.   GCCHSTE_MOVEPOS           = 00H;
  1143.   GCCHSTE_UNDERSCORE        = 08H;
  1144.   GCCHSTE_NOUNDERSCORE      = 00H;
  1145.   GCCHSTE_STRIKEOUT         = 04H;
  1146.   GCCHSTE_NOSTRIKEOUT       = 00H;
  1147.  
  1148. CONST (* Extended Escape *)
  1149.   OCODEQ_GEESCP             = 0D5H;  (* Qualifier - extended escape *)
  1150.   GEESCP_ML                 = 65533;
  1151.  
  1152. TYPE  (* Extended Escape *)
  1153.   ORDER_GEESCP              = RECORD (* ogeescp *)
  1154.     CASE                      : TYPEPREFIX OF
  1155.     | TRUE                    :
  1156.       uchType                 : SHORTCARD;
  1157.       uchIdent                : SHORTCARD;
  1158.       auchData                : ARRAY [0..GEESCP_ML-1] OF SHORTCARD;
  1159.     | FALSE                   :
  1160.       Type                    : SHORTCARD;
  1161.       Ident                   : SHORTCARD;
  1162.       Data                    : ARRAY [0..GEESCP_ML-1] OF SHORTCARD;
  1163.     END;                      END;
  1164.  
  1165.  
  1166. END ORDERS.
  1167.