home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / book / gpi3.inf (.txt) < prev    next >
OS/2 Help File  |  1999-05-12  |  873KB  |  20,075 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Data Types ΓòÉΓòÉΓòÉ
  3.  
  4. The following data types are used in Graphics Presentation Interface. They are 
  5. listed in alphabetic order. 
  6.  
  7.  
  8. ΓòÉΓòÉΓòÉ 1.1. ARCPARAMS ΓòÉΓòÉΓòÉ
  9.  
  10. Arc-parameters structure. 
  11.  
  12. typedef struct _ARCPARAMS {
  13.   LONG     lP;  /*  P coefficient. */
  14.   LONG     lQ;  /*  Q coefficient. */
  15.   LONG     lR;  /*  R coefficient. */
  16.   LONG     lS;  /*  S coefficient. */
  17. } ARCPARAMS;
  18.  
  19. typedef ARCPARAMS *PARCPARAMS;
  20.  
  21.  
  22. ΓòÉΓòÉΓòÉ <hidden> ARCPARAMS Field - lP ΓòÉΓòÉΓòÉ
  23.  
  24.  lP (LONG) 
  25.     P coefficient. 
  26.  
  27.  
  28. ΓòÉΓòÉΓòÉ <hidden> ARCPARAMS Field - lQ ΓòÉΓòÉΓòÉ
  29.  
  30.  lQ (LONG) 
  31.     Q coefficient. 
  32.  
  33.  
  34. ΓòÉΓòÉΓòÉ <hidden> ARCPARAMS Field - lR ΓòÉΓòÉΓòÉ
  35.  
  36.  lR (LONG) 
  37.     R coefficient. 
  38.  
  39.  
  40. ΓòÉΓòÉΓòÉ <hidden> ARCPARAMS Field - lS ΓòÉΓòÉΓòÉ
  41.  
  42.  lS (LONG) 
  43.     S coefficient. 
  44.  
  45.  
  46. ΓòÉΓòÉΓòÉ 1.2. AREABUNDLE ΓòÉΓòÉΓòÉ
  47.  
  48. Area-attributes bundle structure. 
  49.  
  50. typedef struct _AREABUNDLE {
  51.   LONG       lColor;         /*  Area foreground color. */
  52.   LONG       lBackColor;     /*  Area background color. */
  53.   USHORT     usMixMode;      /*  Area foreground-mix mode. */
  54.   USHORT     usBackMixMode;  /*  Area background-mix mode. */
  55.   USHORT     usSet;          /*  Pattern set. */
  56.   USHORT     usSymbol;       /*  Pattern symbol. */
  57.   POINTL     ptlRefPoint;    /*  Pattern reference point. */
  58. } AREABUNDLE;
  59.  
  60. typedef AREABUNDLE *PAREABUNDLE;
  61.  
  62.  
  63. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  64.  
  65.  lColor (LONG) 
  66.     Area foreground color. 
  67.  
  68.  
  69. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  70.  
  71.  lBackColor (LONG) 
  72.     Area background color. 
  73.  
  74.  
  75. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  76.  
  77.  usMixMode (USHORT) 
  78.     Area foreground-mix mode. 
  79.  
  80.  
  81. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  82.  
  83.  usBackMixMode (USHORT) 
  84.     Area background-mix mode. 
  85.  
  86.  
  87. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - usSet ΓòÉΓòÉΓòÉ
  88.  
  89.  usSet (USHORT) 
  90.     Pattern set. 
  91.  
  92.  
  93. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - usSymbol ΓòÉΓòÉΓòÉ
  94.  
  95.  usSymbol (USHORT) 
  96.     Pattern symbol. 
  97.  
  98.  
  99. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - ptlRefPoint ΓòÉΓòÉΓòÉ
  100.  
  101.  ptlRefPoint (POINTL) 
  102.     Pattern reference point. 
  103.  
  104.  
  105. ΓòÉΓòÉΓòÉ 1.3. BITMAPINFO ΓòÉΓòÉΓòÉ
  106.  
  107. Bit-map information structure. 
  108.  
  109. Each bit plane logically contains (cx * cy * cBitCount) bits, although the 
  110. actual length can be greater because of padding. 
  111.  
  112. See also BITMAPINFO2, which is preferred. 
  113.  
  114. typedef struct _BITMAPINFO {
  115.   ULONG      cbFix;         /*  Length of fixed portion of structure. */
  116.   USHORT     cx;            /*  Bit-map width in pels. */
  117.   USHORT     cy;            /*  Bit-map height in pels. */
  118.   USHORT     cPlanes;       /*  Number of bit planes. */
  119.   USHORT     cBitCount;     /*  Number of bits per pel within a plane. */
  120.   RGB        argbColor[1];  /*  Array of RGB values. */
  121. } BITMAPINFO;
  122.  
  123. typedef BITMAPINFO *PBITMAPINFO;
  124.  
  125.  
  126. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cbFix ΓòÉΓòÉΓòÉ
  127.  
  128.  cbFix (ULONG) 
  129.     Length of fixed portion of structure. 
  130.  
  131.     This length can be determined using sizeof(BITMAPINFOHEADER). 
  132.  
  133.  
  134. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cx ΓòÉΓòÉΓòÉ
  135.  
  136.  cx (USHORT) 
  137.     Bit-map width in pels. 
  138.  
  139.  
  140. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cy ΓòÉΓòÉΓòÉ
  141.  
  142.  cy (USHORT) 
  143.     Bit-map height in pels. 
  144.  
  145.  
  146. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cPlanes ΓòÉΓòÉΓòÉ
  147.  
  148.  cPlanes (USHORT) 
  149.     Number of bit planes. 
  150.  
  151.  
  152. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cBitCount ΓòÉΓòÉΓòÉ
  153.  
  154.  cBitCount (USHORT) 
  155.     Number of bits per pel within a plane. 
  156.  
  157.  
  158. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - argbColor[1] ΓòÉΓòÉΓòÉ
  159.  
  160.  argbColor[1] (RGB) 
  161.     Array of RGB values. 
  162.  
  163.     This is a packed array of 24-bit RGB values. If there are N bits per pel 
  164.     (N =cPlanes * cBitCount), the array contains 2**N RGB values. However, if 
  165.     N = 24, the bit map does not need the color color array because the 
  166.     standard-format bit map, with 24 bits per pel, is assumed to contain RGB 
  167.     values. 
  168.  
  169.  
  170. ΓòÉΓòÉΓòÉ 1.4. BITMAPINFO2 ΓòÉΓòÉΓòÉ
  171.  
  172. Bit-map information structure. 
  173.  
  174. Each bit plane logically contains (cx * cy * cBitCount) bits, although the 
  175. actual length can be greater because of padding. 
  176.  
  177. Note:  Many functions can accept either this structure or the BITMAPINFO 
  178. structure. Where possible, BITMAPINFO2 should be used. 
  179.  
  180. The cbFix field is used to find the color table, if any, that goes with the 
  181. information in this structure. A color table is an array of color (RGB2) 
  182. values. If there are N bits per pel (N = cPlanes * cBitCount), the array 
  183. contains 2**N color values. However, if N = 24, the color table is not required 
  184. (because the standard-format bit map, with 24 bits per pel, is assumed to 
  185. contain RGB values), unless either cclrUsed or cclrImportant is non-zero. 
  186.  
  187. typedef struct _BITMAPINFO2 {
  188.   ULONG      cbFix;            /*  Length of fixed portion of structure. */
  189.   ULONG      cx;               /*  Bit-map width in pels. */
  190.   ULONG      cy;               /*  Bit-map height in pels. */
  191.   USHORT     cPlanes;          /*  Number of bit planes. */
  192.   USHORT     cBitCount;        /*  Number of bits per pel within a plane. */
  193.   ULONG      ulCompression;    /*  Compression scheme used to store the bit map. */
  194.   ULONG      cbImage;          /*  Length of bit-map storage data, in bytes. */
  195.   ULONG      cxResolution;     /*  Horizontal component of the resolution of target device. */
  196.   ULONG      cyResolution;     /*  Vertical component of the resolution of the target device. */
  197.   ULONG      cclrUsed;         /*  Number of color indexes used. */
  198.   ULONG      cclrImportant;    /*  Minimum number of color indexes for satisfactory appearance of the bit map. */
  199.   USHORT     usUnits;          /*  Units of measure. */
  200.   USHORT     usReserved;       /*  Reserved. */
  201.   USHORT     usRecording;      /*  Recording algorithm. */
  202.   USHORT     usRendering;      /*  Halftoning algorithm. */
  203.   ULONG      cSize1;           /*  Size value 1. */
  204.   ULONG      cSize2;           /*  Size value 2. */
  205.   ULONG      ulColorEncoding;  /*  Color encoding. */
  206.   ULONG      ulIdentifier;     /*  Reserved for application use. */
  207.   RGB2       argbColor[1];     /*  Array of RGB values. */
  208. } BITMAPINFO2;
  209.  
  210. typedef BITMAPINFO2 *PBITMAPINFO2;
  211.  
  212.  
  213. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cbFix ΓòÉΓòÉΓòÉ
  214.  
  215.  cbFix (ULONG) 
  216.     Length of fixed portion of structure. 
  217.  
  218.     The structure can be truncated after cBitCount or any subsequent field. 
  219.  
  220.     The length does not include the length of the color table. Where the color 
  221.     table is present, it is at an offset of cbFix from the start of the 
  222.     BITMAPINFO2 structure. 
  223.  
  224.     This length can range from 16 (BITMAPINFOHEADER through field cBitCount) up 
  225.     to sizeof(BITMAPINFOHEADER2) bytes. 
  226.  
  227.  
  228. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cx ΓòÉΓòÉΓòÉ
  229.  
  230.  cx (ULONG) 
  231.     Bit-map width in pels. 
  232.  
  233.  
  234. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cy ΓòÉΓòÉΓòÉ
  235.  
  236.  cy (ULONG) 
  237.     Bit-map height in pels. 
  238.  
  239.  
  240. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cPlanes ΓòÉΓòÉΓòÉ
  241.  
  242.  cPlanes (USHORT) 
  243.     Number of bit planes. 
  244.  
  245.  
  246. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cBitCount ΓòÉΓòÉΓòÉ
  247.  
  248.  cBitCount (USHORT) 
  249.     Number of bits per pel within a plane. 
  250.  
  251.  
  252. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - ulCompression ΓòÉΓòÉΓòÉ
  253.  
  254.  ulCompression (ULONG) 
  255.     Compression scheme used to store the bit map. 
  256.  
  257.     BCA_UNCOMP 
  258.               Bit map is uncompressed. 
  259.  
  260.     BCA_HUFFMAN1D 
  261.               The bit map is compressed by a modified Huffman encoding. This is 
  262.               valid for a bi-level (one bit per pel) bit map. 
  263.  
  264.     BCA_RLE4 
  265.               The bit map is a 4-bit per pel run-length encoded bit map. See 
  266.               the following section, "Format of Compressed Data," for a 
  267.               description of the format of the compressed data. 
  268.  
  269.     BCA_RLE8 
  270.               The bit map is an 8-bit per pel run-length encoded bit map. See 
  271.               the following section, "Format of Compressed Data," for a 
  272.               description of the format of the compressed data. 
  273.  
  274.     BCA_RLE24 
  275.               The bit map is a 24-bit per pel run-length encoded bit map. See 
  276.               the following section, "Format of Compressed Data," for a 
  277.               description of the format of the compressed data. 
  278.  
  279.     Format of Compressed Data 
  280.  
  281.     Encoding a run length: 
  282.  
  283.     Run-length encoded bit maps are encoded in the buffer in a controlled 
  284.     format. In all cases, if the first byte is non-zero, it is the length of a 
  285.     run of pels of a particular color or, in the case of a BCA_RLE4 bit map, a 
  286.     run of a length of pels of alternating colors. 
  287.  
  288.  
  289.         1st-byte       pel repetition count >= 1
  290.         2nd-4th bytes  (BCA_RLE24 only) RGB value of pel.
  291.         2nd-byte       (BCA_RLE8) color index of pel to be repeated
  292.                        (BCA_RLE4) the second byte contains 2 4-bit
  293.                        color indexes.  The repetition count is
  294.                        completed by alternately choosing the high-order
  295.                        nibble followed by the low-order nibble for the
  296.                        succeeding pels until the count is exhausted.
  297.  
  298.     Unencoded run: 
  299.  
  300.     An unencoded run is a string of pels to be placed in consecutive positions 
  301.     in the destination bit map. 
  302.  
  303.  
  304.         1st-byte     0
  305.         2nd-byte     COUNT = a multiple of 3 for BCA_RLE24 bit maps, or
  306.                      COUNT >= 3 (for BCA_RLE4 and BCA_RLE8 bit maps).
  307.  
  308.     followed by the bytes as follows: 
  309.  
  310.     BCA_RLE24 
  311.               A string of bytes specifying the RGB color values of succeeding 
  312.               pels.  If COUNT is odd, it must be padded by a zero byte for an 
  313.               even length overall. 
  314.  
  315.     BCA_RLE8 
  316.               A string of bytes specifying color indexes for succeeding pels. 
  317.               If COUNT is odd, it must be padded by a zero byte for an even 
  318.               length overall. 
  319.  
  320.     BCA_RLE4 
  321.               A string of bytes, each byte providing two color indexes, with 
  322.               the high-order nibble specifying the index of the pel preceding 
  323.               the low-order nibble. The COUNT specifies the number of indexes. 
  324.               The overall length of the string must be an even number of bytes, 
  325.               and thus may be padded with a zero byte, and the low order nibble 
  326.               of the last significant byte may also be zero and not used. 
  327.  
  328.     Delta record: 
  329.  
  330.     A delta record indicates a shift in position in the destination bit map 
  331.     before the next record is decoded. 
  332.  
  333.  
  334.         1st-byte        0
  335.         2nd-byte        2
  336.         3rd-byte        Delta-x (unsigned)
  337.         4th-byte        Delta-y (unsigned)
  338.  
  339.     This is a relative jump record.  It implies that the next record is to be 
  340.     decoded into a position in the destination bit map at an offset from the 
  341.     current position, determined by changing the horizontal and vertical 
  342.     positions by Delta-x and Delta-y, respectively. 
  343.  
  344.     End-of-line record: 
  345.  
  346.     The end-of-line record signifies that the data for the current scan line is 
  347.     complete and that decoding of the next record should begin at the start of 
  348.     the next scan line. 
  349.  
  350.  
  351.         1st-byte        0
  352.         2nd-byte        0
  353.  
  354.     End-of-RLE record: 
  355.  
  356.     The end-of-RLE record signifies the end of the data in the RLE compressed 
  357.     bit map. 
  358.  
  359.  
  360.         1st-byte        0
  361.         2nd-byte        1
  362.  
  363.  
  364. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cbImage ΓòÉΓòÉΓòÉ
  365.  
  366.  cbImage (ULONG) 
  367.     Length of bit-map storage data, in bytes. 
  368.  
  369.     If the bit map is uncompressed, zero (default) can be specified for this. 
  370.  
  371.  
  372. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cxResolution ΓòÉΓòÉΓòÉ
  373.  
  374.  cxResolution (ULONG) 
  375.     Horizontal component of the resolution of target device. 
  376.  
  377.     The resolution of the device the bit map is intended for, in the units 
  378.     specified by usUnits. This information enables an application to select 
  379.     from a resource group the bit map that best matches the characteristics of 
  380.     the current output device. 
  381.  
  382.  
  383. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cyResolution ΓòÉΓòÉΓòÉ
  384.  
  385.  cyResolution (ULONG) 
  386.     Vertical component of the resolution of the target device. 
  387.  
  388.     See the description of cxResolution. 
  389.  
  390.  
  391. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cclrUsed ΓòÉΓòÉΓòÉ
  392.  
  393.  cclrUsed (ULONG) 
  394.     Number of color indexes used. 
  395.  
  396.     The number of color indexes from the color table that are used by the bit 
  397.     map. If it is zero (the default), all the indexes are used. If it is 
  398.     non-zero, only the first cclrUsed entries in the table are accessed by the 
  399.     system, and further entries can be omitted. 
  400.  
  401.     For the standard formats with a cBitCount of 1, 4, or 8 (and cPlanes equal 
  402.     to 1), any indexes beyond cclrUsed are not valid. For example, a bit map 
  403.     with 64 colors can use the 8-bitcount format without having to supply the 
  404.     other 192 entries in the color table. For the 24-bitcount standard format, 
  405.     cclrUsed is the number of colors used by the bit map. 
  406.  
  407.  
  408. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cclrImportant ΓòÉΓòÉΓòÉ
  409.  
  410.  cclrImportant (ULONG) 
  411.     Minimum number of color indexes for satisfactory appearance of the bit map. 
  412.  
  413.     More colors may be used in the bit map, but it is not necessary to assign 
  414.     them to the device palette. These additional colors may be mapped to the 
  415.     nearest colors available. 
  416.  
  417.     Zero (the default) means that all entries are important. 
  418.  
  419.     For a 24-bitcount standard format bit map, the cclrImportant colors are 
  420.     also listed in the color table following the BITMAPINFO2 structure. 
  421.  
  422.  
  423. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - usUnits ΓòÉΓòÉΓòÉ
  424.  
  425.  usUnits (USHORT) 
  426.     Units of measure. 
  427.  
  428.     Units of measure of the horizontal and vertical components of resolution, 
  429.     cxResolution and cyResolution. 
  430.  
  431.     BRU_METRIC          Pels per meter. This is the default value. 
  432.  
  433.  
  434. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - usReserved ΓòÉΓòÉΓòÉ
  435.  
  436.  usReserved (USHORT) 
  437.     Reserved. 
  438.  
  439.     This is a reserved field. 
  440.  
  441.  
  442. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - usRecording ΓòÉΓòÉΓòÉ
  443.  
  444.  usRecording (USHORT) 
  445.     Recording algorithm. 
  446.  
  447.     The format in which the bit map data is recorded. 
  448.  
  449.     BRA_BOTTOMUP             Scan lines are recorded bottom to top. This is the 
  450.                              default value. 
  451.  
  452.  
  453. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - usRendering ΓòÉΓòÉΓòÉ
  454.  
  455.  usRendering (USHORT) 
  456.     Halftoning algorithm. 
  457.  
  458.     The algorithm used to record bit map data that has been digitally 
  459.     halftoned. 
  460.  
  461.     BRH_NOTHALFTONED              Bit-map data is not halftoned. This is the 
  462.                                   default value. 
  463.  
  464.     BRH_ERRORDIFFUSION            Error Diffusion or Damped Error Diffusion 
  465.                                   algorithm. 
  466.  
  467.     BRH_PANDA                     Processing Algorithm for Non-coded Document 
  468.                                   Acquisition. 
  469.  
  470.     BRH_SUPERCIRCLE               Super Circle algorithm. 
  471.  
  472.  
  473. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cSize1 ΓòÉΓòÉΓòÉ
  474.  
  475.  cSize1 (ULONG) 
  476.     Size value 1. 
  477.  
  478.     If BRH_ERRORDIFFUSION is specified in usRendering, cSize1 is the error 
  479.     damping as a percentage in the range 0 through 100. A value of 100% 
  480.     indicates no damping, and a value of 0% indicates that any errors are not 
  481.     diffused. 
  482.  
  483.     If BRH_PANDA or BRH_SUPERCIRCLE is specified, cSize1 is the x dimension of 
  484.     the pattern used, in pels. 
  485.  
  486.  
  487. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cSize2 ΓòÉΓòÉΓòÉ
  488.  
  489.  cSize2 (ULONG) 
  490.     Size value 2. 
  491.  
  492.     If BRH_ERRORDIFFUSION is specified in usRendering, this parameter is 
  493.     ignored. 
  494.  
  495.     If BRH_PANDA or BRH_SUPERCIRCLE is specified, cSize2 is the y dimension of 
  496.     the pattern used, in pels. 
  497.  
  498.  
  499. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - ulColorEncoding ΓòÉΓòÉΓòÉ
  500.  
  501.  ulColorEncoding (ULONG) 
  502.     Color encoding. 
  503.  
  504.     BCE_RGB             Each element in the color array is an RGB2 datatype. 
  505.                         This is the default value. 
  506.  
  507.  
  508. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - ulIdentifier ΓòÉΓòÉΓòÉ
  509.  
  510.  ulIdentifier (ULONG) 
  511.     Reserved for application use. 
  512.  
  513.  
  514. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - argbColor[1] ΓòÉΓòÉΓòÉ
  515.  
  516.  argbColor[1] (RGB2) 
  517.     Array of RGB values. 
  518.  
  519.     This is a packed array of 24-bit RGB values. If there are N bits per pel 
  520.     (N =cPlanes * cBitCount), the array contains 2**N RGB values. However, if 
  521.     N = 24, the bit map does not need the color array because the 
  522.     standard-format bit map, with 24 bits per pel, is assumed to contain RGB 
  523.     values. 
  524.  
  525.  
  526. ΓòÉΓòÉΓòÉ 1.5. BITMAPINFOHEADER ΓòÉΓòÉΓòÉ
  527.  
  528. Bit-map information header structure. 
  529.  
  530. Each bit plane logically contains (cx * cy * cBitCount) bits, although the 
  531. actual length can be greater because of padding. 
  532.  
  533. See also BITMAPINFOHEADER2, which is preferred. 
  534.  
  535. typedef struct _BITMAPINFOHEADER {
  536.   ULONG      cbFix;      /*  Length of structure. */
  537.   USHORT     cx;         /*  Bit-map width in pels. */
  538.   USHORT     cy;         /*  Bit-map height in pels. */
  539.   USHORT     cPlanes;    /*  Number of bit planes. */
  540.   USHORT     cBitCount;  /*  Number of bits per pel within a plane. */
  541. } BITMAPINFOHEADER;
  542.  
  543. typedef BITMAPINFOHEADER *PBITMAPINFOHEADER;
  544.  
  545.  
  546. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cbFix ΓòÉΓòÉΓòÉ
  547.  
  548.  cbFix (ULONG) 
  549.     Length of structure. 
  550.  
  551.  
  552. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cx ΓòÉΓòÉΓòÉ
  553.  
  554.  cx (USHORT) 
  555.     Bit-map width in pels. 
  556.  
  557.  
  558. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cy ΓòÉΓòÉΓòÉ
  559.  
  560.  cy (USHORT) 
  561.     Bit-map height in pels. 
  562.  
  563.  
  564. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cPlanes ΓòÉΓòÉΓòÉ
  565.  
  566.  cPlanes (USHORT) 
  567.     Number of bit planes. 
  568.  
  569.  
  570. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cBitCount ΓòÉΓòÉΓòÉ
  571.  
  572.  cBitCount (USHORT) 
  573.     Number of bits per pel within a plane. 
  574.  
  575.  
  576. ΓòÉΓòÉΓòÉ 1.6. BITMAPINFOHEADER2 ΓòÉΓòÉΓòÉ
  577.  
  578. Bit-map information header structure. 
  579.  
  580. Each bit plane logically contains (cx * cy * cBitCount) bits, although the 
  581. actual length can be greater because of padding. 
  582.  
  583. Note:  Many functions can accept either this structure or the BITMAPINFOHEADER 
  584. structure. Where possible, use BITMAPINFOHEADER2. 
  585.  
  586. typedef struct _BITMAPINFOHEADER2 {
  587.   ULONG      cbFix;            /*  Length of structure. */
  588.   ULONG      cx;               /*  Bit-map width in pels. */
  589.   ULONG      cy;               /*  Bit-map height in pels. */
  590.   USHORT     cPlanes;          /*  Number of bit planes. */
  591.   USHORT     cBitCount;        /*  Number of bits per pel within a plane. */
  592.   ULONG      ulCompression;    /*  Compression scheme used to store the bit map. */
  593.   ULONG      cbImage;          /*  Length of bit-map storage data, in bytes. */
  594.   ULONG      cxResolution;     /*  Horizontal component of the resolution of target device. */
  595.   ULONG      cyResolution;     /*  Vertical component of the resolution of target device. */
  596.   ULONG      cclrUsed;         /*  Number of color indexes used. */
  597.   ULONG      cclrImportant;    /*  Minimum number of color indexes for satisfactory appearance of the bit map. */
  598.   USHORT     usUnits;          /*  Units of measure. */
  599.   USHORT     usReserved;       /*  Reserved. */
  600.   USHORT     usRecording;      /*  Recording algorithm. */
  601.   USHORT     usRendering;      /*  Halftoning algorithm. */
  602.   ULONG      cSize1;           /*  Size value 1. */
  603.   ULONG      cSize2;           /*  Size value 2. */
  604.    ULONG      ulColorEncoding;  /*  Color encoding.
  605.  
  606.   BCE_RGB   Each element in the color array is an RGB2 datatype. This is the default value.
  607.    */
  608.     ULONG      ulIdentifier;     /*  Reserved for application use. */
  609.   } BITMAPINFOHEADER2;
  610.  
  611.   typedef BITMAPINFOHEADER2 *PBITMAPINFOHEADER2;
  612.  
  613.  
  614. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cbFix ΓòÉΓòÉΓòÉ
  615.  
  616.  cbFix (ULONG) 
  617.     Length of structure. 
  618.  
  619.     The structure can be truncated after cBitCount or any subsequent field. 
  620.  
  621.  
  622. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cx ΓòÉΓòÉΓòÉ
  623.  
  624.  cx (ULONG) 
  625.     Bit-map width in pels. 
  626.  
  627.  
  628. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cy ΓòÉΓòÉΓòÉ
  629.  
  630.  cy (ULONG) 
  631.     Bit-map height in pels. 
  632.  
  633.  
  634. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cPlanes ΓòÉΓòÉΓòÉ
  635.  
  636.  cPlanes (USHORT) 
  637.     Number of bit planes. 
  638.  
  639.  
  640. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cBitCount ΓòÉΓòÉΓòÉ
  641.  
  642.  cBitCount (USHORT) 
  643.     Number of bits per pel within a plane. 
  644.  
  645.  
  646. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - ulCompression ΓòÉΓòÉΓòÉ
  647.  
  648.  ulCompression (ULONG) 
  649.     Compression scheme used to store the bit map. 
  650.  
  651.     BCA_UNCOMP 
  652.               Bit map is uncompressed. 
  653.  
  654.     BCA_HUFFMAN1D 
  655.               The bit map is compressed by a modified Huffman encoding. This is 
  656.               valid for a bi-level (one bit per pel) bit map. 
  657.  
  658.     BCA_RLE4 
  659.               The bit map is a 4-bit per pel run-length encoded bit map. See 
  660.               the following section, "Format of Compressed Data," for a 
  661.               description of the format of the compressed data. 
  662.  
  663.     BCA_RLE8 
  664.               The bit map is an 8-bit per pel run-length encoded bit map. See 
  665.               the following section, "Format of Compressed Data," for a 
  666.               description of the format of the compressed data. 
  667.  
  668.     BCA_RLE24 
  669.               The bit map is a 24-bit per pel run-length encoded bit map. See 
  670.               the following section, "Format of Compressed Data," for a 
  671.               description of the format of the compressed data. 
  672.  
  673.     Format of Compressed Data 
  674.  
  675.     Encoding a run length: 
  676.  
  677.     Run length encoded bit maps are encoded in the buffer in a controlled 
  678.     format. In all cases, if the first byte is non-zero, it is the length of a 
  679.     run of pels of a particular color or, in the case of a BCA_RLE4 bit map, a 
  680.     run of a length of pels of alternating colors. 
  681.  
  682.  
  683.         1st-byte       pel repetition count >= 1
  684.         2nd-4th bytes  (BCA_RLE24 only) RGB value of pel.
  685.         2nd-byte       (BCA_RLE8) color index of pel to be repeated
  686.                        (BCA_RLE4) the second byte contains 2 4-bit
  687.                        color indexes.  The repetition count is
  688.                        completed by alternately choosing the high-order
  689.                        nibble followed by the low-order nibble for the
  690.                        succeeding pels until the count is exhausted.
  691.  
  692.     Unencoded run: 
  693.  
  694.     An unencoded run is a string of pels to be placed in consecutive positions 
  695.     in the destination bit map. 
  696.  
  697.  
  698.         1st-byte     0
  699.         2nd-byte     COUNT = a multiple of 3 for BCA_RLE24 bit maps, or
  700.                      COUNT >= 3 (for BCA_RLE4 and BCA_RLE8 bit maps).
  701.  
  702.     followed by the bytes as follows: 
  703.  
  704.     BCA_RLE24 
  705.               A string of bytes specifying the RGB color values of succeeding 
  706.               pels.  If COUNT is odd, it must be padded by a zero byte for an 
  707.               even length overall. 
  708.  
  709.     BCA_RLE8 
  710.               A string of bytes specifying color indexes for succeeding pels. 
  711.               If COUNT is odd, it must be padded by a zero byte for an even 
  712.               length overall. 
  713.  
  714.     BCA_RLE4 
  715.               A string of bytes, each byte providing two color indexes, with 
  716.               the high-order nibble specifying the index of the pel preceding 
  717.               the low-order nibble. The COUNT specifies the number of indexes. 
  718.               The overall length of the string must be an even number of bytes, 
  719.               and thus may be padded with a zero byte, and the low order nibble 
  720.               of the last significant byte may also be zero and not used. 
  721.  
  722.     Delta record: 
  723.  
  724.     A delta record indicates a shift in position in the destination bit map 
  725.     before the next record is decoded. 
  726.  
  727.  
  728.         1st-byte        0
  729.         2nd-byte        2
  730.         3rd-byte        Delta-x (unsigned)
  731.         4th-byte        Delta-y (unsigned)
  732.  
  733.     This is a relative jump record.  It implies that the next record is to be 
  734.     decoded into a position in the destination bit map at an offset from the 
  735.     current position, determined by changing the horizontal and vertical 
  736.     positions by Delta-x and Delta-y, respectively. 
  737.  
  738.     End-of-line record: 
  739.  
  740.     The end-of-line record signifies that the data for the current scan line is 
  741.     complete and that decoding of the next record should begin at the start of 
  742.     the next scan line. 
  743.  
  744.  
  745.         1st-byte        0
  746.         2nd-byte        0
  747.  
  748.     End-of-RLE record: 
  749.  
  750.     The end-of-RLE record signifies the end of the data in the RLE compressed 
  751.     bit map. 
  752.  
  753.  
  754.         1st-byte        0
  755.         2nd-byte        1
  756.  
  757.  
  758. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cbImage ΓòÉΓòÉΓòÉ
  759.  
  760.  cbImage (ULONG) 
  761.     Length of bit-map storage data, in bytes. 
  762.  
  763.     If the bit map is uncompressed, zero (the default) can be specified for 
  764.     this. 
  765.  
  766.  
  767. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cxResolution ΓòÉΓòÉΓòÉ
  768.  
  769.  cxResolution (ULONG) 
  770.     Horizontal component of the resolution of target device. 
  771.  
  772.     The resolution of the device the bit map is intended for, in the units 
  773.     specified by usUnits. This information enables applications to select from 
  774.     a resource group the bit map that best matches the characteristics of the 
  775.     current output device. 
  776.  
  777.  
  778. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cyResolution ΓòÉΓòÉΓòÉ
  779.  
  780.  cyResolution (ULONG) 
  781.     Vertical component of the resolution of target device. 
  782.  
  783.     See the description of cxResolution. 
  784.  
  785.  
  786. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cclrUsed ΓòÉΓòÉΓòÉ
  787.  
  788.  cclrUsed (ULONG) 
  789.     Number of color indexes used. 
  790.  
  791.     The number of color indexes from the color table that are used by the bit 
  792.     map. If this is zero (the default), all the indexes are used. If it is 
  793.     non-zero, only the first cclrUsed entries in the table are accessed by the 
  794.     system, and further entries can be omitted. 
  795.  
  796.     For the standard formats with a cBitCount of 1, 4, or 8 (and cPlanes equal 
  797.     to 1), any indexes beyond cclrUsed are invalid. For example, a bit map with 
  798.     64 colors can use the 8-bitcount format without having to supply the other 
  799.     192 entries in the color table. For the 24-bitcount standard format, 
  800.     cclrUsed is the number of colors used by the bit map. 
  801.  
  802.  
  803. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cclrImportant ΓòÉΓòÉΓòÉ
  804.  
  805.  cclrImportant (ULONG) 
  806.     Minimum number of color indexes for satisfactory appearance of the bit map. 
  807.  
  808.     More colors may be used in the bit map, but it is not necessary to assign 
  809.     them to the device palette. These additional colors may be mapped to the 
  810.     nearest colors available. 
  811.  
  812.     Zero (the default) means that all entries are important. 
  813.  
  814.     For a 24-bitcount standard format bit map, the cclrImportant colors are 
  815.     also listed in the color table relating to this bit map. 
  816.  
  817.  
  818. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - usUnits ΓòÉΓòÉΓòÉ
  819.  
  820.  usUnits (USHORT) 
  821.     Units of measure. 
  822.  
  823.     Units of measure of the horizontal and vertical resolution, cxResolution 
  824.     and cyResolution. 
  825.  
  826.     BRU_METRIC     Pels per meter. This is the default value. 
  827.  
  828.  
  829. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - usReserved ΓòÉΓòÉΓòÉ
  830.  
  831.  usReserved (USHORT) 
  832.     Reserved. 
  833.  
  834.     This is a reserved field. If present, it must be zero. 
  835.  
  836.  
  837. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - usRecording ΓòÉΓòÉΓòÉ
  838.  
  839.  usRecording (USHORT) 
  840.     Recording algorithm. 
  841.  
  842.     The format in which the bit-map data is recorded. 
  843.  
  844.     BRA_BOTTOMUP        Scan lines are recorded bottom to top. This is the 
  845.                         default value. 
  846.  
  847.  
  848. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - usRendering ΓòÉΓòÉΓòÉ
  849.  
  850.  usRendering (USHORT) 
  851.     Halftoning algorithm. 
  852.  
  853.     The algorithm used to record bit-map data that has been digitally 
  854.     halftoned. 
  855.  
  856.     BRH_NOTHALFTONED Bit-map data is not halftoned. This is the default value. 
  857.  
  858.     BRH_ERRORDIFFUSION Error Diffusion or Damped Error Diffusion algorithm. 
  859.  
  860.     BRH_PANDA      Processing Algorithm for Non-coded Document Acquisition. 
  861.  
  862.     BRH_SUPERCIRCLE Super Circle algorithm. 
  863.  
  864.  
  865. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cSize1 ΓòÉΓòÉΓòÉ
  866.  
  867.  cSize1 (ULONG) 
  868.     Size value 1. 
  869.  
  870.     If BRH_ERRORDIFFUSION is specified in usRendering, cSize1 is the error 
  871.     damping as a percentage in the range 0 through 100. A value of 100% 
  872.     indicates no damping, and a value of 0% indicates that any errors are not 
  873.     diffused. 
  874.  
  875.     If BRH_PANDA or BRH_SUPERCIRCLE is specified, cSize1 is the x dimension of 
  876.     the pattern used, in pels. 
  877.  
  878.  
  879. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cSize2 ΓòÉΓòÉΓòÉ
  880.  
  881.  cSize2 (ULONG) 
  882.     Size value 2. 
  883.  
  884.     If BRH_ERRORDIFFUSION is specified in usRendering, this parameter is 
  885.     ignored. 
  886.  
  887.     If BRH_PANDA or BRH_SUPERCIRCLE is specified, cSize2 is the y dimension of 
  888.     the pattern used, in pels. 
  889.  
  890.  
  891. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - ulColorEncoding ΓòÉΓòÉΓòÉ
  892.  
  893.  ulColorEncoding (ULONG) 
  894.     Color encoding. 
  895.  
  896.     BCE_RGB        Each element in the color array is an RGB2 datatype. This is 
  897.                    the default value. 
  898.  
  899.  
  900. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - ulIdentifier ΓòÉΓòÉΓòÉ
  901.  
  902.  ulIdentifier (ULONG) 
  903.     Reserved for application use. 
  904.  
  905.  
  906. ΓòÉΓòÉΓòÉ 1.7. BOOL ΓòÉΓòÉΓòÉ
  907.  
  908. Boolean. 
  909.  
  910. Valid values are FALSE, which is 0, and TRUE, which is 1. 
  911.  
  912. typedef unsigned long BOOL;
  913.  
  914.  
  915. ΓòÉΓòÉΓòÉ 1.8. BYTE ΓòÉΓòÉΓòÉ
  916.  
  917. A byte. 
  918.  
  919. typedef unsigned char BYTE;
  920.  
  921.  
  922. ΓòÉΓòÉΓòÉ 1.9. CHAR ΓòÉΓòÉΓòÉ
  923.  
  924. Single-byte character. 
  925.  
  926. #define CHAR char
  927.  
  928.  
  929. ΓòÉΓòÉΓòÉ 1.10. CHARBUNDLE ΓòÉΓòÉΓòÉ
  930.  
  931. Character-attributes bundle structure. 
  932.  
  933. typedef struct _CHARBUNDLE {
  934.   LONG       lColor;         /*  Character foreground color. */
  935.   LONG       lBackColor;     /*  Character background color. */
  936.   USHORT     usMixMode;      /*  Character foreground-mix mode. */
  937.   USHORT     usBackMixMode;  /*  Character background-mix mode. */
  938.   USHORT     usSet;          /*  Character set. */
  939.   USHORT     usPrecision;    /*  Character precision. */
  940.   SIZEF      sizfxCell;      /*  Character cell size. */
  941.   POINTL     ptlAngle;       /*  Character angle. */
  942.   POINTL     ptlShear;       /*  Character shear. */
  943.   USHORT     usDirection;    /*  Character direction. */
  944.   USHORT     usTextAlign;    /*  Text alignment. */
  945.   FIXED      fxExtra;        /*  Character extra. */
  946.   FIXED      fxBreakExtra;   /*  Character break extra. */
  947. } CHARBUNDLE;
  948.  
  949. typedef CHARBUNDLE *PCHARBUNDLE;
  950.  
  951.  
  952. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  953.  
  954.  lColor (LONG) 
  955.     Character foreground color. 
  956.  
  957.  
  958. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  959.  
  960.  lBackColor (LONG) 
  961.     Character background color. 
  962.  
  963.  
  964. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  965.  
  966.  usMixMode (USHORT) 
  967.     Character foreground-mix mode. 
  968.  
  969.  
  970. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  971.  
  972.  usBackMixMode (USHORT) 
  973.     Character background-mix mode. 
  974.  
  975.  
  976. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usSet ΓòÉΓòÉΓòÉ
  977.  
  978.  usSet (USHORT) 
  979.     Character set. 
  980.  
  981.  
  982. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usPrecision ΓòÉΓòÉΓòÉ
  983.  
  984.  usPrecision (USHORT) 
  985.     Character precision. 
  986.  
  987.  
  988. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - sizfxCell ΓòÉΓòÉΓòÉ
  989.  
  990.  sizfxCell (SIZEF) 
  991.     Character cell size. 
  992.  
  993.  
  994. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - ptlAngle ΓòÉΓòÉΓòÉ
  995.  
  996.  ptlAngle (POINTL) 
  997.     Character angle. 
  998.  
  999.  
  1000. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - ptlShear ΓòÉΓòÉΓòÉ
  1001.  
  1002.  ptlShear (POINTL) 
  1003.     Character shear. 
  1004.  
  1005.  
  1006. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usDirection ΓòÉΓòÉΓòÉ
  1007.  
  1008.  usDirection (USHORT) 
  1009.     Character direction. 
  1010.  
  1011.  
  1012. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usTextAlign ΓòÉΓòÉΓòÉ
  1013.  
  1014.  usTextAlign (USHORT) 
  1015.     Text alignment. 
  1016.  
  1017.  
  1018. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - fxExtra ΓòÉΓòÉΓòÉ
  1019.  
  1020.  fxExtra (FIXED) 
  1021.     Character extra. 
  1022.  
  1023.  
  1024. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - fxBreakExtra ΓòÉΓòÉΓòÉ
  1025.  
  1026.  fxBreakExtra (FIXED) 
  1027.     Character break extra. 
  1028.  
  1029.  
  1030. ΓòÉΓòÉΓòÉ 1.11. CONVCONTEXT ΓòÉΓòÉΓòÉ
  1031.  
  1032. Dynamic-data-exchange conversation context structure. 
  1033.  
  1034. typedef struct _CONVCONTEXT {
  1035.   ULONG     cb;           /*  Length of structure. */
  1036.   ULONG     fsContext;    /*  Options. */
  1037.   ULONG     idCountry;    /*  Country code. */
  1038.   ULONG     usCodepage;   /*  Code-page identity. */
  1039.   ULONG     usLangID;     /*  Language. */
  1040.   ULONG     usSubLangID;  /*  Sub-language. */
  1041. } CONVCONTEXT;
  1042.  
  1043. typedef CONVCONTEXT *PCONVCONTEXT;
  1044.  
  1045.  
  1046. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - cb ΓòÉΓòÉΓòÉ
  1047.  
  1048.  cb (ULONG) 
  1049.     Length of structure. 
  1050.  
  1051.     This must be set to the length of the CONVCONTEXT structure. 
  1052.  
  1053.  
  1054. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - fsContext ΓòÉΓòÉΓòÉ
  1055.  
  1056.  fsContext (ULONG) 
  1057.     Options. 
  1058.  
  1059.     DDECTXT_CASESENSITIVE 
  1060.             All strings in this conversation are case sensitive. 
  1061.  
  1062.  
  1063. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - idCountry ΓòÉΓòÉΓòÉ
  1064.  
  1065.  idCountry (ULONG) 
  1066.     Country code. 
  1067.  
  1068.  
  1069. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - usCodepage ΓòÉΓòÉΓòÉ
  1070.  
  1071.  usCodepage (ULONG) 
  1072.     Code-page identity. 
  1073.  
  1074.  
  1075. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - usLangID ΓòÉΓòÉΓòÉ
  1076.  
  1077.  usLangID (ULONG) 
  1078.     Language. 
  1079.  
  1080.     Zero is valid and means no language information. 
  1081.  
  1082.  
  1083. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - usSubLangID ΓòÉΓòÉΓòÉ
  1084.  
  1085.  usSubLangID (ULONG) 
  1086.     Sub-language. 
  1087.  
  1088.     Zero is valid and means no sub-language information. 
  1089.  
  1090.  
  1091. ΓòÉΓòÉΓòÉ 1.12. DDEINIT ΓòÉΓòÉΓòÉ
  1092.  
  1093. Dynamic-data-exchange initiation structure. 
  1094.  
  1095. typedef struct _DDEINIT {
  1096.   ULONG     cb;              /*  Length of structure. */
  1097.   PSZ       pszAppName;      /*  Application name. */
  1098.   PSZ       pszTopic;        /*  Topic. */
  1099.   ULONG     offConvContext;  /*  Conversation context. */
  1100. } DDEINIT;
  1101.  
  1102. typedef DDEINIT *PDDEINIT;
  1103.  
  1104.  
  1105. ΓòÉΓòÉΓòÉ <hidden> DDEINIT Field - cb ΓòÉΓòÉΓòÉ
  1106.  
  1107.  cb (ULONG) 
  1108.     Length of structure. 
  1109.  
  1110.     This must be set to the length of the DDEINIT structure. 
  1111.  
  1112.  
  1113. ΓòÉΓòÉΓòÉ <hidden> DDEINIT Field - pszAppName ΓòÉΓòÉΓòÉ
  1114.  
  1115.  pszAppName (PSZ) 
  1116.     Application name. 
  1117.  
  1118.     Pointer to name of the server application. 
  1119.  
  1120.     Application names must not contain slashes or backslashes. These characters 
  1121.     are reserved for future use in network implementations. 
  1122.  
  1123.  
  1124. ΓòÉΓòÉΓòÉ <hidden> DDEINIT Field - pszTopic ΓòÉΓòÉΓòÉ
  1125.  
  1126.  pszTopic (PSZ) 
  1127.     Topic. 
  1128.  
  1129.     Pointer to name of the topic. 
  1130.  
  1131.  
  1132. ΓòÉΓòÉΓòÉ <hidden> DDEINIT Field - offConvContext ΓòÉΓòÉΓòÉ
  1133.  
  1134.  offConvContext (ULONG) 
  1135.     Conversation context. 
  1136.  
  1137.     Offset to a CONVCONTEXT structure. 
  1138.  
  1139.  
  1140. ΓòÉΓòÉΓòÉ 1.13. DDESTRUCT ΓòÉΓòÉΓòÉ
  1141.  
  1142. Dynamic-data-exchange control structure. 
  1143.  
  1144. typedef struct _DDESTRUCT {
  1145.   ULONG      cbData;         /*  Length of the data. */
  1146.   USHORT     fsStatus;       /*  Status of the data exchange. */
  1147.   USHORT     usFormat;       /*  DDE data format. */
  1148.   USHORT     offszItemName;  /*  Offset to item name. */
  1149.   USHORT     offabData;      /*  Offset to beginning of data. */
  1150. } DDESTRUCT;
  1151.  
  1152. typedef DDESTRUCT *PDDESTRUCT;
  1153.  
  1154. DDE formats, specified in the usFormat parameter, are registered with the atom 
  1155. manager, using the system atom table.  The predefined DDE formats are 
  1156. guaranteed not to conflict with the values returned by the atom manager. 
  1157.  
  1158. Applications can define their own data formats; however, each nonstandard DDE 
  1159. format must have a unique identification number. To receive an identification 
  1160. number for a nonstardard format, the application must register the name of the 
  1161. format in the system atom table. Other applications that have the name of the 
  1162. format can then query the system atom table for the format's identification 
  1163. number. This method ensures that all applications use the same atom to identify 
  1164. a format. 
  1165.  
  1166.  
  1167. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - cbData ΓòÉΓòÉΓòÉ
  1168.  
  1169.  cbData (ULONG) 
  1170.     Length of the data. 
  1171.  
  1172.     This is the length of data that occurs after the offabData parameter. If no 
  1173.     data exists, this field should contain a zero (0). 
  1174.  
  1175.  
  1176. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - fsStatus ΓòÉΓòÉΓòÉ
  1177.  
  1178.  fsStatus (USHORT) 
  1179.     Status of the data exchange. 
  1180.  
  1181.     DDE_FACK 
  1182.             Positive acknowledgement 
  1183.     DDE_FBUSY 
  1184.             Application is busy 
  1185.     DDE_FNODATA 
  1186.             No data transfer for advise 
  1187.     DDE_FACKREQ 
  1188.             Acknowledgements are requested 
  1189.     DDE_FRESPONSE 
  1190.             Response to WM_DDE_REQUEST 
  1191.     DDE_NOTPROCESSED 
  1192.             DDE message not understood 
  1193.     DDE_FAPPSTATUS 
  1194.             A 1-byte field of bits that are reserved for application-specific 
  1195.             returns. 
  1196.  
  1197.  
  1198. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - usFormat ΓòÉΓòÉΓòÉ
  1199.  
  1200.  usFormat (USHORT) 
  1201.     DDE data format. 
  1202.  
  1203.     This parameter can be set to one of the following values: 
  1204.  
  1205.     DDEFMT_TEXT 
  1206.             System-defined standard format for exchanging text data. 
  1207.     SZFMT_BITMAP 
  1208.             Specifies that the data is a bit map. 
  1209.     SZFMT_CPTEXT 
  1210.             Specifies text whose format is defined by a CPTEXT data structure. 
  1211.             Applications can use this format to pass multiple-language strings 
  1212.             without changing the conversation context. 
  1213.     SZFMT_DIF 
  1214.             Specifies that the data is in Data Image Format (DIF). 
  1215.     SZFMT_DSPBITMAP 
  1216.             Specifies that the data is a bit-map representation of a private 
  1217.             data format. 
  1218.     SZFMT_DSPMETAFILE 
  1219.             Specifies that the data is a metafile representation of a private 
  1220.             data format. 
  1221.     SZFMT_DSPMETAFILEPICT 
  1222.             Specifies that the data is a metafile picture representation of a 
  1223.             private data format. 
  1224.     SZFMT_DSPTEXT 
  1225.             Specifies that the data is a text representation of a private data 
  1226.             format. 
  1227.     SZFMT_LINK 
  1228.             Specifies that the data is in link-file format. 
  1229.     SZFMT_METAFILE 
  1230.             Specifies that the data is a metafile. 
  1231.     SZFMT_METAFILEPICT 
  1232.             Specifies that the data is a metafile picture defined by an MFP 
  1233.             data structure. 
  1234.     SZFMT_OEMTEXT 
  1235.             Specifies that the data is in OEM Text format. 
  1236.     SZFMT_PALETTE 
  1237.             Specifies that the data is in palette format. 
  1238.     SZFMT_SYLK 
  1239.             Specifies that the data is in Synchronous Link format. 
  1240.     SZFMT_TEXT 
  1241.             Specifies that the data is an array of text characters. These 
  1242.             characters can include new-line characters to indicate linebreaks. 
  1243.             The zero-length character indicates the end of the text data. 
  1244.     SZFMT_TIFF 
  1245.             Specifies that the data is in Tag Image File Format (TIFF). 
  1246.  
  1247.  
  1248. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - offszItemName ΓòÉΓòÉΓòÉ
  1249.  
  1250.  offszItemName (USHORT) 
  1251.     Offset to item name. 
  1252.  
  1253.     This is the offset to the item name from the start of this structure. Item 
  1254.     name is a null (0x00) terminated string. If no item name exists, there must 
  1255.     be a single null (0x00) character in this position. (That is, ItemName is 
  1256.     ALWAYS a null terminated string.) 
  1257.  
  1258.  
  1259. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - offabData ΓòÉΓòÉΓòÉ
  1260.  
  1261.  offabData (USHORT) 
  1262.     Offset to beginning of data. 
  1263.  
  1264.     This is the offset to the data, from the start of this structure. This 
  1265.     field should be calculated regardless of the presence of data. If no data 
  1266.     exists, cbData must be zero (0). 
  1267.  
  1268.     For compatibility reasons, this data should not contain embedded pointers. 
  1269.     Offsets should be used instead. 
  1270.  
  1271.  
  1272. ΓòÉΓòÉΓòÉ 1.14. DEVOPENSTRUC ΓòÉΓòÉΓòÉ
  1273.  
  1274. Open-device data structure. 
  1275.  
  1276. typedef struct _DEVOPENSTRUC {
  1277.   PSZ           pszLogAddress;       /*  Logical address. */
  1278.   PSZ           pszDriverName;       /*  Driver name. */
  1279.   PDRIVDATA     pdriv;               /*  Driver data. */
  1280.   PSZ           pszDataType;         /*  Data type. */
  1281.   PSZ           pszComment;          /*  Comment. */
  1282.   PSZ           pszQueueProcName;    /*  Queue-processor name. */
  1283.   PSZ           pszQueueProcParams;  /*  Queue-processor parameters. */
  1284.   PSZ           pszSpoolerParams;    /*  Spooler parameters. */
  1285.   PSZ           pszNetworkParams;    /*  Network parameters. */
  1286. } DEVOPENSTRUC;
  1287.  
  1288. typedef DEVOPENSTRUC *PDEVOPENSTRUC;
  1289.  
  1290.  
  1291. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszLogAddress ΓòÉΓòÉΓòÉ
  1292.  
  1293.  pszLogAddress (PSZ) 
  1294.     Logical address. 
  1295.  
  1296.     This is required for an OD_DIRECT device being opened with DevOpenDC; it is 
  1297.     the logical device address, such as "LPT1" on OS/2. Some drivers may accept 
  1298.     a file name for this parameter or even a named pipe. 
  1299.  
  1300.     Where output is to be queued (for an OD_QUEUED device), this is the name of 
  1301.     the queue for the output device. The queue name can be a UNC name. 
  1302.  
  1303.     Note:  This parameter can be a port name for a printer device context. 
  1304.  
  1305.  
  1306. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszDriverName ΓòÉΓòÉΓòÉ
  1307.  
  1308.  pszDriverName (PSZ) 
  1309.     Driver name. 
  1310.  
  1311.     Character string identifying the printer driver, for example, LASERJET. The 
  1312.     Default Device Driver field of the PRQINFO3 structure, associated with the 
  1313.     required print queue, gives the driver and device name, separated by a 
  1314.     period, for example LASERJET.HP LaserJet IIID. It can contain only the name 
  1315.     up to the period, for example LASERJET. 
  1316.  
  1317.  
  1318. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pdriv ΓòÉΓòÉΓòÉ
  1319.  
  1320.  pdriv (PDRIVDATA) 
  1321.     Driver data. 
  1322.  
  1323.     Data that is to be passed directly to the PM device driver. Whether any of 
  1324.     this is required depends upon the device driver. 
  1325.  
  1326.     For printer device context, this is a pointer to the job properties data. 
  1327.  
  1328.  
  1329. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszDataType ΓòÉΓòÉΓòÉ
  1330.  
  1331.  pszDataType (PSZ) 
  1332.     Data type. 
  1333.  
  1334.     For an OD_QUEUED or OD_DIRECT device, this parameter defines the type of 
  1335.     data that is to be queued as follows: 
  1336.  
  1337.     PM_Q_STD        Standard format 
  1338.     PM_Q_RAW        Raw format 
  1339.  
  1340.     Note that a device driver can define other data types. 
  1341.  
  1342.     For OD_QUEUED or OD_DIRECT defice types, the default is supplied by the 
  1343.     device driver if pszDataType is not specified. For any other device type, 
  1344.     pszDataType is ignored. 
  1345.  
  1346.  
  1347. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszComment ΓòÉΓòÉΓòÉ
  1348.  
  1349.  pszComment (PSZ) 
  1350.     Comment. 
  1351.  
  1352.     Optional character string that the printer object displays to the user in a 
  1353.     job settings notebook. It is recommended that the application include its 
  1354.     own name in this comment string. 
  1355.  
  1356.     Note:  The job title text is derived from the document name passed to 
  1357.            DevEscape (DEVESC_STARTDOC). 
  1358.  
  1359.  
  1360. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszQueueProcName ΓòÉΓòÉΓòÉ
  1361.  
  1362.  pszQueueProcName (PSZ) 
  1363.     Queue-processor name. 
  1364.  
  1365.     This is the name of the queue processor, for queued output, and is usually 
  1366.     the default. 
  1367.  
  1368.  
  1369. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszQueueProcParams ΓòÉΓòÉΓòÉ
  1370.  
  1371.  pszQueueProcParams (PSZ) 
  1372.     Queue-processor parameters. 
  1373.  
  1374.     Queue processor parameters (optional). They can include information such as 
  1375.     the number of copies you want to print and the size of the output area on 
  1376.     the printed page. 
  1377.  
  1378.     The first parameter (COP) is used for all spool-file formats. The remaining 
  1379.     parameters are valid for PM_Q_STD spool files only. Because PM_Q_STD data 
  1380.     are used mainly for graphic data, these parameters are described in 
  1381.     relation to the printing of picture files. 
  1382.  
  1383.     The PMPRINT/PMPLOT queue-processor parameters are separated by spaces and 
  1384.     are: 
  1385.  
  1386.     COP=n 
  1387.              The COP parameter specifies the number of copies of the spool file 
  1388.              that you want printed. The value of n must be an integer in the 
  1389.              range of 1 through 999. 
  1390.  
  1391.              The default is COP=1. 
  1392.  
  1393.     ARE=C | w,h,l,t 
  1394.              The ARE parameter determines the size and position of the output 
  1395.              area. This is the area of the physical page to which printing is 
  1396.              restricted. 
  1397.  
  1398.              The default value of ARE=C means that the output area is the whole 
  1399.              page. Note, however, that the printer cannot print outside its own 
  1400.              device clip limits. 
  1401.  
  1402.              To size and position the output area at a specific point on the 
  1403.              page, use ARE=w,h,l,t, where: 
  1404.  
  1405.              w, h                are the width and height of the desired output 
  1406.                                  area. 
  1407.  
  1408.              l, t                are the offsets of the upper-left corner of 
  1409.                                  the output area from the left (l) and from the 
  1410.                                  top (t) of the maximum output area. 
  1411.  
  1412.              These four values must be given as percentages of the maximum 
  1413.              output dimensions. The maximum output area is the area within the 
  1414.              device clip limits. 
  1415.  
  1416.     FIT=S | l,t 
  1417.              The FIT parameter determines which part of the picture is to be 
  1418.              printed. You can request the whole of the picture, scaled to fit 
  1419.              the output area; or you can position the picture (actual size) 
  1420.              anywhere within the output area. This could mean that the picture 
  1421.              is clipped at the boundaries of the output area. 
  1422.  
  1423.              The default value of FIT=S causes the output to be scaled until 
  1424.              the larger of the height or width just fits within the defined 
  1425.              output area. The aspect ratio of the picture is maintained. 
  1426.  
  1427.              To print the picture in actual size, use FIT=l,t, where l,t are 
  1428.              the coordinates of the point in the picture that you want 
  1429.              positioned at the center of the output area: l is measured from 
  1430.              the left edge of the picture; and t is measured from the top edge. 
  1431.              The coordinates must be given as percentages of the actual 
  1432.              dimensions of the picture. 
  1433.  
  1434.     XFM=0 | 1 
  1435.              The XFM parameter enables you to override the picture-positioning 
  1436.              and clipping instructions that are provided by the ARE and FIT 
  1437.              parameters, including their defaults. 
  1438.  
  1439.              The default value of XFM=1 allows the appearance of the output to 
  1440.              be determined by the settings of the ARE and FIT parameters. 
  1441.  
  1442.              A value of XFM=0 yields output as specified in the picture file. 
  1443.              For example, applications that use many different forms can define 
  1444.              different positions on each form for their output. 
  1445.  
  1446.     COL=M | C 
  1447.              The COL parameter enables you to specify color output if you have 
  1448.              a color printer. 
  1449.  
  1450.              A value of COL=M creates monochrome output (black foreground with 
  1451.              no background color). This is supported by all devices. 
  1452.  
  1453.              A value of COL=C creates color output. If you request color output 
  1454.              on a monochrome device, the printer presentation driver tries to 
  1455.              satisfy your request, which can cause problems because the only 
  1456.              color available is black. For example, if the picture file 
  1457.              specifies a red line on a blue background, both are drawn in 
  1458.              black. 
  1459.  
  1460.              The default is COL=M when you are addressing a monochrome printer 
  1461.              and COL=C when you are addressing a color printer. 
  1462.  
  1463.     MAP=N | A 
  1464.              The MAP parameter enables you to decide how the neutral colors 
  1465.              (those that are not specified in the picture file) are printed. 
  1466.  
  1467.              The default value of MAP=N yields a normal representation of the 
  1468.              screen picture on a printed page, which means that the page 
  1469.              background is white and the foreground is black. 
  1470.  
  1471.              A value of MAP=A provides the reverse of the normal 
  1472.              representation:  the background is black and the foreground is 
  1473.              white on the printed page. 
  1474.  
  1475.     CDP=codepage 
  1476.              The CDP parameter overrides the codepage to being used for 
  1477.              PM_Q_RAW print jobs. The print queue driver uses DEVESC_SETMODE to 
  1478.              set the codepage, but not all printer drivers support this device 
  1479.              escape. 
  1480.  
  1481.     XLT=0 | 1 
  1482.              The XLT parameter can eliminate the translation component when 
  1483.              printing a metafile if XLT=1. 
  1484.  
  1485.              When the resolution of the device is higher than that of the world 
  1486.              coordinate space, a small translation of world coordinate point 
  1487.              (0,0) occurs on the device to preserve the accuracy of the mapping 
  1488.              from world to device coordinate units. For example, (0,0) becomes 
  1489.              (1,1) if there are 3 pels to every world coordinate. 
  1490.  
  1491.              Normally, this is not noticeable, but it can be a problem with 
  1492.              some devices. For example, in order to draw a complete row of 80 
  1493.              characters using a device font, a device may require the text to 
  1494.              start at device coordinate position zero. Starting at a position 
  1495.              other than zero may cause one or more characters at the end of the 
  1496.              row to be clipped. In such cases, elimination of the translation 
  1497.              is important and can be accomplished by specifying XLT=1. 
  1498.  
  1499.              The default is XLT=0. 
  1500.  
  1501.  
  1502. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszSpoolerParams ΓòÉΓòÉΓòÉ
  1503.  
  1504.  pszSpoolerParams (PSZ) 
  1505.     Spooler parameters. 
  1506.  
  1507.     Spooler parameters (optional) are separated by spaces. They are used for 
  1508.     scheduling print jobs and are as follows: 
  1509.  
  1510.         The form names that identify the paper to be used, for example, 
  1511.          FORM=A4,A5,ENV. The form names are optional; but if they are provided, 
  1512.          the spooler is able to hold off printing the jobs until the required 
  1513.          form is installed in the printer. If the form name is not provided, 
  1514.          the spooler attempts to print the job. The printer driver recognizes 
  1515.          that there is a forms problem and displays a FORMS MISMATCH message 
  1516.          box. 
  1517.  
  1518.         Priority of the print job, for example, PRTY=60. The priority is 
  1519.          specified as an integer in the range 1 through 99; 99 is the highest. 
  1520.          The default priority value is 50. The application can use the spooler 
  1521.          priority parameter to prioritize its own jobs; however, it is not good 
  1522.          practice for an application always to use priority 99 in an attempt to 
  1523.          get its jobs printed first. 
  1524.  
  1525.  
  1526. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszNetworkParams ΓòÉΓòÉΓòÉ
  1527.  
  1528.  pszNetworkParams (PSZ) 
  1529.     Network parameters. 
  1530.  
  1531.     Optional parameter that can be used to specify network options; for 
  1532.     example, USER=JOESMITH. 
  1533.  
  1534.  
  1535. ΓòÉΓòÉΓòÉ 1.15. DRIVDATA ΓòÉΓòÉΓòÉ
  1536.  
  1537. Driver-data structure. 
  1538.  
  1539. typedef struct _DRIVDATA {
  1540.   LONG     cb;                /*  Length. */
  1541.   LONG     lVersion;          /*  Version. */
  1542.   CHAR     szDeviceName[32];  /*  Device name. */
  1543.   CHAR     abGeneralData[1];  /*  General data. */
  1544. } DRIVDATA;
  1545.  
  1546. typedef DRIVDATA *PDRIVDATA;
  1547.  
  1548.  
  1549. ΓòÉΓòÉΓòÉ <hidden> DRIVDATA Field - cb ΓòÉΓòÉΓòÉ
  1550.  
  1551.  cb (LONG) 
  1552.     Length. 
  1553.  
  1554.     The length of the structure. 
  1555.  
  1556.  
  1557. ΓòÉΓòÉΓòÉ <hidden> DRIVDATA Field - lVersion ΓòÉΓòÉΓòÉ
  1558.  
  1559.  lVersion (LONG) 
  1560.     Version. 
  1561.  
  1562.     The version number of the data. Version numbers are defined by particular 
  1563.     PM device drivers. 
  1564.  
  1565.  
  1566. ΓòÉΓòÉΓòÉ <hidden> DRIVDATA Field - szDeviceName[32] ΓòÉΓòÉΓòÉ
  1567.  
  1568.  szDeviceName[32] (CHAR) 
  1569.     Device name. 
  1570.  
  1571.     A string in a 32-byte field identifying the particular device (model 
  1572.     number, and so on). Again, valid values are defined by PM device drivers. 
  1573.  
  1574.  
  1575. ΓòÉΓòÉΓòÉ <hidden> DRIVDATA Field - abGeneralData[1] ΓòÉΓòÉΓòÉ
  1576.  
  1577.  abGeneralData[1] (CHAR) 
  1578.     General data. 
  1579.  
  1580.     Data as defined by the Presentation Manager device driver. 
  1581.  
  1582.     The data type of this field is defined by the Presentation Manager device 
  1583.     driver. It does not contain pointers, as these are not necessarily valid 
  1584.     when passed to the device driver. 
  1585.  
  1586.  
  1587. ΓòÉΓòÉΓòÉ 1.16. ERRORID ΓòÉΓòÉΓòÉ
  1588.  
  1589. Error identity. 
  1590.  
  1591. typedef ULONG ERRORID;
  1592.  
  1593.  
  1594. ΓòÉΓòÉΓòÉ 1.17. ERRINFO ΓòÉΓòÉΓòÉ
  1595.  
  1596. Error-information structure. 
  1597.  
  1598. typedef struct _ERRINFO {
  1599.   ULONG       cbFixedErrInfo;  /*  Length of fixed data to this structure. */
  1600.   ERRORID     idError;         /*  Error identity. */
  1601.   ULONG       cDetailLevel;    /*  Number of levels of detail. */
  1602.   ULONG       offaoffszMsg;    /*  Offset to the array of message offsets. */
  1603.   ULONG       offBinaryData;   /*  Offset to the binary data. */
  1604. } ERRINFO;
  1605.  
  1606. typedef ERRINFO *PERRINFO;
  1607.  
  1608.  
  1609. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - cbFixedErrInfo ΓòÉΓòÉΓòÉ
  1610.  
  1611.  cbFixedErrInfo (ULONG) 
  1612.     Length of fixed data to this structure. 
  1613.  
  1614.  
  1615. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - idError ΓòÉΓòÉΓòÉ
  1616.  
  1617.  idError (ERRORID) 
  1618.     Error identity. 
  1619.  
  1620.     This is identical to the value returned by WinGetLastError. 
  1621.  
  1622.  
  1623. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - cDetailLevel ΓòÉΓòÉΓòÉ
  1624.  
  1625.  cDetailLevel (ULONG) 
  1626.     Number of levels of detail. 
  1627.  
  1628.     This is the number of entries in the array of words pointed to by the 
  1629.     following field. One level of detail is provided. 
  1630.  
  1631.  
  1632. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - offaoffszMsg ΓòÉΓòÉΓòÉ
  1633.  
  1634.  offaoffszMsg (ULONG) 
  1635.     Offset to the array of message offsets. 
  1636.  
  1637.     This is an offset to an array of 16-bit offsets to null-terminated strings. 
  1638.     Each string is a printable message that offers varying levels of 
  1639.     information.  The first level is the least amount of detail, and the 
  1640.     remaining levels offer more and more detail. 
  1641.  
  1642.     The first level of detail is always an error message string, in the 
  1643.     following format: 
  1644.  
  1645.             xxxnnnns
  1646.  
  1647.             where    xxx    is the product identifier
  1648.                      nnnn   is the message number
  1649.                      s      is the message severity letter
  1650.                               W = warning
  1651.                               E = error
  1652.                               S = severe error
  1653.                               U = unrecoverable
  1654.  
  1655.  
  1656. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - offBinaryData ΓòÉΓòÉΓòÉ
  1657.  
  1658.  offBinaryData (ULONG) 
  1659.     Offset to the binary data. 
  1660.  
  1661.     This can contain additional information relating to the error. 
  1662.  
  1663.  
  1664. ΓòÉΓòÉΓòÉ 1.18. FACENAMEDESC ΓòÉΓòÉΓòÉ
  1665.  
  1666. Face-name description structure. See GpiQueryFaceString. 
  1667.  
  1668. typedef struct _FACENAMEDESC {
  1669.   USHORT     usSize;         /*  Length of structure. */
  1670.   USHORT     usWeightClass;  /*  Weight class. */
  1671.   USHORT     usWidthClass;   /*  Width class. */
  1672.   USHORT     usReserved;     /*  Reserved. */
  1673.   ULONG      flOptions;      /*  Other characteristics of the font. */
  1674. } FACENAMEDESC;
  1675.  
  1676. typedef FACENAMEDESC *PFACENAMEDESC;
  1677.  
  1678.  
  1679. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - usSize ΓòÉΓòÉΓòÉ
  1680.  
  1681.  usSize (USHORT) 
  1682.     Length of structure. 
  1683.  
  1684.  
  1685. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - usWeightClass ΓòÉΓòÉΓòÉ
  1686.  
  1687.  usWeightClass (USHORT) 
  1688.     Weight class. 
  1689.  
  1690.     Indicates the visual weight (thickness of strokes) of the characters in the 
  1691.     font: 
  1692.  
  1693.     FWEIGHT_DONT_CARE 
  1694.                                    Any font weight satisfies the request. 
  1695.     FWEIGHT_ULTRA_LIGHT 
  1696.                                    Ultra-light. 
  1697.     FWEIGHT_EXTRA_LIGHT 
  1698.                                    Extra-light. 
  1699.     FWEIGHT_LIGHT 
  1700.                                    Light. 
  1701.     FWEIGHT_SEMI_LIGHT 
  1702.                                    Semi-light. 
  1703.     FWEIGHT_NORMAL 
  1704.                                    Medium (normal) weight. 
  1705.     FWEIGHT_SEMI_BOLD 
  1706.                                    Semi-bold. 
  1707.     FWEIGHT_BOLD 
  1708.                                    Bold. 
  1709.     FWEIGHT_EXTRA_BOLD 
  1710.                                    Extra-bold. 
  1711.     FWEIGHT_ULTRA_BOLD 
  1712.                                    Ultra-bold. 
  1713.  
  1714.  
  1715. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - usWidthClass ΓòÉΓòÉΓòÉ
  1716.  
  1717.  usWidthClass (USHORT) 
  1718.     Width class. 
  1719.  
  1720.     Indicates the relative aspect ratio of the characters of the font in 
  1721.     relation to the normal aspect ratio for this type of font: 
  1722.  
  1723.     FWIDTH_DONT_CARE 
  1724.                                    Any font width satisfies the request. 
  1725.     FWIDTH_ULTRA_CONDENSED 
  1726.                                    Ultra-condensed (50% of normal). 
  1727.     FWIDTH_EXTRA_CONDENSED 
  1728.                                    Extra-condensed (62.5% of normal). 
  1729.     FWIDTH_CONDENSED 
  1730.                                    Condensed (75% of normal). 
  1731.     FWIDTH_SEMI_CONDENSED 
  1732.                                    Semi-condensed (87.5% of normal). 
  1733.     FWIDTH_NORMAL 
  1734.                                    Medium (normal). 
  1735.     FWIDTH_SEMI_EXPANDED 
  1736.                                    Semi-expanded (112.5% of normal). 
  1737.     FWIDTH_EXPANDED 
  1738.                                    Expanded (125% of normal). 
  1739.     FWIDTH_EXTRA_EXPANDED 
  1740.                                    Extra-expanded (150% of normal). 
  1741.     FWIDTH_ULTRA_EXPANDED 
  1742.                                    Ultra-expanded (200% of normal). 
  1743.  
  1744.  
  1745. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - usReserved ΓòÉΓòÉΓòÉ
  1746.  
  1747.  usReserved (USHORT) 
  1748.     Reserved. 
  1749.  
  1750.  
  1751. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - flOptions ΓòÉΓòÉΓòÉ
  1752.  
  1753.  flOptions (ULONG) 
  1754.     Other characteristics of the font. 
  1755.  
  1756.     FTYPE_ITALIC 
  1757.                                    Italic font required. If not specified, 
  1758.                                    non-italic font required. 
  1759.  
  1760.     FTYPE_ITALIC_DONT_CARE 
  1761.                                    Italic and non-italic fonts can satisfy the 
  1762.                                    request. If this option is specified, 
  1763.                                    FTYPE_ITALIC is ignored. 
  1764.  
  1765.     FTYPE_OBLIQUE 
  1766.                                    Oblique font required. If not specified, 
  1767.                                    non-oblique font required. 
  1768.  
  1769.     FTYPE_OBLIQUE_DONT_CARE 
  1770.                                    Oblique and non-oblique fonts can satisfy 
  1771.                                    the request. If this option is specified, 
  1772.                                    FTYPE_OBLIQUE is ignored. 
  1773.  
  1774.     FTYPE_ROUNDED 
  1775.                                    Rounded font required. If not specified, 
  1776.                                    non-rounded font required. 
  1777.  
  1778.     FTYPE_ROUNDED_DONT_CARE 
  1779.                                    Rounded and non-rounded fonts can satisfy 
  1780.                                    the request. If this option is specified, 
  1781.                                    FTYPE_ROUNDED is ignored. 
  1782.  
  1783.  
  1784. ΓòÉΓòÉΓòÉ 1.19. FATTRS ΓòÉΓòÉΓòÉ
  1785.  
  1786. Font-attributes structure. 
  1787.  
  1788. typedef struct _FATTRS {
  1789.   USHORT     usRecordLength;        /*  Length of record. */
  1790.   USHORT     fsSelection;           /*  Selection indicators. */
  1791.   LONG       lMatch;                /*  Matched-font identity. */
  1792.   CHAR       szFacename[FACESIZE];  /*  Typeface name. */
  1793.   USHORT     idRegistry;            /*  Registry identifier. */
  1794.   USHORT     usCodePage;            /*  Code page. */
  1795.   LONG       lMaxBaselineExt;       /*  Maximum baseline extension. */
  1796.   LONG       lAveCharWidth;         /*  Average character width. */
  1797.   USHORT     fsType;                /*  Type indicators. */
  1798.   USHORT     fsFontUse;             /*  Font-use indicators. */
  1799. } FATTRS;
  1800.  
  1801. typedef FATTRS *PFATTRS;
  1802.  
  1803.  
  1804. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - usRecordLength ΓòÉΓòÉΓòÉ
  1805.  
  1806.  usRecordLength (USHORT) 
  1807.     Length of record. 
  1808.  
  1809.  
  1810. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - fsSelection ΓòÉΓòÉΓòÉ
  1811.  
  1812.  fsSelection (USHORT) 
  1813.     Selection indicators. 
  1814.  
  1815.     Flags causing the following features to be simulated by the system. 
  1816.  
  1817.     Note:  If an italic flag is applied to a font that is itself defined as 
  1818.            italic, the font is slanted further by italic simulation. 
  1819.  
  1820.     Underscore or strikeout lines are drawn using the appropriate attributes 
  1821.     (for example, color) from the character bundle (see the CHARBUNDLE 
  1822.     datatype), not the line bundle (see LINEBUNDLE). The width of the line, and 
  1823.     the vertical position of the line in font space, are determined by the 
  1824.     font. Horizontally, the line starts from a point in font space directly 
  1825.     above or below the start point of each character, and extends to a point 
  1826.     directly above or below the escapement point for that character. 
  1827.  
  1828.     For this purpose, the start and escapement points are those applicable to 
  1829.     left-to-right or right-to-left character directions (see 
  1830.     GpiSetCharDirection in Graphics Programming Interface Programming 
  1831.     Reference), even if the string is currently being drawn in a top-to-bottom 
  1832.     or bottom-to-top direction. 
  1833.  
  1834.     For left-to-right or right-to-left directions, any white space generated by 
  1835.     the character extra and character break extra attributes (see 
  1836.     GpiSetCharExtra and GpiSetCharBreakExtra in Graphics Programming Interface 
  1837.     Programming Reference), as well as increments provided by the vector of 
  1838.     increments on GpiCharStringPos and GpiCharStringPosAt, are also 
  1839.     underlined/overstruck, so that in these cases the line is continuous for 
  1840.     the string. 
  1841.  
  1842.     FATTR_SEL_ITALIC                   Generate italic font. 
  1843.  
  1844.     FATTR_SEL_UNDERSCORE               Generate underscored font. 
  1845.  
  1846.     FATTR_SEL_BOLD                     Generate bold font. (Note that the 
  1847.                                        resulting characters are wider than 
  1848.                                        those in the original font.) 
  1849.  
  1850.     FATTR_SEL_STRIKEOUT                Generate font with overstruck 
  1851.                                        characters. 
  1852.  
  1853.     FATTR_SEL_OUTLINE                  Use an outline font with hollow 
  1854.                                        characters. If this flag is not set, 
  1855.                                        outline font characters are filled. 
  1856.                                        Setting this flag normally gives better 
  1857.                                        performance, and for sufficiently small 
  1858.                                        characters (depending on device 
  1859.                                        resolution) there may be little visual 
  1860.                                        difference. 
  1861.  
  1862.  
  1863. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - lMatch ΓòÉΓòÉΓòÉ
  1864.  
  1865.  lMatch (LONG) 
  1866.     Matched-font identity. 
  1867.  
  1868.  
  1869. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - szFacename[FACESIZE] ΓòÉΓòÉΓòÉ
  1870.  
  1871.  szFacename[FACESIZE] (CHAR) 
  1872.     Typeface name. 
  1873.  
  1874.     The typeface name of the font, for example, Tms Rmn. 
  1875.  
  1876.  
  1877. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - idRegistry ΓòÉΓòÉΓòÉ
  1878.  
  1879.  idRegistry (USHORT) 
  1880.     Registry identifier. 
  1881.  
  1882.     Font registry identifier (zero if unknown). 
  1883.  
  1884.  
  1885. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - usCodePage ΓòÉΓòÉΓòÉ
  1886.  
  1887.  usCodePage (USHORT) 
  1888.     Code page. 
  1889.  
  1890.     If zero, the current Gpi code page (see GpiSetCp in Graphics Programming 
  1891.     Interface Programming Reference) is used. A subsequent GpiSetCp function 
  1892.     changes the code page used for this logical font. 
  1893.  
  1894.  
  1895. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - lMaxBaselineExt ΓòÉΓòÉΓòÉ
  1896.  
  1897.  lMaxBaselineExt (LONG) 
  1898.     Maximum baseline extension. 
  1899.  
  1900.     For raster fonts, this should be the height of the required font, in world 
  1901.     coordinates. 
  1902.  
  1903.     For outline fonts, this should be zero. 
  1904.  
  1905.  
  1906. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - lAveCharWidth ΓòÉΓòÉΓòÉ
  1907.  
  1908.  lAveCharWidth (LONG) 
  1909.     Average character width. 
  1910.  
  1911.     For raster fonts, this should be the width of the required font, in world 
  1912.     coordinates. 
  1913.  
  1914.     For outline fonts, this should be zero. 
  1915.  
  1916.  
  1917. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - fsType ΓòÉΓòÉΓòÉ
  1918.  
  1919.  fsType (USHORT) 
  1920.     Type indicators. 
  1921.  
  1922.     FATTR_TYPE_KERNING                 Enable kerning (PostScript only). 
  1923.  
  1924.     FATTR_TYPE_MBCS                    Font for mixed single- and double-byte 
  1925.                                        code pages. 
  1926.  
  1927.     FATTR_TYPE_DBCS                    Font for double-byte code pages. 
  1928.  
  1929.     FATTR_TYPE_ANTIALIASED             Antialiased font required. Only valid if 
  1930.                                        supported by the device driver. 
  1931.  
  1932.  
  1933. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - fsFontUse ΓòÉΓòÉΓòÉ
  1934.  
  1935.  fsFontUse (USHORT) 
  1936.     Font-use indicators. 
  1937.  
  1938.     These flags indicate how the font is to be used. They affect presentation 
  1939.     speed and font quality. 
  1940.  
  1941.     FATTR_FONTUSE_NOMIX 
  1942.                                   Text is not mixed with graphics and can be 
  1943.                                   written without regard to any interaction 
  1944.                                   with graphics objects. 
  1945.  
  1946.     FATTR_FONTUSE_OUTLINE 
  1947.                                   Select an outline (vector) font. The font 
  1948.                                   characters can be used as part of a path 
  1949.                                   definition. If this flag is not set, an 
  1950.                                   outline font might or might not be selected. 
  1951.                                   If an outline font is selected, however, 
  1952.                                   character widths are rounded to an integral 
  1953.                                   number of pels. 
  1954.  
  1955.     FATTR_FONTUSE_TRANSFORMABLE 
  1956.                                   Characters can be transformed (for example, 
  1957.                                   scaled, rotated, or sheared). 
  1958.  
  1959.  
  1960. ΓòÉΓòÉΓòÉ 1.20. FIXED ΓòÉΓòÉΓòÉ
  1961.  
  1962. Signed-integer fraction (16:16). This can be treated as a LONG where the value 
  1963. has been multiplied by 65 536. 
  1964.  
  1965. typedef LONG FIXED;
  1966.  
  1967.  
  1968. ΓòÉΓòÉΓòÉ 1.21. FFDESCS ΓòÉΓòÉΓòÉ
  1969.  
  1970. Font-file descriptor. 
  1971.  
  1972. typedef CHAR FFDESCS[2][FACESIZE];
  1973.  
  1974.  
  1975. ΓòÉΓòÉΓòÉ 1.22. FFDESCS2 ΓòÉΓòÉΓòÉ
  1976.  
  1977. Font-file descriptor. 
  1978.  
  1979. typedef struct _FFDESCS2 {
  1980.   ULONG     cbLength;          /*  Structure length. */
  1981.   ULONG     cbFacenameOffset;  /*  Offset of Facename in the structure. */
  1982.   BYTE      abFamilyName[1];   /*  Family name. */
  1983. } FFDESCS2;
  1984.  
  1985. typedef FFDESCS2 *PFFDESC2;
  1986.  
  1987.  
  1988. ΓòÉΓòÉΓòÉ <hidden> FFDESCS2 Field - cbLength ΓòÉΓòÉΓòÉ
  1989.  
  1990.  cbLength (ULONG) 
  1991.     Structure length. 
  1992.  
  1993.     cbLength is the overall length of the FFDESCS2 structure. It is always 
  1994.     rounded up to a multiple of four. 
  1995.  
  1996.  
  1997. ΓòÉΓòÉΓòÉ <hidden> FFDESCS2 Field - cbFacenameOffset ΓòÉΓòÉΓòÉ
  1998.  
  1999.  cbFacenameOffset (ULONG) 
  2000.     Offset of Facename in the structure. 
  2001.  
  2002.     The facename is a null terminated string. It starts at cbFacenameOffset 
  2003.     bytes offset into FFDESCS2. 
  2004.  
  2005.  
  2006. ΓòÉΓòÉΓòÉ <hidden> FFDESCS2 Field - abFamilyName[1] ΓòÉΓòÉΓòÉ
  2007.  
  2008.  abFamilyName[1] (BYTE) 
  2009.     Family name. 
  2010.  
  2011.     abFamilyName is a null terminated string. 
  2012.  
  2013.  
  2014. ΓòÉΓòÉΓòÉ 1.23. FOCAMETRICS ΓòÉΓòÉΓòÉ
  2015.  
  2016. FOCAMETRICS data structure. 
  2017.  
  2018. This structure is returned to applications on the GPIQueryFonts and 
  2019. GPIQueryFontMetrics calls and conveys information from the font creator to the 
  2020. application. 
  2021.  
  2022. typedef struct _FOCAMETRICS {
  2023.   ULONG      ulIdentity;                          /*  Structure identity code. */
  2024.   ULONG      ulSize;                              /*  Structure size in bytes. */
  2025.   CHAR       szFamilyname[32];  /*  Font family name. */
  2026.   CHAR       szFacename[32];    /*  Face name. The typeface name defines the particular font; for example, "Times New Roman Bold Italic."** This string is null terminated and is, therefore, limited to 32 characters in length. */
  2027.   SHORT      usRegistryId;                        /*  Registry identifier. */
  2028.   USHORT     usCodePage;                          /*  Code page supported by the font. */
  2029.   SHORT      yEmHeight;                           /*  Em height. */
  2030.   SHORT      yXHeight;                            /*  X height. */
  2031.   SHORT      yMaxAscender;                        /*  Maximum ascender. */
  2032.   SHORT      yMaxDescender;                       /*  Maximum descender. */
  2033.   SHORT      yLowerCaseAscent;                    /*  Lowercase ascent. */
  2034.   SHORT      yLowerCaseDescent;                   /*  Lowercase descent. */
  2035.   SHORT      yInternalLeading;                    /*  Internal leading. */
  2036.   SHORT      yExternalLeading;                    /*  External leading. */
  2037.   SHORT      xAveCharWidth;                       /*  Average character width. */
  2038.   SHORT      xMaxCharInc;                         /*  Maximum character increment. */
  2039.   SHORT      xEmInc;                              /*  Em increment. */
  2040.   SHORT      yMaxBaselineExt;                     /*  Maximum baseline extent. */
  2041.   SHORT      sCharSlope;                          /*  Character slope. */
  2042.   SHORT      sInlineDir;                          /*  Inline direction. */
  2043.   SHORT      sCharRot;                            /*  Character rotation. */
  2044.   USHORT     usWeightClass;                       /*  Weight class. */
  2045.   USHORT     usWidthClass;                        /*  Width class. */
  2046.   SHORT      xDeviceRes;                          /*  X-device resolution. */
  2047.   SHORT      yDeviceRes;                          /*  Y-device resolution. */
  2048.   SHORT      usFirstChar;                         /*  First character. */
  2049.   SHORT      usLastChar;                          /*  Last character. */
  2050.   SHORT      usDefaultChar;                       /*  Default character. */
  2051.   SHORT      usBreakChar;                         /*  Break character. */
  2052.   SHORT      usNominalPointSize;                  /*  Nominal point size. */
  2053.   SHORT      usMinimumPointSize;                  /*  Minimum point size. */
  2054.   SHORT      usMaximumPointSize;                  /*  Maximum point size. */
  2055.   SHORT      usTypeFlags;                         /*  Type indicators. */
  2056.   SHORT      fsDefn;                              /*  Definition indicators. */
  2057.   SHORT      fsSelectionFlags;                    /*  Selection indicators. */
  2058.   SHORT      fsCapabilities;                      /*  Capabilities. */
  2059.   SHORT      ySubscriptXSize;                     /*  Subscript X-size. */
  2060.   SHORT      ySubscriptYSize;                     /*  Subscript Y-size. */
  2061.   SHORT      ySubscriptXOffset;                   /*  Subscript X-offset. */
  2062.   SHORT      ySubscriptYOffset;                   /*  Subscript Y-offset. */
  2063.   SHORT      ySuperscriptXSize;                   /*  Superscript X-size. */
  2064.   SHORT      ySuperscriptYSize;                   /*  Superscript Y-size. */
  2065.   SHORT      ySuperscriptXOffset;                 /*  Superscript X-offset. */
  2066.   SHORT      ySuperscriptYOffset;                 /*  Superscript Y-offset. */
  2067.   SHORT      yUnderscoreSize;                     /*  Underscore size. */
  2068.   SHORT      yUnderscorePosition;                 /*  Underscore position. */
  2069.   SHORT      yStrikeoutSize;                      /*  Strikeout size. */
  2070.   SHORT      yStrikeoutPosition;                  /*  Strikeout position. */
  2071.   SHORT      usKerningPairs;                      /*  Kerning pairs. */
  2072.   SHORT      sFamilyClass;                        /*  Font family design classification. */
  2073.   PSZ        pszDeviceNameOffset;                 /*  Address where device name is stored. */
  2074. } FOCAMETRICS;
  2075.  
  2076. typedef FOCAMETRICS *PFOCAMETRICS;
  2077.  
  2078.  
  2079. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ulIdentity ΓòÉΓòÉΓòÉ
  2080.  
  2081.  ulIdentity (ULONG) 
  2082.     Structure identity code. 
  2083.  
  2084.     Value must be one (1). This field is not part of the FONTMETRICS structure. 
  2085.  
  2086.  
  2087. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ulSize ΓòÉΓòÉΓòÉ
  2088.  
  2089.  ulSize (ULONG) 
  2090.     Structure size in bytes. 
  2091.  
  2092.     This must be set to the size of the FOCAMETRICS structure. This field is 
  2093.     not part of the FONTMETRICS structure. 
  2094.  
  2095.  
  2096. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - szFamilyname[32] ΓòÉΓòÉΓòÉ
  2097.  
  2098.  szFamilyname[32] (CHAR) 
  2099.     Font family name. 
  2100.  
  2101.     The family name defines the basic appearance of the font; for example, 
  2102.     "Times New Roman."** This string is null terminated and is, therefore, 
  2103.     limited to 32 characters in length. 
  2104.  
  2105.  
  2106. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - szFacename[32] ΓòÉΓòÉΓòÉ
  2107.  
  2108.  szFacename[32] (CHAR) 
  2109.     Face name. The typeface name defines the particular font; for example, 
  2110.     "Times New Roman Bold Italic."** This string is null terminated and is, 
  2111.     therefore, limited to 32 characters in length. 
  2112.  
  2113.  
  2114. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usRegistryId ΓòÉΓòÉΓòÉ
  2115.  
  2116.  usRegistryId (SHORT) 
  2117.     Registry identifier. 
  2118.  
  2119.     The IBM registered number (or zero). 
  2120.  
  2121.  
  2122. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usCodePage ΓòÉΓòÉΓòÉ
  2123.  
  2124.  usCodePage (USHORT) 
  2125.     Code page supported by the font. 
  2126.  
  2127.     Defines the registered code page supported by the font. A value of zero (0) 
  2128.     implies that the font may be used with any of the code pages supported by 
  2129.     OS/2. 
  2130.  
  2131.     When a font contains special symbols for which there is no registered code 
  2132.     page, then code page 65400 is used. 
  2133.  
  2134.  
  2135. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yEmHeight ΓòÉΓòÉΓòÉ
  2136.  
  2137.  yEmHeight (SHORT) 
  2138.     Em height. 
  2139.  
  2140.     The height of the Em square in world coordinate units. This height 
  2141.     corresponds to the point size for the font. 
  2142.  
  2143.  
  2144. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yXHeight ΓòÉΓòÉΓòÉ
  2145.  
  2146.  yXHeight (SHORT) 
  2147.     X height. 
  2148.  
  2149.     The nominal height above the baseline for lowercase characters (ignoring 
  2150.     ascenders), in world coordinate units. 
  2151.  
  2152.  
  2153. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yMaxAscender ΓòÉΓòÉΓòÉ
  2154.  
  2155.  yMaxAscender (SHORT) 
  2156.     Maximum ascender. 
  2157.  
  2158.     The maximum height above the baseline reached by any part of any symbol in 
  2159.     the font, in world coordinate units. This field may exceed yEmHeight. 
  2160.  
  2161.  
  2162. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yMaxDescender ΓòÉΓòÉΓòÉ
  2163.  
  2164.  yMaxDescender (SHORT) 
  2165.     Maximum descender. 
  2166.  
  2167.     The maximum depth below the baseline reached by any part of any symbol in 
  2168.     the font, in world coordinate units. This field may exceed yEmHeight. 
  2169.  
  2170.  
  2171. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yLowerCaseAscent ΓòÉΓòÉΓòÉ
  2172.  
  2173.  yLowerCaseAscent (SHORT) 
  2174.     Lowercase ascent. 
  2175.  
  2176.     The maximum height above the baseline reached by any part of any lowercase 
  2177.     (Latin unaccented ' a ' through ' z ') symbol in the font, in world 
  2178.     coordinate units. 
  2179.  
  2180.  
  2181. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yLowerCaseDescent ΓòÉΓòÉΓòÉ
  2182.  
  2183.  yLowerCaseDescent (SHORT) 
  2184.     Lowercase descent. 
  2185.  
  2186.     The maximum depth below the baseline reached by any part of any lowercase 
  2187.     (Latin unaccented ' a ' through ' z ') symbol in the font, in world 
  2188.     coordinate units. 
  2189.  
  2190.  
  2191. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yInternalLeading ΓòÉΓòÉΓòÉ
  2192.  
  2193.  yInternalLeading (SHORT) 
  2194.     Internal leading. 
  2195.  
  2196.     The amount of space which, when subtracted from yMaxAscender, gives a 
  2197.     measure of the distance above the baseline that characters extend. This 
  2198.     measure is font-design dependent, but glyph-set independent. Therefore, 
  2199.     this calculation approximates the visual top to a row of characters without 
  2200.     actually looking at the characters in the row. 
  2201.  
  2202.     It is recommended that applications use this field to position the first 
  2203.     line of a block of text by subtracting yInternalLeading from yMaxAscender. 
  2204.     Then position the baseline that distance below the preceding information 
  2205.     (text or graphic element). 
  2206.  
  2207.     Note:  This use does not guarantee that characters will not overwrite those 
  2208.            above them; it does give a font designer's view of where to place 
  2209.            the text. Collision should be tested for and additional space 
  2210.            allocated if necessary. 
  2211.  
  2212.  
  2213. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yExternalLeading ΓòÉΓòÉΓòÉ
  2214.  
  2215.  yExternalLeading (SHORT) 
  2216.     External leading. 
  2217.  
  2218.     The amount of guaranteed white space advised by the font designer to appear 
  2219.     between adjacent rows of text. This value may be zero (0). 
  2220.  
  2221.     Note:  The fonts built into Presentation Manager have zero (0) in this 
  2222.            field. 
  2223.  
  2224.  
  2225. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - xAveCharWidth ΓòÉΓòÉΓòÉ
  2226.  
  2227.  xAveCharWidth (SHORT) 
  2228.     Average character width. 
  2229.  
  2230.     This is determined by multiplying the width of each lowercase character  by 
  2231.     a constant, adding the products, and then dividing by 1000. The letters, 
  2232.     plus their constants, are listed below: 
  2233.  
  2234.          Letter  Constant 
  2235.     a            64 
  2236.     b            14 
  2237.     c            27 
  2238.     d            35 
  2239.     e            100 
  2240.     f            20 
  2241.     g            14 
  2242.     h            42 
  2243.     i            63 
  2244.     j            3 
  2245.     k            6 
  2246.     l            35 
  2247.     m            20 
  2248.     n            56 
  2249.     o            56 
  2250.     p            17 
  2251.     q            4 
  2252.     r            49 
  2253.     s            56 
  2254.     t            71 
  2255.     u            31 
  2256.     v            10 
  2257.     w            18 
  2258.     x            3 
  2259.     y            18 
  2260.     z            2 
  2261.     space        166 
  2262.  
  2263.                  Note:  For fixed pitch fonts, this value will be the same as 
  2264.                         the (A width + B width + C width) escapement of each 
  2265.                         character. 
  2266.  
  2267.  
  2268. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - xMaxCharInc ΓòÉΓòÉΓòÉ
  2269.  
  2270.  xMaxCharInc (SHORT) 
  2271.     Maximum character increment. 
  2272.  
  2273.     The maximum character increment for the font, in world coordinate units. 
  2274.  
  2275.  
  2276. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - xEmInc ΓòÉΓòÉΓòÉ
  2277.  
  2278.  xEmInc (SHORT) 
  2279.     Em increment. 
  2280.  
  2281.     The width of the Em square in world coordinate units. This width 
  2282.     corresponds to the point size of the font. When the horizontal device 
  2283.     resolution equals the vertical device resolution, width is equal to the em 
  2284.     height. 
  2285.  
  2286.  
  2287. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yMaxBaselineExt ΓòÉΓòÉΓòÉ
  2288.  
  2289.  yMaxBaselineExt (SHORT) 
  2290.     Maximum baseline extent. 
  2291.  
  2292.     The maximum vertical space occupied by the font, in world coordinate units. 
  2293.     This space is the sum of yMaxAscender and yMaxDescender if both are 
  2294.     positive. It is also the sum of yInternalLeading and yEmHeight. 
  2295.  
  2296.     One possible line spacing can be computed by adding yMaxBaselineExt to 
  2297.     yInternalLeading. Such a line spacing, however, would be dependent on the 
  2298.     glyph set included in the font. If a new version of the font is made 
  2299.     available with new glyphs, then it is possible that this value will change 
  2300.     because one of the new glyphs has gone above the previous yMaxAscender or 
  2301.     below the previous yMaxDescender. More sophisticated applications will base 
  2302.     their line spacing on the point size (yEmHeight) of the font, which is an 
  2303.     invariant of the font, multiplied by some factor (for example, 120%), plus 
  2304.     any external leading. 
  2305.  
  2306.     yMaxBaselineExt may exceed yEmHeight. 
  2307.  
  2308.  
  2309. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - sCharSlope ΓòÉΓòÉΓòÉ
  2310.  
  2311.  sCharSlope (SHORT) 
  2312.     Character slope. 
  2313.  
  2314.     Defines the nominal slope of the characters of a font. The slope is defined 
  2315.     in degrees, increasing clockwise from the vertical. An italic font is an 
  2316.     example of a font with a nonzero slope. 
  2317.  
  2318.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  2319.            in the following example. 
  2320.  
  2321.  
  2322.                       180 degrees 59 minutes would be represented as:
  2323.  
  2324.                       Γöé   < byte 1  > Γöé   < byte 2   >  Γöé
  2325.  
  2326.                       Γöé Γöé < Minutes > Γöé   < Degrees >   Γöé
  2327.  
  2328.                       Γöé0Γöé1 1 1 0 1 1  Γöé0 1 0 1 1 0 1 0 0Γöé
  2329.  
  2330.                         Γöé  59 min     Γöé   180 degrees   Γöé
  2331.  
  2332.  
  2333. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - sInlineDir ΓòÉΓòÉΓòÉ
  2334.  
  2335.  sInlineDir (SHORT) 
  2336.     Inline direction. 
  2337.  
  2338.     The direction in which the characters in the font are designed for viewing. 
  2339.     Shown in degrees, increasing clockwise from the horizontal (left-to-right). 
  2340.     Characters are added to a line of text in the inline direction. 
  2341.  
  2342.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  2343.            in sCharSlope. 
  2344.  
  2345.  
  2346. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - sCharRot ΓòÉΓòÉΓòÉ
  2347.  
  2348.  sCharRot (SHORT) 
  2349.     Character rotation. 
  2350.  
  2351.     The rotation of the character glyphs with respect to the baseline, the 
  2352.     angle increasing counterclockwise. This is the angle assigned by the font 
  2353.     designer. 
  2354.  
  2355.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  2356.            in sCharSlope. 
  2357.  
  2358.  
  2359. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usWeightClass ΓòÉΓòÉΓòÉ
  2360.  
  2361.  usWeightClass (USHORT) 
  2362.     Weight class. 
  2363.  
  2364.     Indicates the visual weight (thickness of strokes) of the characters in the 
  2365.     font: 
  2366.  
  2367.          Value   Description 
  2368.     1000         Ultra-light 
  2369.     2000         Extra-light 
  2370.     3000         Light 
  2371.     4000         Semi-light 
  2372.     5000         Medium (normal) 
  2373.     6000         Semi-bold 
  2374.     7000         Bold 
  2375.     8000         Extra-bold 
  2376.     9000         Ultra-bold 
  2377.  
  2378.  
  2379. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usWidthClass ΓòÉΓòÉΓòÉ
  2380.  
  2381.  usWidthClass (USHORT) 
  2382.     Width class. 
  2383.  
  2384.     Indicates the relative aspect ratio of the font characters in relation to 
  2385.     the normal aspect ratio for this type of font: 
  2386.  
  2387.         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2388.         ΓöéValue          ΓöéDescription                   Γöé% of Normal    Γöé
  2389.         Γöé               Γöé                              ΓöéWidth          Γöé
  2390.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2391.         Γöé1000           ΓöéUltra-condensed               Γöé50             Γöé
  2392.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2393.         Γöé2000           ΓöéExtra-condensed               Γöé62.5           Γöé
  2394.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2395.         Γöé3000           ΓöéCondensed                     Γöé75             Γöé
  2396.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2397.         Γöé4000           ΓöéSemi-condensed                Γöé87.5           Γöé
  2398.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2399.         Γöé5000           ΓöéMedium (normal)               Γöé100            Γöé
  2400.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2401.         Γöé6000           ΓöéSemi-expanded                 Γöé112.5          Γöé
  2402.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2403.         Γöé7000           ΓöéExpanded                      Γöé125            Γöé
  2404.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2405.         Γöé8000           ΓöéExtra-expanded                Γöé150            Γöé
  2406.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2407.         Γöé9000           ΓöéUltra-expanded                Γöé200            Γöé
  2408.         ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2409.  
  2410.  
  2411. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - xDeviceRes ΓòÉΓòÉΓòÉ
  2412.  
  2413.  xDeviceRes (SHORT) 
  2414.     X-device resolution. 
  2415.  
  2416.     For bit-map fonts, this is the resolution in the X direction of the 
  2417.     intended target device, measured in pels per inch. 
  2418.  
  2419.     For outline fonts, this is the number of notional units in the X direction 
  2420.     of the Em square, measured in notional units per Em. (Notional units are 
  2421.     the units in which the outline is defined.) 
  2422.  
  2423.  
  2424. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yDeviceRes ΓòÉΓòÉΓòÉ
  2425.  
  2426.  yDeviceRes (SHORT) 
  2427.     Y-device resolution. 
  2428.  
  2429.     For bit-map fonts, this is the resolution in the Y direction of the 
  2430.     intended target device, measured in pels per inch. 
  2431.  
  2432.     For outline fonts, this is the number of notional units in the Y direction 
  2433.     of the Em square, measured in notional units per Em. (Notional units are 
  2434.     the units in which the outline is defined.) 
  2435.  
  2436.  
  2437. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usFirstChar ΓòÉΓòÉΓòÉ
  2438.  
  2439.  usFirstChar (SHORT) 
  2440.     First character. 
  2441.  
  2442.     The code point of the first character in the font. 
  2443.  
  2444.  
  2445. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usLastChar ΓòÉΓòÉΓòÉ
  2446.  
  2447.  usLastChar (SHORT) 
  2448.     Last character. 
  2449.  
  2450.     The code point of the last character in the font, expressed as an offset 
  2451.     from usFirstChar. 
  2452.  
  2453.     All code points between the first and last character specified must be 
  2454.     supported by the font. 
  2455.  
  2456.  
  2457. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usDefaultChar ΓòÉΓòÉΓòÉ
  2458.  
  2459.  usDefaultChar (SHORT) 
  2460.     Default character. 
  2461.  
  2462.     The code point that is used if a code point outside the range supported by 
  2463.     the font is used, expressed as an offset from usFirstChar. 
  2464.  
  2465.  
  2466. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usBreakChar ΓòÉΓòÉΓòÉ
  2467.  
  2468.  usBreakChar (SHORT) 
  2469.     Break character. 
  2470.  
  2471.     The code point that represents the "space" or "break" character for this 
  2472.     font, expressed as an offset from usFirstChar. For example, if the first 
  2473.     character is the space in code page 850, usFirstChar = 32, and usBreakChar 
  2474.     = 0. 
  2475.  
  2476.  
  2477. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usNominalPointSize ΓòÉΓòÉΓòÉ
  2478.  
  2479.  usNominalPointSize (SHORT) 
  2480.     Nominal point size. 
  2481.  
  2482.     For a bit-map font, this field contains the height of the font. 
  2483.  
  2484.     For an outline font, this field contains the height that the font designer 
  2485.     intended for this font. For example, some fonts are designed for text use, 
  2486.     in which case a value of 120 (12 point) would probably be placed in this 
  2487.     field. Other fonts are designed for "display" use ("display" is a 
  2488.     typographer's term for larger point sizes). This is not the only size at 
  2489.     which the font can be used. 
  2490.  
  2491.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  2492.  
  2493.  
  2494. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usMinimumPointSize ΓòÉΓòÉΓòÉ
  2495.  
  2496.  usMinimumPointSize (SHORT) 
  2497.     Minimum point size. 
  2498.  
  2499.     For a bit-map font, this field is not applicable. 
  2500.  
  2501.     For an outline font, this field contains the minimum height that the font 
  2502.     designer intended for this font. Note that this is not a restriction on the 
  2503.     size at which the font can be used. 
  2504.  
  2505.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  2506.  
  2507.  
  2508. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usMaximumPointSize ΓòÉΓòÉΓòÉ
  2509.  
  2510.  usMaximumPointSize (SHORT) 
  2511.     Maximum point size. 
  2512.  
  2513.     For a bit-map font, this field is not applicable. 
  2514.  
  2515.     For an outline font, this field contains the maximum height that the font 
  2516.     designer intended for this font. Note that this is not a restriction on the 
  2517.     size at which the font can be used. 
  2518.  
  2519.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  2520.  
  2521.  
  2522. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usTypeFlags ΓòÉΓòÉΓòÉ
  2523.  
  2524.  usTypeFlags (SHORT) 
  2525.     Type indicators. 
  2526.  
  2527.     These flags contain the following information: 
  2528.  
  2529.     FM_TYPE_FIXED                 Characters in the font have the same fixed 
  2530.                                   width. 
  2531.     FM_TYPE_LICENSED              Licensed (protected) font. 
  2532.     FM_TYPE_KERNING               Font contains kerning information. 
  2533.     FM_TYPE_64K                   Font is larger than 64KB (KB equals 1024 
  2534.                                   bytes) in size. Only one of the following 
  2535.                                   bits (FM_TYPE_DBCS or FM_TYPE_MCBS) may be 
  2536.                                   set. If both of those bits are false (not 
  2537.                                   set), the font is for single-byte code pages. 
  2538.     FM_TYPE_DBCS                  Font is for double-byte code pages. 
  2539.     FM_TYPE_MBCS                  Font is for mixed single- and double-byte 
  2540.                                   code pages. 
  2541.     FM_TYPE_FACETRUNC             Font szFacename[32] has been truncated. 
  2542.     FM_TYPE_FAMTRUNC              Font szFamilyname[32] has been truncated. 
  2543.  
  2544.  
  2545. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - fsDefn ΓòÉΓòÉΓòÉ
  2546.  
  2547.  fsDefn (SHORT) 
  2548.     Definition indicators. 
  2549.  
  2550.     These indicators contain the following font definition data: 
  2551.  
  2552.     FM_DEFN_OUTLINE               Font is a vector (outline) font; otherwise, 
  2553.                                   it is a bit map font. 
  2554.     FM_DEFN_GENERIC               Font is in a format that can be used by the 
  2555.                                   GPI; otherwise, it is a device font. 
  2556.  
  2557.  
  2558. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - fsSelectionFlags ΓòÉΓòÉΓòÉ
  2559.  
  2560.  fsSelectionFlags (SHORT) 
  2561.     Selection indicators. 
  2562.  
  2563.     These indicators contain information about the font patterns in the 
  2564.     physical font. 
  2565.  
  2566.     Note:  The flags do not reflect simulations applied to the physical font. 
  2567.  
  2568.     FM_SEL_ITALIC                 TRUE indicates that this font is designed as 
  2569.                                   an italic font. 
  2570.     FM_SEL_UNDERSCORE             TRUE indicates that this font is designed 
  2571.                                   with underscores included in each character. 
  2572.     FM_SEL_NEGATIVE               TRUE indicates that this font is designed 
  2573.                                   with the background and foreground reversed. 
  2574.     FM_SEL_OUTLINE                TRUE indicates that this font is designed 
  2575.                                   with outline (hollow) characters. 
  2576.     FM_SEL_STRIKEOUT              TRUE indicates that this font is designed 
  2577.                                   with an overstrike through each character. 
  2578.     FM_SEL_BOLD                   TRUE indicates that this font is designed 
  2579.                                   with bold characters. 
  2580.  
  2581.  
  2582. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - fsCapabilities ΓòÉΓòÉΓòÉ
  2583.  
  2584.  fsCapabilities (SHORT) 
  2585.     Capabilities. 
  2586.  
  2587.     This attribute applies only to device fonts. 
  2588.  
  2589.     FM_CAP_NOMIX           Characters may not be mixed with graphics. 
  2590.     QUALITY                The most significant byte may contain the following 
  2591.                            numeric value: 
  2592.                            0        Undefined 
  2593.  
  2594.                            1        DP quality 
  2595.  
  2596.                            2        DP draft 
  2597.  
  2598.                            3        Near Letter Quality 
  2599.  
  2600.                            4        Letter Quality 
  2601.  
  2602.  
  2603. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySubscriptXSize ΓòÉΓòÉΓòÉ
  2604.  
  2605.  ySubscriptXSize (SHORT) 
  2606.     Subscript X-size. 
  2607.  
  2608.     The recommended horizontal point size for subscripts for this font, in 
  2609.     world coordinate units. 
  2610.  
  2611.  
  2612. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySubscriptYSize ΓòÉΓòÉΓòÉ
  2613.  
  2614.  ySubscriptYSize (SHORT) 
  2615.     Subscript Y-size. 
  2616.  
  2617.     The recommended vertical point size for subscripts for this font, in world 
  2618.     coordinate units. 
  2619.  
  2620.  
  2621. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySubscriptXOffset ΓòÉΓòÉΓòÉ
  2622.  
  2623.  ySubscriptXOffset (SHORT) 
  2624.     Subscript X-offset. 
  2625.  
  2626.     The recommended baseline X-offset for subscripts for this font, in world 
  2627.     coordinate units. 
  2628.  
  2629.  
  2630. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySubscriptYOffset ΓòÉΓòÉΓòÉ
  2631.  
  2632.  ySubscriptYOffset (SHORT) 
  2633.     Subscript Y-offset. 
  2634.  
  2635.     The recommended baseline Y-offset for subscripts for this font, in world 
  2636.     coordinate units. 
  2637.  
  2638.  
  2639. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySuperscriptXSize ΓòÉΓòÉΓòÉ
  2640.  
  2641.  ySuperscriptXSize (SHORT) 
  2642.     Superscript X-size. 
  2643.  
  2644.     The recommended horizontal point size for superscripts for this font, in 
  2645.     world coordinate units. 
  2646.  
  2647.  
  2648. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySuperscriptYSize ΓòÉΓòÉΓòÉ
  2649.  
  2650.  ySuperscriptYSize (SHORT) 
  2651.     Superscript Y-size. 
  2652.  
  2653.     The recommended vertical point size for superscripts for this font, in 
  2654.     world coordinate units. 
  2655.  
  2656.  
  2657. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySuperscriptXOffset ΓòÉΓòÉΓòÉ
  2658.  
  2659.  ySuperscriptXOffset (SHORT) 
  2660.     Superscript X-offset. 
  2661.  
  2662.     The recommended baseline X-offset for superscripts for this font, in world 
  2663.     coordinate units. 
  2664.  
  2665.  
  2666. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySuperscriptYOffset ΓòÉΓòÉΓòÉ
  2667.  
  2668.  ySuperscriptYOffset (SHORT) 
  2669.     Superscript Y-offset. 
  2670.  
  2671.     The recommended baseline Y-offset for superscripts for this font, in world 
  2672.     coordinate units. 
  2673.  
  2674.  
  2675. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yUnderscoreSize ΓòÉΓòÉΓòÉ
  2676.  
  2677.  yUnderscoreSize (SHORT) 
  2678.     Underscore size. 
  2679.  
  2680.     The width (thickness) of the underscore stroke, in world coordinate units. 
  2681.     This describes the actual underscore in the font if FM_SEL_UNDERSCORE is 
  2682.     also set. Otherwise, it describes what the graphics engine will simulate if 
  2683.     underscore is requested in GpiCreateLogFont. 
  2684.  
  2685.  
  2686. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yUnderscorePosition ΓòÉΓòÉΓòÉ
  2687.  
  2688.  yUnderscorePosition (SHORT) 
  2689.     Underscore position. 
  2690.  
  2691.     The position of the underscore stroke from the baseline, in world 
  2692.     coordinate units. This value describes the actual underscore in the font if 
  2693.     FM_SEL_UNDERSCORE is also set. Otherwise, it describes what the graphics 
  2694.     engine will simulate if underscore is requested in GpiCreateLogFont. 
  2695.  
  2696.     Note:  Positive values mean below the baseline. 
  2697.  
  2698.  
  2699. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yStrikeoutSize ΓòÉΓòÉΓòÉ
  2700.  
  2701.  yStrikeoutSize (SHORT) 
  2702.     Strikeout size. 
  2703.  
  2704.     The width of the strikeout stroke, in world coordinate units. This value 
  2705.     describes the actual strikeout in the font if FM_SEL_STRIKEOUT is also set. 
  2706.     Otherwise, it describes what the graphics engine will simulate if 
  2707.     overstrike is requested in GpiCreateLogFont. 
  2708.  
  2709.  
  2710. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yStrikeoutPosition ΓòÉΓòÉΓòÉ
  2711.  
  2712.  yStrikeoutPosition (SHORT) 
  2713.     Strikeout position. 
  2714.  
  2715.     The position of the strikeout stroke relative to the baseline, in world 
  2716.     coordinate units. This value describes the actual strikeout in the font if 
  2717.     FM_SEL_STRIKEOUT is also set. Otherwise, it describes what the graphics 
  2718.     engine will simulate if overstrike is requested in GpiCreateLogFont. 
  2719.  
  2720.  
  2721. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usKerningPairs ΓòÉΓòÉΓòÉ
  2722.  
  2723.  usKerningPairs (SHORT) 
  2724.     Kerning pairs. 
  2725.  
  2726.     The number of kerning pairs in the kerning pair table. 
  2727.  
  2728.  
  2729. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - sFamilyClass ΓòÉΓòÉΓòÉ
  2730.  
  2731.  sFamilyClass (SHORT) 
  2732.     Font family design classification. 
  2733.  
  2734.     This value contains a font class and its subclass. 
  2735.  
  2736.  
  2737. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - pszDeviceNameOffset ΓòÉΓòÉΓòÉ
  2738.  
  2739.  pszDeviceNameOffset (PSZ) 
  2740.     Address where device name is stored. 
  2741.  
  2742.  
  2743. ΓòÉΓòÉΓòÉ 1.24. FONTMETRICS ΓòÉΓòÉΓòÉ
  2744.  
  2745. Font-metrics structure. 
  2746.  
  2747. This structure is returned to applications on the GpiQueryFonts and 
  2748. GpiQueryFontMetrics calls and conveys information from the font creator to the 
  2749. application. 
  2750.  
  2751. typedef struct _FONTMETRICS {
  2752.   CHAR       szFamilyname[FACESIZE];  /*  Family name. */
  2753.   CHAR       szFacename[FACESIZE];    /*  Face name. */
  2754.   USHORT     idRegistry;              /*  Registry identifier. */
  2755.   USHORT     usCodePage;              /*  Code page. */
  2756.   LONG       lEmHeight;               /*  Em height. */
  2757.   LONG       lXHeight;                /*  X height. */
  2758.   LONG       lMaxAscender;            /*  Maximum ascender. */
  2759.   LONG       lMaxDescender;           /*  Maximum descender. */
  2760.   LONG       lLowerCaseAscent;        /*  Lowercase ascent. */
  2761.   LONG       lLowerCaseDescent;       /*  Lowercase descent. */
  2762.   LONG       lInternalLeading;        /*  Internal leading. */
  2763.   LONG       lExternalLeading;        /*  External leading. */
  2764.   LONG       lAveCharWidth;           /*  Average character width. */
  2765.   LONG       lMaxCharInc;             /*  Maximum character increment. */
  2766.   LONG       lEmInc;                  /*  Em increment. */
  2767.   LONG       lMaxBaselineExt;         /*  Maximum baseline extent. */
  2768.   SHORT      sCharSlope;              /*  Character slope. */
  2769.   SHORT      sInlineDir;              /*  Inline direction. */
  2770.   SHORT      sCharRot;                /*  Character rotation. */
  2771.   USHORT     usWeightClass;           /*  Weight class. */
  2772.   USHORT     usWidthClass;            /*  Width class. */
  2773.   SHORT      sXDeviceRes;             /*  X-device resolution. */
  2774.   SHORT      sYDeviceRes;             /*  Y-device resolution. */
  2775.   SHORT      sFirstChar;              /*  First character. */
  2776.   SHORT      sLastChar;               /*  Last character. */
  2777.   SHORT      sDefaultChar;            /*  Default character. */
  2778.   SHORT      sBreakChar;              /*  Break character. */
  2779.   SHORT      sNominalPointSize;       /*  Nominal point size. */
  2780.   SHORT      sMinimumPointSize;       /*  Minimum point size. */
  2781.   SHORT      sMaximumPointSize;       /*  Maximum point size. */
  2782.   USHORT     fsType;                  /*  Type indicators. */
  2783.   USHORT     fsDefn;                  /*  Definition indicators. */
  2784.   USHORT     fsSelection;             /*  Selection indicators. */
  2785.   USHORT     fsCapabilities;          /*  Font capabilities. */
  2786.   LONG       lSubscriptXSize;         /*  Subscript x-size. */
  2787.   LONG       lSubscriptYSize;         /*  Subscript y-size. */
  2788.   LONG       lSubscriptXOffset;       /*  Subscript x-offset. */
  2789.   LONG       lSubscriptYOffset;       /*  Subscript y-offset. */
  2790.   LONG       lSuperscriptXSize;       /*  Superscript x-size. */
  2791.   LONG       lSuperscriptYSize;       /*  Superscript y-size. */
  2792.   LONG       lSuperscriptXOffset;     /*  Superscript x-offset. */
  2793.   LONG       lSuperscriptYOffset;     /*  Superscript y-offset. */
  2794.   LONG       lUnderscoreSize;         /*  Underscore size. */
  2795.   LONG       lUnderscorePosition;     /*  Underscore position. */
  2796.   LONG       lStrikeoutSize;          /*  Strikeout size. */
  2797.   LONG       lStrikeoutPosition;      /*  Strikeout position. */
  2798.   SHORT      sKerningPairs;           /*  Kerning pairs. */
  2799.   SHORT      sFamilyClass;            /*  Font family design classification. */
  2800.   LONG       lMatch;                  /*  Matched font identity. */
  2801.   LONG       FamilyNameAtom;          /*  Font family name atom. */
  2802.   LONG       FaceNameAtom;            /*  Font facename atom. */
  2803.   PANOSE     panose;                  /*  Panose font descriptor. */
  2804. } FONTMETRICS;
  2805.  
  2806. typedef FONTMETRICS *PFONTMETRICS;
  2807.  
  2808.  
  2809. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - szFamilyname[FACESIZE] ΓòÉΓòÉΓòÉ
  2810.  
  2811.  szFamilyname[FACESIZE] (CHAR) 
  2812.     Family name. 
  2813.  
  2814.     The family name of the font that describes the basic appearance of the 
  2815.     font, for example, Times New Roman** This string is null terminated, and 
  2816.     therefore is limited to 31 characters in length. Longer names may be 
  2817.     retrieved by using the FamilyNameAtom field to retrieve the full name from 
  2818.     the System Atom table. 
  2819.  
  2820.  
  2821. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - szFacename[FACESIZE] ΓòÉΓòÉΓòÉ
  2822.  
  2823.  szFacename[FACESIZE] (CHAR) 
  2824.     Face name. 
  2825.  
  2826.     The typeface name that defines the particular font, for example, Times New 
  2827.     Roman Bold Italic. This string is null terminated, and therefore is limited 
  2828.     to 31 characters in length. Longer names may be retrieved by using the 
  2829.     FaceNameAtom field to retrieve the full name from the System Atom table. 
  2830.  
  2831.  
  2832. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - idRegistry ΓòÉΓòÉΓòÉ
  2833.  
  2834.  idRegistry (USHORT) 
  2835.     Registry identifier. 
  2836.  
  2837.     The IBM registered number (or zero). 
  2838.  
  2839.  
  2840. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - usCodePage ΓòÉΓòÉΓòÉ
  2841.  
  2842.  usCodePage (USHORT) 
  2843.     Code page. 
  2844.  
  2845.     Defines the registered code page supported by the font. For example, the 
  2846.     original IBM PC code page is 437. A value of 0 implies that the font may be 
  2847.     used with any of the OS/2 supported code pages. 
  2848.  
  2849.     Where a font contains special symbols for which there is no registered code 
  2850.     page, then code page 65400 is used. 
  2851.  
  2852.  
  2853. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lEmHeight ΓòÉΓòÉΓòÉ
  2854.  
  2855.  lEmHeight (LONG) 
  2856.     Em height. 
  2857.  
  2858.     The height of the Em square in world coordinate units. This corresponds to 
  2859.     the point size for the font. 
  2860.  
  2861.  
  2862. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lXHeight ΓòÉΓòÉΓòÉ
  2863.  
  2864.  lXHeight (LONG) 
  2865.     X height. 
  2866.  
  2867.     The nominal height above the baseline for lowercase characters (ignoring 
  2868.     ascenders) in world coordinate units. 
  2869.  
  2870.  
  2871. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMaxAscender ΓòÉΓòÉΓòÉ
  2872.  
  2873.  lMaxAscender (LONG) 
  2874.     Maximum ascender. 
  2875.  
  2876.     The maximum height above the baseline reached by any part of any symbol in 
  2877.     the font in world coordinate units. This field may exceed lEmHeight. 
  2878.  
  2879.  
  2880. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMaxDescender ΓòÉΓòÉΓòÉ
  2881.  
  2882.  lMaxDescender (LONG) 
  2883.     Maximum descender. 
  2884.  
  2885.     The maximum depth below the baseline reached by any part of any symbol in 
  2886.     the font in world coordinate units. This field may exceed lEmHeight. 
  2887.  
  2888.  
  2889. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lLowerCaseAscent ΓòÉΓòÉΓòÉ
  2890.  
  2891.  lLowerCaseAscent (LONG) 
  2892.     Lowercase ascent. 
  2893.  
  2894.     The maximum height above the baseline reached by any part of any lowercase 
  2895.     (Latin unaccented "a" through "z") symbol in the font in world coordinate 
  2896.     units. 
  2897.  
  2898.  
  2899. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lLowerCaseDescent ΓòÉΓòÉΓòÉ
  2900.  
  2901.  lLowerCaseDescent (LONG) 
  2902.     Lowercase descent. 
  2903.  
  2904.     The maximum depth below the baseline reached by any part of any lowercase 
  2905.     (Latin unaccented "a" through "z") symbol in the font in world coordinate 
  2906.     units. 
  2907.  
  2908.  
  2909. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lInternalLeading ΓòÉΓòÉΓòÉ
  2910.  
  2911.  lInternalLeading (LONG) 
  2912.     Internal leading. 
  2913.  
  2914.     The amount of space which, when subtracted from lMaxAscender, gives a 
  2915.     font-design dependent, but glyph-set independent, measure of the distance 
  2916.     above the baseline that characters extend. This calculation approximates 
  2917.     the visual top to a row of characters without actually looking at the 
  2918.     characters in the row. 
  2919.  
  2920.     For optimum results, this field should be used by applications to position 
  2921.     the first line of a block of text by subtracting it from lMaxAscender and 
  2922.     positioning the baseline that distance below whatever is above the text. 
  2923.  
  2924.     Note:  This does not guarantee that characters will not overwrite 
  2925.            information above them, but does give a font designer's view of 
  2926.            where to place the text. Collision should be tested for, and 
  2927.            additional space allocated if necessary. 
  2928.  
  2929.  
  2930. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lExternalLeading ΓòÉΓòÉΓòÉ
  2931.  
  2932.  lExternalLeading (LONG) 
  2933.     External leading. 
  2934.  
  2935.     The amount of guaranteed white space advised by the font designer to appear 
  2936.     between adjacent rows of text. This value may be zero. 
  2937.  
  2938.     Note:  The fonts built in to Presentation Manager have zero in this field. 
  2939.  
  2940.  
  2941. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lAveCharWidth ΓòÉΓòÉΓòÉ
  2942.  
  2943.  lAveCharWidth (LONG) 
  2944.     Average character width. 
  2945.  
  2946.     This is determined by multiplying the width of each lowercase character by 
  2947.     a constant, adding the products, and then dividing by 1000. The letters 
  2948.     involved in this, plus their constants, are as follows: 
  2949.  
  2950.          Letter    Constant 
  2951.     a              64 
  2952.     b              14 
  2953.     c              27 
  2954.     d              35 
  2955.     e              100 
  2956.     f              20 
  2957.     g              14 
  2958.     h              42 
  2959.     i              63 
  2960.     j              3 
  2961.     k              6 
  2962.     l              35 
  2963.     m              20 
  2964.     n              56 
  2965.     o              56 
  2966.     p              17 
  2967.     q              4 
  2968.     r              49 
  2969.     s              56 
  2970.     t              71 
  2971.     u              31 
  2972.     v              10 
  2973.     w              18 
  2974.     x              3 
  2975.     y              18 
  2976.     z              2 
  2977.     space          166 
  2978.  
  2979.     Note:  For fixed pitch fonts, this value will be the same as the (A width + 
  2980.            B width + C width) escapement of each character. 
  2981.  
  2982.  
  2983. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMaxCharInc ΓòÉΓòÉΓòÉ
  2984.  
  2985.  lMaxCharInc (LONG) 
  2986.     Maximum character increment. 
  2987.  
  2988.     The maximum character increment for the font in world coordinate units. 
  2989.  
  2990.  
  2991. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lEmInc ΓòÉΓòÉΓòÉ
  2992.  
  2993.  lEmInc (LONG) 
  2994.     Em increment. 
  2995.  
  2996.     The width of the Em square in world coordinate units. This corresponds to 
  2997.     the point size of the font.  When the horizontal device resolution equals 
  2998.     the vertical device resolution this is equal to the em height. 
  2999.  
  3000.  
  3001. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMaxBaselineExt ΓòÉΓòÉΓòÉ
  3002.  
  3003.  lMaxBaselineExt (LONG) 
  3004.     Maximum baseline extent. 
  3005.  
  3006.     The maximum vertical space occupied by the font, in world coordinate units. 
  3007.     This is the sum of lMaxAscender and lMaxDescender if both are positive. It 
  3008.     is also the sum of lInternalLeading and lEmHeight. 
  3009.  
  3010.     One possible type of line spacing can be computed by adding lMaxBaselineExt 
  3011.     to lExternalLeading. Such a line spacing, however, would be dependent on 
  3012.     the glyph set included in the font. If a new version of the font should be 
  3013.     made available, with new glyphs, then it is possible that this value will 
  3014.     change because one of the new glyphs has gone above the previous 
  3015.     lMaxAscender or below the previous lMaxDescender. More sophisticated 
  3016.     applications will base line spacing on the point size (lEmHeight) of the 
  3017.     font, which is an invariant of the font, multiplied by some factor (for 
  3018.     example, 120%) plus any external leading. 
  3019.  
  3020.     This field may exceed lEmHeight. 
  3021.  
  3022.  
  3023. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sCharSlope ΓòÉΓòÉΓòÉ
  3024.  
  3025.  sCharSlope (SHORT) 
  3026.     Character slope. 
  3027.  
  3028.     Defines the nominal slope for the characters of a font. The slope is 
  3029.     defined in degrees increasing clockwise from the vertical. An italic font 
  3030.     is an example of a font with a nonzero slope. 
  3031.  
  3032.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  3033.            in the following example: 
  3034.  
  3035.  
  3036.                       180 degrees 59 minutes would be represented as :
  3037.  
  3038.                       Γöé   < byte 1  > Γöé   < byte 2   >  Γöé
  3039.  
  3040.                       Γöé Γöé < Minutes > Γöé   < Degrees >   Γöé
  3041.  
  3042.                       Γöé0Γöé1 1 1 0 1 1  Γöé0 1 0 1 1 0 1 0 0Γöé
  3043.  
  3044.                         Γöé  59 min     Γöé   180 degrees   Γöé
  3045.  
  3046.  
  3047. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sInlineDir ΓòÉΓòÉΓòÉ
  3048.  
  3049.  sInlineDir (SHORT) 
  3050.     Inline direction. 
  3051.  
  3052.     The direction in which the characters in the font are designed for viewing. 
  3053.     The direction is defined in degrees increasing clockwise from the 
  3054.     horizontal (left-to-right). Characters are added to a line of text in the 
  3055.     inline direction. 
  3056.  
  3057.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  3058.            in sCharSlope. 
  3059.  
  3060.  
  3061. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sCharRot ΓòÉΓòÉΓòÉ
  3062.  
  3063.  sCharRot (SHORT) 
  3064.     Character rotation. 
  3065.  
  3066.     The rotation of the character glyphs with respect to the baseline, the 
  3067.     angle increasing counter clockwise. This is the angle assigned by the font 
  3068.     designer. 
  3069.  
  3070.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  3071.            in sCharSlope. 
  3072.  
  3073.  
  3074. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - usWeightClass ΓòÉΓòÉΓòÉ
  3075.  
  3076.  usWeightClass (USHORT) 
  3077.     Weight class. 
  3078.  
  3079.     Indicates the visual weight (thickness of strokes) of the characters in the 
  3080.     font: 
  3081.  
  3082.          Value   Description 
  3083.     1            Ultra-light 
  3084.     2            Extra-light 
  3085.     3            Light 
  3086.     4            Semi-light 
  3087.     5            Medium (normal) 
  3088.     6            Semi-bold 
  3089.     7            Bold 
  3090.     8            Extra-bold 
  3091.     9            Ultra-bold 
  3092.  
  3093.  
  3094. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - usWidthClass ΓòÉΓòÉΓòÉ
  3095.  
  3096.  usWidthClass (USHORT) 
  3097.     Width class. 
  3098.  
  3099.     Indicates the relative aspect ratio of the characters of the font in 
  3100.     relation to the normal aspect ratio for this type of font: 
  3101.  
  3102.         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3103.         ΓöéValueΓöéDescription    Γöé% of normal width   Γöé
  3104.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3105.         Γöé1    ΓöéUltra-condensedΓöé50                  Γöé
  3106.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3107.         Γöé2    ΓöéExtra-condensedΓöé62.5                Γöé
  3108.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3109.         Γöé3    ΓöéCondensed      Γöé75                  Γöé
  3110.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3111.         Γöé4    ΓöéSemi-condensed Γöé87.5                Γöé
  3112.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3113.         Γöé5    ΓöéMedium (normal)Γöé100                 Γöé
  3114.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3115.         Γöé6    ΓöéSemi-expanded  Γöé112.5               Γöé
  3116.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3117.         Γöé7    ΓöéExpanded       Γöé125                 Γöé
  3118.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3119.         Γöé8    ΓöéExtra-expanded Γöé150                 Γöé
  3120.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3121.         Γöé9    ΓöéUltra-expanded Γöé200                 Γöé
  3122.         ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3123.  
  3124.  
  3125. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sXDeviceRes ΓòÉΓòÉΓòÉ
  3126.  
  3127.  sXDeviceRes (SHORT) 
  3128.     X-device resolution. 
  3129.  
  3130.     For bit-map fonts this is the resolution in the X direction of the intended 
  3131.     target device, measured in pels per inch. 
  3132.  
  3133.     For outline fonts this is the number of notional units in the X direction 
  3134.     of the Em square, measured in notional units per Em. (Notional units are 
  3135.     the units in which the outline is defined.) 
  3136.  
  3137.  
  3138. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sYDeviceRes ΓòÉΓòÉΓòÉ
  3139.  
  3140.  sYDeviceRes (SHORT) 
  3141.     Y-device resolution. 
  3142.  
  3143.     For bit-map fonts this is the resolution in the Y direction of the intended 
  3144.     target device, measured in pels per inch. 
  3145.  
  3146.     For outline fonts this is the number of notional units in the Y direction 
  3147.     of the Em square, measured in notional units per Em. (Notional units are 
  3148.     the units in which the outline is defined.) 
  3149.  
  3150.  
  3151. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sFirstChar ΓòÉΓòÉΓòÉ
  3152.  
  3153.  sFirstChar (SHORT) 
  3154.     First character. 
  3155.  
  3156.     The code point of the first character in the font. 
  3157.  
  3158.  
  3159. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sLastChar ΓòÉΓòÉΓòÉ
  3160.  
  3161.  sLastChar (SHORT) 
  3162.     Last character. 
  3163.  
  3164.     The code point of the last character in the font, expressed as an offset 
  3165.     from sFirstChar. 
  3166.  
  3167.     All code points between the first and last character specified must be 
  3168.     supported by the font. 
  3169.  
  3170.  
  3171. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sDefaultChar ΓòÉΓòÉΓòÉ
  3172.  
  3173.  sDefaultChar (SHORT) 
  3174.     Default character. 
  3175.  
  3176.     The code point that is used if a code point outside the range supported by 
  3177.     the font is used, expressed as an offset from sFirstChar. 
  3178.  
  3179.  
  3180. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sBreakChar ΓòÉΓòÉΓòÉ
  3181.  
  3182.  sBreakChar (SHORT) 
  3183.     Break character. 
  3184.  
  3185.     The code point that represents the "space" or "break" character for this 
  3186.     font, expressed as an offset from sFirstChar. For example, if the first 
  3187.     character is the space in code page 850, sFirstChar = 32, and sBreakChar = 
  3188.     0. 
  3189.  
  3190.  
  3191. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sNominalPointSize ΓòÉΓòÉΓòÉ
  3192.  
  3193.  sNominalPointSize (SHORT) 
  3194.     Nominal point size. 
  3195.  
  3196.     For a bit-map font, this field contains the height of the font. 
  3197.  
  3198.     For an outline font, this field contains the height intended by the font 
  3199.     designer. For example, some fonts are designed for text use in which case a 
  3200.     value of 120 (12 point) would probably be placed in this field, whereas 
  3201.     other fonts are designed for "display" use ("display" is typographer's 
  3202.     terminology for larger sizes). This is not the only size at which the font 
  3203.     can be used. 
  3204.  
  3205.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  3206.  
  3207.  
  3208. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sMinimumPointSize ΓòÉΓòÉΓòÉ
  3209.  
  3210.  sMinimumPointSize (SHORT) 
  3211.     Minimum point size. 
  3212.  
  3213.     For a bit-map font, this field does not apply. For an outline font, this 
  3214.     field contains the minimum height intended by the font designer. Note that 
  3215.     this is not a restriction of the size at which the font can be used. 
  3216.  
  3217.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  3218.  
  3219.  
  3220. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sMaximumPointSize ΓòÉΓòÉΓòÉ
  3221.  
  3222.  sMaximumPointSize (SHORT) 
  3223.     Maximum point size. 
  3224.  
  3225.     For a bit-map font, this field does not apply. 
  3226.  
  3227.     For an outline font, this field contains the maximum height intended by the 
  3228.     font designer. Note that this is not a restriction of the size at which the 
  3229.     font can be used. 
  3230.  
  3231.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  3232.  
  3233.  
  3234. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - fsType ΓòÉΓòÉΓòÉ
  3235.  
  3236.  fsType (USHORT) 
  3237.     Type indicators. 
  3238.  
  3239.     This field contains the following information: 
  3240.  
  3241.     FM_TYPE_FIXED                 Characters in the font have the same fixed 
  3242.                                   width. 
  3243.  
  3244.     FM_TYPE_LICENSED              Licensed (protected) font. 
  3245.  
  3246.     FM_TYPE_KERNING               Font contains kerning information. 
  3247.  
  3248.     FM_TYPE_64K                   Font is larger than 64KB (KB equals 1024 
  3249.                                   bytes) in size. If the following two bits are 
  3250.                                   false, the font is for single-byte code 
  3251.                                   pages. One of the bits may be set. 
  3252.  
  3253.     FM_TYPE_DBCS                  Font is for double-byte code pages. 
  3254.  
  3255.     FM_TYPE_MBCS                  Font is for mixed single- or double-byte code 
  3256.                                   pages. 
  3257.  
  3258.     FM_TYPE_FACETRUNC 
  3259.             Font szFacename has been truncated. 
  3260.     FM_TYPE_FAMTRUNC 
  3261.             Font szFamilyname has been truncated. 
  3262.     FM_TYPE_ATOMS 
  3263.             The System Atom table atom values in FamilyNameAtom and in 
  3264.             FaceNameAtom are valid. 
  3265.  
  3266.  
  3267. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - fsDefn ΓòÉΓòÉΓòÉ
  3268.  
  3269.  fsDefn (USHORT) 
  3270.     Definition indicators. 
  3271.  
  3272.     Contains the following font definition data: 
  3273.  
  3274.     FM_DEFN_OUTLINE               Font is a vector (outline) font; otherwise, 
  3275.                                   it is a bit-map font. 
  3276.  
  3277.     FM_DEFN_GENERIC               Font is in a format that can be used by the 
  3278.                                   GPI; otherwise, it is a device font. 
  3279.  
  3280.  
  3281. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - fsSelection ΓòÉΓòÉΓòÉ
  3282.  
  3283.  fsSelection (USHORT) 
  3284.     Selection indicators. 
  3285.  
  3286.     Contains information about the font patterns in the physical font. 
  3287.  
  3288.     Note:  The flags do not reflect simulations applied to the physical font. 
  3289.  
  3290.     Possible values are: 
  3291.  
  3292.     FM_SEL_ITALIC                 True indicates that this font is designed as 
  3293.                                   an italic font. 
  3294.  
  3295.     FM_SEL_UNDERSCORE             TRUE indicates that this font is designed 
  3296.                                   with underscores included in each character. 
  3297.  
  3298.     FM_SEL_NEGATIVE               TRUE indicates that this font is designed 
  3299.                                   with the background and foreground reversed. 
  3300.  
  3301.     FM_SEL_OUTLINE                TRUE indicates that this font is designed 
  3302.                                   with outline (hollow) characters. 
  3303.  
  3304.     FM_SEL_STRIKEOUT              TRUE indicates that this font is designed 
  3305.                                   with an overstrike through each character. 
  3306.  
  3307.     FM_SEL_BOLD                   TRUE indicates that this font is designed 
  3308.                                   with bold characters. 
  3309.  
  3310.     FM_SEL_ISO9241_TESTED         This flag indicates that the font has been 
  3311.                                   tested for compliance to ISO 9241. The 
  3312.                                   presence of this flag doesn't indicate 
  3313.                                   whether the font passed or failed, only that 
  3314.                                   it was tested. 
  3315.  
  3316.                                   Note:  While the fonts were primarily tested 
  3317.                                          for meeting the ISO standard, they 
  3318.                                          have also been designed to meet the 
  3319.                                          German standard DIN 66 234. Where the 
  3320.                                          two standards differ, the fonts have 
  3321.                                          been designed to meet the more 
  3322.                                          stringent requirement. 
  3323.  
  3324.  
  3325. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - fsCapabilities ΓòÉΓòÉΓòÉ
  3326.  
  3327.  fsCapabilities (USHORT) 
  3328.     Font capabilities. 
  3329.  
  3330.     This attribute applies only to device fonts. 
  3331.  
  3332.     FM_CAP_NOMIX                  Characters may not be mixed with graphics. 
  3333.  
  3334.     QUALITY                       The most significant byte may contain the 
  3335.                                   following numeric value: 
  3336.  
  3337.                                   0        Undefined 
  3338.                                   1        DP quality 
  3339.                                   2        DP draft 
  3340.                                   3        Near Letter Quality 
  3341.                                   4        Letter Quality 
  3342.  
  3343.  
  3344. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSubscriptXSize ΓòÉΓòÉΓòÉ
  3345.  
  3346.  lSubscriptXSize (LONG) 
  3347.     Subscript x-size. 
  3348.  
  3349.     The horizontal size recommended by the font designer for subscripts for 
  3350.     this font in world coordinate units. 
  3351.  
  3352.  
  3353. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSubscriptYSize ΓòÉΓòÉΓòÉ
  3354.  
  3355.  lSubscriptYSize (LONG) 
  3356.     Subscript y-size. 
  3357.  
  3358.     The vertical size recommended by the font designer for subscripts for this 
  3359.     font in world coordinate units. 
  3360.  
  3361.  
  3362. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSubscriptXOffset ΓòÉΓòÉΓòÉ
  3363.  
  3364.  lSubscriptXOffset (LONG) 
  3365.     Subscript x-offset. 
  3366.  
  3367.     The baseline x-offset recommended by the font designer for subscripts for 
  3368.     this font in world coordinate units. 
  3369.  
  3370.  
  3371. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSubscriptYOffset ΓòÉΓòÉΓòÉ
  3372.  
  3373.  lSubscriptYOffset (LONG) 
  3374.     Subscript y-offset. 
  3375.  
  3376.     The baseline y-offset recommended by the font designer for subscripts for 
  3377.     this font in world coordinate units. 
  3378.  
  3379.     Note:  Positive numbers indicate an offset below the baseline. 
  3380.  
  3381.  
  3382. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSuperscriptXSize ΓòÉΓòÉΓòÉ
  3383.  
  3384.  lSuperscriptXSize (LONG) 
  3385.     Superscript x-size. 
  3386.  
  3387.     The horizontal size recommended by the font designer for superscripts for 
  3388.     this font in world coordinate units. 
  3389.  
  3390.  
  3391. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSuperscriptYSize ΓòÉΓòÉΓòÉ
  3392.  
  3393.  lSuperscriptYSize (LONG) 
  3394.     Superscript y-size. 
  3395.  
  3396.     The vertical point size recommended by the font designer for superscripts 
  3397.     for this font in world coordinate units. 
  3398.  
  3399.  
  3400. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSuperscriptXOffset ΓòÉΓòÉΓòÉ
  3401.  
  3402.  lSuperscriptXOffset (LONG) 
  3403.     Superscript x-offset. 
  3404.  
  3405.     The baseline x-offset recommended by the font designer for superscripts for 
  3406.     this font in world coordinate units. 
  3407.  
  3408.  
  3409. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSuperscriptYOffset ΓòÉΓòÉΓòÉ
  3410.  
  3411.  lSuperscriptYOffset (LONG) 
  3412.     Superscript y-offset. 
  3413.  
  3414.     The baseline y-offset recommended by the font designer for superscripts for 
  3415.     this font in world coordinate units. 
  3416.  
  3417.  
  3418. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lUnderscoreSize ΓòÉΓòÉΓòÉ
  3419.  
  3420.  lUnderscoreSize (LONG) 
  3421.     Underscore size. 
  3422.  
  3423.     The width (thickness) of the underscore stroke in world coordinate units. 
  3424.     This describes the actual underscore in the font if FM_SEL_UNDERSCORE is 
  3425.     also set. Otherwise it describes what the engine will simulate if 
  3426.     underscore is requested in GpiCreateLogFont. 
  3427.  
  3428.  
  3429. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lUnderscorePosition ΓòÉΓòÉΓòÉ
  3430.  
  3431.  lUnderscorePosition (LONG) 
  3432.     Underscore position. 
  3433.  
  3434.     The position of the underscore stroke from the baseline in world coordinate 
  3435.     units. This describes the actual underscore in the font if 
  3436.     FM_SEL_UNDERSCORE is also set. Otherwise it describes what the engine will 
  3437.     simulate if underscore is requested in GpiCreateLogFont. 
  3438.  
  3439.     Note:  Positive values indicate an offset below the baseline. 
  3440.  
  3441.  
  3442. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lStrikeoutSize ΓòÉΓòÉΓòÉ
  3443.  
  3444.  lStrikeoutSize (LONG) 
  3445.     Strikeout size. 
  3446.  
  3447.     The width of the strikeout stroke in world coordinate units. This describes 
  3448.     the actual underscore in the font if FM_SEL_STRIKEOUT is also set. 
  3449.     Otherwise it describes what the engine will simulate if overstrike is 
  3450.     requested in GpiCreateLogFont. 
  3451.  
  3452.  
  3453. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lStrikeoutPosition ΓòÉΓòÉΓòÉ
  3454.  
  3455.  lStrikeoutPosition (LONG) 
  3456.     Strikeout position. 
  3457.  
  3458.     The position of the strikeout stroke relative to the baseline in world 
  3459.     coordinate units. This describes the actual underscore in the font if 
  3460.     FM_SEL_STRIKEOUT is also set. Otherwise it describes what the engine will 
  3461.     simulate if overstrike is requested in GpiCreateLogFont. 
  3462.  
  3463.  
  3464. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sKerningPairs ΓòÉΓòÉΓòÉ
  3465.  
  3466.  sKerningPairs (SHORT) 
  3467.     Kerning pairs. 
  3468.  
  3469.     The number of kerning pairs in the kerning pair table. 
  3470.  
  3471.  
  3472. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sFamilyClass ΓòÉΓòÉΓòÉ
  3473.  
  3474.  sFamilyClass (SHORT) 
  3475.     Font family design classification. 
  3476.  
  3477.     This value contains a font class and its subclass. 
  3478.  
  3479.  
  3480. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMatch ΓòÉΓòÉΓòÉ
  3481.  
  3482.  lMatch (LONG) 
  3483.     Matched font identity. 
  3484.  
  3485.     This uniquely identifies the font for a given device and device driver 
  3486.     combination. A positive match number signifies that the font is a generic 
  3487.     (engine) font while a negative number indicates a device font (a native or 
  3488.     downloadable font). This value should not be used to identify a font across 
  3489.     system boundaries. 
  3490.  
  3491.  
  3492. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - FamilyNameAtom ΓòÉΓòÉΓòÉ
  3493.  
  3494.  FamilyNameAtom (LONG) 
  3495.     Font family name atom. 
  3496.  
  3497.     This value contains the atom identifier for the font family name in the 
  3498.     System Atom Table. 
  3499.  
  3500.  
  3501. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - FaceNameAtom ΓòÉΓòÉΓòÉ
  3502.  
  3503.  FaceNameAtom (LONG) 
  3504.     Font facename atom. 
  3505.  
  3506.     This value contains the atom identifier for the font face name in the 
  3507.     System Atom Table. 
  3508.  
  3509.  
  3510. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - panose ΓòÉΓòÉΓòÉ
  3511.  
  3512.  panose (PANOSE) 
  3513.     Panose font descriptor. 
  3514.  
  3515.     This is the Panose descriptor identifying the visual characteristics of the 
  3516.     font. 
  3517.  
  3518.  
  3519. ΓòÉΓòÉΓòÉ 1.25. GRADIENTL ΓòÉΓòÉΓòÉ
  3520.  
  3521. Direction-vector structure. 
  3522.  
  3523. typedef struct _GRADIENTL {
  3524.   LONG     x;  /*  X-component of direction. */
  3525.   LONG     y;  /*  Y-component of direction. */
  3526. } GRADIENTL;
  3527.  
  3528. typedef GRADIENTL *PGRADIENTL;
  3529.  
  3530.  
  3531. ΓòÉΓòÉΓòÉ <hidden> GRADIENTL Field - x ΓòÉΓòÉΓòÉ
  3532.  
  3533.  x (LONG) 
  3534.     X-component of direction. 
  3535.  
  3536.  
  3537. ΓòÉΓòÉΓòÉ <hidden> GRADIENTL Field - y ΓòÉΓòÉΓòÉ
  3538.  
  3539.  y (LONG) 
  3540.     Y-component of direction. 
  3541.  
  3542.  
  3543. ΓòÉΓòÉΓòÉ 1.26. HAB ΓòÉΓòÉΓòÉ
  3544.  
  3545. Anchor-block handle. 
  3546.  
  3547. typedef LHANDLE HAB;
  3548.  
  3549.  
  3550. ΓòÉΓòÉΓòÉ 1.27. HBITMAP ΓòÉΓòÉΓòÉ
  3551.  
  3552. Bit-map handle. 
  3553.  
  3554. typedef LHANDLE HBITMAP;
  3555.  
  3556.  
  3557. ΓòÉΓòÉΓòÉ 1.28. HCINFO ΓòÉΓòÉΓòÉ
  3558.  
  3559. Hardcopy-capabilities structure. 
  3560.  
  3561. typedef struct _HCINFO {
  3562.   CHAR     szFormname[32];  /*  Form name. */
  3563.   LONG     cx;              /*  Width (left-to-right) in millimeters. */
  3564.   LONG     cy;              /*  Height (top-to-bottom) in millimeters. */
  3565.   LONG     xLeftClip;       /*  Left-clip limit in millimeters. */
  3566.   LONG     yBottomClip;     /*  Bottom-clip limit in millimeters. */
  3567.   LONG     xRightClip;      /*  Right-clip limit in millimeters. */
  3568.   LONG     yTopClip;        /*  Top-clip limit in millimeters. */
  3569.   LONG     xPels;           /*  Number of pels between left-clip and right-clip limits. */
  3570.   LONG     yPels;           /*  Number of pels between bottom-clip and top-clip limits. */
  3571.   LONG     flAttributes;    /*  Attributes of the form identifier. */
  3572. } HCINFO;
  3573.  
  3574. typedef HCINFO *PHCINFO;
  3575.  
  3576.  
  3577. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - szFormname[32] ΓòÉΓòÉΓòÉ
  3578.  
  3579.  szFormname[32] (CHAR) 
  3580.     Form name. 
  3581.  
  3582.  
  3583. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - cx ΓòÉΓòÉΓòÉ
  3584.  
  3585.  cx (LONG) 
  3586.     Width (left-to-right) in millimeters. 
  3587.  
  3588.  
  3589. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - cy ΓòÉΓòÉΓòÉ
  3590.  
  3591.  cy (LONG) 
  3592.     Height (top-to-bottom) in millimeters. 
  3593.  
  3594.  
  3595. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - xLeftClip ΓòÉΓòÉΓòÉ
  3596.  
  3597.  xLeftClip (LONG) 
  3598.     Left-clip limit in millimeters. 
  3599.  
  3600.  
  3601. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - yBottomClip ΓòÉΓòÉΓòÉ
  3602.  
  3603.  yBottomClip (LONG) 
  3604.     Bottom-clip limit in millimeters. 
  3605.  
  3606.  
  3607. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - xRightClip ΓòÉΓòÉΓòÉ
  3608.  
  3609.  xRightClip (LONG) 
  3610.     Right-clip limit in millimeters. 
  3611.  
  3612.  
  3613. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - yTopClip ΓòÉΓòÉΓòÉ
  3614.  
  3615.  yTopClip (LONG) 
  3616.     Top-clip limit in millimeters. 
  3617.  
  3618.  
  3619. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - xPels ΓòÉΓòÉΓòÉ
  3620.  
  3621.  xPels (LONG) 
  3622.     Number of pels between left-clip and right-clip limits. 
  3623.  
  3624.  
  3625. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - yPels ΓòÉΓòÉΓòÉ
  3626.  
  3627.  yPels (LONG) 
  3628.     Number of pels between bottom-clip and top-clip limits. 
  3629.  
  3630.  
  3631. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - flAttributes ΓòÉΓòÉΓòÉ
  3632.  
  3633.  flAttributes (LONG) 
  3634.     Attributes of the form identifier. 
  3635.  
  3636.     HCAPS_SELECTABLE 
  3637.                              The form is installed on the printer as given by 
  3638.                              the printer properties dialog. It is available 
  3639.                              from an alternate form source without operator 
  3640.                              intervention. If the form does not have this bit 
  3641.                              set and is used (if the user selects it), a "forms 
  3642.                              mismatch" error is generated by the printer 
  3643.                              object. 
  3644.  
  3645.     HCAPS_CURRENT 
  3646.                              The form is the one currently selected by the 
  3647.                              DevOpenDC DEVOPENSTRUC pdriv field (the job 
  3648.                              properties). 
  3649.  
  3650.  
  3651. ΓòÉΓòÉΓòÉ 1.29. HDC ΓòÉΓòÉΓòÉ
  3652.  
  3653. Device-context handle. 
  3654.  
  3655. typedef LHANDLE HDC;
  3656.  
  3657.  
  3658. ΓòÉΓòÉΓòÉ 1.30. HMF ΓòÉΓòÉΓòÉ
  3659.  
  3660. Metafile handle. 
  3661.  
  3662. typedef LHANDLE HMF;
  3663.  
  3664.  
  3665. ΓòÉΓòÉΓòÉ 1.31. HMODULE ΓòÉΓòÉΓòÉ
  3666.  
  3667. Module handle. 
  3668.  
  3669. typedef LHANDLE HMODULE;
  3670.  
  3671.  
  3672. ΓòÉΓòÉΓòÉ 1.32. HPAL ΓòÉΓòÉΓòÉ
  3673.  
  3674. Palette handle. 
  3675.  
  3676. typedef LHANDLE HPAL;
  3677.  
  3678.  
  3679. ΓòÉΓòÉΓòÉ 1.33. HPS ΓòÉΓòÉΓòÉ
  3680.  
  3681. Presentation-space handle. 
  3682.  
  3683. typedef LHANDLE HPS;
  3684.  
  3685.  
  3686. ΓòÉΓòÉΓòÉ 1.34. HRGN ΓòÉΓòÉΓòÉ
  3687.  
  3688. Region handle. 
  3689.  
  3690. typedef LHANDLE HRGN;
  3691.  
  3692.  
  3693. ΓòÉΓòÉΓòÉ 1.35. IMAGEBUNDLE ΓòÉΓòÉΓòÉ
  3694.  
  3695. Image-attributes bundle structure. 
  3696.  
  3697. typedef struct _IMAGEBUNDLE {
  3698.   LONG       lColor;         /*  Image foreground color. */
  3699.   LONG       lBackColor;     /*  Image background color. */
  3700.   USHORT     usMixMode;      /*  Image foreground-mix mode. */
  3701.   USHORT     usBackMixMode;  /*  Image background-mix mode. */
  3702. } IMAGEBUNDLE;
  3703.  
  3704. typedef IMAGEBUNDLE *PIMAGEBUNDLE;
  3705.  
  3706.  
  3707. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  3708.  
  3709.  lColor (LONG) 
  3710.     Image foreground color. 
  3711.  
  3712.  
  3713. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  3714.  
  3715.  lBackColor (LONG) 
  3716.     Image background color. 
  3717.  
  3718.  
  3719. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  3720.  
  3721.  usMixMode (USHORT) 
  3722.     Image foreground-mix mode. 
  3723.  
  3724.  
  3725. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  3726.  
  3727.  usBackMixMode (USHORT) 
  3728.     Image background-mix mode. 
  3729.  
  3730.  
  3731. ΓòÉΓòÉΓòÉ 1.36. KERNINGPAIRS ΓòÉΓòÉΓòÉ
  3732.  
  3733. [Need description.] 
  3734.  
  3735. typedef struct _KERNINGPAIRS {
  3736.   SHORT     sFirstChar;      /*  [Need definition.] */
  3737.   SHORT     sSecondChar;     /*  [Need definition.] */
  3738.   LONG      lKerningAmount;  /*  [Need definition.] */
  3739. } KERNINGPAIRS;
  3740.  
  3741. typedef KERNINGPAIRS *PKERNINGPAIRS;
  3742.  
  3743.  
  3744. ΓòÉΓòÉΓòÉ <hidden> KERNINGPAIRS Field - sFirstChar ΓòÉΓòÉΓòÉ
  3745.  
  3746.  sFirstChar (SHORT) 
  3747.     [Need definition.] 
  3748.  
  3749.  
  3750. ΓòÉΓòÉΓòÉ <hidden> KERNINGPAIRS Field - sSecondChar ΓòÉΓòÉΓòÉ
  3751.  
  3752.  sSecondChar (SHORT) 
  3753.     [Need definition.] 
  3754.  
  3755.  
  3756. ΓòÉΓòÉΓòÉ <hidden> KERNINGPAIRS Field - lKerningAmount ΓòÉΓòÉΓòÉ
  3757.  
  3758.  lKerningAmount (LONG) 
  3759.     [Need definition.] 
  3760.  
  3761.  
  3762. ΓòÉΓòÉΓòÉ 1.37. LINEBUNDLE ΓòÉΓòÉΓòÉ
  3763.  
  3764. Line-attributes bundle structure. 
  3765.  
  3766. typedef struct _LINEBUNDLE {
  3767.   LONG       lColor;         /*  Line foreground color. */
  3768.   LONG       lBackColor;     /*  Line background color. */
  3769.   USHORT     usMixMode;      /*  Line foreground-mix mode. */
  3770.   USHORT     usBackMixMode;  /*  Line background-mix mode. */
  3771.   FIXED      fxWidth;        /*  Line width. */
  3772.   LONG       lGeomWidth;     /*  Geometric line width. */
  3773.   USHORT     usType;         /*  Line type. */
  3774.   USHORT     usEnd;          /*  Line end. */
  3775.   USHORT     usJoin;         /*  Line join. */
  3776.   USHORT     usReserved;     /*  Reserved. */
  3777. } LINEBUNDLE;
  3778.  
  3779. typedef LINEBUNDLE *PLINEBUNDLE;
  3780.  
  3781.  
  3782. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  3783.  
  3784.  lColor (LONG) 
  3785.     Line foreground color. 
  3786.  
  3787.  
  3788. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  3789.  
  3790.  lBackColor (LONG) 
  3791.     Line background color. 
  3792.  
  3793.  
  3794. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  3795.  
  3796.  usMixMode (USHORT) 
  3797.     Line foreground-mix mode. 
  3798.  
  3799.  
  3800. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  3801.  
  3802.  usBackMixMode (USHORT) 
  3803.     Line background-mix mode. 
  3804.  
  3805.  
  3806. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - fxWidth ΓòÉΓòÉΓòÉ
  3807.  
  3808.  fxWidth (FIXED) 
  3809.     Line width. 
  3810.  
  3811.  
  3812. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - lGeomWidth ΓòÉΓòÉΓòÉ
  3813.  
  3814.  lGeomWidth (LONG) 
  3815.     Geometric line width. 
  3816.  
  3817.  
  3818. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usType ΓòÉΓòÉΓòÉ
  3819.  
  3820.  usType (USHORT) 
  3821.     Line type. 
  3822.  
  3823.  
  3824. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usEnd ΓòÉΓòÉΓòÉ
  3825.  
  3826.  usEnd (USHORT) 
  3827.     Line end. 
  3828.  
  3829.  
  3830. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usJoin ΓòÉΓòÉΓòÉ
  3831.  
  3832.  usJoin (USHORT) 
  3833.     Line join. 
  3834.  
  3835.  
  3836. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usReserved ΓòÉΓòÉΓòÉ
  3837.  
  3838.  usReserved (USHORT) 
  3839.     Reserved. 
  3840.  
  3841.  
  3842. ΓòÉΓòÉΓòÉ 1.38. LONG ΓòÉΓòÉΓòÉ
  3843.  
  3844. Signed integer in the range -2 147 483 648 through 2 147 483 647. 
  3845.  
  3846. #define LONG long
  3847.  
  3848. Note:  Where this data type represents a graphic coordinate in world or model 
  3849.        space, its value is restricted to -134 217 728 through 134 217 727. 
  3850.  
  3851. A graphic coordinate in device or screen coordinates is restricted to -32 768 
  3852. through 32 767. 
  3853.  
  3854. The value of a graphic coordinate may be further restricted by any transforms 
  3855. currently in force, including the positioning of the origin of the window on 
  3856. the screen. In particular, coordinates in world or model space must not 
  3857. generate coordinate values after transformation (that is, in device or screen 
  3858. space) outside the range -32 768 through 32 767. 
  3859.  
  3860.  
  3861. ΓòÉΓòÉΓòÉ 1.39. MARKERBUNDLE ΓòÉΓòÉΓòÉ
  3862.  
  3863. Marker-attributes bundle structure. 
  3864.  
  3865. typedef struct _MARKERBUNDLE {
  3866.   LONG       lColor;         /*  Marker foreground color. */
  3867.   LONG       lBackColor;     /*  Marker background color. */
  3868.   USHORT     usMixMode;      /*  Marker foreground-mix mode. */
  3869.   USHORT     usBackMixMode;  /*  Marker background-mix mode. */
  3870.   USHORT     usSet;          /*  Marker set. */
  3871.   USHORT     usSymbol;       /*  Marker symbol. */
  3872.   SIZEF      sizfxCell;      /*  Marker cell. */
  3873. } MARKERBUNDLE;
  3874.  
  3875. typedef MARKERBUNDLE *PMARKERBUNDLE;
  3876.  
  3877.  
  3878. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  3879.  
  3880.  lColor (LONG) 
  3881.     Marker foreground color. 
  3882.  
  3883.  
  3884. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  3885.  
  3886.  lBackColor (LONG) 
  3887.     Marker background color. 
  3888.  
  3889.  
  3890. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  3891.  
  3892.  usMixMode (USHORT) 
  3893.     Marker foreground-mix mode. 
  3894.  
  3895.  
  3896. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  3897.  
  3898.  usBackMixMode (USHORT) 
  3899.     Marker background-mix mode. 
  3900.  
  3901.  
  3902. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - usSet ΓòÉΓòÉΓòÉ
  3903.  
  3904.  usSet (USHORT) 
  3905.     Marker set. 
  3906.  
  3907.  
  3908. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - usSymbol ΓòÉΓòÉΓòÉ
  3909.  
  3910.  usSymbol (USHORT) 
  3911.     Marker symbol. 
  3912.  
  3913.  
  3914. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - sizfxCell ΓòÉΓòÉΓòÉ
  3915.  
  3916.  sizfxCell (SIZEF) 
  3917.     Marker cell. 
  3918.  
  3919.  
  3920. ΓòÉΓòÉΓòÉ 1.40. MATRIXLF ΓòÉΓòÉΓòÉ
  3921.  
  3922. Matrix-elements structure. 
  3923.  
  3924. typedef struct _MATRIXLF {
  3925.   FIXED     fxM11;  /*  First element of first row. */
  3926.   FIXED     fxM12;  /*  Second element of first row. */
  3927.   LONG      lM13;   /*  Third element of first row. */
  3928.   FIXED     fxM21;  /*  First element of second row. */
  3929.   FIXED     fxM22;  /*  Second element of second row. */
  3930.   LONG      lM23;   /*  Third element of second row. */
  3931.   LONG      lM31;   /*  First element of third row. */
  3932.   LONG      lM32;   /*  Second element of third row. */
  3933.   LONG      lM33;   /*  Third element of third row. */
  3934. } MATRIXLF;
  3935.  
  3936. typedef MATRIXLF *PMATRIXLF;
  3937.  
  3938.  
  3939. ΓòÉΓòÉΓòÉ <hidden> MATRIXLF Field - fxM11 ΓòÉΓòÉΓòÉ
  3940.  
  3941.  fxM11 (FIXED) 
  3942.     First element of first row. 
  3943.  
  3944.  
  3945. ΓòÉΓòÉΓòÉ <hidden> MATRIXLF Field - fxM12 ΓòÉΓòÉΓòÉ
  3946.  
  3947.  fxM12 (FIXED) 
  3948.     Second element of first row. 
  3949.  
  3950.  
  3951. ΓòÉΓòÉΓòÉ <hidden> MATRIXLF Field - lM13 ΓòÉΓòÉΓòÉ
  3952.  
  3953.  lM13 (LONG) 
  3954.     Third element of first row. 
  3955.  
  3956.  
  3957. ΓòÉΓòÉΓòÉ <hidden> MATRIXLF Field - fxM21 ΓòÉΓòÉΓòÉ
  3958.  
  3959.  fxM21 (FIXED) 
  3960.     First element of second row. 
  3961.  
  3962.  
  3963. ΓòÉΓòÉΓòÉ <hidden> MATRIXLF Field - fxM22 ΓòÉΓòÉΓòÉ
  3964.  
  3965.  fxM22 (FIXED) 
  3966.     Second element of second row. 
  3967.  
  3968.  
  3969. ΓòÉΓòÉΓòÉ <hidden> MATRIXLF Field - lM23 ΓòÉΓòÉΓòÉ
  3970.  
  3971.  lM23 (LONG) 
  3972.     Third element of second row. 
  3973.  
  3974.  
  3975. ΓòÉΓòÉΓòÉ <hidden> MATRIXLF Field - lM31 ΓòÉΓòÉΓòÉ
  3976.  
  3977.  lM31 (LONG) 
  3978.     First element of third row. 
  3979.  
  3980.  
  3981. ΓòÉΓòÉΓòÉ <hidden> MATRIXLF Field - lM32 ΓòÉΓòÉΓòÉ
  3982.  
  3983.  lM32 (LONG) 
  3984.     Second element of third row. 
  3985.  
  3986.  
  3987. ΓòÉΓòÉΓòÉ <hidden> MATRIXLF Field - lM33 ΓòÉΓòÉΓòÉ
  3988.  
  3989.  lM33 (LONG) 
  3990.     Third element of third row. 
  3991.  
  3992.  
  3993. ΓòÉΓòÉΓòÉ 1.41. MPARAM ΓòÉΓòÉΓòÉ
  3994.  
  3995. A 4-byte message-dependent parameter structure. 
  3996.  
  3997. typedef VOID *MPARAM;
  3998.  
  3999. Certain elements of information, placed into the parameters of a message, have 
  4000. data types that do not use all four bytes of this data type. The rules 
  4001. governing these cases are: 
  4002.  
  4003.  BOOL      The value is contained in the low word and the high word is 0. 
  4004.  SHORT     The value is contained in the low word and its sign is extended into 
  4005.            the high word. 
  4006.  USHORT    The value is contained in the low word and the high word is 0. 
  4007.  NULL      The entire four bytes are 0. 
  4008.  
  4009.  The structure of this data type depends on the message. For details, see the 
  4010.  description of the particular message. 
  4011.  
  4012.  
  4013. ΓòÉΓòÉΓòÉ 1.42. MRESULT ΓòÉΓòÉΓòÉ
  4014.  
  4015. A 4-byte message-dependent reply parameter structure. 
  4016.  
  4017. typedef VOID *MRESULT;
  4018.  
  4019. Certain elements of information, placed into the parameters of a message, have 
  4020. data types that do not use all four bytes of this data type. The rules 
  4021. governing these cases are: 
  4022.  
  4023.  BOOL      The value is contained in the low word and the high word is 0. 
  4024.  SHORT     The value is contained in the low word and its sign is extended into 
  4025.            the high word. 
  4026.  USHORT    The value is contained in the low word and the high word is 0. 
  4027.  NULL      The entire four bytes are 0. 
  4028.  
  4029.  The structure of this data type depends on the message. For details, see the 
  4030.  description of the particular message. 
  4031.  
  4032.  
  4033. ΓòÉΓòÉΓòÉ 1.43. PANOSE ΓòÉΓòÉΓòÉ
  4034.  
  4035. The Panose field in the font metrics will allow for quantitative descriptions 
  4036. of the visual properties of font faces. The PANOSE definition contains ten 
  4037. digits, each of which currently describes up to sixteen variations. 
  4038.  
  4039. typedef struct _PANOSE {
  4040.   BYTE     bFamilyType;       /*  Family kind. */
  4041.   BYTE     bSerifStyle;       /*  Serif style. */
  4042.   BYTE     bWeight;           /*  Weight. */
  4043.   BYTE     bProportion;       /*  Proportion. */
  4044.   BYTE     bContrast;         /*  Contrast. */
  4045.   BYTE     bStrokeVariation;  /*  Stroke Variation. */
  4046.   BYTE     bArmStyle;         /*  Arm Style. */
  4047.   BYTE     bLetterform;       /*  Letterform. */
  4048.   BYTE     bMidline;          /*  Midline. */
  4049.   BYTE     bXHeight;          /*  X-Height. */
  4050.   BYTE     fbPassedISO;       /*  Font passed ISO test. */
  4051.   BYTE     fbFailedISO;       /*  Font failed ISO test. */
  4052. } PANOSE;
  4053.  
  4054. typedef PANOSE *PPANOSE;
  4055.  
  4056.  
  4057. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bFamilyType ΓòÉΓòÉΓòÉ
  4058.  
  4059.  bFamilyType (BYTE) 
  4060.     Family kind. 
  4061.  
  4062.     0         Any 
  4063.     1         No Fit 
  4064.     2         Text and Display 
  4065.     3         Script 
  4066.     4         Decorative 
  4067.     5         Pictorial 
  4068.  
  4069.  
  4070. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bSerifStyle ΓòÉΓòÉΓòÉ
  4071.  
  4072.  bSerifStyle (BYTE) 
  4073.     Serif style. 
  4074.  
  4075.     0         Any 
  4076.     1         No Fit 
  4077.     2         Cove 
  4078.     3         Obtuse Cove 
  4079.     4         Square Cove 
  4080.     5         Obtuse Square Cove 
  4081.     6         Square 
  4082.     7         Thin 
  4083.     8         Bone 
  4084.     9         Exaggerated 
  4085.     10        Triangle 
  4086.     11        Normal Sans 
  4087.     12        Obtuse Sans 
  4088.     13        Perp Sans 
  4089.     14        Flared 
  4090.     15        Rounded 
  4091.  
  4092.  
  4093. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bWeight ΓòÉΓòÉΓòÉ
  4094.  
  4095.  bWeight (BYTE) 
  4096.     Weight. 
  4097.  
  4098.     0         Any 
  4099.     1         No Fit 
  4100.     2         Very Light 
  4101.     3         Light 
  4102.     4         Thin 
  4103.     5         Book 
  4104.     6         Medium 
  4105.     7         Demi 
  4106.     8         Bold 
  4107.     9         Heavy 
  4108.     10        Black 
  4109.     11        Nord 
  4110.  
  4111.  
  4112. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bProportion ΓòÉΓòÉΓòÉ
  4113.  
  4114.  bProportion (BYTE) 
  4115.     Proportion. 
  4116.  
  4117.     0         Any 
  4118.     1         No Fit 
  4119.     2         Old Style 
  4120.     3         Modern 
  4121.     4         Even Width 
  4122.     5         Expanded 
  4123.     6         Condensed 
  4124.     7         Very Expanded 
  4125.     8         Very Condensed 
  4126.     9         Monospaced 
  4127.  
  4128.  
  4129. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bContrast ΓòÉΓòÉΓòÉ
  4130.  
  4131.  bContrast (BYTE) 
  4132.     Contrast. 
  4133.  
  4134.     0         Any 
  4135.     1         No Fit 
  4136.     2         None 
  4137.     3         Very Low 
  4138.     4         Low 
  4139.     5         Medium Low 
  4140.     6         Medium 
  4141.     7         Medium High 
  4142.     8         High 
  4143.     9         Very High 
  4144.  
  4145.  
  4146. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bStrokeVariation ΓòÉΓòÉΓòÉ
  4147.  
  4148.  bStrokeVariation (BYTE) 
  4149.     Stroke Variation. 
  4150.  
  4151.     0         Any 
  4152.     1         No Fit 
  4153.     2         Gradual/Diagonal 
  4154.     3         Gradual/Transitional 
  4155.     4         Gradual/Vertical 
  4156.     5         Gradual/Horizontal 
  4157.     6         Rapid/Vertical 
  4158.     7         Rapid/Horizontal 
  4159.     8         Instant/Vertical 
  4160.  
  4161.  
  4162. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bArmStyle ΓòÉΓòÉΓòÉ
  4163.  
  4164.  bArmStyle (BYTE) 
  4165.     Arm Style. 
  4166.  
  4167.     0         Any 
  4168.     1         No Fit 
  4169.     2         Straight Arms/Horizontal 
  4170.     3         Straight Arms/Wedge 
  4171.     4         Straight Arms/Vertical 
  4172.     5         Straight Arms/Single Serif 
  4173.     6         Straight Arms/Double Serif 
  4174.     7         Non-Straight Arms/Horizontal 
  4175.     8         Non-Straight Arms/Wedge 
  4176.     9         Non-Straight Arms/Vertical 
  4177.     10        Non-Straight Arms/Single Serif 
  4178.     11        Non-Straight Arms/Double Serif 
  4179.  
  4180.  
  4181. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bLetterform ΓòÉΓòÉΓòÉ
  4182.  
  4183.  bLetterform (BYTE) 
  4184.     Letterform. 
  4185.  
  4186.     0         Any 
  4187.     1         No Fit 
  4188.     2         Normal/Contact 
  4189.     3         ONormal/Weighted 
  4190.     4         ONormal/Boxed 
  4191.     5         ONormal/Flattened 
  4192.     6         ONormal/Rounded 
  4193.     7         ONormal/Off Center 
  4194.     8         ONormal/Square 
  4195.     9         Oblique/Contact 
  4196.     10        Oblique/Weighted 
  4197.     11        Oblique/Boxed 
  4198.     12        Oblique/Flattened 
  4199.     13        Oblique/Rounded 
  4200.     14        Oblique/Off Center 
  4201.     15        Oblique/Square 
  4202.  
  4203.  
  4204. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bMidline ΓòÉΓòÉΓòÉ
  4205.  
  4206.  bMidline (BYTE) 
  4207.     Midline. 
  4208.  
  4209.     0         Any 
  4210.     1         No Fit 
  4211.     2         Standard/Trimmed 
  4212.     3         Standard/Pointed 
  4213.     4         Standard/Serifed 
  4214.     5         High/Trimmed 
  4215.     6         High/Pointed 
  4216.     7         High/Serifed 
  4217.     8         Constant/Trimmed 
  4218.     9         Constant/Pointed 
  4219.     10        Constant/Serifed 
  4220.     11        Low/Trimmed 
  4221.     12        Low/Pointed 
  4222.     13        Low/Serifed 
  4223.  
  4224.  
  4225. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bXHeight ΓòÉΓòÉΓòÉ
  4226.  
  4227.  bXHeight (BYTE) 
  4228.     X-Height. 
  4229.  
  4230.     0         Any 
  4231.     1         No Fit 
  4232.     2         Constant/Small 
  4233.     3         Constant/Standard 
  4234.     4         Constant/Large 
  4235.     5         Ducking/Small 
  4236.     6         Ducking/Standard 
  4237.     7         Ducking/Large 
  4238.  
  4239.  
  4240. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - fbPassedISO ΓòÉΓòÉΓòÉ
  4241.  
  4242.  fbPassedISO (BYTE) 
  4243.     Font passed ISO test. 
  4244.  
  4245.     The following flags indicate those displays and resolutions at which the 
  4246.     font complied with ISO 9241: 
  4247.  
  4248.     FM_ISO_9518_640 
  4249.     FM_ISO_9515_640 
  4250.     FM_ISO_9515_1024 
  4251.     FM_ISO_9517_640 
  4252.     FM_ISO_9517_1024 
  4253.  
  4254.  
  4255. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - fbFailedISO ΓòÉΓòÉΓòÉ
  4256.  
  4257.  fbFailedISO (BYTE) 
  4258.     Font failed ISO test. 
  4259.  
  4260.     The following flags indicate those displays and resolutions at which the 
  4261.     font did not comply with ISO 9241: 
  4262.  
  4263.     FM_ISO_9518_640 
  4264.     FM_ISO_9515_640 
  4265.     FM_ISO_9515_1024 
  4266.     FM_ISO_9517_640 
  4267.     FM_ISO_9517_1024 
  4268.  
  4269.  
  4270. ΓòÉΓòÉΓòÉ 1.44. PBUNDLE ΓòÉΓòÉΓòÉ
  4271.  
  4272. Points to a bundle data area. 
  4273.  
  4274. typedef PVOID PBUNDLE;
  4275.  
  4276.  
  4277. ΓòÉΓòÉΓòÉ 1.45. PCH ΓòÉΓòÉΓòÉ
  4278.  
  4279. Pointer to a character string. 
  4280.  
  4281. typedef unsigned char *PCH;
  4282.  
  4283.  
  4284. ΓòÉΓòÉΓòÉ 1.46. POLYGON ΓòÉΓòÉΓòÉ
  4285.  
  4286. Polygon structure. 
  4287.  
  4288. typedef struct _POLYGON {
  4289.   ULONG       ulPoints;  /*  Number of points in array. */
  4290.   PPOINTL     aPointl;   /*  Array of points. */
  4291. } POLYGON;
  4292.  
  4293. typedef POLYGON *PPOLYGON;
  4294.  
  4295.  
  4296. ΓòÉΓòÉΓòÉ <hidden> POLYGON Field - ulPoints ΓòÉΓòÉΓòÉ
  4297.  
  4298.  ulPoints (ULONG) 
  4299.     Number of points in array. 
  4300.  
  4301.  
  4302. ΓòÉΓòÉΓòÉ <hidden> POLYGON Field - aPointl ΓòÉΓòÉΓòÉ
  4303.  
  4304.  aPointl (PPOINTL) 
  4305.     Array of points. 
  4306.  
  4307.  
  4308. ΓòÉΓòÉΓòÉ 1.47. POINTL ΓòÉΓòÉΓòÉ
  4309.  
  4310. Point structure (long integers). 
  4311.  
  4312. typedef struct _POINTL {
  4313.   LONG     x;  /*  X-coordinate. */
  4314.   LONG     y;  /*  Y-coordinate. */
  4315. } POINTL;
  4316.  
  4317. typedef POINTL *PPOINTL;
  4318.  
  4319.  
  4320. ΓòÉΓòÉΓòÉ <hidden> POINTL Field - x ΓòÉΓòÉΓòÉ
  4321.  
  4322.  x (LONG) 
  4323.     X-coordinate. 
  4324.  
  4325.  
  4326. ΓòÉΓòÉΓòÉ <hidden> POINTL Field - y ΓòÉΓòÉΓòÉ
  4327.  
  4328.  y (LONG) 
  4329.     Y-coordinate. 
  4330.  
  4331.  
  4332. ΓòÉΓòÉΓòÉ 1.48. PCSZ ΓòÉΓòÉΓòÉ
  4333.  
  4334. Pointer to a constant null-terminated string. 
  4335.  
  4336. typedef const char *PCSZ;
  4337.  
  4338.  
  4339. ΓòÉΓòÉΓòÉ 1.49. PSZ ΓòÉΓòÉΓòÉ
  4340.  
  4341. Pointer to a null-terminated string. 
  4342.  
  4343. If you are using C++ **, you may need to use PCSZ. 
  4344.  
  4345. typedef unsigned char *PSZ;
  4346.  
  4347.  
  4348. ΓòÉΓòÉΓòÉ 1.50. PRQINFO3 ΓòÉΓòÉΓòÉ
  4349.  
  4350. Print-queue information structure. 
  4351.  
  4352. This structure is used at information levels 3 and 4. 
  4353.  
  4354. typedef struct _PRQINFO3 {
  4355.   PSZ           pszName;        /*  Queue name. */
  4356.   USHORT        uPriority;      /*  Queue priority. */
  4357.   USHORT        uStartTime;     /*  Minutes after midnight when queue becomes active. */
  4358.   USHORT        uUntilTime;     /*  Minutes after midnight. when queue ceases to be active. */
  4359.   USHORT        fsType;         /*  Queue type. */
  4360.   PSZ           pszSepFile;     /*  Separator-page file. */
  4361.   PSZ           pszPrProc;      /*  Default queue-processor. */
  4362.   PSZ           pszParms;       /*  Queue parameters. */
  4363.   PSZ           pszComment;     /*  Queue description. */
  4364.   USHORT        fsStatus;       /*  Queue status. */
  4365.   USHORT        cJobs;          /*  Number of jobs in queue. */
  4366.   PSZ           pszPrinters;    /*  Print devices connected to queue. */
  4367.   PSZ           pszDriverName;  /*  Default device driver. */
  4368.   PDRIVDATA     pDriverData;    /*  Default queue job properties. */
  4369. } PRQINFO3;
  4370.  
  4371. typedef PRQINFO3 *PPRQINFO3;
  4372.  
  4373.  
  4374. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszName ΓòÉΓòÉΓòÉ
  4375.  
  4376.  pszName (PSZ) 
  4377.     Queue name. 
  4378.  
  4379.     The maximum length of the name in the network case is 256 (including one 
  4380.     byte for zero termination). 
  4381.  
  4382.  
  4383. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - uPriority ΓòÉΓòÉΓòÉ
  4384.  
  4385.  uPriority (USHORT) 
  4386.     Queue priority. 
  4387.  
  4388.     The range is 1 through 9, with 1 being the highest queue priority. 
  4389.  
  4390.     The default job priority (DefJobPrio) is determined from: 
  4391.     DefJobPrio=100-(10* uPriority). 
  4392.  
  4393.     If a job is added with PRJ_NO_PRIORITY specified, DefJobPrio is used. If a 
  4394.     default priority higher than the default job priority is specified, the 
  4395.     default job priority is used. If a default priority lower than the default 
  4396.     is specified, the specified job priority is used. 
  4397.  
  4398.     PRQ_DEF_PRIORITY 
  4399.             Default priority 
  4400.     PRQ_MAX_PRIORITY 
  4401.             Highest priority 
  4402.     PRQ_MIN_PRIORITY 
  4403.             Minimum priority 
  4404.     PRQ_NO_PRIORITY 
  4405.             No priority. 
  4406.  
  4407.  
  4408. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - uStartTime ΓòÉΓòÉΓòÉ
  4409.  
  4410.  uStartTime (USHORT) 
  4411.     Minutes after midnight when queue becomes active. 
  4412.  
  4413.     For example, the value 75 represents 1:15 a.m. 
  4414.  
  4415.     If uStartTime and uUntilTime are both 0, the print queue is always 
  4416.     available. 
  4417.  
  4418.  
  4419. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - uUntilTime ΓòÉΓòÉΓòÉ
  4420.  
  4421.  uUntilTime (USHORT) 
  4422.     Minutes after midnight. when queue ceases to be active. 
  4423.  
  4424.     For example, the value 1200 represents 8 p.m. 
  4425.  
  4426.     If uUntilTime and uStartTime are both 0, the print queue is always 
  4427.     available. 
  4428.  
  4429.  
  4430. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - fsType ΓòÉΓòÉΓòÉ
  4431.  
  4432.  fsType (USHORT) 
  4433.     Queue type. 
  4434.  
  4435.     PRQ3_TYPE_RAW 
  4436.             Data is always enqueued in the device specific format. 
  4437.     PRQ3_TYPE_BYPASS 
  4438.             Allows the spooler to bypass the queue processor and send data 
  4439.             directly to the Printer Driver. Setting this bit allows the spooler 
  4440.             to print jobs of type PM_Q_RAW while they are still being spooled. 
  4441.     PRQ3_TYPE_APPDEFAULT 
  4442.             This bit is set for the application default queue only. 
  4443.  
  4444.  
  4445. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszSepFile ΓòÉΓòÉΓòÉ
  4446.  
  4447.  pszSepFile (PSZ) 
  4448.     Separator-page file. 
  4449.  
  4450.     The path and file name of a separator-page file on the target computer. 
  4451.  
  4452.     This file contains formatting information for the page or pages to be used 
  4453.     between print jobs. A relative path name is taken as relative to the 
  4454.     current spool directory. A NULL string indicates no separator page. 
  4455.  
  4456.  
  4457. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszPrProc ΓòÉΓòÉΓòÉ
  4458.  
  4459.  pszPrProc (PSZ) 
  4460.     Default queue-processor. 
  4461.  
  4462.  
  4463. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszParms ΓòÉΓòÉΓòÉ
  4464.  
  4465.  pszParms (PSZ) 
  4466.     Queue parameters. 
  4467.  
  4468.     This can be any text string or a NULL string. 
  4469.  
  4470.  
  4471. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszComment ΓòÉΓòÉΓòÉ
  4472.  
  4473.  pszComment (PSZ) 
  4474.     Queue description. 
  4475.  
  4476.     A NULL string results in no comment. The maximum length is 48 characters 
  4477.     (including one byte for the null terminator). 
  4478.  
  4479.  
  4480. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - fsStatus ΓòÉΓòÉΓòÉ
  4481.  
  4482.  fsStatus (USHORT) 
  4483.     Queue status. 
  4484.  
  4485.     PRQ3_PAUSED 
  4486.             Queue is paused (held). 
  4487.     PRQ3_PENDING 
  4488.             Queue is pending deletion. 
  4489.  
  4490.  
  4491. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - cJobs ΓòÉΓòÉΓòÉ
  4492.  
  4493.  cJobs (USHORT) 
  4494.     Number of jobs in queue. 
  4495.  
  4496.  
  4497. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszPrinters ΓòÉΓòÉΓòÉ
  4498.  
  4499.  pszPrinters (PSZ) 
  4500.     Print devices connected to queue. 
  4501.  
  4502.     This cannot be NULL. 
  4503.  
  4504.  
  4505. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszDriverName ΓòÉΓòÉΓòÉ
  4506.  
  4507.  pszDriverName (PSZ) 
  4508.     Default device driver. 
  4509.  
  4510.  
  4511. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pDriverData ΓòÉΓòÉΓòÉ
  4512.  
  4513.  pDriverData (PDRIVDATA) 
  4514.     Default queue job properties. 
  4515.  
  4516.     Note:  An application can use pszDriverName, pDriverData, pszPrProc, and 
  4517.            pszParms to construct a valid DevOpenDC call based only on the queue 
  4518.            name. 
  4519.  
  4520.  
  4521. ΓòÉΓòÉΓòÉ 1.51. PVOID ΓòÉΓòÉΓòÉ
  4522.  
  4523. Pointer to a data type of undefined format. 
  4524.  
  4525. typedef VOID *PVOID;
  4526.  
  4527.  
  4528. ΓòÉΓòÉΓòÉ 1.52. RECTL ΓòÉΓòÉΓòÉ
  4529.  
  4530. Rectangle structure. 
  4531.  
  4532. typedef struct _RECTL {
  4533.   LONG     xLeft;    /*  X-coordinate of left-hand edge of rectangle. */
  4534.   LONG     yBottom;  /*  Y-coordinate of bottom edge of rectangle. */
  4535.   LONG     xRight;   /*  X-coordinate of right-hand edge of rectangle. */
  4536.   LONG     yTop;     /*  Y-coordinate of top edge of rectangle. */
  4537. } RECTL;
  4538.  
  4539. typedef RECTL *PRECTL;
  4540.  
  4541.  
  4542. ΓòÉΓòÉΓòÉ <hidden> RECTL Field - xLeft ΓòÉΓòÉΓòÉ
  4543.  
  4544.  xLeft (LONG) 
  4545.     X-coordinate of left-hand edge of rectangle. 
  4546.  
  4547.  
  4548. ΓòÉΓòÉΓòÉ <hidden> RECTL Field - yBottom ΓòÉΓòÉΓòÉ
  4549.  
  4550.  yBottom (LONG) 
  4551.     Y-coordinate of bottom edge of rectangle. 
  4552.  
  4553.  
  4554. ΓòÉΓòÉΓòÉ <hidden> RECTL Field - xRight ΓòÉΓòÉΓòÉ
  4555.  
  4556.  xRight (LONG) 
  4557.     X-coordinate of right-hand edge of rectangle. 
  4558.  
  4559.  
  4560. ΓòÉΓòÉΓòÉ <hidden> RECTL Field - yTop ΓòÉΓòÉΓòÉ
  4561.  
  4562.  yTop (LONG) 
  4563.     Y-coordinate of top edge of rectangle. 
  4564.  
  4565.  
  4566. ΓòÉΓòÉΓòÉ 1.53. RGNRECT ΓòÉΓòÉΓòÉ
  4567.  
  4568. Region-rectangle structure. 
  4569.  
  4570. typedef struct _RGNRECT {
  4571.   ULONG     ircStart;     /*  Rectangle number from which to start enumerating. */
  4572.   ULONG     crc;          /*  Number of rectangles that can be returned. */
  4573.   ULONG     crcReturned;  /*  Number of rectangles returned. */
  4574.   ULONG     ulDirection;  /*  Direction in which the returned rectangles are to be ordered. */
  4575. } RGNRECT;
  4576.  
  4577. typedef RGNRECT *PRGNRECT;
  4578.  
  4579.  
  4580. ΓòÉΓòÉΓòÉ <hidden> RGNRECT Field - ircStart ΓòÉΓòÉΓòÉ
  4581.  
  4582.  ircStart (ULONG) 
  4583.     Rectangle number from which to start enumerating. 
  4584.  
  4585.     Numbering starts from 1. 
  4586.  
  4587.  
  4588. ΓòÉΓòÉΓòÉ <hidden> RGNRECT Field - crc ΓòÉΓòÉΓòÉ
  4589.  
  4590.  crc (ULONG) 
  4591.     Number of rectangles that can be returned. 
  4592.  
  4593.     This must be 1 or greater. 
  4594.  
  4595.  
  4596. ΓòÉΓòÉΓòÉ <hidden> RGNRECT Field - crcReturned ΓòÉΓòÉΓòÉ
  4597.  
  4598.  crcReturned (ULONG) 
  4599.     Number of rectangles returned. 
  4600.  
  4601.     A value of less than crc indicates that there are no more rectangles to 
  4602.     enumerate. 
  4603.  
  4604.  
  4605. ΓòÉΓòÉΓòÉ <hidden> RGNRECT Field - ulDirection ΓòÉΓòÉΓòÉ
  4606.  
  4607.  ulDirection (ULONG) 
  4608.     Direction in which the returned rectangles are to be ordered. 
  4609.  
  4610.     This ordering uses the leading edge of a rectangle: 
  4611.  
  4612.     RECTDIR_LFRT_TOPBOT           Left-to-right, top-to-bottom 
  4613.  
  4614.     RECTDIR_RTLF_TOPBOT           Right-to-left, top-to-bottom 
  4615.  
  4616.     RECTDIR_LFRT_BOTTOP           Left-to-right, bottom-to-top 
  4617.  
  4618.     RECTDIR_RTLF_BOTTOP           Right-to-left, bottom-to-top 
  4619.  
  4620.  
  4621. ΓòÉΓòÉΓòÉ 1.54. RGB ΓòÉΓòÉΓòÉ
  4622.  
  4623. RGB color value. 
  4624.  
  4625. typedef struct _RGB {
  4626.   BYTE     bBlue;   /*  Blue component of the color definition. */
  4627.   BYTE     bGreen;  /*  Green component of the color definition. */
  4628.   BYTE     bRed;    /*  Red component of the color definition. */
  4629. } RGB;
  4630.  
  4631. typedef RGB *PRGB;
  4632.  
  4633.  
  4634. ΓòÉΓòÉΓòÉ <hidden> RGB Field - bBlue ΓòÉΓòÉΓòÉ
  4635.  
  4636.  bBlue (BYTE) 
  4637.     Blue component of the color definition. 
  4638.  
  4639.  
  4640. ΓòÉΓòÉΓòÉ <hidden> RGB Field - bGreen ΓòÉΓòÉΓòÉ
  4641.  
  4642.  bGreen (BYTE) 
  4643.     Green component of the color definition. 
  4644.  
  4645.  
  4646. ΓòÉΓòÉΓòÉ <hidden> RGB Field - bRed ΓòÉΓòÉΓòÉ
  4647.  
  4648.  bRed (BYTE) 
  4649.     Red component of the color definition. 
  4650.  
  4651.  
  4652. ΓòÉΓòÉΓòÉ 1.55. RGB2 ΓòÉΓòÉΓòÉ
  4653.  
  4654. RGB color value. 
  4655.  
  4656. typedef struct _RGB2 {
  4657.   BYTE     bBlue;      /*  Blue component of the color definition. */
  4658.   BYTE     bGreen;     /*  Green component of the color definition. */
  4659.   BYTE     bRed;       /*  Red component of the color definition. */
  4660.   BYTE     fcOptions;  /*  Entry options. */
  4661. } RGB2;
  4662.  
  4663. typedef RGB2 *PRGB2;
  4664.  
  4665.  
  4666. ΓòÉΓòÉΓòÉ <hidden> RGB2 Field - bBlue ΓòÉΓòÉΓòÉ
  4667.  
  4668.  bBlue (BYTE) 
  4669.     Blue component of the color definition. 
  4670.  
  4671.  
  4672. ΓòÉΓòÉΓòÉ <hidden> RGB2 Field - bGreen ΓòÉΓòÉΓòÉ
  4673.  
  4674.  bGreen (BYTE) 
  4675.     Green component of the color definition. 
  4676.  
  4677.  
  4678. ΓòÉΓòÉΓòÉ <hidden> RGB2 Field - bRed ΓòÉΓòÉΓòÉ
  4679.  
  4680.  bRed (BYTE) 
  4681.     Red component of the color definition. 
  4682.  
  4683.  
  4684. ΓòÉΓòÉΓòÉ <hidden> RGB2 Field - fcOptions ΓòÉΓòÉΓòÉ
  4685.  
  4686.  fcOptions (BYTE) 
  4687.     Entry options. 
  4688.  
  4689.     These can be ORed together if required: 
  4690.  
  4691.     PC_RESERVED         The color entry is reserved for animating color with 
  4692.                         the palette manager. 
  4693.  
  4694.     PC_EXPLICIT         The low-order word of the color table entry designates 
  4695.                         a physical palette slot. This allows an application to 
  4696.                         show the actual contents of the device palette as 
  4697.                         realized for other logical palettes. This does not 
  4698.                         prevent the color in the slot from being changed for 
  4699.                         any reason. 
  4700.  
  4701.  
  4702. ΓòÉΓòÉΓòÉ 1.56. SIZEF ΓòÉΓòÉΓòÉ
  4703.  
  4704. Size structure (FIXED values). 
  4705.  
  4706. typedef struct _SIZEF {
  4707.   FIXED     cx;  /*  Width. */
  4708.   FIXED     cy;  /*  Height. */
  4709. } SIZEF;
  4710.  
  4711. typedef SIZEF *PSIZEF;
  4712.  
  4713.  
  4714. ΓòÉΓòÉΓòÉ <hidden> SIZEF Field - cx ΓòÉΓòÉΓòÉ
  4715.  
  4716.  cx (FIXED) 
  4717.     Width. 
  4718.  
  4719.  
  4720. ΓòÉΓòÉΓòÉ <hidden> SIZEF Field - cy ΓòÉΓòÉΓòÉ
  4721.  
  4722.  cy (FIXED) 
  4723.     Height. 
  4724.  
  4725.  
  4726. ΓòÉΓòÉΓòÉ 1.57. SIZEL ΓòÉΓòÉΓòÉ
  4727.  
  4728. Size structure (LONG values). 
  4729.  
  4730. typedef struct _SIZEL {
  4731.   LONG     cx;  /*  Width. */
  4732.   LONG     cy;  /*  Height. */
  4733. } SIZEL;
  4734.  
  4735. typedef SIZEL *PSIZEL;
  4736.  
  4737.  
  4738. ΓòÉΓòÉΓòÉ <hidden> SIZEL Field - cx ΓòÉΓòÉΓòÉ
  4739.  
  4740.  cx (LONG) 
  4741.     Width. 
  4742.  
  4743.  
  4744. ΓòÉΓòÉΓòÉ <hidden> SIZEL Field - cy ΓòÉΓòÉΓòÉ
  4745.  
  4746.  cy (LONG) 
  4747.     Height. 
  4748.  
  4749.  
  4750. ΓòÉΓòÉΓòÉ 1.58. SHORT ΓòÉΓòÉΓòÉ
  4751.  
  4752. Signed integer in the range -32 768 through 32 767. 
  4753.  
  4754. #define SHORT short
  4755.  
  4756.  
  4757. ΓòÉΓòÉΓòÉ 1.59. STR8 ΓòÉΓòÉΓòÉ
  4758.  
  4759. String of 8 characters. 
  4760.  
  4761. typedef CHAR STR8[8];
  4762.  
  4763.  
  4764. ΓòÉΓòÉΓòÉ 1.60. ULONG ΓòÉΓòÉΓòÉ
  4765.  
  4766. Unsigned integer in the range 0 through 4 294 967 295. 
  4767.  
  4768. typedef unsigned long ULONG;
  4769.  
  4770.  
  4771. ΓòÉΓòÉΓòÉ 1.61. USHORT ΓòÉΓòÉΓòÉ
  4772.  
  4773. Unsigned integer in the range 0 through 65 535. 
  4774.  
  4775. typedef unsigned short USHORT;
  4776.  
  4777.  
  4778. ΓòÉΓòÉΓòÉ 2. Graphics Orders ΓòÉΓòÉΓòÉ
  4779.  
  4780. This section describes the format of the graphics orders. 
  4781.  
  4782. Graphics orders are used in the following circumstances: 
  4783.  
  4784.      Using GpiGetData or GpiPutData functions for bulk transfer of part or all 
  4785.       of graphics segment data (unless this is simply being copied without 
  4786.       being changed). 
  4787.  
  4788.      Editing segments with GpiQueryElement and GpiElement. 
  4789.  
  4790.      Generating metafiles (other than through the Presentation Manager API), 
  4791.       or examining their contents. The data part of Graphics Data structured 
  4792.       fields within the metafile (see "Metafile Data Format" in the 
  4793.       Presentation Manager Programming Reference) consists of graphics orders. 
  4794.  
  4795.  When primitive or attribute functions (plus certain other functions) are 
  4796.  specified at the programming interface, and the drawing mode (see 
  4797.  GpiSetDrawingMode) is set to drawandretain, graphics orders are constructed 
  4798.  and placed in the current graphics segment. One API call often causes a single 
  4799.  order to be generated. Sometimes, however, several orders are necessary: an 
  4800.  example of this is where a GpiPolyLine call is issued, which specifies more 
  4801.  strokes than there is room for, in a single order. 
  4802.  
  4803.  In either case, the order or orders generated by a single API call comprise a 
  4804.  single element, unless the application specifically starts an element using 
  4805.  the GpiBeginElement function. In this case the element consists of all of the 
  4806.  orders generated between this and the following GpiEndElement function. A 
  4807.  GpiQueryElement function returns the orders that comprise an element; the 
  4808.  application may edit these, and return them to the segment with GpiElement. 
  4809.  The Begin Element - End Element orders that surround a multi-order element in 
  4810.  the segment are never passed between the application and the system on 
  4811.  GpiQueryElement and GpiElement functions. 
  4812.  
  4813.  No double word or word alignment can be assumed for orders either within 
  4814.  segments or during editing. 
  4815.  
  4816.  
  4817. ΓòÉΓòÉΓòÉ 2.1. Introduction to Graphics Orders ΓòÉΓòÉΓòÉ
  4818.  
  4819. In the retain and draw-and-retain drawing modes, specific GPI functions 
  4820. (primitive-drawing and attribute-setting functions, plus some others) cause 
  4821. graphics orders to be stored in the current segment. A graphics order is a 
  4822. sequence of one or more bytes of data that describe a graphics function. There 
  4823. is typically a one-to-one correspondence between a GPI function and a graphics 
  4824. order. You do not need to understand the various formats and contents of the 
  4825. graphics orders, unless: 
  4826.  
  4827.      You are using GpiGetData or GpiPutData for bulk transfer of data that you 
  4828.       want to edit. 
  4829.  
  4830.      You are simply copying data from one segment to another. 
  4831.  
  4832.      You are using GpiElement to add data to a segment, or GpiQueryElement to 
  4833.       retrieve data from a segment. 
  4834.  
  4835.      You are examining the contents of a metafile. 
  4836.  
  4837.  Both the graphics orders and the metafile structure are described in the 
  4838.  Presentation Manager. This appendix describes the header file PMORD.H, which 
  4839.  has been provided to allow you to manipulate the graphics orders more easily. 
  4840.  
  4841.  
  4842. ΓòÉΓòÉΓòÉ 2.1.1. The Graphics-Orders Header File (PMORD.H) ΓòÉΓòÉΓòÉ
  4843.  
  4844. A set of helper constants, macros, and structures has been provided to help you 
  4845. decode and encode graphics orders. These items are defined in the header file 
  4846. PMORD.H. 
  4847.  
  4848. There are four types of graphics orders. The first byte of each order, 
  4849. regardless of the graphics-order type, is the order code itself, which either 
  4850. partially or completely describes what follows. Depending on the order type, 
  4851. the graphics order can contain further information. 
  4852.  
  4853. The four types of graphics order are: 
  4854.  
  4855.  1-Byte Order 
  4856.        The 1-byte order comprises a single byte: 
  4857.  
  4858.               BYTE 1 : order code.
  4859.  
  4860.  2-Byte Order 
  4861.        The 2-byte order consists of two bytes: 
  4862.  
  4863.               BYTE 1 : order code
  4864.               BYTE 2 : associated value.
  4865.  
  4866.  Long Order 
  4867.        The long order can comprise up to 257 bytes of information: 
  4868.  
  4869.               BYTE 1     : order code
  4870.               BYTE 2     : length of order (0 to 255)
  4871.               BYTE 3-257 : associated value bytes
  4872.                            depending on the order code.
  4873.  
  4874.        There is a special long order (Escape) where: 
  4875.  
  4876.               BYTE 3     : escape type
  4877.               BYTE 4     : escape identifier
  4878.               BYTE 5-257 : associated value bytes
  4879.                            depending on the escape
  4880.                            identifier.
  4881.  
  4882.  Very Long Order 
  4883.        The very long order can comprise up to 65537 bytes of information: 
  4884.  
  4885.               BYTE 1       : order code
  4886.               BYTE 2       : order qualifier
  4887.               BYTE 3       : length of order
  4888.                              (most significant byte)
  4889.               BYTE 4       : length of order
  4890.                              (least significant byte -
  4891.                               length of order is 0 to 65535)
  4892.               BYTE 5-65537 : associated value bytes
  4893.                              depending on the order
  4894.                              qualifier.
  4895.  
  4896.        There is a special very long order (Escape) where : 
  4897.  
  4898.               BYTE 5       : escape type
  4899.               BYTE 6       : escape identifier
  4900.               BYTE 7-65537 : associated value bytes
  4901.                              depending on the escape
  4902.                              identifier.
  4903.  
  4904.  
  4905. ΓòÉΓòÉΓòÉ 2.1.1.1. Decoding Graphics Orders ΓòÉΓòÉΓòÉ
  4906.  
  4907. The recommended way of decoding a buffer of graphics orders (in C language) is 
  4908. to use a pointer to address the first byte of the buffer, and then retrieve the 
  4909. graphics order it contains. To discover which of the four types of order you 
  4910. have, use the following macros: 
  4911.  
  4912.      BYTE_ORDER  (1-byte order) 
  4913.  
  4914.      SHORT_ORDER  (2-byte order) 
  4915.  
  4916.      LONG_ORDER  (long order) 
  4917.  
  4918.      VLONG_ORDER  (very long order). 
  4919.  These macros are defined in the header file PMORD.H. Each macro processes a 
  4920.  single byte of data and returns a Boolean value (zero or nonzero). A zero 
  4921.  value means that the order is not of that type. When you know the 
  4922.  graphics-order type, you can establish the length of the order, and add the 
  4923.  length to the pointer. You can then retrieve the next order in the buffer, and 
  4924.  repeat the process until all data has been retrieved. 
  4925.  
  4926.  You can decode the graphics-order data itself by providing a routine for each 
  4927.  of the order types, or a routine for each individual order: 
  4928.  
  4929.      For a 1-byte graphic order, the decoding routine should simply return a 
  4930.       length of 1. 
  4931.  
  4932.      For a 2-byte graphic order, the decoding routine can use the overlay 
  4933.       structure ORDER to decode the data. The routine should return a length of 
  4934.       2. 
  4935.  
  4936.      For a long order, the decoding routine can use the overlay structure 
  4937.       LORDER to decode the data. The length of the data is a variable value. 
  4938.  
  4939.      For a very long order, the decoding routine can use the overlay structure 
  4940.       VORDER to decode the data. The length of the data is a variable value. 
  4941.  
  4942.  The overlay structures ORDER, LORDER, and VORDER are defined in the header 
  4943.  file PMORD.H. 
  4944.  
  4945.  You can build graphics orders using the same structures and order types that 
  4946.  are used for decoding graphics orders. 
  4947.  
  4948.  
  4949. ΓòÉΓòÉΓòÉ 2.1.1.2. Naming Conventions ΓòÉΓòÉΓòÉ
  4950.  
  4951. The names of the graphics-order codes are in the form OCODE_Gxxx. The Gxxx 
  4952. abbreviation is the name of the individual order, and can be used for types, 
  4953. structures, and constants directly related to that order. In the header file, 
  4954. there is a comment on the same line as each of the orders that describes the 
  4955. order. For example, the Begin Area order (GBAR) is described in the header file 
  4956. as follows: 
  4957.  
  4958. #define OCODE_GBAR     0x68  /* Begin area    */
  4959. #define GBAR_BOUNDARY  0xC0
  4960.  
  4961. Note: 
  4962.  
  4963. In some structures, an S or an L is added to the name to differentiate between 
  4964. the short-coordinate form (16-bit) and the long-coordinate form (32-bit). For 
  4965. example, the Set Arc Parameters order (GSAP) is as follows: 
  4966.  
  4967. #define OCODE_GSAP     0x22
  4968. #define OCODE_GPSAP    0x62
  4969.  
  4970.    typedef struct _ORDERS_GSAP {
  4971.      SHORT  p;
  4972.      SHORT  q;
  4973.      SHORT  r;
  4974.      SHORT  s;
  4975.    } ORDERS_GSAP;
  4976.  
  4977.    typedef struct _ORDERL_GSAP {
  4978.      LONG   p;
  4979.      LONG   q;
  4980.      LONG   r;
  4981.      LONG   s;
  4982.    } ORDERL_GSAP;
  4983.  
  4984. In this example, the structures ORDERS_GSAP and ORDERL_GSAP are shared by GSAP 
  4985. (set arc parameters) and GPSAP (push and set arc parameters). As a rule, there 
  4986. is structure sharing between the set and push-and-set forms of graphics orders. 
  4987.  
  4988. There is structure-sharing between the current-position and the given-position 
  4989. forms of some orders. For example, the orders GCARC (arc at current position) 
  4990. and GARC (arc at given position) share a structure. 
  4991.  
  4992.  
  4993. ΓòÉΓòÉΓòÉ 2.2. Arc at a Given Position/Arc at Current Position ΓòÉΓòÉΓòÉ
  4994.  
  4995.  
  4996. ΓòÉΓòÉΓòÉ <hidden> Arc at a Given Position/Arc at Current Position - Syntax ΓòÉΓòÉΓòÉ
  4997.  
  4998. This order constructs an arc starting at a given position. 
  4999.  
  5000. Arc at a Given Position (GARC) 
  5001. X'C6' (LEN, P0, P1, P2) 
  5002.  
  5003. Arc at Current Position (GCARC) 
  5004. X'86' (LEN, P1, P2) 
  5005.  
  5006.  
  5007. ΓòÉΓòÉΓòÉ <hidden> GARC/GCARC Parameter - LEN ΓòÉΓòÉΓòÉ
  5008.  
  5009.  LEN (GLENGTH1) 
  5010.     Length of following data. 
  5011.  
  5012.  
  5013. ΓòÉΓòÉΓòÉ <hidden> GARC/GCARC Parameter - P0 ΓòÉΓòÉΓòÉ
  5014.  
  5015.  P0 (GPOINT) 
  5016.     Coordinate data of start point. 
  5017.  
  5018.     This parameter is only present in a Arc at a Given Position order. 
  5019.  
  5020.  
  5021. ΓòÉΓòÉΓòÉ <hidden> GARC/GCARC Parameter - P1 ΓòÉΓòÉΓòÉ
  5022.  
  5023.  P1 (GPOINT) 
  5024.     Coordinate data of intermediate point. 
  5025.  
  5026.  
  5027. ΓòÉΓòÉΓòÉ <hidden> GARC/GCARC Parameter - P2 ΓòÉΓòÉΓòÉ
  5028.  
  5029.  P2 (GPOINT) 
  5030.     Coordinate data of end point. 
  5031.  
  5032.  
  5033. ΓòÉΓòÉΓòÉ <hidden> Arc at a Given Position/Arc at Current Position - Parameters ΓòÉΓòÉΓòÉ
  5034.  
  5035.  LEN (GLENGTH1) 
  5036.     Length of following data. 
  5037.  
  5038.  P0 (GPOINT) 
  5039.     Coordinate data of start point. 
  5040.  
  5041.     This parameter is only present in a Arc at a Given Position order. 
  5042.  
  5043.  P1 (GPOINT) 
  5044.     Coordinate data of intermediate point. 
  5045.  
  5046.  P2 (GPOINT) 
  5047.     Coordinate data of end point. 
  5048.  
  5049.  
  5050. ΓòÉΓòÉΓòÉ <hidden> Arc at a Given Position/Arc at Current Position - Topics ΓòÉΓòÉΓòÉ
  5051.  
  5052. Select an item: 
  5053.  
  5054. Syntax
  5055. Parameters
  5056. Glossary
  5057.  
  5058.  
  5059. ΓòÉΓòÉΓòÉ 2.3. Begin Area ΓòÉΓòÉΓòÉ
  5060.  
  5061.  
  5062. ΓòÉΓòÉΓòÉ <hidden> Begin Area - Syntax ΓòÉΓòÉΓòÉ
  5063.  
  5064. This order indicates the start of a set of primitives that define an area 
  5065. boundary. 
  5066.  
  5067. Begin Area (GBAR) 
  5068. X'68' (FLAGS) 
  5069.  
  5070.  
  5071. ΓòÉΓòÉΓòÉ <hidden> GBAR Parameter - FLAGS ΓòÉΓòÉΓòÉ
  5072.  
  5073.  FLAGS 
  5074.     Internal flags. 
  5075.  
  5076.     RES1 (GBIT1) 
  5077.              Reserved for migration: 
  5078.  
  5079.              1       Only valid value. 
  5080.  
  5081.     BOUNDARY (GBIT1) 
  5082.              Boundary-line draw indicator: 
  5083.  
  5084.              0       Do not draw boundary lines 
  5085.              1       Draw boundary lines. 
  5086.  
  5087.     INSIDE (GBIT1) 
  5088.              Mode shading: 
  5089.  
  5090.              0       Alternate mode 
  5091.              1       Winding mode. 
  5092.  
  5093.     RES2 (GBIT5) 
  5094.              Reserved value, must be 0. 
  5095.  
  5096.  
  5097. ΓòÉΓòÉΓòÉ <hidden> Begin Area - Parameters ΓòÉΓòÉΓòÉ
  5098.  
  5099.  FLAGS 
  5100.     Internal flags. 
  5101.  
  5102.     RES1 (GBIT1) 
  5103.              Reserved for migration: 
  5104.  
  5105.              1       Only valid value. 
  5106.  
  5107.     BOUNDARY (GBIT1) 
  5108.              Boundary-line draw indicator: 
  5109.  
  5110.              0       Do not draw boundary lines 
  5111.              1       Draw boundary lines. 
  5112.  
  5113.     INSIDE (GBIT1) 
  5114.              Mode shading: 
  5115.  
  5116.              0       Alternate mode 
  5117.              1       Winding mode. 
  5118.  
  5119.     RES2 (GBIT5) 
  5120.              Reserved value, must be 0. 
  5121.  
  5122.  
  5123. ΓòÉΓòÉΓòÉ <hidden> Begin Area - Topics ΓòÉΓòÉΓòÉ
  5124.  
  5125. Select an item: 
  5126.  
  5127. Syntax
  5128. Parameters
  5129. Glossary
  5130.  
  5131.  
  5132. ΓòÉΓòÉΓòÉ 2.4. Begin Element ΓòÉΓòÉΓòÉ
  5133.  
  5134.  
  5135. ΓòÉΓòÉΓòÉ <hidden> Begin Element - Syntax ΓòÉΓòÉΓòÉ
  5136.  
  5137. This order indicates the beginning of a set of primitives that define an 
  5138. element. 
  5139.  
  5140. Begin Element (GBEL) 
  5141. X'D2' (LEN, TYPE, DESCR) 
  5142.  
  5143.  
  5144. ΓòÉΓòÉΓòÉ <hidden> GBEL Parameter - LEN ΓòÉΓòÉΓòÉ
  5145.  
  5146.  LEN (GLENGTH1) 
  5147.     Length of following data. 
  5148.  
  5149.  
  5150. ΓòÉΓòÉΓòÉ <hidden> GBEL Parameter - TYPE ΓòÉΓòÉΓòÉ
  5151.  
  5152.  TYPE (GLONG) 
  5153.     Element type code. 
  5154.  
  5155.     Possible values are described in the following list: 
  5156.  
  5157.     0x0000FD01       Line bundle 
  5158.     0x0000FD02       Character bundle 
  5159.     0x0000FD03       Marker bundle 
  5160.     0x0000FD04       Area bundle 
  5161.     0x0000FD05       Image bundle 
  5162.     0x00000007       Call segment 
  5163.     0x00000081       Polyline 
  5164.     0x00000085       Polyfillet 
  5165.     0x000000A4       Polyfillet sharp 
  5166.     0x000000A5       Polyspline 
  5167.     0x00000082       Polymarker 
  5168.     0x00000087       Full arc 
  5169.     0x00000091       Image 
  5170.     0x000000B1       Character string at current position 
  5171.     0x000000F1       Character string at given position 
  5172.     0x81xxxxxx-0xFFxxxxxx Indicates user defined elements 
  5173.     Other            Reserved values. 
  5174.  
  5175.  
  5176. ΓòÉΓòÉΓòÉ <hidden> GBEL Parameter - DESCR ΓòÉΓòÉΓòÉ
  5177.  
  5178.  DESCR (GUNDF) 
  5179.     Element description data. 
  5180.  
  5181.     This is optional. 
  5182.  
  5183.  
  5184. ΓòÉΓòÉΓòÉ <hidden> Begin Element - Parameters ΓòÉΓòÉΓòÉ
  5185.  
  5186.  LEN (GLENGTH1) 
  5187.     Length of following data. 
  5188.  
  5189.  TYPE (GLONG) 
  5190.     Element type code. 
  5191.  
  5192.     Possible values are described in the following list: 
  5193.  
  5194.     0x0000FD01       Line bundle 
  5195.     0x0000FD02       Character bundle 
  5196.     0x0000FD03       Marker bundle 
  5197.     0x0000FD04       Area bundle 
  5198.     0x0000FD05       Image bundle 
  5199.     0x00000007       Call segment 
  5200.     0x00000081       Polyline 
  5201.     0x00000085       Polyfillet 
  5202.     0x000000A4       Polyfillet sharp 
  5203.     0x000000A5       Polyspline 
  5204.     0x00000082       Polymarker 
  5205.     0x00000087       Full arc 
  5206.     0x00000091       Image 
  5207.     0x000000B1       Character string at current position 
  5208.     0x000000F1       Character string at given position 
  5209.     0x81xxxxxx-0xFFxxxxxx Indicates user defined elements 
  5210.     Other            Reserved values. 
  5211.  
  5212.  DESCR (GUNDF) 
  5213.     Element description data. 
  5214.  
  5215.     This is optional. 
  5216.  
  5217.  
  5218. ΓòÉΓòÉΓòÉ <hidden> Begin Element - Topics ΓòÉΓòÉΓòÉ
  5219.  
  5220. Select an item: 
  5221.  
  5222. Syntax
  5223. Parameters
  5224. Glossary
  5225.  
  5226.  
  5227. ΓòÉΓòÉΓòÉ 2.5. Begin Image at Given Position/Begin Image at Current Position ΓòÉΓòÉΓòÉ
  5228.  
  5229.  
  5230. ΓòÉΓòÉΓòÉ <hidden> Begin Image at Given Position/Begin Image at Current Position - Syntax ΓòÉΓòÉΓòÉ
  5231.  
  5232. These orders identify the start of an image definition at a given position or 
  5233. at the current position. 
  5234.  
  5235. Begin Image at Given Position (GBIMG) 
  5236. X'D1' (LEN, P0, FORMAT, RES, WIDTH, HEIGHT) 
  5237.  
  5238. Begin Image at Current Position (GCBIMG) 
  5239. X'91' (LEN, FORMAT, RES, WIDTH, HEIGHT) 
  5240.  
  5241.  
  5242. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - LEN ΓòÉΓòÉΓòÉ
  5243.  
  5244.  LEN (GLENGTH1) 
  5245.     Length of following data. 
  5246.  
  5247.     0x06      Only valid value. 
  5248.  
  5249.  
  5250. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - P0 ΓòÉΓòÉΓòÉ
  5251.  
  5252.  P0 (GPOINT) 
  5253.     Point at which the image is to be placed. 
  5254.  
  5255.     This parameter is only present in a Begin Image at Given Position order. 
  5256.  
  5257.  
  5258. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - FORMAT ΓòÉΓòÉΓòÉ
  5259.  
  5260.  FORMAT (GBIT8) 
  5261.     Format of the image data. 
  5262.  
  5263.     0x00      One bit in the data represents one image point on the usable 
  5264.               area. 
  5265.  
  5266.  
  5267. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - RES ΓòÉΓòÉΓòÉ
  5268.  
  5269.  RES (GBIT8) 
  5270.     Reserved. 
  5271.  
  5272.     0x00      Only valid value. 
  5273.  
  5274.  
  5275. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - WIDTH ΓòÉΓòÉΓòÉ
  5276.  
  5277.  WIDTH (GUSHORT370) 
  5278.     Width of the image data. 
  5279.  
  5280.     This is the width in pels. 
  5281.  
  5282.     0x00-0x07     Valid range of values. 
  5283.  
  5284.  
  5285. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - HEIGHT ΓòÉΓòÉΓòÉ
  5286.  
  5287.  HEIGHT (GUSHORT370) 
  5288.     Height of the image data. 
  5289.  
  5290.     This is the height in pels. 
  5291.  
  5292.  
  5293. ΓòÉΓòÉΓòÉ <hidden> Begin Image at Given Position/Begin Image at Current Position - Parameters ΓòÉΓòÉΓòÉ
  5294.  
  5295.  LEN (GLENGTH1) 
  5296.     Length of following data. 
  5297.  
  5298.     0x06      Only valid value. 
  5299.  
  5300.  P0 (GPOINT) 
  5301.     Point at which the image is to be placed. 
  5302.  
  5303.     This parameter is only present in a Begin Image at Given Position order. 
  5304.  
  5305.  FORMAT (GBIT8) 
  5306.     Format of the image data. 
  5307.  
  5308.     0x00      One bit in the data represents one image point on the usable 
  5309.               area. 
  5310.  
  5311.  RES (GBIT8) 
  5312.     Reserved. 
  5313.  
  5314.     0x00      Only valid value. 
  5315.  
  5316.  WIDTH (GUSHORT370) 
  5317.     Width of the image data. 
  5318.  
  5319.     This is the width in pels. 
  5320.  
  5321.     0x00-0x07     Valid range of values. 
  5322.  
  5323.  HEIGHT (GUSHORT370) 
  5324.     Height of the image data. 
  5325.  
  5326.     This is the height in pels. 
  5327.  
  5328.  
  5329. ΓòÉΓòÉΓòÉ <hidden> Begin Image at Given Position/Begin Image at Current Position - Topics ΓòÉΓòÉΓòÉ
  5330.  
  5331. Select an item: 
  5332.  
  5333. Syntax
  5334. Parameters
  5335. Glossary
  5336.  
  5337.  
  5338. ΓòÉΓòÉΓòÉ 2.6. Begin Path ΓòÉΓòÉΓòÉ
  5339.  
  5340.  
  5341. ΓòÉΓòÉΓòÉ <hidden> Begin Path - Syntax ΓòÉΓòÉΓòÉ
  5342.  
  5343. This order sets the drawing process into path state. 
  5344.  
  5345. Begin Path (GBPTH) 
  5346. X'D0' (LEN, RES, PTHID) 
  5347.  
  5348.  
  5349. ΓòÉΓòÉΓòÉ <hidden> GBPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  5350.  
  5351.  LEN (GLENGTH1) 
  5352.     Length of following data. 
  5353.  
  5354.     0x06      Only valid value. 
  5355.  
  5356.  
  5357. ΓòÉΓòÉΓòÉ <hidden> GBPTH Parameter - RES ΓòÉΓòÉΓòÉ
  5358.  
  5359.  RES (GBIT16) 
  5360.     Reserved. 
  5361.  
  5362.     0x0000    Only valid value. 
  5363.  
  5364.  
  5365. ΓòÉΓòÉΓòÉ <hidden> GBPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  5366.  
  5367.  PTHID (GLONG) 
  5368.     Path identifier. 
  5369.  
  5370.     0x00000001-0xFFFFFFFF   Valid path identifiers. 
  5371.  
  5372.  
  5373. ΓòÉΓòÉΓòÉ <hidden> Begin Path - Parameters ΓòÉΓòÉΓòÉ
  5374.  
  5375.  LEN (GLENGTH1) 
  5376.     Length of following data. 
  5377.  
  5378.     0x06      Only valid value. 
  5379.  
  5380.  RES (GBIT16) 
  5381.     Reserved. 
  5382.  
  5383.     0x0000    Only valid value. 
  5384.  
  5385.  PTHID (GLONG) 
  5386.     Path identifier. 
  5387.  
  5388.     0x00000001-0xFFFFFFFF   Valid path identifiers. 
  5389.  
  5390.  
  5391. ΓòÉΓòÉΓòÉ <hidden> Begin Path - Topics ΓòÉΓòÉΓòÉ
  5392.  
  5393. Select an item: 
  5394.  
  5395. Syntax
  5396. Parameters
  5397. Glossary
  5398.  
  5399.  
  5400. ΓòÉΓòÉΓòÉ 2.7. Bezier Curve at Given Position/Bezier Curve at Current Poition ΓòÉΓòÉΓòÉ
  5401.  
  5402.  
  5403. ΓòÉΓòÉΓòÉ <hidden> Bezier Curve at Given Position/Bezier Curve at Current Poition - Syntax ΓòÉΓòÉΓòÉ
  5404.  
  5405. This order generates a curve that starts at a given position. 
  5406.  
  5407. Bezier Curve at Given Position (GBEZ) 
  5408. X'E5' (LEN, P0, P1, P2, P3, P4, P5, P6, PN-2, PN-1, PN) 
  5409.  
  5410. Bezier Curve at Current Poition (GCBEZ) 
  5411. X'A5' (LEN, P1, P2, P3, P4, P5, P6, PN-2, PN-1, PN) 
  5412.  
  5413.  
  5414. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - LEN ΓòÉΓòÉΓòÉ
  5415.  
  5416.  LEN (GLENGTH1) 
  5417.     Length of following data. 
  5418.  
  5419.  
  5420. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P0 ΓòÉΓòÉΓòÉ
  5421.  
  5422.  P0 (GPOINT) 
  5423.     Coordinate data of first curve start. 
  5424.  
  5425.     This parameter is only present in a Bezier Curve at Given Position order. 
  5426.  
  5427.  
  5428. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P1 ΓòÉΓòÉΓòÉ
  5429.  
  5430.  P1 (GPOINT) 
  5431.     Coordinate data of first curve, first control point. 
  5432.  
  5433.  
  5434. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P2 ΓòÉΓòÉΓòÉ
  5435.  
  5436.  P2 (GPOINT) 
  5437.     Coordinate data of first curve, second control point. 
  5438.  
  5439.  
  5440. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P3 ΓòÉΓòÉΓòÉ
  5441.  
  5442.  P3 (GPOINT) 
  5443.     Coordinate data of first curve end. 
  5444.  
  5445.  
  5446. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P4 ΓòÉΓòÉΓòÉ
  5447.  
  5448.  P4 (GPOINT) 
  5449.     Coordinate data of second curve, first control point 
  5450.  
  5451.  
  5452. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P5 ΓòÉΓòÉΓòÉ
  5453.  
  5454.  P5 (GPOINT) 
  5455.     Coordinate data of second curve, second control point 
  5456.  
  5457.  
  5458. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P6 ΓòÉΓòÉΓòÉ
  5459.  
  5460.  P6 (GPOINT) 
  5461.     Coordinate data of second curve end. 
  5462.  
  5463.  
  5464. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - PN-2 ΓòÉΓòÉΓòÉ
  5465.  
  5466.  PN-2 (GPOINT) 
  5467.     Coordinate data of final curve, first control point 
  5468.  
  5469.  
  5470. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - PN-1 ΓòÉΓòÉΓòÉ
  5471.  
  5472.  PN-1 (GPOINT) 
  5473.     Coordinate data of final curve, second control point 
  5474.  
  5475.  
  5476. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - PN ΓòÉΓòÉΓòÉ
  5477.  
  5478.  PN (GPOINT) 
  5479.     Coordinate data of final curve end. 
  5480.  
  5481.  
  5482. ΓòÉΓòÉΓòÉ <hidden> Bezier Curve at Given Position/Bezier Curve at Current Poition - Parameters ΓòÉΓòÉΓòÉ
  5483.  
  5484.  LEN (GLENGTH1) 
  5485.     Length of following data. 
  5486.  
  5487.  P0 (GPOINT) 
  5488.     Coordinate data of first curve start. 
  5489.  
  5490.     This parameter is only present in a Bezier Curve at Given Position order. 
  5491.  
  5492.  P1 (GPOINT) 
  5493.     Coordinate data of first curve, first control point. 
  5494.  
  5495.  P2 (GPOINT) 
  5496.     Coordinate data of first curve, second control point. 
  5497.  
  5498.  P3 (GPOINT) 
  5499.     Coordinate data of first curve end. 
  5500.  
  5501.  P4 (GPOINT) 
  5502.     Coordinate data of second curve, first control point 
  5503.  
  5504.  P5 (GPOINT) 
  5505.     Coordinate data of second curve, second control point 
  5506.  
  5507.  P6 (GPOINT) 
  5508.     Coordinate data of second curve end. 
  5509.  
  5510.  PN-2 (GPOINT) 
  5511.     Coordinate data of final curve, first control point 
  5512.  
  5513.  PN-1 (GPOINT) 
  5514.     Coordinate data of final curve, second control point 
  5515.  
  5516.  PN (GPOINT) 
  5517.     Coordinate data of final curve end. 
  5518.  
  5519.  
  5520. ΓòÉΓòÉΓòÉ <hidden> Bezier Curve at Given Position/Bezier Curve at Current Poition - Topics ΓòÉΓòÉΓòÉ
  5521.  
  5522. Select an item: 
  5523.  
  5524. Syntax
  5525. Parameters
  5526. Glossary
  5527.  
  5528.  
  5529. ΓòÉΓòÉΓòÉ 2.8. Bitblt ΓòÉΓòÉΓòÉ
  5530.  
  5531.  
  5532. ΓòÉΓòÉΓòÉ <hidden> Bitblt - Syntax ΓòÉΓòÉΓòÉ
  5533.  
  5534. This order copies a rectangle of a bit map into DOCS. 
  5535.  
  5536. Bitblt (GBBLT) 
  5537. X'D6' (LEN, FLAGS, MIX, BMID, TRANS, P1, P2, SOURCE1X, SOURCE1Y, SOURCE2X, 
  5538. SOURCE2Y) 
  5539.  
  5540.  
  5541. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - LEN ΓòÉΓòÉΓòÉ
  5542.  
  5543.  LEN (GLENGTH1) 
  5544.     Length of following data. 
  5545.  
  5546.  
  5547. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - FLAGS ΓòÉΓòÉΓòÉ
  5548.  
  5549.  FLAGS (GBIT16) 
  5550.     Reserved. 
  5551.  
  5552.     0x0000      Only valid value. 
  5553.  
  5554.  
  5555. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - MIX ΓòÉΓòÉΓòÉ
  5556.  
  5557.  MIX (GBIT16) 
  5558.     Mix mode. 
  5559.  
  5560.     Values are: 
  5561.  
  5562.     0x00CC      Source. 
  5563.     0x00C0      Source and pattern. 
  5564.     0x00CA      Source where pattern1 
  5565.     0x000C      Source where pattern0 
  5566.     0x00E2      Pattern where source1 
  5567.     0x00B8      Pattern where source0 
  5568.     Other       Reserved values. 
  5569.  
  5570.  
  5571. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - BMID ΓòÉΓòÉΓòÉ
  5572.  
  5573.  BMID (GHBITMAP) 
  5574.     Bit-map identifier. 
  5575.  
  5576.  
  5577. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - TRANS ΓòÉΓòÉΓòÉ
  5578.  
  5579.  TRANS (GBIT32) 
  5580.     Transfer mode. 
  5581.  
  5582.     Values are: 
  5583.  
  5584.     0x00000000      OR 
  5585.     0x01000000      AND 
  5586.     0x02000000      Ignore 
  5587.     Other           Reserved values. 
  5588.  
  5589.  
  5590. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - P1 ΓòÉΓòÉΓòÉ
  5591.  
  5592.  P1 (GPOINT) 
  5593.     Target rectangle bottom-left corner. 
  5594.  
  5595.  
  5596. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - P2 ΓòÉΓòÉΓòÉ
  5597.  
  5598.  P2 (GPOINT) 
  5599.     Target rectangle top-right corner. 
  5600.  
  5601.  
  5602. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - SOURCE1X ΓòÉΓòÉΓòÉ
  5603.  
  5604.  SOURCE1X (GLONG) 
  5605.     Source rectangle bottom-left corner, x-coordinate. 
  5606.  
  5607.  
  5608. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - SOURCE1Y ΓòÉΓòÉΓòÉ
  5609.  
  5610.  SOURCE1Y (GLONG) 
  5611.     Source rectangle bottom-left corner, y-coordinate. 
  5612.  
  5613.  
  5614. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - SOURCE2X ΓòÉΓòÉΓòÉ
  5615.  
  5616.  SOURCE2X (GLONG) 
  5617.     Source rectangle top-right corner, x-coordinate. 
  5618.  
  5619.  
  5620. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - SOURCE2Y ΓòÉΓòÉΓòÉ
  5621.  
  5622.  SOURCE2Y (GLONG) 
  5623.     Source rectangle top-right corner, y-coordinate. 
  5624.  
  5625.  
  5626. ΓòÉΓòÉΓòÉ <hidden> Bitblt - Parameters ΓòÉΓòÉΓòÉ
  5627.  
  5628.  LEN (GLENGTH1) 
  5629.     Length of following data. 
  5630.  
  5631.  FLAGS (GBIT16) 
  5632.     Reserved. 
  5633.  
  5634.     0x0000      Only valid value. 
  5635.  
  5636.  MIX (GBIT16) 
  5637.     Mix mode. 
  5638.  
  5639.     Values are: 
  5640.  
  5641.     0x00CC      Source. 
  5642.     0x00C0      Source and pattern. 
  5643.     0x00CA      Source where pattern1 
  5644.     0x000C      Source where pattern0 
  5645.     0x00E2      Pattern where source1 
  5646.     0x00B8      Pattern where source0 
  5647.     Other       Reserved values. 
  5648.  
  5649.  BMID (GHBITMAP) 
  5650.     Bit-map identifier. 
  5651.  
  5652.  TRANS (GBIT32) 
  5653.     Transfer mode. 
  5654.  
  5655.     Values are: 
  5656.  
  5657.     0x00000000      OR 
  5658.     0x01000000      AND 
  5659.     0x02000000      Ignore 
  5660.     Other           Reserved values. 
  5661.  
  5662.  P1 (GPOINT) 
  5663.     Target rectangle bottom-left corner. 
  5664.  
  5665.  P2 (GPOINT) 
  5666.     Target rectangle top-right corner. 
  5667.  
  5668.  SOURCE1X (GLONG) 
  5669.     Source rectangle bottom-left corner, x-coordinate. 
  5670.  
  5671.  SOURCE1Y (GLONG) 
  5672.     Source rectangle bottom-left corner, y-coordinate. 
  5673.  
  5674.  SOURCE2X (GLONG) 
  5675.     Source rectangle top-right corner, x-coordinate. 
  5676.  
  5677.  SOURCE2Y (GLONG) 
  5678.     Source rectangle top-right corner, y-coordinate. 
  5679.  
  5680.  
  5681. ΓòÉΓòÉΓòÉ <hidden> Bitblt - Topics ΓòÉΓòÉΓòÉ
  5682.  
  5683. Select an item: 
  5684.  
  5685. Syntax
  5686. Parameters
  5687. Glossary
  5688.  
  5689.  
  5690. ΓòÉΓòÉΓòÉ 2.9. Box at Given Position/Box at Current Position ΓòÉΓòÉΓòÉ
  5691.  
  5692.  
  5693. ΓòÉΓòÉΓòÉ <hidden> Box at Given Position/Box at Current Position - Syntax ΓòÉΓòÉΓòÉ
  5694.  
  5695. This order defines a box with square or round corners, drawn with its first 
  5696. corner at a given position. 
  5697.  
  5698. Box at Given Position (GBOX) 
  5699. X'C0' (LEN, CONTROL, RES, P0, P1, HAXIS, VAXIS) 
  5700.  
  5701. Box at Current Position (GCBOX) 
  5702. X'80' (LEN, CONTROL, RES, P1, HAXIS, VAXIS) 
  5703.  
  5704.  
  5705. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - LEN ΓòÉΓòÉΓòÉ
  5706.  
  5707.  LEN (GLENGTH1) 
  5708.     Length of following data. 
  5709.  
  5710.  
  5711. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - CONTROL ΓòÉΓòÉΓòÉ
  5712.  
  5713.  CONTROL 
  5714.     Internal flags. 
  5715.  
  5716.     RES1 (GBIT1) 
  5717.              Reserved value, must be 0. 
  5718.  
  5719.     FILL (GBIT1) 
  5720.              Values: 
  5721.  
  5722.              0       No fill 
  5723.              1       Fill. 
  5724.  
  5725.     BOUNDARY (GBIT1) 
  5726.              Values: 
  5727.  
  5728.              0       No boundary 
  5729.              1       Boundary. 
  5730.  
  5731.     RES2 (GBIT5) 
  5732.              Reserved value, must be 0. 
  5733.  
  5734.  
  5735. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - RES ΓòÉΓòÉΓòÉ
  5736.  
  5737.  RES (GBIT8) 
  5738.     Reserved value, must be 0. 
  5739.  
  5740.  
  5741. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - P0 ΓòÉΓòÉΓòÉ
  5742.  
  5743.  P0 (GPOINT) 
  5744.     Coordinate data of box origin. 
  5745.  
  5746.     This parameter is only present in a Box at Given Position order. 
  5747.  
  5748.  
  5749. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - P1 ΓòÉΓòÉΓòÉ
  5750.  
  5751.  P1 (GPOINT) 
  5752.     Coordinate data of box corner. 
  5753.  
  5754.  
  5755. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - HAXIS ΓòÉΓòÉΓòÉ
  5756.  
  5757.  HAXIS (GROSOL) 
  5758.     Length of horizontal axis of ellipse. 
  5759.  
  5760.  
  5761. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - VAXIS ΓòÉΓòÉΓòÉ
  5762.  
  5763.  VAXIS (GROSOL) 
  5764.     Length of vertical axis of ellipse. 
  5765.  
  5766.  
  5767. ΓòÉΓòÉΓòÉ <hidden> Box at Given Position/Box at Current Position - Parameters ΓòÉΓòÉΓòÉ
  5768.  
  5769.  LEN (GLENGTH1) 
  5770.     Length of following data. 
  5771.  
  5772.  CONTROL 
  5773.     Internal flags. 
  5774.  
  5775.     RES1 (GBIT1) 
  5776.              Reserved value, must be 0. 
  5777.  
  5778.     FILL (GBIT1) 
  5779.              Values: 
  5780.  
  5781.              0       No fill 
  5782.              1       Fill. 
  5783.  
  5784.     BOUNDARY (GBIT1) 
  5785.              Values: 
  5786.  
  5787.              0       No boundary 
  5788.              1       Boundary. 
  5789.  
  5790.     RES2 (GBIT5) 
  5791.              Reserved value, must be 0. 
  5792.  
  5793.  RES (GBIT8) 
  5794.     Reserved value, must be 0. 
  5795.  
  5796.  P0 (GPOINT) 
  5797.     Coordinate data of box origin. 
  5798.  
  5799.     This parameter is only present in a Box at Given Position order. 
  5800.  
  5801.  P1 (GPOINT) 
  5802.     Coordinate data of box corner. 
  5803.  
  5804.  HAXIS (GROSOL) 
  5805.     Length of horizontal axis of ellipse. 
  5806.  
  5807.  VAXIS (GROSOL) 
  5808.     Length of vertical axis of ellipse. 
  5809.  
  5810.  
  5811. ΓòÉΓòÉΓòÉ <hidden> Box at Given Position/Box at Current Position - Topics ΓòÉΓòÉΓòÉ
  5812.  
  5813. Select an item: 
  5814.  
  5815. Syntax
  5816. Parameters
  5817. Glossary
  5818.  
  5819.  
  5820. ΓòÉΓòÉΓòÉ 2.10. Call Segment ΓòÉΓòÉΓòÉ
  5821.  
  5822.  
  5823. ΓòÉΓòÉΓòÉ <hidden> Call Segment - Syntax ΓòÉΓòÉΓòÉ
  5824.  
  5825. This order calls one segment from another. 
  5826.  
  5827. Call Segment (GCALLS) 
  5828. X'07' (LEN, RES, SEGNAME) 
  5829.  
  5830.  
  5831. ΓòÉΓòÉΓòÉ <hidden> GCALLS Parameter - LEN ΓòÉΓòÉΓòÉ
  5832.  
  5833.  LEN (GLENGTH1) 
  5834.     Length of following data. 
  5835.  
  5836.     0x06      Only valid value. 
  5837.  
  5838.  
  5839. ΓòÉΓòÉΓòÉ <hidden> GCALLS Parameter - RES ΓòÉΓòÉΓòÉ
  5840.  
  5841.  RES (GBIT16) 
  5842.     Reserved value, must be 0. 
  5843.  
  5844.  
  5845. ΓòÉΓòÉΓòÉ <hidden> GCALLS Parameter - SEGNAME ΓòÉΓòÉΓòÉ
  5846.  
  5847.  SEGNAME (GLONG) 
  5848.     Name of segment that is to be called. 
  5849.  
  5850.     The name cannot be 0. 
  5851.  
  5852.  
  5853. ΓòÉΓòÉΓòÉ <hidden> Call Segment - Parameters ΓòÉΓòÉΓòÉ
  5854.  
  5855.  LEN (GLENGTH1) 
  5856.     Length of following data. 
  5857.  
  5858.     0x06      Only valid value. 
  5859.  
  5860.  RES (GBIT16) 
  5861.     Reserved value, must be 0. 
  5862.  
  5863.  SEGNAME (GLONG) 
  5864.     Name of segment that is to be called. 
  5865.  
  5866.     The name cannot be 0. 
  5867.  
  5868.  
  5869. ΓòÉΓòÉΓòÉ <hidden> Call Segment - Topics ΓòÉΓòÉΓòÉ
  5870.  
  5871. Select an item: 
  5872.  
  5873. Syntax
  5874. Parameters
  5875. Glossary
  5876.  
  5877.  
  5878. ΓòÉΓòÉΓòÉ 2.11. Character String at Given Position/Character String at Current Position ΓòÉΓòÉΓòÉ
  5879.  
  5880.  
  5881. ΓòÉΓòÉΓòÉ <hidden> Character String at Given Position/Character String at Current Position - Syntax ΓòÉΓòÉΓòÉ
  5882.  
  5883. These orders draw a character string at a given position or at the current 
  5884. position. 
  5885.  
  5886. Character String at Given Position (GCHST) 
  5887. X'C3' (LEN, P0, CP) 
  5888.  
  5889. Character String at Current Position (GCCHST) 
  5890. X'83' (LEN, CP) 
  5891.  
  5892.  
  5893. ΓòÉΓòÉΓòÉ <hidden> GCHST/GCCHST Parameter - LEN ΓòÉΓòÉΓòÉ
  5894.  
  5895.  LEN (GLENGTH1) 
  5896.     Length of following data. 
  5897.  
  5898.  
  5899. ΓòÉΓòÉΓòÉ <hidden> GCHST/GCCHST Parameter - P0 ΓòÉΓòÉΓòÉ
  5900.  
  5901.  P0 (GPOINT) 
  5902.     Point at which the character string is to be placed. 
  5903.  
  5904.     This parameter is only present in a Character String at Given Position 
  5905.     order. 
  5906.  
  5907.  
  5908. ΓòÉΓòÉΓòÉ <hidden> GCHST/GCCHST Parameter - CP ΓòÉΓòÉΓòÉ
  5909.  
  5910.  CP (GSTR) 
  5911.     Code points of each character in the string. 
  5912.  
  5913.  
  5914. ΓòÉΓòÉΓòÉ <hidden> Character String at Given Position/Character String at Current Position - Parameters ΓòÉΓòÉΓòÉ
  5915.  
  5916.  LEN (GLENGTH1) 
  5917.     Length of following data. 
  5918.  
  5919.  P0 (GPOINT) 
  5920.     Point at which the character string is to be placed. 
  5921.  
  5922.     This parameter is only present in a Character String at Given Position 
  5923.     order. 
  5924.  
  5925.  CP (GSTR) 
  5926.     Code points of each character in the string. 
  5927.  
  5928.  
  5929. ΓòÉΓòÉΓòÉ <hidden> Character String at Given Position/Character String at Current Position - Topics ΓòÉΓòÉΓòÉ
  5930.  
  5931. Select an item: 
  5932.  
  5933. Syntax
  5934. Parameters
  5935. Glossary
  5936.  
  5937.  
  5938. ΓòÉΓòÉΓòÉ 2.12. Character String Extended at Given Position/Character String Extended at Current Position ΓòÉΓòÉΓòÉ
  5939.  
  5940.  
  5941. ΓòÉΓòÉΓòÉ <hidden> Character String Extended at Given Position/Character String Extended at Current Position - Syntax ΓòÉΓòÉΓòÉ
  5942.  
  5943. This order defines a character string to be drawn at a given position. 
  5944.  
  5945. Character String Extended at Given Position (GCHSTE) 
  5946. X'FEF0' (LEN1, P0, FLAGS, RES, P1, P2, LEN2, CP, PAD, VECT) 
  5947.  
  5948. Character String Extended at Current Position (GCCHSTE) 
  5949. X'FEB0' (LEN1, FLAGS, RES, P1, P2, LEN2, CP, PAD, VECT) 
  5950.  
  5951.  
  5952. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - LEN1 ΓòÉΓòÉΓòÉ
  5953.  
  5954.  LEN1 (GLENGTH2) 
  5955.     Length of following data. 
  5956.  
  5957.  
  5958. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - P0 ΓòÉΓòÉΓòÉ
  5959.  
  5960.  P0 (GPOINT) 
  5961.     Point at which the character string is to be placed. 
  5962.  
  5963.     This parameter is only present in a Character String Extended at Given 
  5964.     Position order. 
  5965.  
  5966.  
  5967. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - FLAGS ΓòÉΓòÉΓòÉ
  5968.  
  5969.  FLAGS 
  5970.     Extra functions: 
  5971.  
  5972.     RECT (GBIT1) 
  5973.              Values: 
  5974.  
  5975.              0       Do not draw background rectangle 
  5976.              1       Draw background rectangle. 
  5977.  
  5978.     CLIP (GBIT1) 
  5979.              Values: 
  5980.  
  5981.              0       Do not clip to rectangle 
  5982.              1       Clip to rectangle. 
  5983.  
  5984.     RES1 (GBIT1) 
  5985.              Reserved value, must be 0. 
  5986.  
  5987.     LVCP (GBIT1) 
  5988.              Values: 
  5989.  
  5990.              0       Move current position 
  5991.              1       Leave current position. 
  5992.  
  5993.     RES2 (GBIT4) 
  5994.              Reserved value, must be 0. 
  5995.  
  5996.  
  5997. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - RES ΓòÉΓòÉΓòÉ
  5998.  
  5999.  RES (GBIT8) 
  6000.     Reserved value, must be 0. 
  6001.  
  6002.  
  6003. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - P1 ΓòÉΓòÉΓòÉ
  6004.  
  6005.  P1 (GPOINT) 
  6006.     Coordinate data of rectangle corner. 
  6007.  
  6008.  
  6009. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - P2 ΓòÉΓòÉΓòÉ
  6010.  
  6011.  P2 (GPOINT) 
  6012.     Coordinate data of rectangle corner. 
  6013.  
  6014.  
  6015. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - LEN2 ΓòÉΓòÉΓòÉ
  6016.  
  6017.  LEN2 (GLENGTH2) 
  6018.     Length of code-point data. 
  6019.  
  6020.  
  6021. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - CP ΓòÉΓòÉΓòÉ
  6022.  
  6023.  CP (GSTR) 
  6024.     Code-point data. 
  6025.  
  6026.  
  6027. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - PAD ΓòÉΓòÉΓòÉ
  6028.  
  6029.  PAD (GBIT8) 
  6030.     Pad byte. 
  6031.  
  6032.     Only needs to be included if CP is an odd number of bytes. 
  6033.  
  6034.  
  6035. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - VECT ΓòÉΓòÉΓòÉ
  6036.  
  6037.  VECT (GROSOL) 
  6038.     IN (0) Vector of character increments. 
  6039.  
  6040.     VECT is a vector of n elements, where n is the number of code points 
  6041.     present in the CP parameter. 
  6042.  
  6043.  
  6044. ΓòÉΓòÉΓòÉ <hidden> Character String Extended at Given Position/Character String Extended at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6045.  
  6046.  LEN1 (GLENGTH2) 
  6047.     Length of following data. 
  6048.  
  6049.  P0 (GPOINT) 
  6050.     Point at which the character string is to be placed. 
  6051.  
  6052.     This parameter is only present in a Character String Extended at Given 
  6053.     Position order. 
  6054.  
  6055.  FLAGS 
  6056.     Extra functions: 
  6057.  
  6058.     RECT (GBIT1) 
  6059.              Values: 
  6060.  
  6061.              0       Do not draw background rectangle 
  6062.              1       Draw background rectangle. 
  6063.  
  6064.     CLIP (GBIT1) 
  6065.              Values: 
  6066.  
  6067.              0       Do not clip to rectangle 
  6068.              1       Clip to rectangle. 
  6069.  
  6070.     RES1 (GBIT1) 
  6071.              Reserved value, must be 0. 
  6072.  
  6073.     LVCP (GBIT1) 
  6074.              Values: 
  6075.  
  6076.              0       Move current position 
  6077.              1       Leave current position. 
  6078.  
  6079.     RES2 (GBIT4) 
  6080.              Reserved value, must be 0. 
  6081.  
  6082.  RES (GBIT8) 
  6083.     Reserved value, must be 0. 
  6084.  
  6085.  P1 (GPOINT) 
  6086.     Coordinate data of rectangle corner. 
  6087.  
  6088.  P2 (GPOINT) 
  6089.     Coordinate data of rectangle corner. 
  6090.  
  6091.  LEN2 (GLENGTH2) 
  6092.     Length of code-point data. 
  6093.  
  6094.  CP (GSTR) 
  6095.     Code-point data. 
  6096.  
  6097.  PAD (GBIT8) 
  6098.     Pad byte. 
  6099.  
  6100.     Only needs to be included if CP is an odd number of bytes. 
  6101.  
  6102.  VECT (GROSOL) 
  6103.     IN (0) Vector of character increments. 
  6104.  
  6105.     VECT is a vector of n elements, where n is the number of code points 
  6106.     present in the CP parameter. 
  6107.  
  6108.  
  6109. ΓòÉΓòÉΓòÉ <hidden> Character String Extended at Given Position/Character String Extended at Current Position - Topics ΓòÉΓòÉΓòÉ
  6110.  
  6111. Select an item: 
  6112.  
  6113. Syntax
  6114. Parameters
  6115. Glossary
  6116.  
  6117.  
  6118. ΓòÉΓòÉΓòÉ 2.13. Character String Move at Given Position/Character String Move at Current Position ΓòÉΓòÉΓòÉ
  6119.  
  6120.  
  6121. ΓòÉΓòÉΓòÉ <hidden> Character String Move at Given Position/Character String Move at Current Position - Syntax ΓòÉΓòÉΓòÉ
  6122.  
  6123. This order draws a character string starting from a given position and moves 
  6124. the current position to the end of the string. 
  6125.  
  6126. Character String Move at Given Position (GCHSTM) 
  6127. X'F1' (LEN, P0, CP) 
  6128.  
  6129. Character String Move at Current Position (GCCHSTM) 
  6130. X'B1' (LEN, CP) 
  6131.  
  6132.  
  6133. ΓòÉΓòÉΓòÉ <hidden> GCHSTM/GCCHSTM Parameter - LEN ΓòÉΓòÉΓòÉ
  6134.  
  6135.  LEN (GLENGTH1) 
  6136.     Length of following data. 
  6137.  
  6138.  
  6139. ΓòÉΓòÉΓòÉ <hidden> GCHSTM/GCCHSTM Parameter - P0 ΓòÉΓòÉΓòÉ
  6140.  
  6141.  P0 (GPOINT) 
  6142.     Point at which the character string is to be placed. 
  6143.  
  6144.     This parameter is only present in a Character String Move at Given Position 
  6145.     order. 
  6146.  
  6147.  
  6148. ΓòÉΓòÉΓòÉ <hidden> GCHSTM/GCCHSTM Parameter - CP ΓòÉΓòÉΓòÉ
  6149.  
  6150.  CP (GSTR) 
  6151.     Code points of each character in the string. 
  6152.  
  6153.  
  6154. ΓòÉΓòÉΓòÉ <hidden> Character String Move at Given Position/Character String Move at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6155.  
  6156.  LEN (GLENGTH1) 
  6157.     Length of following data. 
  6158.  
  6159.  P0 (GPOINT) 
  6160.     Point at which the character string is to be placed. 
  6161.  
  6162.     This parameter is only present in a Character String Move at Given Position 
  6163.     order. 
  6164.  
  6165.  CP (GSTR) 
  6166.     Code points of each character in the string. 
  6167.  
  6168.  
  6169. ΓòÉΓòÉΓòÉ <hidden> Character String Move at Given Position/Character String Move at Current Position - Topics ΓòÉΓòÉΓòÉ
  6170.  
  6171. Select an item: 
  6172.  
  6173. Syntax
  6174. Parameters
  6175. Glossary
  6176.  
  6177.  
  6178. ΓòÉΓòÉΓòÉ 2.14. Close Figure ΓòÉΓòÉΓòÉ
  6179.  
  6180.  
  6181. ΓòÉΓòÉΓòÉ <hidden> Close Figure - Syntax ΓòÉΓòÉΓòÉ
  6182.  
  6183. This order delimits the end of a closed figure. 
  6184.  
  6185. Close Figure (GCLFIG) 
  6186. X'7D' (RES) 
  6187.  
  6188.  
  6189. ΓòÉΓòÉΓòÉ <hidden> GCLFIG Parameter - RES ΓòÉΓòÉΓòÉ
  6190.  
  6191.  RES (GBIT8) 
  6192.     Reserved value, must be 0. 
  6193.  
  6194.  
  6195. ΓòÉΓòÉΓòÉ <hidden> Close Figure - Parameters ΓòÉΓòÉΓòÉ
  6196.  
  6197.  RES (GBIT8) 
  6198.     Reserved value, must be 0. 
  6199.  
  6200.  
  6201. ΓòÉΓòÉΓòÉ <hidden> Close Figure - Topics ΓòÉΓòÉΓòÉ
  6202.  
  6203. Select an item: 
  6204.  
  6205. Syntax
  6206. Parameters
  6207. Glossary
  6208.  
  6209.  
  6210. ΓòÉΓòÉΓòÉ 2.15. Comment ΓòÉΓòÉΓòÉ
  6211.  
  6212.  
  6213. ΓòÉΓòÉΓòÉ <hidden> Comment - Syntax ΓòÉΓòÉΓòÉ
  6214.  
  6215. This order enables data to be stored within a segment. 
  6216.  
  6217. Comment (GCOMT) 
  6218. X'01' (LEN, DATA[LEN]) 
  6219.  
  6220.  
  6221. ΓòÉΓòÉΓòÉ <hidden> GCOMT Parameter - LEN ΓòÉΓòÉΓòÉ
  6222.  
  6223.  LEN (GLENGTH1) 
  6224.     Length of following data. 
  6225.  
  6226.  
  6227. ΓòÉΓòÉΓòÉ <hidden> GCOMT Parameter - DATA[LEN] ΓòÉΓòÉΓòÉ
  6228.  
  6229.  DATA[LEN] (GBIT8) 
  6230.     Comment data. 
  6231.  
  6232.  
  6233. ΓòÉΓòÉΓòÉ <hidden> Comment - Parameters ΓòÉΓòÉΓòÉ
  6234.  
  6235.  LEN (GLENGTH1) 
  6236.     Length of following data. 
  6237.  
  6238.  DATA[LEN] (GBIT8) 
  6239.     Comment data. 
  6240.  
  6241.  
  6242. ΓòÉΓòÉΓòÉ <hidden> Comment - Remarks ΓòÉΓòÉΓòÉ
  6243.  
  6244. This order is treated as a no-operation. 
  6245.  
  6246.  
  6247. ΓòÉΓòÉΓòÉ <hidden> Comment - Topics ΓòÉΓòÉΓòÉ
  6248.  
  6249. Select an item: 
  6250.  
  6251. Syntax
  6252. Parameters
  6253. Remarks
  6254. Glossary
  6255.  
  6256.  
  6257. ΓòÉΓòÉΓòÉ 2.16. End Area ΓòÉΓòÉΓòÉ
  6258.  
  6259.  
  6260. ΓòÉΓòÉΓòÉ <hidden> End Area - Syntax ΓòÉΓòÉΓòÉ
  6261.  
  6262. This order indicates the end of a set of primitives that define an area 
  6263. boundary. 
  6264.  
  6265. End Area (GEAR) 
  6266. X'60' (LEN, DATA[LEN]) 
  6267.  
  6268.  
  6269. ΓòÉΓòÉΓòÉ <hidden> GEAR Parameter - LEN ΓòÉΓòÉΓòÉ
  6270.  
  6271.  LEN (GLENGTH1) 
  6272.     Length of following data.  It is normally 0. 
  6273.  
  6274.  
  6275. ΓòÉΓòÉΓòÉ <hidden> GEAR Parameter - DATA[LEN] ΓòÉΓòÉΓòÉ
  6276.  
  6277.  DATA[LEN] (GBIT8) 
  6278.     Reserved value, must be 0. 
  6279.  
  6280.  
  6281. ΓòÉΓòÉΓòÉ <hidden> End Area - Parameters ΓòÉΓòÉΓòÉ
  6282.  
  6283.  LEN (GLENGTH1) 
  6284.     Length of following data.  It is normally 0. 
  6285.  
  6286.  DATA[LEN] (GBIT8) 
  6287.     Reserved value, must be 0. 
  6288.  
  6289.  
  6290. ΓòÉΓòÉΓòÉ <hidden> End Area - Topics ΓòÉΓòÉΓòÉ
  6291.  
  6292. Select an item: 
  6293.  
  6294. Syntax
  6295. Parameters
  6296. Glossary
  6297.  
  6298.  
  6299. ΓòÉΓòÉΓòÉ 2.17. End Element ΓòÉΓòÉΓòÉ
  6300.  
  6301.  
  6302. ΓòÉΓòÉΓòÉ <hidden> End Element - Syntax ΓòÉΓòÉΓòÉ
  6303.  
  6304. This order identifies the end of a set of primitives that define an element. 
  6305.  
  6306. End Element (GEEL) 
  6307. X'49' (RES) 
  6308.  
  6309.  
  6310. ΓòÉΓòÉΓòÉ <hidden> GEEL Parameter - RES ΓòÉΓòÉΓòÉ
  6311.  
  6312.  RES (GBIT8) 
  6313.     Reserved value, must be 0. 
  6314.  
  6315.  
  6316. ΓòÉΓòÉΓòÉ <hidden> End Element - Parameters ΓòÉΓòÉΓòÉ
  6317.  
  6318.  RES (GBIT8) 
  6319.     Reserved value, must be 0. 
  6320.  
  6321.  
  6322. ΓòÉΓòÉΓòÉ <hidden> End Element - Topics ΓòÉΓòÉΓòÉ
  6323.  
  6324. Select an item: 
  6325.  
  6326. Syntax
  6327. Parameters
  6328. Glossary
  6329.  
  6330.  
  6331. ΓòÉΓòÉΓòÉ 2.18. End Image ΓòÉΓòÉΓòÉ
  6332.  
  6333.  
  6334. ΓòÉΓòÉΓòÉ <hidden> End Image - Syntax ΓòÉΓòÉΓòÉ
  6335.  
  6336. This order identifies the end of an image definition. 
  6337.  
  6338. End Image (GEIMG) 
  6339. X'93' (LEN, DATA[LEN]) 
  6340.  
  6341.  
  6342. ΓòÉΓòÉΓòÉ <hidden> GEIMG Parameter - LEN ΓòÉΓòÉΓòÉ
  6343.  
  6344.  LEN (GLENGTH1) 
  6345.     Length of following data.  It is normally 0. 
  6346.  
  6347.  
  6348. ΓòÉΓòÉΓòÉ <hidden> GEIMG Parameter - DATA[LEN] ΓòÉΓòÉΓòÉ
  6349.  
  6350.  DATA[LEN] (GBIT8) 
  6351.     Reserved value, must be 0. 
  6352.  
  6353.  
  6354. ΓòÉΓòÉΓòÉ <hidden> End Image - Parameters ΓòÉΓòÉΓòÉ
  6355.  
  6356.  LEN (GLENGTH1) 
  6357.     Length of following data.  It is normally 0. 
  6358.  
  6359.  DATA[LEN] (GBIT8) 
  6360.     Reserved value, must be 0. 
  6361.  
  6362.  
  6363. ΓòÉΓòÉΓòÉ <hidden> End Image - Topics ΓòÉΓòÉΓòÉ
  6364.  
  6365. Select an item: 
  6366.  
  6367. Syntax
  6368. Parameters
  6369. Glossary
  6370.  
  6371.  
  6372. ΓòÉΓòÉΓòÉ 2.19. End of Symbol Definition ΓòÉΓòÉΓòÉ
  6373.  
  6374.  
  6375. ΓòÉΓòÉΓòÉ <hidden> End of Symbol Definition - Syntax ΓòÉΓòÉΓòÉ
  6376.  
  6377. This order indicates the end of a set of orders defining a graphics symbol. 
  6378.  
  6379. End of Symbol Definition (GESD)
  6380. X'FF'
  6381.  
  6382.  
  6383. ΓòÉΓòÉΓòÉ <hidden> End of Symbol Definition - Remarks ΓòÉΓòÉΓòÉ
  6384.  
  6385. This order is only valid in the context of symbol definitions. 
  6386.  
  6387.  
  6388. ΓòÉΓòÉΓòÉ <hidden> End of Symbol Definition - Topics ΓòÉΓòÉΓòÉ
  6389.  
  6390. Select an item: 
  6391.  
  6392. Syntax
  6393. Remarks
  6394. Glossary
  6395.  
  6396.  
  6397. ΓòÉΓòÉΓòÉ 2.20. End Path ΓòÉΓòÉΓòÉ
  6398.  
  6399.  
  6400. ΓòÉΓòÉΓòÉ <hidden> End Path - Syntax ΓòÉΓòÉΓòÉ
  6401.  
  6402. This order ends the definition of a path. 
  6403.  
  6404. End Path (GEPTH) 
  6405. X'7F' (RES) 
  6406.  
  6407.  
  6408. ΓòÉΓòÉΓòÉ <hidden> GEPTH Parameter - RES ΓòÉΓòÉΓòÉ
  6409.  
  6410.  RES (GBIT8) 
  6411.     Reserved value, must be 0. 
  6412.  
  6413.  
  6414. ΓòÉΓòÉΓòÉ <hidden> End Path - Parameters ΓòÉΓòÉΓòÉ
  6415.  
  6416.  RES (GBIT8) 
  6417.     Reserved value, must be 0. 
  6418.  
  6419.  
  6420. ΓòÉΓòÉΓòÉ <hidden> End Path - Topics ΓòÉΓòÉΓòÉ
  6421.  
  6422. Select an item: 
  6423.  
  6424. Syntax
  6425. Parameters
  6426. Glossary
  6427.  
  6428.  
  6429. ΓòÉΓòÉΓòÉ 2.21. End Prolog ΓòÉΓòÉΓòÉ
  6430.  
  6431.  
  6432. ΓòÉΓòÉΓòÉ <hidden> End Prolog - Syntax ΓòÉΓòÉΓòÉ
  6433.  
  6434. This order indicates the end of the prolog of a segment. 
  6435.  
  6436. End Prolog (GEPROL) 
  6437. X'3E' (RES) 
  6438.  
  6439.  
  6440. ΓòÉΓòÉΓòÉ <hidden> GEPROL Parameter - RES ΓòÉΓòÉΓòÉ
  6441.  
  6442.  RES (GBIT8) 
  6443.     Reserved value, must be 0. 
  6444.  
  6445.  
  6446. ΓòÉΓòÉΓòÉ <hidden> End Prolog - Parameters ΓòÉΓòÉΓòÉ
  6447.  
  6448.  RES (GBIT8) 
  6449.     Reserved value, must be 0. 
  6450.  
  6451.  
  6452. ΓòÉΓòÉΓòÉ <hidden> End Prolog - Topics ΓòÉΓòÉΓòÉ
  6453.  
  6454. Select an item: 
  6455.  
  6456. Syntax
  6457. Parameters
  6458. Glossary
  6459.  
  6460.  
  6461. ΓòÉΓòÉΓòÉ 2.22. Escape ΓòÉΓòÉΓòÉ
  6462.  
  6463.  
  6464. ΓòÉΓòÉΓòÉ <hidden> Escape - Syntax ΓòÉΓòÉΓòÉ
  6465.  
  6466. This order provides facilities for registered and unregistered escape 
  6467. functions. 
  6468.  
  6469. Escape (GESCP) 
  6470. X'D5' (LEN, TYPE, RID, PARMS) 
  6471.  
  6472.  
  6473. ΓòÉΓòÉΓòÉ <hidden> GESCP Parameter - LEN ΓòÉΓòÉΓòÉ
  6474.  
  6475.  LEN (GLENGTH1) 
  6476.     Length of following data. 
  6477.  
  6478.  
  6479. ΓòÉΓòÉΓòÉ <hidden> GESCP Parameter - TYPE ΓòÉΓòÉΓòÉ
  6480.  
  6481.  TYPE (GBIT8) 
  6482.     Type identifier: 
  6483.  
  6484.     80         Registered value 
  6485.     Other      All other values are unregistered. 
  6486.  
  6487.  
  6488. ΓòÉΓòÉΓòÉ <hidden> GESCP Parameter - RID ΓòÉΓòÉΓòÉ
  6489.  
  6490.  RID (GBIT8) 
  6491.     Registered identifier: 
  6492.  
  6493.     01      Set pel. 
  6494.     02      BITBLT function. 
  6495.     03      Flood fill function. 
  6496.     04      Draw bits function. 
  6497.  
  6498.  
  6499. ΓòÉΓòÉΓòÉ <hidden> GESCP Parameter - PARMS ΓòÉΓòÉΓòÉ
  6500.  
  6501.  PARMS (GSTR) 
  6502.     Parameters of escape. 
  6503.  
  6504.  
  6505. ΓòÉΓòÉΓòÉ <hidden> Escape - Parameters ΓòÉΓòÉΓòÉ
  6506.  
  6507.  LEN (GLENGTH1) 
  6508.     Length of following data. 
  6509.  
  6510.  TYPE (GBIT8) 
  6511.     Type identifier: 
  6512.  
  6513.     80         Registered value 
  6514.     Other      All other values are unregistered. 
  6515.  
  6516.  RID (GBIT8) 
  6517.     Registered identifier: 
  6518.  
  6519.     01      Set pel. 
  6520.     02      BITBLT function. 
  6521.     03      Flood fill function. 
  6522.     04      Draw bits function. 
  6523.  
  6524.  PARMS (GSTR) 
  6525.     Parameters of escape. 
  6526.  
  6527.  
  6528. ΓòÉΓòÉΓòÉ <hidden> Escape - Topics ΓòÉΓòÉΓòÉ
  6529.  
  6530. Select an item: 
  6531.  
  6532. Syntax
  6533. Parameters
  6534. Glossary
  6535.  
  6536.  
  6537. ΓòÉΓòÉΓòÉ 2.23. Extended Escape ΓòÉΓòÉΓòÉ
  6538.  
  6539.  
  6540. ΓòÉΓòÉΓòÉ <hidden> Extended Escape - Syntax ΓòÉΓòÉΓòÉ
  6541.  
  6542. This order provides facilities for registered and unregistered escape 
  6543. functions. 
  6544.  
  6545. Extended Escape (GEESCP) 
  6546. X'FED5' (LEN, TYPE, RID, PARMS) 
  6547.  
  6548.  
  6549. ΓòÉΓòÉΓòÉ <hidden> GEESCP Parameter - LEN ΓòÉΓòÉΓòÉ
  6550.  
  6551.  LEN (GLENGTH2) 
  6552.     Length of following data. 
  6553.  
  6554.  
  6555. ΓòÉΓòÉΓòÉ <hidden> GEESCP Parameter - TYPE ΓòÉΓòÉΓòÉ
  6556.  
  6557.  TYPE (GBIT8) 
  6558.     Type identifier: 
  6559.  
  6560.     0x80       Registered value 
  6561.     Other      All other values are unregistered. 
  6562.  
  6563.  
  6564. ΓòÉΓòÉΓòÉ <hidden> GEESCP Parameter - RID ΓòÉΓòÉΓòÉ
  6565.  
  6566.  RID (GUCHAR) 
  6567.     Registered identifier. 
  6568.  
  6569.     No registered extended escapes are used by the OS/2* operating system. 
  6570.  
  6571.  
  6572. ΓòÉΓòÉΓòÉ <hidden> GEESCP Parameter - PARMS ΓòÉΓòÉΓòÉ
  6573.  
  6574.  PARMS (GSTR) 
  6575.     Parameters of escape. 
  6576.  
  6577.  
  6578. ΓòÉΓòÉΓòÉ <hidden> Extended Escape - Parameters ΓòÉΓòÉΓòÉ
  6579.  
  6580.  LEN (GLENGTH2) 
  6581.     Length of following data. 
  6582.  
  6583.  TYPE (GBIT8) 
  6584.     Type identifier: 
  6585.  
  6586.     0x80       Registered value 
  6587.     Other      All other values are unregistered. 
  6588.  
  6589.  RID (GUCHAR) 
  6590.     Registered identifier. 
  6591.  
  6592.     No registered extended escapes are used by the OS/2* operating system. 
  6593.  
  6594.  PARMS (GSTR) 
  6595.     Parameters of escape. 
  6596.  
  6597.  
  6598. ΓòÉΓòÉΓòÉ <hidden> Extended Escape - Topics ΓòÉΓòÉΓòÉ
  6599.  
  6600. Select an item: 
  6601.  
  6602. Syntax
  6603. Parameters
  6604. Glossary
  6605.  
  6606.  
  6607. ΓòÉΓòÉΓòÉ 2.24. Fill Path ΓòÉΓòÉΓòÉ
  6608.  
  6609.  
  6610. ΓòÉΓòÉΓòÉ <hidden> Fill Path - Syntax ΓòÉΓòÉΓòÉ
  6611.  
  6612. This order fills the interior of the specified path. 
  6613.  
  6614. Fill Path (GFPTH) 
  6615. X'D7' (LEN, FLAGS, RES, PTHID) 
  6616.  
  6617.  
  6618. ΓòÉΓòÉΓòÉ <hidden> GFPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  6619.  
  6620.  LEN (GLENGTH1) 
  6621.     Length of following data. 
  6622.  
  6623.     0x06    Only valid value. 
  6624.  
  6625.  
  6626. ΓòÉΓòÉΓòÉ <hidden> GFPTH Parameter - FLAGS ΓòÉΓòÉΓòÉ
  6627.  
  6628.  FLAGS 
  6629.     Extra functions: 
  6630.  
  6631.     RES1 (GBIT1) 
  6632.              Reserved value, must be 0. 
  6633.  
  6634.     INSIDE (GBIT1) 
  6635.              Values: 
  6636.  
  6637.              0       Alternate mode 
  6638.              1       Winding mode. 
  6639.  
  6640.     MOD (GBIT1) 
  6641.              Values: 
  6642.  
  6643.              0       Do not modify before filling 
  6644.              1       Modify path before filling. 
  6645.  
  6646.     RES2 (GBIT5) 
  6647.              Reserved value, must be 0. 
  6648.  
  6649.  
  6650. ΓòÉΓòÉΓòÉ <hidden> GFPTH Parameter - RES ΓòÉΓòÉΓòÉ
  6651.  
  6652.  RES (GBIT8) 
  6653.     Reserved value, must be 0. 
  6654.  
  6655.  
  6656. ΓòÉΓòÉΓòÉ <hidden> GFPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  6657.  
  6658.  PTHID (GLONG) 
  6659.     Path identifier. 
  6660.  
  6661.     0x00000001-0xFFFFFFFF Valid path identifiers. 
  6662.  
  6663.  
  6664. ΓòÉΓòÉΓòÉ <hidden> Fill Path - Parameters ΓòÉΓòÉΓòÉ
  6665.  
  6666.  LEN (GLENGTH1) 
  6667.     Length of following data. 
  6668.  
  6669.     0x06    Only valid value. 
  6670.  
  6671.  FLAGS 
  6672.     Extra functions: 
  6673.  
  6674.     RES1 (GBIT1) 
  6675.              Reserved value, must be 0. 
  6676.  
  6677.     INSIDE (GBIT1) 
  6678.              Values: 
  6679.  
  6680.              0       Alternate mode 
  6681.              1       Winding mode. 
  6682.  
  6683.     MOD (GBIT1) 
  6684.              Values: 
  6685.  
  6686.              0       Do not modify before filling 
  6687.              1       Modify path before filling. 
  6688.  
  6689.     RES2 (GBIT5) 
  6690.              Reserved value, must be 0. 
  6691.  
  6692.  RES (GBIT8) 
  6693.     Reserved value, must be 0. 
  6694.  
  6695.  PTHID (GLONG) 
  6696.     Path identifier. 
  6697.  
  6698.     0x00000001-0xFFFFFFFF Valid path identifiers. 
  6699.  
  6700.  
  6701. ΓòÉΓòÉΓòÉ <hidden> Fill Path - Topics ΓòÉΓòÉΓòÉ
  6702.  
  6703. Select an item: 
  6704.  
  6705. Syntax
  6706. Parameters
  6707. Glossary
  6708.  
  6709.  
  6710. ΓòÉΓòÉΓòÉ 2.25. Fillet at Given Position/Fillet at Current Position ΓòÉΓòÉΓòÉ
  6711.  
  6712.  
  6713. ΓòÉΓòÉΓòÉ <hidden> Fillet at Given Position/Fillet at Current Position - Syntax ΓòÉΓòÉΓòÉ
  6714.  
  6715. These orders draw a curved line tangential to a specified set of straight 
  6716. lines, at the given position or at the current position. 
  6717.  
  6718. Fillet at Given Position (GFLT) 
  6719. X'C5' (LEN, P0, P1, P2, PN) 
  6720.  
  6721. Fillet at Current Position (GCFLT) 
  6722. X'85' (LEN, P1, P2, PN) 
  6723.  
  6724.  
  6725. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - LEN ΓòÉΓòÉΓòÉ
  6726.  
  6727.  LEN (GLENGTH1) 
  6728.     Length of following data. 
  6729.  
  6730.  
  6731. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - P0 ΓòÉΓòÉΓòÉ
  6732.  
  6733.  P0 (GPOINT) 
  6734.     Coordinate data of line start. 
  6735.  
  6736.     This parameter is only present in a Fillet at Given Position order. 
  6737.  
  6738.  
  6739. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - P1 ΓòÉΓòÉΓòÉ
  6740.  
  6741.  P1 (GPOINT) 
  6742.     Coordinate data of first line end. 
  6743.  
  6744.  
  6745. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - P2 ΓòÉΓòÉΓòÉ
  6746.  
  6747.  P2 (GPOINT) 
  6748.     Coordinate data of second line end. 
  6749.  
  6750.  
  6751. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - PN ΓòÉΓòÉΓòÉ
  6752.  
  6753.  PN (GPOINT) 
  6754.     Coordinate data of final line end. 
  6755.  
  6756.  
  6757. ΓòÉΓòÉΓòÉ <hidden> Fillet at Given Position/Fillet at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6758.  
  6759.  LEN (GLENGTH1) 
  6760.     Length of following data. 
  6761.  
  6762.  P0 (GPOINT) 
  6763.     Coordinate data of line start. 
  6764.  
  6765.     This parameter is only present in a Fillet at Given Position order. 
  6766.  
  6767.  P1 (GPOINT) 
  6768.     Coordinate data of first line end. 
  6769.  
  6770.  P2 (GPOINT) 
  6771.     Coordinate data of second line end. 
  6772.  
  6773.  PN (GPOINT) 
  6774.     Coordinate data of final line end. 
  6775.  
  6776.  
  6777. ΓòÉΓòÉΓòÉ <hidden> Fillet at Given Position/Fillet at Current Position - Topics ΓòÉΓòÉΓòÉ
  6778.  
  6779. Select an item: 
  6780.  
  6781. Syntax
  6782. Parameters
  6783. Glossary
  6784.  
  6785.  
  6786. ΓòÉΓòÉΓòÉ 2.26. Full Arc at Given Position/Full Arc at Current Position ΓòÉΓòÉΓòÉ
  6787.  
  6788.  
  6789. ΓòÉΓòÉΓòÉ <hidden> Full Arc at Given Position/Full Arc at Current Position - Syntax ΓòÉΓòÉΓòÉ
  6790.  
  6791. This order constructs a full circle or an ellipse, with the center at a given 
  6792. position. 
  6793.  
  6794. Full Arc at Given Position (GFARC) 
  6795. X'C7' (LEN, P0, M) 
  6796.  
  6797. Full Arc at Current Position (GCFARC) 
  6798. X'87' (LEN, M) 
  6799.  
  6800.  
  6801. ΓòÉΓòÉΓòÉ <hidden> GFARC/GCFARC Parameter - LEN ΓòÉΓòÉΓòÉ
  6802.  
  6803.  LEN (GLENGTH1) 
  6804.     Length of following data. 
  6805.  
  6806.  
  6807. ΓòÉΓòÉΓòÉ <hidden> GFARC/GCFARC Parameter - P0 ΓòÉΓòÉΓòÉ
  6808.  
  6809.  P0 (GPOINT) 
  6810.     Coordinate data of the center of the circle/ellipse. 
  6811.  
  6812.     This parameter is only present in a Full Arc at Given Position order. 
  6813.  
  6814.  
  6815. ΓòÉΓòÉΓòÉ <hidden> GFARC/GCFARC Parameter - M ΓòÉΓòÉΓòÉ
  6816.  
  6817.  M (GROFUFS) 
  6818.     Multiplier. 
  6819.  
  6820.  
  6821. ΓòÉΓòÉΓòÉ <hidden> Full Arc at Given Position/Full Arc at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6822.  
  6823.  LEN (GLENGTH1) 
  6824.     Length of following data. 
  6825.  
  6826.  P0 (GPOINT) 
  6827.     Coordinate data of the center of the circle/ellipse. 
  6828.  
  6829.     This parameter is only present in a Full Arc at Given Position order. 
  6830.  
  6831.  M (GROFUFS) 
  6832.     Multiplier. 
  6833.  
  6834.  
  6835. ΓòÉΓòÉΓòÉ <hidden> Full Arc at Given Position/Full Arc at Current Position - Topics ΓòÉΓòÉΓòÉ
  6836.  
  6837. Select an item: 
  6838.  
  6839. Syntax
  6840. Parameters
  6841. Glossary
  6842.  
  6843.  
  6844. ΓòÉΓòÉΓòÉ 2.27. Image Data ΓòÉΓòÉΓòÉ
  6845.  
  6846.  
  6847. ΓòÉΓòÉΓòÉ <hidden> Image Data - Syntax ΓòÉΓòÉΓòÉ
  6848.  
  6849. This order provides bit data for an image. 
  6850.  
  6851. Image Data (GIMD) 
  6852. X'92' (LEN, DATA[LEN]) 
  6853.  
  6854.  
  6855. ΓòÉΓòÉΓòÉ <hidden> GIMD Parameter - LEN ΓòÉΓòÉΓòÉ
  6856.  
  6857.  LEN (GLENGTH1) 
  6858.     Length of following data. 
  6859.  
  6860.  
  6861. ΓòÉΓòÉΓòÉ <hidden> GIMD Parameter - DATA[LEN] ΓòÉΓòÉΓòÉ
  6862.  
  6863.  DATA[LEN] (GBIT8) 
  6864.     Image data. 
  6865.  
  6866.  
  6867. ΓòÉΓòÉΓòÉ <hidden> Image Data - Parameters ΓòÉΓòÉΓòÉ
  6868.  
  6869.  LEN (GLENGTH1) 
  6870.     Length of following data. 
  6871.  
  6872.  DATA[LEN] (GBIT8) 
  6873.     Image data. 
  6874.  
  6875.  
  6876. ΓòÉΓòÉΓòÉ <hidden> Image Data - Topics ΓòÉΓòÉΓòÉ
  6877.  
  6878. Select an item: 
  6879.  
  6880. Syntax
  6881. Parameters
  6882. Glossary
  6883.  
  6884.  
  6885. ΓòÉΓòÉΓòÉ 2.28. Label ΓòÉΓòÉΓòÉ
  6886.  
  6887.  
  6888. ΓòÉΓòÉΓòÉ <hidden> Label - Syntax ΓòÉΓòÉΓòÉ
  6889.  
  6890. This order is used to label an element within a segment. 
  6891.  
  6892. Label (GLBL) 
  6893. X'D3' (LEN, LDATA) 
  6894.  
  6895.  
  6896. ΓòÉΓòÉΓòÉ <hidden> GLBL Parameter - LEN ΓòÉΓòÉΓòÉ
  6897.  
  6898.  LEN (GLENGTH1) 
  6899.     Length of following data. 
  6900.  
  6901.     0x04    Only valid value. 
  6902.  
  6903.  
  6904. ΓòÉΓòÉΓòÉ <hidden> GLBL Parameter - LDATA ΓòÉΓòÉΓòÉ
  6905.  
  6906.  LDATA (GLONG) 
  6907.     Label value. 
  6908.  
  6909.  
  6910. ΓòÉΓòÉΓòÉ <hidden> Label - Parameters ΓòÉΓòÉΓòÉ
  6911.  
  6912.  LEN (GLENGTH1) 
  6913.     Length of following data. 
  6914.  
  6915.     0x04    Only valid value. 
  6916.  
  6917.  LDATA (GLONG) 
  6918.     Label value. 
  6919.  
  6920.  
  6921. ΓòÉΓòÉΓòÉ <hidden> Label - Topics ΓòÉΓòÉΓòÉ
  6922.  
  6923. Select an item: 
  6924.  
  6925. Syntax
  6926. Parameters
  6927. Glossary
  6928.  
  6929.  
  6930. ΓòÉΓòÉΓòÉ 2.29. Line at Given Position/Line at Current Position ΓòÉΓòÉΓòÉ
  6931.  
  6932.  
  6933. ΓòÉΓòÉΓòÉ <hidden> Line at Given Position/Line at Current Position - Syntax ΓòÉΓòÉΓòÉ
  6934.  
  6935. This order defines one or more connected straight lines, drawn from the given 
  6936. position. 
  6937.  
  6938. Line at Given Position (GLINE) 
  6939. X'C1' (LEN, P0, P1, PN) 
  6940.  
  6941. Line at Current Position (GCLINE) 
  6942. X'81' (LEN, P1, PN) 
  6943.  
  6944.  
  6945. ΓòÉΓòÉΓòÉ <hidden> GLINE/GCLINE Parameter - LEN ΓòÉΓòÉΓòÉ
  6946.  
  6947.  LEN (GLENGTH1) 
  6948.     Length of following data. 
  6949.  
  6950.  
  6951. ΓòÉΓòÉΓòÉ <hidden> GLINE/GCLINE Parameter - P0 ΓòÉΓòÉΓòÉ
  6952.  
  6953.  P0 (GPOINT) 
  6954.     Coordinate data of line start. 
  6955.  
  6956.     This parameter is only present in a Line at Given Position order. 
  6957.  
  6958.  
  6959. ΓòÉΓòÉΓòÉ <hidden> GLINE/GCLINE Parameter - P1 ΓòÉΓòÉΓòÉ
  6960.  
  6961.  P1 (GPOINT) 
  6962.     Coordinate data of first line end. 
  6963.  
  6964.  
  6965. ΓòÉΓòÉΓòÉ <hidden> GLINE/GCLINE Parameter - PN ΓòÉΓòÉΓòÉ
  6966.  
  6967.  PN (GPOINT) 
  6968.     Coordinate data of final line end. 
  6969.  
  6970.  
  6971. ΓòÉΓòÉΓòÉ <hidden> Line at Given Position/Line at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6972.  
  6973.  LEN (GLENGTH1) 
  6974.     Length of following data. 
  6975.  
  6976.  P0 (GPOINT) 
  6977.     Coordinate data of line start. 
  6978.  
  6979.     This parameter is only present in a Line at Given Position order. 
  6980.  
  6981.  P1 (GPOINT) 
  6982.     Coordinate data of first line end. 
  6983.  
  6984.  PN (GPOINT) 
  6985.     Coordinate data of final line end. 
  6986.  
  6987.  
  6988. ΓòÉΓòÉΓòÉ <hidden> Line at Given Position/Line at Current Position - Topics ΓòÉΓòÉΓòÉ
  6989.  
  6990. Select an item: 
  6991.  
  6992. Syntax
  6993. Parameters
  6994. Glossary
  6995.  
  6996.  
  6997. ΓòÉΓòÉΓòÉ 2.30. Marker at Given Position/Marker at Current Position ΓòÉΓòÉΓòÉ
  6998.  
  6999.  
  7000. ΓòÉΓòÉΓòÉ <hidden> Marker at Given Position/Marker at Current Position - Syntax ΓòÉΓòÉΓòÉ
  7001.  
  7002. This order draws the current marker symbol at one or more positions starting 
  7003. from a given position. 
  7004.  
  7005. Marker at Given Position (GMRK) 
  7006. X'C2' (LEN, P0, P1, PN) 
  7007.  
  7008. Marker at Current Position (GCMRK) 
  7009. X'82' (LEN, P1, PN) 
  7010.  
  7011.  
  7012. ΓòÉΓòÉΓòÉ <hidden> GMRK/GCMRK Parameter - LEN ΓòÉΓòÉΓòÉ
  7013.  
  7014.  LEN (GLENGTH1) 
  7015.     Length of following data. 
  7016.  
  7017.  
  7018. ΓòÉΓòÉΓòÉ <hidden> GMRK/GCMRK Parameter - P0 ΓòÉΓòÉΓòÉ
  7019.  
  7020.  P0 (GPOINT) 
  7021.     Coordinate data of first marker. 
  7022.  
  7023.  
  7024. ΓòÉΓòÉΓòÉ <hidden> GMRK/GCMRK Parameter - P1 ΓòÉΓòÉΓòÉ
  7025.  
  7026.  P1 (GPOINT) 
  7027.     Coordinate data of second marker. 
  7028.  
  7029.  
  7030. ΓòÉΓòÉΓòÉ <hidden> GMRK/GCMRK Parameter - PN ΓòÉΓòÉΓòÉ
  7031.  
  7032.  PN (GPOINT) 
  7033.     Coordinate data of final marker. 
  7034.  
  7035.  
  7036. ΓòÉΓòÉΓòÉ <hidden> Marker at Given Position/Marker at Current Position - Parameters ΓòÉΓòÉΓòÉ
  7037.  
  7038.  LEN (GLENGTH1) 
  7039.     Length of following data. 
  7040.  
  7041.  P0 (GPOINT) 
  7042.     Coordinate data of first marker. 
  7043.  
  7044.  P1 (GPOINT) 
  7045.     Coordinate data of second marker. 
  7046.  
  7047.  PN (GPOINT) 
  7048.     Coordinate data of final marker. 
  7049.  
  7050.  
  7051. ΓòÉΓòÉΓòÉ <hidden> Marker at Given Position/Marker at Current Position - Topics ΓòÉΓòÉΓòÉ
  7052.  
  7053. Select an item: 
  7054.  
  7055. Syntax
  7056. Parameters
  7057. Glossary
  7058.  
  7059.  
  7060. ΓòÉΓòÉΓòÉ 2.31. Modify Path ΓòÉΓòÉΓòÉ
  7061.  
  7062.  
  7063. ΓòÉΓòÉΓòÉ <hidden> Modify Path - Syntax ΓòÉΓòÉΓòÉ
  7064.  
  7065. This order modifies the path according to the value of the mode. 
  7066.  
  7067. Modify Path (GMPTH) 
  7068. X'D8' (LEN, MODE, RES, PTHID) 
  7069.  
  7070.  
  7071. ΓòÉΓòÉΓòÉ <hidden> GMPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  7072.  
  7073.  LEN (GLENGTH1) 
  7074.     Length of following data. 
  7075.  
  7076.     0x06       Only valid value. 
  7077.  
  7078.  
  7079. ΓòÉΓòÉΓòÉ <hidden> GMPTH Parameter - MODE ΓòÉΓòÉΓòÉ
  7080.  
  7081.  MODE (GBIT8) 
  7082.     Mode of path modification: 
  7083.  
  7084.     0x06       Stroke the path 
  7085.     Other      All other values are reserved. 
  7086.  
  7087.  
  7088. ΓòÉΓòÉΓòÉ <hidden> GMPTH Parameter - RES ΓòÉΓòÉΓòÉ
  7089.  
  7090.  RES (GBIT8) 
  7091.     Reserved value, must be 0. 
  7092.  
  7093.  
  7094. ΓòÉΓòÉΓòÉ <hidden> GMPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  7095.  
  7096.  PTHID (GLONG) 
  7097.     Path identifier. 
  7098.  
  7099.     0x00000001-0xFFFFFFFF Valid path identifiers. 
  7100.  
  7101.  
  7102. ΓòÉΓòÉΓòÉ <hidden> Modify Path - Parameters ΓòÉΓòÉΓòÉ
  7103.  
  7104.  LEN (GLENGTH1) 
  7105.     Length of following data. 
  7106.  
  7107.     0x06       Only valid value. 
  7108.  
  7109.  MODE (GBIT8) 
  7110.     Mode of path modification: 
  7111.  
  7112.     0x06       Stroke the path 
  7113.     Other      All other values are reserved. 
  7114.  
  7115.  RES (GBIT8) 
  7116.     Reserved value, must be 0. 
  7117.  
  7118.  PTHID (GLONG) 
  7119.     Path identifier. 
  7120.  
  7121.     0x00000001-0xFFFFFFFF Valid path identifiers. 
  7122.  
  7123.  
  7124. ΓòÉΓòÉΓòÉ <hidden> Modify Path - Topics ΓòÉΓòÉΓòÉ
  7125.  
  7126. Select an item: 
  7127.  
  7128. Syntax
  7129. Parameters
  7130. Glossary
  7131.  
  7132.  
  7133. ΓòÉΓòÉΓòÉ 2.32. No-Operation ΓòÉΓòÉΓòÉ
  7134.  
  7135.  
  7136. ΓòÉΓòÉΓòÉ <hidden> No-Operation - Syntax ΓòÉΓòÉΓòÉ
  7137.  
  7138. This order is a no-operation. 
  7139.  
  7140. No-Operation (GNOP1)
  7141. X'00'
  7142.  
  7143.  
  7144. ΓòÉΓòÉΓòÉ <hidden> No-Operation - Topics ΓòÉΓòÉΓòÉ
  7145.  
  7146. Select an item: 
  7147.  
  7148. Syntax
  7149. Glossary
  7150.  
  7151.  
  7152. ΓòÉΓòÉΓòÉ 2.33. Outline Path ΓòÉΓòÉΓòÉ
  7153.  
  7154.  
  7155. ΓòÉΓòÉΓòÉ <hidden> Outline Path - Syntax ΓòÉΓòÉΓòÉ
  7156.  
  7157. This order draws the outline of the specified path. 
  7158.  
  7159. Outline Path (GOPTH) 
  7160. X'D4' (LEN, FLAGS, RES, PTHID) 
  7161.  
  7162.  
  7163. ΓòÉΓòÉΓòÉ <hidden> GOPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  7164.  
  7165.  LEN (GLENGTH1) 
  7166.     Length of following data. 
  7167.  
  7168.  
  7169. ΓòÉΓòÉΓòÉ <hidden> GOPTH Parameter - FLAGS ΓòÉΓòÉΓòÉ
  7170.  
  7171.  FLAGS (GBIT8) 
  7172.     Function flags: 
  7173.  
  7174.     0x00    Only valid value. 
  7175.  
  7176.  
  7177. ΓòÉΓòÉΓòÉ <hidden> GOPTH Parameter - RES ΓòÉΓòÉΓòÉ
  7178.  
  7179.  RES (GBIT8) 
  7180.     Reserved value, must be 0. 
  7181.  
  7182.  
  7183. ΓòÉΓòÉΓòÉ <hidden> GOPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  7184.  
  7185.  PTHID (GLONG) 
  7186.     Path identifier. 
  7187.  
  7188.     1       Only valid value. 
  7189.  
  7190.  
  7191. ΓòÉΓòÉΓòÉ <hidden> Outline Path - Parameters ΓòÉΓòÉΓòÉ
  7192.  
  7193.  LEN (GLENGTH1) 
  7194.     Length of following data. 
  7195.  
  7196.  FLAGS (GBIT8) 
  7197.     Function flags: 
  7198.  
  7199.     0x00    Only valid value. 
  7200.  
  7201.  RES (GBIT8) 
  7202.     Reserved value, must be 0. 
  7203.  
  7204.  PTHID (GLONG) 
  7205.     Path identifier. 
  7206.  
  7207.     1       Only valid value. 
  7208.  
  7209.  
  7210. ΓòÉΓòÉΓòÉ <hidden> Outline Path - Topics ΓòÉΓòÉΓòÉ
  7211.  
  7212. Select an item: 
  7213.  
  7214. Syntax
  7215. Parameters
  7216. Glossary
  7217.  
  7218.  
  7219. ΓòÉΓòÉΓòÉ 2.34. Partial Arc at Given Position/Partial Arc at Current Position ΓòÉΓòÉΓòÉ
  7220.  
  7221.  
  7222. ΓòÉΓòÉΓòÉ <hidden> Partial Arc at Given Position/Partial Arc at Current Position - Syntax ΓòÉΓòÉΓòÉ
  7223.  
  7224. This order draws a line from a given position to the start of an arc, and then 
  7225. draws the arc. 
  7226.  
  7227. Partial Arc at Given Position (GPARC) 
  7228. X'E3' (LEN, P0, P1, M, START, SWEEP) 
  7229.  
  7230. Partial Arc at Current Position (GCPARC) 
  7231. X'A3' (LEN, P1, M, START, SWEEP) 
  7232.  
  7233.  
  7234. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - LEN ΓòÉΓòÉΓòÉ
  7235.  
  7236.  LEN (GLENGTH1) 
  7237.     Length of following data. 
  7238.  
  7239.  
  7240. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - P0 ΓòÉΓòÉΓòÉ
  7241.  
  7242.  P0 (GPOINT) 
  7243.     Coordinate data of start of line. 
  7244.  
  7245.     This parameter is only present in a Partial Arc at Given Position order. 
  7246.  
  7247.  
  7248. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - P1 ΓòÉΓòÉΓòÉ
  7249.  
  7250.  P1 (GPOINT) 
  7251.     Coordinate data of center of arc. 
  7252.  
  7253.  
  7254. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - M ΓòÉΓòÉΓòÉ
  7255.  
  7256.  M (GROFUFS) 
  7257.     Multiplier. 
  7258.  
  7259.  
  7260. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - START ΓòÉΓòÉΓòÉ
  7261.  
  7262.  START (GROF) 
  7263.     Start angle. 
  7264.  
  7265.  
  7266. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - SWEEP ΓòÉΓòÉΓòÉ
  7267.  
  7268.  SWEEP (GROF) 
  7269.     Sweep angle. 
  7270.  
  7271.  
  7272. ΓòÉΓòÉΓòÉ <hidden> Partial Arc at Given Position/Partial Arc at Current Position - Parameters ΓòÉΓòÉΓòÉ
  7273.  
  7274.  LEN (GLENGTH1) 
  7275.     Length of following data. 
  7276.  
  7277.  P0 (GPOINT) 
  7278.     Coordinate data of start of line. 
  7279.  
  7280.     This parameter is only present in a Partial Arc at Given Position order. 
  7281.  
  7282.  P1 (GPOINT) 
  7283.     Coordinate data of center of arc. 
  7284.  
  7285.  M (GROFUFS) 
  7286.     Multiplier. 
  7287.  
  7288.  START (GROF) 
  7289.     Start angle. 
  7290.  
  7291.  SWEEP (GROF) 
  7292.     Sweep angle. 
  7293.  
  7294.  
  7295. ΓòÉΓòÉΓòÉ <hidden> Partial Arc at Given Position/Partial Arc at Current Position - Topics ΓòÉΓòÉΓòÉ
  7296.  
  7297. Select an item: 
  7298.  
  7299. Syntax
  7300. Parameters
  7301. Glossary
  7302.  
  7303.  
  7304. ΓòÉΓòÉΓòÉ 2.35. Polygons ΓòÉΓòÉΓòÉ
  7305.  
  7306.  
  7307. ΓòÉΓòÉΓòÉ <hidden> Polygons - Syntax ΓòÉΓòÉΓòÉ
  7308.  
  7309. This order defines a set of polygons, which are optionally filled. 
  7310.  
  7311. Polygons (GPOLYS) 
  7312. X'F3' (LEN, FLAGS, COUNT, POLYS) 
  7313.  
  7314.  
  7315. ΓòÉΓòÉΓòÉ <hidden> GPOLYS Parameter - LEN ΓòÉΓòÉΓòÉ
  7316.  
  7317.  LEN (GLENGTH2) 
  7318.     Length of following data. 
  7319.  
  7320.  
  7321. ΓòÉΓòÉΓòÉ <hidden> GPOLYS Parameter - FLAGS ΓòÉΓòÉΓòÉ
  7322.  
  7323.  FLAGS 
  7324.     Internal flags. 
  7325.  
  7326.     INSIDE (GBIT1) 
  7327.              Mode shading: 
  7328.  
  7329.              0       Alternate mode. 
  7330.              1       Winding mode. 
  7331.  
  7332.     MODEL (GBIT1) 
  7333.              Drawing model: 
  7334.  
  7335.              0       The fill is inclusive of bottom right. 
  7336.              1       The fill is exclusive of bottom right. 
  7337.  
  7338.     RES2 (GBIT6) 
  7339.              Reserved value, must be 0. 
  7340.  
  7341.  
  7342. ΓòÉΓòÉΓòÉ <hidden> GPOLYS Parameter - COUNT ΓòÉΓòÉΓòÉ
  7343.  
  7344.  COUNT (GUSHORT) 
  7345.     Number of polygons. 
  7346.  
  7347.  
  7348. ΓòÉΓòÉΓòÉ <hidden> GPOLYS Parameter - POLYS ΓòÉΓòÉΓòÉ
  7349.  
  7350.  POLYS (GPOLYS) 
  7351.     Array of polygons. 
  7352.  
  7353.  
  7354. ΓòÉΓòÉΓòÉ <hidden> Polygons - Parameters ΓòÉΓòÉΓòÉ
  7355.  
  7356.  LEN (GLENGTH2) 
  7357.     Length of following data. 
  7358.  
  7359.  FLAGS 
  7360.     Internal flags. 
  7361.  
  7362.     INSIDE (GBIT1) 
  7363.              Mode shading: 
  7364.  
  7365.              0       Alternate mode. 
  7366.              1       Winding mode. 
  7367.  
  7368.     MODEL (GBIT1) 
  7369.              Drawing model: 
  7370.  
  7371.              0       The fill is inclusive of bottom right. 
  7372.              1       The fill is exclusive of bottom right. 
  7373.  
  7374.     RES2 (GBIT6) 
  7375.              Reserved value, must be 0. 
  7376.  
  7377.  COUNT (GUSHORT) 
  7378.     Number of polygons. 
  7379.  
  7380.  POLYS (GPOLYS) 
  7381.     Array of polygons. 
  7382.  
  7383.  
  7384. ΓòÉΓòÉΓòÉ <hidden> Polygons - Remarks ΓòÉΓòÉΓòÉ
  7385.  
  7386. This order draws a set of polygons. For the first polygon the current position 
  7387. is the first point. For all subsequent polygons all points which define the 
  7388. polygon are given explicitly.  The polygons are automatically closed if 
  7389. necessary. 
  7390.  
  7391. The current position is set to the last point specified. 
  7392.  
  7393.  
  7394. ΓòÉΓòÉΓòÉ <hidden> Polygons - Topics ΓòÉΓòÉΓòÉ
  7395.  
  7396. Select an item: 
  7397.  
  7398. Syntax
  7399. Parameters
  7400. Remarks
  7401. Glossary
  7402.  
  7403.  
  7404. ΓòÉΓòÉΓòÉ 2.36. Pop ΓòÉΓòÉΓòÉ
  7405.  
  7406.  
  7407. ΓòÉΓòÉΓòÉ <hidden> Pop - Syntax ΓòÉΓòÉΓòÉ
  7408.  
  7409. This order enables data to be popped from the Segment Call Stack. 
  7410.  
  7411. Pop (GPOP) 
  7412. X'3F' (RES) 
  7413.  
  7414.  
  7415. ΓòÉΓòÉΓòÉ <hidden> GPOP Parameter - RES ΓòÉΓòÉΓòÉ
  7416.  
  7417.  RES (GBIT8) 
  7418.     Reserved value, must be 0. 
  7419.  
  7420.  
  7421. ΓòÉΓòÉΓòÉ <hidden> Pop - Parameters ΓòÉΓòÉΓòÉ
  7422.  
  7423.  RES (GBIT8) 
  7424.     Reserved value, must be 0. 
  7425.  
  7426.  
  7427. ΓòÉΓòÉΓòÉ <hidden> Pop - Remarks ΓòÉΓòÉΓòÉ
  7428.  
  7429. The data is placed into an attribute or Drawing Process Control. 
  7430.  
  7431.  
  7432. ΓòÉΓòÉΓòÉ <hidden> Pop - Topics ΓòÉΓòÉΓòÉ
  7433.  
  7434. Select an item: 
  7435.  
  7436. Syntax
  7437. Parameters
  7438. Remarks
  7439. Glossary
  7440.  
  7441.  
  7442. ΓòÉΓòÉΓòÉ 2.37. Relative Line at Given Position/Relative Line at Current Position ΓòÉΓòÉΓòÉ
  7443.  
  7444.  
  7445. ΓòÉΓòÉΓòÉ <hidden> Relative Line at Given Position/Relative Line at Current Position - Syntax ΓòÉΓòÉΓòÉ
  7446.  
  7447. These orders define one or more connected straight lines, at the given position 
  7448. or at the current position. 
  7449.  
  7450. Relative Line at Given Position (GRLINE) 
  7451. X'E1' (LEN, P0, OFF0, OFF1, OFFN) 
  7452.  
  7453. Relative Line at Current Position (GCRLINE) 
  7454. X'A1' (LEN, OFF0, OFF1, OFFN) 
  7455.  
  7456.  
  7457. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - LEN ΓòÉΓòÉΓòÉ
  7458.  
  7459.  LEN (GLENGTH1) 
  7460.     Length of following data. 
  7461.  
  7462.  
  7463. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - P0 ΓòÉΓòÉΓòÉ
  7464.  
  7465.  P0 (GPOINT) 
  7466.     Coordinate data of line start. 
  7467.  
  7468.     This parameter is only present in a Relative Line at Given Position order. 
  7469.  
  7470.  
  7471. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - OFF0 ΓòÉΓòÉΓòÉ
  7472.  
  7473.  OFF0 (GDELPOINT) 
  7474.     Offset data for first point. 
  7475.  
  7476.     This offset is to the first line end, relative to its start point. 
  7477.  
  7478.  
  7479. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - OFF1 ΓòÉΓòÉΓòÉ
  7480.  
  7481.  OFF1 (GDELPOINT) 
  7482.     Offset data for second point. 
  7483.  
  7484.     This offset is to the second line end, relative to the first line end. 
  7485.  
  7486.  
  7487. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - OFFN ΓòÉΓòÉΓòÉ
  7488.  
  7489.  OFFN (GDELPOINT) 
  7490.     Offset data for final point. 
  7491.  
  7492.     This offset is to the nth line end, relative to the n-1th line end. 
  7493.  
  7494.  
  7495. ΓòÉΓòÉΓòÉ <hidden> Relative Line at Given Position/Relative Line at Current Position - Parameters ΓòÉΓòÉΓòÉ
  7496.  
  7497.  LEN (GLENGTH1) 
  7498.     Length of following data. 
  7499.  
  7500.  P0 (GPOINT) 
  7501.     Coordinate data of line start. 
  7502.  
  7503.     This parameter is only present in a Relative Line at Given Position order. 
  7504.  
  7505.  OFF0 (GDELPOINT) 
  7506.     Offset data for first point. 
  7507.  
  7508.     This offset is to the first line end, relative to its start point. 
  7509.  
  7510.  OFF1 (GDELPOINT) 
  7511.     Offset data for second point. 
  7512.  
  7513.     This offset is to the second line end, relative to the first line end. 
  7514.  
  7515.  OFFN (GDELPOINT) 
  7516.     Offset data for final point. 
  7517.  
  7518.     This offset is to the nth line end, relative to the n-1th line end. 
  7519.  
  7520.  
  7521. ΓòÉΓòÉΓòÉ <hidden> Relative Line at Given Position/Relative Line at Current Position - Remarks ΓòÉΓòÉΓòÉ
  7522.  
  7523. The end point of each line is given as an offset from the start of the line, 
  7524. rather than as absolute coordinates. 
  7525.  
  7526.  
  7527. ΓòÉΓòÉΓòÉ <hidden> Relative Line at Given Position/Relative Line at Current Position - Topics ΓòÉΓòÉΓòÉ
  7528.  
  7529. Select an item: 
  7530.  
  7531. Syntax
  7532. Parameters
  7533. Remarks
  7534. Glossary
  7535.  
  7536.  
  7537. ΓòÉΓòÉΓòÉ 2.38. Segment Characteristics ΓòÉΓòÉΓòÉ
  7538.  
  7539.  
  7540. ΓòÉΓòÉΓòÉ <hidden> Segment Characteristics - Syntax ΓòÉΓòÉΓòÉ
  7541.  
  7542. This order provides the facility to set architected or user-defined 
  7543. characteristics for a segment. 
  7544.  
  7545. Segment Characteristics (GSGCH) 
  7546. X'04' (LEN, CBIT8, PARMS) 
  7547.  
  7548.  
  7549. ΓòÉΓòÉΓòÉ <hidden> GSGCH Parameter - LEN ΓòÉΓòÉΓòÉ
  7550.  
  7551.  LEN (GLENGTH1) 
  7552.     Length of following data. 
  7553.  
  7554.  
  7555. ΓòÉΓòÉΓòÉ <hidden> GSGCH Parameter - CBIT8 ΓòÉΓòÉΓòÉ
  7556.  
  7557.  CBIT8 (GUCHAR) 
  7558.     Identification code for characteristics: 
  7559.  
  7560.     0x00-0x7F      Reserved for architected characteristics. 
  7561.     0x80-0xFF      Reserved for user-defined characteristics. 
  7562.  
  7563.  
  7564. ΓòÉΓòÉΓòÉ <hidden> GSGCH Parameter - PARMS ΓòÉΓòÉΓòÉ
  7565.  
  7566.  PARMS (GSTR) 
  7567.     Parameters of characteristics. 
  7568.  
  7569.  
  7570. ΓòÉΓòÉΓòÉ <hidden> Segment Characteristics - Parameters ΓòÉΓòÉΓòÉ
  7571.  
  7572.  LEN (GLENGTH1) 
  7573.     Length of following data. 
  7574.  
  7575.  CBIT8 (GUCHAR) 
  7576.     Identification code for characteristics: 
  7577.  
  7578.     0x00-0x7F      Reserved for architected characteristics. 
  7579.     0x80-0xFF      Reserved for user-defined characteristics. 
  7580.  
  7581.  PARMS (GSTR) 
  7582.     Parameters of characteristics. 
  7583.  
  7584.  
  7585. ΓòÉΓòÉΓòÉ <hidden> Segment Characteristics - Remarks ΓòÉΓòÉΓòÉ
  7586.  
  7587. The order is only valid in a root-segment prolog. 
  7588.  
  7589.  
  7590. ΓòÉΓòÉΓòÉ <hidden> Segment Characteristics - Topics ΓòÉΓòÉΓòÉ
  7591.  
  7592. Select an item: 
  7593.  
  7594. Syntax
  7595. Parameters
  7596. Remarks
  7597. Glossary
  7598.  
  7599.  
  7600. ΓòÉΓòÉΓòÉ 2.39. Set Arc Parameters/Push and Set Arc Parameters ΓòÉΓòÉΓòÉ
  7601.  
  7602.  
  7603. ΓòÉΓòÉΓòÉ <hidden> Set Arc Parameters/Push and Set Arc Parameters - Syntax ΓòÉΓòÉΓòÉ
  7604.  
  7605. These orders set, or push and set, the values of the current arc parameters. 
  7606.  
  7607. Set Arc Parameters (GSAP) 
  7608. X'22' (LEN, P, Q, R, S) 
  7609.  
  7610. Push and Set Arc Parameters (GPSAP) 
  7611. X'62' (LEN, P, Q, R, S) 
  7612.  
  7613.  
  7614. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - LEN ΓòÉΓòÉΓòÉ
  7615.  
  7616.  LEN (GLENGTH1) 
  7617.     Length of following data. 
  7618.  
  7619.  
  7620. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - P ΓòÉΓòÉΓòÉ
  7621.  
  7622.  P (GROSOL) 
  7623.     P-parameter of arc transform. 
  7624.  
  7625.  
  7626. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - Q ΓòÉΓòÉΓòÉ
  7627.  
  7628.  Q (GROSOL) 
  7629.     Q-parameter of arc transform. 
  7630.  
  7631.  
  7632. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - R ΓòÉΓòÉΓòÉ
  7633.  
  7634.  R (GROSOL) 
  7635.     R-parameter of arc transform. 
  7636.  
  7637.  
  7638. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - S ΓòÉΓòÉΓòÉ
  7639.  
  7640.  S (GROSOL) 
  7641.     S-parameter of arc transform. 
  7642.  
  7643.  
  7644. ΓòÉΓòÉΓòÉ <hidden> Set Arc Parameters/Push and Set Arc Parameters - Parameters ΓòÉΓòÉΓòÉ
  7645.  
  7646.  LEN (GLENGTH1) 
  7647.     Length of following data. 
  7648.  
  7649.  P (GROSOL) 
  7650.     P-parameter of arc transform. 
  7651.  
  7652.  Q (GROSOL) 
  7653.     Q-parameter of arc transform. 
  7654.  
  7655.  R (GROSOL) 
  7656.     R-parameter of arc transform. 
  7657.  
  7658.  S (GROSOL) 
  7659.     S-parameter of arc transform. 
  7660.  
  7661.  
  7662. ΓòÉΓòÉΓòÉ <hidden> Set Arc Parameters/Push and Set Arc Parameters - Remarks ΓòÉΓòÉΓòÉ
  7663.  
  7664. The values of the current arc parameters are pushed on to the Segment Call 
  7665. stack by the Push and Set order only. Both orders then set the current arc 
  7666. parameters to the values specified in the order. 
  7667.  
  7668. The value of these parameters determines the shape of subsequent orders drawn 
  7669. using Arc at a Given Position/Arc at Current Position or Full Arc at Given 
  7670. Position/Full Arc at Current Position or Partial Arc at Given Position/Partial 
  7671. Arc at Current Position. 
  7672.  
  7673.  
  7674. ΓòÉΓòÉΓòÉ <hidden> Set Arc Parameters/Push and Set Arc Parameters - Topics ΓòÉΓòÉΓòÉ
  7675.  
  7676. Select an item: 
  7677.  
  7678. Syntax
  7679. Parameters
  7680. Remarks
  7681. Glossary
  7682.  
  7683.  
  7684. ΓòÉΓòÉΓòÉ 2.40. Set Background Color/Push and Set Background Color ΓòÉΓòÉΓòÉ
  7685.  
  7686.  
  7687. ΓòÉΓòÉΓòÉ <hidden> Set Background Color/Push and Set Background Color - Syntax ΓòÉΓòÉΓòÉ
  7688.  
  7689. These orders set, or push and set, the value of the current background color 
  7690. attribute. 
  7691.  
  7692. Set Background Color (GSBCOL) 
  7693. X'25' (LEN, COLOR) 
  7694.  
  7695. Push and Set Background Color (GPSBCOL) 
  7696. X'65' (LEN, COLOR) 
  7697.  
  7698.  
  7699. ΓòÉΓòÉΓòÉ <hidden> GSBCOL/GPSBCOL Parameter - LEN ΓòÉΓòÉΓòÉ
  7700.  
  7701.  LEN (GLENGTH1) 
  7702.     Length of following data. 
  7703.  
  7704.     0x02    Only valid value. 
  7705.  
  7706.  
  7707. ΓòÉΓòÉΓòÉ <hidden> GSBCOL/GPSBCOL Parameter - COLOR ΓòÉΓòÉΓòÉ
  7708.  
  7709.  COLOR (GBIT16) 
  7710.     Color-table index: Except for the special values, the values 0x0000 through 
  7711.     0xnnnn are allowed color indexes; that is, as many values as are allowed by 
  7712.     the size of the LCT. 
  7713.  
  7714.     Special Values 
  7715.  
  7716.     0x0000 
  7717.             Drawing default 
  7718.     0x0007 
  7719.             White 
  7720.     0x0008 
  7721.             Black 
  7722.     0xFF00 
  7723.             Drawing default 
  7724.     0xFF0x 
  7725.             Color indexes 0x000n, where n is in the range 1 through 7. 
  7726.     0xFF08 
  7727.             Color index 0 (reset color). 
  7728.  
  7729.  
  7730. ΓòÉΓòÉΓòÉ <hidden> Set Background Color/Push and Set Background Color - Parameters ΓòÉΓòÉΓòÉ
  7731.  
  7732.  LEN (GLENGTH1) 
  7733.     Length of following data. 
  7734.  
  7735.     0x02    Only valid value. 
  7736.  
  7737.  COLOR (GBIT16) 
  7738.     Color-table index: Except for the special values, the values 0x0000 through 
  7739.     0xnnnn are allowed color indexes; that is, as many values as are allowed by 
  7740.     the size of the LCT. 
  7741.  
  7742.     Special Values 
  7743.  
  7744.     0x0000 
  7745.             Drawing default 
  7746.     0x0007 
  7747.             White 
  7748.     0x0008 
  7749.             Black 
  7750.     0xFF00 
  7751.             Drawing default 
  7752.     0xFF0x 
  7753.             Color indexes 0x000n, where n is in the range 1 through 7. 
  7754.     0xFF08 
  7755.             Color index 0 (reset color). 
  7756.  
  7757.  
  7758. ΓòÉΓòÉΓòÉ <hidden> Set Background Color/Push and Set Background Color - Topics ΓòÉΓòÉΓòÉ
  7759.  
  7760. Select an item: 
  7761.  
  7762. Syntax
  7763. Parameters
  7764. Glossary
  7765.  
  7766.  
  7767. ΓòÉΓòÉΓòÉ 2.41. Set Background Indexed Color/Push and Set Background Indexed Color ΓòÉΓòÉΓòÉ
  7768.  
  7769.  
  7770. ΓòÉΓòÉΓòÉ <hidden> Set Background Indexed Color/Push and Set Background Indexed Color - Syntax ΓòÉΓòÉΓòÉ
  7771.  
  7772. These orders set, or push and set, the value of the current background color 
  7773. attribute. 
  7774.  
  7775. Set Background Indexed Color (GSBICOL) 
  7776. X'A7' (LEN, FLAGS, INDEX) 
  7777.  
  7778. Push and Set Background Indexed Color (GPSBICOL) 
  7779. X'E7' (LEN, FLAGS, INDEX) 
  7780.  
  7781.  
  7782. ΓòÉΓòÉΓòÉ <hidden> GSBICOL/GPSBICOL Parameter - LEN ΓòÉΓòÉΓòÉ
  7783.  
  7784.  LEN (GLENGTH1) 
  7785.     Length of following data. 
  7786.  
  7787.     0x04    Only valid value. 
  7788.  
  7789.  
  7790. ΓòÉΓòÉΓòÉ <hidden> GSBICOL/GPSBICOL Parameter - FLAGS ΓòÉΓòÉΓòÉ
  7791.  
  7792.  FLAGS 
  7793.     Values: 
  7794.  
  7795.     DEFAULT (GBIT1) 
  7796.              Options: 
  7797.  
  7798.              0       Use specified INDEX 
  7799.              1       Use drawing default color. 
  7800.  
  7801.     SPEC (GBIT1) 
  7802.              Options: 
  7803.  
  7804.              0       Use index directly 
  7805.              1       Special value. 
  7806.  
  7807.     RES (GBIT6) 
  7808.              Reserved value, must be 0. 
  7809.  
  7810.  
  7811. ΓòÉΓòÉΓòÉ <hidden> GSBICOL/GPSBICOL Parameter - INDEX ΓòÉΓòÉΓòÉ
  7812.  
  7813.  INDEX (GINDEX3) 
  7814.     Value for color index. 
  7815.  
  7816.     The value is a direct index into the current color table or a special 
  7817.     value. The special values are: 
  7818.  
  7819.     1 
  7820.             Black 
  7821.     2 
  7822.             White 
  7823.     4 
  7824.             All ones 
  7825.     5 
  7826.             All zeros. 
  7827.  
  7828.  
  7829. ΓòÉΓòÉΓòÉ <hidden> Set Background Indexed Color/Push and Set Background Indexed Color - Parameters ΓòÉΓòÉΓòÉ
  7830.  
  7831.  LEN (GLENGTH1) 
  7832.     Length of following data. 
  7833.  
  7834.     0x04    Only valid value. 
  7835.  
  7836.  FLAGS 
  7837.     Values: 
  7838.  
  7839.     DEFAULT (GBIT1) 
  7840.              Options: 
  7841.  
  7842.              0       Use specified INDEX 
  7843.              1       Use drawing default color. 
  7844.  
  7845.     SPEC (GBIT1) 
  7846.              Options: 
  7847.  
  7848.              0       Use index directly 
  7849.              1       Special value. 
  7850.  
  7851.     RES (GBIT6) 
  7852.              Reserved value, must be 0. 
  7853.  
  7854.  INDEX (GINDEX3) 
  7855.     Value for color index. 
  7856.  
  7857.     The value is a direct index into the current color table or a special 
  7858.     value. The special values are: 
  7859.  
  7860.     1 
  7861.             Black 
  7862.     2 
  7863.             White 
  7864.     4 
  7865.             All ones 
  7866.     5 
  7867.             All zeros. 
  7868.  
  7869.  
  7870. ΓòÉΓòÉΓòÉ <hidden> Set Background Indexed Color/Push and Set Background Indexed Color - Remarks ΓòÉΓòÉΓòÉ
  7871.  
  7872. The value of the current background color attribute is pushed on to the stack 
  7873. by the Push and Set order only. Both orders then set the current background 
  7874. color attribute to the value specified in the order. 
  7875.  
  7876.  
  7877. ΓòÉΓòÉΓòÉ <hidden> Set Background Indexed Color/Push and Set Background Indexed Color - Topics ΓòÉΓòÉΓòÉ
  7878.  
  7879. Select an item: 
  7880.  
  7881. Syntax
  7882. Parameters
  7883. Remarks
  7884. Glossary
  7885.  
  7886.  
  7887. ΓòÉΓòÉΓòÉ 2.42. Set Background Mix/Push and Set Background Mix ΓòÉΓòÉΓòÉ
  7888.  
  7889.  
  7890. ΓòÉΓòÉΓòÉ <hidden> Set Background Mix/Push and Set Background Mix - Syntax ΓòÉΓòÉΓòÉ
  7891.  
  7892. These orders set, or push and set, the value of the current background mix 
  7893. attribute. 
  7894.  
  7895. Set Background Mix (GSBMX) 
  7896. X'0D' (MODE) 
  7897.  
  7898. Push and Set Background Mix (GPSBMX) 
  7899. X'4D' (MODE) 
  7900.  
  7901.  
  7902. ΓòÉΓòÉΓòÉ <hidden> GSBMX/GPSBMX Parameter - MODE ΓòÉΓòÉΓòÉ
  7903.  
  7904.  MODE (GBIT8) 
  7905.     Mix-mode value: 
  7906.  
  7907.     0x00 
  7908.             Drawing default 
  7909.     0x01 
  7910.             OR 
  7911.     0x02 
  7912.             Overpaint 
  7913.     0x03 
  7914.             Reserved 
  7915.     0x04 
  7916.             Exclusive-OR 
  7917.     0x05 
  7918.             Leave Alone 
  7919.     0x06 
  7920.             AND 
  7921.     0x07 
  7922.             Subtract 
  7923.     0x08 
  7924.             Source AND (inverse destination) 
  7925.     0x09 
  7926.             All zeros 
  7927.     0x0A 
  7928.             Inverse (source OR destination) 
  7929.     0x0B 
  7930.             Inverse (source XOR destination) 
  7931.     0x0C 
  7932.             Inverse destination 
  7933.     0x0D 
  7934.             Source OR (inverse destination) 
  7935.     0x0E 
  7936.             Inverse source 
  7937.     0x0F 
  7938.             (Inverse source) OR destination 
  7939.     0x10 
  7940.             Inverse (source AND destination) 
  7941.     0x11 
  7942.             All ones. 
  7943.  
  7944.  
  7945. ΓòÉΓòÉΓòÉ <hidden> Set Background Mix/Push and Set Background Mix - Parameters ΓòÉΓòÉΓòÉ
  7946.  
  7947.  MODE (GBIT8) 
  7948.     Mix-mode value: 
  7949.  
  7950.     0x00 
  7951.             Drawing default 
  7952.     0x01 
  7953.             OR 
  7954.     0x02 
  7955.             Overpaint 
  7956.     0x03 
  7957.             Reserved 
  7958.     0x04 
  7959.             Exclusive-OR 
  7960.     0x05 
  7961.             Leave Alone 
  7962.     0x06 
  7963.             AND 
  7964.     0x07 
  7965.             Subtract 
  7966.     0x08 
  7967.             Source AND (inverse destination) 
  7968.     0x09 
  7969.             All zeros 
  7970.     0x0A 
  7971.             Inverse (source OR destination) 
  7972.     0x0B 
  7973.             Inverse (source XOR destination) 
  7974.     0x0C 
  7975.             Inverse destination 
  7976.     0x0D 
  7977.             Source OR (inverse destination) 
  7978.     0x0E 
  7979.             Inverse source 
  7980.     0x0F 
  7981.             (Inverse source) OR destination 
  7982.     0x10 
  7983.             Inverse (source AND destination) 
  7984.     0x11 
  7985.             All ones. 
  7986.  
  7987.  
  7988. ΓòÉΓòÉΓòÉ <hidden> Set Background Mix/Push and Set Background Mix - Remarks ΓòÉΓòÉΓòÉ
  7989.  
  7990. The value of the current background mix attribute is pushed on to the Segment 
  7991. Call stack by the Push and Set order only. Both orders then set the current 
  7992. background mix attribute to the value specified in the order. 
  7993.  
  7994.  
  7995. ΓòÉΓòÉΓòÉ <hidden> Set Background Mix/Push and Set Background Mix - Topics ΓòÉΓòÉΓòÉ
  7996.  
  7997. Select an item: 
  7998.  
  7999. Syntax
  8000. Parameters
  8001. Remarks
  8002. Glossary
  8003.  
  8004.  
  8005. ΓòÉΓòÉΓòÉ 2.43. Set Character Angle/Push and Set Character Angle ΓòÉΓòÉΓòÉ
  8006.  
  8007.  
  8008. ΓòÉΓòÉΓòÉ <hidden> Set Character Angle/Push and Set Character Angle - Syntax ΓòÉΓòÉΓòÉ
  8009.  
  8010. These orders set, or push and set, the value of the current character angle 
  8011. attribute. 
  8012.  
  8013. Set Character Angle (GSCA) 
  8014. X'34' (LEN, AX, AY) 
  8015.  
  8016. Push and Set Character Angle (GPSCA) 
  8017. X'74' (LEN, AX, AY) 
  8018.  
  8019.  
  8020. ΓòÉΓòÉΓòÉ <hidden> GSCA/GPSCA Parameter - LEN ΓòÉΓòÉΓòÉ
  8021.  
  8022.  LEN (GLENGTH1) 
  8023.     Length of following data. 
  8024.  
  8025.  
  8026. ΓòÉΓòÉΓòÉ <hidden> GSCA/GPSCA Parameter - AX ΓòÉΓòÉΓòÉ
  8027.  
  8028.  AX (GROSOL) 
  8029.     X coordinate of point. 
  8030.  
  8031.     This point defines the angle of the character string. 
  8032.  
  8033.  
  8034. ΓòÉΓòÉΓòÉ <hidden> GSCA/GPSCA Parameter - AY ΓòÉΓòÉΓòÉ
  8035.  
  8036.  AY (GROSOL) 
  8037.     Y coordinate of point. 
  8038.  
  8039.     This point defines the angle of the character string. 
  8040.  
  8041.  
  8042. ΓòÉΓòÉΓòÉ <hidden> Set Character Angle/Push and Set Character Angle - Parameters ΓòÉΓòÉΓòÉ
  8043.  
  8044.  LEN (GLENGTH1) 
  8045.     Length of following data. 
  8046.  
  8047.  AX (GROSOL) 
  8048.     X coordinate of point. 
  8049.  
  8050.     This point defines the angle of the character string. 
  8051.  
  8052.  AY (GROSOL) 
  8053.     Y coordinate of point. 
  8054.  
  8055.     This point defines the angle of the character string. 
  8056.  
  8057.  
  8058. ΓòÉΓòÉΓòÉ <hidden> Set Character Angle/Push and Set Character Angle - Remarks ΓòÉΓòÉΓòÉ
  8059.  
  8060. The value of the current character angle attribute is pushed on to the Segment 
  8061. Call Stack by the Push and Set order only. Both orders then set the value of 
  8062. the current character angle to the value specified in the order. 
  8063.  
  8064.  
  8065. ΓòÉΓòÉΓòÉ <hidden> Set Character Angle/Push and Set Character Angle - Topics ΓòÉΓòÉΓòÉ
  8066.  
  8067. Select an item: 
  8068.  
  8069. Syntax
  8070. Parameters
  8071. Remarks
  8072. Glossary
  8073.  
  8074.  
  8075. ΓòÉΓòÉΓòÉ 2.44. Set Character Break Extra/Push and Set Character Break Extra ΓòÉΓòÉΓòÉ
  8076.  
  8077.  
  8078. ΓòÉΓòÉΓòÉ <hidden> Set Character Break Extra/Push and Set Character Break Extra - Syntax ΓòÉΓòÉΓòÉ
  8079.  
  8080. These orders set, or push and set, the value of the current character break 
  8081. extra attribute. 
  8082.  
  8083. Set Character Break Extra (GSCBE) 
  8084. X'05' (LEN, FLAGS, RES2, INC) 
  8085.  
  8086. Push and Set Character Break Extra (GPSCBE) 
  8087. X'45' (LEN, FLAGS, RES2, INC) 
  8088.  
  8089.  
  8090. ΓòÉΓòÉΓòÉ <hidden> GSCBE/GPSCBE Parameter - LEN ΓòÉΓòÉΓòÉ
  8091.  
  8092.  LEN (GLENGTH1) 
  8093.     Length of following data. 
  8094.  
  8095.  
  8096. ΓòÉΓòÉΓòÉ <hidden> GSCBE/GPSCBE Parameter - FLAGS ΓòÉΓòÉΓòÉ
  8097.  
  8098.  FLAGS 
  8099.     Values as follows: 
  8100.  
  8101.     DEFAULT (GBIT1) 
  8102.              Values as follows: 
  8103.  
  8104.              B"0"       Set to specified value. 
  8105.              B"1"       Set to drawing default. 
  8106.  
  8107.     RES1 (GBIT7) 
  8108.              Reserved value, must be 0. 
  8109.  
  8110.  
  8111. ΓòÉΓòÉΓòÉ <hidden> GSCBE/GPSCBE Parameter - RES2 ΓòÉΓòÉΓòÉ
  8112.  
  8113.  RES2 (GUNDF1) 
  8114.     Reserved value, must be 0. 
  8115.  
  8116.  
  8117. ΓòÉΓòÉΓòÉ <hidden> GSCBE/GPSCBE Parameter - INC ΓòÉΓòÉΓòÉ
  8118.  
  8119.  INC (GROF) 
  8120.     Increment. 
  8121.  
  8122.  
  8123. ΓòÉΓòÉΓòÉ <hidden> Set Character Break Extra/Push and Set Character Break Extra - Parameters ΓòÉΓòÉΓòÉ
  8124.  
  8125.  LEN (GLENGTH1) 
  8126.     Length of following data. 
  8127.  
  8128.  FLAGS 
  8129.     Values as follows: 
  8130.  
  8131.     DEFAULT (GBIT1) 
  8132.              Values as follows: 
  8133.  
  8134.              B"0"       Set to specified value. 
  8135.              B"1"       Set to drawing default. 
  8136.  
  8137.     RES1 (GBIT7) 
  8138.              Reserved value, must be 0. 
  8139.  
  8140.  RES2 (GUNDF1) 
  8141.     Reserved value, must be 0. 
  8142.  
  8143.  INC (GROF) 
  8144.     Increment. 
  8145.  
  8146.  
  8147. ΓòÉΓòÉΓòÉ <hidden> Set Character Break Extra/Push and Set Character Break Extra - Remarks ΓòÉΓòÉΓòÉ
  8148.  
  8149. The value of the current character break extra attribute is pushed on to the 
  8150. Segment Call Stack by the Push and Set order only. Both orders then set the 
  8151. value of the current character break extra attribute to the value specified in 
  8152. the order. 
  8153.  
  8154.  
  8155. ΓòÉΓòÉΓòÉ <hidden> Set Character Break Extra/Push and Set Character Break Extra - Topics ΓòÉΓòÉΓòÉ
  8156.  
  8157. Select an item: 
  8158.  
  8159. Syntax
  8160. Parameters
  8161. Remarks
  8162. Glossary
  8163.  
  8164.  
  8165. ΓòÉΓòÉΓòÉ 2.45. Set Character Cell/Push and Set Character Cell ΓòÉΓòÉΓòÉ
  8166.  
  8167.  
  8168. ΓòÉΓòÉΓòÉ <hidden> Set Character Cell/Push and Set Character Cell - Syntax ΓòÉΓòÉΓòÉ
  8169.  
  8170. These orders set, or push and set, the value of the current character cell-size 
  8171. attribute. 
  8172.  
  8173. Set Character Cell (GSCC) 
  8174. X'33' (LEN, CELLX, CELLY, CELLXF, CELLYF, FLAGS, RES) 
  8175.  
  8176. Push and Set Character Cell (GPSCC) 
  8177. X'03' (LEN, CELLX, CELLY, CELLXF, CELLYF, FLAGS, RES) 
  8178.  
  8179.  
  8180. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - LEN ΓòÉΓòÉΓòÉ
  8181.  
  8182.  LEN (GLENGTH1) 
  8183.     Length of following data. 
  8184.  
  8185.  
  8186. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - CELLX ΓòÉΓòÉΓòÉ
  8187.  
  8188.  CELLX (GROSOL) 
  8189.     X part of character cell-size attribute. 
  8190.  
  8191.  
  8192. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - CELLY ΓòÉΓòÉΓòÉ
  8193.  
  8194.  CELLY (GROSOL) 
  8195.     Y part of character cell-size attribute. 
  8196.  
  8197.  
  8198. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - CELLXF ΓòÉΓòÉΓòÉ
  8199.  
  8200.  CELLXF (GUSHORT) 
  8201.     Fractional X part of character cell-size attribute. 
  8202.  
  8203.     This parameter is optional. 
  8204.  
  8205.  
  8206. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - CELLYF ΓòÉΓòÉΓòÉ
  8207.  
  8208.  CELLYF (GUSHORT) 
  8209.     Fractional Y part of character cell-size attribute. 
  8210.  
  8211.     This parameter must be present if CELLXF parameter is present. 
  8212.  
  8213.  
  8214. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - FLAGS ΓòÉΓòÉΓòÉ
  8215.  
  8216.  FLAGS 
  8217.     Internal flags. 
  8218.  
  8219.     This parameter is optional. 
  8220.  
  8221.     NOTDEFLT (GBIT1) 
  8222.              Values: 
  8223.  
  8224.              0       A cell size of zero sets drawing default 
  8225.              1       A cell size of zero sets to zero. 
  8226.  
  8227.     RES (GBIT7) 
  8228.              Reserved. 
  8229.  
  8230.              0000000 Only valid value. 
  8231.  
  8232.  
  8233. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - RES ΓòÉΓòÉΓòÉ
  8234.  
  8235.  RES (GBIT8) 
  8236.     Reserved value, must be 0. 
  8237.  
  8238.     This parameter must be present if FLAGS parameter is present. 
  8239.  
  8240.  
  8241. ΓòÉΓòÉΓòÉ <hidden> Set Character Cell/Push and Set Character Cell - Parameters ΓòÉΓòÉΓòÉ
  8242.  
  8243.  LEN (GLENGTH1) 
  8244.     Length of following data. 
  8245.  
  8246.  CELLX (GROSOL) 
  8247.     X part of character cell-size attribute. 
  8248.  
  8249.  CELLY (GROSOL) 
  8250.     Y part of character cell-size attribute. 
  8251.  
  8252.  CELLXF (GUSHORT) 
  8253.     Fractional X part of character cell-size attribute. 
  8254.  
  8255.     This parameter is optional. 
  8256.  
  8257.  CELLYF (GUSHORT) 
  8258.     Fractional Y part of character cell-size attribute. 
  8259.  
  8260.     This parameter must be present if CELLXF parameter is present. 
  8261.  
  8262.  FLAGS 
  8263.     Internal flags. 
  8264.  
  8265.     This parameter is optional. 
  8266.  
  8267.     NOTDEFLT (GBIT1) 
  8268.              Values: 
  8269.  
  8270.              0       A cell size of zero sets drawing default 
  8271.              1       A cell size of zero sets to zero. 
  8272.  
  8273.     RES (GBIT7) 
  8274.              Reserved. 
  8275.  
  8276.              0000000 Only valid value. 
  8277.  
  8278.  RES (GBIT8) 
  8279.     Reserved value, must be 0. 
  8280.  
  8281.     This parameter must be present if FLAGS parameter is present. 
  8282.  
  8283.  
  8284. ΓòÉΓòÉΓòÉ <hidden> Set Character Cell/Push and Set Character Cell - Remarks ΓòÉΓòÉΓòÉ
  8285.  
  8286. The value of the current character cell-size attribute is pushed on to the 
  8287. Segment Call Stack by the Push and Set order only. Both orders then set the 
  8288. value of the current character cell-size attribute to the value in the order. 
  8289.  
  8290.  
  8291. ΓòÉΓòÉΓòÉ <hidden> Set Character Cell/Push and Set Character Cell - Topics ΓòÉΓòÉΓòÉ
  8292.  
  8293. Select an item: 
  8294.  
  8295. Syntax
  8296. Parameters
  8297. Remarks
  8298. Glossary
  8299.  
  8300.  
  8301. ΓòÉΓòÉΓòÉ 2.46. Set Character Direction/Push and Set Character Direction ΓòÉΓòÉΓòÉ
  8302.  
  8303.  
  8304. ΓòÉΓòÉΓòÉ <hidden> Set Character Direction/Push and Set Character Direction - Syntax ΓòÉΓòÉΓòÉ
  8305.  
  8306. These orders set, or push and set, the value of the current character direction 
  8307. attribute. 
  8308.  
  8309. Set Character Direction (GSCD) 
  8310. X'3A' (DIRECTION) 
  8311.  
  8312. Push and Set Character Direction (GPSCD) 
  8313. X'7A' (DIRECTION) 
  8314.  
  8315.  
  8316. ΓòÉΓòÉΓòÉ <hidden> GSCD/GPSCD Parameter - DIRECTION ΓòÉΓòÉΓòÉ
  8317.  
  8318.  DIRECTION (GBIT8) 
  8319.     Value for character direction: 
  8320.  
  8321.     All other values are reserved. 
  8322.  
  8323.     0x00       Drawing default 
  8324.     0x01       Left to right 
  8325.     0x02       Top to bottom 
  8326.     0x03       Right to left 
  8327.     0x04       Bottom to top. 
  8328.  
  8329.  
  8330. ΓòÉΓòÉΓòÉ <hidden> Set Character Direction/Push and Set Character Direction - Parameters ΓòÉΓòÉΓòÉ
  8331.  
  8332.  DIRECTION (GBIT8) 
  8333.     Value for character direction: 
  8334.  
  8335.     All other values are reserved. 
  8336.  
  8337.     0x00       Drawing default 
  8338.     0x01       Left to right 
  8339.     0x02       Top to bottom 
  8340.     0x03       Right to left 
  8341.     0x04       Bottom to top. 
  8342.  
  8343.  
  8344. ΓòÉΓòÉΓòÉ <hidden> Set Character Direction/Push and Set Character Direction - Remarks ΓòÉΓòÉΓòÉ
  8345.  
  8346. The value of the current character direction attribute is pushed on to the 
  8347. Segment Call Stack by the Push and Set order only. Both orders then set the 
  8348. value of the current character direction attribute to the value in the order. 
  8349.  
  8350.  
  8351. ΓòÉΓòÉΓòÉ <hidden> Set Character Direction/Push and Set Character Direction - Topics ΓòÉΓòÉΓòÉ
  8352.  
  8353. Select an item: 
  8354.  
  8355. Syntax
  8356. Parameters
  8357. Remarks
  8358. Glossary
  8359.  
  8360.  
  8361. ΓòÉΓòÉΓòÉ 2.47. Set Character Extra/Push and Set Character Extra ΓòÉΓòÉΓòÉ
  8362.  
  8363.  
  8364. ΓòÉΓòÉΓòÉ <hidden> Set Character Extra/Push and Set Character Extra - Syntax ΓòÉΓòÉΓòÉ
  8365.  
  8366. These orders set, or push and set, the value of the current character extra 
  8367. attribute. 
  8368.  
  8369. Set Character Extra (GSCE) 
  8370. X'17' (LEN, FLAGS, RES2, INC) 
  8371.  
  8372. Push and Set Character Extra (GPSCE) 
  8373. X'57' (LEN, FLAGS, RES2, INC) 
  8374.  
  8375.  
  8376. ΓòÉΓòÉΓòÉ <hidden> GSCE/GPSCE Parameter - LEN ΓòÉΓòÉΓòÉ
  8377.  
  8378.  LEN (GLENGTH1) 
  8379.     Length of following data. 
  8380.  
  8381.  
  8382. ΓòÉΓòÉΓòÉ <hidden> GSCE/GPSCE Parameter - FLAGS ΓòÉΓòÉΓòÉ
  8383.  
  8384.  FLAGS 
  8385.     Values as follows: 
  8386.  
  8387.     DEFAULT (GBIT1) 
  8388.              Values as follows: 
  8389.  
  8390.              B"0"      Set to specified value. 
  8391.              B"1"      Set to drawing default. 
  8392.  
  8393.     RES1 (GBIT7) 
  8394.              Reserved value, must be 0. 
  8395.  
  8396.  
  8397. ΓòÉΓòÉΓòÉ <hidden> GSCE/GPSCE Parameter - RES2 ΓòÉΓòÉΓòÉ
  8398.  
  8399.  RES2 (GUNDF1) 
  8400.     Reserved value, must be 0. 
  8401.  
  8402.  
  8403. ΓòÉΓòÉΓòÉ <hidden> GSCE/GPSCE Parameter - INC ΓòÉΓòÉΓòÉ
  8404.  
  8405.  INC (GROF) 
  8406.     Increment. 
  8407.  
  8408.  
  8409. ΓòÉΓòÉΓòÉ <hidden> Set Character Extra/Push and Set Character Extra - Parameters ΓòÉΓòÉΓòÉ
  8410.  
  8411.  LEN (GLENGTH1) 
  8412.     Length of following data. 
  8413.  
  8414.  FLAGS 
  8415.     Values as follows: 
  8416.  
  8417.     DEFAULT (GBIT1) 
  8418.              Values as follows: 
  8419.  
  8420.              B"0"      Set to specified value. 
  8421.              B"1"      Set to drawing default. 
  8422.  
  8423.     RES1 (GBIT7) 
  8424.              Reserved value, must be 0. 
  8425.  
  8426.  RES2 (GUNDF1) 
  8427.     Reserved value, must be 0. 
  8428.  
  8429.  INC (GROF) 
  8430.     Increment. 
  8431.  
  8432.  
  8433. ΓòÉΓòÉΓòÉ <hidden> Set Character Extra/Push and Set Character Extra - Remarks ΓòÉΓòÉΓòÉ
  8434.  
  8435. The value of the current character extra attribute is pushed on to the Segment 
  8436. Call Stack by the Push and Set order only. Both orders set the value of the 
  8437. current character extra attribute to the value specified in the order. 
  8438.  
  8439.  
  8440. ΓòÉΓòÉΓòÉ <hidden> Set Character Extra/Push and Set Character Extra - Topics ΓòÉΓòÉΓòÉ
  8441.  
  8442. Select an item: 
  8443.  
  8444. Syntax
  8445. Parameters
  8446. Remarks
  8447. Glossary
  8448.  
  8449.  
  8450. ΓòÉΓòÉΓòÉ 2.48. Set Character Precision/Push and Set Character Precision ΓòÉΓòÉΓòÉ
  8451.  
  8452.  
  8453. ΓòÉΓòÉΓòÉ <hidden> Set Character Precision/Push and Set Character Precision - Syntax ΓòÉΓòÉΓòÉ
  8454.  
  8455. These orders set, or push and set, the value of the current character precision 
  8456. attribute. 
  8457.  
  8458. Set Character Precision (GSCR) 
  8459. X'39' (PREC) 
  8460.  
  8461. Push and Set Character Precision (GPSCR) 
  8462. X'79' (PREC) 
  8463.  
  8464.  
  8465. ΓòÉΓòÉΓòÉ <hidden> GSCR/GPSCR Parameter - PREC ΓòÉΓòÉΓòÉ
  8466.  
  8467.  PREC (GBIT8) 
  8468.     Value for character-precision attribute: 
  8469.  
  8470.     All other values are reserved. 
  8471.  
  8472.     0x00       Drawing default 
  8473.     0x01       String precision 
  8474.     0x02       Character precision 
  8475.     0x03       Stroke precision 
  8476.  
  8477.  
  8478. ΓòÉΓòÉΓòÉ <hidden> Set Character Precision/Push and Set Character Precision - Parameters ΓòÉΓòÉΓòÉ
  8479.  
  8480.  PREC (GBIT8) 
  8481.     Value for character-precision attribute: 
  8482.  
  8483.     All other values are reserved. 
  8484.  
  8485.     0x00       Drawing default 
  8486.     0x01       String precision 
  8487.     0x02       Character precision 
  8488.     0x03       Stroke precision 
  8489.  
  8490.  
  8491. ΓòÉΓòÉΓòÉ <hidden> Set Character Precision/Push and Set Character Precision - Remarks ΓòÉΓòÉΓòÉ
  8492.  
  8493. The value of the current character precision attribute is pushed on to the 
  8494. Segment Call Stack by the Push and Set order only. Both orders then set the 
  8495. value of the current character precision attribute to the value in the order. 
  8496.  
  8497.  
  8498. ΓòÉΓòÉΓòÉ <hidden> Set Character Precision/Push and Set Character Precision - Topics ΓòÉΓòÉΓòÉ
  8499.  
  8500. Select an item: 
  8501.  
  8502. Syntax
  8503. Parameters
  8504. Remarks
  8505. Glossary
  8506.  
  8507.  
  8508. ΓòÉΓòÉΓòÉ 2.49. Set Character Set/Push and Set Character Set ΓòÉΓòÉΓòÉ
  8509.  
  8510.  
  8511. ΓòÉΓòÉΓòÉ <hidden> Set Character Set/Push and Set Character Set - Syntax ΓòÉΓòÉΓòÉ
  8512.  
  8513. These orders set, or push and set, the value of the current character-set 
  8514. attribute. 
  8515.  
  8516. Set Character Set (GSCS) 
  8517. X'38' (LCID) 
  8518.  
  8519. Push and Set Character Set (GPSCS) 
  8520. X'78' (LCID) 
  8521.  
  8522.  
  8523. ΓòÉΓòÉΓòÉ <hidden> GSCS/GPSCS Parameter - LCID ΓòÉΓòÉΓòÉ
  8524.  
  8525.  LCID (GUCHAR) 
  8526.     Local identifier (LCID) for the character set: 
  8527.  
  8528.     0x00          Drawing default 
  8529.     0x01-0xFE     Lcid for the symbol set 
  8530.     0xFF          Special character set. 
  8531.  
  8532.  
  8533. ΓòÉΓòÉΓòÉ <hidden> Set Character Set/Push and Set Character Set - Parameters ΓòÉΓòÉΓòÉ
  8534.  
  8535.  LCID (GUCHAR) 
  8536.     Local identifier (LCID) for the character set: 
  8537.  
  8538.     0x00          Drawing default 
  8539.     0x01-0xFE     Lcid for the symbol set 
  8540.     0xFF          Special character set. 
  8541.  
  8542.  
  8543. ΓòÉΓòÉΓòÉ <hidden> Set Character Set/Push and Set Character Set - Remarks ΓòÉΓòÉΓòÉ
  8544.  
  8545. The value of the current character-set attribute is pushed on to the Segment 
  8546. Call Stack by the Push and Set order only. Both orders then set the value of 
  8547. the current character-set attribute to the value in the order. 
  8548.  
  8549.  
  8550. ΓòÉΓòÉΓòÉ <hidden> Set Character Set/Push and Set Character Set - Topics ΓòÉΓòÉΓòÉ
  8551.  
  8552. Select an item: 
  8553.  
  8554. Syntax
  8555. Parameters
  8556. Remarks
  8557. Glossary
  8558.  
  8559.  
  8560. ΓòÉΓòÉΓòÉ 2.50. Set Character Shear/Push and Set Character Shear ΓòÉΓòÉΓòÉ
  8561.  
  8562.  
  8563. ΓòÉΓòÉΓòÉ <hidden> Set Character Shear/Push and Set Character Shear - Syntax ΓòÉΓòÉΓòÉ
  8564.  
  8565. These orders set, or push and set, the value of the current character shear 
  8566. attribute. 
  8567.  
  8568. Set Character Shear (GSCH) 
  8569. X'35' (LEN, HX, HY) 
  8570.  
  8571. Push and Set Character Shear (GPSCH) 
  8572. X'75' (LEN, HX, HY) 
  8573.  
  8574.  
  8575. ΓòÉΓòÉΓòÉ <hidden> GSCH/GPSCH Parameter - LEN ΓòÉΓòÉΓòÉ
  8576.  
  8577.  LEN (GLENGTH1) 
  8578.     Length of following data. 
  8579.  
  8580.  
  8581. ΓòÉΓòÉΓòÉ <hidden> GSCH/GPSCH Parameter - HX ΓòÉΓòÉΓòÉ
  8582.  
  8583.  HX (GROSOL) 
  8584.     Dividend of shear ratio. 
  8585.  
  8586.  
  8587. ΓòÉΓòÉΓòÉ <hidden> GSCH/GPSCH Parameter - HY ΓòÉΓòÉΓòÉ
  8588.  
  8589.  HY (GROSOL) 
  8590.     Divisor of shear ratio. 
  8591.  
  8592.  
  8593. ΓòÉΓòÉΓòÉ <hidden> Set Character Shear/Push and Set Character Shear - Parameters ΓòÉΓòÉΓòÉ
  8594.  
  8595.  LEN (GLENGTH1) 
  8596.     Length of following data. 
  8597.  
  8598.  HX (GROSOL) 
  8599.     Dividend of shear ratio. 
  8600.  
  8601.  HY (GROSOL) 
  8602.     Divisor of shear ratio. 
  8603.  
  8604.  
  8605. ΓòÉΓòÉΓòÉ <hidden> Set Character Shear/Push and Set Character Shear - Remarks ΓòÉΓòÉΓòÉ
  8606.  
  8607. When HX and HY are both 0, the drawing default is set. The value of the current 
  8608. character shear attribute is pushed on to the Segment Call Stack by the Push 
  8609. and Set order only. Both orders then set the value of the current character 
  8610. shear attribute to the value in the order. 
  8611.  
  8612.  
  8613. ΓòÉΓòÉΓòÉ <hidden> Set Character Shear/Push and Set Character Shear - Topics ΓòÉΓòÉΓòÉ
  8614.  
  8615. Select an item: 
  8616.  
  8617. Syntax
  8618. Parameters
  8619. Remarks
  8620. Glossary
  8621.  
  8622.  
  8623. ΓòÉΓòÉΓòÉ 2.51. Set Clip Path ΓòÉΓòÉΓòÉ
  8624.  
  8625.  
  8626. ΓòÉΓòÉΓòÉ <hidden> Set Clip Path - Syntax ΓòÉΓòÉΓòÉ
  8627.  
  8628. This order sets the current clip path. 
  8629.  
  8630. Set Clip Path (GSCPTH) 
  8631. X'B4' (LEN, FLAGS, RES, PTHID) 
  8632.  
  8633.  
  8634. ΓòÉΓòÉΓòÉ <hidden> GSCPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  8635.  
  8636.  LEN (GLENGTH1) 
  8637.     Length of following data. 
  8638.  
  8639.  
  8640. ΓòÉΓòÉΓòÉ <hidden> GSCPTH Parameter - FLAGS ΓòÉΓòÉΓòÉ
  8641.  
  8642.  FLAGS 
  8643.     Extra functions: 
  8644.  
  8645.     RES (GBIT1) 
  8646.              Reserved value, must be 0. 
  8647.  
  8648.     FILL (GBIT1) 
  8649.              Values: 
  8650.  
  8651.              0       Alternate mode 
  8652.              1       Winding mode. 
  8653.  
  8654.     INTER (GBIT1) 
  8655.              Values: 
  8656.  
  8657.              0       Set to specified path 
  8658.              1       Set to intersection of specified and current clip path. 
  8659.  
  8660.     RES2 (GBIT5) 
  8661.              Reserved value, must be 0. 
  8662.  
  8663.  
  8664. ΓòÉΓòÉΓòÉ <hidden> GSCPTH Parameter - RES ΓòÉΓòÉΓòÉ
  8665.  
  8666.  RES (GBIT8) 
  8667.     Reserved. 
  8668.  
  8669.     0x00    Only valid value. 
  8670.  
  8671.  
  8672. ΓòÉΓòÉΓòÉ <hidden> GSCPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  8673.  
  8674.  PTHID (GLONG) 
  8675.     Path identifier. 
  8676.  
  8677.     0x00000000              No clipping. 
  8678.     0x00000001-0xFFFFFFFF   Path identifier. 
  8679.  
  8680.  
  8681. ΓòÉΓòÉΓòÉ <hidden> Set Clip Path - Parameters ΓòÉΓòÉΓòÉ
  8682.  
  8683.  LEN (GLENGTH1) 
  8684.     Length of following data. 
  8685.  
  8686.  FLAGS 
  8687.     Extra functions: 
  8688.  
  8689.     RES (GBIT1) 
  8690.              Reserved value, must be 0. 
  8691.  
  8692.     FILL (GBIT1) 
  8693.              Values: 
  8694.  
  8695.              0       Alternate mode 
  8696.              1       Winding mode. 
  8697.  
  8698.     INTER (GBIT1) 
  8699.              Values: 
  8700.  
  8701.              0       Set to specified path 
  8702.              1       Set to intersection of specified and current clip path. 
  8703.  
  8704.     RES2 (GBIT5) 
  8705.              Reserved value, must be 0. 
  8706.  
  8707.  RES (GBIT8) 
  8708.     Reserved. 
  8709.  
  8710.     0x00    Only valid value. 
  8711.  
  8712.  PTHID (GLONG) 
  8713.     Path identifier. 
  8714.  
  8715.     0x00000000              No clipping. 
  8716.     0x00000001-0xFFFFFFFF   Path identifier. 
  8717.  
  8718.  
  8719. ΓòÉΓòÉΓòÉ <hidden> Set Clip Path - Topics ΓòÉΓòÉΓòÉ
  8720.  
  8721. Select an item: 
  8722.  
  8723. Syntax
  8724. Parameters
  8725. Glossary
  8726.  
  8727.  
  8728. ΓòÉΓòÉΓòÉ 2.52. Set Color/Push and Set Color ΓòÉΓòÉΓòÉ
  8729.  
  8730.  
  8731. ΓòÉΓòÉΓòÉ <hidden> Set Color/Push and Set Color - Syntax ΓòÉΓòÉΓòÉ
  8732.  
  8733. These orders set, or push and set, the value of the current color attribute. 
  8734.  
  8735. Set Color (GSCOL) 
  8736. X'0A' (COL) 
  8737.  
  8738. Push and Set Color (GPSCOL) 
  8739. X'4A' (COL) 
  8740.  
  8741.  
  8742. ΓòÉΓòÉΓòÉ <hidden> GSCOL/GPSCOL Parameter - COL ΓòÉΓòÉΓòÉ
  8743.  
  8744.  COL (GBIT8) 
  8745.     Value for color attribute: 
  8746.  
  8747.     0x00-0x08     These one-byte values are converted to two-byte values by 
  8748.                   preceding the value with 0xFF. The resultant is then treated 
  8749.                   as a two-byte value as defined by the Set Extended Color/Push 
  8750.                   and Set Extended Color order. 
  8751.     Other         Reserved values. 
  8752.  
  8753.  
  8754. ΓòÉΓòÉΓòÉ <hidden> Set Color/Push and Set Color - Parameters ΓòÉΓòÉΓòÉ
  8755.  
  8756.  COL (GBIT8) 
  8757.     Value for color attribute: 
  8758.  
  8759.     0x00-0x08     These one-byte values are converted to two-byte values by 
  8760.                   preceding the value with 0xFF. The resultant is then treated 
  8761.                   as a two-byte value as defined by the Set Extended Color/Push 
  8762.                   and Set Extended Color order. 
  8763.     Other         Reserved values. 
  8764.  
  8765.  
  8766. ΓòÉΓòÉΓòÉ <hidden> Set Color/Push and Set Color - Remarks ΓòÉΓòÉΓòÉ
  8767.  
  8768. The value of the current color attribute is pushed on to the Segment Call Stack 
  8769. by the Push and Set order only. Both orders then set the value of the current 
  8770. color attribute to the value in the order. 
  8771.  
  8772.  
  8773. ΓòÉΓòÉΓòÉ <hidden> Set Color/Push and Set Color - Topics ΓòÉΓòÉΓòÉ
  8774.  
  8775. Select an item: 
  8776.  
  8777. Syntax
  8778. Parameters
  8779. Remarks
  8780. Glossary
  8781.  
  8782.  
  8783. ΓòÉΓòÉΓòÉ 2.53. Set Current Position/Push and Set Current Position ΓòÉΓòÉΓòÉ
  8784.  
  8785.  
  8786. ΓòÉΓòÉΓòÉ <hidden> Set Current Position/Push and Set Current Position - Syntax ΓòÉΓòÉΓòÉ
  8787.  
  8788. These orders set, or push and set, the value of the current position. 
  8789.  
  8790. Set Current Position (GSCP) 
  8791. X'21' (LEN, P) 
  8792.  
  8793. Push and Set Current Position (GPSCP) 
  8794. X'61' (LEN, P) 
  8795.  
  8796.  
  8797. ΓòÉΓòÉΓòÉ <hidden> GSCP/GPSCP Parameter - LEN ΓòÉΓòÉΓòÉ
  8798.  
  8799.  LEN (GLENGTH1) 
  8800.     Length of following data. 
  8801.  
  8802.  
  8803. ΓòÉΓòÉΓòÉ <hidden> GSCP/GPSCP Parameter - P ΓòÉΓòÉΓòÉ
  8804.  
  8805.  P (GPOINT) 
  8806.     Coordinate data. 
  8807.  
  8808.  
  8809. ΓòÉΓòÉΓòÉ <hidden> Set Current Position/Push and Set Current Position - Parameters ΓòÉΓòÉΓòÉ
  8810.  
  8811.  LEN (GLENGTH1) 
  8812.     Length of following data. 
  8813.  
  8814.  P (GPOINT) 
  8815.     Coordinate data. 
  8816.  
  8817.  
  8818. ΓòÉΓòÉΓòÉ <hidden> Set Current Position/Push and Set Current Position - Remarks ΓòÉΓòÉΓòÉ
  8819.  
  8820. The value of the current position is pushed on to the Segment Call Stack by the 
  8821. Push and Set order only. Both orders then set the value of the current position 
  8822. to the value in the order. 
  8823.  
  8824.  
  8825. ΓòÉΓòÉΓòÉ <hidden> Set Current Position/Push and Set Current Position - Topics ΓòÉΓòÉΓòÉ
  8826.  
  8827. Select an item: 
  8828.  
  8829. Syntax
  8830. Parameters
  8831. Remarks
  8832. Glossary
  8833.  
  8834.  
  8835. ΓòÉΓòÉΓòÉ 2.54. Set Extended Color/Push and Set Extended Color ΓòÉΓòÉΓòÉ
  8836.  
  8837.  
  8838. ΓòÉΓòÉΓòÉ <hidden> Set Extended Color/Push and Set Extended Color - Syntax ΓòÉΓòÉΓòÉ
  8839.  
  8840. These orders set, or push and set, the value of the current color attribute. 
  8841.  
  8842. Set Extended Color (GSECOL) 
  8843. X'26' (LEN, COLOR) 
  8844.  
  8845. Push and Set Extended Color (GPSECOL) 
  8846. X'66' (LEN, COLOR) 
  8847.  
  8848.  
  8849. ΓòÉΓòÉΓòÉ <hidden> GSECOL/GPSECOL Parameter - LEN ΓòÉΓòÉΓòÉ
  8850.  
  8851.  LEN (GLENGTH1) 
  8852.     Length of following data. 
  8853.  
  8854.     0x02    Only valid value. 
  8855.  
  8856.  
  8857. ΓòÉΓòÉΓòÉ <hidden> GSECOL/GPSECOL Parameter - COLOR ΓòÉΓòÉΓòÉ
  8858.  
  8859.  COLOR (GBIT16) 
  8860.     Color-table index. Except for the special values, the values 0x0000 through 
  8861.     0xnnnn are allowed color indexes; that is, as many values as are allowed by 
  8862.     the size of the LCT. 
  8863.  
  8864.  Special Values 
  8865.  
  8866.     0x0000 
  8867.             Drawing default 
  8868.     0x0007 
  8869.             White 
  8870.     0x0008 
  8871.             Black 
  8872.     0xFF00 
  8873.             Drawing default 
  8874.     0xFF0n 
  8875.             Color indexes 0x000n, where n is in the range 1 through 7. 
  8876.     0xFF08 
  8877.             Color index 0 (reset color). 
  8878.  
  8879.  
  8880. ΓòÉΓòÉΓòÉ <hidden> Set Extended Color/Push and Set Extended Color - Parameters ΓòÉΓòÉΓòÉ
  8881.  
  8882.  LEN (GLENGTH1) 
  8883.     Length of following data. 
  8884.  
  8885.     0x02    Only valid value. 
  8886.  
  8887.  COLOR (GBIT16) 
  8888.     Color-table index. Except for the special values, the values 0x0000 through 
  8889.     0xnnnn are allowed color indexes; that is, as many values as are allowed by 
  8890.     the size of the LCT. 
  8891.  
  8892.  Special Values 
  8893.  
  8894.     0x0000 
  8895.             Drawing default 
  8896.     0x0007 
  8897.             White 
  8898.     0x0008 
  8899.             Black 
  8900.     0xFF00 
  8901.             Drawing default 
  8902.     0xFF0n 
  8903.             Color indexes 0x000n, where n is in the range 1 through 7. 
  8904.     0xFF08 
  8905.             Color index 0 (reset color). 
  8906.  
  8907.  
  8908. ΓòÉΓòÉΓòÉ <hidden> Set Extended Color/Push and Set Extended Color - Remarks ΓòÉΓòÉΓòÉ
  8909.  
  8910. The value of the current extended color attribute is pushed on to the Segment 
  8911. Call Stack by the Push and Set order only. Both orders then set the value of 
  8912. the current extended color attribute to the value in the order. 
  8913.  
  8914.  
  8915. ΓòÉΓòÉΓòÉ <hidden> Set Extended Color/Push and Set Extended Color - Topics ΓòÉΓòÉΓòÉ
  8916.  
  8917. Select an item: 
  8918.  
  8919. Syntax
  8920. Parameters
  8921. Remarks
  8922. Glossary
  8923.  
  8924.  
  8925. ΓòÉΓòÉΓòÉ 2.55. Set Fractional Line Width/Push and Set Fractional Line Width ΓòÉΓòÉΓòÉ
  8926.  
  8927.  
  8928. ΓòÉΓòÉΓòÉ <hidden> Set Fractional Line Width/Push and Set Fractional Line Width - Syntax ΓòÉΓòÉΓòÉ
  8929.  
  8930. These orders set, or push and set, the value of the current line-width 
  8931. attribute. 
  8932.  
  8933. Set Fractional Line Width (GSFLW) 
  8934. X'11' (LEN, LINEWIDTH) 
  8935.  
  8936. Push and Set Fractional Line Width (GPSFLW) 
  8937. X'51' (LEN, LINEWIDTH) 
  8938.  
  8939.  
  8940. ΓòÉΓòÉΓòÉ <hidden> GSFLW/GPSFLW Parameter - LEN ΓòÉΓòÉΓòÉ
  8941.  
  8942.  LEN (GLENGTH1) 
  8943.     Length of following data. 
  8944.  
  8945.     0x02    Only valid value. 
  8946.  
  8947.  
  8948. ΓòÉΓòÉΓòÉ <hidden> GSFLW/GPSFLW Parameter - LINEWIDTH ΓòÉΓòÉΓòÉ
  8949.  
  8950.  LINEWIDTH (GROUFS) 
  8951.     Value for the line-width attribute. 
  8952.  
  8953.     The nonzero value is an integral and fractional multiplier of the normal 
  8954.     line width: 
  8955.  
  8956.     0x0000            Drawing default 
  8957.     0x0001-0xFFFF     Multiplier of normal line width. 
  8958.  
  8959.  
  8960. ΓòÉΓòÉΓòÉ <hidden> Set Fractional Line Width/Push and Set Fractional Line Width - Parameters ΓòÉΓòÉΓòÉ
  8961.  
  8962.  LEN (GLENGTH1) 
  8963.     Length of following data. 
  8964.  
  8965.     0x02    Only valid value. 
  8966.  
  8967.  LINEWIDTH (GROUFS) 
  8968.     Value for the line-width attribute. 
  8969.  
  8970.     The nonzero value is an integral and fractional multiplier of the normal 
  8971.     line width: 
  8972.  
  8973.     0x0000            Drawing default 
  8974.     0x0001-0xFFFF     Multiplier of normal line width. 
  8975.  
  8976.  
  8977. ΓòÉΓòÉΓòÉ <hidden> Set Fractional Line Width/Push and Set Fractional Line Width - Remarks ΓòÉΓòÉΓòÉ
  8978.  
  8979. The value of the current line-width attribute is pushed on to the Segment Call 
  8980. Stack by the Push and Set order only. Both orders then set the value of the 
  8981. current line-width attribute to the value in the order. 
  8982.  
  8983.  
  8984. ΓòÉΓòÉΓòÉ <hidden> Set Fractional Line Width/Push and Set Fractional Line Width - Topics ΓòÉΓòÉΓòÉ
  8985.  
  8986. Select an item: 
  8987.  
  8988. Syntax
  8989. Parameters
  8990. Remarks
  8991. Glossary
  8992.  
  8993.  
  8994. ΓòÉΓòÉΓòÉ 2.56. Set Indexed Color/Push and Set Indexed Color ΓòÉΓòÉΓòÉ
  8995.  
  8996.  
  8997. ΓòÉΓòÉΓòÉ <hidden> Set Indexed Color/Push and Set Indexed Color - Syntax ΓòÉΓòÉΓòÉ
  8998.  
  8999. These orders set, or push and set, the value of the current color attribute. 
  9000.  
  9001. Set Indexed Color (GSICOL) 
  9002. X'A6' (LEN, FLAGS, INDEX) 
  9003.  
  9004. Push and Set Indexed Color (GPSICOL) 
  9005. X'E6' (LEN, FLAGS, INDEX) 
  9006.  
  9007.  
  9008. ΓòÉΓòÉΓòÉ <hidden> GSICOL/GPSICOL Parameter - LEN ΓòÉΓòÉΓòÉ
  9009.  
  9010.  LEN (GLENGTH1) 
  9011.     Length of following data. 
  9012.  
  9013.     0x04    Only valid value. 
  9014.  
  9015.  
  9016. ΓòÉΓòÉΓòÉ <hidden> GSICOL/GPSICOL Parameter - FLAGS ΓòÉΓòÉΓòÉ
  9017.  
  9018.  FLAGS 
  9019.     Values: 
  9020.  
  9021.     DEFAULT (GBIT1) 
  9022.              Options: 
  9023.  
  9024.              0       Use specified index 
  9025.              1       Use drawing default color. 
  9026.  
  9027.     SPEC (GBIT1) 
  9028.              Options: 
  9029.  
  9030.              0       Use index directly 
  9031.              1       Special value. 
  9032.  
  9033.     RES (GBIT6) 
  9034.              Reserved value, must be 0. 
  9035.  
  9036.  
  9037. ΓòÉΓòÉΓòÉ <hidden> GSICOL/GPSICOL Parameter - INDEX ΓòÉΓòÉΓòÉ
  9038.  
  9039.  INDEX (GINDEX3) 
  9040.     Value for color index. 
  9041.  
  9042.     The value is a direct index into the current color table or a special 
  9043.     value. 
  9044.  
  9045.     The table can be the standard table, or one loaded by the user. The special 
  9046.     values are: 
  9047.  
  9048.     1 
  9049.             Black 
  9050.     2 
  9051.             White 
  9052.     4 
  9053.             All ones 
  9054.     5 
  9055.             All zeros. 
  9056.  
  9057.  
  9058. ΓòÉΓòÉΓòÉ <hidden> Set Indexed Color/Push and Set Indexed Color - Parameters ΓòÉΓòÉΓòÉ
  9059.  
  9060.  LEN (GLENGTH1) 
  9061.     Length of following data. 
  9062.  
  9063.     0x04    Only valid value. 
  9064.  
  9065.  FLAGS 
  9066.     Values: 
  9067.  
  9068.     DEFAULT (GBIT1) 
  9069.              Options: 
  9070.  
  9071.              0       Use specified index 
  9072.              1       Use drawing default color. 
  9073.  
  9074.     SPEC (GBIT1) 
  9075.              Options: 
  9076.  
  9077.              0       Use index directly 
  9078.              1       Special value. 
  9079.  
  9080.     RES (GBIT6) 
  9081.              Reserved value, must be 0. 
  9082.  
  9083.  INDEX (GINDEX3) 
  9084.     Value for color index. 
  9085.  
  9086.     The value is a direct index into the current color table or a special 
  9087.     value. 
  9088.  
  9089.     The table can be the standard table, or one loaded by the user. The special 
  9090.     values are: 
  9091.  
  9092.     1 
  9093.             Black 
  9094.     2 
  9095.             White 
  9096.     4 
  9097.             All ones 
  9098.     5 
  9099.             All zeros. 
  9100.  
  9101.  
  9102. ΓòÉΓòÉΓòÉ <hidden> Set Indexed Color/Push and Set Indexed Color - Remarks ΓòÉΓòÉΓòÉ
  9103.  
  9104. The value of the current color attribute is pushed on to the Segment Call Stack 
  9105. by the Push and Set order only. Both orders then set the value of the current 
  9106. color attribute to the value in the order. 
  9107.  
  9108.  
  9109. ΓòÉΓòÉΓòÉ <hidden> Set Indexed Color/Push and Set Indexed Color - Topics ΓòÉΓòÉΓòÉ
  9110.  
  9111. Select an item: 
  9112.  
  9113. Syntax
  9114. Parameters
  9115. Remarks
  9116. Glossary
  9117.  
  9118.  
  9119. ΓòÉΓòÉΓòÉ 2.57. Set Individual Attribute/Push and Set Individual Attribute ΓòÉΓòÉΓòÉ
  9120.  
  9121.  
  9122. ΓòÉΓòÉΓòÉ <hidden> Set Individual Attribute/Push and Set Individual Attribute - Syntax ΓòÉΓòÉΓòÉ
  9123.  
  9124. These orders set, or push and set, the value of the color, background color, 
  9125. mix, or background mix attribute for the line character, marker, pattern, or 
  9126. image primitive type. 
  9127.  
  9128. Set Individual Attribute (GSIA) 
  9129. X'14' (LEN, ATYPE, PTYPE, FLAG1, VAL) 
  9130.  
  9131. Push and Set Individual Attribute (GPSIA) 
  9132. X'54' (LEN, ATYPE, PTYPE, FLAG1, VAL) 
  9133.  
  9134.  
  9135. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - LEN ΓòÉΓòÉΓòÉ
  9136.  
  9137.  LEN (GLENGTH1) 
  9138.     Length of following data. 
  9139.  
  9140.  
  9141. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - ATYPE ΓòÉΓòÉΓòÉ
  9142.  
  9143.  ATYPE (GBIT8) 
  9144.     Attribute type: 
  9145.  
  9146.     0x1        Color 
  9147.     0x2        Background color 
  9148.     0x3        Mix 
  9149.     0x4        Background Mix 
  9150.     Other      All other values are reserved. 
  9151.  
  9152.  
  9153. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - PTYPE ΓòÉΓòÉΓòÉ
  9154.  
  9155.  PTYPE (GBIT8) 
  9156.     Primitive type: 
  9157.  
  9158.     0x1 
  9159.             Line 
  9160.     0x2 
  9161.             Character 
  9162.     0x3 
  9163.             Marker 
  9164.     0x4 
  9165.             Pattern 
  9166.     0x5 
  9167.             Image 
  9168.     Other 
  9169.             All other values are reserved. 
  9170.  
  9171.  
  9172. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - FLAG1 ΓòÉΓòÉΓòÉ
  9173.  
  9174.  FLAG1 
  9175.     Values: 
  9176.  
  9177.     DEFAULT (GBIT1) 
  9178.              Options: 
  9179.  
  9180.              0 
  9181.                      Use specified value 
  9182.              1 
  9183.                      Use drawing default color. 
  9184.  
  9185.     SPEC (GBIT1) 
  9186.              Options: 
  9187.  
  9188.              0 
  9189.                      Use value directly 
  9190.              1 
  9191.                      Special Value. 
  9192.  
  9193.     RES (GBIT6) 
  9194.              Reserved value, must be 0. 
  9195.  
  9196.  
  9197. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - VAL ΓòÉΓòÉΓòÉ
  9198.  
  9199.  VAL (GINDATT) 
  9200.     Color index value. 
  9201.  
  9202.     For colors, the value is a direct index into the current color table or a 
  9203.     special value. 
  9204.  
  9205.     The table can be the standard table, or one loaded by the user. The special 
  9206.     values are: 
  9207.  
  9208.     1 
  9209.             Black 
  9210.     2 
  9211.             White 
  9212.     4 
  9213.             All ones 
  9214.     5 
  9215.             All zeros. 
  9216.  
  9217.  
  9218. ΓòÉΓòÉΓòÉ <hidden> Set Individual Attribute/Push and Set Individual Attribute - Parameters ΓòÉΓòÉΓòÉ
  9219.  
  9220.  LEN (GLENGTH1) 
  9221.     Length of following data. 
  9222.  
  9223.  ATYPE (GBIT8) 
  9224.     Attribute type: 
  9225.  
  9226.     0x1        Color 
  9227.     0x2        Background color 
  9228.     0x3        Mix 
  9229.     0x4        Background Mix 
  9230.     Other      All other values are reserved. 
  9231.  
  9232.  PTYPE (GBIT8) 
  9233.     Primitive type: 
  9234.  
  9235.     0x1 
  9236.             Line 
  9237.     0x2 
  9238.             Character 
  9239.     0x3 
  9240.             Marker 
  9241.     0x4 
  9242.             Pattern 
  9243.     0x5 
  9244.             Image 
  9245.     Other 
  9246.             All other values are reserved. 
  9247.  
  9248.  FLAG1 
  9249.     Values: 
  9250.  
  9251.     DEFAULT (GBIT1) 
  9252.              Options: 
  9253.  
  9254.              0 
  9255.                      Use specified value 
  9256.              1 
  9257.                      Use drawing default color. 
  9258.  
  9259.     SPEC (GBIT1) 
  9260.              Options: 
  9261.  
  9262.              0 
  9263.                      Use value directly 
  9264.              1 
  9265.                      Special Value. 
  9266.  
  9267.     RES (GBIT6) 
  9268.              Reserved value, must be 0. 
  9269.  
  9270.  VAL (GINDATT) 
  9271.     Color index value. 
  9272.  
  9273.     For colors, the value is a direct index into the current color table or a 
  9274.     special value. 
  9275.  
  9276.     The table can be the standard table, or one loaded by the user. The special 
  9277.     values are: 
  9278.  
  9279.     1 
  9280.             Black 
  9281.     2 
  9282.             White 
  9283.     4 
  9284.             All ones 
  9285.     5 
  9286.             All zeros. 
  9287.  
  9288.  
  9289. ΓòÉΓòÉΓòÉ <hidden> Set Individual Attribute/Push and Set Individual Attribute - Remarks ΓòÉΓòÉΓòÉ
  9290.  
  9291. The value of the current attribute is pushed on to the Segment Call Stack by 
  9292. the Push and Set order only. Both orders then set the value of the individual 
  9293. attribute to the value in the order. 
  9294.  
  9295.  
  9296. ΓòÉΓòÉΓòÉ <hidden> Set Individual Attribute/Push and Set Individual Attribute - Topics ΓòÉΓòÉΓòÉ
  9297.  
  9298. Select an item: 
  9299.  
  9300. Syntax
  9301. Parameters
  9302. Remarks
  9303. Glossary
  9304.  
  9305.  
  9306. ΓòÉΓòÉΓòÉ 2.58. Set Line End/Push and Set Line End ΓòÉΓòÉΓòÉ
  9307.  
  9308.  
  9309. ΓòÉΓòÉΓòÉ <hidden> Set Line End/Push and Set Line End - Syntax ΓòÉΓòÉΓòÉ
  9310.  
  9311. These orders set, or push and set, the value of the current line-end attribute. 
  9312.  
  9313. Set Line End (GSLE) 
  9314. X'1A' (LINEEND) 
  9315.  
  9316. Push and Set Line End (GPSLE) 
  9317. X'5A' (LINEEND) 
  9318.  
  9319.  
  9320. ΓòÉΓòÉΓòÉ <hidden> GSLE/GPSLE Parameter - LINEEND ΓòÉΓòÉΓòÉ
  9321.  
  9322.  LINEEND (GBIT8) 
  9323.     Value for the line-end attribute: 
  9324.  
  9325.     0x00       Drawing default 
  9326.     0x01       Flat 
  9327.     0x02       Square 
  9328.     0x03       Round 
  9329.     Other      Reserved values. 
  9330.  
  9331.  
  9332. ΓòÉΓòÉΓòÉ <hidden> Set Line End/Push and Set Line End - Parameters ΓòÉΓòÉΓòÉ
  9333.  
  9334.  LINEEND (GBIT8) 
  9335.     Value for the line-end attribute: 
  9336.  
  9337.     0x00       Drawing default 
  9338.     0x01       Flat 
  9339.     0x02       Square 
  9340.     0x03       Round 
  9341.     Other      Reserved values. 
  9342.  
  9343.  
  9344. ΓòÉΓòÉΓòÉ <hidden> Set Line End/Push and Set Line End - Remarks ΓòÉΓòÉΓòÉ
  9345.  
  9346. The value of the current line-end attribute is pushed on to the Segment Call 
  9347. Stack by the Push and Set order only. Both orders then set the value of the 
  9348. current line-end attribute to the value in the order. 
  9349.  
  9350.  
  9351. ΓòÉΓòÉΓòÉ <hidden> Set Line End/Push and Set Line End - Topics ΓòÉΓòÉΓòÉ
  9352.  
  9353. Select an item: 
  9354.  
  9355. Syntax
  9356. Parameters
  9357. Remarks
  9358. Glossary
  9359.  
  9360.  
  9361. ΓòÉΓòÉΓòÉ 2.59. Set Line Join/Push and Set Line Join ΓòÉΓòÉΓòÉ
  9362.  
  9363.  
  9364. ΓòÉΓòÉΓòÉ <hidden> Set Line Join/Push and Set Line Join - Syntax ΓòÉΓòÉΓòÉ
  9365.  
  9366. These orders set the value of the current line-join attribute. 
  9367.  
  9368. Set Line Join (GSLJ) 
  9369. X'1B' (LINEJOIN) 
  9370.  
  9371. Push and Set Line Join (GPSLJ) 
  9372. X'5B' (LINEJOIN) 
  9373.  
  9374.  
  9375. ΓòÉΓòÉΓòÉ <hidden> GSLJ/GPSLJ Parameter - LINEJOIN ΓòÉΓòÉΓòÉ
  9376.  
  9377.  LINEJOIN (GBIT8) 
  9378.     Value for line-join attribute: 
  9379.  
  9380.     0x00       Drawing default 
  9381.     0x01       Bevel 
  9382.     0x02       Round 
  9383.     0x03       Miter 
  9384.     Other      Reserved values. 
  9385.  
  9386.  
  9387. ΓòÉΓòÉΓòÉ <hidden> Set Line Join/Push and Set Line Join - Parameters ΓòÉΓòÉΓòÉ
  9388.  
  9389.  LINEJOIN (GBIT8) 
  9390.     Value for line-join attribute: 
  9391.  
  9392.     0x00       Drawing default 
  9393.     0x01       Bevel 
  9394.     0x02       Round 
  9395.     0x03       Miter 
  9396.     Other      Reserved values. 
  9397.  
  9398.  
  9399. ΓòÉΓòÉΓòÉ <hidden> Set Line Join/Push and Set Line Join - Remarks ΓòÉΓòÉΓòÉ
  9400.  
  9401. The value of the current line-join attribute is pushed on to the Segment Call 
  9402. stack by the Push and Set order only. Both orders then set the value of the 
  9403. current line-join attribute to the value in the order. 
  9404.  
  9405.  
  9406. ΓòÉΓòÉΓòÉ <hidden> Set Line Join/Push and Set Line Join - Topics ΓòÉΓòÉΓòÉ
  9407.  
  9408. Select an item: 
  9409.  
  9410. Syntax
  9411. Parameters
  9412. Remarks
  9413. Glossary
  9414.  
  9415.  
  9416. ΓòÉΓòÉΓòÉ 2.60. Set Line Type/Push and Set Line Type ΓòÉΓòÉΓòÉ
  9417.  
  9418.  
  9419. ΓòÉΓòÉΓòÉ <hidden> Set Line Type/Push and Set Line Type - Syntax ΓòÉΓòÉΓòÉ
  9420.  
  9421. These orders set, or push and set, the value of the current line-type 
  9422. attribute. 
  9423.  
  9424. Set Line Type (GSLT) 
  9425. X'18' (LINETYPE) 
  9426.  
  9427. Push and Set Line Type (GPSLT) 
  9428. X'58' (LINETYPE) 
  9429.  
  9430.  
  9431. ΓòÉΓòÉΓòÉ <hidden> GSLT/GPSLT Parameter - LINETYPE ΓòÉΓòÉΓòÉ
  9432.  
  9433.  LINETYPE (GBIT8) 
  9434.     Value for line-type attribute. 
  9435.  
  9436.     The value is an index into a notational line-type table: 
  9437.  
  9438.     0x00       Drawing default 
  9439.     0x01       Dotted line 
  9440.     0x02       Short dashed line 
  9441.     0x03       Dash-dot line 
  9442.     0x04       Double dotted line 
  9443.     0x05       Long dashed line 
  9444.     0x06       Dash-double-dot line 
  9445.     0x07       Solid line 
  9446.     0x08       Invisible line 
  9447.     Other      Reserved values. 
  9448.  
  9449.  
  9450. ΓòÉΓòÉΓòÉ <hidden> Set Line Type/Push and Set Line Type - Parameters ΓòÉΓòÉΓòÉ
  9451.  
  9452.  LINETYPE (GBIT8) 
  9453.     Value for line-type attribute. 
  9454.  
  9455.     The value is an index into a notational line-type table: 
  9456.  
  9457.     0x00       Drawing default 
  9458.     0x01       Dotted line 
  9459.     0x02       Short dashed line 
  9460.     0x03       Dash-dot line 
  9461.     0x04       Double dotted line 
  9462.     0x05       Long dashed line 
  9463.     0x06       Dash-double-dot line 
  9464.     0x07       Solid line 
  9465.     0x08       Invisible line 
  9466.     Other      Reserved values. 
  9467.  
  9468.  
  9469. ΓòÉΓòÉΓòÉ <hidden> Set Line Type/Push and Set Line Type - Remarks ΓòÉΓòÉΓòÉ
  9470.  
  9471. The value of the current line-type attribute is pushed on to the Segment Call 
  9472. Stack by the Push and Set order only. Both orders then set the value of the 
  9473. current line-type attribute to the value in the order. 
  9474.  
  9475.  
  9476. ΓòÉΓòÉΓòÉ <hidden> Set Line Type/Push and Set Line Type - Topics ΓòÉΓòÉΓòÉ
  9477.  
  9478. Select an item: 
  9479.  
  9480. Syntax
  9481. Parameters
  9482. Remarks
  9483. Glossary
  9484.  
  9485.  
  9486. ΓòÉΓòÉΓòÉ 2.61. Set Line Width/Push and Set Line Width ΓòÉΓòÉΓòÉ
  9487.  
  9488.  
  9489. ΓòÉΓòÉΓòÉ <hidden> Set Line Width/Push and Set Line Width - Syntax ΓòÉΓòÉΓòÉ
  9490.  
  9491. These orders set, or push and set, the value of the current line-width 
  9492. attribute to the value specified in the order. 
  9493.  
  9494. Set Line Width (GSLW) 
  9495. X'19' (LINEWIDTH) 
  9496.  
  9497. Push and Set Line Width (GPSLW) 
  9498. X'59' (LINEWIDTH) 
  9499.  
  9500.  
  9501. ΓòÉΓòÉΓòÉ <hidden> GSLW/GPSLW Parameter - LINEWIDTH ΓòÉΓòÉΓòÉ
  9502.  
  9503.  LINEWIDTH (GBIT8) 
  9504.     Value for line-width attribute: 
  9505.  
  9506.     0x00          Drawing default 
  9507.     0x01-0xFF     Integral multiplier of normal line width. 
  9508.  
  9509.  
  9510. ΓòÉΓòÉΓòÉ <hidden> Set Line Width/Push and Set Line Width - Parameters ΓòÉΓòÉΓòÉ
  9511.  
  9512.  LINEWIDTH (GBIT8) 
  9513.     Value for line-width attribute: 
  9514.  
  9515.     0x00          Drawing default 
  9516.     0x01-0xFF     Integral multiplier of normal line width. 
  9517.  
  9518.  
  9519. ΓòÉΓòÉΓòÉ <hidden> Set Line Width/Push and Set Line Width - Remarks ΓòÉΓòÉΓòÉ
  9520.  
  9521. The value of the current line-width attribute is pushed on to the Segment Call 
  9522. stack by the Push and Set order only. Both orders then set the value of the 
  9523. current line-width attribute to the value in the order. 
  9524.  
  9525.  
  9526. ΓòÉΓòÉΓòÉ <hidden> Set Line Width/Push and Set Line Width - Topics ΓòÉΓòÉΓòÉ
  9527.  
  9528. Select an item: 
  9529.  
  9530. Syntax
  9531. Parameters
  9532. Remarks
  9533. Glossary
  9534.  
  9535.  
  9536. ΓòÉΓòÉΓòÉ 2.62. Set Marker Cell/Push and Set Marker Cell ΓòÉΓòÉΓòÉ
  9537.  
  9538.  
  9539. ΓòÉΓòÉΓòÉ <hidden> Set Marker Cell/Push and Set Marker Cell - Syntax ΓòÉΓòÉΓòÉ
  9540.  
  9541. These orders set, or push and set, the value of the current marker cell-size 
  9542. attribute. 
  9543.  
  9544. Set Marker Cell (GSMC) 
  9545. X'37' (LEN, CELLX, CELLY, FLAGS, RES) 
  9546.  
  9547. Push and Set Marker Cell (GPSMC) 
  9548. X'77' (LEN, CELLX, CELLY, FLAGS, RES) 
  9549.  
  9550.  
  9551. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - LEN ΓòÉΓòÉΓòÉ
  9552.  
  9553.  LEN (GLENGTH1) 
  9554.     Length of following data. 
  9555.  
  9556.  
  9557. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - CELLX ΓòÉΓòÉΓòÉ
  9558.  
  9559.  CELLX (GROSOL) 
  9560.     X part of marker cell-size attribute. 
  9561.  
  9562.  
  9563. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - CELLY ΓòÉΓòÉΓòÉ
  9564.  
  9565.  CELLY (GROSOL) 
  9566.     Y part of marker cell-size attribute. 
  9567.  
  9568.  
  9569. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - FLAGS ΓòÉΓòÉΓòÉ
  9570.  
  9571.  FLAGS 
  9572.     This is an optional extension. 
  9573.  
  9574.     Values: 
  9575.  
  9576.     NOTDEFLT (GBIT1) 
  9577.              Options: 
  9578.  
  9579.              0       A cell size of zero sets drawing default 
  9580.              1       A cell size of zero sets to zero. 
  9581.  
  9582.     RES (GBIT7) 
  9583.              Reserved value, must be 0. 
  9584.  
  9585.  
  9586. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - RES ΓòÉΓòÉΓòÉ
  9587.  
  9588.  RES (GBIT8) 
  9589.     Reserved value, must be 0. 
  9590.  
  9591.  
  9592. ΓòÉΓòÉΓòÉ <hidden> Set Marker Cell/Push and Set Marker Cell - Parameters ΓòÉΓòÉΓòÉ
  9593.  
  9594.  LEN (GLENGTH1) 
  9595.     Length of following data. 
  9596.  
  9597.  CELLX (GROSOL) 
  9598.     X part of marker cell-size attribute. 
  9599.  
  9600.  CELLY (GROSOL) 
  9601.     Y part of marker cell-size attribute. 
  9602.  
  9603.  FLAGS 
  9604.     This is an optional extension. 
  9605.  
  9606.     Values: 
  9607.  
  9608.     NOTDEFLT (GBIT1) 
  9609.              Options: 
  9610.  
  9611.              0       A cell size of zero sets drawing default 
  9612.              1       A cell size of zero sets to zero. 
  9613.  
  9614.     RES (GBIT7) 
  9615.              Reserved value, must be 0. 
  9616.  
  9617.  RES (GBIT8) 
  9618.     Reserved value, must be 0. 
  9619.  
  9620.  
  9621. ΓòÉΓòÉΓòÉ <hidden> Set Marker Cell/Push and Set Marker Cell - Remarks ΓòÉΓòÉΓòÉ
  9622.  
  9623. The value of the current marker cell-size attribute is pushed on to the Segment 
  9624. Call stack by the Push and Set order only. Both orders then set the value of 
  9625. the current marker cell-size attribute to the value in the order. 
  9626.  
  9627.  
  9628. ΓòÉΓòÉΓòÉ <hidden> Set Marker Cell/Push and Set Marker Cell - Topics ΓòÉΓòÉΓòÉ
  9629.  
  9630. Select an item: 
  9631.  
  9632. Syntax
  9633. Parameters
  9634. Remarks
  9635. Glossary
  9636.  
  9637.  
  9638. ΓòÉΓòÉΓòÉ 2.63. Set Marker Precision/Push and Set Marker Precision ΓòÉΓòÉΓòÉ
  9639.  
  9640.  
  9641. ΓòÉΓòÉΓòÉ <hidden> Set Marker Precision/Push and Set Marker Precision - Syntax ΓòÉΓòÉΓòÉ
  9642.  
  9643. These orders set, or push and set, the value of the current marker-precision 
  9644. attribute. 
  9645.  
  9646. Set Marker Precision (GSMP) 
  9647. X'3B' (PREC) 
  9648.  
  9649. Push and Set Marker Precision (GPSMP) 
  9650. X'7B' (PREC) 
  9651.  
  9652.  
  9653. ΓòÉΓòÉΓòÉ <hidden> GSMP/GPSMP Parameter - PREC ΓòÉΓòÉΓòÉ
  9654.  
  9655.  PREC (GBIT8) 
  9656.     Value for marker-precision attribute: 
  9657.  
  9658.     0x00       Drawing default 
  9659.     0x01       String precision 
  9660.     0x02       Character precision 
  9661.     0x03       Stroke precision 
  9662.     Other      Reserved values. 
  9663.  
  9664.  
  9665. ΓòÉΓòÉΓòÉ <hidden> Set Marker Precision/Push and Set Marker Precision - Parameters ΓòÉΓòÉΓòÉ
  9666.  
  9667.  PREC (GBIT8) 
  9668.     Value for marker-precision attribute: 
  9669.  
  9670.     0x00       Drawing default 
  9671.     0x01       String precision 
  9672.     0x02       Character precision 
  9673.     0x03       Stroke precision 
  9674.     Other      Reserved values. 
  9675.  
  9676.  
  9677. ΓòÉΓòÉΓòÉ <hidden> Set Marker Precision/Push and Set Marker Precision - Remarks ΓòÉΓòÉΓòÉ
  9678.  
  9679. The value of the current marker-precision attribute is pushed on to the Segment 
  9680. Call stack by the Push and Set order only. Both orders then set the value of 
  9681. the current-marker precision attribute to the value in the order. 
  9682.  
  9683.  
  9684. ΓòÉΓòÉΓòÉ <hidden> Set Marker Precision/Push and Set Marker Precision - Topics ΓòÉΓòÉΓòÉ
  9685.  
  9686. Select an item: 
  9687.  
  9688. Syntax
  9689. Parameters
  9690. Remarks
  9691. Glossary
  9692.  
  9693.  
  9694. ΓòÉΓòÉΓòÉ 2.64. Set Marker Set/Push and Set Marker Set ΓòÉΓòÉΓòÉ
  9695.  
  9696.  
  9697. ΓòÉΓòÉΓòÉ <hidden> Set Marker Set/Push and Set Marker Set - Syntax ΓòÉΓòÉΓòÉ
  9698.  
  9699. These orders set, or push and set, the value of the current marker symbol-set 
  9700. attribute. 
  9701.  
  9702. Set Marker Set (GSMS) 
  9703. X'3C' (LCID) 
  9704.  
  9705. Push and Set Marker Set (GPSMS) 
  9706. X'7C' (LCID) 
  9707.  
  9708.  
  9709. ΓòÉΓòÉΓòÉ <hidden> GSMS/GPSMS Parameter - LCID ΓòÉΓòÉΓòÉ
  9710.  
  9711.  LCID (GUCHAR) 
  9712.     Local identifier (LCID) for the marker set: 
  9713.  
  9714.     0x00          Drawing default 
  9715.     0x01-0xFE     LCID for the coded font 
  9716.     0xFF          Special marker set. 
  9717.  
  9718.  
  9719. ΓòÉΓòÉΓòÉ <hidden> Set Marker Set/Push and Set Marker Set - Parameters ΓòÉΓòÉΓòÉ
  9720.  
  9721.  LCID (GUCHAR) 
  9722.     Local identifier (LCID) for the marker set: 
  9723.  
  9724.     0x00          Drawing default 
  9725.     0x01-0xFE     LCID for the coded font 
  9726.     0xFF          Special marker set. 
  9727.  
  9728.  
  9729. ΓòÉΓòÉΓòÉ <hidden> Set Marker Set/Push and Set Marker Set - Remarks ΓòÉΓòÉΓòÉ
  9730.  
  9731. The value of the current marker symbol-set attribute is pushed on to the 
  9732. Segment Call stack by the Push and Set order only. Both orders then set the 
  9733. value of the current marker symbol-set attribute to the value in the order. 
  9734.  
  9735.  
  9736. ΓòÉΓòÉΓòÉ <hidden> Set Marker Set/Push and Set Marker Set - Topics ΓòÉΓòÉΓòÉ
  9737.  
  9738. Select an item: 
  9739.  
  9740. Syntax
  9741. Parameters
  9742. Remarks
  9743. Glossary
  9744.  
  9745.  
  9746. ΓòÉΓòÉΓòÉ 2.65. Set Marker Symbol/Push and Set Marker Symbol ΓòÉΓòÉΓòÉ
  9747.  
  9748.  
  9749. ΓòÉΓòÉΓòÉ <hidden> Set Marker Symbol/Push and Set Marker Symbol - Syntax ΓòÉΓòÉΓòÉ
  9750.  
  9751. These orders set, or push and set, the value of the current marker symbol 
  9752. attribute. 
  9753.  
  9754. Set Marker Symbol (GSMT) 
  9755. X'29' (N) 
  9756.  
  9757. Push and Set Marker Symbol (GPSMT) 
  9758. X'69' (N) 
  9759.  
  9760.  
  9761. ΓòÉΓòÉΓòÉ <hidden> GSMT/GPSMT Parameter - N ΓòÉΓòÉΓòÉ
  9762.  
  9763.  N (GBIT8) 
  9764.     Value of marker symbol code point. Special marker set 
  9765.  
  9766.     When this is selected (lcid = 0xFF), the values are: 
  9767.  
  9768.     0x00 
  9769.             Drawing default 
  9770.     0x01 
  9771.             Cross 
  9772.     0x02 
  9773.             Plus 
  9774.     0x03 
  9775.             Diamond 
  9776.     0x04 
  9777.             Square 
  9778.     0x05 
  9779.             6-point star 
  9780.     0x06 
  9781.             8-point star 
  9782.     0x07 
  9783.             Filled diamond 
  9784.     0x08 
  9785.             Filled square 
  9786.     0x09 
  9787.             Dot 
  9788.     0x0A 
  9789.             Small circle 
  9790.     0x40 
  9791.             Blank 
  9792.     Other 
  9793.             Reserved values. 
  9794.  Marker set 
  9795.  
  9796.             Values are as follows for any other set: 
  9797.     0x00 
  9798.             Drawing default 
  9799.     0x01-0xFF 
  9800.             These are the code points into the current marker set. 
  9801.  
  9802.  
  9803. ΓòÉΓòÉΓòÉ <hidden> Set Marker Symbol/Push and Set Marker Symbol - Parameters ΓòÉΓòÉΓòÉ
  9804.  
  9805.  N (GBIT8) 
  9806.     Value of marker symbol code point. Special marker set 
  9807.  
  9808.     When this is selected (lcid = 0xFF), the values are: 
  9809.  
  9810.     0x00 
  9811.             Drawing default 
  9812.     0x01 
  9813.             Cross 
  9814.     0x02 
  9815.             Plus 
  9816.     0x03 
  9817.             Diamond 
  9818.     0x04 
  9819.             Square 
  9820.     0x05 
  9821.             6-point star 
  9822.     0x06 
  9823.             8-point star 
  9824.     0x07 
  9825.             Filled diamond 
  9826.     0x08 
  9827.             Filled square 
  9828.     0x09 
  9829.             Dot 
  9830.     0x0A 
  9831.             Small circle 
  9832.     0x40 
  9833.             Blank 
  9834.     Other 
  9835.             Reserved values. 
  9836.  Marker set 
  9837.  
  9838.             Values are as follows for any other set: 
  9839.     0x00 
  9840.             Drawing default 
  9841.     0x01-0xFF 
  9842.             These are the code points into the current marker set. 
  9843.  
  9844.  
  9845. ΓòÉΓòÉΓòÉ <hidden> Set Marker Symbol/Push and Set Marker Symbol - Remarks ΓòÉΓòÉΓòÉ
  9846.  
  9847. The value of the current marker symbol attribute is pushed on to the Segment 
  9848. Call Stack by the Push and Set order only. Both orders then set the value of 
  9849. the current marker symbol attribute to the value in the order. 
  9850.  
  9851.  
  9852. ΓòÉΓòÉΓòÉ <hidden> Set Marker Symbol/Push and Set Marker Symbol - Topics ΓòÉΓòÉΓòÉ
  9853.  
  9854. Select an item: 
  9855.  
  9856. Syntax
  9857. Parameters
  9858. Remarks
  9859. Glossary
  9860.  
  9861.  
  9862. ΓòÉΓòÉΓòÉ 2.66. Set Mix/Push and Set Mix ΓòÉΓòÉΓòÉ
  9863.  
  9864.  
  9865. ΓòÉΓòÉΓòÉ <hidden> Set Mix/Push and Set Mix - Syntax ΓòÉΓòÉΓòÉ
  9866.  
  9867. These orders set, or push and set, the value of the current mix attribute. 
  9868.  
  9869. Set Mix (GSMX) 
  9870. X'0C' (MODE) 
  9871.  
  9872. Push and Set Mix (GPSMX) 
  9873. X'4C' (MODE) 
  9874.  
  9875.  
  9876. ΓòÉΓòÉΓòÉ <hidden> GSMX/GPSMX Parameter - MODE ΓòÉΓòÉΓòÉ
  9877.  
  9878.  MODE (GBIT8) 
  9879.     Mix-mode value: 
  9880.  
  9881.     0x00       Drawing default 
  9882.     0x01       OR 
  9883.     0x02       Overpaint 
  9884.     0x03       Reserved 
  9885.     0x04       Exclusive-OR 
  9886.     0x05       Leave alone 
  9887.     0x06       AND 
  9888.     0x07       Subtract 
  9889.     0x08       Source AND (inverse destination) 
  9890.     0x09       All zeros 
  9891.     0x0A       Inverse (source OR destination) 
  9892.     0x0B       Inverse (source XOR destination) 
  9893.     0x0C       Inverse destination 
  9894.     0x0D       Source OR (inverse destination) 
  9895.     0x0E       Inverse source 
  9896.     0x0F       (Inverse source) OR destination 
  9897.     0x10       Inverse (source AND destination) 
  9898.     0x11       All ones. 
  9899.     Other      Reserved values. 
  9900.  
  9901.  
  9902. ΓòÉΓòÉΓòÉ <hidden> Set Mix/Push and Set Mix - Parameters ΓòÉΓòÉΓòÉ
  9903.  
  9904.  MODE (GBIT8) 
  9905.     Mix-mode value: 
  9906.  
  9907.     0x00       Drawing default 
  9908.     0x01       OR 
  9909.     0x02       Overpaint 
  9910.     0x03       Reserved 
  9911.     0x04       Exclusive-OR 
  9912.     0x05       Leave alone 
  9913.     0x06       AND 
  9914.     0x07       Subtract 
  9915.     0x08       Source AND (inverse destination) 
  9916.     0x09       All zeros 
  9917.     0x0A       Inverse (source OR destination) 
  9918.     0x0B       Inverse (source XOR destination) 
  9919.     0x0C       Inverse destination 
  9920.     0x0D       Source OR (inverse destination) 
  9921.     0x0E       Inverse source 
  9922.     0x0F       (Inverse source) OR destination 
  9923.     0x10       Inverse (source AND destination) 
  9924.     0x11       All ones. 
  9925.     Other      Reserved values. 
  9926.  
  9927.  
  9928. ΓòÉΓòÉΓòÉ <hidden> Set Mix/Push and Set Mix - Remarks ΓòÉΓòÉΓòÉ
  9929.  
  9930. The value of the current mix attribute is pushed on to the Segment Call stack 
  9931. by the Push and Set order only. Both orders then set the value of the current 
  9932. mix attribute to the value in the order. 
  9933.  
  9934.  
  9935. ΓòÉΓòÉΓòÉ <hidden> Set Mix/Push and Set Mix - Topics ΓòÉΓòÉΓòÉ
  9936.  
  9937. Select an item: 
  9938.  
  9939. Syntax
  9940. Parameters
  9941. Remarks
  9942. Glossary
  9943.  
  9944.  
  9945. ΓòÉΓòÉΓòÉ 2.67. Set Model Transform/Push and Set Model Transform ΓòÉΓòÉΓòÉ
  9946.  
  9947.  
  9948. ΓòÉΓòÉΓòÉ <hidden> Set Model Transform/Push and Set Model Transform - Syntax ΓòÉΓòÉΓòÉ
  9949.  
  9950. These orders set, or push and set, values in the current model transform. 
  9951.  
  9952. Set Model Transform (GSTM) 
  9953. X'24' (LEN, RES, FLAGS, MASK, MX[LEN]) 
  9954.  
  9955. Push and Set Model Transform (GPSTM) 
  9956. X'64' (LEN, RES, FLAGS, MASK, MX[LEN]) 
  9957.  
  9958.  
  9959. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - LEN ΓòÉΓòÉΓòÉ
  9960.  
  9961.  LEN (GLENGTH1) 
  9962.     Length of following data. 
  9963.  
  9964.  
  9965. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - RES ΓòÉΓòÉΓòÉ
  9966.  
  9967.  RES (GBIT8) 
  9968.     Reserved value, must be 0. 
  9969.  
  9970.  
  9971. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - FLAGS ΓòÉΓòÉΓòÉ
  9972.  
  9973.  FLAGS 
  9974.     Values: 
  9975.  
  9976.     RES (GBIT6) 
  9977.              Reserved value, must be 0. 
  9978.  
  9979.     CM (GBIT2) 
  9980.              Matrix control bits: 
  9981.  
  9982.              B"00"      Unity matrix 
  9983.              B"01"      Concatenate after 
  9984.              B"10"      Concatenate before 
  9985.              B"11"      Overwrite. 
  9986.  
  9987.  
  9988. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - MASK ΓòÉΓòÉΓòÉ
  9989.  
  9990.  MASK (GBIT16) 
  9991.     Load mask. 
  9992.  
  9993.  
  9994. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - MX[LEN] ΓòÉΓòÉΓòÉ
  9995.  
  9996.  MX[LEN] (GROSOL) 
  9997.     Matrix values. 
  9998.  
  9999.     The matrix size is based on the number of bits set in MASK. 
  10000.  
  10001.  
  10002. ΓòÉΓòÉΓòÉ <hidden> Set Model Transform/Push and Set Model Transform - Parameters ΓòÉΓòÉΓòÉ
  10003.  
  10004.  LEN (GLENGTH1) 
  10005.     Length of following data. 
  10006.  
  10007.  RES (GBIT8) 
  10008.     Reserved value, must be 0. 
  10009.  
  10010.  FLAGS 
  10011.     Values: 
  10012.  
  10013.     RES (GBIT6) 
  10014.              Reserved value, must be 0. 
  10015.  
  10016.     CM (GBIT2) 
  10017.              Matrix control bits: 
  10018.  
  10019.              B"00"      Unity matrix 
  10020.              B"01"      Concatenate after 
  10021.              B"10"      Concatenate before 
  10022.              B"11"      Overwrite. 
  10023.  
  10024.  MASK (GBIT16) 
  10025.     Load mask. 
  10026.  
  10027.  MX[LEN] (GROSOL) 
  10028.     Matrix values. 
  10029.  
  10030.     The matrix size is based on the number of bits set in MASK. 
  10031.  
  10032.  
  10033. ΓòÉΓòÉΓòÉ <hidden> Set Model Transform/Push and Set Model Transform - Remarks ΓòÉΓòÉΓòÉ
  10034.  
  10035. The value of the current model transform is pushed on to the Segment Call stack 
  10036. by the Push and Set order only. Both orders then set values in the current 
  10037. model transform as specified in the order. 
  10038.  
  10039.  
  10040. ΓòÉΓòÉΓòÉ <hidden> Set Model Transform/Push and Set Model Transform - Topics ΓòÉΓòÉΓòÉ
  10041.  
  10042. Select an item: 
  10043.  
  10044. Syntax
  10045. Parameters
  10046. Remarks
  10047. Glossary
  10048.  
  10049.  
  10050. ΓòÉΓòÉΓòÉ 2.68. Set Pattern Reference Point/Push and Set Pattern Reference Point ΓòÉΓòÉΓòÉ
  10051.  
  10052.  
  10053. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Reference Point/Push and Set Pattern Reference Point - Syntax ΓòÉΓòÉΓòÉ
  10054.  
  10055. These orders set, or push and set, the value of the current pattern 
  10056. reference-point attribute. 
  10057.  
  10058. Set Pattern Reference Point (GSPRP) 
  10059. X'A0' (LEN, FLAGS, RES, PREF) 
  10060.  
  10061. Push and Set Pattern Reference Point (GPSPRP) 
  10062. X'E0' (LEN, FLAGS, RES, PREF) 
  10063.  
  10064.  
  10065. ΓòÉΓòÉΓòÉ <hidden> GSPRP/GPSPRP Parameter - LEN ΓòÉΓòÉΓòÉ
  10066.  
  10067.  LEN (GLENGTH1) 
  10068.     Length of following data. 
  10069.  
  10070.  
  10071. ΓòÉΓòÉΓòÉ <hidden> GSPRP/GPSPRP Parameter - FLAGS ΓòÉΓòÉΓòÉ
  10072.  
  10073.  FLAGS 
  10074.     Values: 
  10075.  
  10076.     DEFAULT (GBIT1) 
  10077.              Options: 
  10078.  
  10079.              0       Set to specified value 
  10080.              1       Set to the drawing default. 
  10081.  
  10082.     RES (GBIT7) 
  10083.              Reserved value, must be 0. 
  10084.  
  10085.  
  10086. ΓòÉΓòÉΓòÉ <hidden> GSPRP/GPSPRP Parameter - RES ΓòÉΓòÉΓòÉ
  10087.  
  10088.  RES (GBIT8) 
  10089.     Reserved value, must be 0. 
  10090.  
  10091.  
  10092. ΓòÉΓòÉΓòÉ <hidden> GSPRP/GPSPRP Parameter - PREF ΓòÉΓòÉΓòÉ
  10093.  
  10094.  PREF (GPOINT) 
  10095.     Coordinate data of the pattern-reference point. 
  10096.  
  10097.  
  10098. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Reference Point/Push and Set Pattern Reference Point - Parameters ΓòÉΓòÉΓòÉ
  10099.  
  10100.  LEN (GLENGTH1) 
  10101.     Length of following data. 
  10102.  
  10103.  FLAGS 
  10104.     Values: 
  10105.  
  10106.     DEFAULT (GBIT1) 
  10107.              Options: 
  10108.  
  10109.              0       Set to specified value 
  10110.              1       Set to the drawing default. 
  10111.  
  10112.     RES (GBIT7) 
  10113.              Reserved value, must be 0. 
  10114.  
  10115.  RES (GBIT8) 
  10116.     Reserved value, must be 0. 
  10117.  
  10118.  PREF (GPOINT) 
  10119.     Coordinate data of the pattern-reference point. 
  10120.  
  10121.  
  10122. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Reference Point/Push and Set Pattern Reference Point - Remarks ΓòÉΓòÉΓòÉ
  10123.  
  10124. The value of the current pattern reference-point attribute is pushed on to the 
  10125. Segment Call stack by the Push and Set order only. Both orders then set the 
  10126. value of the current reference-point attribute to the value in the order. 
  10127.  
  10128.  
  10129. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Reference Point/Push and Set Pattern Reference Point - Topics ΓòÉΓòÉΓòÉ
  10130.  
  10131. Select an item: 
  10132.  
  10133. Syntax
  10134. Parameters
  10135. Remarks
  10136. Glossary
  10137.  
  10138.  
  10139. ΓòÉΓòÉΓòÉ 2.69. Set Pattern Set/Push and Set Pattern Set ΓòÉΓòÉΓòÉ
  10140.  
  10141.  
  10142. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Set/Push and Set Pattern Set - Syntax ΓòÉΓòÉΓòÉ
  10143.  
  10144. These orders set, or push and set, the value of the current pattern symbol-set 
  10145. attribute. 
  10146.  
  10147. Set Pattern Set (GSPS) 
  10148. X'08' (LCID) 
  10149.  
  10150. Push and Set Pattern Set (GPSPS) 
  10151. X'48' (LCID) 
  10152.  
  10153.  
  10154. ΓòÉΓòÉΓòÉ <hidden> GSPS/GPSPS Parameter - LCID ΓòÉΓòÉΓòÉ
  10155.  
  10156.  LCID (GUCHAR) 
  10157.     Local identifier (LCID) for the pattern set: 
  10158.  
  10159.     0x00          Drawing default 
  10160.     0x01-0xFE     LCID for the symbol set 
  10161.     0xFF          Special pattern set. 
  10162.  
  10163.  
  10164. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Set/Push and Set Pattern Set - Parameters ΓòÉΓòÉΓòÉ
  10165.  
  10166.  LCID (GUCHAR) 
  10167.     Local identifier (LCID) for the pattern set: 
  10168.  
  10169.     0x00          Drawing default 
  10170.     0x01-0xFE     LCID for the symbol set 
  10171.     0xFF          Special pattern set. 
  10172.  
  10173.  
  10174. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Set/Push and Set Pattern Set - Remarks ΓòÉΓòÉΓòÉ
  10175.  
  10176. The value of the current pattern symbol-set attribute is pushed on to the 
  10177. Segment Call stack by the Push and Set order only. Both orders then set the 
  10178. value of the current pattern symbol-set attribute to the value in the order. 
  10179.  
  10180.  
  10181. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Set/Push and Set Pattern Set - Topics ΓòÉΓòÉΓòÉ
  10182.  
  10183. Select an item: 
  10184.  
  10185. Syntax
  10186. Parameters
  10187. Remarks
  10188. Glossary
  10189.  
  10190.  
  10191. ΓòÉΓòÉΓòÉ 2.70. Set Pattern Symbol/Push and Set Pattern Symbol ΓòÉΓòÉΓòÉ
  10192.  
  10193.  
  10194. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Symbol/Push and Set Pattern Symbol - Syntax ΓòÉΓòÉΓòÉ
  10195.  
  10196. These orders set, or push and set, the value of the current pattern-symbol 
  10197. attribute. 
  10198.  
  10199. Set Pattern Symbol (GSPT) 
  10200. X'28' (PATT) 
  10201.  
  10202. Push and Set Pattern Symbol (GPSPT) 
  10203. X'09' (PATT) 
  10204.  
  10205.  
  10206. ΓòÉΓòÉΓòÉ <hidden> GSPT/GPSPT Parameter - PATT ΓòÉΓòÉΓòÉ
  10207.  
  10208.  PATT (GBIT8) 
  10209.     Value for pattern-symbol attribute. 
  10210.  
  10211.     Special pattern set 
  10212.  
  10213.     When this is selected (lcid = 0xFF), the values are: 
  10214.  
  10215.     0x00 
  10216.             Drawing default 
  10217.     0x01-0x08 
  10218.             Density one through density eight (decreasing) 
  10219.     0x09 
  10220.             Vertical lines 
  10221.     0x0A 
  10222.             Horizontal lines 
  10223.     0x0B 
  10224.             Diagonal lines 1 (bottom-left to top-right) 
  10225.     0x0C 
  10226.             Diagonal lines 2 (bottom-left to top-right) 
  10227.     0x0D 
  10228.             Diagonal lines 1 (top-left to bottom-right) 
  10229.     0x0E 
  10230.             Diagonal lines 2 (top-left to bottom-right) 
  10231.     0x0F 
  10232.             No shading 
  10233.     0x10 
  10234.             Solid shading 
  10235.     0x40 
  10236.             Blank. 
  10237.     Other 
  10238.             Reserved values. 
  10239.  
  10240.  
  10241.  Pattern set 
  10242.  
  10243.             Values are as follows for any other set: 
  10244.     0x00 
  10245.             Drawing default 
  10246.     0x01-0xFF 
  10247.             These are the code points into the current pattern set. 
  10248.  
  10249.  
  10250. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Symbol/Push and Set Pattern Symbol - Parameters ΓòÉΓòÉΓòÉ
  10251.  
  10252.  PATT (GBIT8) 
  10253.     Value for pattern-symbol attribute. 
  10254.  
  10255.     Special pattern set 
  10256.  
  10257.     When this is selected (lcid = 0xFF), the values are: 
  10258.  
  10259.     0x00 
  10260.             Drawing default 
  10261.     0x01-0x08 
  10262.             Density one through density eight (decreasing) 
  10263.     0x09 
  10264.             Vertical lines 
  10265.     0x0A 
  10266.             Horizontal lines 
  10267.     0x0B 
  10268.             Diagonal lines 1 (bottom-left to top-right) 
  10269.     0x0C 
  10270.             Diagonal lines 2 (bottom-left to top-right) 
  10271.     0x0D 
  10272.             Diagonal lines 1 (top-left to bottom-right) 
  10273.     0x0E 
  10274.             Diagonal lines 2 (top-left to bottom-right) 
  10275.     0x0F 
  10276.             No shading 
  10277.     0x10 
  10278.             Solid shading 
  10279.     0x40 
  10280.             Blank. 
  10281.     Other 
  10282.             Reserved values. 
  10283.  
  10284.  
  10285.  Pattern set 
  10286.  
  10287.             Values are as follows for any other set: 
  10288.     0x00 
  10289.             Drawing default 
  10290.     0x01-0xFF 
  10291.             These are the code points into the current pattern set. 
  10292.  
  10293.  
  10294. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Symbol/Push and Set Pattern Symbol - Remarks ΓòÉΓòÉΓòÉ
  10295.  
  10296. The value of the current pattern-symbol attribute is pushed on to the Segment 
  10297. Call stack by the Push and Set order only. Both orders then set the value of 
  10298. the current pattern-symbol attribute to the value in the order. 
  10299.  
  10300.  
  10301. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Symbol/Push and Set Pattern Symbol - Topics ΓòÉΓòÉΓòÉ
  10302.  
  10303. Select an item: 
  10304.  
  10305. Syntax
  10306. Parameters
  10307. Remarks
  10308. Glossary
  10309.  
  10310.  
  10311. ΓòÉΓòÉΓòÉ 2.71. Set Pick Identifier/Push and Set Pick Identifier ΓòÉΓòÉΓòÉ
  10312.  
  10313.  
  10314. ΓòÉΓòÉΓòÉ <hidden> Set Pick Identifier/Push and Set Pick Identifier - Syntax ΓòÉΓòÉΓòÉ
  10315.  
  10316. These orders set, or push and set, the value of the current pick identifier. 
  10317.  
  10318. Set Pick Identifier (GSPIK) 
  10319. X'43' (LEN, PKID) 
  10320.  
  10321. Push and Set Pick Identifier (GPSPIK) 
  10322. X'23' (LEN, PKID) 
  10323.  
  10324.  
  10325. ΓòÉΓòÉΓòÉ <hidden> GSPIK/GPSPIK Parameter - LEN ΓòÉΓòÉΓòÉ
  10326.  
  10327.  LEN (GLENGTH1) 
  10328.     Length of following data. 
  10329.  
  10330.  
  10331. ΓòÉΓòÉΓòÉ <hidden> GSPIK/GPSPIK Parameter - PKID ΓòÉΓòÉΓòÉ
  10332.  
  10333.  PKID (GLONG) 
  10334.     Pick identifier. 
  10335.  
  10336.  
  10337. ΓòÉΓòÉΓòÉ <hidden> Set Pick Identifier/Push and Set Pick Identifier - Parameters ΓòÉΓòÉΓòÉ
  10338.  
  10339.  LEN (GLENGTH1) 
  10340.     Length of following data. 
  10341.  
  10342.  PKID (GLONG) 
  10343.     Pick identifier. 
  10344.  
  10345.  
  10346. ΓòÉΓòÉΓòÉ <hidden> Set Pick Identifier/Push and Set Pick Identifier - Remarks ΓòÉΓòÉΓòÉ
  10347.  
  10348. The value of the current pick identifier is pushed on to the Segment Call stack 
  10349. by the Push and Set order only. Both orders then set the value of the current 
  10350. pick identifier to the value in the order. 
  10351.  
  10352.  
  10353. ΓòÉΓòÉΓòÉ <hidden> Set Pick Identifier/Push and Set Pick Identifier - Topics ΓòÉΓòÉΓòÉ
  10354.  
  10355. Select an item: 
  10356.  
  10357. Syntax
  10358. Parameters
  10359. Remarks
  10360. Glossary
  10361.  
  10362.  
  10363. ΓòÉΓòÉΓòÉ 2.72. Set Segment Boundary ΓòÉΓòÉΓòÉ
  10364.  
  10365.  
  10366. ΓòÉΓòÉΓòÉ <hidden> Set Segment Boundary - Syntax ΓòÉΓòÉΓòÉ
  10367.  
  10368. This order defines the maximum extent of the boundaries of the associated root 
  10369. segment.  It is valid only in a root segment prolog. 
  10370.  
  10371. Set Segment Boundary (GSSB) 
  10372. X'32' (LEN, RES, MASK, BB[LEN]) 
  10373.  
  10374.  
  10375. ΓòÉΓòÉΓòÉ <hidden> GSSB Parameter - LEN ΓòÉΓòÉΓòÉ
  10376.  
  10377.  LEN (GLENGTH1) 
  10378.     Length of following data. 
  10379.  
  10380.  
  10381. ΓòÉΓòÉΓòÉ <hidden> GSSB Parameter - RES ΓòÉΓòÉΓòÉ
  10382.  
  10383.  RES (GBIT8) 
  10384.     Reserved value, must be 0. 
  10385.  
  10386.  
  10387. ΓòÉΓòÉΓòÉ <hidden> GSSB Parameter - MASK ΓòÉΓòÉΓòÉ
  10388.  
  10389.  MASK 
  10390.     Values: 
  10391.  
  10392.     RES1 (GBIT2) 
  10393.              Reserved value, must be 0. 
  10394.  
  10395.     XL (GBIT1) 
  10396.              X left limit. 
  10397.  
  10398.              0       Not included in list of BB values 
  10399.              1       Is included in list of BB values. 
  10400.  
  10401.     XR (GBIT1) 
  10402.              X right limit. 
  10403.  
  10404.              0       Not included in list of BB values 
  10405.              1       Is included in list of BB values. 
  10406.  
  10407.     YB (GBIT1) 
  10408.              Y bottom limit. 
  10409.  
  10410.              0       Not included in list of BB values 
  10411.              1       Is included in list of BB values. 
  10412.  
  10413.     YT (GBIT1) 
  10414.              Y top limit. 
  10415.  
  10416.              0       Not included in list of BB values 
  10417.              1       Is included in list of BB values. 
  10418.  
  10419.     RES2 (GBIT2) 
  10420.              Reserved value, must be 0. 
  10421.  
  10422.  
  10423. ΓòÉΓòÉΓòÉ <hidden> GSSB Parameter - BB[LEN] ΓòÉΓòÉΓòÉ
  10424.  
  10425.  BB[LEN] (GROSOL) 
  10426.     Boundary values. 
  10427.  
  10428.  
  10429. ΓòÉΓòÉΓòÉ <hidden> Set Segment Boundary - Parameters ΓòÉΓòÉΓòÉ
  10430.  
  10431.  LEN (GLENGTH1) 
  10432.     Length of following data. 
  10433.  
  10434.  RES (GBIT8) 
  10435.     Reserved value, must be 0. 
  10436.  
  10437.  MASK 
  10438.     Values: 
  10439.  
  10440.     RES1 (GBIT2) 
  10441.              Reserved value, must be 0. 
  10442.  
  10443.     XL (GBIT1) 
  10444.              X left limit. 
  10445.  
  10446.              0       Not included in list of BB values 
  10447.              1       Is included in list of BB values. 
  10448.  
  10449.     XR (GBIT1) 
  10450.              X right limit. 
  10451.  
  10452.              0       Not included in list of BB values 
  10453.              1       Is included in list of BB values. 
  10454.  
  10455.     YB (GBIT1) 
  10456.              Y bottom limit. 
  10457.  
  10458.              0       Not included in list of BB values 
  10459.              1       Is included in list of BB values. 
  10460.  
  10461.     YT (GBIT1) 
  10462.              Y top limit. 
  10463.  
  10464.              0       Not included in list of BB values 
  10465.              1       Is included in list of BB values. 
  10466.  
  10467.     RES2 (GBIT2) 
  10468.              Reserved value, must be 0. 
  10469.  
  10470.  BB[LEN] (GROSOL) 
  10471.     Boundary values. 
  10472.  
  10473.  
  10474. ΓòÉΓòÉΓòÉ <hidden> Set Segment Boundary - Remarks ΓòÉΓòÉΓòÉ
  10475.  
  10476. The order is only valid in a root-segment prolog. 
  10477.  
  10478.  
  10479. ΓòÉΓòÉΓòÉ <hidden> Set Segment Boundary - Topics ΓòÉΓòÉΓòÉ
  10480.  
  10481. Select an item: 
  10482.  
  10483. Syntax
  10484. Parameters
  10485. Remarks
  10486. Glossary
  10487.  
  10488.  
  10489. ΓòÉΓòÉΓòÉ 2.73. Set Stroke Line Width/Push and Set Stroke Line Width ΓòÉΓòÉΓòÉ
  10490.  
  10491.  
  10492. ΓòÉΓòÉΓòÉ <hidden> Set Stroke Line Width/Push and Set Stroke Line Width - Syntax ΓòÉΓòÉΓòÉ
  10493.  
  10494. These orders set the current stroke line-width attribute. 
  10495.  
  10496. Set Stroke Line Width (GSSLW) 
  10497. X'15' (LEN, FLAGS, RES, STRWIDTH) 
  10498.  
  10499. Push and Set Stroke Line Width (GPSSLW) 
  10500. X'55' (LEN, FLAGS, RES, STRWIDTH) 
  10501.  
  10502.  
  10503. ΓòÉΓòÉΓòÉ <hidden> GSSLW/GPSSLW Parameter - LEN ΓòÉΓòÉΓòÉ
  10504.  
  10505.  LEN (GLENGTH1) 
  10506.     Length of following data. 
  10507.  
  10508.  
  10509. ΓòÉΓòÉΓòÉ <hidden> GSSLW/GPSSLW Parameter - FLAGS ΓòÉΓòÉΓòÉ
  10510.  
  10511.  FLAGS 
  10512.  
  10513.     DEFLT (GBIT1) 
  10514.              Values: 
  10515.  
  10516.              0       Set to value 
  10517.              1       Set to drawing default. 
  10518.  
  10519.     RES (GBIT7) 
  10520.              Reserved value, must be 0. 
  10521.  
  10522.  
  10523. ΓòÉΓòÉΓòÉ <hidden> GSSLW/GPSSLW Parameter - RES ΓòÉΓòÉΓòÉ
  10524.  
  10525.  RES (GBIT8) 
  10526.     Reserved value, must be 0. 
  10527.  
  10528.  
  10529. ΓòÉΓòÉΓòÉ <hidden> GSSLW/GPSSLW Parameter - STRWIDTH ΓòÉΓòÉΓòÉ
  10530.  
  10531.  STRWIDTH (GROSOL) 
  10532.     Value for stroke width. 
  10533.  
  10534.  
  10535. ΓòÉΓòÉΓòÉ <hidden> Set Stroke Line Width/Push and Set Stroke Line Width - Parameters ΓòÉΓòÉΓòÉ
  10536.  
  10537.  LEN (GLENGTH1) 
  10538.     Length of following data. 
  10539.  
  10540.  FLAGS 
  10541.  
  10542.     DEFLT (GBIT1) 
  10543.              Values: 
  10544.  
  10545.              0       Set to value 
  10546.              1       Set to drawing default. 
  10547.  
  10548.     RES (GBIT7) 
  10549.              Reserved value, must be 0. 
  10550.  
  10551.  RES (GBIT8) 
  10552.     Reserved value, must be 0. 
  10553.  
  10554.  STRWIDTH (GROSOL) 
  10555.     Value for stroke width. 
  10556.  
  10557.  
  10558. ΓòÉΓòÉΓòÉ <hidden> Set Stroke Line Width/Push and Set Stroke Line Width - Topics ΓòÉΓòÉΓòÉ
  10559.  
  10560. Select an item: 
  10561.  
  10562. Syntax
  10563. Parameters
  10564. Glossary
  10565.  
  10566.  
  10567. ΓòÉΓòÉΓòÉ 2.74. Set Text Alignment/Push and Set Text Alignment ΓòÉΓòÉΓòÉ
  10568.  
  10569.  
  10570. ΓòÉΓòÉΓòÉ <hidden> Set Text Alignment/Push and Set Text Alignment - Syntax ΓòÉΓòÉΓòÉ
  10571.  
  10572. These orders set, or push and set, the value of the current text alignment 
  10573. attribute. 
  10574.  
  10575. Set Text Alignment (GSCSA) 
  10576. X'10' (LEN, HORIZ, VERT) 
  10577.  
  10578. Push and Set Text Alignment (GPSCSA) 
  10579. X'50' (LEN, HORIZ, VERT) 
  10580.  
  10581.  
  10582. ΓòÉΓòÉΓòÉ <hidden> GSCSA/GPSCSA Parameter - LEN ΓòÉΓòÉΓòÉ
  10583.  
  10584.  LEN (GLENGTH1) 
  10585.     Length of following data. 
  10586.  
  10587.  
  10588. ΓòÉΓòÉΓòÉ <hidden> GSCSA/GPSCSA Parameter - HORIZ ΓòÉΓòÉΓòÉ
  10589.  
  10590.  HORIZ (GUCHAR) 
  10591.     Horizontal alignment as follows: 
  10592.  
  10593.     0x00       Drawing default. 
  10594.  
  10595.     0x01       Normal alignment. The alignment assumed depends on the current 
  10596.                character direction: 
  10597.  
  10598.                Left to right                 Left alignment. 
  10599.                Top to bottom                 Center alignment. 
  10600.                Right to left                 Right alignment. 
  10601.                Bottom to top                 Center alignment. 
  10602.  
  10603.     0x02       Left alignment. The string is aligned on the left edge of its 
  10604.                leftmost character. 
  10605.  
  10606.     0x03       Center alignment. The string is aligned on the arithmetic mean 
  10607.                of left and right. 
  10608.  
  10609.     0x04       Right alignment. The string is aligned on the right edge of its 
  10610.                rightmost character. 
  10611.  
  10612.     0xFF       Standard alignment. The alignment assumed depends on the current 
  10613.                character direction: 
  10614.  
  10615.                Left to right                 Left alignment. 
  10616.                Top to bottom                 Left alignment. 
  10617.                Right to left                 Right alignment. 
  10618.                Bottom to top                 Left alignment. 
  10619.  
  10620.  
  10621. ΓòÉΓòÉΓòÉ <hidden> GSCSA/GPSCSA Parameter - VERT ΓòÉΓòÉΓòÉ
  10622.  
  10623.  VERT (GUCHAR) 
  10624.     Vertical alignment as follows: 
  10625.  
  10626.     0x00       Drawing default. 
  10627.  
  10628.     0x01       Normal alignment. The alignment assumed depends on the current 
  10629.                character direction: 
  10630.  
  10631.                Left to right                 Base alignment. 
  10632.                Top to bottom                 Top alignment. 
  10633.                Right to left                 Base alignment. 
  10634.                Bottom to top                 Bottom alignment. 
  10635.  
  10636.     0x02       Top Alignment. The string is aligned on the top edge of its 
  10637.                topmost character. 
  10638.  
  10639.     0x03       Reserved. 
  10640.  
  10641.     0x04       Half alignment. The string is aligned on the arithmetic mean of 
  10642.                top and bottom. 
  10643.  
  10644.     0x05       Base alignment. The string is aligned on the base of its bottom 
  10645.                character. 
  10646.  
  10647.     0x06       Bottom Alignment. The string is aligned on the bottom edge of 
  10648.                its bottom character. 
  10649.  
  10650.     0xFF       Standard alignment. The alignment assumed depends on the current 
  10651.                character direction: 
  10652.  
  10653.                Left to right                 Bottom alignment. 
  10654.                Top to bottom                 Top alignment. 
  10655.                Right to left                 Bottom alignment. 
  10656.                Bottom to top                 Bottom alignment. 
  10657.  
  10658.  
  10659. ΓòÉΓòÉΓòÉ <hidden> Set Text Alignment/Push and Set Text Alignment - Parameters ΓòÉΓòÉΓòÉ
  10660.  
  10661.  LEN (GLENGTH1) 
  10662.     Length of following data. 
  10663.  
  10664.  HORIZ (GUCHAR) 
  10665.     Horizontal alignment as follows: 
  10666.  
  10667.     0x00       Drawing default. 
  10668.  
  10669.     0x01       Normal alignment. The alignment assumed depends on the current 
  10670.                character direction: 
  10671.  
  10672.                Left to right                 Left alignment. 
  10673.                Top to bottom                 Center alignment. 
  10674.                Right to left                 Right alignment. 
  10675.                Bottom to top                 Center alignment. 
  10676.  
  10677.     0x02       Left alignment. The string is aligned on the left edge of its 
  10678.                leftmost character. 
  10679.  
  10680.     0x03       Center alignment. The string is aligned on the arithmetic mean 
  10681.                of left and right. 
  10682.  
  10683.     0x04       Right alignment. The string is aligned on the right edge of its 
  10684.                rightmost character. 
  10685.  
  10686.     0xFF       Standard alignment. The alignment assumed depends on the current 
  10687.                character direction: 
  10688.  
  10689.                Left to right                 Left alignment. 
  10690.                Top to bottom                 Left alignment. 
  10691.                Right to left                 Right alignment. 
  10692.                Bottom to top                 Left alignment. 
  10693.  
  10694.  VERT (GUCHAR) 
  10695.     Vertical alignment as follows: 
  10696.  
  10697.     0x00       Drawing default. 
  10698.  
  10699.     0x01       Normal alignment. The alignment assumed depends on the current 
  10700.                character direction: 
  10701.  
  10702.                Left to right                 Base alignment. 
  10703.                Top to bottom                 Top alignment. 
  10704.                Right to left                 Base alignment. 
  10705.                Bottom to top                 Bottom alignment. 
  10706.  
  10707.     0x02       Top Alignment. The string is aligned on the top edge of its 
  10708.                topmost character. 
  10709.  
  10710.     0x03       Reserved. 
  10711.  
  10712.     0x04       Half alignment. The string is aligned on the arithmetic mean of 
  10713.                top and bottom. 
  10714.  
  10715.     0x05       Base alignment. The string is aligned on the base of its bottom 
  10716.                character. 
  10717.  
  10718.     0x06       Bottom Alignment. The string is aligned on the bottom edge of 
  10719.                its bottom character. 
  10720.  
  10721.     0xFF       Standard alignment. The alignment assumed depends on the current 
  10722.                character direction: 
  10723.  
  10724.                Left to right                 Bottom alignment. 
  10725.                Top to bottom                 Top alignment. 
  10726.                Right to left                 Bottom alignment. 
  10727.                Bottom to top                 Bottom alignment. 
  10728.  
  10729.  
  10730. ΓòÉΓòÉΓòÉ <hidden> Set Text Alignment/Push and Set Text Alignment - Remarks ΓòÉΓòÉΓòÉ
  10731.  
  10732. The value of the current text alignment attribute is pushed on to the Segment 
  10733. Call stack by the Push and Set order only. Both orders set the value of the 
  10734. current text alignment attribute to the value specified in the order. 
  10735.  
  10736.  
  10737. ΓòÉΓòÉΓòÉ <hidden> Set Text Alignment/Push and Set Text Alignment - Topics ΓòÉΓòÉΓòÉ
  10738.  
  10739. Select an item: 
  10740.  
  10741. Syntax
  10742. Parameters
  10743. Remarks
  10744. Glossary
  10745.  
  10746.  
  10747. ΓòÉΓòÉΓòÉ 2.75. Set Viewing Transform ΓòÉΓòÉΓòÉ
  10748.  
  10749.  
  10750. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Transform - Syntax ΓòÉΓòÉΓòÉ
  10751.  
  10752. This order sets the current viewing transform. 
  10753.  
  10754. Set Viewing Transform (GSTV) 
  10755. X'31' (LEN, RES, FLAGS, MASK, MX[LEN]) 
  10756.  
  10757.  
  10758. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - LEN ΓòÉΓòÉΓòÉ
  10759.  
  10760.  LEN (GLENGTH1) 
  10761.     Length of following data. 
  10762.  
  10763.  
  10764. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - RES ΓòÉΓòÉΓòÉ
  10765.  
  10766.  RES (GBIT8) 
  10767.     Reserved value, must be 0. 
  10768.  
  10769.  
  10770. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - FLAGS ΓòÉΓòÉΓòÉ
  10771.  
  10772.  FLAGS 
  10773.     Values: 
  10774.  
  10775.     RES1 (GBIT5) 
  10776.              Reserved value, must be 0. 
  10777.  
  10778.     CONTROL (GBIT1) 
  10779.              Values: 
  10780.  
  10781.              0       Concatenate before drawing default 
  10782.              1       Concatenate before the current viewing transform. 
  10783.  
  10784.     RES2 (GBIT2) 
  10785.              Reserved value, must be 0. 
  10786.  
  10787.  
  10788. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - MASK ΓòÉΓòÉΓòÉ
  10789.  
  10790.  MASK (GBIT16) 
  10791.     Load mask. 
  10792.  
  10793.  
  10794. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - MX[LEN] ΓòÉΓòÉΓòÉ
  10795.  
  10796.  MX[LEN] (GROSOL) 
  10797.     Matrix values. 
  10798.  
  10799.  
  10800. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Transform - Parameters ΓòÉΓòÉΓòÉ
  10801.  
  10802.  LEN (GLENGTH1) 
  10803.     Length of following data. 
  10804.  
  10805.  RES (GBIT8) 
  10806.     Reserved value, must be 0. 
  10807.  
  10808.  FLAGS 
  10809.     Values: 
  10810.  
  10811.     RES1 (GBIT5) 
  10812.              Reserved value, must be 0. 
  10813.  
  10814.     CONTROL (GBIT1) 
  10815.              Values: 
  10816.  
  10817.              0       Concatenate before drawing default 
  10818.              1       Concatenate before the current viewing transform. 
  10819.  
  10820.     RES2 (GBIT2) 
  10821.              Reserved value, must be 0. 
  10822.  
  10823.  MASK (GBIT16) 
  10824.     Load mask. 
  10825.  
  10826.  MX[LEN] (GROSOL) 
  10827.     Matrix values. 
  10828.  
  10829.  
  10830. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Transform - Topics ΓòÉΓòÉΓòÉ
  10831.  
  10832. Select an item: 
  10833.  
  10834. Syntax
  10835. Parameters
  10836. Glossary
  10837.  
  10838.  
  10839. ΓòÉΓòÉΓòÉ 2.76. Set Viewing Window/Push and Set Viewing Window ΓòÉΓòÉΓòÉ
  10840.  
  10841.  
  10842. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Window/Push and Set Viewing Window - Syntax ΓòÉΓòÉΓòÉ
  10843.  
  10844. These orders set, or push and set, the current viewing window. 
  10845.  
  10846. Set Viewing Window (GSVW) 
  10847. X'27' (LEN, FLAG, MASK, WW[LEN]) 
  10848.  
  10849. Push and Set Viewing Window (GPSVW) 
  10850. X'67' (LEN, FLAG, MASK, WW[LEN]) 
  10851.  
  10852.  
  10853. ΓòÉΓòÉΓòÉ <hidden> GSVW/GPSVW Parameter - LEN ΓòÉΓòÉΓòÉ
  10854.  
  10855.  LEN (GLENGTH1) 
  10856.     Length of following data. 
  10857.  
  10858.  
  10859. ΓòÉΓòÉΓòÉ <hidden> GSVW/GPSVW Parameter - FLAG ΓòÉΓòÉΓòÉ
  10860.  
  10861.  FLAG 
  10862.     Values: 
  10863.  
  10864.     REPLACE (GBIT1) 
  10865.              Values: 
  10866.  
  10867.              0       Intersect with current window 
  10868.              1       Replace current with new window. 
  10869.  
  10870.     RES (GBIT7) 
  10871.              Reserved value, must be 0. 
  10872.  
  10873.  
  10874. ΓòÉΓòÉΓòÉ <hidden> GSVW/GPSVW Parameter - MASK ΓòÉΓòÉΓòÉ
  10875.  
  10876.  MASK 
  10877.     Values: 
  10878.  
  10879.     RES1 (GBIT2) 
  10880.              Reserved value, must be 0. 
  10881.  
  10882.     XL (GBIT1) 
  10883.              X left limit. 
  10884.  
  10885.              0       Not included in list of WW values 
  10886.              1       Is included in list of WW values 
  10887.  
  10888.     XR (GBIT1) 
  10889.              X right limit. 
  10890.  
  10891.              0       Not included in list of WW values 
  10892.              1       Is included in list of WW values 
  10893.  
  10894.     YB (GBIT1) 
  10895.              Y bottom limit. 
  10896.  
  10897.              0       Not included in list of WW values 
  10898.              1       Is included in list of WW values 
  10899.  
  10900.     YT (GBIT1) 
  10901.              Y top limit. 
  10902.  
  10903.              0       Not included in list of WW values 
  10904.              1       Is included in list of WW values 
  10905.  
  10906.     RES2 (GBIT2) 
  10907.              Reserved value, must be 0. 
  10908.  
  10909.  
  10910. ΓòÉΓòÉΓòÉ <hidden> GSVW/GPSVW Parameter - WW[LEN] ΓòÉΓòÉΓòÉ
  10911.  
  10912.  WW[LEN] (GROSOL) 
  10913.     Window values. 
  10914.  
  10915.  
  10916. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Window/Push and Set Viewing Window - Parameters ΓòÉΓòÉΓòÉ
  10917.  
  10918.  LEN (GLENGTH1) 
  10919.     Length of following data. 
  10920.  
  10921.  FLAG 
  10922.     Values: 
  10923.  
  10924.     REPLACE (GBIT1) 
  10925.              Values: 
  10926.  
  10927.              0       Intersect with current window 
  10928.              1       Replace current with new window. 
  10929.  
  10930.     RES (GBIT7) 
  10931.              Reserved value, must be 0. 
  10932.  
  10933.  MASK 
  10934.     Values: 
  10935.  
  10936.     RES1 (GBIT2) 
  10937.              Reserved value, must be 0. 
  10938.  
  10939.     XL (GBIT1) 
  10940.              X left limit. 
  10941.  
  10942.              0       Not included in list of WW values 
  10943.              1       Is included in list of WW values 
  10944.  
  10945.     XR (GBIT1) 
  10946.              X right limit. 
  10947.  
  10948.              0       Not included in list of WW values 
  10949.              1       Is included in list of WW values 
  10950.  
  10951.     YB (GBIT1) 
  10952.              Y bottom limit. 
  10953.  
  10954.              0       Not included in list of WW values 
  10955.              1       Is included in list of WW values 
  10956.  
  10957.     YT (GBIT1) 
  10958.              Y top limit. 
  10959.  
  10960.              0       Not included in list of WW values 
  10961.              1       Is included in list of WW values 
  10962.  
  10963.     RES2 (GBIT2) 
  10964.              Reserved value, must be 0. 
  10965.  
  10966.  WW[LEN] (GROSOL) 
  10967.     Window values. 
  10968.  
  10969.  
  10970. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Window/Push and Set Viewing Window - Remarks ΓòÉΓòÉΓòÉ
  10971.  
  10972. The value of the current viewing window is pushed on to the Segment Call stack 
  10973. by the Push and Set order only. Both orders then set the current viewing window 
  10974. using the values in the order. 
  10975.  
  10976.  
  10977. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Window/Push and Set Viewing Window - Topics ΓòÉΓòÉΓòÉ
  10978.  
  10979. Select an item: 
  10980.  
  10981. Syntax
  10982. Parameters
  10983. Remarks
  10984. Glossary
  10985.  
  10986.  
  10987. ΓòÉΓòÉΓòÉ 2.77. Sharp Fillet at Given Position/Sharp Fillet at Current Position ΓòÉΓòÉΓòÉ
  10988.  
  10989.  
  10990. ΓòÉΓòÉΓòÉ <hidden> Sharp Fillet at Given Position/Sharp Fillet at Current Position - Syntax ΓòÉΓòÉΓòÉ
  10991.  
  10992. This order generates a curve that starts at a given position, and uses points 
  10993. P1 and P2, together with the sharpness specification S1. 
  10994.  
  10995. Sharp Fillet at Given Position (GSFLT) 
  10996. X'E4' (LEN, P0, P1, P2, P3, P4, PN-1, PN, S1, S2, SN/2) 
  10997.  
  10998. Sharp Fillet at Current Position (GCSFLT) 
  10999. X'A4' (LEN, P1, P2, P3, P4, PN-1, PN, S1, S2, SN/2) 
  11000.  
  11001.  
  11002. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - LEN ΓòÉΓòÉΓòÉ
  11003.  
  11004.  LEN (GLENGTH1) 
  11005.     Length of following data. 
  11006.  
  11007.  
  11008. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P0 ΓòÉΓòÉΓòÉ
  11009.  
  11010.  P0 (GPOINT) 
  11011.     Coordinate data of first curve start. 
  11012.  
  11013.     This parameter is only present in a Sharp Fillet at Given Position order. 
  11014.  
  11015.  
  11016. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P1 ΓòÉΓòÉΓòÉ
  11017.  
  11018.  P1 (GPOINT) 
  11019.     Coordinate data of first curve control point. 
  11020.  
  11021.  
  11022. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P2 ΓòÉΓòÉΓòÉ
  11023.  
  11024.  P2 (GPOINT) 
  11025.     Coordinate data of first curve end. 
  11026.  
  11027.  
  11028. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P3 ΓòÉΓòÉΓòÉ
  11029.  
  11030.  P3 (GPOINT) 
  11031.     Coordinate data of second curve control point. 
  11032.  
  11033.  
  11034. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P4 ΓòÉΓòÉΓòÉ
  11035.  
  11036.  P4 (GPOINT) 
  11037.     Coordinate data of second curve end. 
  11038.  
  11039.  
  11040. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - PN-1 ΓòÉΓòÉΓòÉ
  11041.  
  11042.  PN-1 (GPOINT) 
  11043.     Coordinate data of last curve control point. 
  11044.  
  11045.  
  11046. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - PN ΓòÉΓòÉΓòÉ
  11047.  
  11048.  PN (GPOINT) 
  11049.     Coordinate data of last curve end. 
  11050.  
  11051.  
  11052. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - S1 ΓòÉΓòÉΓòÉ
  11053.  
  11054.  S1 (GROF) 
  11055.     Sharpness specification of first curve. 
  11056.  
  11057.  
  11058. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - S2 ΓòÉΓòÉΓòÉ
  11059.  
  11060.  S2 (GROF) 
  11061.     Sharpness specification of second curve. 
  11062.  
  11063.  
  11064. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - SN/2 ΓòÉΓòÉΓòÉ
  11065.  
  11066.  SN/2 (GROF) 
  11067.     Sharpness specification of last curve. 
  11068.  
  11069.  
  11070. ΓòÉΓòÉΓòÉ <hidden> Sharp Fillet at Given Position/Sharp Fillet at Current Position - Parameters ΓòÉΓòÉΓòÉ
  11071.  
  11072.  LEN (GLENGTH1) 
  11073.     Length of following data. 
  11074.  
  11075.  P0 (GPOINT) 
  11076.     Coordinate data of first curve start. 
  11077.  
  11078.     This parameter is only present in a Sharp Fillet at Given Position order. 
  11079.  
  11080.  P1 (GPOINT) 
  11081.     Coordinate data of first curve control point. 
  11082.  
  11083.  P2 (GPOINT) 
  11084.     Coordinate data of first curve end. 
  11085.  
  11086.  P3 (GPOINT) 
  11087.     Coordinate data of second curve control point. 
  11088.  
  11089.  P4 (GPOINT) 
  11090.     Coordinate data of second curve end. 
  11091.  
  11092.  PN-1 (GPOINT) 
  11093.     Coordinate data of last curve control point. 
  11094.  
  11095.  PN (GPOINT) 
  11096.     Coordinate data of last curve end. 
  11097.  
  11098.  S1 (GROF) 
  11099.     Sharpness specification of first curve. 
  11100.  
  11101.  S2 (GROF) 
  11102.     Sharpness specification of second curve. 
  11103.  
  11104.  SN/2 (GROF) 
  11105.     Sharpness specification of last curve. 
  11106.  
  11107.  
  11108. ΓòÉΓòÉΓòÉ <hidden> Sharp Fillet at Given Position/Sharp Fillet at Current Position - Remarks ΓòÉΓòÉΓòÉ
  11109.  
  11110. Further points are used in groups of two to form a polycurve. 
  11111.  
  11112.  
  11113. ΓòÉΓòÉΓòÉ <hidden> Sharp Fillet at Given Position/Sharp Fillet at Current Position - Topics ΓòÉΓòÉΓòÉ
  11114.  
  11115. Select an item: 
  11116.  
  11117. Syntax
  11118. Parameters
  11119. Remarks
  11120. Glossary
  11121.  
  11122.  
  11123. ΓòÉΓòÉΓòÉ 3. Graphics Orders Data Types ΓòÉΓòÉΓòÉ
  11124.  
  11125. All data types are in Intel** format, unless noted otherwise. 
  11126.  
  11127.  
  11128. ΓòÉΓòÉΓòÉ 3.1. GBIT1 ΓòÉΓòÉΓòÉ
  11129.  
  11130. 1-bit field. 
  11131.  
  11132.  
  11133. ΓòÉΓòÉΓòÉ 3.2. GBIT2 ΓòÉΓòÉΓòÉ
  11134.  
  11135. 2-bit field. 
  11136.  
  11137.  
  11138. ΓòÉΓòÉΓòÉ 3.3. GBIT4 ΓòÉΓòÉΓòÉ
  11139.  
  11140. 4-bit field. 
  11141.  
  11142.  
  11143. ΓòÉΓòÉΓòÉ 3.4. GBIT5 ΓòÉΓòÉΓòÉ
  11144.  
  11145. 5-bit field. 
  11146.  
  11147.  
  11148. ΓòÉΓòÉΓòÉ 3.5. GBIT6 ΓòÉΓòÉΓòÉ
  11149.  
  11150. 6-bit field. 
  11151.  
  11152.  
  11153. ΓòÉΓòÉΓòÉ 3.6. GBIT7 ΓòÉΓòÉΓòÉ
  11154.  
  11155. 7-bit field. 
  11156.  
  11157.  
  11158. ΓòÉΓòÉΓòÉ 3.7. GBIT8 ΓòÉΓòÉΓòÉ
  11159.  
  11160. 8-bit field. 
  11161.  
  11162.  
  11163. ΓòÉΓòÉΓòÉ 3.8. GBIT16 ΓòÉΓòÉΓòÉ
  11164.  
  11165. 16-bit field. 
  11166.  
  11167.  
  11168. ΓòÉΓòÉΓòÉ 3.9. GBIT32 ΓòÉΓòÉΓòÉ
  11169.  
  11170. 32-bit field. 
  11171.  
  11172.  
  11173. ΓòÉΓòÉΓòÉ 3.10. GCHAR ΓòÉΓòÉΓòÉ
  11174.  
  11175. Signed 1-byte integer value. 
  11176.  
  11177.  
  11178. ΓòÉΓòÉΓòÉ 3.11. GDELPOINT ΓòÉΓòÉΓòÉ
  11179.  
  11180. Offset point structure. 
  11181.  
  11182.  
  11183.   GCHAR     dx;  /*  x coordinate offset. */
  11184.   GCHAR     dy;  /*  y coordinate offset. */
  11185.  
  11186.  
  11187. ΓòÉΓòÉΓòÉ <hidden> GDELPOINT Field - dx ΓòÉΓòÉΓòÉ
  11188.  
  11189.  dx (GCHAR) 
  11190.     x coordinate offset. 
  11191.  
  11192.  
  11193. ΓòÉΓòÉΓòÉ <hidden> GDELPOINT Field - dy ΓòÉΓòÉΓòÉ
  11194.  
  11195.  dy (GCHAR) 
  11196.     y coordinate offset. 
  11197.  
  11198.  
  11199. ΓòÉΓòÉΓòÉ 3.12. GFIXED ΓòÉΓòÉΓòÉ
  11200.  
  11201. Signed integer fraction (16:16). (This can be treated as a GLONG where the 
  11202. value has been multiplied by 65536.) 
  11203.  
  11204.  
  11205. ΓòÉΓòÉΓòÉ 3.13. GFIXEDS ΓòÉΓòÉΓòÉ
  11206.  
  11207. Signed integer fraction (8:8), which can be treated as a GSHORT data type, 
  11208. where the value has been multiplied by 256. 
  11209.  
  11210.  
  11211.   GCHAR      Integer;   /*  Integral component. */
  11212.   GUCHAR     Fraction;  /*  Fractional component. */
  11213.  
  11214.  
  11215. ΓòÉΓòÉΓòÉ <hidden> GFIXEDS Field - Integer ΓòÉΓòÉΓòÉ
  11216.  
  11217.  Integer (GCHAR) 
  11218.     Integral component. 
  11219.  
  11220.  
  11221. ΓòÉΓòÉΓòÉ <hidden> GFIXEDS Field - Fraction ΓòÉΓòÉΓòÉ
  11222.  
  11223.  Fraction (GUCHAR) 
  11224.     Fractional component. 
  11225.  
  11226.  
  11227. ΓòÉΓòÉΓòÉ 3.14. GHBITMAP ΓòÉΓòÉΓòÉ
  11228.  
  11229. Bit-map handle, which is the same as GULONG. 
  11230.  
  11231.  
  11232. ΓòÉΓòÉΓòÉ 3.15. GINDATT ΓòÉΓòÉΓòÉ
  11233.  
  11234. Individual attribute value.  For the attribute types color and background 
  11235. color, this is the same as GINDEX3. For the attribute types mix and background 
  11236. color, this is the same as GUCHAR. 
  11237.  
  11238.  
  11239. ΓòÉΓòÉΓòÉ 3.16. GINDEX3 ΓòÉΓòÉΓòÉ
  11240.  
  11241. Unsigned 3-byte integer value. 
  11242.  
  11243.  
  11244. ΓòÉΓòÉΓòÉ 3.17. GLENGTH1 ΓòÉΓòÉΓòÉ
  11245.  
  11246. 1-byte length. 
  11247.  
  11248.  
  11249. ΓòÉΓòÉΓòÉ 3.18. GLENGTH2 ΓòÉΓòÉΓòÉ
  11250.  
  11251. 2-byte length, in S/370 format; that is, the high-order byte precedes the 
  11252. low-order byte in storage. 
  11253.  
  11254.  
  11255. ΓòÉΓòÉΓòÉ 3.19. GLONG ΓòÉΓòÉΓòÉ
  11256.  
  11257. Signed 4-byte integer value. 
  11258.  
  11259.  
  11260. ΓòÉΓòÉΓòÉ 3.20. GPOINT ΓòÉΓòÉΓòÉ
  11261.  
  11262. Point structure. 
  11263.  
  11264.  
  11265.   GROSOL     x;  /*  x coordinate. */
  11266.   GROSOL     y;  /*  y coordinate. */
  11267.  
  11268.  
  11269. ΓòÉΓòÉΓòÉ <hidden> GPOINT Field - x ΓòÉΓòÉΓòÉ
  11270.  
  11271.  x (GROSOL) 
  11272.     x coordinate. 
  11273.  
  11274.  
  11275. ΓòÉΓòÉΓòÉ <hidden> GPOINT Field - y ΓòÉΓòÉΓòÉ
  11276.  
  11277.  y (GROSOL) 
  11278.     y coordinate. 
  11279.  
  11280.  
  11281. ΓòÉΓòÉΓòÉ 3.21. GPOINTB ΓòÉΓòÉΓòÉ
  11282.  
  11283. Point in bit-map structure. 
  11284.  
  11285.  
  11286.   GLONG     x;  /*  x coordinate. */
  11287.   GLONG     y;  /*  y coordinate. */
  11288.  
  11289.  
  11290. ΓòÉΓòÉΓòÉ <hidden> GPOINTB Field - x ΓòÉΓòÉΓòÉ
  11291.  
  11292.  x (GLONG) 
  11293.     x coordinate. 
  11294.  
  11295.  
  11296. ΓòÉΓòÉΓòÉ <hidden> GPOINTB Field - y ΓòÉΓòÉΓòÉ
  11297.  
  11298.  y (GLONG) 
  11299.     y coordinate. 
  11300.  
  11301.  
  11302. ΓòÉΓòÉΓòÉ 3.22. GPOLYS ΓòÉΓòÉΓòÉ
  11303.  
  11304. Array of Polygons. Each element of the array is a 16 bit count of the number of 
  11305. vertices, followed by the vertex coordinates. 
  11306.  
  11307.  
  11308. ΓòÉΓòÉΓòÉ 3.23. GREAL ΓòÉΓòÉΓòÉ
  11309.  
  11310. Real (single precision floating point). 
  11311.  
  11312. This data type is in Intel format. 
  11313.  
  11314.  
  11315. ΓòÉΓòÉΓòÉ 3.24. GROF ΓòÉΓòÉΓòÉ
  11316.  
  11317. Number representation which is the same as the GFIXED data type. 
  11318.  
  11319.  
  11320. ΓòÉΓòÉΓòÉ 3.25. GROFUFS ΓòÉΓòÉΓòÉ
  11321.  
  11322. Number representation which is either GFIXED, GUFIXEDS or GREAL data type, 
  11323. depending on the presentation-space format. 
  11324.  
  11325.  
  11326. ΓòÉΓòÉΓòÉ 3.26. GROUFS ΓòÉΓòÉΓòÉ
  11327.  
  11328. Number representation which is either the GUFIXEDS or GREAL data type, 
  11329. depending on the presentation-space format. 
  11330.  
  11331.  
  11332. ΓòÉΓòÉΓòÉ 3.27. GROL ΓòÉΓòÉΓòÉ
  11333.  
  11334. Number representation, which is the same as the GLONG data type. 
  11335.  
  11336.  
  11337. ΓòÉΓòÉΓòÉ 3.28. GROSOL ΓòÉΓòÉΓòÉ
  11338.  
  11339. Number representation which is either the GSHORT or the GLONG data type, 
  11340. depending on the presentation-space format; see PS_FORMAT in the flOptions 
  11341. parameter of the GpiCreatePS function. 
  11342.  
  11343.  
  11344. ΓòÉΓòÉΓòÉ 3.29. GROUL ΓòÉΓòÉΓòÉ
  11345.  
  11346. Number representation, which is the same as the GULONG data type. 
  11347.  
  11348.  
  11349. ΓòÉΓòÉΓòÉ 3.30. GSHORT ΓòÉΓòÉΓòÉ
  11350.  
  11351. Signed 2-byte integer value. 
  11352.  
  11353.  
  11354. ΓòÉΓòÉΓòÉ 3.31. GSHORT370 ΓòÉΓòÉΓòÉ
  11355.  
  11356. Signed 2-byte integer value, in S/370 format (that is, the high-order byte 
  11357. precedes the low-order byte in storage). 
  11358.  
  11359.  
  11360. ΓòÉΓòÉΓòÉ 3.32. GSTR ΓòÉΓòÉΓòÉ
  11361.  
  11362. String with an explicit length count. 
  11363.  
  11364.  
  11365. ΓòÉΓòÉΓòÉ 3.33. GUCHAR ΓòÉΓòÉΓòÉ
  11366.  
  11367. Unsigned 1-byte integer value. 
  11368.  
  11369.  
  11370. ΓòÉΓòÉΓòÉ 3.34. GUFIXEDS ΓòÉΓòÉΓòÉ
  11371.  
  11372. Unsigned integer fraction (8:8) which can be treated as a GUSHORT data type, 
  11373. where the value has been multiplied by 256. 
  11374.  
  11375.  
  11376. ΓòÉΓòÉΓòÉ 3.35. GULONG ΓòÉΓòÉΓòÉ
  11377.  
  11378. Unsigned 4-byte integer value. 
  11379.  
  11380.  
  11381. ΓòÉΓòÉΓòÉ 3.36. GULONG370 ΓòÉΓòÉΓòÉ
  11382.  
  11383. Unsigned 4-byte integer value, in S/370 format (that is, the high-order byte 
  11384. first, the low-order byte last in storage). 
  11385.  
  11386.  
  11387. ΓòÉΓòÉΓòÉ 3.37. GUNDF ΓòÉΓòÉΓòÉ
  11388.  
  11389. Undefined string of 8-bit bytes. 
  11390.  
  11391.  
  11392. ΓòÉΓòÉΓòÉ 3.38. GUNDF1 ΓòÉΓòÉΓòÉ
  11393.  
  11394. Undefined 8-bit byte. 
  11395.  
  11396.  
  11397. ΓòÉΓòÉΓòÉ 3.39. GUSHORT ΓòÉΓòÉΓòÉ
  11398.  
  11399. Unsigned 2-byte integer value. 
  11400.  
  11401.  
  11402. ΓòÉΓòÉΓòÉ 3.40. GUSHORT370 ΓòÉΓòÉΓòÉ
  11403.  
  11404. Unsigned 2-byte integer value, in S/370 format; that is, the high-order byte 
  11405. precedes the low-order byte in storage. 
  11406.  
  11407.  
  11408. ΓòÉΓòÉΓòÉ 4. Errors ΓòÉΓòÉΓòÉ
  11409.  
  11410. Error codes are furnished numerically and alphabetically. 
  11411.  
  11412. For a listing of error codes by number, see Error Number and Name. 
  11413.  
  11414. For a listing of error codes and their explanations, see Error Name and 
  11415. Explanation. 
  11416.  
  11417.  
  11418. ΓòÉΓòÉΓòÉ 4.1. Error Number and Name ΓòÉΓòÉΓòÉ
  11419.  
  11420. This section lists PM errors returned by WinGetLastError in order of their 
  11421. error numbers. For explanations of these errors, see Error Name and 
  11422. Explanation. 
  11423.  
  11424.  Error Number   Error Constant 
  11425.  0x0000         PMERR_OK 
  11426.  0x0000         PMERR_OK 
  11427.  0x0000         PMERR_OK 
  11428.  0x0836         NERR_NetNotStarted 
  11429.  0x0845         NERR_RedirectedPath 
  11430.  0x084B         NERR_BufTooSmall 
  11431.  0x085E         NERR_InvalidAPI 
  11432.  0x0866         NERR_QNotFound 
  11433.  0x0867         NERR_JobNotFound 
  11434.  0x0868         NERR_DestNotFound 
  11435.  0x0869         NERR_DestExists 
  11436.  0x086A         NERR_QExists 
  11437.  0x086B         NERR_QNoRoom 
  11438.  0x086C         NERR_JobNoRoom 
  11439.  0x086D         NERR_DestNoRoom 
  11440.  0x086E         NERR_DestIdle 
  11441.  0x086F         NERR_DestInvalidOp 
  11442.  0x0871         NERR_SpoolerNotLoaded 
  11443.  0x0872         NERR_DestInvalidState 
  11444.  0x0874         NERR_JobInvalidState 
  11445.  0x0875         NERR_SpoolNoMemory 
  11446.  0x0876         NERR_DriverNotFound 
  11447.  0x0877         NERR_DataTypeInvalid 
  11448.  0x0878         NERR_ProcNotFound 
  11449.  0x0925         NERR_BadDev 
  11450.  0x0927         NERR_CommDevInUse 
  11451.  0x092F         NERR_InvalidComputer 
  11452.  0x0961         NERR_OpenFiles 
  11453.  0x0965         NERR_LocalDrive 
  11454.  0x1001         PMERR_INVALID_HWND 
  11455.  0x1001         HMERR_NO_FRAME_WND_IN_CHAIN 
  11456.  0x1002         PMERR_INVALID_HMQ 
  11457.  0x1002         HMERR_INVALID_ASSOC_APP_WND 
  11458.  0x1003         PMERR_PARAMETER_OUT_OF_RANGE 
  11459.  0x1003         HMERR_INVALID_ASSOC_HELP_INST 
  11460.  0x1004         PMERR_WINDOW_LOCK_UNDERFLOW 
  11461.  0x1004         HMERR_INVALID_DESTROY_HELP_INST 
  11462.  0x1005         PMERR_WINDOW_LOCK_OVERFLOW 
  11463.  0x1005         HMERR_NO_HELP_INST_IN_CHAIN 
  11464.  0x1006         PMERR_BAD_WINDOW_LOCK_COUNT 
  11465.  0x1006         HMERR_INVALID_HELP_INSTANCE_HDL 
  11466.  0x1007         PMERR_WINDOW_NOT_LOCKED 
  11467.  0x1007         HMERR_INVALID_QUERY_APP_WND 
  11468.  0x1008         PMERR_INVALID_SELECTOR 
  11469.  0x1008         HMERR_HELP_INST_CALLED_INVALID 
  11470.  0x1009         PMERR_CALL_FROM_WRONG_THREAD 
  11471.  0x1009         HMERR_HELPTABLE_UNDEFINE 
  11472.  0x100A         PMERR_RESOURCE_NOT_FOUND 
  11473.  0x100A         HMERR_HELP_INSTANCE_UNDEFINE 
  11474.  0x100B         PMERR_INVALID_STRING_PARM 
  11475.  0x100B         HMERR_HELPITEM_NOT_FOUND 
  11476.  0x100C         PMERR_INVALID_HHEAP 
  11477.  0x100C         HMERR_INVALID_HELPSUBITEM_SIZE 
  11478.  0x100D         PMERR_INVALID_HEAP_POINTER 
  11479.  0x100D         HMERR_HELPSUBITEM_NOT_FOUND 
  11480.  0x100E         PMERR_INVALID_HEAP_SIZE_PARM 
  11481.  0x100F         PMERR_INVALID_HEAP_SIZE 
  11482.  0x1010         PMERR_INVALID_HEAP_SIZE_WORD 
  11483.  0x1011         PMERR_HEAP_OUT_OF_MEMORY 
  11484.  0x1012         PMERR_HEAP_MAX_SIZE_REACHED 
  11485.  0x1013         PMERR_INVALID_HATOMTBL 
  11486.  0x1014         PMERR_INVALID_ATOM 
  11487.  0x1015         PMERR_INVALID_ATOM_NAME 
  11488.  0x1016         PMERR_INVALID_INTEGER_ATOM 
  11489.  0x1017         PMERR_ATOM_NAME_NOT_FOUND 
  11490.  0x1018         PMERR_QUEUE_TOO_LARGE 
  11491.  0x1019         PMERR_INVALID_FLAG 
  11492.  0x101A         PMERR_INVALID_HACCEL 
  11493.  0x101B         PMERR_INVALID_HPTR 
  11494.  0x101C         PMERR_INVALID_HENUM 
  11495.  0x101D         PMERR_INVALID_SRC_CODEPAGE 
  11496.  0x101E         PMERR_INVALID_DST_CODEPAGE 
  11497.  0x101F         PMERR_UNKNOWN_COMPONENT_ID 
  11498.  0x1020         PMERR_UNKNOWN_ERROR_CODE 
  11499.  0x1021         PMERR_SEVERITY_LEVELS 
  11500.  0x1034         PMERR_INVALID_RESOURCE_FORMAT 
  11501.  0x1035         WINDBG_WINDOW_UNLOCK_WAIT 
  11502.  0x1036         PMERR_NO_MSG_QUEUE 
  11503.  0x1037         PMERR_CANNOT_SET_FOCUS 
  11504.  0x1038         PMERR_QUEUE_FULL 
  11505.  0x1039         PMERR_LIBRARY_LOAD_FAILED 
  11506.  0x103A         PMERR_PROCEDURE_LOAD_FAILED 
  11507.  0x103B         PMERR_LIBRARY_DELETE_FAILED 
  11508.  0x103C         PMERR_PROCEDURE_DELETE_FAILED 
  11509.  0x103D         PMERR_ARRAY_TOO_LARGE 
  11510.  0x103E         PMERR_ARRAY_TOO_SMALL 
  11511.  0x103F         PMERR_DATATYPE_ENTRY_BAD_INDEX 
  11512.  0x1040         PMERR_DATATYPE_ENTRY_CTL_BAD 
  11513.  0x1041         PMERR_DATATYPE_ENTRY_CTL_MISS 
  11514.  0x1042         PMERR_DATATYPE_ENTRY_INVALID 
  11515.  0x1043         PMERR_DATATYPE_ENTRY_NOT_NUM 
  11516.  0x1044         PMERR_DATATYPE_ENTRY_NOT_OFF 
  11517.  0x1045         PMERR_DATATYPE_INVALID 
  11518.  0x1046         PMERR_DATATYPE_NOT_UNIQUE 
  11519.  0x1047         PMERR_DATATYPE_TOO_LONG 
  11520.  0x1048         PMERR_DATATYPE_TOO_SMALL 
  11521.  0x1049         PMERR_DIRECTION_INVALID 
  11522.  0x104A         PMERR_INVALID_HAB 
  11523.  0x104D         PMERR_INVALID_HSTRUCT 
  11524.  0x104E         PMERR_LENGTH_TOO_SMALL 
  11525.  0x104F         PMERR_MSGID_TOO_SMALL 
  11526.  0x1050         PMERR_NO_HANDLE_ALLOC 
  11527.  0x1051         PMERR_NOT_IN_A_PM_SESSION 
  11528.  0x1052         PMERR_MSG_QUEUE_ALREADY_EXISTS 
  11529.  0x1055         PMERR_OLD_RESOURCE 
  11530.  0x1056         PMERR_WPDSERVER_IS_ACTIVE 
  11531.  0x1057         PMERR_WPDSERVER_NOT_STARTED 
  11532.  0x1058         PMERR_SOMDD_IS_ACTIVE 
  11533.  0x1059         PMERR_SOMDD_NOT_STARTED 
  11534.  0x1101         PMERR_INVALID_PIB 
  11535.  0x1102         PMERR_INSUFF_SPACE_TO_ADD 
  11536.  0x1103         PMERR_INVALID_GROUP_HANDLE 
  11537.  0x1104         PMERR_DUPLICATE_TITLE 
  11538.  0x1105         PMERR_INVALID_TITLE 
  11539.  0x1106         PMERR_INVALID_TARGET_HANDLE 
  11540.  0x1107         PMERR_HANDLE_NOT_IN_GROUP 
  11541.  0x1108         PMERR_INVALID_PATH_STATEMENT 
  11542.  0x1109         PMERR_NO_PROGRAM_FOUND 
  11543.  0x110A         PMERR_INVALID_BUFFER_SIZE 
  11544.  0x110B         PMERR_BUFFER_TOO_SMALL 
  11545.  0x110C         PMERR_PL_INITIALISATION_FAIL 
  11546.  0x110D         PMERR_CANT_DESTROY_SYS_GROUP 
  11547.  0x110E         PMERR_INVALID_TYPE_CHANGE 
  11548.  0x110F         PMERR_INVALID_PROGRAM_HANDLE 
  11549.  0x1110         PMERR_NOT_CURRENT_PL_VERSION 
  11550.  0x1111         PMERR_INVALID_CIRCULAR_REF 
  11551.  0x1112         PMERR_MEMORY_ALLOCATION_ERR 
  11552.  0x1113         PMERR_MEMORY_DEALLOCATION_ERR 
  11553.  0x1114         PMERR_TASK_HEADER_TOO_BIG 
  11554.  0x1115         PMERR_INVALID_INI_FILE_HANDLE 
  11555.  0x1116         PMERR_MEMORY_SHARE 
  11556.  0x1117         PMERR_OPEN_QUEUE 
  11557.  0x1118         PMERR_CREATE_QUEUE 
  11558.  0x1119         PMERR_WRITE_QUEUE 
  11559.  0x111A         PMERR_READ_QUEUE 
  11560.  0x111B         PMERR_CALL_NOT_EXECUTED 
  11561.  0x111C         PMERR_UNKNOWN_APIPKT 
  11562.  0x111D         PMERR_INITHREAD_EXISTS 
  11563.  0x111E         PMERR_CREATE_THREAD 
  11564.  0x111F         PMERR_NO_HK_PROFILE_INSTALLED 
  11565.  0x1120         PMERR_INVALID_DIRECTORY 
  11566.  0x1121         PMERR_WILDCARD_IN_FILENAME 
  11567.  0x1122         PMERR_FILENAME_BUFFER_FULL 
  11568.  0x1123         PMERR_FILENAME_TOO_LONG 
  11569.  0x1124         PMERR_INI_FILE_IS_SYS_OR_USER 
  11570.  0x1125         PMERR_BROADCAST_PLMSG 
  11571.  0x1126         PMERR_190_INIT_DONE 
  11572.  0x1127         PMERR_HMOD_FOR_PMSHAPI 
  11573.  0x1128         PMERR_SET_HK_PROFILE 
  11574.  0x1129         PMERR_API_NOT_ALLOWED 
  11575.  0x112A         PMERR_INI_STILL_OPEN 
  11576.  0x112B         PMERR_PROGDETAILS_NOT_IN_INI 
  11577.  0x112C         PMERR_PIBSTRUCT_NOT_IN_INI 
  11578.  0x112D         PMERR_INVALID_DISKPROGDETAILS 
  11579.  0x112E         PMERR_PROGDETAILS_READ_FAILURE 
  11580.  0x112F         PMERR_PROGDETAILS_WRITE_FAILURE 
  11581.  0x1130         PMERR_PROGDETAILS_QSIZE_FAILURE 
  11582.  0x1131         PMERR_INVALID_PROGDETAILS 
  11583.  0x1132         PMERR_SHEPROFILEHOOK_NOT_FOUND 
  11584.  0x1133         PMERR_190PLCONVERTED 
  11585.  0x1134         PMERR_FAILED_TO_CONVERT_INI_PL 
  11586.  0x1135         PMERR_PMSHAPI_NOT_INITIALISED 
  11587.  0x1136         PMERR_INVALID_SHELL_API_HOOK_ID 
  11588.  0x1200         PMERR_DOS_ERROR 
  11589.  0x1201         PMERR_NO_SPACE 
  11590.  0x1202         PMERR_INVALID_SWITCH_HANDLE 
  11591.  0x1203         PMERR_NO_HANDLE 
  11592.  0x1204         PMERR_INVALID_PROCESS_ID 
  11593.  0x1205         PMERR_NOT_SHELL 
  11594.  0x1206         PMERR_INVALID_WINDOW 
  11595.  0x1207         PMERR_INVALID_POST_MSG 
  11596.  0x1208         PMERR_INVALID_PARAMETERS 
  11597.  0x1208         PMERR_INVALID_PARAMETERS
  11598.  0x1209         PMERR_INVALID_PROGRAM_TYPE 
  11599.  0x120A         PMERR_NOT_EXTENDED_FOCUS 
  11600.  0x120B         PMERR_INVALID_SESSION_ID 
  11601.  0x120C         PMERR_SMG_INVALID_ICON_FILE 
  11602.  0x120D         PMERR_SMG_ICON_NOT_CREATED 
  11603.  0x120E         PMERR_SHL_DEBUG 
  11604.  0x1301         PMERR_OPENING_INI_FILE 
  11605.  0x1302         PMERR_INI_FILE_CORRUPT 
  11606.  0x1303         PMERR_INVALID_PARM 
  11607.  0x1304         PMERR_NOT_IN_IDX 
  11608.  0x1305         PMERR_NO_ENTRIES_IN_GROUP 
  11609.  0x1306         PMERR_INI_WRITE_FAIL 
  11610.  0x1307         PMERR_IDX_FULL 
  11611.  0x1308         PMERR_INI_PROTECTED 
  11612.  0x1309         PMERR_MEMORY_ALLOC 
  11613.  0x130A         PMERR_INI_INIT_ALREADY_DONE 
  11614.  0x130B         PMERR_INVALID_INTEGER 
  11615.  0x130C         PMERR_INVALID_ASCIIZ 
  11616.  0x130D         PMERR_CAN_NOT_CALL_SPOOLER 
  11617.  0x130D         PMERR_VALIDATION_REJECTED 
  11618.  0x1401         PMERR_WARNING_WINDOW_NOT_KILLED 
  11619.  0x1402         PMERR_ERROR_INVALID_WINDOW 
  11620.  0x1403         PMERR_ALREADY_INITIALIZED 
  11621.  0x1405         PMERR_MSG_PROG_NO_MOU 
  11622.  0x1406         PMERR_MSG_PROG_NON_RECOV 
  11623.  0x1407         PMERR_WINCONV_INVALID_PATH 
  11624.  0x1408         PMERR_PI_NOT_INITIALISED 
  11625.  0x1409         PMERR_PL_NOT_INITIALISED 
  11626.  0x140A         PMERR_NO_TASK_MANAGER 
  11627.  0x140B         PMERR_SAVE_NOT_IN_PROGRESS 
  11628.  0x140C         PMERR_NO_STACK_SPACE 
  11629.  0x140D         PMERR_INVALID_COLR_FIELD 
  11630.  0x140E         PMERR_INVALID_COLR_VALUE 
  11631.  0x140F         PMERR_COLR_WRITE 
  11632.  0x1501         PMERR_TARGET_FILE_EXISTS 
  11633.  0x1502         PMERR_SOURCE_SAME_AS_TARGET 
  11634.  0x1503         PMERR_SOURCE_FILE_NOT_FOUND 
  11635.  0x1504         PMERR_INVALID_NEW_PATH 
  11636.  0x1505         PMERR_TARGET_FILE_NOT_FOUND 
  11637.  0x1506         PMERR_INVALID_DRIVE_NUMBER 
  11638.  0x1507         PMERR_NAME_TOO_LONG 
  11639.  0x1508         PMERR_NOT_ENOUGH_ROOM_ON_DISK 
  11640.  0x1509         PMERR_NOT_ENOUGH_MEM 
  11641.  0x150B         PMERR_LOG_DRV_DOES_NOT_EXIST 
  11642.  0x150C         PMERR_INVALID_DRIVE 
  11643.  0x150D         PMERR_ACCESS_DENIED 
  11644.  0x150E         PMERR_NO_FIRST_SLASH 
  11645.  0x150F         PMERR_READ_ONLY_FILE 
  11646.  0x151F         PMERR_GROUP_PROTECTED 
  11647.  0x152F         PMERR_INVALID_PROGRAM_CATEGORY 
  11648.  0x1530         PMERR_INVALID_APPL 
  11649.  0x1531         PMERR_CANNOT_START 
  11650.  0x1532         PMERR_STARTED_IN_BACKGROUND 
  11651.  0x1533         PMERR_INVALID_HAPP 
  11652.  0x1534         PMERR_CANNOT_STOP 
  11653.  0x1601         PMERR_INTERNAL_ERROR_1 
  11654.  0x1602         PMERR_INTERNAL_ERROR_2 
  11655.  0x1603         PMERR_INTERNAL_ERROR_3 
  11656.  0x1604         PMERR_INTERNAL_ERROR_4 
  11657.  0x1605         PMERR_INTERNAL_ERROR_5 
  11658.  0x1606         PMERR_INTERNAL_ERROR_6 
  11659.  0x1607         PMERR_INTERNAL_ERROR_7 
  11660.  0x1608         PMERR_INTERNAL_ERROR_8 
  11661.  0x1609         PMERR_INTERNAL_ERROR_9 
  11662.  0x160A         PMERR_INTERNAL_ERROR_10 
  11663.  0x160B         PMERR_INTERNAL_ERROR_11 
  11664.  0x160C         PMERR_INTERNAL_ERROR_12 
  11665.  0x160D         PMERR_INTERNAL_ERROR_13 
  11666.  0x160E         PMERR_INTERNAL_ERROR_14 
  11667.  0x160F         PMERR_INTERNAL_ERROR_15 
  11668.  0x1610         PMERR_INTERNAL_ERROR_16 
  11669.  0x1611         PMERR_INTERNAL_ERROR_17 
  11670.  0x1612         PMERR_INTERNAL_ERROR_18 
  11671.  0x1613         PMERR_INTERNAL_ERROR_19 
  11672.  0x1614         PMERR_INTERNAL_ERROR_20 
  11673.  0x1615         PMERR_INTERNAL_ERROR_21 
  11674.  0x1616         PMERR_INTERNAL_ERROR_22 
  11675.  0x1617         PMERR_INTERNAL_ERROR_23 
  11676.  0x1618         PMERR_INTERNAL_ERROR_24 
  11677.  0x1619         PMERR_INTERNAL_ERROR_25 
  11678.  0x161A         PMERR_INTERNAL_ERROR_26 
  11679.  0x161B         PMERR_INTERNAL_ERROR_27 
  11680.  0x161C         PMERR_INTERNAL_ERROR_28 
  11681.  0x161D         PMERR_INTERNAL_ERROR_29 
  11682.  0x1630         PMERR_INVALID_FREE_MESSAGE_ID 
  11683.  0x1641         PMERR_FUNCTION_NOT_SUPPORTED 
  11684.  0x1642         PMERR_INVALID_ARRAY_COUNT 
  11685.  0x1643         PMERR_INVALID_LENGTH 
  11686.  0x1644         PMERR_INVALID_BUNDLE_TYPE 
  11687.  0x1645         PMERR_INVALID_PARAMETER 
  11688.  0x1646         PMERR_INVALID_NUMBER_OF_PARMS 
  11689.  0x1647         PMERR_GREATER_THAN_64K 
  11690.  0x1648         PMERR_INVALID_PARAMETER_TYPE 
  11691.  0x1649         PMERR_NEGATIVE_STRCOND_DIM 
  11692.  0x164A         PMERR_INVALID_NUMBER_OF_TYPES 
  11693.  0x164B         PMERR_INCORRECT_HSTRUCT 
  11694.  0x164C         PMERR_INVALID_ARRAY_SIZE 
  11695.  0x164D         PMERR_INVALID_CONTROL_DATATYPE 
  11696.  0x164E         PMERR_INCOMPLETE_CONTROL_SEQU 
  11697.  0x164F         PMERR_INVALID_DATATYPE 
  11698.  0x1650         PMERR_INCORRECT_DATATYPE 
  11699.  0x1651         PMERR_NOT_SELF_DESCRIBING_DTYP 
  11700.  0x1652         PMERR_INVALID_CTRL_SEQ_INDEX 
  11701.  0x1653         PMERR_INVALID_TYPE_FOR_LENGTH 
  11702.  0x1654         PMERR_INVALID_TYPE_FOR_OFFSET 
  11703.  0x1655         PMERR_INVALID_TYPE_FOR_MPARAM 
  11704.  0x1656         PMERR_INVALID_MESSAGE_ID 
  11705.  0x1657         PMERR_C_LENGTH_TOO_SMALL 
  11706.  0x1658         PMERR_APPL_STRUCTURE_TOO_SMALL 
  11707.  0x1659         PMERR_INVALID_ERRORINFO_HANDLE 
  11708.  0x165A         PMERR_INVALID_CHARACTER_INDEX 
  11709.  0x1700         WPERR_PROTECTED_CLASS 
  11710.  0x1701         WPERR_INVALID_CLASS 
  11711.  0x1702         WPERR_INVALID_SUPERCLASS 
  11712.  0x1703         WPERR_NO_MEMORY 
  11713.  0x1704         WPERR_SEMAPHORE_ERROR 
  11714.  0x1705         WPERR_BUFFER_TOO_SMALL 
  11715.  0x1706         WPERR_CLSLOADMOD_FAILED 
  11716.  0x1707         WPERR_CLSPROCADDR_FAILED 
  11717.  0x1708         WPERR_OBJWORD_LOCATION 
  11718.  0x1709         WPERR_INVALID_OBJECT 
  11719.  0x170A         WPERR_MEMORY_CLEANUP 
  11720.  0x170B         WPERR_INVALID_MODULE 
  11721.  0x170C         WPERR_INVALID_OLDCLASS 
  11722.  0x170D         WPERR_INVALID_NEWCLASS 
  11723.  0x170E         WPERR_NOT_IMMEDIATE_CHILD 
  11724.  0x170F         WPERR_NOT_WORKPLACE_CLASS 
  11725.  0x1710         WPERR_CANT_REPLACE_METACLS 
  11726.  0x1711         WPERR_INI_FILE_WRITE 
  11727.  0x1712         WPERR_INVALID_FOLDER 
  11728.  0x1713         WPERR_BUFFER_OVERFLOW 
  11729.  0x1714         WPERR_OBJECT_NOT_FOUND 
  11730.  0x1715         WPERR_INVALID_HFIND 
  11731.  0x1716         WPERR_INVALID_COUNT 
  11732.  0x1717         WPERR_INVALID_BUFFER 
  11733.  0x1718         WPERR_ALREADY_EXISTS 
  11734.  0x1719         WPERR_INVALID_FLAGS 
  11735.  0x1720         WPERR_INVALID_OBJECTID 
  11736.  0x1721         WPERR_INVALID_TARGET_OBJECT 
  11737.  0x1F00         PMERR_NOT_DRAGGING 
  11738.  0x2001         PMERR_ALREADY_IN_AREA 
  11739.  0x2001         HMERR_INDEX_NOT_FOUND 
  11740.  0x2002         PMERR_ALREADY_IN_ELEMENT 
  11741.  0x2002         HMERR_CONTENT_NOT_FOUND 
  11742.  0x2003         PMERR_ALREADY_IN_PATH 
  11743.  0x2003         HMERR_OPEN_LIB_FILE 
  11744.  0x2004         PMERR_ALREADY_IN_SEG 
  11745.  0x2004         HMERR_READ_LIB_FILE 
  11746.  0x2005         PMERR_AREA_INCOMPLETE 
  11747.  0x2005         HMERR_CLOSE_LIB_FILE 
  11748.  0x2006         PMERR_BASE_ERROR 
  11749.  0x2006         HMERR_INVALID_LIB_FILE 
  11750.  0x2007         PMERR_BITBLT_LENGTH_EXCEEDED 
  11751.  0x2007         HMERR_NO_MEMORY 
  11752.  0x2008         PMERR_BITMAP_IN_USE 
  11753.  0x2008         HMERR_ALLOCATE_SEGMENT 
  11754.  0x2009         PMERR_BITMAP_IS_SELECTED 
  11755.  0x2009         HMERR_FREE_MEMORY 
  11756.  0x200A         PMERR_BITMAP_NOT_FOUND 
  11757.  0x200B         PMERR_BITMAP_NOT_SELECTED 
  11758.  0x200C         PMERR_BOUNDS_OVERFLOW 
  11759.  0x200D         PMERR_CALLED_SEG_IS_CHAINED 
  11760.  0x200E         PMERR_CALLED_SEG_IS_CURRENT 
  11761.  0x200F         PMERR_CALLED_SEG_NOT_FOUND 
  11762.  0x2010         PMERR_CANNOT_DELETE_ALL_DATA 
  11763.  0x2010         HMERR_PANEL_NOT_FOUND 
  11764.  0x2011         PMERR_CANNOT_REPLACE_ELEMENT_0 
  11765.  0x2011         HMERR_DATABASE_NOT_OPEN 
  11766.  0x2012         PMERR_COL_TABLE_NOT_REALIZABLE 
  11767.  0x2013         PMERR_COL_TABLE_NOT_REALIZED 
  11768.  0x2013         HMERR_LOAD_DLL 
  11769.  0x2014         PMERR_COORDINATE_OVERFLOW 
  11770.  0x2015         PMERR_CORR_FORMAT_MISMATCH 
  11771.  0x2016         PMERR_DATA_TOO_LONG 
  11772.  0x2017         PMERR_DC_IS_ASSOCIATED 
  11773.  0x2018         PMERR_DESC_STRING_TRUNCATED 
  11774.  0x2019         PMERR_DEVICE_DRIVER_ERROR_1 
  11775.  0x201A         PMERR_DEVICE_DRIVER_ERROR_2 
  11776.  0x201B         PMERR_DEVICE_DRIVER_ERROR_3 
  11777.  0x201C         PMERR_DEVICE_DRIVER_ERROR_4 
  11778.  0x201D         PMERR_DEVICE_DRIVER_ERROR_5 
  11779.  0x201E         PMERR_DEVICE_DRIVER_ERROR_6 
  11780.  0x201F         PMERR_DEVICE_DRIVER_ERROR_7 
  11781.  0x2020         PMERR_DEVICE_DRIVER_ERROR_8 
  11782.  0x2021         PMERR_DEVICE_DRIVER_ERROR_9 
  11783.  0x2022         PMERR_DEVICE_DRIVER_ERROR_10 
  11784.  0x2023         PMERR_DEV_FUNC_NOT_INSTALLED 
  11785.  0x2024         PMERR_DOSOPEN_FAILURE 
  11786.  0x2025         PMERR_DOSREAD_FAILURE 
  11787.  0x2026         PMERR_DRIVER_NOT_FOUND 
  11788.  0x2027         PMERR_DUP_SEG 
  11789.  0x2028         PMERR_DYNAMIC_SEG_SEQ_ERROR 
  11790.  0x2029         PMERR_DYNAMIC_SEG_ZERO_INV 
  11791.  0x202A         PMERR_ELEMENT_INCOMPLETE 
  11792.  0x202B         PMERR_ESC_CODE_NOT_SUPPORTED 
  11793.  0x202C         PMERR_EXCEEDS_MAX_SEG_LENGTH 
  11794.  0x202D         PMERR_FONT_AND_MODE_MISMATCH 
  11795.  0x202E         PMERR_FONT_FILE_NOT_LOADED 
  11796.  0x202F         PMERR_FONT_NOT_LOADED 
  11797.  0x2030         PMERR_FONT_TOO_BIG 
  11798.  0x2031         PMERR_HARDWARE_INIT_FAILURE 
  11799.  0x2032         PMERR_HBITMAP_BUSY 
  11800.  0x2033         PMERR_HDC_BUSY 
  11801.  0x2034         PMERR_HRGN_BUSY 
  11802.  0x2035         PMERR_HUGE_FONTS_NOT_SUPPORTED 
  11803.  0x2036         PMERR_ID_HAS_NO_BITMAP 
  11804.  0x2037         PMERR_IMAGE_INCOMPLETE 
  11805.  0x2038         PMERR_INCOMPAT_COLOR_FORMAT 
  11806.  0x2039         PMERR_INCOMPAT_COLOR_OPTIONS 
  11807.  0x203A         PMERR_INCOMPATIBLE_BITMAP 
  11808.  0x203B         PMERR_INCOMPATIBLE_METAFILE 
  11809.  0x203C         PMERR_INCORRECT_DC_TYPE 
  11810.  0x203D         PMERR_INSUFFICIENT_DISK_SPACE 
  11811.  0x203E         PMERR_INSUFFICIENT_MEMORY 
  11812.  0x203F         PMERR_INV_ANGLE_PARM 
  11813.  0x2040         PMERR_INV_ARC_CONTROL 
  11814.  0x2041         PMERR_INV_AREA_CONTROL 
  11815.  0x2042         PMERR_INV_ARC_POINTS 
  11816.  0x2043         PMERR_INV_ATTR_MODE 
  11817.  0x2044         PMERR_INV_BACKGROUND_COL_ATTR 
  11818.  0x2045         PMERR_INV_BACKGROUND_MIX_ATTR 
  11819.  0x2046         PMERR_INV_BITBLT_MIX 
  11820.  0x2047         PMERR_INV_BITBLT_STYLE 
  11821.  0x2048         PMERR_INV_BITMAP_DIMENSION 
  11822.  0x2049         PMERR_INV_BOX_CONTROL 
  11823.  0x204A         PMERR_INV_BOX_ROUNDING_PARM 
  11824.  0x204B         PMERR_INV_CHAR_ANGLE_ATTR 
  11825.  0x204C         PMERR_INV_CHAR_DIRECTION_ATTR 
  11826.  0x204D         PMERR_INV_CHAR_MODE_ATTR 
  11827.  0x204E         PMERR_INV_CHAR_POS_OPTIONS 
  11828.  0x204F         PMERR_INV_CHAR_SET_ATTR 
  11829.  0x2050         PMERR_INV_CHAR_SHEAR_ATTR 
  11830.  0x2051         PMERR_INV_CLIP_PATH_OPTIONS 
  11831.  0x2052         PMERR_INV_CODEPAGE 
  11832.  0x2053         PMERR_INV_COLOR_ATTR 
  11833.  0x2054         PMERR_INV_COLOR_DATA 
  11834.  0x2055         PMERR_INV_COLOR_FORMAT 
  11835.  0x2056         PMERR_INV_COLOR_INDEX 
  11836.  0x2057         PMERR_INV_COLOR_OPTIONS 
  11837.  0x2058         PMERR_INV_COLOR_START_INDEX 
  11838.  0x2059         PMERR_INV_COORD_OFFSET 
  11839.  0x205A         PMERR_INV_COORD_SPACE 
  11840.  0x205B         PMERR_INV_COORDINATE 
  11841.  0x205C         PMERR_INV_CORRELATE_DEPTH 
  11842.  0x205D         PMERR_INV_CORRELATE_TYPE 
  11843.  0x205E         PMERR_INV_CURSOR_BITMAP 
  11844.  0x205F         PMERR_INV_DC_DATA 
  11845.  0x2060         PMERR_INV_DC_TYPE 
  11846.  0x2061         PMERR_INV_DEVICE_NAME 
  11847.  0x2062         PMERR_INV_DEV_MODES_OPTIONS 
  11848.  0x2063         PMERR_INV_DRAW_CONTROL 
  11849.  0x2064         PMERR_INV_DRAW_VALUE 
  11850.  0x2065         PMERR_INV_DRAWING_MODE 
  11851.  0x2066         PMERR_INV_DRIVER_DATA 
  11852.  0x2067         PMERR_INV_DRIVER_NAME 
  11853.  0x2068         PMERR_INV_DRAW_BORDER_OPTION 
  11854.  0x2069         PMERR_INV_EDIT_MODE 
  11855.  0x206A         PMERR_INV_ELEMENT_OFFSET 
  11856.  0x206B         PMERR_INV_ELEMENT_POINTER 
  11857.  0x206C         PMERR_INV_END_PATH_OPTIONS 
  11858.  0x206D         PMERR_INV_ESC_CODE 
  11859.  0x206E         PMERR_INV_ESCAPE_DATA 
  11860.  0x206F         PMERR_INV_EXTENDED_LCID 
  11861.  0x2070         PMERR_INV_FILL_PATH_OPTIONS 
  11862.  0x2071         PMERR_INV_FIRST_CHAR 
  11863.  0x2072         PMERR_INV_FONT_ATTRS 
  11864.  0x2073         PMERR_INV_FONT_FILE_DATA 
  11865.  0x2074         PMERR_INV_FOR_THIS_DC_TYPE 
  11866.  0x2075         PMERR_INV_FORMAT_CONTROL 
  11867.  0x2076         PMERR_INV_FORMS_CODE 
  11868.  0x2077         PMERR_INV_FONTDEF 
  11869.  0x2078         PMERR_INV_GEOM_LINE_WIDTH_ATTR 
  11870.  0x2079         PMERR_INV_GETDATA_CONTROL 
  11871.  0x207A         PMERR_INV_GRAPHICS_FIELD 
  11872.  0x207B         PMERR_INV_HBITMAP 
  11873.  0x207C         PMERR_INV_HDC 
  11874.  0x207D         PMERR_INV_HJOURNAL 
  11875.  0x207E         PMERR_INV_HMF 
  11876.  0x207F         PMERR_INV_HPS 
  11877.  0x2080         PMERR_INV_HRGN 
  11878.  0x2081         PMERR_INV_ID 
  11879.  0x2082         PMERR_INV_IMAGE_DATA_LENGTH 
  11880.  0x2083         PMERR_INV_IMAGE_DIMENSION 
  11881.  0x2084         PMERR_INV_IMAGE_FORMAT 
  11882.  0x2085         PMERR_INV_IN_AREA 
  11883.  0x2086         PMERR_INV_IN_CALLED_SEG 
  11884.  0x2087         PMERR_INV_IN_CURRENT_EDIT_MODE 
  11885.  0x2088         PMERR_INV_IN_DRAW_MODE 
  11886.  0x2089         PMERR_INV_IN_ELEMENT 
  11887.  0x208A         PMERR_INV_IN_IMAGE 
  11888.  0x208B         PMERR_INV_IN_PATH 
  11889.  0x208C         PMERR_INV_IN_RETAIN_MODE 
  11890.  0x208D         PMERR_INV_IN_SEG 
  11891.  0x208E         PMERR_INV_IN_VECTOR_SYMBOL 
  11892.  0x208F         PMERR_INV_INFO_TABLE 
  11893.  0x2090         PMERR_INV_JOURNAL_OPTION 
  11894.  0x2091         PMERR_INV_KERNING_FLAGS 
  11895.  0x2092         PMERR_INV_LENGTH_OR_COUNT 
  11896.  0x2093         PMERR_INV_LINE_END_ATTR 
  11897.  0x2094         PMERR_INV_LINE_JOIN_ATTR 
  11898.  0x2095         PMERR_INV_LINE_TYPE_ATTR 
  11899.  0x2096         PMERR_INV_LINE_WIDTH_ATTR 
  11900.  0x2097         PMERR_INV_LOGICAL_ADDRESS 
  11901.  0x2098         PMERR_INV_MARKER_BOX_ATTR 
  11902.  0x2099         PMERR_INV_MARKER_SET_ATTR 
  11903.  0x209A         PMERR_INV_MARKER_SYMBOL_ATTR 
  11904.  0x209B         PMERR_INV_MATRIX_ELEMENT 
  11905.  0x209C         PMERR_INV_MAX_HITS 
  11906.  0x209D         PMERR_INV_METAFILE 
  11907.  0x209E         PMERR_INV_METAFILE_LENGTH 
  11908.  0x209F         PMERR_INV_METAFILE_OFFSET 
  11909.  0x20A0         PMERR_INV_MICROPS_DRAW_CONTROL 
  11910.  0x20A1         PMERR_INV_MICROPS_FUNCTION 
  11911.  0x20A2         PMERR_INV_MICROPS_ORDER 
  11912.  0x20A3         PMERR_INV_MIX_ATTR 
  11913.  0x20A4         PMERR_INV_MODE_FOR_OPEN_DYN 
  11914.  0x20A5         PMERR_INV_MODE_FOR_REOPEN_SEG 
  11915.  0x20A6         PMERR_INV_MODIFY_PATH_MODE 
  11916.  0x20A7         PMERR_INV_MULTIPLIER 
  11917.  0x20A8         PMERR_INV_NESTED_FIGURES 
  11918.  0x20A9         PMERR_INV_OR_INCOMPAT_OPTIONS 
  11919.  0x20AA         PMERR_INV_ORDER_LENGTH 
  11920.  0x20AB         PMERR_INV_ORDERING_PARM 
  11921.  0x20AC         PMERR_INV_OUTSIDE_DRAW_MODE 
  11922.  0x20AD         PMERR_INV_PAGE_VIEWPORT 
  11923.  0x20AE         PMERR_INV_PATH_ID 
  11924.  0x20AF         PMERR_INV_PATH_MODE 
  11925.  0x20B0         PMERR_INV_PATTERN_ATTR 
  11926.  0x20B1         PMERR_INV_PATTERN_REF_PT_ATTR 
  11927.  0x20B2         PMERR_INV_PATTERN_SET_ATTR 
  11928.  0x20B3         PMERR_INV_PATTERN_SET_FONT 
  11929.  0x20B4         PMERR_INV_PICK_APERTURE_OPTION 
  11930.  0x20B5         PMERR_INV_PICK_APERTURE_POSN 
  11931.  0x20B6         PMERR_INV_PICK_APERTURE_SIZE 
  11932.  0x20B7         PMERR_INV_PICK_NUMBER 
  11933.  0x20B8         PMERR_INV_PLAY_METAFILE_OPTION 
  11934.  0x20B9         PMERR_INV_PRIMITIVE_TYPE 
  11935.  0x20BA         PMERR_INV_PS_SIZE 
  11936.  0x20BB         PMERR_INV_PUTDATA_FORMAT 
  11937.  0x20BC         PMERR_INV_QUERY_ELEMENT_NO 
  11938.  0x20BD         PMERR_INV_RECT 
  11939.  0x20BE         PMERR_INV_REGION_CONTROL 
  11940.  0x20BF         PMERR_INV_REGION_MIX_MODE 
  11941.  0x20C0         PMERR_INV_REPLACE_MODE_FUNC 
  11942.  0x20C1         PMERR_INV_RESERVED_FIELD 
  11943.  0x20C2         PMERR_INV_RESET_OPTIONS 
  11944.  0x20C3         PMERR_INV_RGBCOLOR 
  11945.  0x20C4         PMERR_INV_SCAN_START 
  11946.  0x20C5         PMERR_INV_SEG_ATTR 
  11947.  0x20C6         PMERR_INV_SEG_ATTR_VALUE 
  11948.  0x20C7         PMERR_INV_SEG_CH_LENGTH 
  11949.  0x20C8         PMERR_INV_SEG_NAME 
  11950.  0x20C9         PMERR_INV_SEG_OFFSET 
  11951.  0x20CA         PMERR_INV_SETID 
  11952.  0x20CB         PMERR_INV_SETID_TYPE 
  11953.  0x20CC         PMERR_INV_SET_VIEWPORT_OPTION 
  11954.  0x20CD         PMERR_INV_SHARPNESS_PARM 
  11955.  0x20CE         PMERR_INV_SOURCE_OFFSET 
  11956.  0x20CF         PMERR_INV_STOP_DRAW_VALUE 
  11957.  0x20D0         PMERR_INV_TRANSFORM_TYPE 
  11958.  0x20D1         PMERR_INV_USAGE_PARM 
  11959.  0x20D2         PMERR_INV_VIEWING_LIMITS 
  11960.  0x20D3         PMERR_JFILE_BUSY 
  11961.  0x20D4         PMERR_JNL_FUNC_DATA_TOO_LONG 
  11962.  0x20D5         PMERR_KERNING_NOT_SUPPORTED 
  11963.  0x20D6         PMERR_LABEL_NOT_FOUND 
  11964.  0x20D7         PMERR_MATRIX_OVERFLOW 
  11965.  0x20D8         PMERR_METAFILE_INTERNAL_ERROR 
  11966.  0x20D9         PMERR_METAFILE_IN_USE 
  11967.  0x20DA         PMERR_METAFILE_LIMIT_EXCEEDED 
  11968.  0x20DB         PMERR_NAME_STACK_FULL 
  11969.  0x20DC         PMERR_NOT_CREATED_BY_DEVOPENDC 
  11970.  0x20DD         PMERR_NOT_IN_AREA 
  11971.  0x20DE         PMERR_NOT_IN_DRAW_MODE 
  11972.  0x20DF         PMERR_NOT_IN_ELEMENT 
  11973.  0x20E0         PMERR_NOT_IN_IMAGE 
  11974.  0x20E1         PMERR_NOT_IN_PATH 
  11975.  0x20E2         PMERR_NOT_IN_RETAIN_MODE 
  11976.  0x20E3         PMERR_NOT_IN_SEG 
  11977.  0x20E4         PMERR_NO_BITMAP_SELECTED 
  11978.  0x20E5         PMERR_NO_CURRENT_ELEMENT 
  11979.  0x20E6         PMERR_NO_CURRENT_SEG 
  11980.  0x20E7         PMERR_NO_METAFILE_RECORD_HANDLE 
  11981.  0x20E8         PMERR_ORDER_TOO_BIG 
  11982.  0x20E9         PMERR_OTHER_SET_ID_REFS 
  11983.  0x20EA         PMERR_OVERRAN_SEG 
  11984.  0x20EB         PMERR_OWN_SET_ID_REFS 
  11985.  0x20EC         PMERR_PATH_INCOMPLETE 
  11986.  0x20ED         PMERR_PATH_LIMIT_EXCEEDED 
  11987.  0x20EE         PMERR_PATH_UNKNOWN 
  11988.  0x20EF         PMERR_PEL_IS_CLIPPED 
  11989.  0x20F0         PMERR_PEL_NOT_AVAILABLE 
  11990.  0x20F1         PMERR_PRIMITIVE_STACK_EMPTY 
  11991.  0x20F2         PMERR_PROLOG_ERROR 
  11992.  0x20F3         PMERR_PROLOG_SEG_ATTR_NOT_SET 
  11993.  0x20F4         PMERR_PS_BUSY 
  11994.  0x20F5         PMERR_PS_IS_ASSOCIATED 
  11995.  0x20F6         PMERR_RAM_JNL_FILE_TOO_SMALL 
  11996.  0x20F7         PMERR_REALIZE_NOT_SUPPORTED 
  11997.  0x20F8         PMERR_REGION_IS_CLIP_REGION 
  11998.  0x20F9         PMERR_RESOURCE_DEPLETION 
  11999.  0x20FA         PMERR_SEG_AND_REFSEG_ARE_SAME 
  12000.  0x20FB         PMERR_SEG_CALL_RECURSIVE 
  12001.  0x20FC         PMERR_SEG_CALL_STACK_EMPTY 
  12002.  0x20FD         PMERR_SEG_CALL_STACK_FULL 
  12003.  0x20FE         PMERR_SEG_IS_CURRENT 
  12004.  0x20FF         PMERR_SEG_NOT_CHAINED 
  12005.  0x2100         PMERR_SEG_NOT_FOUND 
  12006.  0x2101         PMERR_SEG_STORE_LIMIT_EXCEEDED 
  12007.  0x2102         PMERR_SETID_IN_USE 
  12008.  0x2103         PMERR_SETID_NOT_FOUND 
  12009.  0x2104         PMERR_STARTDOC_NOT_ISSUED 
  12010.  0x2105         PMERR_STOP_DRAW_OCCURRED 
  12011.  0x2106         PMERR_TOO_MANY_METAFILES_IN_USE 
  12012.  0x2107         PMERR_TRUNCATED_ORDER 
  12013.  0x2108         PMERR_UNCHAINED_SEG_ZERO_INV 
  12014.  0x2109         PMERR_UNSUPPORTED_ATTR 
  12015.  0x210A         PMERR_UNSUPPORTED_ATTR_VALUE 
  12016.  0x210B         PMERR_ENDDOC_NOT_ISSUED 
  12017.  0x210C         PMERR_PS_NOT_ASSOCIATED 
  12018.  0x210D         PMERR_INV_FLOOD_FILL_OPTIONS 
  12019.  0x210E         PMERR_INV_FACENAME 
  12020.  0x210F         PMERR_PALETTE_SELECTED 
  12021.  0x2110         PMERR_NO_PALETTE_SELECTED 
  12022.  0x2111         PMERR_INV_HPAL 
  12023.  0x2112         PMERR_PALETTE_BUSY 
  12024.  0x2113         PMERR_START_POINT_CLIPPED 
  12025.  0x2114         PMERR_NO_FILL 
  12026.  0x2115         PMERR_INV_FACENAMEDESC 
  12027.  0x2116         PMERR_INV_BITMAP_DATA 
  12028.  0x2117         PMERR_INV_CHAR_ALIGN_ATTR 
  12029.  0x2118         PMERR_INV_HFONT 
  12030.  0x2119         PMERR_HFONT_IS_SELECTED 
  12031.  0x2120         PMERR_DRVR_NOT_SUPPORTED 
  12032.  0x2120         PMERR_RASTER_FONT 
  12033.  0x3001         HMERR_DDF_MEMORY 
  12034.  0x3002         HMERR_DDF_ALIGN_TYPE 
  12035.  0x3003         HMERR_DDF_BACKCOLOR 
  12036.  0x3004         HMERR_DDF_FORECOLOR 
  12037.  0x3005         HMERR_DDF_FONTSTYLE 
  12038.  0x3006         HMERR_DDF_REFTYPE 
  12039.  0x3007         HMERR_DDF_LIST_UNCLOSED 
  12040.  0x3008         HMERR_DDF_LIST_UNINITIALIZED 
  12041.  0x3009         HMERR_DDF_LIST_BREAKTYPE 
  12042.  0x300A         HMERR_DDF_LIST_SPACING 
  12043.  0x300B         HMERR_DDF_HINSTANCE 
  12044.  0x300C         HMERR_DDF_EXCEED_MAX_LENGTH 
  12045.  0x300D         HMERR_DDF_EXCEED_MAX_INC 
  12046.  0x300E         HMERR_DDF_INVALID_DDF 
  12047.  0x300F         HMERR_DDF_FORMAT_TYPE 
  12048.  0x3010         HMERR_DDF_INVALID_PARM 
  12049.  0x3011         HMERR_DDF_INVALID_FONT 
  12050.  0x3012         HMERR_DDF_SEVERE 
  12051.  0x4001         PMERR_SPL_DRIVER_ERROR 
  12052.  0x4001         MERR_SPL_DRIVER_ERROR 
  12053.  0x4002         PMERR_SPL_DEVICE_ERROR 
  12054.  0x4002         MERR_SPL_DEVICE_ERROR 
  12055.  0x4003         PMERR_SPL_DEVICE_NOT_INSTALLED 
  12056.  0x4003         MERR_SPL_DEVICE_NOT_INSTALLED 
  12057.  0x4004         PMERR_SPL_QUEUE_ERROR 
  12058.  0x4004         MERR_SPL_QUEUE_ERROR 
  12059.  0x4005         PMERR_SPL_INV_HSPL 
  12060.  0x4005         MERR_SPL_INV_HSPL 
  12061.  0x4006         PMERR_SPL_NO_DISK_SPACE 
  12062.  0x4006         MERR_SPL_NO_DISK_SPACE 
  12063.  0x4007         PMERR_SPL_NO_MEMORY 
  12064.  0x4007         MERR_SPL_NO_MEMORY 
  12065.  0x4008         PMERR_SPL_PRINT_ABORT 
  12066.  0x4008         MERR_SPL_PRINT_ABORT 
  12067.  0x4009         PMERR_SPL_SPOOLER_NOT_INSTALLED 
  12068.  0x4009         MERR_SPL_SPOOLER_NOT_INSTALLED 
  12069.  0x400A         PMERR_SPL_INV_FORMS_CODE 
  12070.  0x400A         MERR_SPL_INV_FORMS_CODE 
  12071.  0x400B         PMERR_SPL_INV_PRIORITY 
  12072.  0x400B         MERR_SPL_INV_PRIORITY 
  12073.  0x400C         PMERR_SPL_NO_FREE_JOB_ID 
  12074.  0x400C         MERR_SPL_NO_FREE_JOB_ID 
  12075.  0x400D         PMERR_SPL_NO_DATA 
  12076.  0x400D         MERR_SPL_NO_DATA 
  12077.  0x400E         PMERR_SPL_INV_TOKEN 
  12078.  0x400E         MERR_SPL_INV_TOKEN 
  12079.  0x400F         PMERR_SPL_INV_DATATYPE 
  12080.  0x400F         MERR_SPL_INV_DATATYPE 
  12081.  0x4010         PMERR_SPL_PROCESSOR_ERROR 
  12082.  0x4010         MERR_SPL_PROCESSOR_ERROR 
  12083.  0x4011         PMERR_SPL_INV_JOB_ID 
  12084.  0x4011         MERR_SPL_INV_JOB_ID 
  12085.  0x4012         PMERR_SPL_JOB_NOT_PRINTING 
  12086.  0x4012         MERR_SPL_JOB_NOT_PRINTING 
  12087.  0x4013         PMERR_SPL_JOB_PRINTING 
  12088.  0x4013         MERR_SPL_JOB_PRINTING 
  12089.  0x4014         PMERR_SPL_QUEUE_ALREADY_EXISTS 
  12090.  0x4014         MERR_SPL_QUEUE_ALREADY_EXISTS 
  12091.  0x4015         PMERR_SPL_INV_QUEUE_NAME 
  12092.  0x4015         MERR_SPL_INV_QUEUE_NAME 
  12093.  0x4016         PMERR_SPL_QUEUE_NOT_EMPTY 
  12094.  0x4016         MERR_SPL_QUEUE_NOT_EMPTY 
  12095.  0x4017         PMERR_SPL_DEVICE_ALREADY_EXISTS 
  12096.  0x4017         MERR_SPL_DEVICE_ALREADY_EXISTS 
  12097.  0x4018         PMERR_SPL_DEVICE_LIMIT_REACHED 
  12098.  0x4018         MERR_SPL_DEVICE_LIMIT_REACHED 
  12099.  0x4019         PMERR_SPL_STATUS_STRING_TRUNC 
  12100.  0x4019         MERR_SPL_STATUS_STRING_TRUNC 
  12101.  0x401A         PMERR_SPL_INV_LENGTH_OR_COUNT 
  12102.  0x401A         MERR_SPL_INV_LENGTH_OR_COUNT 
  12103.  0x401B         PMERR_SPL_FILE_NOT_FOUND 
  12104.  0x401B         MERR_SPL_FILE_NOT_FOUND 
  12105.  0x401C         PMERR_SPL_CANNOT_OPEN_FILE 
  12106.  0x401C         MERR_SPL_CANNOT_OPEN_FILE 
  12107.  0x401D         PMERR_SPL_DRIVER_NOT_INSTALLED 
  12108.  0x401D         MERR_SPL_DRIVER_NOT_INSTALLED 
  12109.  0x401E         PMERR_SPL_INV_PROCESSOR_DATTYPE 
  12110.  0x401E         MERR_SPL_INV_PROCESSOR_DATTYPE 
  12111.  0x401F         PMERR_SPL_INV_DRIVER_DATATYPE 
  12112.  0x401F         MERR_SPL_INV_DRIVER_DATATYPE 
  12113.  0x4020         PMERR_SPL_PROCESSOR_NOT_INST 
  12114.  0x4020         MERR_SPL_PROCESSOR_NOT_INST 
  12115.  0x4021         PMERR_SPL_NO_SUCH_LOG_ADDRESS 
  12116.  0x4021         MERR_SPL_NO_SUCH_LOG_ADDRESS 
  12117.  0x4022         PMERR_SPL_PRINTER_NOT_FOUND 
  12118.  0x4022         MERR_SPL_PRINTER_NOT_FOUND 
  12119.  0x4023         PMERR_SPL_DD_NOT_FOUND 
  12120.  0x4023         MERR_SPL_DD_NOT_FOUND 
  12121.  0x4024         PMERR_SPL_QUEUE_NOT_FOUND 
  12122.  0x4024         MERR_SPL_QUEUE_NOT_FOUND 
  12123.  0x4025         PMERR_SPL_MANY_QUEUES_ASSOC 
  12124.  0x4025         MERR_SPL_MANY_QUEUES_ASSOC 
  12125.  0x4026         PMERR_SPL_NO_QUEUES_ASSOCIATED 
  12126.  0x4026         MERR_SPL_NO_QUEUES_ASSOCIATED 
  12127.  0x4027         PMERR_SPL_INI_FILE_ERROR 
  12128.  0x4027         MERR_SPL_INI_FILE_ERROR 
  12129.  0x4028         PMERR_SPL_NO_DEFAULT_QUEUE 
  12130.  0x4028         MERR_SPL_NO_DEFAULT_QUEUE 
  12131.  0x4029         PMERR_SPL_NO_CURRENT_FORMS_CODE 
  12132.  0x4029         MERR_SPL_NO_CURRENT_FORMS_CODE 
  12133.  0x402A         PMERR_SPL_NOT_AUTHORISED 
  12134.  0x402A         MERR_SPL_NOT_AUTHORISED 
  12135.  0x402B         PMERR_SPL_TEMP_NETWORK_ERROR 
  12136.  0x402B         MERR_SPL_TEMP_NETWORK_ERROR 
  12137.  0x402C         PMERR_SPL_HARD_NETWORK_ERROR 
  12138.  0x402C         MERR_SPL_HARD_NETWORK_ERROR 
  12139.  0x402D         PMERR_DEL_NOT_ALLOWED 
  12140.  0x402D         MERR_DEL_NOT_ALLOWED 
  12141.  0x402E         PMERR_CANNOT_DEL_QP_REF 
  12142.  0x402E         MERR_CANNOT_DEL_QP_REF 
  12143.  0x402F         PMERR_CANNOT_DEL_QNAME_REF 
  12144.  0x402F         MERR_CANNOT_DEL_QNAME_REF 
  12145.  0x4030         PMERR_CANNOT_DEL_PRINTER_DD_REF 
  12146.  0x4030         MERR_CANNOT_DEL_PRINTER_DD_REF 
  12147.  0x4031         PMERR_CANNOT_DEL_PRN_NAME_REF 
  12148.  0x4031         MERR_CANNOT_DEL_PRN_NAME_REF 
  12149.  0x4032         PMERR_CANNOT_DEL_PRN_ADDR_REF 
  12150.  0x4032         MERR_CANNOT_DEL_PRN_ADDR_REF 
  12151.  0x4033         PMERR_SPOOLER_QP_NOT_DEFINED 
  12152.  0x4033         MERR_SPOOLER_QP_NOT_DEFINED 
  12153.  0x4034         PMERR_PRN_NAME_NOT_DEFINED 
  12154.  0x4034         MERR_PRN_NAME_NOT_DEFINED 
  12155.  0x4035         PMERR_PRN_ADDR_NOT_DEFINED 
  12156.  0x4035         MERR_PRN_ADDR_NOT_DEFINED 
  12157.  0x4036         PMERR_PRINTER_DD_NOT_DEFINED 
  12158.  0x4036         MERR_PRINTER_DD_NOT_DEFINED 
  12159.  0x4037         PMERR_PRINTER_QUEUE_NOT_DEFINED 
  12160.  0x4037         MERR_PRINTER_QUEUE_NOT_DEFINED 
  12161.  0x4038         PMERR_PRN_ADDR_IN_USE 
  12162.  0x4038         MERR_PRN_ADDR_IN_USE 
  12163.  0x4039         PMERR_SPL_TOO_MANY_OPEN_FILES 
  12164.  0x4039         MERR_SPL_TOO_MANY_OPEN_FILES 
  12165.  0x403A         PMERR_SPL_CP_NOT_REQD 
  12166.  0x403A         MERR_SPL_CP_NOT_REQD 
  12167.  0x4040         PMERR_UNABLE_TO_CLOSE_DEVICE 
  12168.  0x4040         MERR_UNABLE_TO_CLOSE_DEVICE 
  12169.  0x4FC9         PMERR_SPLMSGBOX_INFO_CAPTION 
  12170.  0x4FC9         MERR_SPLMSGBOX_INFO_CAPTION 
  12171.  0x4FCA         PMERR_SPLMSGBOX_WARNING_CAPTION 
  12172.  0x4FCA         MERR_SPLMSGBOX_WARNING_CAPTION 
  12173.  0x4FCB         PMERR_SPLMSGBOX_ERROR_CAPTION 
  12174.  0x4FCB         MERR_SPLMSGBOX_ERROR_CAPTION 
  12175.  0x4FCC         PMERR_SPLMSGBOX_SEVERE_CAPTION 
  12176.  0x4FCC         MERR_SPLMSGBOX_SEVERE_CAPTION 
  12177.  0x4FCD         PMERR_SPLMSGBOX_JOB_DETAILS 
  12178.  0x4FCD         MERR_SPLMSGBOX_JOB_DETAILS 
  12179.  0x4FCE         PMERR_SPLMSGBOX_ERROR_ACTION 
  12180.  0x4FCE         MERR_SPLMSGBOX_ERROR_ACTION 
  12181.  0x4FCF         PMERR_SPLMSGBOX_SEVERE_ACTION 
  12182.  0x4FCF         MERR_SPLMSGBOX_SEVERE_ACTION 
  12183.  0x4FD0         PMERR_SPLMSGBOX_BIT_0_TEXT 
  12184.  0x4FD0         MERR_SPLMSGBOX_BIT_0_TEXT 
  12185.  0x4FD1         PMERR_SPLMSGBOX_BIT_1_TEXT 
  12186.  0x4FD1         MERR_SPLMSGBOX_BIT_1_TEXT 
  12187.  0x4FD2         PMERR_SPLMSGBOX_BIT_2_TEXT 
  12188.  0x4FD2         MERR_SPLMSGBOX_BIT_2_TEXT 
  12189.  0x4FD3         PMERR_SPLMSGBOX_BIT_3_TEXT 
  12190.  0x4FD3         MERR_SPLMSGBOX_BIT_3_TEXT 
  12191.  0x4FD4         PMERR_SPLMSGBOX_BIT_4_TEXT 
  12192.  0x4FD4         MERR_SPLMSGBOX_BIT_4_TEXT 
  12193.  0x4FD5         PMERR_SPLMSGBOX_BIT_5_TEXT 
  12194.  0x4FD5         MERR_SPLMSGBOX_BIT_5_TEXT 
  12195.  0x4FD6         PMERR_SPLMSGBOX_BIT_15_TEXT 
  12196.  0x4FD6         MERR_SPLMSGBOX_BIT_15_TEXT 
  12197.  0x4FD7         PMERR_SPL_NOPATHBUFFER 
  12198.  0x4FD7         MERR_SPL_NOPATHBUFFER 
  12199.  0x4FD8         MERR_SPL_ALREADY_INITIALISED 
  12200.  0x4FD9         MERR_SPL_ERROR 
  12201.  0x5001         PMERR_INV_TYPE 
  12202.  0x5001         MERR_INV_TYPE 
  12203.  0x5002         PMERR_INV_CONV 
  12204.  0x5002         MERR_INV_CONV 
  12205.  0x5003         PMERR_INV_SEGLEN 
  12206.  0x5003         MERR_INV_SEGLEN 
  12207.  0x5004         PMERR_DUP_SEGNAME 
  12208.  0x5004         MERR_DUP_SEGNAME 
  12209.  0x5005         PMERR_INV_XFORM 
  12210.  0x5005         MERR_INV_XFORM 
  12211.  0x5006         PMERR_INV_VIEWLIM 
  12212.  0x5006         MERR_INV_VIEWLIM 
  12213.  0x5007         PMERR_INV_3DCOORD 
  12214.  0x5007         MERR_INV_3DCOORD 
  12215.  0x5008         PMERR_SMB_OVFLOW 
  12216.  0x5008         MERR_SMB_OVFLOW 
  12217.  0x5009         PMERR_SEG_OVFLOW 
  12218.  0x5009         MERR_SEG_OVFLOW 
  12219.  0x5010         PMERR_PIC_DUP_FILENAME 
  12220.  0x5010         MERR_PIC_DUP_FILENAME 
  12221.  SPLERR_BASE+0FA1   PMERR_SPL_ERROR_1 
  12222.  SPLERR_BASE+0FA2   PMERR_SPL_ERROR_2 
  12223.  SPLERR_BASE+0FA3   PMERR_SPL_ERROR_3 
  12224.  SPLERR_BASE+0FA4   PMERR_SPL_ERROR_4 
  12225.  SPLERR_BASE+0FA5   PMERR_SPL_ERROR_5 
  12226.  SPLERR_BASE+0FA6   PMERR_SPL_ERROR_6 
  12227.  SPLERR_BASE+0FA7   PMERR_SPL_ERROR_7 
  12228.  SPLERR_BASE+0FA8   PMERR_SPL_ERROR_8 
  12229.  SPLERR_BASE+0FA9   PMERR_SPL_ERROR_9 
  12230.  SPLERR_BASE+0FAA   PMERR_SPL_ERROR_10 
  12231.  SPLERR_BASE+0FAB   PMERR_SPL_ERROR_11 
  12232.  SPLERR_BASE+0FAC   PMERR_SPL_ERROR_12 
  12233.  SPLERR_BASE+0FAD   PMERR_SPL_ERROR_13 
  12234.  SPLERR_BASE+0FAE   PMERR_SPL_ERROR_14 
  12235.  SPLERR_BASE+0FAF   PMERR_SPL_ERROR_15 
  12236.  SPLERR_BASE+0FB0   PMERR_SPL_ERROR_16 
  12237.  SPLERR_BASE+0FB1   PMERR_SPL_ERROR_17 
  12238.  SPLERR_BASE+0FB2   PMERR_SPL_ERROR_18 
  12239.  SPLERR_BASE+0FB3   PMERR_SPL_ERROR_19 
  12240.  SPLERR_BASE+0FB4   PMERR_SPL_ERROR_20 
  12241.  SPLERR_BASE+0FB5   PMERR_SPL_ERROR_21 
  12242.  SPLERR_BASE+0FB6   PMERR_SPL_ERROR_22 
  12243.  SPLERR_BASE+0FB7   PMERR_SPL_ERROR_23 
  12244.  SPLERR_BASE+0FB8   PMERR_SPL_ERROR_24 
  12245.  SPLERR_BASE+0FB9   PMERR_SPL_ERROR_25 
  12246.  SPLERR_BASE+0FBA   PMERR_SPL_ERROR_26 
  12247.  SPLERR_BASE+0FBB   PMERR_SPL_ERROR_27 
  12248.  SPLERR_BASE+0FBC   PMERR_SPL_ERROR_28 
  12249.  SPLERR_BASE+0FBD   PMERR_SPL_ERROR_29 
  12250.  SPLERR_BASE+0FBE   PMERR_SPL_ERROR_30 
  12251.  SPLERR_BASE+0FBF   PMERR_SPL_ERROR_31 
  12252.  SPLERR_BASE+0FC0   PMERR_SPL_ERROR_32 
  12253.  SPLERR_BASE+0FC1   PMERR_SPL_ERROR_33 
  12254.  SPLERR_BASE+0FC2   PMERR_SPL_ERROR_34 
  12255.  SPLERR_BASE+0FC3   PMERR_SPL_ERROR_35 
  12256.  SPLERR_BASE+0FC4   PMERR_SPL_ERROR_36 
  12257.  SPLERR_BASE+0FC5   PMERR_SPL_ERROR_37 
  12258.  SPLERR_BASE+0FC6   PMERR_SPL_ERROR_38 
  12259.  SPLERR_BASE+0FC7   PMERR_SPL_ERROR_39 
  12260.  SPLERR_BASE+0FC8   PMERR_SPL_ERROR_40 
  12261.  SPLERR_BASE+0FFF   PMERR_SPL_ERROR 
  12262.  SPLERR_BASE+0FFD   PMERR_SPL_ALREADY_INITIALISED 
  12263.  
  12264.  
  12265. ΓòÉΓòÉΓòÉ 4.2. Error Name and Explanation ΓòÉΓòÉΓòÉ
  12266.  
  12267. This appendix gives an explanation for each PM error. The errors are listed in 
  12268. alphabetic order. The number associated with each error is given in Error 
  12269. Number and Name. 
  12270.  
  12271.  Error Constant                                  Explanation 
  12272.  
  12273.  HMERR_ALLOCATE_SEGMENT                          Unable to allocate a segment 
  12274.                                                  of memory for memory 
  12275.                                                  allocation requests from the 
  12276.                                                  Help Manager. 
  12277.  
  12278.  HMERR_CLOSE_LIB_FILE                            The library file cannot be 
  12279.                                                  closed. 
  12280.  
  12281.  HMERR_CONTENT_NOT_FOUND                         The library file does not have 
  12282.                                                  any content. 
  12283.  
  12284.  HMERR_DATABASE_NOT_OPEN                         Unable to read the unopened 
  12285.                                                  database. 
  12286.  
  12287.  HMERR_DDF_ALIGN_TYPE                            The alignment type is not 
  12288.                                                  valid. 
  12289.  
  12290.  HMERR_DDF_BACKCOLOR                             The background color is not 
  12291.                                                  valid. 
  12292.  
  12293.  HMERR_DDF_EXCEED_MAX_INC                        The value specified to 
  12294.                                                  increment DDF memory is too 
  12295.                                                  large. 
  12296.  
  12297.  HMERR_DDF_EXCEED_MAX_LENGTH                     The amount of data is too 
  12298.                                                  large for the DDF buffer. 
  12299.  
  12300.  HMERR_DDF_FONTSTYLE                             The font style is not valid. 
  12301.  
  12302.  HMERR_DDF_FORECOLOR                             The foreground color is not 
  12303.                                                  valid. 
  12304.  
  12305.  HMERR_DDF_FORMAT_TYPE                           The format type specified is 
  12306.                                                  invalid. 
  12307.  
  12308.  HMERR_DDF_HINSTANCE                             The DDF instance is invalid. 
  12309.  
  12310.  HMERR_DDF_INVALID_DDF                           The DDF handle is invalid. 
  12311.  
  12312.  HMERR_DDF_INVALID_FONT                          The font value specified is 
  12313.                                                  invalid. 
  12314.  
  12315.  HMERR_DDF_INVALID_PARM                          One of the DDF parameters 
  12316.                                                  specified is invalid. 
  12317.  
  12318.  HMERR_DDF_LIST_BREAKTYPE                        The value of BreakType is not 
  12319.                                                  valid. 
  12320.  
  12321.  HMERR_DDF_LIST_SPACING                          The value for Spacing is not 
  12322.                                                  valid. 
  12323.  
  12324.  HMERR_DDF_LIST_UNCLOSED                         An attempt was made to nest a 
  12325.                                                  list. 
  12326.  
  12327.  HMERR_DDF_LIST_UNINITIALIZED                    No definition list has been 
  12328.                                                  initialized by DdfBeginList. 
  12329.  
  12330.  HMERR_DDF_MEMORY                                Not enough memory is 
  12331.                                                  available. 
  12332.  
  12333.  HMERR_DDF_REFTYPE                               The reference type is not 
  12334.                                                  valid. 
  12335.  
  12336.  HMERR_DDF_SEVERE                                Internal error detected by the 
  12337.                                                  Help Manager. 
  12338.  
  12339.  HMERR_FREE_MEMORY                               Unable to free allocated 
  12340.                                                  memory. 
  12341.  
  12342.  HMERR_HELP_INST_CALLED_INVALID                  The handle of the instance 
  12343.                                                  specified on a call to the 
  12344.                                                  Help Manager does not have the 
  12345.                                                  class name of a Help Manager 
  12346.                                                  instance. 
  12347.  
  12348.  HMERR_HELP_INSTANCE_UNDEFINE                    The help instance handle 
  12349.                                                  specified is invalid. 
  12350.  
  12351.  HMERR_HELPITEM_NOT_FOUND                        Context-sensitive help was 
  12352.                                                  requested but the ID of the 
  12353.                                                  main help item specified was 
  12354.                                                  not found in the help table. 
  12355.  
  12356.  HMERR_HELPSUBITEM_NOT_FOUND                     Context-sensitive help was 
  12357.                                                  requested but the ID of the 
  12358.                                                  help item specified was not 
  12359.                                                  found in the help subtable. 
  12360.  
  12361.  HMERR_HELPTABLE_UNDEFINE                        The application did not 
  12362.                                                  provide a help table for 
  12363.                                                  context-sensitive help. 
  12364.  
  12365.  HMERR_INDEX_NOT_FOUND                           The index is not in the 
  12366.                                                  library file. 
  12367.  
  12368.  HMERR_INVALID_ASSOC_APP_WND                     The application window handle 
  12369.                                                  specified on the 
  12370.                                                  WinAssociateHelpInstance 
  12371.                                                  function is not a valid window 
  12372.                                                  handle. 
  12373.  
  12374.  HMERR_INVALID_ASSOC_HELP_INST                   The help instance handle 
  12375.                                                  specified on the 
  12376.                                                  WinAssociateHelpInstance 
  12377.                                                  function is not a valid window 
  12378.                                                  handle. 
  12379.  
  12380.  HMERR_INVALID_DESTROY_HELP_INST                 The window handle specified as 
  12381.                                                  the help instance to destroy 
  12382.                                                  is not of the help instance 
  12383.                                                  class. 
  12384.  
  12385.  HMERR_INVALID_HELP_INSTANCE_HDL                 The handle specified to be a 
  12386.                                                  help instance does not have 
  12387.                                                  the class name of a Help 
  12388.                                                  Manager instance. 
  12389.  
  12390.  HMERR_INVALID_HELPSUBITEM_SIZE                  The help subtable item size is 
  12391.                                                  less than 2. 
  12392.  
  12393.  HMERR_INVALID_LIB_FILE                          Improper library file 
  12394.                                                  provided. 
  12395.  
  12396.  HMERR_INVALID_QUERY_APP_WND                     The application window 
  12397.                                                  specified on a 
  12398.                                                  WinQueryHelpInstance function 
  12399.                                                  is not a valid window handle. 
  12400.  
  12401.  HMERR_LOAD_DLL                                  Unable to load resource data 
  12402.                                                  link library. 
  12403.  
  12404.  HMERR_NO_FRAME_WND_IN_CHAIN                     There is no frame window in 
  12405.                                                  the window chain from which to 
  12406.                                                  find or set the associated 
  12407.                                                  help instance. 
  12408.  
  12409.  HMERR_NO_HELP_INST_IN_CHAIN                     The parent or owner chain of 
  12410.                                                  the application window 
  12411.                                                  specified does not have an 
  12412.                                                  associated help instance. 
  12413.  
  12414.  HMERR_NO_MEMORY                                 Unable to allocate the 
  12415.                                                  requested amount of memory. 
  12416.  
  12417.  HMERR_OPEN_LIB_FILE                             The library file cannot be 
  12418.                                                  opened. 
  12419.  
  12420.  HMERR_PANEL_NOT_FOUND                           Unable to find the requested 
  12421.                                                  help panel. 
  12422.  
  12423.  HMERR_READ_LIB_FILE                             The library file cannot be 
  12424.                                                  read. 
  12425.  
  12426.  PMERR_ACCESS_DENIED                             The memory block was not 
  12427.                                                  allocated properly. 
  12428.  
  12429.  PMERR_ALREADY_IN_AREA                           An attempt was made to begin a 
  12430.                                                  new area while an existing 
  12431.                                                  area bracket was already open. 
  12432.  
  12433.  PMERR_ALREADY_IN_ELEMENT                        An attempt was made to begin a 
  12434.                                                  new element while an existing 
  12435.                                                  element bracket was already 
  12436.                                                  open. 
  12437.  
  12438.  PMERR_ALREADY_IN_PATH                           An attempt was made to begin a 
  12439.                                                  new path while an existing 
  12440.                                                  path bracket was already open. 
  12441.  
  12442.  PMERR_ALREADY_IN_SEG                            An attempt was made to open a 
  12443.                                                  new segment while an existing 
  12444.                                                  segment bracket was already 
  12445.                                                  open. 
  12446.  
  12447.  PMERR_APPL_STRUCTURE_TOO_SMALL                  The application buffer length 
  12448.                                                  is less than the total length 
  12449.                                                  required for the (application) 
  12450.                                                  component types. 
  12451.  
  12452.  PMERR_AREA_INCOMPLETE                           One of the following has 
  12453.                                                  occurred: 
  12454.  
  12455.                                                                                                   o A segment has been opened , closed,
  12456.                                                                                                    or drawn.
  12457.                                                                                                   o GpiAssociate was issued while an
  12458.                                                                                                    area bracket was open.
  12459.                                                                                                   o A drawn segment has opened an area
  12460.                                                                                                    bracket and ended without closing it.
  12461.  
  12462.  PMERR_ARRAY_TOO_LARGE                           More than 4 bytes was 
  12463.                                                  attempted to be inserted or 
  12464.                                                  extracted. 
  12465.  
  12466.  PMERR_ARRAY_TOO_SMALL                           The array specified was too 
  12467.                                                  small. 
  12468.  
  12469.  PMERR_ATOM_NAME_NOT_FOUND                       The specified atom name is not 
  12470.                                                  in the atom table. 
  12471.  
  12472.  PMERR_BASE_ERROR                                An OS/2 base error has 
  12473.                                                  occurred.  The base error code 
  12474.                                                  can be accessed using the 
  12475.                                                  OffBinaryData field of the 
  12476.                                                  ERRINFO structure returned by 
  12477.                                                  WinGetErrorInfo. 
  12478.  
  12479.  PMERR_BITMAP_IN_USE                             An attempt was made either to 
  12480.                                                  set a bit map into a device 
  12481.                                                  context using GpiSetBitmap 
  12482.                                                  while it was already selected 
  12483.                                                  into an existing device 
  12484.                                                  context, or to tag a bit map 
  12485.                                                  with a local pattern set 
  12486.                                                  identifier (setid) using 
  12487.                                                  GpiSetBitmapId while it was 
  12488.                                                  already tagged with an 
  12489.                                                  existing setid. 
  12490.  
  12491.  PMERR_BITMAP_IS_SELECTED                        An attempt was made to delete 
  12492.                                                  a bit map while it was 
  12493.                                                  selected into a device 
  12494.                                                  context. 
  12495.  
  12496.  PMERR_BITMAP_NOT_FOUND                          A attempt was made to perform 
  12497.                                                  a bit-map operation on a bit 
  12498.                                                  map that did not exist. 
  12499.  
  12500.  PMERR_BITMAP_NOT_SELECTED                       A attempt was made to perform 
  12501.                                                  an operation on presentation 
  12502.                                                  space associated with a memory 
  12503.                                                  device context that had no 
  12504.                                                  selected bit map. 
  12505.  
  12506.  PMERR_BOUNDS_OVERFLOW                           An internal overflow error 
  12507.                                                  occurred during boundary data 
  12508.                                                  accumulation.  This can occur 
  12509.                                                  if coordinates or matrix 
  12510.                                                  transformation elements (or 
  12511.                                                  both) are invalid or too 
  12512.                                                  large. 
  12513.  
  12514.  PMERR_BUFFER_TOO_SMALL                          The supplied buffer was not 
  12515.                                                  large enough for the data to 
  12516.                                                  be returned. 
  12517.  
  12518.  PMERR_C_LENGTH_TOO_SMALL                        The maximum length of the C 
  12519.                                                  structure is less than the 
  12520.                                                  total length required for the 
  12521.                                                  (C) component types. 
  12522.  
  12523.  PMERR_CALLED_SEG_IS_CHAINED                     An attempt was made to call a 
  12524.                                                  segment that has a chained 
  12525.                                                  attribute set. 
  12526.  
  12527.  PMERR_CALLED_SEG_IS_CURRENT                     An attempt was made to call a 
  12528.                                                  segment that is currently 
  12529.                                                  open. 
  12530.  
  12531.  PMERR_CALLED_SEG_NOT_FOUND                      An attempt was made to call a 
  12532.                                                  segment that did not exist. 
  12533.  
  12534.  PMERR_CAN_NOT_CALL_SPOOLER                      An error occurred attempting 
  12535.                                                  to call the spooler validation 
  12536.                                                  routine.  This error is not 
  12537.                                                  raised if the spooler is not 
  12538.                                                  installed. 
  12539.  
  12540.  PMERR_CANNOT_DEL_PRINTER_DD_REF                 Presentation Manager device 
  12541.                                                  driver deletion not possible 
  12542.                                                  due to a reference. 
  12543.  
  12544.  PMERR_CANNOT_DEL_PRN_ADDR_REF                   Printer port deletion not 
  12545.                                                  possible due to a reference. 
  12546.  
  12547.  PMERR_CANNOT_DEL_PRN_NAME_REF                   Printer deletion not possible 
  12548.                                                  due to a reference. 
  12549.  
  12550.  PMERR_CANNOT_DEL_QNAME_REF                      Spooler queue deletion not 
  12551.                                                  possible due to a reference. 
  12552.  
  12553.  PMERR_CANNOT_DEL_QP_REF                         Spooler queue processor 
  12554.                                                  deletion not possible due to a 
  12555.                                                  reference. 
  12556.  
  12557.  PMERR_CANNOT_SET_FOCUS                          Focus cannot be set if a focus 
  12558.                                                  change is in progress, or if a 
  12559.                                                  system-modal window exists. 
  12560.  
  12561.  PMERR_CANNOT_STOP                               The session cannot be stopped. 
  12562.  
  12563.  PMERR_COL_TABLE_NOT_REALIZABLE                  An attempt was made to realize 
  12564.                                                  a color table that is not 
  12565.                                                  realizable. 
  12566.  
  12567.  PMERR_COL_TABLE_NOT_REALIZED                    An attempt was made to realize 
  12568.                                                  a color table on a device 
  12569.                                                  driver that does not support 
  12570.                                                  this function. 
  12571.  
  12572.  PMERR_COORDINATE_OVERFLOW                       An internal coordinate 
  12573.                                                  overflow error occurred.  This 
  12574.                                                  can occur if coordinates or 
  12575.                                                  matrix transformation elements 
  12576.                                                  (or both) are invalid or too 
  12577.                                                  large. 
  12578.  
  12579.  PMERR_DATA_TOO_LONG                             An attempt was made to 
  12580.                                                  transfer more than the maximum 
  12581.                                                  permitted amount of data 
  12582.                                                  (64512 bytes) using 
  12583.                                                  GpiPutData, GpiGetData, or 
  12584.                                                  GpiElement. 
  12585.  
  12586.  PMERR_DATATYPE_ENTRY_BAD_INDEX                  An invalid datatype entry 
  12587.                                                  index was specified. 
  12588.  
  12589.  PMERR_DATATYPE_ENTRY_CTL_BAD                    An invalid datatype entry 
  12590.                                                  control was specified. 
  12591.  
  12592.  PMERR_DATATYPE_ENTRY_CTL_MISS                   The datatype entry control was 
  12593.                                                  missing. 
  12594.  
  12595.  PMERR_DATATYPE_ENTRY_NOT_NUM                    The datatype entry specified 
  12596.                                                  was not numerical. 
  12597.  
  12598.  PMERR_DATATYPE_ENTRY_NOT_OFF                    The datatype entry specified 
  12599.                                                  was not an offset. 
  12600.  
  12601.  PMERR_DATATYPE_INVALID                          An invalid datatype was 
  12602.                                                  specified. 
  12603.  
  12604.  PMERR_DATATYPE_NOT_UNIQUE                       An attempt to register a 
  12605.                                                  datatype failed because it is 
  12606.                                                  not unique. 
  12607.  
  12608.  PMERR_DATATYPE_TOO_LONG                         The datatype specified was too 
  12609.                                                  long. 
  12610.  
  12611.  PMERR_DATATYPE_TOO_SMALL                        The datatype specified was too 
  12612.                                                  small. 
  12613.  
  12614.  PMERR_DC_IS_ASSOCIATED                          An attempt was made to 
  12615.                                                  associate a presentation space 
  12616.                                                  with a device context that was 
  12617.                                                  already associated or to 
  12618.                                                  destroy a device context that 
  12619.                                                  was associated. 
  12620.  
  12621.  PMERR_DEL_NOT_ALLOWED                           Deletion not possible. 
  12622.  
  12623.  PMERR_DESC_STRING_TRUNCATED                     An attempt was made to supply 
  12624.                                                  a description string with 
  12625.                                                  GpiBeginElement that was 
  12626.                                                  greater then the permitted 
  12627.                                                  maximum length (251 
  12628.                                                  characters).  The string was 
  12629.                                                  truncated. 
  12630.  
  12631.  PMERR_DEV_FUNC_NOT_INSTALLED                    The function requested is not 
  12632.                                                  supported by the presentation 
  12633.                                                  driver. 
  12634.  
  12635.  PMERR_DEVICE_DRIVER_ERROR_1                     Miscellaneous error available 
  12636.                                                  for use by user written device 
  12637.                                                  drivers. 
  12638.  
  12639.  PMERR_DEVICE_DRIVER_ERROR_10                    Miscellaneous error available 
  12640.                                                  for use by user written device 
  12641.                                                  drivers. 
  12642.  
  12643.  PMERR_DEVICE_DRIVER_ERROR_2                     Miscellaneous error available 
  12644.                                                  for use by user written device 
  12645.                                                  drivers. 
  12646.  
  12647.  PMERR_DEVICE_DRIVER_ERROR_3                     Miscellaneous error available 
  12648.                                                  for use by user written device 
  12649.                                                  drivers. 
  12650.  
  12651.  PMERR_DEVICE_DRIVER_ERROR_4                     Miscellaneous error available 
  12652.                                                  for use by user written device 
  12653.                                                  drivers. 
  12654.  
  12655.  PMERR_DEVICE_DRIVER_ERROR_5                     Miscellaneous error available 
  12656.                                                  for use by user written device 
  12657.                                                  drivers. 
  12658.  
  12659.  PMERR_DEVICE_DRIVER_ERROR_6                     Miscellaneous error available 
  12660.                                                  for use by user written device 
  12661.                                                  drivers. 
  12662.  
  12663.  PMERR_DEVICE_DRIVER_ERROR_7                     Miscellaneous error available 
  12664.                                                  for use by user written device 
  12665.                                                  drivers. 
  12666.  
  12667.  PMERR_DEVICE_DRIVER_ERROR_8                     Miscellaneous error available 
  12668.                                                  for use by user written device 
  12669.                                                  drivers. 
  12670.  
  12671.  PMERR_DEVICE_DRIVER_ERROR_9                     Miscellaneous error available 
  12672.                                                  for use by user written device 
  12673.                                                  drivers. 
  12674.  
  12675.  PMERR_DOS_ERROR                                 A DOS call returned an error. 
  12676.  
  12677.  PMERR_DOSOPEN_FAILURE                           A DosOpen call made during 
  12678.                                                  GpiLoadMetaFile or 
  12679.                                                  GpiSaveMetaFile gave a good 
  12680.                                                  return code but the file was 
  12681.                                                  not opened successfully. 
  12682.  
  12683.  PMERR_DOSREAD_FAILURE                           A DosRead call made during 
  12684.                                                  GpiLoadMetaFile gave a good 
  12685.                                                  return code.  However, it 
  12686.                                                  failed to read any more bytes 
  12687.                                                  although the file length 
  12688.                                                  indicated that there were more 
  12689.                                                  to be read. 
  12690.  
  12691.  PMERR_DRIVER_NOT_FOUND                          The device driver specified 
  12692.                                                  with DevPostDeviceModes was 
  12693.                                                  not found. 
  12694.  
  12695.  PMERR_DUP_SEG                                   During GpiPlayMetaFile, while 
  12696.                                                  the actual drawing mode was 
  12697.                                                  draw-and-retain or retain, a 
  12698.                                                  metafile segment to be stored 
  12699.                                                  in the presentation space was 
  12700.                                                  found to have the same segment 
  12701.                                                  identifier as an existing 
  12702.                                                  segment. 
  12703.  
  12704.  PMERR_DUP_SEGNAME                               A called segment has a name 
  12705.                                                  that has already been used by 
  12706.                                                  another called segment in the 
  12707.                                                  input PIF. 
  12708.  
  12709.  PMERR_DUPLICATE_TITLE                           The program title specified in 
  12710.                                                  the PIBSTRUCT already exists 
  12711.                                                  within the same group. 
  12712.  
  12713.  PMERR_DYNAMIC_SEG_SEQ_ERROR                     During removal of dynamic 
  12714.                                                  segments while processing 
  12715.                                                  GpiDrawChain, GpiDrawFrom, or 
  12716.                                                  GpiDrawSegment, the internal 
  12717.                                                  state indicated that dynamic 
  12718.                                                  segment data was still visible 
  12719.                                                  after all chained dynamic 
  12720.                                                  segments had been processed. 
  12721.                                                  This can occur if segments 
  12722.                                                  drawn dynamically (including 
  12723.                                                  called segments) are modified 
  12724.                                                  or removed from the chain 
  12725.                                                  while visible. 
  12726.  
  12727.  PMERR_DYNAMIC_SEG_ZERO_INV                      An attempt was been made to 
  12728.                                                  open a dynamic segment with a 
  12729.                                                  segment identifier of zero. 
  12730.  
  12731.  PMERR_ENDDOC_NOT_ISSUED                         A request to close the spooled 
  12732.                                                  output without first issuing a 
  12733.                                                  an ENDDOC was attempted. 
  12734.  
  12735.  PMERR_ESC_CODE_NOT_SUPPORTED                    The code specified with 
  12736.                                                  DevEscape is not supported by 
  12737.                                                  the target device driver. 
  12738.  
  12739.  PMERR_EXCEEDS_MAX_SEG_LENGTH                    During metafile creation or 
  12740.                                                  generation of retained 
  12741.                                                  graphics the system has 
  12742.                                                  exceeded maximum segment size. 
  12743.  
  12744.  PMERR_FONT_AND_MODE_MISMATCH                    An attempt was made to draw 
  12745.                                                  characters with a character 
  12746.                                                  mode and character set that 
  12747.                                                  are incompatible.  For 
  12748.                                                  example, the character 
  12749.                                                  specifies an image/raster font 
  12750.                                                  when the mode calls for a 
  12751.                                                  vector/outline font. 
  12752.  
  12753.  PMERR_FONT_FILE_NOT_LOADED                      An attempt was made to unload 
  12754.                                                  a font file that was not 
  12755.                                                  loaded. 
  12756.  
  12757.  PMERR_FONT_NOT_LOADED                           An attempt was made to create 
  12758.                                                  a font that was not loaded. 
  12759.  
  12760.  PMERR_FUNCTION_NOT_SUPPORTED                    The function is not supported. 
  12761.  
  12762.  PMERR_GREATER_THAN_64K                          A data item or array dimension 
  12763.                                                  is greater than 65 535. 
  12764.  
  12765.  PMERR_HBITMAP_BUSY                              An internal bit map busy error 
  12766.                                                  was detected.  The bit map was 
  12767.                                                  locked by one thread during an 
  12768.                                                  attempt to access it from 
  12769.                                                  another thread. 
  12770.  
  12771.  PMERR_HDC_BUSY                                  An internal device context 
  12772.                                                  busy error was detected.  The 
  12773.                                                  device context was locked by 
  12774.                                                  one thread during an attempt 
  12775.                                                  to access it from another 
  12776.                                                  thread. 
  12777.  
  12778.  PMERR_HEAP_MAX_SIZE_REACHED                     The heap has reached its 
  12779.                                                  maximum size (64KB), and 
  12780.                                                  cannot be increased. 
  12781.  
  12782.  PMERR_HEAP_OUT_OF_MEMORY                        An attempt to increase the 
  12783.                                                  size of the heap failed. 
  12784.  
  12785.  PMERR_HFONT_IS_SELECTED                         An attempt has been made to 
  12786.                                                  either change the owner of a 
  12787.                                                  font, or delete when it is 
  12788.                                                  currently selected. 
  12789.  
  12790.  PMERR_HRGN_BUSY                                 An internal region busy error 
  12791.                                                  was detected.  The region was 
  12792.                                                  locked by one thread during an 
  12793.                                                  attempt to access it from 
  12794.                                                  another thread. 
  12795.  
  12796.  PMERR_HUGE_FONTS_NOT_SUPPORTED                  An attempt was made using 
  12797.                                                  GpiSetCharSet, 
  12798.                                                  GpiSetPatternSet, 
  12799.                                                  GpiSetMarkerSet, or 
  12800.                                                  GpiSetAttrs to select a font 
  12801.                                                  that is larger than the 
  12802.                                                  maximum size (64Kb) supported 
  12803.                                                  by the target device driver. 
  12804.  
  12805.  PMERR_ID_HAS_NO_BITMAP                          No bit map was tagged with the 
  12806.                                                  setid specified on a 
  12807.                                                  GpiQueryBitmapHandle function. 
  12808.  
  12809.  PMERR_IMAGE_INCOMPLETE                          A drawn segment has opened an 
  12810.                                                  image bracket and ended 
  12811.                                                  without closing it. 
  12812.  
  12813.  PMERR_INCOMPATIBLE_BITMAP                       An attempt was made to select 
  12814.                                                  a bit map or perform a BitBlt 
  12815.                                                  operation on a device context 
  12816.                                                  that was incompatible with the 
  12817.                                                  format of the bit map. 
  12818.  
  12819.  PMERR_INCOMPATIBLE_METAFILE                     An attempt was made to 
  12820.                                                  associate a presentation space 
  12821.                                                  and a metafile device context 
  12822.                                                  with incompatible page units, 
  12823.                                                  size or coordinate format; or 
  12824.                                                  to play a metafile using the 
  12825.                                                  RES_RESET option (to reset the 
  12826.                                                  presentation space) to a 
  12827.                                                  presentation space that is 
  12828.                                                  itself associated with a 
  12829.                                                  metafile device context. 
  12830.  
  12831.  PMERR_INCORRECT_DATATYPE                        A data type is specified which 
  12832.                                                  is incorrect for this 
  12833.                                                  function. 
  12834.  
  12835.  PMERR_INCORRECT_DC_TYPE                         An attempt was made to perform 
  12836.                                                  a bit-map operation on a 
  12837.                                                  presentation space associated 
  12838.                                                  with a device context of a 
  12839.                                                  type that is unable to support 
  12840.                                                  bit-map operations. 
  12841.  
  12842.  PMERR_INCORRECT_HSTRUCT                         A structure handle is 
  12843.                                                  non-NULL, and is invalid for 
  12844.                                                  one of the following reasons: 
  12845.  
  12846.                                                                                                   o It is not the handle of a data structure.
  12847.                                                                                                   o It is the handle of an ERRINFO
  12848.                                                                                                    structure, which should not be used in
  12849.                                                                                                    this call.
  12850.                                                                                                   o A handle block returned by the bindings
  12851.                                                                                                    to the application has been used for an
  12852.                                                                                                    in-line structure handle.
  12853.  
  12854.  PMERR_INI_FILE_IS_SYS_OR_USER                   User or system initialization 
  12855.                                                  file cannot be closed. 
  12856.  
  12857.  PMERR_INSUFF_SPACE_TO_ADD                       The initialization file could 
  12858.                                                  not be extended to add the 
  12859.                                                  required program or group. 
  12860.  
  12861.  PMERR_INSUFFICIENT_DISK_SPACE                   The operation terminated 
  12862.                                                  through insufficient disk 
  12863.                                                  space. 
  12864.  
  12865.  PMERR_INSUFFICIENT_MEMORY                       The operation terminated 
  12866.                                                  through insufficient memory. 
  12867.  
  12868.  PMERR_INV_3DCOORD                               An order specifying 
  12869.                                                  3-dimensional coordinates has 
  12870.                                                  been found in the input PIF. 
  12871.  
  12872.  PMERR_INV_ANGLE_PARM                            An invalid angle parameter was 
  12873.                                                  specified with GpiPartialArc. 
  12874.  
  12875.  PMERR_INV_ARC_CONTROL                           An invalid control parameter 
  12876.                                                  was specified with GpiFullArc. 
  12877.  
  12878.  PMERR_INV_AREA_CONTROL                          An invalid options parameter 
  12879.                                                  was specified with 
  12880.                                                  GpiBeginArea. 
  12881.  
  12882.  PMERR_INV_ATTR_MODE                             An invalid mode parameter was 
  12883.                                                  specified with GpiSetAttrMode. 
  12884.  
  12885.  PMERR_INV_BACKGROUND_COL_ATTR                   An invalid background color 
  12886.                                                  attribute value was specified 
  12887.                                                  or the default value was 
  12888.                                                  explicitly specified with 
  12889.                                                  GpiSetAttrs instead of using 
  12890.                                                  the defaults mask. 
  12891.  
  12892.  PMERR_INV_BACKGROUND_MIX_ATTR                   An invalid background mix 
  12893.                                                  attribute value was specified 
  12894.                                                  or the default value was 
  12895.                                                  explicitly specified with 
  12896.                                                  GpiSetAttrs instead of using 
  12897.                                                  the defaults mask. 
  12898.  
  12899.  PMERR_INV_BITBLT_MIX                            An invalid lRop was specified 
  12900.                                                  with a GpiBitBlt or 
  12901.                                                  GpiWCBitBlt function. 
  12902.  
  12903.  PMERR_INV_BITBLT_STYLE                          An invalid options parameter 
  12904.                                                  was specified with a GpiBitBlt 
  12905.                                                  or GpiWCBitBlt function. 
  12906.  
  12907.  PMERR_INV_BITMAP_DATA                           In processing a bit map, the 
  12908.                                                  end of the data was 
  12909.                                                  unexpectedly encountered. 
  12910.  
  12911.  PMERR_INV_BITMAP_DIMENSION                      An invalid dimension was 
  12912.                                                  specified with a load bit-map 
  12913.                                                  function. 
  12914.  
  12915.  PMERR_INV_BOX_CONTROL                           An invalid control parameter 
  12916.                                                  was specified with GpiBox. 
  12917.  
  12918.  PMERR_INV_BOX_ROUNDING_PARM                     An invalid corner rounding 
  12919.                                                  control parameter was 
  12920.                                                  specified with GpiBox. 
  12921.  
  12922.  PMERR_INV_CHAR_ALIGN_ATTR                       The text alignment attribute 
  12923.                                                  specified in 
  12924.                                                  GpiSetTextAlignment is not 
  12925.                                                  valid. 
  12926.  
  12927.  PMERR_INV_CHAR_ANGLE_ATTR                       The default character angle 
  12928.                                                  attribute value was explicitly 
  12929.                                                  specified with GpiSetAttrs 
  12930.                                                  instead of using the defaults 
  12931.                                                  mask. 
  12932.  
  12933.  PMERR_INV_CHAR_DIRECTION_ATTR                   An invalid character direction 
  12934.                                                  attribute value was specified 
  12935.                                                  or the default value was 
  12936.                                                  explicitly specified with 
  12937.                                                  GpiSetAttrs instead of using 
  12938.                                                  the defaults mask. 
  12939.  
  12940.  PMERR_INV_CHAR_MODE_ATTR                        An invalid character mode 
  12941.                                                  attribute value was specified 
  12942.                                                  or the default value was 
  12943.                                                  explicitly specified with 
  12944.                                                  GpiSetAttrs instead of using 
  12945.                                                  the defaults mask. 
  12946.  
  12947.  PMERR_INV_CHAR_POS_OPTIONS                      An invalid options parameter 
  12948.                                                  was specified with 
  12949.                                                  GpiCharStringPos or 
  12950.                                                  GpiCharStringPosAt. 
  12951.  
  12952.  PMERR_INV_CHAR_SET_ATTR                         An invalid character setid 
  12953.                                                  attribute value was specified 
  12954.                                                  or the default value was 
  12955.                                                  explicitly specified with 
  12956.                                                  GpiSetAttrs instead of using 
  12957.                                                  the defaults mask. 
  12958.  
  12959.  PMERR_INV_CHAR_SHEAR_ATTR                       An invalid character shear 
  12960.                                                  attribute value was specified 
  12961.                                                  or the default value was 
  12962.                                                  explicitly specified with 
  12963.                                                  GpiSetAttrs instead of using 
  12964.                                                  the defaults mask. 
  12965.  
  12966.  PMERR_INV_CLIP_PATH_OPTIONS                     An invalid options parameter 
  12967.                                                  was specified with 
  12968.                                                  GpiSetClipPath. 
  12969.  
  12970.  PMERR_INV_CODEPAGE                              An invalid code-page parameter 
  12971.                                                  was specified with GpiSetCp. 
  12972.  
  12973.  PMERR_INV_COLOR_ATTR                            An invalid color attribute 
  12974.                                                  value was specified or the 
  12975.                                                  default value was explicitly 
  12976.                                                  specified with GpiSetAttrs 
  12977.                                                  instead of using the defaults 
  12978.                                                  mask. 
  12979.  
  12980.  PMERR_INV_COLOR_DATA                            Invalid color table definition 
  12981.                                                  data was specified with 
  12982.                                                  GpiCreateLogColorTable. 
  12983.  
  12984.  PMERR_INV_COLOR_FORMAT                          An invalid format parameter 
  12985.                                                  was specified with 
  12986.                                                  GpiCreateLogColorTable. 
  12987.  
  12988.  PMERR_INV_COLOR_INDEX                           An invalid color index 
  12989.                                                  parameter was specified with 
  12990.                                                  GpiQueryRGBColor. 
  12991.  
  12992.  PMERR_INV_COLOR_OPTIONS                         An invalid options parameter 
  12993.                                                  was specified with a logical 
  12994.                                                  color table or color query 
  12995.                                                  function. 
  12996.  
  12997.  PMERR_INV_COLOR_START_INDEX                     An invalid starting index 
  12998.                                                  parameter was specified with a 
  12999.                                                  logical color table or color 
  13000.                                                  query function. 
  13001.  
  13002.  PMERR_INV_CONV                                  Invalid conversion-type 
  13003.                                                  parameter. 
  13004.  
  13005.  PMERR_INV_COORD_OFFSET                          An invalid coordinate offset 
  13006.                                                  value was specified. 
  13007.  
  13008.  PMERR_INV_COORD_SPACE                           An invalid source or target 
  13009.                                                  coordinate space parameter was 
  13010.                                                  specified with GpiConvert. 
  13011.  
  13012.  PMERR_INV_COORDINATE                            An invalid coordinate value 
  13013.                                                  was specified. 
  13014.  
  13015.  PMERR_INV_CORRELATE_DEPTH                       An invalid maxdepth parameter 
  13016.                                                  was specified with 
  13017.                                                  GpiCorrelateSegment, 
  13018.                                                  GpiCorrelateFrom, or 
  13019.                                                  GpiCorrelateChain. 
  13020.  
  13021.  PMERR_INV_CORRELATE_TYPE                        An invalid type parameter was 
  13022.                                                  specified with 
  13023.                                                  GpiCorrelateSegment, 
  13024.                                                  GpiCorrelateFrom, or 
  13025.                                                  GpiCorrelateChain. 
  13026.  
  13027.  PMERR_INV_CURSOR_BITMAP                         An invalid pointer was 
  13028.                                                  referenced with WinSetPointer. 
  13029.  
  13030.  PMERR_INV_DC_DATA                               An invalid data parameter was 
  13031.                                                  specified with DevOpenDC. 
  13032.  
  13033.  PMERR_INV_DC_TYPE                               An invalid type parameter was 
  13034.                                                  specified with DevOpenDC, or a 
  13035.                                                  function was issued that is 
  13036.                                                  invalid for a 
  13037.                                                  OD_METAFILE_NOQUERY device 
  13038.                                                  context. 
  13039.  
  13040.  PMERR_INV_DEV_MODES_OPTIONS                     An invalid options parameter 
  13041.                                                  was specified with 
  13042.                                                  DevPostDeviceModes. 
  13043.  
  13044.  PMERR_INV_DEVICE_NAME                           An invalid devicename 
  13045.                                                  parameter was specified with 
  13046.                                                  DevPostDeviceModes. 
  13047.  
  13048.  PMERR_INV_DRAW_BORDER_OPTION                    An invalid option parameter 
  13049.                                                  was specified with 
  13050.                                                  WinDrawBorder. 
  13051.  
  13052.  PMERR_INV_DRAW_CONTROL                          An invalid control parameter 
  13053.                                                  was specified with 
  13054.                                                  GpiSetDrawControl or 
  13055.                                                  GpiQueryDrawControl. 
  13056.  
  13057.  PMERR_INV_DRAW_VALUE                            An invalid value parameter was 
  13058.                                                  specified with 
  13059.                                                  GpiSetDrawControl. 
  13060.  
  13061.  PMERR_INV_DRAWING_MODE                          An invalid mode parameter was 
  13062.                                                  specified with 
  13063.                                                  GpiSetDrawControl not 
  13064.                                                  draw-and-retain or draw. 
  13065.  
  13066.  PMERR_INV_DRIVER_DATA                           Invalid driver data was 
  13067.                                                  specified. 
  13068.  
  13069.  PMERR_INV_DRIVER_NAME                           A driver name was specified 
  13070.                                                  which has not been installed. 
  13071.  
  13072.  PMERR_INV_EDIT_MODE                             An invalid mode parameter was 
  13073.                                                  specified with GpiSetEditMode. 
  13074.  
  13075.  PMERR_INV_ELEMENT_OFFSET                        An invalid off (offset) 
  13076.                                                  parameter was specified with 
  13077.                                                  GpiQueryElement. 
  13078.  
  13079.  PMERR_INV_ELEMENT_POINTER                       An attempt was made to issue 
  13080.                                                  GpiPutData with the element 
  13081.                                                  pointer not pointing at the 
  13082.                                                  last element. 
  13083.  
  13084.  PMERR_INV_END_PATH_OPTIONS                      An attempt to create or delete 
  13085.                                                  a path out of context of the 
  13086.                                                  path bracket was made. 
  13087.  
  13088.  PMERR_INV_ESC_CODE                              An invalid escape code was 
  13089.                                                  used in a call to DevEscape. 
  13090.  
  13091.  PMERR_INV_ESCAPE_DATA                           An invalid data parameter was 
  13092.                                                  specified with DevEscape. 
  13093.  
  13094.  PMERR_INV_FACENAME                              An invalid font family name 
  13095.                                                  was passed to 
  13096.                                                  GpiQueryFaceString. 
  13097.  
  13098.  PMERR_INV_FACENAMEDESC                          The font facename description 
  13099.                                                  is invalid. 
  13100.  
  13101.  PMERR_INV_FILL_PATH_OPTIONS                     An invalid options parameter 
  13102.                                                  was specified with 
  13103.                                                  GpiFillPath. 
  13104.  
  13105.  PMERR_INV_FIRST_CHAR                            An invalid firstchar parameter 
  13106.                                                  was specified with 
  13107.                                                  GpiQueryWidthTable. 
  13108.  
  13109.  PMERR_INV_FLOOD_FILL_OPTIONS                    Invalid flood fill parameters 
  13110.                                                  were specified. 
  13111.  
  13112.  PMERR_INV_FONT_ATTRS                            An invalid attrs parameter was 
  13113.                                                  specified with 
  13114.                                                  GpiCreateLogFont. 
  13115.  
  13116.  PMERR_INV_FONT_FILE_DATA                        The font file specified with 
  13117.                                                  GpiLoadFonts, 
  13118.                                                  GpiLoadPublicFonts, 
  13119.                                                  GpiQueryFontFileDescriptions, 
  13120.                                                  or GpiQueryFullFontFileDescs 
  13121.                                                  contains invalid data. 
  13122.  
  13123.  PMERR_INV_FOR_THIS_DC_TYPE                      An attempt has been made to 
  13124.                                                  issue GpiRemoveDynamics or 
  13125.                                                  GpiDrawDynamics to a 
  13126.                                                  presentation space associated 
  13127.                                                  with a metafile device 
  13128.                                                  context. 
  13129.  
  13130.  PMERR_INV_FORMS_CODE                            An invalid forms code 
  13131.                                                  parameter was specified with 
  13132.                                                  DevQueryHardcopyCaps. 
  13133.  
  13134.  PMERR_INV_GEOM_LINE_WIDTH_ATTR                  An invalid geometric line 
  13135.                                                  width attribute value was 
  13136.                                                  specified. 
  13137.  
  13138.  PMERR_INV_GETDATA_CONTROL                       An invalid format parameter 
  13139.                                                  was specified with GpiGetData. 
  13140.  
  13141.  PMERR_INV_GRAPHICS_FIELD                        An invalid field parameter was 
  13142.                                                  specified with 
  13143.                                                  GpiSetGraphicsField. 
  13144.  
  13145.  PMERR_INV_HBITMAP                               An invalid bit-map handle was 
  13146.                                                  specified. 
  13147.  
  13148.  PMERR_INV_HDC                                   An invalid device-context 
  13149.                                                  handle or (micro presentation 
  13150.                                                  space) presentation-space 
  13151.                                                  handle was specified. 
  13152.  
  13153.  PMERR_INV_HFONT                                 An invalid font handle was 
  13154.                                                  specified. 
  13155.  
  13156.  PMERR_INV_HMF                                   An invalid metafile handle was 
  13157.                                                  specified. 
  13158.  
  13159.  PMERR_INV_HPAL                                  An invalid color palette 
  13160.                                                  handle was specified. 
  13161.  
  13162.  PMERR_INV_HPS                                   An invalid presentation-space 
  13163.                                                  handle was specified. 
  13164.  
  13165.  PMERR_INV_HRGN                                  An invalid region handle was 
  13166.                                                  specified. 
  13167.  
  13168.  PMERR_INV_ID                                    An invalid lPSid parameter was 
  13169.                                                  specified with GpiRestorePS. 
  13170.  
  13171.  PMERR_INV_IMAGE_DATA_LENGTH                     An invalid lLength parameter 
  13172.                                                  was specified with GpiImage. 
  13173.                                                  There is a mismatch between 
  13174.                                                  the image size and the data 
  13175.                                                  length. 
  13176.  
  13177.  PMERR_INV_IMAGE_DIMENSION                       An invalid psizlImageSize 
  13178.                                                  parameter was specified with 
  13179.                                                  GpiImage. 
  13180.  
  13181.  PMERR_INV_IMAGE_FORMAT                          An invalid lFormat parameter 
  13182.                                                  was specified with GpiImage. 
  13183.  
  13184.  PMERR_INV_IN_AREA                               An attempt was made to issue a 
  13185.                                                  function invalid inside an 
  13186.                                                  area bracket. This can be 
  13187.                                                  detected while the actual 
  13188.                                                  drawing mode is draw or 
  13189.                                                  draw-and-retain or during 
  13190.                                                  segment drawing or correlation 
  13191.                                                  functions. 
  13192.  
  13193.  PMERR_INV_IN_CURRENT_EDIT_MODE                  An attempt was made to issue a 
  13194.                                                  function invalid inside the 
  13195.                                                  current editing mode. 
  13196.  
  13197.  PMERR_INV_IN_ELEMENT                            An attempt was made to issue a 
  13198.                                                  function invalid inside an 
  13199.                                                  element bracket. 
  13200.  
  13201.  PMERR_INV_IN_IMAGE                              An attempt was made to issue a 
  13202.                                                  function invalid inside an 
  13203.                                                  element bracket. 
  13204.  
  13205.  PMERR_INV_IN_PATH                               An attempt was made to issue a 
  13206.                                                  function invalid inside a path 
  13207.                                                  bracket. 
  13208.  
  13209.  PMERR_INV_IN_RETAIN_MODE                        An attempt was made to issue a 
  13210.                                                  function (for example, query) 
  13211.                                                  that is invalid when the 
  13212.                                                  actual drawing mode is not 
  13213.                                                  draw or draw-and-retain. 
  13214.  
  13215.  PMERR_INV_IN_SEG                                An attempt was made to issue a 
  13216.                                                  function invalid inside a 
  13217.                                                  segment bracket. 
  13218.  
  13219.  PMERR_INV_IN_VECTOR_SYMBOL                      An invalid order was detected 
  13220.                                                  inside a vector symbol 
  13221.                                                  definition while drawing a 
  13222.                                                  vector (outline) font. 
  13223.  
  13224.  PMERR_INV_INFO_TABLE                            An invalid bit-map info table 
  13225.                                                  was specified with a bit-map 
  13226.                                                  operation. 
  13227.  
  13228.  PMERR_INV_LENGTH_OR_COUNT                       An invalid length or count 
  13229.                                                  parameter was specified. 
  13230.  
  13231.  PMERR_INV_LINE_END_ATTR                         An invalid line end attribute 
  13232.                                                  value was specified. 
  13233.  
  13234.  PMERR_INV_LINE_JOIN_ATTR                        An invalid line join attribute 
  13235.                                                  value was specified. 
  13236.  
  13237.  PMERR_INV_LINE_TYPE_ATTR                        An invalid line type attribute 
  13238.                                                  value was specified or the 
  13239.                                                  default value was explicitly 
  13240.                                                  specified with GpiSetAttrs 
  13241.                                                  instead of using the defaults 
  13242.                                                  mask. 
  13243.  
  13244.  PMERR_INV_LINE_WIDTH_ATTR                       An invalid line width 
  13245.                                                  attribute value was specified 
  13246.                                                  or the default value was 
  13247.                                                  explicitly specified with 
  13248.                                                  GpiSetAttrs instead of using 
  13249.                                                  the defaults mask. 
  13250.  
  13251.  PMERR_INV_LOGICAL_ADDRESS                       An invalid device logical 
  13252.                                                  address was specified. 
  13253.  
  13254.  PMERR_INV_MARKER_BOX_ATTR                       An invalid marker box 
  13255.                                                  attribute value was specified. 
  13256.  
  13257.  PMERR_INV_MARKER_SET_ATTR                       An invalid marker set 
  13258.                                                  attribute value was specified 
  13259.                                                  or the default value was 
  13260.                                                  explicitly specified with 
  13261.                                                  GpiSetAttrs instead of using 
  13262.                                                  the defaults mask. 
  13263.  
  13264.  PMERR_INV_MARKER_SYMBOL_ATTR                    An invalid marker symbol 
  13265.                                                  attribute value was specified 
  13266.                                                  or the default value was 
  13267.                                                  explicitly specified with 
  13268.                                                  GpiSetAttrs instead of using 
  13269.                                                  the defaults mask. 
  13270.  
  13271.  PMERR_INV_MATRIX_ELEMENT                        An invalid transformation 
  13272.                                                  matrix element was specified. 
  13273.  
  13274.  PMERR_INV_MAX_HITS                              An invalid maxhits parameter 
  13275.                                                  was specified with 
  13276.                                                  GpiCorrelateSegment, 
  13277.                                                  GpiCorrelateFrom, or 
  13278.                                                  GpiCorrelateChain. 
  13279.  
  13280.  PMERR_INV_METAFILE                              An invalid metafile was 
  13281.                                                  specified with 
  13282.                                                  GpiPlayMetaFile. 
  13283.  
  13284.  PMERR_INV_METAFILE_LENGTH                       An invalid length parameter 
  13285.                                                  was specified with 
  13286.                                                  GpiSetMetaFileBits or 
  13287.                                                  GpiQueryMetaFileBits. 
  13288.  
  13289.  PMERR_INV_METAFILE_OFFSET                       An invalid length parameter 
  13290.                                                  was specified with 
  13291.                                                  GpiSetMetaFileBits or 
  13292.                                                  GpiQueryMetaFileBits. 
  13293.  
  13294.  PMERR_INV_MICROPS_DRAW_CONTROL                  A draw control parameter was 
  13295.                                                  specified with 
  13296.                                                  GpiSetDrawControl that is 
  13297.                                                  invalid in a micro 
  13298.                                                  presentation space. 
  13299.  
  13300.  PMERR_INV_MICROPS_FUNCTION                      An attempt was made to issue a 
  13301.                                                  function that is invalid in a 
  13302.                                                  micro presentation space. 
  13303.  
  13304.  PMERR_INV_MICROPS_ORDER                         An attempt was made to play a 
  13305.                                                  metafile containing orders 
  13306.                                                  that are invalid in a micro 
  13307.                                                  presentation space. 
  13308.  
  13309.  PMERR_INV_MIX_ATTR                              An invalid mix attribute value 
  13310.                                                  was specified or the default 
  13311.                                                  value was explicitly specified 
  13312.                                                  with GpiSetAttrs instead of 
  13313.                                                  using the defaults mask. 
  13314.  
  13315.  PMERR_INV_MODE_FOR_OPEN_DYN                     An attempt was made to open a 
  13316.                                                  segment with the ATTR_DYNAMIC 
  13317.                                                  segment set, while the drawing 
  13318.                                                  mode was set to DM_DRAW or 
  13319.                                                  DM_DRAWANDRETAIN. 
  13320.  
  13321.  PMERR_INV_MODE_FOR_REOPEN_SEG                   An attempt was made to reopen 
  13322.                                                  an existing segment while the 
  13323.                                                  drawing mode was set to 
  13324.                                                  DM_DRAW or DM_DRAWANDRETAIN. 
  13325.  
  13326.  PMERR_INV_MODIFY_PATH_MODE                      An invalid mode parameter was 
  13327.                                                  specified with GpiModifyPath. 
  13328.  
  13329.  PMERR_INV_MULTIPLIER                            An invalid multiplier 
  13330.                                                  parameter was specified with 
  13331.                                                  GpiPartialArc or GpiFullArc. 
  13332.  
  13333.  PMERR_INV_NESTED_FIGURES                        Nested figures have been 
  13334.                                                  detected within a path 
  13335.                                                  definition. 
  13336.  
  13337.  PMERR_INV_OR_INCOMPAT_OPTIONS                   An invalid or incompatible 
  13338.                                                  (with micro presentation 
  13339.                                                  space) options parameter was 
  13340.                                                  specified with GpiCreatePS or 
  13341.                                                  GpiSetPS. 
  13342.  
  13343.  PMERR_INV_ORDER_LENGTH                          An invalid order length was 
  13344.                                                  detected during GpiPutData or 
  13345.                                                  segment drawing. 
  13346.  
  13347.  PMERR_INV_ORDERING_PARM                         An invalid order parameter was 
  13348.                                                  specified with 
  13349.                                                  GpiSetSegmentPriority. 
  13350.  
  13351.  PMERR_INV_OUTSIDE_DRAW_MODE                     An attempt was made to issue a 
  13352.                                                  GpiSavePS or GpiRestorePS 
  13353.                                                  function, or an output only 
  13354.                                                  function (for example, 
  13355.                                                  GpiPaintRegion) from 
  13356.                                                  GpiPlayMetaFile without the 
  13357.                                                  drawing mode set to DM_DRAW. 
  13358.  
  13359.  PMERR_INV_PAGE_VIEWPORT                         An invalid viewport parameter 
  13360.                                                  was specified with 
  13361.                                                  GpiSetPageViewport. 
  13362.  
  13363.  PMERR_INV_PATH_ID                               An invalid path identifier 
  13364.                                                  parameter was specified. 
  13365.  
  13366.  PMERR_INV_PATTERN_ATTR                          An invalid pattern symbol 
  13367.                                                  attribute value was specified 
  13368.                                                  or the default value was 
  13369.                                                  explicitly specified with 
  13370.                                                  GpiSetAttrs instead of using 
  13371.                                                  the defaults mask. 
  13372.  
  13373.  PMERR_INV_PATTERN_REF_PT_ATTR                   An invalid refpoint attribute 
  13374.                                                  value was specified. 
  13375.  
  13376.  PMERR_INV_PATTERN_SET_ATTR                      An invalid pattern set 
  13377.                                                  attribute value was specified 
  13378.                                                  or the default value was 
  13379.                                                  explicitly specified with 
  13380.                                                  GpiSetAttrs instead of using 
  13381.                                                  the defaults mask. 
  13382.  
  13383.  PMERR_INV_PATTERN_SET_FONT                      An attempt was made to use an 
  13384.                                                  unsuitable font as a pattern 
  13385.                                                  set. 
  13386.  
  13387.  PMERR_INV_PICK_APERTURE_OPTION                  An invalid options parameter 
  13388.                                                  was specified with 
  13389.                                                  GpiSetPickApertureSize. 
  13390.  
  13391.  PMERR_INV_PICK_APERTURE_POSN                    An invalid pick aperture 
  13392.                                                  position was specified. 
  13393.  
  13394.  PMERR_INV_PICK_APERTURE_SIZE                    An invalid size parameter was 
  13395.                                                  specified with 
  13396.                                                  GpiSetPickApertureSize. 
  13397.  
  13398.  PMERR_INV_PLAY_METAFILE_OPTION                  An invalid option parameter 
  13399.                                                  was specified with 
  13400.                                                  GpiPlayMetaFile. 
  13401.  
  13402.  PMERR_INV_PRIMITIVE_TYPE                        An invalid primitive type 
  13403.                                                  parameter was specified with 
  13404.                                                  GpiSetAttrs or GpiQueryAttrs. 
  13405.  
  13406.  PMERR_INV_PS_SIZE                               An invalid size parameter was 
  13407.                                                  specified with GpiCreatePS or 
  13408.                                                  GpiSetPS. 
  13409.  
  13410.  PMERR_INV_PUTDATA_FORMAT                        An invalid format parameter 
  13411.                                                  was specified with GpiPutData. 
  13412.  
  13413.  PMERR_INV_QUERY_ELEMENT_NO                      An invalid start parameter was 
  13414.                                                  specified with DevQueryCaps. 
  13415.  
  13416.  PMERR_INV_RECT                                  An invalid rectangle parameter 
  13417.                                                  was specified. 
  13418.  
  13419.  PMERR_INV_REGION_CONTROL                        An invalid control parameter 
  13420.                                                  was specified with 
  13421.                                                  GpiQueryRegionRects. 
  13422.  
  13423.  PMERR_INV_REGION_MIX_MODE                       An invalid mode parameter was 
  13424.                                                  specified with 
  13425.                                                  GpiCombineRegion. 
  13426.  
  13427.  PMERR_INV_REPLACE_MODE_FUNC                     An attempt was made to issue 
  13428.                                                  GpiPutData with the editing 
  13429.                                                  mode set to SEGEM_REPLACE. 
  13430.  
  13431.  PMERR_INV_RESERVED_FIELD                        An invalid reserved field was 
  13432.                                                  specified. 
  13433.  
  13434.  PMERR_INV_RESET_OPTIONS                         An invalid options parameter 
  13435.                                                  was specified with GpiResetPS. 
  13436.  
  13437.  PMERR_INV_RGBCOLOR                              An invalid rgb color parameter 
  13438.                                                  was specified with 
  13439.                                                  GpiQueryNearestColor or 
  13440.                                                  GpiQueryColor. 
  13441.  
  13442.  PMERR_INV_SCAN_START                            An invalid scanstart parameter 
  13443.                                                  was specified with a bit-map 
  13444.                                                  function. 
  13445.  
  13446.  PMERR_INV_SEG_ATTR                              An invalid attribute parameter 
  13447.                                                  was specified with 
  13448.                                                  GpiSetSegmentAttrs, 
  13449.                                                  GpiQuerySegmentAttrs, 
  13450.                                                  GpiSetInitialSegmentAttrs, or 
  13451.                                                  GpiQueryInitialSegmentAttrs. 
  13452.  
  13453.  PMERR_INV_SEG_ATTR_VALUE                        An invalid attribute value 
  13454.                                                  parameter was specified with 
  13455.                                                  GpiSetSegmentAttrs or 
  13456.                                                  GpiSetInitialSegmentAttrs. 
  13457.  
  13458.  PMERR_INV_SEG_NAME                              An invalid segment identifier 
  13459.                                                  was specified. 
  13460.  
  13461.  PMERR_INV_SEG_OFFSET                            An invalid offset parameter 
  13462.                                                  was specified with GpiPutData. 
  13463.  
  13464.  PMERR_INV_SEGLEN                                An order length exceeds the 
  13465.                                                  remaining segment length in 
  13466.                                                  the input PIF. 
  13467.  
  13468.  PMERR_INV_SETID                                 An invalid setid parameter was 
  13469.                                                  specified. 
  13470.  
  13471.  PMERR_INV_SHARPNESS_PARM                        An invalid sharpness parameter 
  13472.                                                  was specified with 
  13473.                                                  GpiPolyFilletSharp. 
  13474.  
  13475.  PMERR_INV_STOP_DRAW_VALUE                       An invalid value parameter was 
  13476.                                                  specified with GpiSetStopDraw. 
  13477.  
  13478.  PMERR_INV_TRANSFORM_TYPE                        An invalid options parameter 
  13479.                                                  was specified with a transform 
  13480.                                                  matrix function. 
  13481.  
  13482.  PMERR_INV_TYPE                                  Invalid file-type parameter. 
  13483.  
  13484.  PMERR_INV_USAGE_PARM                            An invalid options parameter 
  13485.                                                  was specified with 
  13486.                                                  GpiCreateBitmap. 
  13487.  
  13488.  PMERR_INV_VIEWING_LIMITS                        An invalid limits parameter 
  13489.                                                  was specified with 
  13490.                                                  GpiSetViewingLimits. 
  13491.  
  13492.  PMERR_INV_VIEWLIM                               A set viewing limits order has 
  13493.                                                  an inconsistent mask and order 
  13494.                                                  length in the input PIF. 
  13495.  
  13496.  PMERR_INV_XFORM                                 A set (default) viewing 
  13497.                                                  transform order has an 
  13498.                                                  inconsistent mask and order 
  13499.                                                  length in the input PIF. 
  13500.  
  13501.  PMERR_INVALID_APPL                              Attempted to start an 
  13502.                                                  application whose type is not 
  13503.                                                  recognized by OS/2. 
  13504.  
  13505.  PMERR_INVALID_ARRAY_COUNT                       An array has an invalid count, 
  13506.                                                  that is, less than or equal to 
  13507.                                                  zero. 
  13508.  
  13509.  PMERR_INVALID_ARRAY_SIZE                        A control data type array size 
  13510.                                                  is invalid. 
  13511.  
  13512.  PMERR_INVALID_ASCIIZ                            The profile string is not a 
  13513.                                                  valid zero-terminated string. 
  13514.  
  13515.  PMERR_INVALID_ATOM                              The specified atom does not 
  13516.                                                  exist in the atom table. 
  13517.  
  13518.  PMERR_INVALID_ATOM_NAME                         An invalid atom name string 
  13519.                                                  was passed. 
  13520.  
  13521.  PMERR_INVALID_BUNDLE_TYPE                       An invalid bundle type was 
  13522.                                                  passed. 
  13523.  
  13524.  PMERR_INVALID_CHARACTER_INDEX                   On WinNextChar or WinPrevChar, 
  13525.                                                  a character index is invalid, 
  13526.                                                  that is, it is less than 1 or 
  13527.                                                  is greater than the string 
  13528.                                                  length+1. 
  13529.  
  13530.  PMERR_INVALID_CONTROL_DATATYPE                  An invalid control data type 
  13531.                                                  was specified. 
  13532.  
  13533.  PMERR_INVALID_DATATYPE                          An invalid data type was 
  13534.                                                  specified. 
  13535.  
  13536.  PMERR_INVALID_DST_CODEPAGE                      The destination code page 
  13537.                                                  parameter is invalid. 
  13538.  
  13539.  PMERR_INVALID_ERRORINFO_HANDLE                  On WinFreeErrorInfo, the 
  13540.                                                  ERRINFO is not the handle of 
  13541.                                                  an ERRINFO structure, that is, 
  13542.                                                  it was not created by 
  13543.                                                  WinGetErrorInfo. 
  13544.  
  13545.  PMERR_INVALID_FLAG                              An invalid bit was set for a 
  13546.                                                  parameter. Use constants 
  13547.                                                  defined by PM for options, and 
  13548.                                                  do not set any reserved bits. 
  13549.  
  13550.  PMERR_INVALID_FREE_MESSAGE_ID                   An invalid message identifier 
  13551.                                                  was specified. The call has 
  13552.                                                  completed by assuming the 
  13553.                                                  message parameter and reply 
  13554.                                                  data types to be ULONG. 
  13555.  
  13556.  PMERR_INVALID_GROUP_HANDLE                      An invalid program-group 
  13557.                                                  handle was specified. 
  13558.  
  13559.  PMERR_INVALID_HACCEL                            An invalid accelerator-table 
  13560.                                                  handle was specified. 
  13561.  
  13562.  PMERR_INVALID_HAPP                              The application handle passed 
  13563.                                                  to WinTerminateApp does not 
  13564.                                                  correspond to a valid session. 
  13565.  
  13566.  PMERR_INVALID_HATOMTBL                          An invalid atom-table handle 
  13567.                                                  was specified. 
  13568.  
  13569.  PMERR_INVALID_HEAP_POINTER                      An invalid pointer was found 
  13570.                                                  within the heap. 
  13571.  
  13572.  PMERR_INVALID_HEAP_SIZE                         Invalid data was found within 
  13573.                                                  the heap. 
  13574.  
  13575.  PMERR_INVALID_HEAP_SIZE_PARM                    Invalid data was found within 
  13576.                                                  the heap. 
  13577.  
  13578.  PMERR_INVALID_HEAP_SIZE_WORD                    Invalid data was found within 
  13579.                                                  the heap. 
  13580.  
  13581.  PMERR_INVALID_HENUM                             An invalid enumeration handle 
  13582.                                                  was specified. 
  13583.  
  13584.  PMERR_INVALID_HHEAP                             An invalid heap handle was 
  13585.                                                  specified. 
  13586.  
  13587.  PMERR_INVALID_HMQ                               An invalid message-queue 
  13588.                                                  handle was specified. 
  13589.  
  13590.  PMERR_INVALID_HPTR                              An invalid pointer handle was 
  13591.                                                  specified. 
  13592.  
  13593.  PMERR_INVALID_HSTRUCT                           An invalid (null) structure 
  13594.                                                  handle was specified. 
  13595.  
  13596.  PMERR_INVALID_HWND                              An invalid window handle was 
  13597.                                                  specified. 
  13598.  
  13599.  PMERR_INVALID_INI_FILE_HANDLE                   An invalid initialization-file 
  13600.                                                  handle was specified. 
  13601.  
  13602.  PMERR_INVALID_INTEGER                           The specified atom is not a 
  13603.                                                  valid integer atom. 
  13604.  
  13605.  PMERR_INVALID_INTEGER_ATOM                      The specified atom is not a 
  13606.                                                  valid integer atom. 
  13607.  
  13608.  PMERR_INVALID_MESSAGE_ID                        A message identifier is 
  13609.                                                  invalid. 
  13610.  
  13611.  PMERR_INVALID_NUMBER_OF_PARMS                   The number of parameters is 
  13612.                                                  invalid. 
  13613.  
  13614.  PMERR_INVALID_NUMBER_OF_TYPES                   The function call has an 
  13615.                                                  invalid number (zero) of 
  13616.                                                  types. 
  13617.  
  13618.  PMERR_INVALID_PARAMETER                         An application parameter value 
  13619.                                                  is invalid for its converted 
  13620.                                                  PM type. For example: a 4-byte 
  13621.                                                  value outside the range 
  13622.                                                  -32,768 to +32,767 cannot be 
  13623.                                                  converted to a SHORT, and a 
  13624.                                                  negative number cannot be 
  13625.                                                  converted to a ULONG or 
  13626.                                                  USHORT. 
  13627.  
  13628.  PMERR_INVALID_PARAMETER_TYPE                    A parameter type is invalid 
  13629.                                                  for a bundle mask. 
  13630.  
  13631.  PMERR_INVALID_PARAMETERS                        An application parameter value 
  13632.                                                  is invalid for its converted 
  13633.                                                  PM type. For example: a 4-byte 
  13634.                                                  value outside the range 
  13635.                                                  -32768 to +32 767 cannot be 
  13636.                                                  converted to a SHORT, and a 
  13637.                                                  negative number cannot be 
  13638.                                                  converted to a ULONG or 
  13639.                                                  USHORT. 
  13640.  
  13641.   PMERR_INVALID_PARAMETERS
  13642.  
  13643.  PMERR_INVALID_PARM                              A parameter to the function 
  13644.                                                  contained invalid data. 
  13645.  
  13646.  PMERR_INVALID_PROGRAM_HANDLE                    An invalid program handle was 
  13647.                                                  specified. 
  13648.  
  13649.  PMERR_INVALID_SESSION_ID                        The specified session 
  13650.                                                  identifier is invalid.  Either 
  13651.                                                  zero (for the application's 
  13652.                                                  own session) or a valid 
  13653.                                                  identifier must be specified. 
  13654.  
  13655.  PMERR_INVALID_SRC_CODEPAGE                      The source code page parameter 
  13656.                                                  is invalid. 
  13657.  
  13658.  PMERR_INVALID_STRING_PARM                       The specified string parameter 
  13659.                                                  is invalid. 
  13660.  
  13661.  PMERR_INVALID_SWITCH_HANDLE                     An invalid Window List entry 
  13662.                                                  handle was specified. 
  13663.  
  13664.  PMERR_INVALID_TARGET_HANDLE                     An invalid target 
  13665.                                                  program-group handle was 
  13666.                                                  specified. 
  13667.  
  13668.  PMERR_INVALID_TITLE                             The specified program or group 
  13669.                                                  title is too long or contains 
  13670.                                                  invalid characters. 
  13671.  
  13672.  PMERR_INVALID_TYPE_FOR_LENGTH                   The data type for a control 
  13673.                                                  length is invalid. 
  13674.  
  13675.  PMERR_INVALID_TYPE_FOR_MPARAM                   The message parameter type for 
  13676.                                                  a control MPARAM is invalid, 
  13677.                                                  that is, not mparam1, mparam2 
  13678.                                                  or mreply. 
  13679.  
  13680.  PMERR_INVALID_TYPE_FOR_OFFSET                   The data type for a control 
  13681.                                                  offset is invalid. 
  13682.  
  13683.  PMERR_INVALID_WINDOW                            The window specified with a 
  13684.                                                  Window List call is not a 
  13685.                                                  valid frame window. 
  13686.  
  13687.  PMERR_KERNING_NOT_SUPPORTED                     Kerning was requested on 
  13688.                                                  GpiCreateLogFont call to a 
  13689.                                                  presentation space associated 
  13690.                                                  with a device context that 
  13691.                                                  does not support kerning. 
  13692.  
  13693.  PMERR_LABEL_NOT_FOUND                           The specified element label 
  13694.                                                  did not exist. 
  13695.  
  13696.  PMERR_MATRIX_OVERFLOW                           An internal overflow error 
  13697.                                                  occurred during matrix 
  13698.                                                  multiplication. This can occur 
  13699.                                                  if coordinates or matrix 
  13700.                                                  transformation elements (or 
  13701.                                                  both) are invalid or too 
  13702.                                                  large. 
  13703.  
  13704.  PMERR_MEMORY_ALLOC                              An error occurred during 
  13705.                                                  memory management. 
  13706.  
  13707.  PMERR_MEMORY_ALLOCATION_ERR                     An error occurred during 
  13708.                                                  memory management. 
  13709.  
  13710.  PMERR_MEMORY_DEALLOCATION_ERR                   An error occurred during 
  13711.                                                  memory management. 
  13712.  
  13713.  PMERR_METAFILE_IN_USE                           An attempt has been made to 
  13714.                                                  access a metafile that is in 
  13715.                                                  use by another thread. 
  13716.  
  13717.  PMERR_METAFILE_INTERNAL_ERROR                   An internal inconsistency has 
  13718.                                                  been detected during metafile 
  13719.                                                  unlock processing. 
  13720.  
  13721.  PMERR_METAFILE_LIMIT_EXCEEDED                   The maximum permitted metafile 
  13722.                                                  size limit was exceeded during 
  13723.                                                  metafile recording. 
  13724.  
  13725.  PMERR_MSG_QUEUE_ALREADY_EXISTS                  An attempt to create a message 
  13726.                                                  queue for a thread failed 
  13727.                                                  because a message queue 
  13728.                                                  already exists for the calling 
  13729.                                                  thread. 
  13730.  
  13731.  PMERR_MSGID_TOO_SMALL                           The message identifier 
  13732.                                                  specified is too small. 
  13733.  
  13734.  PMERR_NEGATIVE_STRCOND_DIM                      A negative array dimension was 
  13735.                                                  passed for a data type length. 
  13736.  
  13737.  PMERR_NO_BITMAP_SELECTED                        An attempt has been made to 
  13738.                                                  operate on a memory device 
  13739.                                                  context that has no bit map 
  13740.                                                  selected. 
  13741.  
  13742.  PMERR_NO_CURRENT_ELEMENT                        An attempt has been made to 
  13743.                                                  issue GpiQueryElementType or 
  13744.                                                  GpiQueryElement while there is 
  13745.                                                  no currently open element. 
  13746.  
  13747.  PMERR_NO_CURRENT_SEG                            An attempt has been made to 
  13748.                                                  issue GpiQueryElementType or 
  13749.                                                  GpiQueryElement while there is 
  13750.                                                  no currently open segment. 
  13751.  
  13752.  PMERR_NO_FILL                                   No flood fill occurred because 
  13753.                                                  either the starting point 
  13754.                                                  color was the same as the 
  13755.                                                  input color when a boundary 
  13756.                                                  fill was requested, or the 
  13757.                                                  starting point color was not 
  13758.                                                  the same as the input color 
  13759.                                                  when a surface fill was 
  13760.                                                  requested. 
  13761.  
  13762.  PMERR_NO_METAFILE_RECORD_HANDLE                 The metafile record handle was 
  13763.                                                  not found during metafile 
  13764.                                                  recording, or DevEscape 
  13765.                                                  (DEVESC_STARTDOC) was not 
  13766.                                                  issued when drawing to a 
  13767.                                                  OD_QUEUED device context with 
  13768.                                                  a pszDataType field of 
  13769.                                                  PM_Q_STD. 
  13770.  
  13771.  PMERR_NO_MSG_QUEUE 
  13772.  
  13773.  PMERR_NO_PALETTE_SELECTED                       An attempt to realize a 
  13774.                                                  palette failed because no 
  13775.                                                  palette was previously 
  13776.                                                  selected into the Presentation 
  13777.                                                  Space. 
  13778.  
  13779.  PMERR_NO_SPACE                                  The limit on the number of 
  13780.                                                  Window List entries has been 
  13781.                                                  reached with 
  13782.                                                  WinAddSwitchEntry. 
  13783.  
  13784.  PMERR_NOT_CREATED_BY_DEVOPENDC                  An attempt has been made to 
  13785.                                                  destroy a device context using 
  13786.                                                  DevCloseDC that was not 
  13787.                                                  created using DevOpenDC. 
  13788.  
  13789.  PMERR_NOT_CURRENT_PL_VERSION                    An unexpected data format was 
  13790.                                                  found in the initialization 
  13791.                                                  file. 
  13792.  
  13793.  PMERR_NOT_DRAGGING                              A drag operation is not in 
  13794.                                                  progress at this time. 
  13795.  
  13796.  PMERR_NOT_IN_A_PM_SESSION                       An attempt was made to access 
  13797.                                                  function that is only 
  13798.                                                  available from PM programs 
  13799.                                                  from a non-PM session. 
  13800.  
  13801.  PMERR_NOT_IN_AREA                               An attempt was made to end an 
  13802.                                                  area using GpiEndArea or 
  13803.                                                  during segment drawing while 
  13804.                                                  not in an area bracket. 
  13805.  
  13806.  PMERR_NOT_IN_DRAW_MODE                          An attempt was made to issue 
  13807.                                                  GpiSavePS or GpiRestorePS 
  13808.                                                  while the drawing mode was not 
  13809.                                                  set to DM_DRAW. 
  13810.  
  13811.  PMERR_NOT_IN_ELEMENT                            An attempt was made to end an 
  13812.                                                  element using GpiEndElement or 
  13813.                                                  during segment drawing while 
  13814.                                                  not in an element bracket. 
  13815.  
  13816.  PMERR_NOT_IN_IDX                                The application name, key-name 
  13817.                                                  or program handle was not 
  13818.                                                  found. 
  13819.  
  13820.  PMERR_NOT_IN_IMAGE                              An attempt was made to end an 
  13821.                                                  image during segment drawing 
  13822.                                                  while not in an image bracket. 
  13823.  
  13824.  PMERR_NOT_IN_PATH                               An attempt was made to end a 
  13825.                                                  path using GpiEndPath or 
  13826.                                                  during segment drawing while 
  13827.                                                  not in a path bracket. 
  13828.  
  13829.  PMERR_NOT_IN_RETAIN_MODE                        An attempt was made to issue a 
  13830.                                                  segment editing element 
  13831.                                                  function that is invalid when 
  13832.                                                  the actual drawing mode is not 
  13833.                                                  set to retain. 
  13834.  
  13835.  PMERR_NOT_IN_SEG                                An attempt was made to end a 
  13836.                                                  segment using GpiCloseSegment 
  13837.                                                  while not in a segment 
  13838.                                                  bracket. 
  13839.  
  13840.  PMERR_NOT_SELF_DESCRIBING_DTYP                  A data type is not 
  13841.                                                  self-describing. 
  13842.  
  13843.  PMERR_OK                                        The code page or country code 
  13844.                                                  passed is not valid. 
  13845.  
  13846.  PMERR_OK                                        The window handle or menu item 
  13847.                                                  passed is not valid. 
  13848.  
  13849.  PMERR_OPENING_INI_FILE                          Unable to open initialization 
  13850.                                                  file (due to lack of disk 
  13851.                                                  space for example). 
  13852.  
  13853.  PMERR_ORDER_TOO_BIG                             An internal size limit was 
  13854.                                                  exceeded while converting 
  13855.                                                  orders from short to long 
  13856.                                                  format during GpiPutData 
  13857.                                                  processing. An order was too 
  13858.                                                  long to convert. 
  13859.  
  13860.  PMERR_OWN_SET_ID_REFS                           An attempt to unload a font 
  13861.                                                  failed because the setid is 
  13862.                                                  still being referenced. 
  13863.  
  13864.  PMERR_PALETTE_BUSY                              An attempt has been made to 
  13865.                                                  reset the owner of a palette 
  13866.                                                  when it was busy. 
  13867.  
  13868.  PMERR_PALETTE_SELECTED                          Color palette operations 
  13869.                                                  cannot be performed on a 
  13870.                                                  presentation space while a 
  13871.                                                  palette is selected. 
  13872.  
  13873.  PMERR_PARAMETER_OUT_OF_RANGE                    The value of a parameter was 
  13874.                                                  not within the defined valid 
  13875.                                                  range for that parameter. 
  13876.  
  13877.  PMERR_PATH_INCOMPLETE                           An attempt was made to open or 
  13878.                                                  close a segment either 
  13879.                                                  directly or during segment 
  13880.                                                  drawing, or to issue 
  13881.                                                  GpiAssociate while there is an 
  13882.                                                  open path bracket. 
  13883.  
  13884.  PMERR_PATH_LIMIT_EXCEEDED                       An internal size limit was 
  13885.                                                  exceeded during path or area 
  13886.                                                  processing. 
  13887.  
  13888.  PMERR_PATH_UNKNOWN                              An attempt was made to perform 
  13889.                                                  a path function on a path that 
  13890.                                                  did not exist. 
  13891.  
  13892.  PMERR_PEL_IS_CLIPPED                            An attempt was made to query a 
  13893.                                                  pel that had been clipped 
  13894.                                                  using GpiQueryPel. 
  13895.  
  13896.  PMERR_PEL_NOT_AVAILABLE                         An attempt was made to query a 
  13897.                                                  pel that did not exist in 
  13898.                                                  GpiQueryPel (for example, a 
  13899.                                                  memory device context with no 
  13900.                                                  selected bit map). 
  13901.  
  13902.  PMERR_PRINTER_DD_NOT_DEFINED                    The Presentation Manager 
  13903.                                                  device driver has not been 
  13904.                                                  defined. 
  13905.  
  13906.  PMERR_PRINTER_QUEUE_NOT_DEFINED                 The spooler queue for the 
  13907.                                                  printer has not been defined. 
  13908.  
  13909.  PMERR_PRN_ADDR_IN_USE                           A printer is already defined 
  13910.                                                  on the port. 
  13911.  
  13912.  PMERR_PRN_ADDR_NOT_DEFINED                      The printer port has not been 
  13913.                                                  defined. 
  13914.  
  13915.  PMERR_PRN_NAME_NOT_DEFINED                      The printer has not been 
  13916.                                                  defined. 
  13917.  
  13918.  PMERR_PROLOG_ERROR                              A prolog error was detected 
  13919.                                                  during drawing.  Segment 
  13920.                                                  prologs are used internally 
  13921.                                                  within retained segments and 
  13922.                                                  also appear in metafiles. This 
  13923.                                                  error can also arise from an 
  13924.                                                  End Prolog order that is 
  13925.                                                  outside a prolog. 
  13926.  
  13927.  PMERR_PS_BUSY                                   An attempt was made to access 
  13928.                                                  the presentation space from 
  13929.                                                  more than one thread 
  13930.                                                  simultaneously. 
  13931.  
  13932.  PMERR_PS_IS_ASSOCIATED                          An attempt was made to destroy 
  13933.                                                  a presentation or associate a 
  13934.                                                  presentation space that is 
  13935.                                                  still associated with a device 
  13936.                                                  context. 
  13937.  
  13938.  PMERR_PS_NOT_ASSOCIATED                         An attempt was made to access 
  13939.                                                  a presentation space that is 
  13940.                                                  not associated with a device 
  13941.                                                  context. 
  13942.  
  13943.  PMERR_QUEUE_TOO_LARGE                           An attempt to create a message 
  13944.                                                  queue has failed because the 
  13945.                                                  value specified for the size 
  13946.                                                  of the message queue is too 
  13947.                                                  large. 
  13948.  
  13949.  PMERR_RASTER_FONT                               A request was made for the 
  13950.                                                  outline of a bit-map font. 
  13951.                                                  Outlines can only be returned 
  13952.                                                  for vector font characters. 
  13953.  
  13954.  PMERR_REALIZE_NOT_SUPPORTED                     An attempt was made to create 
  13955.                                                  a realizable logical color 
  13956.                                                  table on a device driver that 
  13957.                                                  does not support this 
  13958.                                                  function. 
  13959.  
  13960.  PMERR_REGION_IS_CLIP_REGION                     An attempt was made to perform 
  13961.                                                  a region operation on a region 
  13962.                                                  that is selected as a clip 
  13963.                                                  region. 
  13964.  
  13965.  PMERR_RESOURCE_DEPLETION                        An internal resource depletion 
  13966.                                                  error has occurred. 
  13967.  
  13968.  PMERR_RESOURCE_NOT_FOUND                        The specified resource 
  13969.                                                  identity could not be found. 
  13970.  
  13971.  PMERR_SEG_AND_REFSEG_ARE_SAME                   The segid and refsegid 
  13972.                                                  specified with 
  13973.                                                  GpiSetSegmentPriority were the 
  13974.                                                  same. 
  13975.  
  13976.  PMERR_SEG_CALL_STACK_EMPTY                      A call stack empty condition 
  13977.                                                  was detected when attempting a 
  13978.                                                  pop function during GpiPop or 
  13979.                                                  segment drawing. 
  13980.  
  13981.  PMERR_SEG_CALL_STACK_FULL                       A call stack full condition 
  13982.                                                  was detected when attempting 
  13983.                                                  to call a segment using 
  13984.                                                  GpiCallSegmentMatrix, 
  13985.                                                  attempting to preserve an 
  13986.                                                  attribute, or during segment 
  13987.                                                  drawing. 
  13988.  
  13989.  PMERR_SEG_IS_CURRENT                            An attempt was made to issue 
  13990.                                                  GpiGetData to a segment that 
  13991.                                                  was currently open. 
  13992.  
  13993.  PMERR_SEG_NOT_CHAINED                           An attempt was made to issue 
  13994.                                                  GpiDrawFrom, GpiCorrelateFrom 
  13995.                                                  or GpiQuerySegmentPriority for 
  13996.                                                  a segment that was not 
  13997.                                                  chained. 
  13998.  
  13999.  PMERR_SEG_NOT_FOUND                             The specified segment 
  14000.                                                  identifier did not exist. 
  14001.  
  14002.  PMERR_SEG_OVFLOW                                The input PIF has more than 
  14003.                                                  1000 called segments. This has 
  14004.                                                  overflowed an internal buffer. 
  14005.  
  14006.  PMERR_SEG_STORE_LIMIT_EXCEEDED                  The maximum permitted retained 
  14007.                                                  segment store size limit was 
  14008.                                                  exceeded. 
  14009.  
  14010.  PMERR_SETID_IN_USE                              An attempt was made to specify 
  14011.                                                  a setid that was already in 
  14012.                                                  use as the currently selected 
  14013.                                                  character, marker or pattern 
  14014.                                                  set. 
  14015.  
  14016.  PMERR_SETID_NOT_FOUND                           An attempt was made to delete 
  14017.                                                  a setid that did not exist. 
  14018.  
  14019.  PMERR_SMB_OVFLOW                                The input PIF has more than 
  14020.                                                  100 symbol sets defined. This 
  14021.                                                  has overflowed an internal 
  14022.                                                  buffer. 
  14023.  
  14024.  PMERR_SOMDD_IS_ACTIVE                           The DSOM daemon is already 
  14025.                                                  active. 
  14026.  
  14027.  PMERR_SOMDD_NOT_STARTED                         The DSOM daemon failed to 
  14028.                                                  start. 
  14029.  
  14030.  PMERR_SOURCE_SAME_AS_TARGET                     The direct manipulation source 
  14031.                                                  and target process are the 
  14032.                                                  same. 
  14033.  
  14034.  PMERR_SPL_CANNOT_OPEN_FILE                      Unable to open the file. 
  14035.  
  14036.  PMERR_SPL_DD_NOT_FOUND                          The Presentation Manager 
  14037.                                                  device driver definition could 
  14038.                                                  not be found. 
  14039.  
  14040.  PMERR_SPL_DEVICE_ALREADY_EXISTS                 The device already exists. 
  14041.  
  14042.  PMERR_SPL_DEVICE_LIMIT_REACHED                  The limit on the number of 
  14043.                                                  devices has been reached. 
  14044.  
  14045.  PMERR_SPL_DEVICE_NOT_INSTALLED                  The device has not been 
  14046.                                                  installed. 
  14047.  
  14048.  PMERR_SPL_DRIVER_ERROR                          No Presentation Manager device 
  14049.                                                  driver supplied or found. 
  14050.  
  14051.  PMERR_SPL_DRIVER_NOT_INSTALLED                  The Presentation Manager 
  14052.                                                  device driver has not been 
  14053.                                                  installed. 
  14054.  
  14055.  PMERR_SPL_FILE_NOT_FOUND                        Unable to find the file. 
  14056.  
  14057.  PMERR_SPL_HARD_NETWORK_ERROR                    Hard network error. 
  14058.  
  14059.  PMERR_SPL_INI_FILE_ERROR                        Error accessing the 
  14060.                                                  initialization file. 
  14061.  
  14062.  PMERR_SPL_INV_DATATYPE                          The spool file data type is 
  14063.                                                  invalid. 
  14064.  
  14065.  PMERR_SPL_INV_DRIVER_DATATYPE                   The data type is invalid for 
  14066.                                                  the Presentation Manager 
  14067.                                                  device driver. 
  14068.  
  14069.  PMERR_SPL_INV_FORMS_CODE                        The forms code for the job is 
  14070.                                                  invalid. 
  14071.  
  14072.  PMERR_SPL_INV_HSPL                              The spooler handle is invalid. 
  14073.  
  14074.  PMERR_SPL_INV_JOB_ID                            The job id is invalid. 
  14075.  
  14076.  PMERR_SPL_INV_LENGTH_OR_COUNT                   The length or count is 
  14077.                                                  invalid. 
  14078.  
  14079.  PMERR_SPL_INV_PRIORITY                          The priority for the job is 
  14080.                                                  invalid. 
  14081.  
  14082.  PMERR_SPL_INV_PROCESSOR_DATTYPE                 The data type is invalid for 
  14083.                                                  the spooler queue processor. 
  14084.  
  14085.  PMERR_SPL_INV_QUEUE_NAME                        The spooler queue name is 
  14086.                                                  invalid. 
  14087.  
  14088.  PMERR_SPL_INV_TOKEN                             The token is invalid. 
  14089.  
  14090.  PMERR_SPL_JOB_NOT_PRINTING                      The print job is not printing. 
  14091.  
  14092.  PMERR_SPL_JOB_PRINTING                          The print job is already 
  14093.                                                  printing. 
  14094.  
  14095.  PMERR_SPL_MANY_QUEUES_ASSOC                     More than one queue has been 
  14096.                                                  associated with the printer. 
  14097.  
  14098.  PMERR_SPL_NO_CURRENT_FORMS_CODE                 There is no current forms code 
  14099.                                                  defined to the Presentation 
  14100.                                                  Manager device driver. 
  14101.  
  14102.  PMERR_SPL_NO_DATA                               No data supplied or found. 
  14103.  
  14104.  PMERR_SPL_NO_DEFAULT_QUEUE                      There is no default spooler 
  14105.                                                  queue for the printer. 
  14106.  
  14107.  PMERR_SPL_NO_DISK_SPACE                         There is not enough free disk 
  14108.                                                  space. 
  14109.  
  14110.  PMERR_SPL_NO_FREE_JOB_ID                        There is no free job id 
  14111.                                                  available. 
  14112.  
  14113.  PMERR_SPL_NO_MEMORY                             There is not enough free 
  14114.                                                  memory. 
  14115.  
  14116.  PMERR_SPL_NO_QUEUES_ASSOCIATED                  A queue has not been 
  14117.                                                  associated with the printer. 
  14118.  
  14119.  PMERR_SPL_NO_SUCH_LOG_ADDRESS                   The logical address does not 
  14120.                                                  exist (that is, it is not 
  14121.                                                  defined in the initialization 
  14122.                                                  file). 
  14123.  
  14124.  PMERR_SPL_NOT_AUTHORISED                        Not authorized to perform the 
  14125.                                                  operation. 
  14126.  
  14127.  PMERR_SPL_PRINT_ABORT                           The job has already been 
  14128.                                                  aborted. 
  14129.  
  14130.  PMERR_SPL_PRINTER_NOT_FOUND                     The printer definition could 
  14131.                                                  not be found. 
  14132.  
  14133.  PMERR_SPL_PROCESSOR_ERROR                       No spooler queue processor 
  14134.                                                  supplied or found. 
  14135.  
  14136.  PMERR_SPL_PROCESSOR_NOT_INST                    The spooler queue processor 
  14137.                                                  has not been installed. 
  14138.  
  14139.  PMERR_SPL_QUEUE_ALREADY_EXISTS                  The spooler queue already 
  14140.                                                  exists. 
  14141.  
  14142.  PMERR_SPL_QUEUE_ERROR                           No spooler queue supplied or 
  14143.                                                  found. 
  14144.  
  14145.  PMERR_SPL_QUEUE_NOT_EMPTY                       The spooler queue contains 
  14146.                                                  print jobs. 
  14147.  
  14148.  PMERR_SPL_QUEUE_NOT_FOUND                       The spooler queue definition 
  14149.                                                  could not be found. 
  14150.  
  14151.  PMERR_SPL_SPOOLER_NOT_INSTALLED                 The spooler is not installed. 
  14152.  
  14153.  PMERR_SPL_STATUS_STRING_TRUNC                   The print job status string 
  14154.                                                  has been truncated. 
  14155.  
  14156.  PMERR_SPL_TEMP_NETWORK_ERROR                    Temporary network error. 
  14157.  
  14158.  PMERR_SPL_TOO_MANY_OPEN_FILES                   Too many open files. 
  14159.  
  14160.  PMERR_SPOOLER_QP_NOT_DEFINED                    The spooler queue processor 
  14161.                                                  has not been defined. 
  14162.  
  14163.  PMERR_START_POINT_CLIPPED                       The starting point specified 
  14164.                                                  for flood fill is outside the 
  14165.                                                  current clipping path or 
  14166.                                                  region. 
  14167.  
  14168.  PMERR_STARTDOC_NOT_ISSUED                       A request to write spooled 
  14169.                                                  output without first issuing a 
  14170.                                                  STARTDOC was attempted. 
  14171.  
  14172.  PMERR_STARTED_IN_BACKGROUND                     The application started a new 
  14173.                                                  session in the background. 
  14174.  
  14175.  PMERR_STOP_DRAW_OCCURRED                        Segment drawing or 
  14176.                                                  GpiPlayMetaFile was stopped 
  14177.                                                  prematurely in response to a 
  14178.                                                  GpiSetStopDraw request. 
  14179.  
  14180.  PMERR_TOO_MANY_METAFILES_IN_USE                 The maximum number of 
  14181.                                                  metafiles allowed for a given 
  14182.                                                  process was exceeded. 
  14183.  
  14184.  PMERR_TRUNCATED_ORDER                           An incomplete order was 
  14185.                                                  detected during segment 
  14186.                                                  processing. 
  14187.  
  14188.  PMERR_UNABLE_TO_CLOSE_DEVICE                    Unable to close the print 
  14189.                                                  device (for example, powered 
  14190.                                                  off or offline). 
  14191.  
  14192.  PMERR_UNCHAINED_SEG_ZERO_INV                    An attempt was made to open 
  14193.                                                  segment with segment 
  14194.                                                  identifier zero and the 
  14195.                                                  ATTR_CHAINED segment attribute 
  14196.                                                  not specified. 
  14197.  
  14198.  PMERR_UNSUPPORTED_ATTR                          An unsupported attribute was 
  14199.                                                  specified in the attrmask with 
  14200.                                                  GpiSetAttrs or GpiQueryAttrs. 
  14201.  
  14202.  PMERR_UNSUPPORTED_ATTR_VALUE                    An attribute value was 
  14203.                                                  specified with GpiSetAttrs 
  14204.                                                  that is not supported. 
  14205.  
  14206.  PMERR_WINDOW_LOCK_OVERFLOW                      An overflow occurred for the 
  14207.                                                  use count of a window. 
  14208.  
  14209.  PMERR_WINDOW_LOCK_UNDERFLOW                     An attempt was made to 
  14210.                                                  decrement the use count of a 
  14211.                                                  window below zero. 
  14212.  
  14213.  PMERR_WINDOW_NOT_LOCKED                         The window specified in 
  14214.                                                  WinSendMsg was not locked. 
  14215.  
  14216.  PMERR_WPDSERVER_IS_ACTIVE                       The Workplace Shell DSOM 
  14217.                                                  Server is already active. 
  14218.  
  14219.  PMERR_WPDSERVER_NOT_STARTED                     The Workplace Shell DSOM 
  14220.                                                  Server could not be started. 
  14221.  
  14222.  WPERR_INVALID_FLAGS                             An invalid flag was specified. 
  14223.  
  14224.  WPERR_INVALID_OBJECTID                          An invalid object ID was 
  14225.                                                  specified. 
  14226.  
  14227.  WPERR_INVALID_TARGET_OBJECT                     An invalid target object was 
  14228.                                                  specified. 
  14229.  
  14230.  
  14231. ΓòÉΓòÉΓòÉ 5. Area and Polygon Primitives ΓòÉΓòÉΓòÉ
  14232.  
  14233. An area is one or more closed figures that can be drawn filled, outlined, or 
  14234. filled and outlined. If an area includes more than one figure, those figures 
  14235. can be separate or intersecting. 
  14236.  
  14237. A polygon, too, is one or more closed figures that can be drawn filled, 
  14238. outlined, or filled and outlined. Polygons, unlike areas, are limited to 
  14239. figures with straight edges. Polygons also can be separate or intersecting. 
  14240.  
  14241. The following topics are related to information in this chapter: 
  14242.  
  14243.      Presentation spaces 
  14244.      Line and arc primitives 
  14245.      Color and mix attributes 
  14246.      Fonts 
  14247.      Bit maps 
  14248.      Paths 
  14249.  
  14250.  
  14251. ΓòÉΓòÉΓòÉ 5.1. About Area Primitives ΓòÉΓòÉΓòÉ
  14252.  
  14253. Applications can create, outline, and fill areas and can create custom-fill 
  14254. patterns from bit maps or font symbols. Some graphics functions are not valid 
  14255. within an area definition. For example, you cannot include marker, image, or 
  14256. character-string primitives in an area definition. The following figure is an 
  14257. example of an area. 
  14258.  
  14259. An Area 
  14260.  
  14261. This area comprises two hexagons, one completely enclosed by the other. The 
  14262. area is filled with the current area-fill pattern. 
  14263.  
  14264.  
  14265. ΓòÉΓòÉΓòÉ 5.1.1. Attributes of Area Primitives ΓòÉΓòÉΓòÉ
  14266.  
  14267. The attributes of the area primitive are contained in a data structure called 
  14268. AREABUNDLE. These attributes are: 
  14269.  
  14270.      Pattern symbol 
  14271.      Pattern reference point 
  14272.      Pattern set 
  14273.      Foreground color 
  14274.      Background color 
  14275.      Foreground mix attribute 
  14276.      Background mix mode 
  14277.  
  14278.  When an application creates a presentation space, the area attributes are set 
  14279.  to the default values shown in the following table. 
  14280.  
  14281.  Area Attribute Default Values 
  14282.  
  14283.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14284.   ΓöéAttribute         ΓöéDefault     ΓöéFunction that Redefines       Γöé
  14285.   Γöé                  ΓöéValue       ΓöéAttribute                     Γöé
  14286.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14287.   ΓöéPattern symbol    Γöésolid       ΓöéGpiSetPattern                 Γöé
  14288.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14289.   ΓöéPattern reference Γöé(0,0)       ΓöéGpiSetPatternRefPoint         Γöé
  14290.   Γöépoint             Γöé            Γöé                              Γöé
  14291.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14292.   ΓöéPattern set       ΓöéLCID_DEFAULTΓöéGpiSetPatternSet              Γöé
  14293.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14294.   ΓöéForeground color  ΓöéBlack       ΓöéGpiSetAttrs (ABB_COLOR)       Γöé
  14295.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14296.   ΓöéBackground color  ΓöéClear       ΓöéGpiSetAttrs (ABB_BACK_COLOR)  Γöé
  14297.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14298.   ΓöéForeground mix    ΓöéOverpaint   ΓöéGpiSetAttrs (ABB_MIX_MODE)    Γöé
  14299.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14300.   ΓöéBackground mix    ΓöéLeave alone ΓöéGpiSetAttrs                   Γöé
  14301.   Γöé                  Γöé            Γöé(ABB_BACK_MIX_MODE)           Γöé
  14302.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14303.  
  14304.  Note:  If the default (LCID_DEFAULT) for pattern set is changed, the base 
  14305.  pattern set cannot be reselected with GpiSetPatternSet. 
  14306.  
  14307.  
  14308. ΓòÉΓòÉΓòÉ 5.1.2. Pattern Symbol Attribute ΓòÉΓòÉΓòÉ
  14309.  
  14310. The current pattern symbol, also called the symbol point code, is selected from 
  14311. the current pattern set with GpiSetPattern. The pattern symbol selected for the 
  14312. specified presentation space is used as the subsequent fill pattern until a new 
  14313. symbol is selected. Applications must not call GpiSetPattern while in an area 
  14314. or a path. If the current pattern set specifies a bit map, this attribute is 
  14315. ignored. 
  14316.  
  14317. The following table describes the pattern symbols provided by the PM 
  14318. programming interface in a base pattern set. These symbols are not necessarily 
  14319. available from other pattern sets. 
  14320.  
  14321. The Base Pattern Set 
  14322.  
  14323. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14324. ΓöéSymbol                                    ΓöéIdentifier       ΓöéLong ValueΓöé
  14325. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14326. ΓöéSolid shading decreasing in dots per inch ΓöéPATSYM_DENSE1    Γöé1L - 8L   Γöé
  14327. Γöé                                          Γöéthrough          Γöé          Γöé
  14328. Γöé                                          ΓöéPATSYM_DENSE8    Γöé          Γöé
  14329. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14330. ΓöéVertical lines                            ΓöéPATSYM_VERT      Γöé9L        Γöé
  14331. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14332. ΓöéHorizontal lines                          ΓöéPATSYM_HORIZ     Γöé10L       Γöé
  14333. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14334. ΓöéLines bottom left to top right            ΓöéPATSYM_DIAG1     Γöé11L       Γöé
  14335. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14336. ΓöéLines bottom left to middle right         ΓöéPATSYM_DIAG2     Γöé12L       Γöé
  14337. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14338. ΓöéLines top left to bottom right            ΓöéPATSYM_DIAG3     Γöé13L       Γöé
  14339. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14340. ΓöéLines top left to middle right            ΓöéPATSYM_DIAG4     Γöé14L       Γöé
  14341. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14342. ΓöéNo shading                                ΓöéPATSYM_NOSHADE   Γöé15L       Γöé
  14343. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14344. ΓöéSolid shading                             ΓöéPATSYM_SOLID     Γöé16L       Γöé
  14345. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14346. ΓöéAlternate pels                            ΓöéPATSYM_HALFTONE  Γöé17L       Γöé
  14347. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14348. ΓöéCartesian grid                            ΓöéPATSYM_HATCH     Γöé18L       Γöé
  14349. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14350. ΓöéDiagonal crosshatch                       ΓöéPATSYM_DIAGHATCH Γöé19L       Γöé
  14351. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14352. ΓöéBlank (often called the clear pattern)    ΓöéPATSYM_BLANK     Γöé64L       Γöé
  14353. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14354.  
  14355. The default pattern symbol (PATSYM_DEFAULT) is identical to the PATSYM_SOLID 
  14356. symbol, and has a long value of 0L. The error pattern symbol (PATSYM_ERROR) has 
  14357. a long value of -1L. 
  14358.  
  14359. The following figure shows the patterns from the base pattern symbol set. 
  14360. Applications can determine the current pattern set by calling GpiQueryPattern. 
  14361.  
  14362. The Base Pattern Symbol Set 
  14363.  
  14364.  
  14365. ΓòÉΓòÉΓòÉ 5.1.3. Pattern Reference Point Attribute ΓòÉΓòÉΓòÉ
  14366.  
  14367. The pattern reference point is the point from which the area's fill-pattern 
  14368. spreads horizontally and vertically. The lower-left corner of the pattern is 
  14369. aligned on this point. The pattern reference point has a default value of 
  14370. (0,0), and is expressed in world coordinates. Applications can determine the 
  14371. pattern reference point with GpiQueryPatternRefPoint. Applications can specify 
  14372. the pattern reference point with GpiSetPatternRefPoint; however, this should 
  14373. not be done inside an area. The pattern reference point does not have to be 
  14374. within the boundary of the area. The following figure shows an area that was 
  14375. filled using the default pattern reference point. 
  14376.  
  14377. The Pattern Reference Point 
  14378.  
  14379. The pattern of diagonal lines is aligned with the pattern reference point 
  14380. (0,0).  When the picture is displayed or printed, only the hexagon will be 
  14381. filled. 
  14382.  
  14383. Use of the default reference point causes the diagonal lines of the pattern to 
  14384. intersect the area boundary at specific points. If you change the reference 
  14385. point to (0,4), for example, the pattern shifts upward, and the points of 
  14386. intersection with the area boundary are different. Although the reference point 
  14387. is outside the area, when an application displays or prints the picture, only 
  14388. the area is filled. 
  14389.  
  14390.  
  14391. ΓòÉΓòÉΓòÉ 5.1.4. Pattern Set Attribute ΓòÉΓòÉΓòÉ
  14392.  
  14393. When you create a presentation space, the current pattern set and other area 
  14394. attributes are set to the default. The current pattern-a black solid, as 
  14395. described earlier- is specified from the supplied pattern set. (The supplied 
  14396. set of pattern symbols contains image or raster patterns only.) An area 
  14397. primitive is filled by repeating this pattern vertically and horizontally 
  14398. within the area boundary. 
  14399.  
  14400.  
  14401. ΓòÉΓòÉΓòÉ 5.1.4.1. Default Pattern Set ΓòÉΓòÉΓòÉ
  14402.  
  14403. The standard pattern set contains patterns of solid shading with decreasing 
  14404. intensity, and patterns of vertical, horizontal, and diagonal lines. If the 
  14405. default pattern set is changed with GpiSetDefAttrs, its patterns are not 
  14406. accessible. The patterns from the default set can be recovered by specifying 
  14407. GpiSetDefAttrs with the value LCID_DEFAULT, (0). 
  14408.  
  14409.  
  14410. ΓòÉΓòÉΓòÉ 5.1.4.2. Customizing Pattern Sets ΓòÉΓòÉΓòÉ
  14411.  
  14412. An application can create custom patterns by using bit maps or characters and 
  14413. symbols from an image font. When designing custom patterns, consider that the 
  14414. operating system uses only the first eight bits in the first eight rows, 
  14415. starting with the lower-left corner of the bit map. The cell size of an image 
  14416. font used as a fill pattern might be too large to include the complete 
  14417. character or symbol. 
  14418.  
  14419. An application can change the appearance of a fill pattern by changing its 
  14420. alignment in an area primitive with GpiSetPatternRefPoint. When the default 
  14421. reference point is set, the operating system aligns the lower-left corner of 
  14422. the fill pattern with the point (0,0) in the application's world space and 
  14423. begins filling the area. If an application adjusts the pattern reference point 
  14424. to (3,2), The operating system aligns the lower-left corner of the fill pattern 
  14425. with the point (3,2) in the application's world space and begins filling the 
  14426. area. By moving the reference point from (0,0) to (3,2), the fill pattern 
  14427. appears shifted up two pels and to the right three pels. 
  14428.  
  14429.  
  14430. ΓòÉΓòÉΓòÉ 5.1.4.2.1. Custom Fill Patterns from a Bit Map ΓòÉΓòÉΓòÉ
  14431.  
  14432. To create a custom pattern from a hard-coded bit map, an application must use 
  14433. the following steps: 
  14434.  
  14435.    1. Create or load a bit map to obtain a bit-map handle; for example, use 
  14436.       GpiLoadBitmap. 
  14437.  
  14438.    2. Call GpiSetBitmapId (ID) to tag the bit map with a local identifier 
  14439.       (lcid) from 1 to 254. 
  14440.  
  14441.    3. Call GpiSetPatternSet (ID) or GpiSetAttrs (ABB_SET) to set the current 
  14442.       fill pattern. 
  14443.  
  14444.  The application can now draw the area. 
  14445.  
  14446.  
  14447. ΓòÉΓòÉΓòÉ 5.1.4.2.2. Custom Fill Patterns from a Font Symbol ΓòÉΓòÉΓòÉ
  14448.  
  14449. To create a custom pattern from a character or a symbol in a font: 
  14450.  
  14451.    1. Create a logical image font and assign it an ID; for example use 
  14452.       GpiCreateLogFont. 
  14453.  
  14454.    2. Call GpiSetPatternSet (ID) or GpiSetAttrs (ABB_SET), passing it the local 
  14455.       identifier for the font. 
  14456.  
  14457.    3. Call GpiSetPattern, passing the value of the code point for a character 
  14458.       or symbol in the font. 
  14459.  
  14460.  The application can now draw the area. 
  14461.  
  14462.  
  14463. ΓòÉΓòÉΓòÉ 5.1.5. Area Colors and Mix Attributes ΓòÉΓòÉΓòÉ
  14464.  
  14465. The color attribute defines the color used to draw a primitive or an object. 
  14466. The mix attribute determines how the color of a primitive or an object is 
  14467. combined with the color of the drawing surface, or any other objects on the 
  14468. surface. Both attributes also are described in Color and Mix Attributes. 
  14469.  
  14470. The area color defines the color used to fill the output from any of the IBM 
  14471. OS/2 area functions, when necessary. The area primitive is the only primitive 
  14472. in which the color can be changed during the drawing of the area. Therefore, 
  14473. this attribute, more than the other area attributes, depends on the current 
  14474. value as described in Attribute Currentness. 
  14475.  
  14476. When a presentation space is created, the area color initial default is black. 
  14477. The pattern symbol initial default, explained previously, is solid. Areas are 
  14478. one of the primitives that have a foreground and background color, as shown in 
  14479. the following figure. The appearance of the area also depends on the pattern 
  14480. symbol. 
  14481.  
  14482. Area Primitives 
  14483.  
  14484. Area primitives have both a color and background color attribute. The 
  14485. background color does not appear if the pattern symbol is solid, and the 
  14486. background color is undefined if the pattern symbol is a customized, 
  14487. multi-colored bit map. 
  14488.  
  14489. When a presentation space is created, the area mix attribute initial default is 
  14490. FM_OVERPAINT. The overpaint mix attribute specifies that the area color is not 
  14491. to be modified by the color of the drawing surface. If the area mix attribute 
  14492. is changed, the area color is mixed with colors that are already on the drawing 
  14493. surface. 
  14494.  
  14495. When the pattern symbol is solid, the color that fills the area, if necessary, 
  14496. is the current area foreground color. If the pattern symbol is changed to be a 
  14497. pattern of vertical lines, for example, the color of those lines is the current 
  14498. area foreground color. Inside of the area bracket, there can be other colors if 
  14499. these colors are the current color for primitives such as lines or arcs, that 
  14500. are drawn within the area bracket. These colors are not specifically defined or 
  14501. influenced by the area foreground color. 
  14502.  
  14503. The area background color initial default is CLR_BACKGROUND. Usually this is 
  14504. defined by the application to the same color as the drawing surface. If the 
  14505. pattern symbol is solid, the area background color does not appear. If the 
  14506. pattern symbol is changed to be a pattern of vertical lines, for example, the 
  14507. color in between those lines is the current area background color. 
  14508.  
  14509. The area background mix attribute initial default is BM_LEAVEALONE. The 
  14510. leave-alone background mix attribute specifies that the area background color 
  14511. is not drawn. This means that for a nonsolid pattern symbol, the 
  14512. drawing-surface color or the color of an object, not created by the area 
  14513. bracket, but on the drawing surface, shows through the nonsolid pattern. The 
  14514. area background color, for nonsolid pattern symbols, appears only if the 
  14515. background mix attribute is changed to overpaint, BM_OVERPAINT. 
  14516.  
  14517. If you have customized the pattern symbol with a bit map, the color definitions 
  14518. of the area primitive change. The foreground color corresponds to the color of 
  14519. the pels that are specified ON in the fill-pattern bit map. The background 
  14520. color corresponds to the color of the pels that are specified OFF in the 
  14521. fill-pattern bit map. The foreground and background mix attribute do not 
  14522. change. 
  14523.  
  14524. Note:  Background color and mix attribute only apply to monochrome (2-color) 
  14525. fill patterns. The bit set to 0 is defined as the background and the bit set to 
  14526. 1 is defined as the foreground. 
  14527.  
  14528. A multi-colored bit map is unaffected by the background color and mix 
  14529. attributes. 
  14530.  
  14531. To specify a new color or mix attribute call GpiSetAttrs. This function accepts 
  14532. as input the type of primitive, for example PRIM_AREA, a list of attributes 
  14533. that are to be changed, a list of attributes that are to be set to their 
  14534. default values, and the values for the attributes that are to be changed. 
  14535. GpiSetAttrs is useful to specify colors and mix attributes just for a specific 
  14536. data structure -for example the AREABUNDLE structure. GpiSetAttrs also provides 
  14537. some protection against invalid colors. 
  14538.  
  14539. To determine the current area color and mix attribute, call GpiQueryAttrs. This 
  14540. function accepts as input the primitive type and the attributes in question. It 
  14541. returns as output an array of values for the specifically queried attributes. 
  14542.  
  14543. To reset the default area color and mix attribute, just as with any other 
  14544. attribute specified in the AREABUNDLE. data structure, call GpiSetDefAttrs. 
  14545. This function accepts as input the type of primitive, for example PRIM_AREA, 
  14546. the attributes to be changed, and the values that will become the new default 
  14547. values. The changing of default values is important when working with segments. 
  14548. Changing the default values during a series of drawing functions is not 
  14549. recommended. 
  14550.  
  14551. The area color and mix attribute also can be specified with: 
  14552.  
  14553.      GpiSetColor 
  14554.      GpiSetMix 
  14555.      GpiSetBackColor 
  14556.      GpiSetBackMix 
  14557.  
  14558.  However, these functions have the disadvantage of specifying the foreground 
  14559.  and background color or mix attribute for all primitive BUNDLE data structures 
  14560.  that have the respective component. 
  14561.  
  14562.  There are four queries that determine the color and mix attribute as specified 
  14563.  by GpiSet... functions: 
  14564.  
  14565.      GpiQueryColor 
  14566.      GpiQueryMix 
  14567.      GpiQueryBackColor 
  14568.      GpiQueryBackMix 
  14569.  
  14570.  If the area color, area background color, mix attribute, or background mix 
  14571.  attribute were specified individually, the aforementioned queries can return a 
  14572.  value inconsistent with the current area attribute. 
  14573.  
  14574.  
  14575. ΓòÉΓòÉΓòÉ 5.1.6. Area Brackets ΓòÉΓòÉΓòÉ
  14576.  
  14577. Areas also are referred to as area brackets, because the functions that create 
  14578. and define the area always are "bracketed" by the two functions, GpiBeginArea 
  14579. and GpiEndArea. Only one area is defined between these two functions. However, 
  14580. within the area, there can be any number of adjacent, intersecting, or 
  14581. completely separate area primitives. 
  14582.  
  14583. GpiBeginArea signals the start of a group of primitives that define the 
  14584. boundary of the area. The current position is not changed by GpiBeginArea, 
  14585. although it is updated by any drawing instructions that follow. 
  14586.  
  14587. If you call GpiSetCurrentPosition or GpiMove within an area definition, the 
  14588. current figure is closed automatically, and a new figure is started at the 
  14589. current position by the next line or curve. A figure in the area, whose start 
  14590. and end points are not the same, is closed by drawing a straight line from the 
  14591. current position to the start position of the figure. 
  14592.  
  14593. GpiEndArea signals the end of an area definition and tells the operating system 
  14594. to draw the area. If an application does not close a figure before calling 
  14595. GpiEndArea, the figure is closed automatically by drawing a straight line from 
  14596. the end point of the last line or curve to the start point of the current 
  14597. figure. The current position is always updated to the end point of the last 
  14598. line drawn. 
  14599.  
  14600. The functional sequence to draw the area in the following figure could be: 
  14601.  
  14602.  
  14603. #include <os2.h>
  14604. void fncAREA01(void){
  14605.  
  14606. #if 0
  14607.  
  14608. GpiBeginArea                /* Starts the area bracket          */
  14609.  
  14610. GpiSetCurrentPosition       /* Set the start point of the       */
  14611.                             /* outer hexagon.                   */
  14612. GpiPolyLine                 /* Draw the outer hexagon.          */
  14613. GpiSetCurrentPosition       /* Set the start point of the inner */
  14614.                             /*  hexagon.                        */
  14615. GpiPolyLine                 /* Draw the inner hexagon.          */
  14616.  
  14617. GpiEndArea                  /* End the area definition.         */
  14618.  
  14619. #endif
  14620.  
  14621. }
  14622.  
  14623. An area bracket contains the functions that define an area. Only one area can 
  14624. be defined between "bracket" functions. 
  14625.  
  14626. Following the beginning of an area bracket, an application can define the shape 
  14627. and location of the area in world space by using the following line and arc 
  14628. functions: 
  14629.  
  14630.      GpiBox 
  14631.      GpiFullArc 
  14632.      GpiLine 
  14633.      GpiPartialArc 
  14634.      GpiPointArc 
  14635.      GpiPolyFillet 
  14636.      GpiPolyFilletSharp 
  14637.      GpiPolyLine 
  14638.      GpiPolySpline 
  14639.  
  14640.  If an application calls either GpiBox or GpiFullArc inside an area, it must 
  14641.  use the DRO_OUTLINE option. 
  14642.  
  14643.  In addition to the drawing functions, an application also can use the 
  14644.  following specification functions inside an area bracket: 
  14645.  
  14646.      GpiBeginElement 
  14647.      GpiCallSegmentMatrix 
  14648.      GpiComment 
  14649.      GpiElement 
  14650.      GpiEndArea 
  14651.      GpiEndElement 
  14652.      GpiGetData 
  14653.      GpiLabel 
  14654.      GpiMove 
  14655.      GpiOffsetElementPointer 
  14656.      GpiPop 
  14657.      GpiPutData 
  14658.      GpiSetArcParams 
  14659.      GpiSetAttrMode 
  14660.      GpiSetAttrs 
  14661.      GpiSetColor 
  14662.      GpiSetCurrentPosition 
  14663.      GpiSetEditMode 
  14664.      GpiSetElementPointer 
  14665.      GpiSetElementPointerAtLabel 
  14666.      GpiSetLineEnd 
  14667.      GpiSetLineJoin 
  14668.      GpiSetLineType 
  14669.      GpiSetLineWidth 
  14670.      GpiSetMix 
  14671.      GpiSetModelTransformMatrix 
  14672.      GpiSetSegmentTransformMatrix 
  14673.  
  14674.  An application also can use the following query functions inside an area 
  14675.  bracket: 
  14676.  
  14677.      GpiQueryArcParams 
  14678.      GpiQueryAttrMode 
  14679.      GpiQueryAttrs 
  14680.      GpiQueryBackColor 
  14681.      GpiQueryBackMix 
  14682.      GpiQueryBoundaryData 
  14683.      GpiQueryCharAngle 
  14684.      GpiQueryCharBox 
  14685.      GpiQueryCharDirection 
  14686.      GpiQueryCharMode 
  14687.      GpiQueryCharSet 
  14688.      GpiQueryCharShear 
  14689.      GpiQueryCharStringPos 
  14690.      GpiQueryCharStringPosAt 
  14691.      GpiQueryClipBox 
  14692.      GpiQueryClipRegion 
  14693.      GpiQueryColor 
  14694.      GpiQueryColorData 
  14695.      GpiQueryColorIndex 
  14696.      GpiQueryCp 
  14697.      GpiQueryCurrentPosition 
  14698.      GpiQueryDefaultViewMatrix 
  14699.      GpiQueryDefCharBox 
  14700.      GpiQueryDevice 
  14701.      GpiQueryDeviceBitmapFormats 
  14702.      GpiQueryEditMode 
  14703.      GpiQueryFontFileDescriptions 
  14704.      GpiQueryFontMetrics 
  14705.      GpiQueryFonts 
  14706.      GpiQueryGraphicsField 
  14707.      GpiQueryInitialSegmentAttrs 
  14708.      GpiQueryKerningPairs 
  14709.      GpiQueryLineEnd 
  14710.      GpiQueryLineJoin 
  14711.      GpiQueryLineType 
  14712.      GpiQueryLineWidth 
  14713.      GpiQueryLineWidthGeom 
  14714.      GpiQueryLogColorTable 
  14715.      GpiQueryMarker 
  14716.      GpiQueryMarkerBox 
  14717.      GpiQueryMarkerSet 
  14718.      GpiQueryMix 
  14719.      GpiQueryModelTransformMatrix 
  14720.      GpiQueryNearestColor 
  14721.      GpiQueryNumberSetIds 
  14722.      GpiQueryPageViewport 
  14723.      GpiQueryPattern 
  14724.      GpiQueryPatternRefPoint 
  14725.      GpiQueryPatternSet 
  14726.      GpiQueryPel 
  14727.      GpiQueryPickAperturePosition 
  14728.      GpiQueryPickApertureSize 
  14729.      GpiQueryRealColors 
  14730.      GpiQueryRegionBox 
  14731.      GpiQueryRegionRects 
  14732.      GpiQueryRGBColor 
  14733.      GpiQuerySegmentAttrs 
  14734.      GpiQuerySegmentNames 
  14735.      GpiQuerySegmentPriority 
  14736.      GpiQuerySegmentTransformMatrix 
  14737.      GpiQuerySetIds 
  14738.      GpiQueryStopDraw 
  14739.      GpiQueryTag 
  14740.      GpiQueryViewingLimits 
  14741.      GpiQueryViewingTransformMatrix 
  14742.      GpiQueryWidthTable 
  14743.  
  14744.  
  14745. ΓòÉΓòÉΓòÉ 5.1.7. Area Bracket Attributes ΓòÉΓòÉΓòÉ
  14746.  
  14747. In addition to the attributes controlled by the AREABUNDLE data structure, 
  14748. there are two attributes that can be specified for each individual area 
  14749. bracket: 
  14750.  
  14751.      Area boundary 
  14752.      Area construction 
  14753.  
  14754.  These bracket attributes affect how the area primitives inside the bracket are 
  14755.  drawn. 
  14756.  
  14757.  The concept of attribute currentness is especially important to areas and 
  14758.  paths that contain multiple figures. 
  14759.  
  14760.  
  14761. ΓòÉΓòÉΓòÉ 5.1.8. Area Boundaries ΓòÉΓòÉΓòÉ
  14762.  
  14763. An application specifies the area boundary when it calls GpiBeginArea. There 
  14764. are two options: 
  14765.  
  14766.      BA_BOUNDARY (the default) 
  14767.      BA_NOBOUNDARY. 
  14768.  
  14769.  The BA_BOUNDARY value tells the programming interface to draw all outlines of 
  14770.  the area primitives within the area bracket, using a line that conforms to the 
  14771.  current LINEBUNDLE attributes. If the line attributes have not been changed, 
  14772.  the default outline color is black on most displays and printers, and the 
  14773.  default line style is solid. An application can change the line color and line 
  14774.  styles within the area bracket. The interior of the area primitive is filled 
  14775.  with the current pattern. 
  14776.  
  14777.  To prevent the interface from outlining an area, an application can use the 
  14778.  BA_NOBOUNDARY flag when calling GpiBeginArea. Only the interior fill pattern 
  14779.  is visible. This value most often is used when an area contains many 
  14780.  overlapping figures, and the interior lines are not desired. 
  14781.  
  14782.  You could think of this option in terms similar to the outline and fill 
  14783.  options discussed with boxes and full arcs. The BA_BOUNDARY value corresponds 
  14784.  to DRO_OUTLINEFILL, and BA_NOBOUNDARY, to DRO_FILL. There is no distinct 
  14785.  boundary value that corresponds to DRO_OUTLINE, the simple outline. To 
  14786.  simulate this effect, OR the BA_NOBOUNDARY value with the appropriate area 
  14787.  construction value when calling GpiBeginArea. 
  14788.  
  14789.  
  14790. ΓòÉΓòÉΓòÉ 5.1.9. Area Construction ΓòÉΓòÉΓòÉ
  14791.  
  14792. An application specifies the area construction when it calls GpiBeginArea. 
  14793. There are two options: 
  14794.  
  14795.      BA_ALTERNATE  (the default) 
  14796.      BA_WINDING. 
  14797.  
  14798.  Construction modes also are called area-fill modes. They provide different 
  14799.  ways of determining whether a given point is included in the filled area. 
  14800.  Normally, the construction mode you use is a matter of personal preference. 
  14801.  
  14802.  
  14803. ΓòÉΓòÉΓòÉ 5.1.9.1. Alternate Mode ΓòÉΓòÉΓòÉ
  14804.  
  14805. In alternate mode, the following occurs: 
  14806.  
  14807.      A point is included in the filled area if you have to cross an odd number 
  14808.       of lines in the area when drawing a line from that point to infinity. 
  14809.  
  14810.      A point is not included in the filled area if you have to cross an even 
  14811.       number of lines in the area when drawing a line from that point to 
  14812.       infinity. 
  14813.  In the example in the following figure, the inner hexagon is not shaded, 
  14814.  because to draw a line from any point in the hexagon to infinity, you must 
  14815.  cross two boundary lines. The remainder of the area is shaded, because to move 
  14816.  outside the area, you need to cross only one boundary line. 
  14817.  
  14818.  Calculating Filled Areas Constructed in Alternate Mode 
  14819.  
  14820.  
  14821. ΓòÉΓòÉΓòÉ 5.1.9.2. Winding Mode ΓòÉΓòÉΓòÉ
  14822.  
  14823. In winding mode, the direction in which the boundary lines in the area are 
  14824. drawn determines whether a given point is included in the filled area. The 
  14825. direction of a line depends on both the graphics functions used to draw it and 
  14826. the world coordinates that define it. For example, if the current position of a 
  14827. presentation space is (c,c), and GpiBox is called with the diagonally-opposite 
  14828. corner of the box specified as (d,d), GpiBox always draws the box in the 
  14829. following order: 
  14830.  
  14831.    1. (xc.,yc.) to 
  14832.    2. (xd.,yc.) to 
  14833.    3. (xd.,yd.) to 
  14834.    4. (xc.,yd.) and returning to 
  14835.    5. (xc.,yc.). 
  14836.  
  14837.  As illustrated in the following figure, in some cases the box is drawn in a 
  14838.  counterclockwise direction. When either xd. is less than xc., or yd. is less 
  14839.  than yc., but not both, a box is drawn clockwise. 
  14840.  
  14841.  The Box 
  14842.  
  14843.  The current position is (3,2) and the specified corner is at (8,6).  The box 
  14844.  is drawn from (3,2) to (8,2) to (8,6) to (3,8) to (3,2). 
  14845.  
  14846.  For the polyline primitive, the direction in which a line is drawn depends on 
  14847.  the relative values of the end points of each line, so you can choose whether 
  14848.  to draw in a clockwise or counterclockwise direction. 
  14849.  
  14850.  To determine if a given point is included in the filled area, count the number 
  14851.  of lines to be crossed to move from that point to infinity. For each boundary 
  14852.  line drawn in one direction, add one to the tally. For each line drawn in the 
  14853.  opposite direction, subtract one from the tally. A point is within the area if 
  14854.  the result is nonzero. 
  14855.  
  14856.  If two figures -for example, the hexagons in the following figure- are drawn 
  14857.  in different directions, the tally for the inner hexagon is 0 and the area 
  14858.  will look exactly as it does in alternate mode. 
  14859.  
  14860.  Area Constructed in Different Directions in Winding Mode 
  14861.  
  14862.  If the two hexagons are drawn in the same direction, the result is 2, and the 
  14863.  inner hexagon is shaded as shown in the following figure. 
  14864.  
  14865.  Area Constructed in the Same Direction in Winding Mode 
  14866.  
  14867.  The boundary lines of the area in the previous figure have been drawn and are 
  14868.  visible through the area-fill pattern. The boundary lines of an area primitive 
  14869.  do not have to be drawn; but if they are, they are drawn according to the 
  14870.  current line attributes. 
  14871.  
  14872.  To vary the appearance of different parts of the boundary line, you can change 
  14873.  the current line attributes during area definition. 
  14874.  
  14875.  The boundary lines of an area are considered a part of the area's interior. 
  14876.  Therefore, when you draw an area without boundary lines (BA_NOBOUNDARY), the 
  14877.  area-fill pattern extends to include the boundaries of the area, and the area 
  14878.  is the same size it would be if the boundary lines had been drawn. 
  14879.  
  14880.  
  14881. ΓòÉΓòÉΓòÉ 5.1.10. Attribute Currentness ΓòÉΓòÉΓòÉ
  14882.  
  14883. Graphics functions that change attributes are valid within the area bracket. 
  14884. There are misconceptions, however, about which attributes are used when the 
  14885. figures are displayed in a window or drawn to the printer. 
  14886.  
  14887. Review the following functional sequence: 
  14888.  
  14889.  Function       Effect 
  14890.  
  14891.  GpiSetColor    Sets color to red. 
  14892.  
  14893.  GpiBeginArea   Opens area bracket 
  14894.  
  14895.  GpiLine        Draws a straight line 
  14896.  
  14897.  GpiSetColor    Sets color to green. 
  14898.  
  14899.  GpiPolyLine    Draws two additional lines to form a triangle. 
  14900.  
  14901.  GpiEndArea     Ends the area bracket and displays a picture. 
  14902.  
  14903.  If you are displaying on a color monitor, the image appears as follows: 
  14904.  
  14905.  The triangle has one red line, drawn with GpiLine and two green lines, drawn 
  14906.  with GpiPolyLine. The interior of the triangle, if drawn, is red. Red is the 
  14907.  color that was current when the area was defined and, therefore, is the 
  14908.  current color for the area interior. In terms of the interior area, green is 
  14909.  only the color that was current when the function that initiates drawing was 
  14910.  called. 
  14911.  
  14912.  If the application immediately opened a new area bracket, the interior of that 
  14913.  bracket, if drawn, would be green. The color attribute for the second 
  14914.  AREABUNDLE, is not "inherited" from the last AREABUNDLE drawn. 
  14915.  
  14916.  
  14917. ΓòÉΓòÉΓòÉ 5.2. About Polygon Primitives ΓòÉΓòÉΓòÉ
  14918.  
  14919. Area brackets have the flexibility to draw any combination of curved or 
  14920. straight lines and combine the results into a closed figure. An advantage that 
  14921. polygons sometimes have over area brackets, however, is that they require fewer 
  14922. time-consuming calculations to provide that kind of flexibility. 
  14923.  
  14924. The operating system provides a function that enables you to draw multiple 
  14925. straight-line closed areas outside of an area bracket. Like bracket-generated 
  14926. areas, they can be adjacent, intersecting, or completely separate. 
  14927.  
  14928. The function is GpiPolygons and the set of objects it draws are called polygon 
  14929. primitives. A polygon primitive is any set of polygons with specified vertices 
  14930. that can be filled or filled and outlined. This function accepts as input the 
  14931. desired number of polygons, the POLYGON data structure for each polygon, and a 
  14932. boundary and construction option similar to those of the GpiBeginArea function. 
  14933.  
  14934. The purpose of GpiPolygons is to enable you to specify an area in such a way as 
  14935. to pass all of the area boundaries at once. This improves performance 
  14936. significantly because the operating system cannot process the accumulated 
  14937. primitives inside an area bracket until it reaches a GpiEndArea. GpiPolygons is 
  14938. not valid inside an area bracket because the figures it defines are areas 
  14939. already. 
  14940.  
  14941. Although GpiPolygons is limited to straight line figures, it retains a great 
  14942. deal of flexibility. The polygon data structure (POLYGON) contains the number 
  14943. of vertices, and the vertices themselves are in world coordinates. The 
  14944. collection of POLYGON structures accepted in a single GpiPolygons is not 
  14945. limited to one type of polygon. 
  14946.  
  14947. The drawing of the first polygon begins at the current position. For all 
  14948. subsequent polygons, all vertices must be explicitly defined. If the individual 
  14949. polygons are not completely defined, they are closed with a straight line drawn 
  14950. from the last defined vertex to the first. 
  14951.  
  14952. After the application has defined the polygons, they may be transformed and 
  14953. manipulated just as other primitives are. 
  14954.  
  14955.  
  14956. ΓòÉΓòÉΓòÉ 5.2.1. Polygon Boundaries ΓòÉΓòÉΓòÉ
  14957.  
  14958. Applications have two options when specifying the polygon boundary: 
  14959.  
  14960.      POLYGON_BOUNDARY (the default) 
  14961.      POLYGON_NOBOUNDARY. 
  14962.  
  14963.  The POLYGON_BOUNDARY value tells the PM programming interface to draw all 
  14964.  outlines of the polygon primitives using a line that conforms to the current 
  14965.  LINEBUNDLE attributes. If the line attributes have not been changed, the 
  14966.  default outline color is black on most display devices and printers, and the 
  14967.  default line style is solid. As the attributes cannot be changed within the 
  14968.  context of GpiPolygons, all polygons are drawn with the same line. The 
  14969.  interior of the polygons are filled with the pattern that conforms to the 
  14970.  current AREABUNDLE attributes. 
  14971.  
  14972.  To prevent PM from outlining an area, an application can use the 
  14973.  POLYGON_NOBOUNDARY flag when calling GpiPolygons. Only the interior fill 
  14974.  pattern is visible. This value is used most often when there are many 
  14975.  overlapping polygons, and the interior lines are not desired. 
  14976.  
  14977.  You might think of this option in terms similar to the outline and fill 
  14978.  options discussed with boxes and full arcs. The POLYGON_BOUNDARY value 
  14979.  corresponds to the DRO_OUTLINEFILL value, and POLYGON_NOBOUNDARY, to the 
  14980.  DRO_FILL. There is no distinct boundary value that corresponds to DRO_OUTLINE, 
  14981.  the simple outline. 
  14982.  
  14983.  To simulate this effect, OR the POLYGON_NOBOUNDARY value with the appropriate 
  14984.  polygon construction value, described below, when calling GpiPolygons. 
  14985.  
  14986.  
  14987. ΓòÉΓòÉΓòÉ 5.2.2. Polygon Construction ΓòÉΓòÉΓòÉ
  14988.  
  14989. An application specifies the area construction when it calls GpiBeginArea. 
  14990. There are two options: 
  14991.  
  14992.      POLYGON_ALTERNATE (the default) 
  14993.      POLYGON_WINDING. 
  14994.  
  14995.  As with area construction, in alternate mode: 
  14996.  
  14997.      A point is included in the filled polygon if you have to cross an odd 
  14998.       number of lines in the set of polygons when drawing a line from that 
  14999.       point to infinity. 
  15000.  
  15001.      A point is not included in the filled polygon if you have to cross an 
  15002.       even number of lines in the set of polygons when drawing a line from that 
  15003.       point to infinity. 
  15004.  
  15005.  Also as with area construction, in winding mode, the direction in which the 
  15006.  boundary lines of the polygons are drawn determines whether a given point is 
  15007.  included in the filled polygon. Since the individual polygons drawn with 
  15008.  GpiPolygons are generated by independent structures, the direction in which a 
  15009.  polygon is drawn depends only on the vertices of that polygon. 
  15010.  
  15011.  To determine if a given point is included in the filled polygon, count the 
  15012.  number of lines to be crossed to move from that point to infinity. For each 
  15013.  boundary line drawn in one direction add one to the tally. For each line drawn 
  15014.  in the opposite direction, subtract one from the tally. A point is within the 
  15015.  polygon if the result is nonzero. 
  15016.  
  15017.  
  15018. ΓòÉΓòÉΓòÉ 5.2.3. Polygon Overlap ΓòÉΓòÉΓòÉ
  15019.  
  15020. An application specifies which pels are drawn when it calls GpiPolygons. There 
  15021. are two options: 
  15022.  
  15023.      POLYGON_INCL (the default) 
  15024.      POLYGON_EXCL. 
  15025.  
  15026.  When the overlap value is POLYGON_INCL, the bottom right is included in the 
  15027.  polygon. The value POLYGON_EXCL, the exclusive value, indicates that the 
  15028.  bottom right is excluded from the polygon. This value acts in conjunction with 
  15029.  the mix attribute in determining the appearance of a polygon, which is 
  15030.  especially important for a group of overlapping or adjacent polygons. 
  15031.  
  15032.  For example, GpiPolygons specifies a number of polygons. Two of the polygons 
  15033.  share the vertex pair (6,7) and (9,7). When the polygons are drawn, if the 
  15034.  overlap value was POLYGON_INCL, there are two distinct lines to be drawn from 
  15035.  (6,7) to (9,7). A mix attribute other than FM_OVERPAINT could cause 
  15036.  undesirable results as the line and drawing-surface colors mix. 
  15037.  
  15038.  As with the polygon boundary and construction values, the overlap value can be 
  15039.  ORed when calling GpiPolygons to create a specific effect. 
  15040.  
  15041.  
  15042. ΓòÉΓòÉΓòÉ 5.3. Using Area and Polygon Primitives ΓòÉΓòÉΓòÉ
  15043.  
  15044. You can use area functions to: 
  15045.  
  15046.      Draw one or more closed figures 
  15047.      Create a custom fill pattern from a bit map 
  15048.      Create a custom fill pattern from a font character 
  15049.  
  15050.  
  15051. ΓòÉΓòÉΓòÉ 5.3.1. Drawing a Single, Closed Figure ΓòÉΓòÉΓòÉ
  15052.  
  15053. The following figure shows an example of how to use area functions to draw a 
  15054. single closed figure that is filled with a vertical pattern using the alternate 
  15055. mode. The closed figure in this example is a 5-pointed star. 
  15056.  
  15057. #define INCL_GPI
  15058. #include <os2.h>
  15059. void fncAREA02(void){
  15060.    POINTL aptl[5];               /* Structure for current position */
  15061.    HPS hps;
  15062.  
  15063.     /* Initialize the array of points for the 5-pointed star.       */
  15064.     aptl[0].x = 400; aptl[0].y = 195;
  15065.     aptl[1].x = 40;  aptl[1].y = 320;
  15066.     aptl[2].x = 260; aptl[2].y = 10;
  15067.     aptl[3].x = 260; aptl[3].y = 390;
  15068.     aptl[4].x = 37;  aptl[4].y = 82;
  15069.  
  15070.     GpiSetPattern(hps, PATSYM_VERT);/* Set pattern outside bracket */
  15071.  
  15072.     /* Draw the star. */
  15073.     GpiBeginArea(hps, BA_ALTERNATE);
  15074.     GpiMove(hps, &aptl[4]);         /* First and last point of star */
  15075.     GpiPolyLine(hps, 5L, aptl);
  15076.     GpiEndArea(hps);
  15077. } /* fncAREA02 */
  15078.  
  15079.  
  15080. ΓòÉΓòÉΓòÉ 5.3.2. Drawing Multiple, Intersecting, Closed Figures ΓòÉΓòÉΓòÉ
  15081.  
  15082. The following figure is an example of how to use area functions to draw two 
  15083. intersecting boxes, filled, using the winding mode. 
  15084.  
  15085. #define INCL_GPI
  15086. #include <os2.h>
  15087. void fncAREA03(void){
  15088.     POINTL ptl;            /* Structure for current position */
  15089.     HPS    hps;
  15090.  
  15091.     GpiBeginArea(hps, BA_WINDING);
  15092.     ptl.x = 100;
  15093.     ptl.y = 50;
  15094.     GpiMove(hps, &ptl);
  15095.     ptl.x = 300;
  15096.     ptl.y = 250;
  15097.     GpiBox(hps, DRO_OUTLINE, &ptl, 0, 0);
  15098.     ptl.x = 180;
  15099.     ptl.y = 120;
  15100.     GpiMove(hps, &ptl);
  15101.     ptl.x = 380;
  15102.     ptl.y = 320;
  15103.     GpiBox(hps, DRO_OUTLINE, &ptl, 0, 0);
  15104.     GpiEndArea(hps);
  15105. } /* fncAREA03 */
  15106.  
  15107.  
  15108. ΓòÉΓòÉΓòÉ 5.3.3. Creating a Custom Fill Pattern from a Bit Map ΓòÉΓòÉΓòÉ
  15109.  
  15110. The following figure is an example of how to create a custom fill pattern by 
  15111. using a hard-coded bit map. In this example, the bit map creates a pattern of 
  15112. arrows. 
  15113.  
  15114. #define INCL_DOS
  15115. #define INCL_GPI
  15116. #define INCL_WIN
  15117. #include <os2.h>
  15118.    LONG lcidCustom;                  /* Bit map tag                           */
  15119.    HPS  hps;
  15120.  
  15121.    VOID CreatePattern(VOID);
  15122.  
  15123.    VOID MyFunction(VOID){
  15124.        CreatePattern();
  15125.        GpiSetPatternSet(hps, lcidCustom);
  15126.         .
  15127.         .
  15128.         .
  15129.    } /* func */
  15130.  
  15131.    VOID CreatePattern(VOID){
  15132.         HBITMAP hbm;               /* Bit map handle                          */
  15133.         BITMAPINFOHEADER2 bmp2;    /* Structure for bit map information       */
  15134.         PBITMAPINFO2 pbmi2;        /* Pointer to structure for bit map data   */
  15135.         PRGB2 prgb2;               /* Structure for color data                */
  15136.         ULONG cbBitmapInfo, cColors;
  15137.  
  15138.         BYTE abPattern[] = { 0xFF, 0xFF, 0xE7, 0xFF,
  15139.                              0xE7, 0xFF, 0xC3, 0xFF,
  15140.                              0xC3, 0xFF, 0x81, 0xFF,
  15141.                              0x81, 0xFF, 0xE7, 0xFF,
  15142.                              0xE7, 0xFF, 0xE7, 0xFF,
  15143.                              0xE7, 0xFF, 0xE7, 0xFF,
  15144.                              0xE7, 0xFF, 0xE7, 0xFF,
  15145.                              0xE7, 0xFF, 0xFF, 0xFF
  15146.    };
  15147.  
  15148.  
  15149.         lcidCustom = 1;            /* Bit map tag                             */
  15150.  
  15151.         bmp2.cbFix = (ULONG) sizeof(BITMAPINFOHEADER2);
  15152.         bmp2.cx = 8;               /* Bit map is 8 pels wide                  */
  15153.         bmp2.cy = 8;               /* Bit map is 8 pels high                  */
  15154.         bmp2.cPlanes = 1;          /* One bit plane                           */
  15155.         bmp2.cBitCount = 1;        /* One bit per pel                         */
  15156.  
  15157.         /* Use default values for the remainder of the structure.             */
  15158.  
  15159.         bmp2.ulCompression = 0;
  15160.         bmp2.cbImage = 0;
  15161.         bmp2.cxResolution = 0;
  15162.         bmp2.cyResolution = 0;
  15163.         bmp2.cclrUsed = 0;
  15164.         bmp2.cclrImportant = 0;
  15165.         bmp2.usUnits = 0;
  15166.         bmp2.usReserved = 0;
  15167.         bmp2.usRecording = 0;
  15168.         bmp2.usRendering = 0;
  15169.         bmp2.cSize1 = 0;
  15170.         bmp2.cSize2 = 0;
  15171.         bmp2.ulColorEncoding = 0;
  15172.         bmp2.ulIdentifier = 0;
  15173.  
  15174.         cColors = 1 << (bmp2.cBitCount * bmp2.cPlanes);
  15175.  
  15176.         cbBitmapInfo = sizeof(BITMAPINFO2) + (sizeof(RGB2) * cColors);
  15177.  
  15178.         DosAllocMem((PVOID)&pbmi2, cbBitmapInfo,
  15179.                     PAG_COMMIT | PAG_READ | PAG_WRITE);
  15180.  
  15181.         pbmi2->cbFix = bmp2.cbFix;
  15182.         pbmi2->cx = bmp2.cx;
  15183.         pbmi2->cy = bmp2.cy;
  15184.         pbmi2->cPlanes = bmp2.cPlanes;
  15185.         pbmi2->cBitCount = bmp2.cBitCount;
  15186.  
  15187.         /* Use default values for the remainder of the structure.             */
  15188.  
  15189.         pbmi2->ulCompression = 0;
  15190.         pbmi2->cbImage = 0;
  15191.         pbmi2->cxResolution = 0;
  15192.         pbmi2->cyResolution = 0;
  15193.         pbmi2->cclrUsed = 0;
  15194.         pbmi2->cclrImportant = 0;
  15195.         pbmi2->usUnits = 0;
  15196.         pbmi2->usReserved = 0;
  15197.         pbmi2->usRecording = 0;
  15198.         pbmi2->usRendering = 0;
  15199.         pbmi2->cSize1 = 0;
  15200.         pbmi2->cSize2 = 0;
  15201.         pbmi2->ulColorEncoding = 0;
  15202.         pbmi2->ulIdentifier = 0;
  15203.  
  15204.         prgb2 = (PRGB2) (pbmi2 + 1);  /* Set address to follow bmp2           */
  15205.  
  15206.         /* Set bit map colors to black and white.                             */
  15207.         prgb2[0].bBlue = 0;                               /* Color[0] = black */
  15208.         prgb2[0].bGreen = 0;                              /* Color[0] = black */
  15209.         prgb2[0].bRed = 0;                                /* Color[0] = black */
  15210.         prgb2[0].fcOptions = 0;
  15211.         prgb2[1].bBlue = 255;                             /* Color[1] = white */
  15212.         prgb2[1].bGreen = 255;                            /* Color[1] = white */
  15213.         prgb2[1].bRed = 255;                              /* Color[1] = white */
  15214.         prgb2[1].fcOptions = 0;
  15215.  
  15216.         /* Create a bit map and retrieve its handle.                          */
  15217.         hbm = GpiCreateBitmap(hps,
  15218.             &bmp2,
  15219.             CBM_INIT,
  15220.             (PBYTE) abPattern,                            /* Array of bits    */
  15221.             pbmi2);
  15222.  
  15223.         /* Tag the bit map just created with a custom identifier (lcid).      */
  15224.         GpiSetBitmapId(hps, hbm, lcidCustom);
  15225.    } /* CreatePattern */
  15226.  
  15227. Creating a Custom Fill Pattern from a Bit Map 
  15228.  
  15229.  
  15230. ΓòÉΓòÉΓòÉ 5.3.4. Creating a Custom Fill Pattern from a Font Character ΓòÉΓòÉΓòÉ
  15231.  
  15232. The following figure is an example of how to create a custom fill pattern by 
  15233. using a character from a font. The fill pattern can be only an 8-by-8 bit map; 
  15234. as a result, not all of the character is used. 
  15235.  
  15236. #define INCL_GPI
  15237. #define INCL_WIN
  15238. #include <os2.h>
  15239.    HPS hps;                      /* Presentation-space handle */
  15240.    LONG lcidCustom;              /* Font identifier           */
  15241.    FONTMETRICS afm[80];
  15242.    FATTRS fat;
  15243.  
  15244.    VOID LoadFont(VOID);
  15245.  
  15246.    void fncAREA05(void){
  15247.  
  15248.         LoadFont();
  15249. GpiSetPatternSet(hps, lcidCustom);
  15250. GpiSetPattern(hps, 'o');         /* Use lowercase 'o' as fill */
  15251.     .
  15252.     .
  15253.     .
  15254.    } /* fncAREA05 */
  15255.  
  15256.    VOID LoadFont(VOID){
  15257.       LONG cFonts = 0;
  15258.       LONG cPublicFonts, i;
  15259.  
  15260.       lcidCustom = 1;
  15261.  
  15262. /* Determine the number of loaded public fonts.               */
  15263. cPublicFonts = GpiQueryFonts(hps, QF_PUBLIC, NULL, (PLONG) &cFonts,
  15264.     (LONG) (sizeof(FONTMETRICS)), NULL);
  15265.  
  15266. /* Load the metrics for all public fonts into afm.            */
  15267. GpiQueryFonts(hps, QF_PUBLIC, NULL, (PLONG) &cPublicFonts,
  15268.     (LONG) (sizeof(FONTMETRICS)), afm);
  15269.  
  15270. /* Get the first image font with a point size larger than 8.  */
  15271. for (i = 0; ((afm[i].fsDefn & FM_DEFN_OUTLINE) ||
  15272.      afm[i].lEmHeight <= 8) && i < cPublicFonts; i++);
  15273.  
  15274. /* Load the FATTRS structure with the required metrics.       */
  15275. fat.usRecordLength = sizeof(fat);
  15276. fat.fsSelection = 0;
  15277. fat.lMatch = afm[i].lMatch;
  15278. StringCopy(fat.szFacename, afm[i].szFacename);
  15279. fat.idRegistry = 0;
  15280. fat.usCodePage = 0;
  15281. fat.lMaxBaselineExt = 0;
  15282. fat.lAveCharWidth = 0;
  15283. fat.fsType = 0;
  15284. fat.fsFontUse = 0;
  15285.  
  15286. /* Select this font and assign it a custom lcid.              */
  15287. GpiCreateLogFont(hps, NULL, lcidCustom, &fat);
  15288. GpiSetCharSet(hps, lcidCustom);
  15289. } /* LoadFont */
  15290.  
  15291.  
  15292. Creating a Custom Fill Pattern from a Font Character 
  15293.  
  15294.  
  15295. ΓòÉΓòÉΓòÉ 6. Bit Maps ΓòÉΓòÉΓòÉ
  15296.  
  15297. Raster output devices, such as display screens, are made up of a number of 
  15298. picture elements, called pixels or pels. By setting the color of the pels, you 
  15299. can create an image on the screen. The screen image can be represented 
  15300. internally by a graphics object called a bit map. The bit map contains a number 
  15301. of bits that describe the appearance of each pel on the screen. 
  15302.  
  15303. This chapter describes bit maps, their creation, uses, and functions. The 
  15304. following topics are related to information in this chapter: 
  15305.  
  15306.      Presentation spaces and device contexts 
  15307.      Coordinate spaces 
  15308.      Color and mix modes 
  15309.      Area primitives 
  15310.      Paths 
  15311.  
  15312.  
  15313. ΓòÉΓòÉΓòÉ 6.1. About Bit Maps ΓòÉΓòÉΓòÉ
  15314.  
  15315. Applications can use bit maps to: 
  15316.  
  15317.      Store and display scanned images, icons, and symbols 
  15318.      Create fill patterns for area primitives and paths 
  15319.  
  15320.  An application can display a bit-map image on any raster output device. A 
  15321.  raster is a rectangular matrix of pels on a video display or dot matrix 
  15322.  printer. A raster output device displays an image by setting pels in its 
  15323.  matrix to colors specified in a corresponding bit map. An image created in 
  15324.  this way is called a "bit-map image". Bit maps cannot be sent to vector output 
  15325.  devices such as plotters. 
  15326.  
  15327.  A bit map is drawn to an output device row by row. Each horizontal line of 
  15328.  pels is known as a scan line. 
  15329.  
  15330.  There is a 1-to-1 correspondence between the number of rows of pels in a 
  15331.  bit-map image and the rows of bits in a bit map. The first pel in a bit-map 
  15332.  image is in the lower-left corner, and the last pel is in the upper-right 
  15333.  corner. The pels are in left-to-right order inside each row of the image. The 
  15334.  following figure shows this relationship between bit map and image. 
  15335.  
  15336.  Bits and Pels in a Bit-Map Image 
  15337.  
  15338.  When an application creates a bit map by calling GpiCreateBitmap, it specifies 
  15339.  the bit-map width and height in terms of pels in the bit-map image. The width 
  15340.  is the number of pels within a row; the height is the number of rows. The 
  15341.  application must store these dimensions in the BITMAPINFO2 and 
  15342.  BITMAPINFOHEADER and pass their addresses to GpiCreateBitmap. 
  15343.  
  15344.  
  15345. ΓòÉΓòÉΓòÉ 6.1.1. System Implementation ΓòÉΓòÉΓòÉ
  15346.  
  15347. Bit maps are most useful when rapid and frequent movement is required, such as 
  15348. with icons and pointers. They are especially useful for restoring the contents 
  15349. of a window-for example, when an overlying window is removed. If you save the 
  15350. contents of a window in a bit map, you can restore the window contents simply 
  15351. by redisplaying the bit map when the window needs to be redrawn. 
  15352.  
  15353. Using bit maps is also an effective method of erasing some of the screen 
  15354. contents. For example, you can save the image of the screen in a bit map at any 
  15355. time while drawing on the screen. If you continue drawing after saving the 
  15356. screen image, you can "erase" any drawing done since you saved the screen image 
  15357. by redisplaying the bit map. 
  15358.  
  15359. Bit maps are not, however, the recommended way to store graphics that are going 
  15360. to be changed. Most changes to the bit-map contents mean that you have to 
  15361. re-create the bit map. 
  15362.  
  15363. Bit-map images are device-dependent. Their appearance is affected by the shape 
  15364. of the device's pels and the device's color capabilities. For example, if the 
  15365. pels on one display measure 0.05 mm by 0.1 mm, but 0.1 mm by 0.3 mm on a second 
  15366. display, a circular bit-map pie chart drawn on the first display appears 
  15367. elliptical on the second. The following figure shows how a bit map appears on 
  15368. two types of displays. 
  15369.  
  15370. Bit Map Shown on Two Types of Displays 
  15371.  
  15372. Bit maps, particularly color bit maps, can also occupy large amounts of memory. 
  15373. The actual amount of memory occupied by a bit map is determined by both the 
  15374. size of the bit map and the number of bits used to describe each pel. 
  15375.  
  15376.  
  15377. ΓòÉΓòÉΓòÉ 6.1.2. Bit Map Functions ΓòÉΓòÉΓòÉ
  15378.  
  15379. The OS/2 operating system provides a set of functions that allow you to: 
  15380.  
  15381.      Create bit maps 
  15382.      Create and load custom bit maps 
  15383.      Store color information on a bit map 
  15384.      Draw bit maps 
  15385.      Transfer bit maps 
  15386.      Change the size of a bit map 
  15387.      Specify the mix values for a bit map 
  15388.      Convert between monochrome and color data 
  15389.      Manipulate single pels 
  15390.      Copy images from a display into a bit map 
  15391.      Save a bit map 
  15392.      Delete a bit map 
  15393.      Make a bit map available to other processes 
  15394.  
  15395.  
  15396. ΓòÉΓòÉΓòÉ 6.1.2.1. Creating a Bit Map ΓòÉΓòÉΓòÉ
  15397.  
  15398. A bit map can be created by an application or by using the PM Icon Editor. 
  15399.  
  15400.  
  15401. ΓòÉΓòÉΓòÉ 6.1.2.1.1. By an Application ΓòÉΓòÉΓòÉ
  15402.  
  15403. To enable an application to create a bit map: 
  15404.  
  15405.    1. Create a memory device context. 
  15406.  
  15407.       A memory device context enables an application to treat a bit map in 
  15408.       memory as though it were a device. For example, an application can copy 
  15409.       color information from another bit map, or copy pels on the display, into 
  15410.       a bit map associated with a memory device context. 
  15411.  
  15412.       To create the memory device context, call DevOpenDC with: 
  15413.  
  15414.           A device type of OD_MEMORY (second argument) 
  15415.  
  15416.           A handle to a compatible device context (such as the device context 
  15417.            of a device with which the bit map is to be compatible). 
  15418.  
  15419.            Note:  The device device-context handle ideally should be the handle 
  15420.            of the actual device to which you will be directing the bit map. 
  15421.            Otherwise, it will be necessary to change ownership to the 
  15422.            appropriate device driver before the BitBlt operation (which copies 
  15423.            the bit map from one presentation space to one associated with a 
  15424.            screen device context). As a consequence, the image may appear 
  15425.            distorted. 
  15426.  
  15427.       If you omit the handle of the compatible device context by specifying 
  15428.       NULL, screen compatibility is assumed. 
  15429.  
  15430.    2. Create a graphics presentation space and associate it with the memory 
  15431.       device context. 
  15432.  
  15433.       The operating system requires this association before the application can 
  15434.       perform many of the bit map operations. The handle of this graphics 
  15435.       presentation space is required as input to subsequent bit-map-creation 
  15436.       and manipulation functions. 
  15437.  
  15438.    3. Create the bit map. 
  15439.  
  15440.       When an application creates a bit map, the handle of the presentation 
  15441.       space that you have associated with the memory device context causes the 
  15442.       bit map to be created in a format that is compatible with the memory 
  15443.       device context. 
  15444.  
  15445.       The application also passes two structures: the bit-map information 
  15446.       header and the bit-map information table. These structures contain a 
  15447.       great deal of information about the bit map. 
  15448.  
  15449.       To create the bit map, call GpiCreateBitmap with: 
  15450.  
  15451.           The handle of the presentation space (first argument) 
  15452.           The bit-map information header, BITMAPINFOHEADER (second argument). 
  15453.            (last argument). 
  15454.  
  15455.       The bit-map information table contains similar information, with the 
  15456.       addition of the RGB2 array structure. 
  15457.  
  15458.       GpiCreateBitmap returns a handle to the bit map, which is used to 
  15459.       identify the bit map. 
  15460.  
  15461.       To determine which bit-map formats are supported on a particular device, 
  15462.       call GpiQueryDeviceBitmapFormats. This returns every format supported on 
  15463.       a named device. The data is returned as an array of bit-map plane and 
  15464.       bit-count pairs. The first pair of values in the array is the one most 
  15465.       suitable for the device. 
  15466.  
  15467.       You can think of the bit map at this stage as a rectangular area of 
  15468.       memory containing random data. You can initialize the bit map at this 
  15469.       stage by providing GpiCreateBitmap with the address in application 
  15470.       storage of some initialization data and by setting the CBM_INIT option. 
  15471.       This is a useful function if, for example, your application always starts 
  15472.       by displaying the same image. 
  15473.  
  15474.    4. Select the bit map. 
  15475.  
  15476.       Before selecting the bit map, you can disassociate the presentation space 
  15477.       from the original memory device context and associate it with a different 
  15478.       memory device context. However, the bit-map format must be convertible to 
  15479.       a format that is supported by the new device. If you have selected one of 
  15480.       the four standard bit-map formats, this compatibility is guaranteed and 
  15481.       the conversion is automatic. 
  15482.  
  15483.       Note:  When a presentation space is associated with a memory device 
  15484.       context, a bit map must be selected into the device context before you 
  15485.       can draw in the presentation space. 
  15486.  
  15487.       To select the bit map, call GpiSetBitmap with: 
  15488.  
  15489.           The presentation-space handle (first parameter) 
  15490.           The bit-map handle (second parameter). 
  15491.  
  15492.  The following figure shows the sequence of events when you create and display 
  15493.  a bit map. 
  15494.  
  15495.  Creating and Displaying Bit Maps 
  15496.  
  15497.  The application: 
  15498.  
  15499.    1. Calls DevOpenDC to create the memory device context. 
  15500.  
  15501.    2. Creates a graphics presentation space. This is associated with the memory 
  15502.       device context. 
  15503.  
  15504.    3. Calls GpiCreateBitmap to define a bit map. 
  15505.  
  15506.    4. Calls GpiSetBitmap to designate the bit map as the one currently selected 
  15507.       in the memory device context. 
  15508.  
  15509.    5. Calls drawing instructions to the presentation space to draw to the bit 
  15510.       map. 
  15511.  
  15512.       Note:  If the bit map is initialized when it is created, this step does 
  15513.              not normally exist. Alternatively, this step can be a 
  15514.              GpiSetBitmapBits call. 
  15515.  
  15516.    6. Calls GpiBitBlt to copy the bit map from presentation space 1 to 
  15517.       presentation space 2 (associated with a screen device context). The bit 
  15518.       map is transferred directly to the screen. 
  15519.  
  15520.  
  15521. ΓòÉΓòÉΓòÉ 6.1.2.1.2. Using the Icon Editor ΓòÉΓòÉΓòÉ
  15522.  
  15523. Using the Icon Editor, you can create monochrome or color bit maps that have a 
  15524. static appearance. This means that the bit maps can be created in advance and 
  15525. then used without change while the application is running. 
  15526.  
  15527. When you use the Icon Editor to create a bit map, the bit map is saved in a 
  15528. resource file that can be loaded whenever it is needed. To load a bit-map file, 
  15529. call GpiLoadBitmap, with the identifier of the resource file that contains the 
  15530. bit map, as the second parameter. If you allow this value to default, the 
  15531. application's .EXE file is assumed to contain the bit map. 
  15532.  
  15533. GpiLoadBitmap lets you specify the x- and y-dimensions (in pels) of the bit 
  15534. map. The loaded bit map is stretched or compressed accordingly. If you supply a 
  15535. 0 value for one of these dimensions, the bit map is sized in the other 
  15536. dimension only, which is likely to cause distortion of the image. If the bit 
  15537. map is to be produced in its original size, specify 0 for both its width and 
  15538. its height. 
  15539.  
  15540. Output from the call to this function is the bit-map handle. To display the 
  15541. loaded bit map on the screen, follow the sequence of steps described in the 
  15542. preceding section, omitting steps 3 (defining the bit map) and 5 (issuing 
  15543. drawing instructions to the presentation space). 
  15544.  
  15545. A bit map created by the Icon Editor is saved in a device-independent format. 
  15546. This format generates an array of bit maps with formats (bits per pel) matching 
  15547. each of the supported display devices. 
  15548.  
  15549.  
  15550. ΓòÉΓòÉΓòÉ 6.1.2.2. Creating and Loading a Custom Bit Map ΓòÉΓòÉΓòÉ
  15551.  
  15552. An application can create a custom bit map by setting the bits in an array and 
  15553. passing the array to GpiCreateBitmap or by running the Icon Editor and loading 
  15554. the bit map with GpiLoadBitmap. 
  15555.  
  15556. To create a custom bit map with an array, an application: 
  15557.  
  15558.    1. Defines an array of bytes that will set pels in an image to the 
  15559.       appropriate colors. This array of bytes typically represents the output 
  15560.       of a scanned image. 
  15561.  
  15562.    2. Sets the fields in the BITMAPINFOHEADER to their appropriate values. 
  15563.  
  15564.    3. Sets the fields in the BITMAPINFO2 structure to their appropriate values. 
  15565.  
  15566.    4. Calls GpiCreateBitmap, passes it the addresses of the structures and the 
  15567.       array of bytes that the application has already defined, and sets the 
  15568.       flOptions parameter to CBM_INIT. 
  15569.  
  15570.  If the application is to use this bit map as a fill pattern, it assigns the 
  15571.  bit map a local identifier by calling GpiSetBitmapId. 
  15572.  
  15573.  To load a custom bit map that was created with the Icon Editor: 
  15574.  
  15575.    1. Copy the bit map file to the directory in which you compile your 
  15576.       application. 
  15577.  
  15578.    2. Create a BITMAP entry in your application's resource file, assigning a 
  15579.       unique integer identifier to the bit map. 
  15580.  
  15581.    3. Call GpiLoadBitmap, passing it the identifier that you assigned to the 
  15582.       bit map in the resource file. 
  15583.  
  15584.  An application can use GpiLoadBitmap to load any bit map from a file that 
  15585.  conforms to any of the standard OS/2 bit-map formats or to a device-specific 
  15586.  format supported by the device concerned. This means that an application can 
  15587.  load a bit map created by another application, if that application created the 
  15588.  correct bit-map header and stored the bit-map bits correctly. 
  15589.  
  15590.  
  15591. ΓòÉΓòÉΓòÉ 6.1.2.3. Storing Color Information in a Bit Map ΓòÉΓòÉΓòÉ
  15592.  
  15593. Graphics systems use one of two formats for storing color information in bit 
  15594. maps. The first format uses a single plane and a multiple bit count. The second 
  15595. format uses multiple color planes. 
  15596.  
  15597.  
  15598. ΓòÉΓòÉΓòÉ 6.1.2.3.1. Color Planes ΓòÉΓòÉΓòÉ
  15599.  
  15600. Bit maps are arranged in one or more color planes. A color plane is an array of 
  15601. bit-map bits that contains color information. 
  15602.  
  15603. The bit maps in each of the previous illustrations use the single bit-map plane 
  15604. format, which is the standard format for bit maps in OS/2 applications. In this 
  15605. format, a specified number of adjacent bit-map bits contains indexes to either 
  15606. a special color table of RGB values or actual RGB2 structures. Whether the 
  15607. application maps bits into an RGB or RGB2 structure depends on the bit-map 
  15608. format. All of the color information resides in a single plane. 
  15609.  
  15610. The second color format uses more than one color plane. A common multiplane 
  15611. bit-map format is the three-plane format, in which one plane corresponds to the 
  15612. red pels, another to the green pels, and a third to the blue pels. Multiplane 
  15613. bit-map formats are rare in PM applications. Most bit maps are stored 
  15614. externally in a single-plane format, although the device driver (such as VGA) 
  15615. may internally convert them to the multiplane format. 
  15616.  
  15617. The single-plane format can be converted internally to any multiplane format 
  15618. used by a device. You also can use a nonstandard number of bits to describe 
  15619. each pel, if supported by your output device. If you write your own 
  15620. presentation driver, it must be able to convert the standard bit-map formats to 
  15621. its own internal format. 
  15622.  
  15623. An application can determine which color-plane format a device supports by 
  15624. calling GpiQueryDeviceBitmapFormats. 
  15625.  
  15626.  
  15627. ΓòÉΓòÉΓòÉ 6.1.2.3.2. Standard Bit-Map Formats ΓòÉΓòÉΓòÉ
  15628.  
  15629. On a monochrome device, you need only one bit to describe a single pel, and 
  15630. that bit is switched on or off. Color devices require more bits. For example, 
  15631. an eight-color picture requires three bits to describe a single pel, because 
  15632. each component of the RGB mix (red, green, blue) that gives a pel its color 
  15633. must be described. 
  15634.  
  15635. A bit count is a value that specifies how many adjacent bit-map bits correspond 
  15636. to each pel in a bit-map image.  There are four standard bit-map formats, each 
  15637. with a different bit count.  The formats are shown in the following table. 
  15638.  
  15639. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15640. ΓöéFormat              ΓöéBits per pel        ΓöéSize of 640 x 480   Γöé
  15641. Γöé                    Γöé                    Γöéimage in bytes      Γöé
  15642. Γöé                    Γöé                    Γöé(uncompressed)      Γöé
  15643. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15644. ΓöéMonochrome          Γöé1                   Γöé38 400              Γöé
  15645. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15646. Γöé16 color            Γöé4                   Γöé153 600             Γöé
  15647. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15648. Γöé256 color           Γöé8                   Γöé307 200             Γöé
  15649. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15650. Γöé16.7 million color  Γöé24                  Γöé921 600             Γöé
  15651. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  15652.  
  15653. Note:  The bits are stored consecutively in the bit-map plane. If you have four 
  15654. bits for each pel, the four bits for pel 1 are followed by the four bits for 
  15655. pel 2, and so on. The bits that describe pel 1 are stored beginning in the 
  15656. most-significant bits of the first byte. The data for each scan line is packed 
  15657. together, and the bottom scan line appears first in memory with the leftmost 
  15658. pel first. Each scan line, however, is padded at the end so that each line 
  15659. begins on a ULONG (32-bit) boundary. 
  15660.  
  15661. If the device supports a bit count of one bit per pel, the color table contains 
  15662. two entries. A device that supports a bit count of n bits per pel, has a 
  15663. corresponding color table with 2n entries. However, a bit count of 24 bits per 
  15664. pel indicates that there is no color table, because each pel is a direct RGB 
  15665. value. 
  15666.  
  15667. The following figure shows a bit map using a bit count of four bits per pel and 
  15668. an associated color table: 
  15669.  
  15670. A Bit Map and Its Associated Color Table 
  15671.  
  15672. If a device uses a bit count of one, four or eight bits per pel, the bit-map 
  15673. bits contain index values for a bit-map color table. If the device supports a 
  15674. bit count of 24 bits per pel, the bit-map bits contain the bRed, bGreen, and 
  15675. bBlue fields of RGB2 structures. No color table is associated with a bit map on 
  15676. a device that supports a format of 24 bits per pel-such a device can support 
  15677. over 16 million colors. Instead of using a color table, the BITMAPINFO2 
  15678. structure consists of only the header, and the red, green, and blue color 
  15679. values are provided directly by the bit-map data. 
  15680.  
  15681. An application can determine the bit-count format that a device supports by 
  15682. calling GpiQueryDeviceBitmapFormats. 
  15683.  
  15684.  
  15685. ΓòÉΓòÉΓòÉ 6.1.2.4. Drawing Bit Maps ΓòÉΓòÉΓòÉ
  15686.  
  15687. An application can draw bit-map images on a raster printer or display screen, 
  15688. or into metafiles associated with a raster device. Any GPI drawing requests 
  15689. (including those that produce graphics text), issued to a presentation space 
  15690. associated with a memory DC containing a selected bit map, cause the bit map to 
  15691. receive raster images of your drawings. The following table describes the bit 
  15692. map drawing functions: 
  15693.  
  15694. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15695. ΓöéFunction            ΓöéInput               ΓöéOutput              Γöé
  15696. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15697. ΓöéWinDrawBitmap       ΓöéThe handle of a bit ΓöéA bit-map image on aΓöé
  15698. Γöé                    Γöémap.                Γöéraster display.     Γöé
  15699. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15700. ΓöéGpiImage            ΓöéA buffer containing ΓöéA special monochromeΓöé
  15701. Γöé                    Γöébit map image data. Γöébit-map image on a  Γöé
  15702. Γöé                    Γöé                    Γöéraster display or   Γöé
  15703. Γöé                    Γöé                    Γöéprinter.            Γöé
  15704. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15705. ΓöéGpiDrawBits         ΓöéA buffer containing ΓöéA bit-map image on aΓöé
  15706. Γöé                    Γöébit map image data. Γöéraster display or   Γöé
  15707. Γöé                    Γöé                    Γöéprinter.            Γöé
  15708. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15709. ΓöéGpiBitBlt           ΓöéThe handle of a     ΓöéA bit-map image on aΓöé
  15710. Γöé                    Γöépresentation space  Γöéraster display or   Γöé
  15711. Γöé                    Γöécontaining a bit    Γöéprinter, or a       Γöé
  15712. Γöé                    Γöémap.                Γöébit-map image into aΓöé
  15713. Γöé                    Γöé                    Γöémetafile (albeit in Γöé
  15714. Γöé                    Γöé                    Γöéan escape order).   Γöé
  15715. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15716. ΓöéGpiWCBitBlt         ΓöéThe handle of a bit ΓöéA bit-map image on aΓöé
  15717. Γöé                    Γöémap.                Γöéraster display or   Γöé
  15718. Γöé                    Γöé                    Γöéprinter, or a       Γöé
  15719. Γöé                    Γöé                    Γöébit-map image into aΓöé
  15720. Γöé                    Γöé                    Γöémetafile.           Γöé
  15721. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  15722.  
  15723.  
  15724. ΓòÉΓòÉΓòÉ 6.1.2.4.1. WinDrawBitmap ΓòÉΓòÉΓòÉ
  15725.  
  15726. WinDrawBitmap draws a bit-map image by copying it into a window linked to a 
  15727. target presentation space. A call to this function is valid only in draw mode 
  15728. (DM_DRAW), and only for a screen device context. This function does not require 
  15729. an application to select a bit map into a presentation space before the 
  15730. application draws the corresponding image. An application can use WinDrawBitmap 
  15731. to scale bit maps by specifying DBM_STRETCH as the last argument, and the 
  15732. address of a RECTL structure as the fourth argument. The coordinates in this 
  15733. structure are always device coordinates. 
  15734.  
  15735. WinDrawBitmap draws both color and monochrome bit maps. Color bit maps require 
  15736. no color conversion. Monochrome bit maps can be drawn in any two colors which 
  15737. can be explicitly specified as parameters to the call or taken from the image 
  15738. bundle. These parameters will be color table indexes or RGB values, depending 
  15739. on the color table mode of the target presentation space. The current image 
  15740. bundle mix modes are used and, for certain mix values, will affect color. 
  15741.  
  15742. You can call WinDrawBitmap in retain mode, but the bit-map image will only be 
  15743. drawn and not recorded in the segments. 
  15744.  
  15745. Note:  An application can determine the current colors and their corresponding 
  15746. mix modes by calling GpiQueryAttrs. The application can set them by calling 
  15747. GpiSetAttrs. 
  15748.  
  15749. An inverted bit map is a bit map in which the colors have been inverted; white 
  15750. becomes black and black becomes white. An application can draw inverted bit 
  15751. maps by calling WinDrawBitmap and passing it DBM_INVERT as the last argument. 
  15752. An application can draw halftone bit maps by calling WinDrawBitmap and passing 
  15753. it DBM_HALFTONE as the last argument. Before drawing the bit map, clear the 
  15754. presentation space to CLR_BACKGROUND using GpiErase. 
  15755.  
  15756.  
  15757. ΓòÉΓòÉΓòÉ 6.1.2.4.2. GpiImage ΓòÉΓòÉΓòÉ
  15758.  
  15759. GpiImage draws a nonstandard, monochrome (two-color) bit map called an image 
  15760. primitive. The bit-map bits in an image are stored in the opposite order from 
  15761. the bits in a standard bit map-the first bit in the bit map corresponds to the 
  15762. pel in the upper-left corner of the bit-map image, and the last bit in the bit 
  15763. map corresponds to the pel in the lower-right corner of the bit-map image. The 
  15764. following figure shows the correspondence between the bits in an image 
  15765. primitive and the pels in the drawing produced by GpiImage. 
  15766.  
  15767. Image-Primitive Bits and Pels 
  15768.  
  15769. A call to GpiImage also is valid only in draw mode (DM_DRAW), but can provide 
  15770. output to a screen or printer. An application cannot scale bit-map images by 
  15771. using GpiImage. 
  15772.  
  15773.  
  15774. ΓòÉΓòÉΓòÉ 6.1.2.5. Transferring Bit Maps ΓòÉΓòÉΓòÉ
  15775.  
  15776. The three remaining bit-map drawing functions operate in very similar ways. 
  15777. GpiDrawBits copies a bit-map image from application memory to a device or a 
  15778. device context. GpiBitBlt directs bit maps to devices other than the screen. 
  15779. GpiWCBitBlt enables you to retain the bit-map data in the segment store of the 
  15780. target presentation space. 
  15781.  
  15782. The similarities are discussed first. Their differences are discussed in the 
  15783. sections that follow. 
  15784.  
  15785. An application should use GpiDrawBits, GpiBitBlt, or GpiWCBitBlt to draw bit 
  15786. maps that use a color table or RGB2 structures color formats of 1, 4, 8, or 24 
  15787. bits per pel. 
  15788.  
  15789. An application can draw inverted bit maps for any of these three functions by 
  15790. calling the function and passing ROP_NOTSRCCOPY as the raster operation. 
  15791.  
  15792.  
  15793. ΓòÉΓòÉΓòÉ 6.1.2.5.1. GpiDrawBits ΓòÉΓòÉΓòÉ
  15794.  
  15795. GpiDrawBits copies bit map image data from storage into a bit map that has been 
  15796. selected into a device context associated with a presentation space. It can 
  15797. also copy bit-map image data to a device. An application can use this function 
  15798. to draw a bit map without first selecting the bit map into a presentation 
  15799. space. 
  15800.  
  15801. This function is valid in all draw modes. Set the draw mode to DM_RETAIN or 
  15802. DM_DRAWANDRETAIN to create retained segments; otherwise, the default mode, 
  15803. DM_DRAW, is selected. 
  15804.  
  15805.  
  15806. ΓòÉΓòÉΓòÉ 6.1.2.5.2. GpiBitBlt ΓòÉΓòÉΓòÉ
  15807.  
  15808. GpiBitBlt requires an application to use device coordinates for the dimensions 
  15809. of the source and target rectangles. GpiBitBlt allows you to direct bit maps to 
  15810. devices other than the screen. It is independent of the drawing mode, but it 
  15811. operates as if in draw mode. 
  15812.  
  15813. At its simplest, GpiBitBlt copies a whole bit map, unaltered, from a device or 
  15814. bit map source to a device or bit map target. At its most powerful, GpiBitBlt 
  15815. can take a part of or a whole bit map, and alter both its size and appearance 
  15816. in the process of copying it to another device context. A bit map can be 
  15817. copied: 
  15818.  
  15819.      From one memory device context to another memory device context 
  15820.  
  15821.      From a memory device context to the device context of an output device 
  15822.       (screen window or printer) that supports raster operations 
  15823.  
  15824.      From the device context of an output device to a memory device context 
  15825.  
  15826.      From the device context of an output device to another device context of 
  15827.       the same output device. In both cases, the screen device can be a PM 
  15828.       window. 
  15829.  
  15830.  A memory device context (whether it is the source or the target of the 
  15831.  GpiBitBlt operation) must have a bit map selected when GpiBitBlt is called. 
  15832.  
  15833.  GpiBitBlt has a number of input parameters, two of which are the handles of 
  15834.  two presentation spaces:  the source presentation space and the target 
  15835.  presentation space. Both of these presentation spaces must be associated with 
  15836.  an appropriate device context. Unless the associated device is a banded 
  15837.  printer, a single presentation space can be both source and target. This 
  15838.  allows you to copy a bit map within a single PM window, or to update the bit 
  15839.  map. The source and target rectangles are specified in device coordinates in 
  15840.  GpiBitBlt. GpiBitBlt, consequently, is very device-dependent, and should be 
  15841.  avoided when creating data for interchange. 
  15842.  
  15843.  
  15844. ΓòÉΓòÉΓòÉ 6.1.2.5.3. GpiWCBitBlt ΓòÉΓòÉΓòÉ
  15845.  
  15846. GpiWCBitBlt enables you to retain the bit-map data in the segment store of the 
  15847. target presentation space. It is a valid in all three drawing modes: 
  15848.  
  15849.      DM_DRAW-display, printer, or into metafile 
  15850.      DM_RETAIN-into metafile or segment 
  15851.      DM_DRAWANDRETAIN-display, printer, then into associated segment or 
  15852.       metafile. 
  15853.  
  15854.  Most of the bit-map drawing operations occur in an application's device space. 
  15855.  GpiWCBitBlt, however, lets an application draw in its world space, but 
  15856.  requires that you use device coordinates for the source rectangle, and world 
  15857.  coordinates for the target rectangle. 
  15858.  
  15859.  An application can use GpiWCBitBlt to draw a bit map with consistent 
  15860.  dimensions on devices with different aspect ratios. The aspect ratio is the 
  15861.  ratio of a pel's width to its height. 
  15862.  
  15863.  When creating data for interchange, use GpiWCBitBlt. GpiWCBitBlt provides the 
  15864.  same function as GpiBitBlt, with the following exceptions: 
  15865.  
  15866.      The target rectangle is specified in world coordinates, and all four 
  15867.       coordinates (the two source-rectangle coordinates and the two 
  15868.       target-rectangle coordinates) must be specified. 
  15869.  
  15870.      The source handle must be a bit-map handle. It must not be the handle of 
  15871.       a source presentation space. The bit map identified by the source handle 
  15872.       must not be selected into a memory device context when you call 
  15873.       GpiWCBitBlt. 
  15874.  
  15875.      GpiWCBitBlt conforms to the current drawing mode in the target 
  15876.       presentation space. If the drawing mode is retain or draw-and-retain, the 
  15877.       bit map is retained in segment store. 
  15878.  
  15879.  
  15880. ΓòÉΓòÉΓòÉ 6.1.2.6. Changing the Size of the Bit Map ΓòÉΓòÉΓòÉ
  15881.  
  15882. You can specify the sizes of the rectangular bit blocks in both the source and 
  15883. the target presentation spaces. To do this, provide an array of up to four 
  15884. device-coordinate positions as input to the call. The first two positions 
  15885. define the lower-left and upper-right corners of the target rectangle; the 
  15886. second two define the same two corners of the source rectangle. 
  15887.  
  15888. If you want the two rectangles to be of equal size, do not specify the device 
  15889. coordinates of the upper-right corner of the source rectangle. The correct 
  15890. amount of data is automatically transferred to fill the target rectangle. The 
  15891. following figure shows the points count for bit-block transfers. 
  15892.  
  15893. Points Count for Bit-Block Transfers 
  15894.  
  15895. Equal-size rectangles can be built much faster than rectangles that need 
  15896. stretching or compressing. Compression options (flOptions) are ignored if the 
  15897. rectangles are to be of equal size. 
  15898.  
  15899. If the rectangles are not to be of equal size, you must specify all four 
  15900. coordinate points. The bit-map data is stretched, if the target rectangle is 
  15901. larger than the source rectangle, or compressed, if the target rectangle is 
  15902. smaller, to fit the target rectangle. The bit map is stretched by duplicating 
  15903. rows and columns of data, an action that might cause distortion of the image. 
  15904. If the data is to be compressed, you can specify one of three compression 
  15905. options as shown in the following table. 
  15906.  
  15907. Bit-map Data Compression Rules 
  15908.  
  15909. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15910. ΓöéOption              ΓöéCompression Rules                       Γöé
  15911. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15912. ΓöéBBO_OR              ΓöéCompresses the bit map data as          Γöé
  15913. Γöé                    Γöénecessary, using a logical OR operation Γöé
  15914. Γöé                    Γöéon the eliminated rows and columns. ThisΓöé
  15915. Γöé                    Γöéis useful for preserving the foreground Γöé
  15916. Γöé                    Γöéwhen foreground pels are "1" and the    Γöé
  15917. Γöé                    Γöébackground pels are "0".                Γöé
  15918. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15919. ΓöéBBO_AND             ΓöéCompresses the bit map data as          Γöé
  15920. Γöé                    Γöénecessary, using a logical AND operationΓöé
  15921. Γöé                    Γöéon the eliminated rows and columns. ThisΓöé
  15922. Γöé                    Γöéis useful for preserving the foreground Γöé
  15923. Γöé                    Γöéwhen foreground pels are "0" and the    Γöé
  15924. Γöé                    Γöébackground pels are "1".                Γöé
  15925. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15926. ΓöéBBO_IGNORE          ΓöéCompresses the bit map data as          Γöé
  15927. Γöé                    Γöénecessary, but ignores any eliminated   Γöé
  15928. Γöé                    Γöérows or columns. This is most useful forΓöé
  15929. Γöé                    Γöécolor bit maps, where the results of    Γöé
  15930. Γöé                    Γöécombining pels of different colors are  Γöé
  15931. Γöé                    Γöéunpredictable.                          Γöé
  15932. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  15933.  
  15934.  
  15935. ΓòÉΓòÉΓòÉ 6.1.2.7. Specifying Mix Values ΓòÉΓòÉΓòÉ
  15936.  
  15937. When you draw a graphics primitive into a presentation space, it is affected by 
  15938. the current foreground-mix value, and possibly by the current background-mix 
  15939. value, in that presentation space. However, when you copy a bit map into a 
  15940. target presentation space, the current foreground- and background-mix values in 
  15941. the target presentation space are ignored. Instead, you specify a mix-mode 
  15942. value, also known as the raster-operation (ROP) value. This value determines: 
  15943.  
  15944.      How the bit map is affected by any data that might already be in the 
  15945.       target presentation space 
  15946.  
  15947.      The color of each pel in the bit map 
  15948.  
  15949.  Each pel in the bit map of the target presentation space has, potentially, 
  15950.  three color settings: 
  15951.  
  15952.      The setting of that pel in the source rectangle 
  15953.  
  15954.      The initial setting of that pel in the target rectangle 
  15955.  
  15956.      The setting of that pel in the current area-fill pattern in the target 
  15957.       presentation space 
  15958.  
  15959.  The (boolean) values of each of these settings can be combined using boolean 
  15960.  operations to produce the final value of each pel in the target presentation 
  15961.  space. For a color target, the target must be regarded as consisting of 
  15962.  multiple one-bit per pel planes, with the mixing applied to each plane 
  15963.  separately to produce the final color index into the physical color table. 
  15964.  Because the final color index is an index into the physical palette, the 
  15965.  results of any color mixing are therefore unpredictable. For example, if you 
  15966.  ORed together two numeric index values, the color indexed by the result is 
  15967.  unlikely to have any direct relation to the colors indexed by the two values 
  15968.  you ORed together. It depends on the order of the colors in the physical 
  15969.  table. 
  15970.  
  15971.  As input to the functions, you supply an actual mix value. The ROP mix value 
  15972.  required to achieve any given result can be determined from the following 
  15973.  table. The final value of each bit in every pel depends on the values of the 
  15974.  corresponding bits in the pattern (P), source (S), and the original target 
  15975.  value (T initial). Each row of the table shows one of the eight possible 
  15976.  combinations of these values. For each combination, mark the desired final 
  15977.  target value in the last column. The eight bits in this column then show the 
  15978.  value of the least significant byte of the ROP value required to achieve this 
  15979.  mixing function. For example, if the required mixing function is to copy the 
  15980.  source to the target, then the target (final) column will be the same as the S 
  15981.  column, and the ROP value will have the binary value 11001100, or the 
  15982.  hexadecimal value 00CC. 
  15983.  
  15984.  Possible Settings for the Index Bits 
  15985.  
  15986.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15987.   ΓöéPatternΓöéSource ΓöéTarget (initial)Γöé              ΓöéTarget (final)  Γöé
  15988.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15989.   Γöé0      Γöé0      Γöé0               Γöé              ΓöéIndex bit 0     Γöé
  15990.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15991.   Γöé0      Γöé0      Γöé1               Γöé              ΓöéIndex bit 1     Γöé
  15992.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15993.   Γöé0      Γöé1      Γöé0               Γöé              ΓöéIndex bit 2     Γöé
  15994.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15995.   Γöé0      Γöé1      Γöé1               Γöé              ΓöéIndex bit 3     Γöé
  15996.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15997.   Γöé1      Γöé0      Γöé0               Γöé              ΓöéIndex bit 4     Γöé
  15998.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15999.   Γöé1      Γöé0      Γöé1               Γöé              ΓöéIndex bit 5     Γöé
  16000.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16001.   Γöé1      Γöé1      Γöé0               Γöé              ΓöéIndex bit 6     Γöé
  16002.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16003.   Γöé1      Γöé1      Γöé1               Γöé              ΓöéIndex bit 7     Γöé
  16004.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16005.  
  16006.  If you want the pattern to have no effect on the target rectangle, the four 
  16007.  low-order bits of the index must be the same as the four high-order bits. 
  16008.  
  16009.  A monochrome bit map consists only of source settings of 1s and 0s, where a 1 
  16010.  or 0 represents each pel. It also has a two-entry color table with index 0 
  16011.  specifying what color a 0 pel represents and index 1 representing what color a 
  16012.  1 pel represents. In a monochrome bit map, this color table is not used during 
  16013.  BitBlt operations (but is used when drawing to the bit map and moving the bit 
  16014.  map between devices). The preceding table defines how any combination of 
  16015.  pattern, source and target original (1 and 0) values define the target final 
  16016.  (1 or 0) value. A color bit map has an index (in the case of four bits, 0-15) 
  16017.  for each pel which, serves as index into the bit map color table (16 entries 
  16018.  for four bits per pel) to define the color of each pel. Unlike monochrome bit 
  16019.  maps, this table is used during BitBlt operations (instead of target image 
  16020.  bundle attributes) to provide the color of the target output. 
  16021.  
  16022.  The following table represents a selection of the most commonly used mixes 
  16023.  with predefined symbolic names and their effects. (There are many other 
  16024.  possible mixes). 
  16025.  
  16026.  Mix Value Names 
  16027.  
  16028.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16029.   ΓöéMix Name          ΓöéEffect                                    Γöé
  16030.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16031.   ΓöéROP_SRCCOPY       ΓöéSource                                    Γöé
  16032.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16033.   ΓöéROP_SRCPAINT      ΓöéSource OR Target                          Γöé
  16034.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16035.   ΓöéROP_SRCAND        ΓöéSource AND Target                         Γöé
  16036.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16037.   ΓöéROP_SRCINVERT     ΓöéSource XOR Target                         Γöé
  16038.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16039.   ΓöéROP_SRCERASE      ΓöéSource AND NOT (Target)                   Γöé
  16040.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16041.   ΓöéROP_NOTSRCCOPY    ΓöéNOT (Source)                              Γöé
  16042.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16043.   ΓöéROP_NOTSRCERASE   ΓöéNOT (Source) AND NOT (Target)             Γöé
  16044.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16045.   ΓöéROP_MERGECOPY     ΓöéSource AND Pattern                        Γöé
  16046.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16047.   ΓöéROP_MERGEPAINT    ΓöéNOT (Source) OR Target                    Γöé
  16048.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16049.   ΓöéROP_PATCOPY       ΓöéPattern                                   Γöé
  16050.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16051.   ΓöéROP_PATPAINT      ΓöéNOT (Source) OR Pattern OR Target         Γöé
  16052.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16053.   ΓöéROP_PATINVERT     ΓöéTarget XOR Pattern                        Γöé
  16054.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16055.   ΓöéROP_DSTINVERT     ΓöéNOT (Target)                              Γöé
  16056.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16057.   ΓöéROP_ZERO          Γöé0                                         Γöé
  16058.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16059.   ΓöéROP_ONE           Γöé1                                         Γöé
  16060.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16061.   ΓöéROP_GRAY          ΓöéGray pattern background                   Γöé
  16062.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16063.  
  16064.  ROP_SRCCOPY is the most often used value. It simply copies the bit map to the 
  16065.  target presentation space without performing any color mixing. Because most of 
  16066.  the remaining mixes involve some degree of color mixing, they result in an 
  16067.  image that is quite different from the original. 
  16068.  
  16069.  
  16070. ΓòÉΓòÉΓòÉ 6.1.2.8. Converting between Monochrome and Color Data Bit Maps ΓòÉΓòÉΓòÉ
  16071.  
  16072. It is possible to copy a monochrome bit map to a color bit map or device, and 
  16073. to copy a color bit map to a monochrome bit map or device. PM handles these 
  16074. conversions automatically according to the following rules: 
  16075.  
  16076.      If you are copying a monochrome bit map to a color bit map or to a color 
  16077.       or monochrome device surface, a source setting of 1 adopts the current 
  16078.       image-foreground color of the target presentation space, and a source 
  16079.       setting of 0 adopts the current image-background color of the target 
  16080.       presentation space. For example, if the image foreground color is blue 
  16081.       and the image background color is yellow in the target presentation 
  16082.       space, a monochrome bit map is converted to a blue foreground on a yellow 
  16083.       background. 
  16084.  
  16085.      If you are copying from a monochrome pattern to a color bit map or 
  16086.       device, a source setting of 1 adopts the current area-foreground color of 
  16087.       the target device and a source setting of 0 adopts the current 
  16088.       area-background color of the target device. Note that if image bundle 
  16089.       attributes do not exist for the source bit map, as is the case when using 
  16090.       GpiWCBitBlt (which uses a bit map handle as the source), then zero source 
  16091.       pixels adopt the image background color and nonzero source pixels adopt 
  16092.       the image-foreground color of the presentation space. 
  16093.  
  16094.      If you are copying a color bit map to a monochrome bit map or device, 
  16095.       those pels that have the same color as the current image-background color 
  16096.       in the source presentation space adopt the image background color of the 
  16097.       target presentation space. For example, if the current image-background 
  16098.       color in the source presentation space is blue, all blue pels in the bit 
  16099.       map take on the color of the current image background in the target 
  16100.       presentation space. 
  16101.  
  16102.       All other pels in the color bit map adopt the current image foreground 
  16103.       color of the target presentation space. 
  16104.  
  16105.  
  16106. ΓòÉΓòÉΓòÉ 6.1.2.9. Manipulating Single Pels ΓòÉΓòÉΓòÉ
  16107.  
  16108. You can manipulate single pels in a bit map by using GpiSetPel and GpiQueryPel. 
  16109. GpiSetPel sets the pel at the specified point (in world coordinates) to the 
  16110. current line color. This function is independent of the current drawing mode, 
  16111. and its effect is immediate. It is, however, a device-dependent function. The 
  16112. CAPS_RASTER_CAPS option of DevQueryCaps indicates if GpiSetPel is supported on 
  16113. the current device. 
  16114.  
  16115.  
  16116. ΓòÉΓòÉΓòÉ 6.1.2.10. Copying Images from a Display into a Bit Map ΓòÉΓòÉΓòÉ
  16117.  
  16118. An application can copy an image from a raster display screen to a bit map by 
  16119. calling GpiBitBlt or GpiWCBitBlt. Before copying the bit map, the application 
  16120. must call DevOpenDC to create a memory device context. This device context 
  16121. allows an application to treat a bit map in memory as though it were a 
  16122. device-the application can copy color information from pels on the display to 
  16123. the bit map. 
  16124.  
  16125. Once an application creates a memory device context, associates it with a 
  16126. presentation space, and selects a bit map into the presentation space, the 
  16127. application can use the presentation-space handle as the first argument to 
  16128. GpiBitBlt or GpiWCBitBlt. If the application will be drawing the image on 
  16129. devices with different aspect ratios, the application should use GpiWCBitBlt to 
  16130. preserve the original dimensions of the bit map. 
  16131.  
  16132.  
  16133. ΓòÉΓòÉΓòÉ 6.1.2.11. Saving a Bit Map ΓòÉΓòÉΓòÉ
  16134.  
  16135. You have two ways to save a bit map that has been created by an application: 
  16136.  
  16137.      Store the bit map in a metafile, by calling GpiWCBitBlt. 
  16138.  
  16139.       Metafiles are covered in detail later. 
  16140.  
  16141.      Use the IBM OS/2 file-handling functions, in conjunction with 
  16142.       GpiQueryBitmapBits and GpiSetBitmapBits. 
  16143.  
  16144.       An application can save a bit map in a file by calling 
  16145.       GpiQueryBitmapBits, DosOpen, DosWrite, and DosClose. 
  16146.  
  16147.  GpiQueryBitmapBits copies bit-map data from a memory device context (that has 
  16148.  a standard-format bit map selected into it) to a buffer. The bit map you copy 
  16149.  can be newly created or have been loaded from a resource file. 
  16150.  
  16151.  You must supply the address in application storage of a bit-map information 
  16152.  table. The bit-map information table has the same structure as the bit map 
  16153.  information header, except for an additional entry, the colors field. As input 
  16154.  to GpiQueryBitmapBits, you supply a bit-count value and a plane value. These 
  16155.  must both be standard bit-map format values, so the plane value is always 1, 
  16156.  and the bit-count value is 1, 4, 8, or 24. If any conversion of the bit-map 
  16157.  data is necessary, it is done automatically. You also must provide the address 
  16158.  of the application storage into which the bit-map data is to be loaded. You 
  16159.  probably will need to find out how large the bit map is before you can do 
  16160.  this. GpiQueryBitmapParameters returns the width, height, plane count, and bit 
  16161.  count of a named bit map. 
  16162.  
  16163.  You also must supply the size of the fixed portion of the header (as well as 
  16164.  bit count, and so on). Nonstandard formats supported by the device that owns 
  16165.  the bit map will also be valid for GpiQueryBitmapBits. 
  16166.  
  16167.  You must ensure that you allocate sufficient storage at the end of the bit map 
  16168.  information table for the returned color table which, if the number of planes 
  16169.  is 1, will have 2n entries, where n is the number of bits per pel. 
  16170.  
  16171.  On return from GpiQueryBitmapBits, the system supplies the width, height, and 
  16172.  bit-map color table in the bit-map information table. You can retrieve a part 
  16173.  of a bit map by specifying the number of the scan line from which the transfer 
  16174.  is to start, and the number of scan lines you want. 
  16175.  
  16176.  When you have copied a bit map into application storage, you can save the bit 
  16177.  map externally, and reload it later, by using OS/2 file-handling functions. 
  16178.  After the application creates a file by calling DosOpen, it can call DosWrite 
  16179.  to copy the buffer containing the bit-map bits into the file. The application 
  16180.  then closes the file by calling DosClose. 
  16181.  
  16182.  If an application needs to use a bit map it has stored on disk, it can copy 
  16183.  the file's contents into a buffer by calling DosRead, and then copy 
  16184.  information about the image to the bit map by calling GpiSetBitmapBits. The 
  16185.  application must select the bit map into a memory device context before it 
  16186.  sets the bits. As with GpiQueryBitmapBits, you can transfer a part of the bit 
  16187.  map rather than the whole. GpiSetBitmapBits can be used to transfer 
  16188.  standard-format bit maps only, and only to a bit map selected into a memory 
  16189.  device context. If necessary, bit-map data is automatically converted from one 
  16190.  standard format to another. Nonstandard formats supported by the device owning 
  16191.  the bit map will also be valid for GpiSetBitmapBits. 
  16192.  
  16193.  If an application creates bit maps another application might use, it should 
  16194.  create them by using the standard IBM OS/2 bit-map file format. 
  16195.  
  16196.  
  16197. ΓòÉΓòÉΓòÉ 6.1.2.12. Deleting a Bit Map ΓòÉΓòÉΓòÉ
  16198.  
  16199. It is good practice always to delete a bit map from memory when you have 
  16200. finished using it. To delete a bit map, use GpiDeleteBitmap. If you have loaded 
  16201. a bit map from a resource file, GpiDeleteBitmap deletes only its memory 
  16202. version. If the bit map has not been deleted when the owning process ends, it 
  16203. is deleted automatically by the system. 
  16204.  
  16205.  
  16206. ΓòÉΓòÉΓòÉ 6.1.2.13. Making Bit Maps Available to Other Processes ΓòÉΓòÉΓòÉ
  16207.  
  16208. When an application creates a bit map or loads one from a resource file, it can 
  16209. make the bit map available to other processes by placing the bit-map handle in 
  16210. the clipboard. 
  16211.  
  16212.  
  16213. ΓòÉΓòÉΓòÉ 6.2. Using Bit Maps ΓòÉΓòÉΓòÉ
  16214.  
  16215. An application can use bit-map functions to: 
  16216.  
  16217.      Copy an image from a raster device (such as a display screen) to a bit 
  16218.       map 
  16219.      Copy an image from a raster device (such as a display screen) to the same 
  16220.       device 
  16221.      Copy an image from a bit map to a raster device 
  16222.      Copy an image from a bit map to another bit map 
  16223.      Copy an image from application memory to a bit map 
  16224.      Copy an image from application memory to a raster device 
  16225.      Scale bit-map images 
  16226.      Create custom fill patterns for area primitives and paths 
  16227.      Load a bit map created with the Icon Editor 
  16228.      Draw bit-map images 
  16229.      Store bit maps in a metafile or application memory 
  16230.  
  16231.  
  16232. ΓòÉΓòÉΓòÉ 6.2.1. Copying an Image from a Display Screen to a Bit Map ΓòÉΓòÉΓòÉ
  16233.  
  16234. To copy an image from a display screen to a bit map: 
  16235.  
  16236.    1. Associate the memory device context with a presentation space. 
  16237.  
  16238.    2. Create a bit map. 
  16239.  
  16240.    3. Select the bit map into the memory device context by calling 
  16241.       GpiSetBitmap. 
  16242.  
  16243.    4. Determine the location (in device coordinates) of the image. 
  16244.  
  16245.    5. Call GpiBitBlt and copy the image to the bit map. 
  16246.  
  16247.  The following figure demonstrates these steps. 
  16248.  
  16249.  
  16250.       HDC hdcMem;
  16251.       PSZ pszData[4] = { "Display", NULL, NULL, NULL };
  16252.       HPS hpsMem, hps;
  16253.       HAB hab;
  16254.       SIZEL sizlPage = {0, 0};
  16255.       BITMAPINFOHEADER2 bmp;
  16256.       PBITMAPINFO2 pbmi;
  16257.       HBITMAP hbm;
  16258.       SHORT sWidth = 128, sHeight = 128;
  16259.       POINTL aptl[3];
  16260.       LONG alData[2];
  16261.  
  16262.       /*
  16263.        * Create the memory device context and presentation space so they
  16264.        * are compatible with the screen device context and presentation space.
  16265.        */
  16266.  
  16267.       hdcMem = DevOpenDC(hab, OD_MEMORY, "*", 4,
  16268.           (PDEVOPENDATA) pszData, NULLHANDLE);
  16269.  
  16270.       hpsMem = GpiCreatePS(hab, hdcMem, &sizlPage,
  16271.           PU_PELS | GPIA_ASSOC | GPIT_MICRO);
  16272.  
  16273.       /* Determine the device's plane/bit-count format. */
  16274.  
  16275.       GpiQueryDeviceBitmapFormats(hpsMem, 2, alData);
  16276.  
  16277.       /*
  16278.        * Load the BITMAPINFOHEADER2 and BITMAPINFO2 structures. The sWidth and
  16279.        * sHeight fields specify the width and height of the destination
  16280.        * rectangle.
  16281.        */
  16282.  
  16283.       bmp.cbFix = (ULONG) sizeof(BITMAPINFOHEADER2);
  16284.       bmp.cx = sWidth;
  16285.       bmp.cy = sHeight;
  16286.       bmp.cPlanes = alData[0];
  16287.       bmp.cBitCount = alData[1];
  16288.       bmp.ulCompression = BCA_UNCOMP;
  16289.       bmp.cbImage = (((sWidth *
  16290.           (1 << bmp.cPlanes) * (1 << bmp.cBitCount)) + 31) / 32) * sHeight;
  16291.       bmp.cxResolution = 70;
  16292.       bmp.cyResolution = 70;
  16293.       bmp.cclrUsed = 2;
  16294.       bmp.cclrImportant = 0;
  16295.       bmp.usUnits = BRU_METRIC;
  16296.       bmp.usReserved = 0;
  16297.       bmp.usRecording = BRA_BOTTOMUP;
  16298.       bmp.usRendering = BRH_NOTHALFTONED;
  16299.       bmp.cSize1 = 0;
  16300.       bmp.cSize2 = 0;
  16301.       bmp.ulColorEncoding = BCE_RGB;
  16302.       bmp.ulIdentifier = 0;
  16303.  
  16304.  
  16305.       DosAllocMem((PPVOID)&pbmi, sizeof(BITMAPINFO2) +
  16306.           (sizeof(RGB2) * (1 << bmp.cPlanes) * (1 << bmp.cBitCount)),
  16307.           PAG_COMMIT | PAG_READ | PAG_WRITE);
  16308.  
  16309.       pbmi->cbFix = bmp.cbFix;
  16310.       pbmi->cx = bmp.cx;
  16311.       pbmi->cy = bmp.cy;
  16312.       pbmi->cPlanes = bmp.cPlanes;
  16313.       pbmi->cBitCount = bmp.cBitCount;
  16314.       pbmi->ulCompression = BCA_UNCOMP;
  16315.       pbmi->cbImage = ((sWidth+31)/32) * sHeight;
  16316.       pbmi->cxResolution = 70;
  16317.       pbmi->cyResolution = 70;
  16318.       pbmi->cclrUsed = 2;
  16319.       pbmi->cclrImportant = 0;
  16320.       pbmi->usUnits = BRU_METRIC;
  16321.       pbmi->usReserved = 0;
  16322.       pbmi->usRecording = BRA_BOTTOMUP;
  16323.       pbmi->usRendering = BRH_NOTHALFTONED;
  16324.       pbmi->cSize1 = 0;
  16325.       pbmi->cSize2 = 0;
  16326.       pbmi->ulColorEncoding = BCE_RGB;
  16327.       pbmi->ulIdentifier = 0;
  16328.  
  16329.       /* Create a bit map that is compatible with the display.            */
  16330.  
  16331.       hbm = GpiCreateBitmap(hpsMem, &bmp, FALSE, NULL, pbmi);
  16332.  
  16333.       /* Associate the bit map and the memory presentation space.         */
  16334.  
  16335.       GpiSetBitmap(hpsMem, hbm);
  16336.  
  16337.       /* Copy the screen to the bit map.                                  */
  16338.  
  16339.       aptl[0].x = 0;       /* Lower-left corner of destination rectangle  */
  16340.       aptl[0].y = 0;       /* Lower-left corner of destination rectangle  */
  16341.       aptl[1].x = sWidth;  /* Upper-right corner of destination rectangle */
  16342.       aptl[1].y = sHeight; /* Upper-right corner of destination rectangle */
  16343.       aptl[2].x = 0;       /* Lower-left corner of source rectangle       */
  16344.       aptl[2].y = 0;       /* Lower-left corner of source rectangle       */
  16345.  
  16346.       hps = WinGetScreenPS(HWND_DESKTOP);
  16347.  
  16348.       GpiBitBlt(hpsMem, hps,
  16349.           sizeof(aptl) / sizeof(POINTL), /* Number of points in aptl      */
  16350.           aptl, ROP_SRCCOPY, BBO_IGNORE);
  16351.  
  16352.       WinReleasePS(hps);
  16353.  
  16354.  
  16355. ΓòÉΓòÉΓòÉ 6.2.2. Scaling and Drawing a Bit-Map Image ΓòÉΓòÉΓòÉ
  16356.  
  16357. You can scale a bit map by calling GpiBitBlt or GpiWCBitBlt and altering the 
  16358. dimensions of the target rectangle. The following figure shows how to shrink 
  16359. the screen copied in the first example to half its original size, and then 
  16360. redraw it by calling GpiBitBlt. 
  16361.  
  16362.     POINTL aptl[3];
  16363.     HPS hpsMem, hps;
  16364.     HWND hwnd;
  16365.     SHORT sWidth = 128, sHeight = 128;
  16366.     /* Target-rectangle dimensions (in device coordinates)              */
  16367.     aptl[0].x = 0;
  16368.     aptl[0].y = 0;
  16369.     aptl[1].x = sWidth / 2;
  16370.     aptl[1].y = sHeight / 2;
  16371.  
  16372.     /* Source-rectangle dimensions (in device coordinates)              */
  16373.     aptl[2].x = 0;
  16374.     aptl[2].y = 0;
  16375.     aptl[3].x = sWidth;
  16376.     aptl[3].y = sHeight;
  16377.  
  16378.     hps = WinGetPS(hwnd);
  16379.  
  16380.     GpiBitBlt(hps, hpsMem,
  16381.         sizeof(aptl) / sizeof(POINTL),      /* Number of points in aptl */
  16382.         aptl, ROP_SRCCOPY, BBO_IGNORE);
  16383.  
  16384.     WinReleasePS(hps);
  16385.  
  16386.  
  16387. ΓòÉΓòÉΓòÉ 6.2.3. Creating a Custom Fill Pattern ΓòÉΓòÉΓòÉ
  16388.  
  16389. To create a custom fill pattern that the operating system will use to fill area 
  16390. primitives and paths: 
  16391.  
  16392.    1. Set an array of bits for a bit map that measures 8-bits-by-8-bits 
  16393.       (remember that the operating system pads the bit-map bits on a ULONG 
  16394.       (32-bit) boundary). 
  16395.  
  16396.    2. Create a bit map in a screen presentation space by calling 
  16397.       GpiCreateBitmap and passing it the address of the array of bits from Step 
  16398.       1. 
  16399.  
  16400.    3. Assign a local identifier (lcid) to the bit map by calling 
  16401.       GpiSetBitmapId. 
  16402.  
  16403.    4. Set the attribute of the pattern set in the AREABUNDLE structure by 
  16404.       calling GpiSetPattern. 
  16405.  
  16406.  The following figure shows how to create the pattern. 
  16407.  
  16408.       /* Define an array of bytes;  this array creates a grid pattern. */
  16409.  
  16410.       BYTE abPattern5[] = {
  16411.           0xFF, 0xFF, 0x00, 0x00,
  16412.           0x80, 0x00, 0x00, 0x00,
  16413.           0x80, 0x00, 0x00, 0x00,
  16414.           0x80, 0x00, 0x00, 0x00,
  16415.           0x80, 0x00, 0x00, 0x00,
  16416.           0x80, 0x00, 0x00, 0x00,
  16417.           0x80, 0x00, 0x00, 0x00,
  16418.           0x80, 0x00, 0x00, 0x00,
  16419.           0x80, 0x00, 0x00, 0x00,
  16420.           0x80, 0x00, 0x00, 0x00,
  16421.           0x80, 0x00, 0x00, 0x00,
  16422.           0x80, 0x00, 0x00, 0x00,
  16423.           0x80, 0x00, 0x00, 0x00,
  16424.           0x80, 0x00, 0x00, 0x00,
  16425.           0x80, 0x00, 0x00, 0x00,
  16426.           0x80, 0x00, 0x00, 0x00 };
  16427.  
  16428.           LONG lcidCustom = 1;
  16429.       HPS hps;
  16430.       PBITMAPINFO2 pbmi;
  16431.       BITMAPINFOHEADER2 bmp;
  16432.       HBITMAP hbm;
  16433.       PRGB2 prgb2;
  16434.  
  16435.       /* Create the bit map, passing the address of the array of bytes. */
  16436.       hbm = GpiCreateBitmap(hps, &bmp, CBM_INIT, (PBYTE) abPattern5, pbmi);
  16437.  
  16438.       /* Assign a local identifier to the bit map.                      */
  16439.       GpiSetBitmapId(hps, hbm, lcidCustom);
  16440.  
  16441.       /* Set the pattern-set attribute in the AREABUNDLE structure.     */
  16442.       GpiSetPatternSet(hps, lcidCustom);
  16443.  
  16444.  
  16445. ΓòÉΓòÉΓòÉ 6.2.4. Loading a Bit Map from a File ΓòÉΓòÉΓòÉ
  16446.  
  16447. You can load a bit map from a file if the format of the file corresponds to the 
  16448. standard IBM OS/2 bit-map file format. (Any bit map that you create with the 
  16449. Icon Editor is automatically stored in this format.) To load a bit map: 
  16450.  
  16451.    1. Copy the bit-map file to the directory that contains your application's 
  16452.       resource file and source code. 
  16453.  
  16454.    2. Create an entry in your application's resource file, assigning a unique 
  16455.       integer identifier to the bit map. 
  16456.  
  16457.    3. Call GpiLoadBitmap in your application's source code, passing it the 
  16458.       integer identifier that you assigned to the bit map in your application's 
  16459.       resource file. 
  16460.  
  16461.  You can actually include your bit map in the application's .EXE file or in a 
  16462.  separate resource file. If the bit map is included in a separate resource 
  16463.  file, you must specify both the resource ID and the ID of the bit map within 
  16464.  the resource file on GpiLoadBitmap. If bit map is to be included in the 
  16465.  application's .EXE file, the resource ID is specified as NULL and only the ID 
  16466.  of the bit map is required by GpiLoadBitmap. 
  16467.  
  16468.  Following is an example of code from an application's resource file that 
  16469.  assigns the integer value 200 to a bit-map file called CUSTOM.BMP. 
  16470.  
  16471.       BITMAP  200 CUSTOM.BMP
  16472.  
  16473.  The following figure is an example of code from the application that shows how 
  16474.  to retrieve a bit-map handle by calling GpiLoadBitmap, use the handle to tag 
  16475.  the bit map by calling GpiSetBitmapId, and then use the local identifier 
  16476.  supplied by GpiSetBitmapId to set the bit map as the current fill pattern, 
  16477.  using GpiSetPatternSet. 
  16478.  
  16479.       HPS hps;
  16480.       HBITMAP hbm;
  16481.       LONG lcidCustom = 1;
  16482.       POINTL ptl;
  16483.  
  16484.       hbm = GpiLoadBitmap(hps,  /* Presentation-space handle        */
  16485.           NULLHANDLE,           /* Resource in application's module */
  16486.           IDB_PATTERN,          /* Bit-map ID                       */
  16487.           16,                   /* Bit-map width                    */
  16488.           16);                  /* Bit-map height                   */
  16489.  
  16490.       /* Assign a local identifier to the bit map.                  */
  16491.       GpiSetBitmapId(hps, hbm, lcidCustom);
  16492.  
  16493.       /* Set the pattern-set attribute in the AREABUNDLE structure. */
  16494.       GpiSetPatternSet(hps, lcidCustom);
  16495.  
  16496.       ptl.x = 100;
  16497.       ptl.y = 100;
  16498.       GpiMove(hps, &ptl);
  16499.       ptl.x = 200;
  16500.       ptl.y = 200;
  16501.       GpiBox(hps, DRO_OUTLINEFILL, &ptl, 0, 0);
  16502.  
  16503.  
  16504. ΓòÉΓòÉΓòÉ 6.2.5. Storing a Bit Map in a Metafile ΓòÉΓòÉΓòÉ
  16505.  
  16506. You can draw bit maps in a metafile or segment by calling GpiWCBitBlt. The 
  16507. operating system converts this function to a drawing order. The 
  16508. target-rectangle dimensions that you pass to GpiWCBitBlt are in world 
  16509. coordinates, not device coordinates. The following figure shows how to draw a 
  16510. bit map in a metafile, and then play the metafile. 
  16511.  
  16512.     DEVOPENSTRUC dop;
  16513.     HDC hdcMeta;
  16514.     HPS hps, hpsMeta;
  16515.     SIZEL sizlPage;
  16516.     HMF hmf;
  16517.     HBITMAP hbm;
  16518.     HAB hab;
  16519.     HWND hwnd;
  16520.     POINTL aptl[4];
  16521.  
  16522.     dop.pszLogAddress = NULL;
  16523.     dop.pszDriverName = "DISPLAY";
  16524.     dop.pdriv = NULL;
  16525.     dop.pszDataType = NULL;
  16526.  
  16527.     hdcMeta = DevOpenDC(hab, OD_METAFILE, "*", 4L,
  16528.                   (PDEVOPENDATA) &dop, NULLHANDLE);
  16529.     hpsMeta = GpiCreatePS(hab, hdcMeta, &sizlPage, PU_PELS | GPIA_ASSOC);
  16530.  
  16531.     hbm = GpiLoadBitmap(hpsMeta, NULLHANDLE, IDB_PATTERN, 16L, 16L);
  16532.  
  16533.     aptl[0].x = aptl[0].y = 0;  /* Lower-left corner target rectangle        */
  16534.     aptl[1].x = 150;            /* X coordinate upper-right target rectangle */
  16535.     aptl[1].y = 300;            /* Y coordinate upper-right target rectangle */
  16536.     aptl[2].x = aptl[2].y = 0;  /* Lower-left corner source rectangle        */
  16537.     aptl[3].x = aptl[3].y = 16; /* Upper-right corner source rectangle       */
  16538.  
  16539.     GpiWCBitBlt(hpsMeta, hbm, 4L, aptl, ROP_SRCCOPY, BBO_IGNORE);
  16540.  
  16541.     GpiAssociate(hpsMeta, NULLHANDLE);
  16542.     hmf = DevCloseDC(hdcMeta);
  16543.  
  16544.     hps = WinGetPS(hwnd);
  16545.  
  16546.     GpiPlayMetaFile(hps, hmf, 0L, NULL, NULL, 0L, NULL);
  16547.  
  16548.     WinReleasePS(hps);
  16549.  
  16550. You can also store a bit map in a metafile by calling GpiBitBlt. In this case, 
  16551. however, the bit map will be stored inside an escape order. 
  16552.  
  16553.  
  16554. ΓòÉΓòÉΓòÉ 7. Creating and Drawing Retained Graphics ΓòÉΓòÉΓòÉ
  16555.  
  16556. There are two types of graphics output in the OS/2 operating system: 
  16557.  
  16558.      Retained graphics, which are stored in segments and can be redrawn or 
  16559.       edited when necessary 
  16560.  
  16561.      Nonretained graphics, which are drawn immediately but not stored and 
  16562.       therefore cannot be used again without repeating the graphics functions 
  16563.       needed to re-create the picture 
  16564.  
  16565.  This chapter describes the advantages of using retained graphics and provides 
  16566.  information on creating and drawing retained graphics. 
  16567.  
  16568.  The following topics are related to the information in this chapter: 
  16569.  
  16570.      Presentation spaces and device contexts 
  16571.      Coordinate spaces and transformations 
  16572.      Editing retained graphics and graphics segments 
  16573.  
  16574.  
  16575. ΓòÉΓòÉΓòÉ 7.1. About Creating and Drawing Retained Graphics ΓòÉΓòÉΓòÉ
  16576.  
  16577. An application draws by calling graphics functions. Applications store retained 
  16578. graphics in segments, which can be edited. This means that the retained image 
  16579. can be modified without having to re-create the unmodified portion using 
  16580. multiple GPI functions. 
  16581.  
  16582. When using nonretained graphics, the output appears on the output device (for 
  16583. example, a window) immediately. However, if part of the picture is erased or 
  16584. must be repeated, the application must call the same graphics functions a 
  16585. second, or even a third time. 
  16586.  
  16587. There are many other advantages to using retained graphics, including: 
  16588.  
  16589.      Convenience-An application can draw retained graphics with a single 
  16590.       function that accesses the storage area containing all the individual 
  16591.       functions necessary for the object. 
  16592.  
  16593.      Flexibility-An application can redraw graphics retained in the segment 
  16594.       store to any number of device contexts. 
  16595.  
  16596.      Editing-An application can modify an object without having to call all 
  16597.       the functions necessary to re-create the picture. Individual segments can 
  16598.       be moved, scaled, or rotated; then, redrawn. 
  16599.  
  16600.       Editing the graphics within a segment is described in Editing Retained 
  16601.       Graphics and Graphics Segments. 
  16602.  
  16603.      Power-An application can access the more powerful and useful graphics 
  16604.       functions only when graphics are stored in segments. 
  16605.  
  16606.      Organization-An application can use segments to store the components that 
  16607.       will be assembled into the final picture. 
  16608.  
  16609.  Primarily, a graphics segment is a means of grouping and storing graphics 
  16610.  primitives and their attributes. Although the graphics within a segment 
  16611.  usually are related in some way, they do not have to be. A segment might 
  16612.  contain a number of unrelated GPI functions that you want to keep and execute 
  16613.  at specific times. 
  16614.  
  16615.  Retained graphics do affect application performance, however, in that a normal 
  16616.  presentation space requires 114KB of main memory more than a micro 
  16617.  presentation space, and using the drawing mode DM_RETAIN adds an additional 
  16618.  46KB. 
  16619.  
  16620.  Note:  Your application can have up to 16KB (16378) segments in the segment 
  16621.         store of a single presentation space. The size of an individual segment 
  16622.         is limited only by the amount of storage available to you. 
  16623.  
  16624.  Do not confuse a graphics segment with a memory segment. 
  16625.  
  16626.  
  16627. ΓòÉΓòÉΓòÉ 7.1.1. Drawing Modes ΓòÉΓòÉΓòÉ
  16628.  
  16629. When you create a presentation space, the drawing mode is set to draw. Your 
  16630. application can change this mode using GpiSetDrawingMode. The two additional 
  16631. drawing modes provided by the PM are retain (DM_RETAIN) and draw-and-retain 
  16632. (DM_DRAWANDRETAIN). Your application can determine which drawing mode is set by 
  16633. using GpiQueryDrawingMode. 
  16634.  
  16635. The drawing mode that you select becomes current for the presentation space, 
  16636. and it can be changed any number of times. Select the appropriate drawing mode 
  16637. before creating a segment. The drawing mode affects the segment type. 
  16638.  
  16639.  
  16640. ΓòÉΓòÉΓòÉ 7.1.1.1. Draw Mode ΓòÉΓòÉΓòÉ
  16641.  
  16642. In draw mode, graphics output is provided immediately to the currently 
  16643. associated device and is not retained in a segment store.  When the graphics 
  16644. have been drawn, they cannot be used again unless they are re-created. For 
  16645. example, when a window containing draw mode graphics is moved or sized, the 
  16646. graphics have to be re-created by the application. 
  16647.  
  16648. Draw mode graphics are suitable if an application is creating fairly simple 
  16649. graphics quickly or is maintaining its own graphics database.  In the latter 
  16650. case, there is nothing to gain by retaining graphics. 
  16651.  
  16652. A segment created when the drawing mode is DM_DRAW, is called a nonretained 
  16653. segment. While it might sound contradictory, nonretained segments have certain 
  16654. advantages that are described in Nonretained Graphic Segments. 
  16655.  
  16656.  
  16657. ΓòÉΓòÉΓòÉ 7.1.1.2. Retain Mode ΓòÉΓòÉΓòÉ
  16658.  
  16659. In retain mode, graphics are retained in the segment store only. They are not 
  16660. directed to the current device as they are created. 
  16661.  
  16662. In retain mode, the presentation space does not have to be associated with a 
  16663. device context when graphics are being defined. It is possible to define 
  16664. graphics and store their definitions without sending them to a display screen 
  16665. or printer. The concept of attribute currentness, however, is relevant only 
  16666. when you are drawing graphics to an output device. For example, the color or 
  16667. other attribute that is current when you define a primitive is the color in 
  16668. which the line is drawn. That color or other attribute might not be the color 
  16669. that is current when you you actually draw the primitive. This is described in 
  16670. Attribute Currentness. 
  16671.  
  16672. Many of the GPI queries that return current attribute values are invalid in 
  16673. retain mode because current attribute values have no effect when graphics are 
  16674. not sent to an output device. 
  16675.  
  16676.  
  16677. ΓòÉΓòÉΓòÉ 7.1.1.3. Draw-and-Retain Mode ΓòÉΓòÉΓòÉ
  16678.  
  16679. In draw-and-retain mode, graphics are both drawn on the current device as they 
  16680. are created and stored for later use. The GPI queries that return current 
  16681. attribute values are valid in draw-and-retain mode. 
  16682.  
  16683.  
  16684. ΓòÉΓòÉΓòÉ 7.1.2. Creating a Graphics Segment ΓòÉΓòÉΓòÉ
  16685.  
  16686. Your application signals the start of a graphics segment using GpiOpenSegment, 
  16687. which is valid only in a normal presentation space. The following figure is an 
  16688. example of two segments in a presentation space. 
  16689.  
  16690.  
  16691.                             Presentation Space
  16692.                           ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16693.                           Γöé                                     Γöé
  16694.                           Γöé   Graphics Segment 1                Γöé
  16695.                           Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  16696.                           Γöé   Γöé            Γöé                    Γöé
  16697. GpiOpenSegment (hps,1L);  Γöé   Γöé            Γöé                    Γöé
  16698. GpiSet... (hps,...);    ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ     Γöé                    Γöé
  16699. GpiLine (hps,...);      ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇ         Γöé                    Γöé
  16700. GpiCloseSegment (hps);    Γöé   Γöé            Γöé  Graphics Segment 2Γöé
  16701.                           Γöé   Γöé            Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    Γöé
  16702.                           Γöé   Γöé            Γöé  Γöé            Γöé    Γöé
  16703.                           Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé            Γöé    Γöé
  16704.                           Γöé                   Γöé            Γöé    Γöé
  16705. GpiOpenSegment (hps,2L);  Γöé                   Γöé            Γöé    Γöé
  16706. GpiSet... (hps,...);    ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇ      Γöé    Γöé
  16707. GpiLine (hps,...);      ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇ         Γöé    Γöé
  16708. GpiCloseSegment (hps);    Γöé                   Γöé            Γöé    Γöé
  16709.                           Γöé                   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ    Γöé
  16710.                           Γöé                                     Γöé
  16711.                           Γöé                                     Γöé
  16712.                           ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16713.  
  16714. Graphics Segments in a Presentation Space 
  16715.  
  16716. GpiOpenSegment accepts, as input, the presentation space handle and a long 
  16717. integer value, which names each segment. 
  16718.  
  16719. OS/2 applications identify segments with long integer values. If you want to 
  16720. refer to the segment individually in later graphics operations (for example, to 
  16721. edit the segment) the identifier you supply must be greater than 0 and unique 
  16722. within the presentation space. 
  16723.  
  16724. If you do not want to refer to the segment individually after it is created, 
  16725. you can give the segment an identifier of 0. You might do this when you are 
  16726. creating nonretained segments, for example. Any number of segments can have the 
  16727. 0 identifier. They are referred to throughout this book as zero segments. 
  16728.  
  16729. To determine which names already have been used in a presentation space, use 
  16730. GpiQuerySegmentNames. This function returns an array of segment names for all 
  16731. retained segments, excluding zero segments, within a specified name range. 
  16732.  
  16733. Segments do not have to be named in consecutive order (although it is 
  16734. recommended for organizational purposes) because the segment order can be 
  16735. changed using GpiSetSegmentPriority. 
  16736.  
  16737.  
  16738. ΓòÉΓòÉΓòÉ 7.1.3. Filling a Graphics Segment ΓòÉΓòÉΓòÉ
  16739.  
  16740. After a graphics segment is opened, the GPI functions that follow become a part 
  16741. of a retained segment and are executed every time the segment itself is drawn. 
  16742.  
  16743. The typical GPI functions that would be called are those that: 
  16744.  
  16745.      Create graphics primitives-such as lines or markers 
  16746.      Assign attributes to those primitives-such as color or line type. 
  16747.  
  16748.  However, there are a few GPI functions that you cannot call while there is an 
  16749.  open segment-for example a second GpiOpenSegment. These functions are 
  16750.  identified in GPI Function Context. 
  16751.  
  16752.  A presentation space can contain many segments. Each time you open a new 
  16753.  segment, many attributes reset themselves to default values. Therefore, the 
  16754.  current position and attribute values that apply before you call 
  16755.  GpiOpenSegment cannot be guaranteed to be in effect after you call the 
  16756.  function. Beginning each segment with a number of attribute-setting requests 
  16757.  and, possibly, with GpiSetCurrentPosition, is recommended. Your application 
  16758.  also might take advantage of GpiSetDefAttrs, for example, to minimize the 
  16759.  number of attributes that must be dealt with upon opening a new segment. 
  16760.  
  16761.  
  16762. ΓòÉΓòÉΓòÉ 7.1.4. Closing a Graphics Segment ΓòÉΓòÉΓòÉ
  16763.  
  16764. When you have finished creating a graphics segment, close it using 
  16765. GpiCloseSegment. There can be only one open segment at a time in a single 
  16766. graphics presentation space, so you must close one segment before going on to 
  16767. the next. 
  16768.  
  16769. There is some degree of clean-up processing associated with using 
  16770. GpiCloseSegment, known as close-segment processing, that can make current 
  16771. attribute values unreliable. For more information about the effects of 
  16772. GpiOpenSegment and GpiCloseSegment on current attributes, see Graphics 
  16773. Attributes. 
  16774.  
  16775.  
  16776. ΓòÉΓòÉΓòÉ 7.1.5. Segment Attributes ΓòÉΓòÉΓòÉ
  16777.  
  16778. Each segment, whether retained or nonretained, has a number of characteristics, 
  16779. called attributes that you can set in accordance with your application's 
  16780. requirements. The attributes of a segment are quite different from those of a 
  16781. graphics primitive in that segment attributes have ON and OFF settings. There 
  16782. are seven segment attributes. However, only two are described in this chapter: 
  16783. chained (ATTR_CHAINED) and fast-chained (ATTR_FASTCHAIN). 
  16784.  
  16785. When an application creates a segment in a presentation space, the operating 
  16786. system assigns initial attributes to it. By default, five of the attributes 
  16787. will be set ON and two will be set OFF. The chained and fast-chained attributes 
  16788. are set ON. Your application can alter these values using 
  16789. GpiSetInitialSegmentAttrs or retrieve the values of the current initial 
  16790. attributes using GpiQueryInitialSegmentAttrs. 
  16791.  
  16792. The chain attribute tells the operating system to add each new segment in your 
  16793. application's presentation space to the segment chain. The fast-chained 
  16794. attribute tells the operating system to prevent the resetting of the primitive 
  16795. attributes to their default values before drawing the segment chain. 
  16796.  
  16797.  
  16798. ΓòÉΓòÉΓòÉ 7.1.5.1. Chained Attribute ΓòÉΓòÉΓòÉ
  16799.  
  16800. When you define a segment with the chained attribute switched ON, that segment 
  16801. becomes a part of the segment chain and is called a chained segment. The 
  16802. segment chain is composed of all chained segments defined in a single 
  16803. presentation space. Segments can be chained together so that they can be drawn 
  16804. as a group. By default, each new segment is chained to the previous segment. 
  16805.  
  16806. There can be only one segment chain at a time in a single presentation space, 
  16807. and all chained segments are chained to each other in the order in which you 
  16808. created them. Zero segments must have the chained attribute. 
  16809.  
  16810. Usually, a logical relationship exists between the segments in a segment chain, 
  16811. although this is not a requirement. The whole segment chain can be drawn using 
  16812. GpiDrawChain. Each segment in the chain is called a root segment. Root segments 
  16813. are affected by those GPI functions that act on the segment chain, but they 
  16814. also can be manipulated independently of the chain. 
  16815.  
  16816. Segments that are defined with the chained attribute switched OFF are called 
  16817. unchained segments. Your application can switch off the chain attribute using 
  16818. GpiSetInitialSegmentAttrs (hps, ATTR_CHAIN, ATTR_OFF). Unchained segments 
  16819. always are retained when they are created, regardless of the current 
  16820. drawing-mode parameter. An unchained segment must have a unique name. 
  16821.  
  16822. There are a number of reasons for defining a segment as unchained. For example, 
  16823. a particular segment might not belong to the picture that is defined by the 
  16824. segment chain. You also are likely to define as unchained any segment that 
  16825. belongs to the picture but that has no single, fixed place in the segment 
  16826. chain. A car wheel, for example, could be defined once but drawn four times in 
  16827. a picture of a car. It would have no single, fixed place in the segment chain, 
  16828. but would be included four times in the picture by being called from one or 
  16829. more root segments. 
  16830.  
  16831. A segment is called from another segment by including GpiCallSegmentMatrix in 
  16832. the calling segment. A segment and the segments it calls logically are one 
  16833. object. An important point about called segments is that they assume the 
  16834. primitive attribute settings of the calling segment. Of course, you can change 
  16835. the attribute settings within the called segment if the inherited values are 
  16836. inappropriate. 
  16837.  
  16838. A closed, unchained segment can be called from any other segment. Chained 
  16839. segments, however, cannot be called from other segments. 
  16840.  
  16841.  
  16842. ΓòÉΓòÉΓòÉ 7.1.5.2. Fast-Chained Attribute ΓòÉΓòÉΓòÉ
  16843.  
  16844. The fast-chained attribute applies only to chained segments. It prevents 
  16845. primitive attributes from being reset to their default values at the beginning 
  16846. of the segment, an aid to performance. There is unnecessary overhead in 
  16847. resetting attributes to their defaults if either of the following is true: 
  16848.  
  16849.      You are going to change the default values of the attributes at the start 
  16850.       of the segment. 
  16851.  
  16852.      You know that attributes have not been altered previously from their 
  16853.       default values. 
  16854.  
  16855.  The fast-chained attribute is switched ON by default, and you should leave it 
  16856.  on unless you specifically want attributes to be set to their default values. 
  16857.  To turn off the fast-chained attribute, call GpiSetInitialSegmentAttrs (hps, 
  16858.  ATTR_FASTCHAIN, ATTR_OFF). 
  16859.  
  16860.  
  16861. ΓòÉΓòÉΓòÉ 7.1.6. Actual Drawing Mode ΓòÉΓòÉΓòÉ
  16862.  
  16863. The drawing mode, as defined by GpiSetDrawingMode, works in conjunction with 
  16864. the segment status to produce the actual drawing mode. It is the actual drawing 
  16865. mode that determines whether graphics are: 
  16866.  
  16867.      Drawn directly to the output device 
  16868.      Retained in the segment store 
  16869.      Both drawn and retained 
  16870.  
  16871.  The actual drawing mode is summarized in the following table. 
  16872.  
  16873.  The Current Drawing Mode 
  16874.  
  16875.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16876.   Γöé                 Γöé               ΓöéContext       Γöé              Γöé
  16877.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16878.   ΓöéGpiSetDrawingModeΓöéChained SegmentΓöéUnchained     ΓöéOutside of anyΓöé
  16879.   Γöéparameter        Γöé               ΓöéSegment       Γöésegment       Γöé
  16880.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16881.   ΓöéDM_DRAWANDRETAIN Γöédraw-and-retainΓöéretain        Γöédraw          Γöé
  16882.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16883.   ΓöéDM_RETAIN        Γöéretain         Γöéretain        Γöédraw          Γöé
  16884.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16885.   ΓöéDM_DRAW          Γöédraw           Γöéretain        Γöédraw          Γöé
  16886.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16887.  
  16888.  As you can see in the preceding table, graphics within chained segments always 
  16889.  conform to the current drawing mode parameter. That is, they are drawn in 
  16890.  DM_DRAW mode, retained in DM_RETAIN mode, and both drawn and retained in 
  16891.  DM_DRAWANDRETAIN mode. 
  16892.  
  16893.  Graphics in unchained segments always are retained, regardless of the current 
  16894.  drawing-mode parameter. You cannot retain segments created when the current 
  16895.  drawing-mode parameter is DM_DRAW, unless they are unchained segments. 
  16896.  
  16897.  Similarly, graphics outside segments always are drawn without being retained. 
  16898.  You cannot retain primitives outside segments, regardless of the current 
  16899.  drawing mode. 
  16900.  
  16901.  Note:  A micro presentation space has no segment store. Therefore, you cannot 
  16902.  create graphics segments in a micro presentation space, nor can you change the 
  16903.  drawing mode, which is always DM_DRAW. 
  16904.  
  16905.  
  16906. ΓòÉΓòÉΓòÉ 7.1.7. Drawing a Retained Graphic ΓòÉΓòÉΓòÉ
  16907.  
  16908. Your application can draw a complete segment chain with GpiDrawChain. The 
  16909. segments are drawn in the order in which they appear in the chain. For example, 
  16910. the segments in the following figure are drawn in the following order: 
  16911.  
  16912.    1. Root segment 1 
  16913.    2. Unchained segment A 
  16914.    3. Unchained segment B 
  16915.    4. Root segment 2 
  16916.    5. Unchained segment B 
  16917.    6. Root segment 3. 
  16918.  
  16919.  Chained and Called Segments 
  16920.  
  16921.  Segment A is called by root segment 1, and segment B is called by both segment 
  16922.  A and root segment 2. Segment C calls segment D. Both C and D are unchained 
  16923.  segments that are not called from the segment chain, and consequently, are not 
  16924.  part of the segment chain. 
  16925.  
  16926.  GpiSetSegmentPriority changes the position of a root segment (which must not 
  16927.  be a zero segment) in the chain. As input to this function, you supply the 
  16928.  name of the segment you want to reorder and the name of a reference segment. 
  16929.  The reference segment is the segment that either will be immediately before, 
  16930.  or immediately after, the reordered segment's new position in the chain. 
  16931.  
  16932.  If the segment you are moving is to come after the reference segment in the 
  16933.  chain, it is said to have a higher priority (HIGHER_PRI). If it is to come 
  16934.  before the reference segment, it is said to have a lower priority (LOWER_PRI). 
  16935.  The nearer a segment is to the end of the chain, the higher its priority. 
  16936.  
  16937.  If you supply the name of an unchained segment as input to 
  16938.  GpiSetSegmentPriority, the segment is added to the chain in the position you 
  16939.  specify. To learn the position of a segment in the chain, use 
  16940.  GpiQuerySegmentPriority. 
  16941.  
  16942.  If your application called the following functions: 
  16943.  
  16944.   GpiSetSegmentPriority (hps, C, 2, LOWER_PRI)
  16945.   GpiSetSegmentPriority (hps, 3, 0, HIGHER_PRI)
  16946.   GpiSetSegmentPriority (hps, B, 0, LOWER_PRI)
  16947.  the segment chain in the previous figure would appear as in the following 
  16948.  figure; and GpiDrawChain would draw the segments in the following order: 
  16949.  
  16950.    1. Root segment 3 
  16951.    2. Root segment 1 
  16952.    3. Unchained segment A 
  16953.    4. Unchained segment B 
  16954.    5. Segment C 
  16955.    6. Unchained segment D. 
  16956.    7. Root segment 2 
  16957.    8. Unchained segment B. 
  16958.    9. Segment B 
  16959.  
  16960.  Chained and Called Segments Reordered Using GpiSetSegmentPriority 
  16961.  
  16962.  
  16963. ΓòÉΓòÉΓòÉ 7.1.7.1. Segment Priority ΓòÉΓòÉΓòÉ
  16964.  
  16965. The priority of a segment, in conjunction with the current foreground and 
  16966. background mix attributes, affects how the picture is presented to the user. 
  16967. The segment with the highest priority is drawn last, and appears on top of the 
  16968. previously drawn primitives. Picture components in segments with low priorities 
  16969. risk being drawn over and never seen by the user. The mix attributes affect the 
  16970. graphics functions within each segment. 
  16971.  
  16972.  
  16973. ΓòÉΓòÉΓòÉ 7.1.7.2. GpiDrawSegment ΓòÉΓòÉΓòÉ
  16974.  
  16975. GpiDrawSegment accepts as input any segment name greater than zero. 
  16976. GpiDrawSegment can draw individual segments both inside and outside the segment 
  16977. chain. Any segment that is called from the GpiDrawSegment-named segment also is 
  16978. drawn. 
  16979.  
  16980.  
  16981. ΓòÉΓòÉΓòÉ 7.1.7.3. GpiDrawFrom ΓòÉΓòÉΓòÉ
  16982.  
  16983. You can draw a smaller portion of the entire segment chain (but a larger 
  16984. portion than a single segment) using GpiDrawFrom. GpiDrawFrom, as input, a 
  16985. presentation space handle and two nonzero segment names, the first of which 
  16986. must be part of the segment chain. GpiDrawFrom then draws the segments, 
  16987. starting with the first and ending with the last, including all chained and 
  16988. called segments. 
  16989.  
  16990.  
  16991. ΓòÉΓòÉΓòÉ 7.1.8. Attribute Modes ΓòÉΓòÉΓòÉ
  16992.  
  16993. You can change primitive-attribute settings at any time. The new values you 
  16994. specify replace the existing values. For example, if the current foreground 
  16995. color is green and you change it to red, red replaces green as the foreground 
  16996. color attribute. 
  16997.  
  16998. When you set primitive attributes within a retained or nonretained segment, you 
  16999. can save the existing attribute values on a last-in-first-out (LIFO) stack, 
  17000. from where they can later be retrieved and made current again. You do this by 
  17001. selecting either of the two attribute modes: 
  17002.  
  17003.      AM_PRESERVE mode-Also known as push-and-set mode 
  17004.      AM_NOPRESERVE mode-Also known as set mode. 
  17005.  
  17006.  In AM_NOPRESERVE mode, which is the default setting, existing attribute values 
  17007.  are replaced by any new attribute values that you supply. In AM_PRESERVE mode, 
  17008.  the existing attribute values are stored on a LIFO stack, and then the new 
  17009.  values that you specify take effect. AM_PRESERVE mode also causes the current 
  17010.  position to be saved if the position was specified using 
  17011.  GpiSetCurrentPosition. If you use GpiMove to set the current position, the 
  17012.  position is not saved, regardless of the attribute mode. 
  17013.  
  17014.  To select a current attribute mode, use GpiSetAttrMode. The current attribute 
  17015.  mode affects subsequent attribute-setting requests in the presentation space. 
  17016.  Attribute modes are not applicable to micro presentation spaces, because 
  17017.  graphics segments can be created only in normal presentation spaces. 
  17018.  
  17019.  To retrieve an attribute value from the LIFO stack, use GpiPop, which pulls 
  17020.  back the attribute that was stored most recently on the stack. You can 
  17021.  retrieve more than one attribute value by supplying a number as an input 
  17022.  parameter of this function. For example, if you specify 4, GpiPop retrieves 
  17023.  the four attributes that were most recently stored on the stack. If each of 
  17024.  the values retrieved applies the same type of attribute to the same primitive 
  17025.  (for example, if all four are line-type settings), the last one to be 
  17026.  retrieved (and, therefore, the first one on the stack) becomes the current 
  17027.  setting. 
  17028.  
  17029.  If you save attribute values from any segment called from another segment, and 
  17030.  do not retrieve the values using GpiPop, the values are restored automatically 
  17031.  when the end of the segment is reached. If you save attribute values from any 
  17032.  segment that is not called from another segment and do not explicitly restore 
  17033.  those values using GpiPop, they are lost at the end of the segment. 
  17034.  
  17035.  The AM_PRESERVE mode is useful when you do not want attributes in calling 
  17036.  segments to be overwritten by attributes specified in the called segments. 
  17037.  This overwriting happens because a calling segment and the segments it calls 
  17038.  are logically one object. Attribute changes within a called segment remain 
  17039.  current upon return to the calling segment. If you set some attribute values 
  17040.  at the start of a called segment, and the current attribute mode is 
  17041.  AM_PRESERVE, the attribute values of the calling segment are stored on the 
  17042.  LIFO stack. At the end of the called segment, the values on the stack are 
  17043.  retrieved automatically so that the calling segment continues with its own 
  17044.  attribute values. 
  17045.  
  17046.  
  17047. ΓòÉΓòÉΓòÉ 7.1.9. Reusing the Presentation Space ΓòÉΓòÉΓòÉ
  17048.  
  17049. A normal presentation space with segments retained in the segment store can be 
  17050. costly in terms of storage. Therefore, delete any presentation space that you 
  17051. no longer need, using GpiDestroyPS. If, for example, your application is using 
  17052. a series of presentation spaces, each with a different format, the creation and 
  17053. deletion activity also can be costly. The PM provides the following functions 
  17054. that let you reuse or redefine an existing presentation space so you can create 
  17055. a presentation space once and use it any number of times. 
  17056.  
  17057.      GpiSavePS 
  17058.      GpiRestorePS 
  17059.      GpiResetPS 
  17060.      GpiSetPS 
  17061.  
  17062.  
  17063. ΓòÉΓòÉΓòÉ 7.1.9.1. GpiSavePS ΓòÉΓòÉΓòÉ
  17064.  
  17065. GpiSavePS saves presentation space information (such as current primitive 
  17066. attributes and the current position) on a dedicated LIFO stack. The 
  17067. presentation space itself is unchanged; that is, it still exists, has the same 
  17068. presentation space handle, and the presentation page dimensions and format are 
  17069. the same. 
  17070.  
  17071. Output from GpiSavePS is a number that identifies the saved information on the 
  17072. LIFO stack. An output of 3, for example, tells you that this is the third lot 
  17073. of presentation space data on the stack. 
  17074.  
  17075.  
  17076. ΓòÉΓòÉΓòÉ 7.1.9.2. GpiRestorePS ΓòÉΓòÉΓòÉ
  17077.  
  17078. GpiRestorePS retrieves the saved information from the LIFO stack and reapplies 
  17079. it to the presentation space. Input to this function can be either the 
  17080. identifier returned to you from GpiSavePS or a relative value. A relative value 
  17081. of -1, for example, retrieves the information most recently stored on the 
  17082. stack. You do not have to restore the information that was most recently saved. 
  17083. However, any data that you skip over is discarded. 
  17084.  
  17085. A LIFO Stack with Four Items 
  17086.  
  17087.  
  17088. ΓòÉΓòÉΓòÉ 7.1.9.3. GpiResetPS ΓòÉΓòÉΓòÉ
  17089.  
  17090. When a presentation space is first created, it is in a neutral state. Current 
  17091. attributes are set to their initial default values. The current position is 
  17092. (0,0). The segment store contains no segments, and there are no 
  17093. application-defined resources, such as logical color tables. 
  17094.  
  17095. You can return an existing presentation space to this state using GpiResetPS. 
  17096. GpiResetPS has three levels of reset activity, each more powerful than the 
  17097. last. These are: 
  17098.  
  17099.    1. GRES_ATTRS, which is equivalent to the processing done by 
  17100.       GpiCloseSegment. 
  17101.  
  17102.    2. GRES_SEGMENTS, which is equivalent to creating a new presentation space, 
  17103.       but without deleting any logical resources. All retained segments are 
  17104.       deleted from the segment store. 
  17105.  
  17106.    3. GRES_ALL, which is equivalent to creating a new presentation space. 
  17107.  
  17108.  GpiResetPS does not alter the size or format of the presentation page. 
  17109.  
  17110.  
  17111. ΓòÉΓòÉΓòÉ 7.1.9.4. GpiSetPS ΓòÉΓòÉΓòÉ
  17112.  
  17113. GpiSetPS redefines the size and format of the presentation page. The processing 
  17114. performed when you call GpiSetPS is similar to that performed by GpiCreatePS, 
  17115. except that the presentation space already exists. The presentation space is 
  17116. returned to a neutral state (which is the equivalent of requesting GRES_ALL 
  17117. using GpiResetPS), and the presentation page is redefined. For example, you can 
  17118. change a presentation page defined in 0.01mm units to one defined in pels. 
  17119. Essentially, this lets you work with a new presentation space without having to 
  17120. delete one and create another. 
  17121.  
  17122. You also can use GpiSetPS to change the current mapping mode of a presentation 
  17123. space. To do this, use the PS_NORESET flag, which is the equivalent of 
  17124. requesting GRES_SEGMENTS using GpiResetPS. This feature is particularly useful 
  17125. if you are designing an application that deals with page layout and drafting, 
  17126. or if you want the screen size to correspond to the page size for the printed 
  17127. output. 
  17128.  
  17129.  
  17130. ΓòÉΓòÉΓòÉ 7.1.10. Nonretained Graphic Segments ΓòÉΓòÉΓòÉ
  17131.  
  17132. It is valid segment construction to create a segment bracket while the drawing 
  17133. mode is DM_DRAW. The GPI functions contained within the bracket are drawn 
  17134. immediately rather than being retained for future use. This type of segment is 
  17135. called a nonretained segment. 
  17136.  
  17137. Because the usual reason for constructing segments is to take advantage of 
  17138. retained graphics, nonretained segments might appear as a contradiction in 
  17139. terms at first. However, there are four particular advantages in their use: 
  17140.  
  17141.      If ATTR_FASTCHAIN is set to OFF, the GpiOpenSegment implicitly resets all 
  17142.       attributes to their defaults. 
  17143.  
  17144.      The GpiOpenSegment and GpiCloseSegment initialize and reset the viewing 
  17145.       transform matrix, just as they do for retained segments. 
  17146.  
  17147.      Nonretained segments can be recorded in a metafile, just as a retained 
  17148.       segment can. 
  17149.  
  17150.      A graphic in a nonretained segment, with a unique name, can be converted 
  17151.       easily to a retained graphic for future use. 
  17152.  
  17153.  
  17154. ΓòÉΓòÉΓòÉ 7.2. Using Segment Creating and Drawing Functions ΓòÉΓòÉΓòÉ
  17155.  
  17156. You can use retained-drawing and segment functions to: 
  17157.  
  17158.      Create a chained or called segment 
  17159.      Draw the picture associated with one or more segments 
  17160.  
  17161.  
  17162. ΓòÉΓòÉΓòÉ 7.2.1. Creating a Chained Segment ΓòÉΓòÉΓòÉ
  17163.  
  17164. To create a chained segment, you must: 
  17165.  
  17166.    1. Set the drawing mode to DM_RETAIN. 
  17167.  
  17168.    2. Check to see if the chained attribute is one of the initial segment 
  17169.       attributes using GpiQueryInitialSegmentAttrs. 
  17170.  
  17171.    3. Set the chained attribute, if necessary, with GpiSetInitialSegmentAttrs. 
  17172.  
  17173.    4. Open the segment using GpiOpenSegment. 
  17174.  
  17175.    5. Perform the necessary drawing operations. 
  17176.  
  17177.    6. Close the segment using GpiCloseSegment. 
  17178.  
  17179.  The following figure is an example of a segment containing a box primitive and 
  17180.  calling another segment using GpiCallSegmentMatrix. 
  17181.  
  17182.   #define INCL_GPISEGMENTS
  17183.   #define INCL_GPITRANSFORMS
  17184.   #include <os2.h>
  17185.   void fncSEGS01(void){
  17186.       POINTL ptl;
  17187.       HPS hps;
  17188.       LONG idSegment    = 1;
  17189.       LONG idNonChained = 2;
  17190.       MATRIXLF matlfTransform = { MAKEFIXED(2,0), MAKEFIXED(0,0), 0,
  17191.                                   MAKEFIXED(0,0), MAKEFIXED(1,0), 0,
  17192.                                   0, 0, 1 };
  17193.  
  17194.       /************************************************************************/
  17195.       /* Turns chaining on. Adds the new segment to the segment chain.        */
  17196.       /* Segment idNonChained is called, whether chained or not.              */
  17197.       /************************************************************************/
  17198.  
  17199.       if (ATTR_OFF == GpiQueryInitialSegmentAttrs(hps, ATTR_CHAINED)
  17200.           GpiSetInitialSegmentAttrs(hps, ATTR_CHAINED, ATTR_ON);
  17201.       GpiOpenSegment(hps, idSegment);
  17202.       ptl.x = 150; ptl.y = 150;
  17203.       GpiMove(hps, &ptl);
  17204.       ptl.x = 225; ptl.y = 225;
  17205.       GpiBox(hps, DRO_FILL, &ptl, 0L, 0L);
  17206.       GpiCallSegmentMatrix(hps, idNonChained, 9L, &matlfTransform,
  17207.           TRANSFORM_REPLACE);
  17208.       GpiCloseSegment(hps);
  17209.   } /* fncSEGS01 */
  17210.  
  17211.  
  17212. ΓòÉΓòÉΓòÉ 7.2.2. Creating a Called Segment ΓòÉΓòÉΓòÉ
  17213.  
  17214. To create a called segment, you must: 
  17215.  
  17216.    1. Set the drawing mode to DM_RETAIN. 
  17217.  
  17218.    2. Check to see whether the chained attribute is one of the initial segment 
  17219.       attributes using GpiQueryInitialSegmentAttrs. 
  17220.  
  17221.    3. Set the chained attribute, if necessary, with GpiSetInitialSegmentAttrs. 
  17222.  
  17223.    4. Open the segment using GpiOpenSegment. 
  17224.  
  17225.    5. Perform the necessary drawing operations. 
  17226.  
  17227.    6. Close the segment using GpiCloseSegment. 
  17228.  
  17229.  The following figure shows an example of how to draw a box in a called 
  17230.  segment. 
  17231.  
  17232.   #define INCL_GPISEGMENTS
  17233.   #define INCL_GPICONTROL
  17234.   #include <os2.h>
  17235.   void fncSEGS02(void){
  17236.       POINTL ptl;
  17237.       HPS hps;
  17238.       LONG idNonChained = 2;
  17239.  
  17240.       GpiSetDrawingMode(hps, DM_RETAIN);
  17241.  
  17242.       /* Creates a non-chained segment. */
  17243.  
  17244.       if (ATTR_ON == GpiQueryInitialSegmentAttrs(hps, ATTR_CHAINED))
  17245.           GpiSetInitialSegmentAttrs(hps, ATTR_CHAINED, ATTR_OFF);
  17246.       GpiOpenSegment(hps, idNonChained);
  17247.       ptl.x = 100;
  17248.       ptl.y = 100;
  17249.       GpiMove(hps, &ptl);
  17250.       ptl.x = 200;
  17251.       ptl.y = 200;
  17252.       GpiLine(hps, &ptl);
  17253.       GpiCloseSegment(hps);
  17254.   } /* fncSEGS02 */
  17255.  
  17256.  
  17257. ΓòÉΓòÉΓòÉ 7.2.3. Drawing a Segment Chain ΓòÉΓòÉΓòÉ
  17258.  
  17259. The following figure shows an example of how to draw a segment chain using 
  17260. GpiDrawChain. 
  17261.  
  17262. #define INCL_GPICONTROL
  17263. #include <os2.h>
  17264. void fncSEGS03(void){
  17265.     HPS hps;
  17266.  
  17267.     if (DM_DRAW != GpiQueryDrawingMode(hps))
  17268.         GpiSetDrawingMode(hps, DM_DRAW);
  17269.     GpiDrawChain(hps);
  17270. } /* fncSEGS03 */
  17271.  
  17272.  
  17273. ΓòÉΓòÉΓòÉ 8. Character String Primitives ΓòÉΓòÉΓòÉ
  17274.  
  17275. Character string primitives are printed or displayed text limited to a length 
  17276. of 256 characters by the PM. 
  17277.  
  17278. The following topics are related to information in this chapter: 
  17279.  
  17280.      Presentation spaces and device contexts 
  17281.      Color and mix attributes 
  17282.      Fonts 
  17283.      Coordinate spaces and transformations 
  17284.  
  17285.  
  17286. ΓòÉΓòÉΓòÉ 8.1. About Character String Primitives ΓòÉΓòÉΓòÉ
  17287.  
  17288. A PM application must make certain choices about fonts in preparation for text 
  17289. display or printing. Often these choices are driven by selections from a user. 
  17290. After the selections are made, as discussed in Fonts, the application can make 
  17291. additional decisions about the appearance of the individual characters within 
  17292. the font by setting attributes in the CHARBUNDLE data structure. CHARBUNDLE is 
  17293. the lowest of three levels of data structures that define the appearance of 
  17294. displayed or printed text. The other two, FONTMETRICS and FATTRS, are described 
  17295. in Fonts. 
  17296.  
  17297. A font family-for instance, Helvetica** or Courier-is a collection of fonts. 
  17298. Fonts within the same family share certain attributes such as stroke width and 
  17299. serif characteristics. Stroke width refers to the width of lines used to draw 
  17300. characters and symbols from a font. A serif is a short crossline drawn at the 
  17301. ends of the main strokes that form a character or symbol. 
  17302.  
  17303. Individual fonts within a family differ from each other in the following ways: 
  17304.  
  17305.      Height 
  17306.      Line weight 
  17307.      Appearance 
  17308.  
  17309.  Height refers to the point size of a font. A common example of line weight is 
  17310.  boldface. A common example of appearance is italic. 
  17311.  
  17312.  The most important factor that affects the CHARBUNDLE attributes is whether 
  17313.  the current font is an image or an outline font. The following figure shows an 
  17314.  example of the difference. 
  17315.  
  17316.  Image and Outline Fonts 
  17317.  
  17318.  Outline fonts are composed of characters drawn with straight and curved lines. 
  17319.  Image fonts, also called bit map fonts, are composed of pels arranged in 
  17320.  certain shapes. 
  17321.  
  17322.  
  17323. ΓòÉΓòÉΓòÉ 8.1.1. Attributes of Character String Primitives ΓòÉΓòÉΓòÉ
  17324.  
  17325. Attributes of the character string primitives contained in CHARBUNDLE are as 
  17326. follows: 
  17327.  
  17328.      Character set 
  17329.      Character mode 
  17330.      Character cell 
  17331.      Character angle 
  17332.      Character shear 
  17333.      Character direction 
  17334.      Character text alignment 
  17335.      Character extra 
  17336.      Character break extra 
  17337.      Foreground color 
  17338.      Background color 
  17339.      Foreground mix 
  17340.      Background mix 
  17341.  
  17342.  When an application creates a presentation space, the character string 
  17343.  attributes are set to the default values shown in the following table. 
  17344.  
  17345.  Character String Attribute Default Values 
  17346.  
  17347.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17348.   ΓöéAttribute   ΓöéDefault Value           ΓöéFunction that Redefines Attribute Γöé
  17349.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17350.   ΓöéSet         ΓöéLCID_DEFAULT            ΓöéGpiSetCharSet                     Γöé
  17351.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17352.   ΓöéMode        ΓöéCM_MODE1                ΓöéGpiSetCharMode                    Γöé
  17353.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17354.   ΓöéCell        ΓöéOutline font - Defined  ΓöéGpiSetCharBox                     Γöé
  17355.   Γöé            Γöéby device               Γöé                                  Γöé
  17356.   Γöé            ΓöéImage font - Defined by Γöé                                  Γöé
  17357.   Γöé            Γöéfont                    Γöé                                  Γöé
  17358.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17359.   ΓöéAngle       Γöé(1,0)                   ΓöéGpiSetCharAngle                   Γöé
  17360.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17361.   ΓöéShear       Γöé(0,1)                   ΓöéGpiSetCharShear                   Γöé
  17362.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17363.   ΓöéDirection   ΓöéLeft to right           ΓöéGpiSetCharDirection               Γöé
  17364.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17365.   ΓöéText        ΓöéLeft                    ΓöéGpiSetTextAlignment               Γöé
  17366.   Γöéalignment   Γöé                        Γöé                                  Γöé
  17367.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17368.   ΓöéExtra       Γöé0                       ΓöéGpiSetCharExtra                   Γöé
  17369.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17370.   ΓöéBreak extra Γöé0                       ΓöéGpiSetCharBreakExtra              Γöé
  17371.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17372.   ΓöéForeground  ΓöéBlack                   ΓöéGpiSetAttrs(CBB_COLOR)            Γöé
  17373.   Γöécolor       Γöé                        Γöé                                  Γöé
  17374.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17375.   ΓöéBackground  ΓöéClear                   ΓöéGpiSetAttrs(CBB_BACK_COLOR)       Γöé
  17376.   Γöécolor       Γöé                        Γöé                                  Γöé
  17377.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17378.   ΓöéForeground  ΓöéOverpaint               ΓöéGpiSetAttrs(CBB_MIX_MODE)         Γöé
  17379.   Γöémix         Γöé                        Γöé                                  Γöé
  17380.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17381.   ΓöéBackground  ΓöéLeave alone             ΓöéGpiSetAttrs(CBB_BACK_MIX_MODE)    Γöé
  17382.   Γöémix         Γöé                        Γöé                                  Γöé
  17383.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17384.  
  17385.  Current character attributes take effect when you send graphics characters to 
  17386.  an output device. They have no effect at the time you define a logical font. 
  17387.  
  17388.  
  17389. ΓòÉΓòÉΓòÉ 8.1.1.1. Character Set ΓòÉΓòÉΓòÉ
  17390.  
  17391. Character set defines the local identifier, lcid, of the current font. The font 
  17392. lcid is set using GpiSetCharSet. GpiCreateLogFont associates the font with an 
  17393. lcid. 
  17394.  
  17395. The value of the current lcid is determined using GpiQueryCharSet. 
  17396.  
  17397.  
  17398. ΓòÉΓòÉΓòÉ 8.1.1.2. Character Mode ΓòÉΓòÉΓòÉ
  17399.  
  17400. Every presentation space has a current character mode, which determines the 
  17401. extent to which a font can be affected by the attributes defined in CHARBUNDLE. 
  17402. The mode affects compatibility issues that are invisible to both the user and 
  17403. the programmer. The following table describes the character modes and their 
  17404. influences on the current font. 
  17405.  
  17406. An application selects a character mode using GpiSetCharMode. When a mode is 
  17407. selected, it applies to any font (including the system font) used while the 
  17408. mode is current. The character mode takes effect when you draw character 
  17409. strings; it has no effect at the time you define a logical font. 
  17410.  
  17411. Character Mode Effects on Character Attributes 
  17412.  
  17413. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17414. ΓöéCharacter ΓöéIf Image Font...            ΓöéIf Outline Font...    Γöé
  17415. ΓöéMode      Γöé                            Γöé                      Γöé
  17416. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17417. ΓöéCM_MODE1  ΓöéIgnores all current         ΓöéAffected by all       Γöé
  17418. Γöé          Γöécharacter attributes, exceptΓöécurrent character     Γöé
  17419. Γöé          Γöécharacter direction.        Γöéattributes.           Γöé
  17420. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17421. ΓöéCM_MODE2  ΓöéUses the character shear,   ΓöéAffected by all       Γöé
  17422. Γöé          Γöébox, angle, and direction   Γöécurrent character     Γöé
  17423. Γöé          Γöéattributes to position the  Γöéattributes.           Γöé
  17424. Γöé          Γöécharacter cell, but the     Γöé                      Γöé
  17425. Γöé          Γöécharacters themselves are   Γöé                      Γöé
  17426. Γöé          Γöénot sheared, rotated,       Γöé                      Γöé
  17427. Γöé          Γöéscaled, or reversed.        Γöé                      Γöé
  17428. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17429. ΓöéCM_MODE3  ΓöéRaises an error if you try  ΓöéAffected by all       Γöé
  17430. Γöé          Γöéto draw a character string. Γöécurrent character     Γöé
  17431. Γöé          ΓöéNote:  Any font used when   Γöéattributes.           Γöé
  17432. Γöé          Γöéthe current character mode  Γöé                      Γöé
  17433. Γöé          Γöéis CM_MODE3 must be an      Γöé                      Γöé
  17434. Γöé          Γöéoutline font.               Γöé                      Γöé
  17435. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17436.  
  17437. The default character mode (CM_DEFAULT) is identical to CM_MODE1. 
  17438.  
  17439.  
  17440. ΓòÉΓòÉΓòÉ 8.1.1.3. Character Cell ΓòÉΓòÉΓòÉ
  17441.  
  17442. A character cell is an imaginary rectangular boundary that defines the 
  17443. horizontal and vertical space occupied by a single character from an outline 
  17444. character set. 
  17445.  
  17446. The PM calculates character cell width and height from the point size. The 
  17447. width value for the character cell is the nominal width of the lowercase 
  17448. characters in the character set. In a monospace font, the width of all 
  17449. character cells is identical. In a proportional font, the width of the 
  17450. character cells depends on the character. 
  17451.  
  17452. In an image font, the height of the character cell is the number of pels in the 
  17453. font. In an outline font, the height of the character cell is the point size of 
  17454. the font. 
  17455.  
  17456. The characters in a character string are positioned one character per cell. The 
  17457. spacing between adjacent characters in a string is affected by the character 
  17458. cell attribute, except for image characters in CM_MODE1. 
  17459.  
  17460. Cell width determines the spacing of consecutive characters along the baseline, 
  17461. as illustrated in the following figure. 
  17462.  
  17463. Character Cell Measurements 
  17464.  
  17465. Current cell size is specified using GpiSetCharBox. As input, this function 
  17466. accepts the desired height and width of the character cell in world 
  17467. coordinates. These values are related to certain dimensions in the FONTMETRICS 
  17468. structure that controls font attributes. Heights or widths of 0 are valid input 
  17469. and cause the outline character to be drawn as a point or straight line. 
  17470. Heights or widths of negative values cause certain special effects, for 
  17471. example, reversed lettering. 
  17472.  
  17473. The character cell value affects both the size and position of characters drawn 
  17474. from an outline font, regardless of the current character mode. Each character 
  17475. is scaled up or down to fit the cell size, as shown in the following figure. 
  17476.  
  17477. Effect of the Character Cell on an Outline Font 
  17478.  
  17479. The character cell value is ignored if the current font is an image font and 
  17480. the current character mode is CM_MODE1, as shown in the following figure. 
  17481.  
  17482. Note:  It is essential to code the character cell correctly, even if you 
  17483. anticipate using image fonts. In case of a font match failure, an outline font 
  17484. can be substituted for a image font. 
  17485.  
  17486. Effect of the Character Cell on an Image Font in CM_MODE1 
  17487.  
  17488. Although the character cell has been both increased and decreased, the 
  17489. character string is unaltered. 
  17490.  
  17491. The character cell value controls the positioning of image-font characters when 
  17492. the current character mode is CM_MODE2; but it cannot cause the characters to 
  17493. be scaled to fit the cell. This effect is shown in the following figure. 
  17494.  
  17495. Effect of the Character Cell on an Image Font in CM_MODE2 
  17496.  
  17497. If you increase the character cell size for an image font in CM_MODE2, the 
  17498. characters are more widely spaced, but their size is not changed. If you 
  17499. decrease character cell size, the space between the characters is reduced, and 
  17500. because the characters themselves cannot be scaled, they can overlap. 
  17501.  
  17502.  
  17503. ΓòÉΓòÉΓòÉ 8.1.1.3.1. Default Character Cell ΓòÉΓòÉΓòÉ
  17504.  
  17505. The default character-cell size is a device-dependent value. You do not need to 
  17506. know this value unless you want to switch back to the initial default value 
  17507. after having specified another value. It is recommended that you save initial 
  17508. default values using GpiSavePS. 
  17509.  
  17510. The default character cell, like other default attributes, can be set using 
  17511. GpiSetDefAttrs(CBB_BOX). If necessary, you can query the current default value 
  17512. using GpiQueryDefAttrs. 
  17513.  
  17514.  
  17515. ΓòÉΓòÉΓòÉ 8.1.1.3.2. Coding a Character Cell ΓòÉΓòÉΓòÉ
  17516.  
  17517. The dimensions that an application passes to GpiSetCharBox and that 
  17518. GpiQueryCharBox returns are fixed-point values. A fixed value is a 32-bit value 
  17519. whose high-order 16 bits contain the integral part of the floating-point number 
  17520. and whose low-order 16 bits contain the fractional part. The fractional part is 
  17521. the numerator of a fraction whose denominator is fixed at 65536. The MAKEFIXED 
  17522. macro provides a method for producing fixed values. If, for example, one of the 
  17523. character cell dimensions were 7.635 world units, an application could obtain 
  17524. the corresponding fixed value by using the MAKEFIXED macro, passing 7 as the 
  17525. first argument and 41615 as the second. 
  17526.  
  17527. The purpose of the character cell is to assist other font metrics to define 
  17528. text lines. For example, if you planned to have an average text line of 60 
  17529. characters, dividing your output width by 60 would provide your character cell 
  17530. width. 
  17531.  
  17532. DevQueryCaps can be used to provide information about suitable character cell 
  17533. values. DevQueryCaps returns two sets of values that can influence the 
  17534. character cell: 
  17535.  
  17536.      Default cell values 
  17537.         -  CAPS_GRAPHICS_CHAR_WIDTH 
  17538.         -  CAPS_GRAPHICS_CHAR_HEIGHT. 
  17539.      Device resolution 
  17540.         -  CAPS_HORIZONTAL_FONT_RES 
  17541.         -  CAPS_VERTICAL_FONT_RES. 
  17542.  
  17543.  The default cell values return the size of the default character cell in pels. 
  17544.  Convert the device resolution into character cell values by multiplying it by 
  17545.  the desired point size, then dividing by 72 (72.2818). 
  17546.  
  17547.  
  17548. ΓòÉΓòÉΓòÉ 8.1.1.4. Character Angle ΓòÉΓòÉΓòÉ
  17549.  
  17550. The character angle is defined by the x-axis and a vector drawn through the 
  17551. origin to a specified point in a Cartesian coordinate system. Neither (0,0) nor 
  17552. the specified point need have any relation to the current position. The 
  17553. operating system then aligns the baseline with this vector. 
  17554.  
  17555. An application can retrieve the point that defines the character angle vector 
  17556. using GpiQueryCharAngle. An application can set the character angle using 
  17557. GpiSetCharAngle. This function accepts as input the x- and y-coordinates of a 
  17558. point that defines the new vector. When you specify an angle, it becomes the 
  17559. current setting. To reset the character angle vector to its default value 
  17560. (parallel to the x-axis), call GpiSetCharAngle with both x and y equal to 0. 
  17561.  
  17562. The effects of the current character angle vary depending on the current 
  17563. character mode and the current font type. When the current font is an outline 
  17564. font, the current character angle determines the angle of both the whole string 
  17565. and the individual characters in the string, regardless of the current 
  17566. character mode. The baseline of each character cell is drawn parallel to the 
  17567. new baseline, as shown in the following figure. 
  17568.  
  17569. Effect of the Character Angle on an Outline Font 
  17570.  
  17571. The character string is drawn parallel to the vector drawn from the origin to 
  17572. (10,7). The baseline of each of the character cells also is drawn parallel to 
  17573. this vector. 
  17574.  
  17575. The character angle value is ignored if the current font is an image font and 
  17576. the current character mode is CM_MODE1, as shown in the following figure. 
  17577.  
  17578. Effect of the Character Angle on an Image Font in CM_MODE1 
  17579.  
  17580. The angle of the character string is unaltered by GpiSetCharAngle. 
  17581.  
  17582. When the current font is an image font and the current character mode is 
  17583. CM_MODE2, the current character angle determines the angle of the whole string 
  17584. but does not affect the individual characters in the string. The character 
  17585. reference point, which is the point at which the character baseline intersects 
  17586. the left edge of the character cell, is placed on a line parallel to the new 
  17587. baseline. The baseline of each character cell remains parallel to the x-axis, 
  17588. as shown in the following figure. 
  17589.  
  17590. Effect of the Character Angle on an Image Font in CM_MODE2 
  17591.  
  17592. The character string is drawn parallel to the vector from (0,0) to (10,7). 
  17593.  
  17594. Each of the characters in the string in the previous figure is drawn with the 
  17595. vertical sides of its character cell parallel to the y-axis, and with the 
  17596. horizontal sides of its character box parallel to the x-axis. 
  17597.  
  17598.  
  17599. ΓòÉΓòÉΓòÉ 8.1.1.5. Character Shear ΓòÉΓòÉΓòÉ
  17600.  
  17601. Character shear is the angle defined by the x-axis and a vector drawn through 
  17602. the origin to a specified point in a Cartesian coordinate system. Neither (0,0) 
  17603. nor the specified point need have any relation to the current position. The 
  17604. operating system then aligns the vertical sides of the character cell. If the 
  17605. font is an outline font, the operating system also aligns the vertical strokes 
  17606. of the characters with the vector, regardless of the current character mode, as 
  17607. shown in the following figure. 
  17608.  
  17609. An application can retrieve the point that defines the character shear vector 
  17610. using GpiQueryCharShear. An application can set the character shear using 
  17611. GpiSetCharShear, which accepts as input the x- and y-coordinates of a point 
  17612. that defines the new vector in a POINTL structure. 
  17613.  
  17614. The shear of a character is the angle formed by the vertical lines of the 
  17615. character cell, and it can affect both the positioning and shape of characters 
  17616. in the character string. By default, the vertical lines of a character cell are 
  17617. parallel to the y-axis of the presentation page. As input to GpiSetCharShear 
  17618. supply the coordinates of the end point of a vector drawn from the origin 
  17619. (0,0). The effects of the current character shear value vary, depending on the 
  17620. current character mode and font type. 
  17621.  
  17622. Effect of Character Shear on an Outline Font 
  17623.  
  17624. The character cell is drawn with its vertical lines parallel to the vector from 
  17625. the origin to (5,6). The character is sheared to the same degree. 
  17626.  
  17627. The character-shear value is ignored if the current font is an image font and 
  17628. the current character mode is CM_MODE1, as shown in the following figure. 
  17629.  
  17630. Effect of Character Shear on an Image Font in CM_MODE1 
  17631.  
  17632. The character string is unaffected by the character-shear value. 
  17633.  
  17634. The character-shear value affects the positioning of the characters from an 
  17635. image font in CM_MODE2 only if character direction is CHDIRN_TOPBOTTOM or 
  17636. CHDIRN_BOTTOMTOP. That is, characters drawn vertically do not appear in a 
  17637. vertical line for nonzero shear angle from the vertical. The characters 
  17638. themselves cannot be sheared, as shown in the following figure. 
  17639.  
  17640. Effect of Character Shear on an Image Font in CM_MODE2 
  17641.  
  17642. The character cell is sheared, and it controls the positioning of the 
  17643. characters; the characters themselves are unchanged. 
  17644.  
  17645. If the x- and y-coordinate values you specify in GpiSetCharShear are both 
  17646. positive and negative, the characters slant from lower left to upper right. If 
  17647. you supply one negative and one positive value, the characters slant from upper 
  17648. left to lower right, as illustrated in the following figure. 
  17649.  
  17650. Effect of X- and Y-Values on Character Shear 
  17651.  
  17652. Character shear, like other attributes, has a default value that can be changed 
  17653. using GpiSetDefAttrs (CBB_SHEAR). To reset the character shear to its default 
  17654. effect of drawing the vertical lines of the character cell parallel to the 
  17655. y-axis, supply a coordinate value of (0,1) on GpiSetCharShear. 
  17656.  
  17657.  
  17658. ΓòÉΓòÉΓòÉ 8.1.1.6. Character Direction ΓòÉΓòÉΓòÉ
  17659.  
  17660. Character direction is the direction in which the characters in a string are 
  17661. drawn in relation to the baseline. By default, the characters are drawn from 
  17662. left to right. An application can change the direction using 
  17663. GpiSetCharDirection. GpiSetCharDirection accepts as input one of the four 
  17664. values illustrated in the following figure. The value CHDIRN_DEFAULT is 
  17665. identical to CHDIRN_LEFTRIGHT. 
  17666.  
  17667.  
  17668. ΓöîΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÉ            ΓöîΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÉ
  17669. Γöé A Γöé B Γöé C Γöé            Γöé C Γöé B Γöé A Γöé
  17670. ΓööΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÿ            ΓööΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÿ
  17671.                                   
  17672. start       end          end         start
  17673.  
  17674. CHDIRN_LEFTRIGHT         CHDIRN_RIGHTLEFT
  17675.  
  17676.  
  17677. start                    end
  17678.                           
  17679. ΓöîΓöÇΓöÇΓöÇΓöÉ                    ΓöîΓöÇΓöÇΓöÇΓöÉ
  17680. Γöé A Γöé                    Γöé C Γöé
  17681. Γö£ΓöÇΓöÇΓöÇΓöñ                    Γö£ΓöÇΓöÇΓöÇΓöñ
  17682. Γöé B Γöé                    Γöé B Γöé
  17683. Γö£ΓöÇΓöÇΓöÇΓöñ                    Γö£ΓöÇΓöÇΓöÇΓöñ
  17684. Γöé C Γöé                    Γöé A Γöé
  17685. ΓööΓöÇΓöÇΓöÇΓöÿ                    ΓööΓöÇΓöÇΓöÇΓöÿ
  17686.                           
  17687. end                      start
  17688.  
  17689. CHDIRN_TOPBOTTOM         CHDIRN_BOTTOMTOP
  17690.  
  17691. An application can determine the current character direction using 
  17692. GpiQueryCharDirection. 
  17693.  
  17694.  
  17695. ΓòÉΓòÉΓòÉ 8.1.1.7. Character Text Alignment ΓòÉΓòÉΓòÉ
  17696.  
  17697. Character text alignment is the attribute that describes how the character 
  17698. strings are drawn with respect to the boundary of the output, either the 
  17699. current position or the starting position of the string, if a 
  17700. GpiCharString...At function draws the string. The alignment is set using 
  17701. GpiSetTextAlignment, which accepts as input a long value for horizontal and 
  17702. vertical alignment. 
  17703.  
  17704. The acceptable values for GpiSetTextAlignment depend on the direction of the 
  17705. current coordinate system, as follows: 
  17706.  
  17707.  Value          Corresponds to the direction of... 
  17708.  
  17709.  Left           The lowest x-coordinate value 
  17710.  
  17711.  Right          The highest x-coordinate value 
  17712.  
  17713.  Top            The highest y-coordinate value 
  17714.  
  17715.  Bottom         The lowest y-coordinate value 
  17716.  
  17717.  Internally, the PM determines a reference point within a character string that 
  17718.  is to be positioned over the starting point specified for the string. 
  17719.  
  17720.  If an application draws the string with either GpiCharString or 
  17721.  GpiCharStringPos, the starting point specified for the string is the current 
  17722.  position. If the application draws the string with either GpiCharStringAt or 
  17723.  GpiCharStringPosAt, the starting point specified for the string is accepted as 
  17724.  input by the function. 
  17725.  
  17726.  
  17727. ΓòÉΓòÉΓòÉ 8.1.1.7.1. Horizontal Alignment of a Character String ΓòÉΓòÉΓòÉ
  17728.  
  17729. When a horizontal character string does not fill the width of the output area, 
  17730. it can be positioned in one of the three ways shown in the following figure. 
  17731. All of these options can be set directly with the lHorizontal option of 
  17732. GpiSetTextAlignment. 
  17733.  
  17734. Horizontal Positioning of Text Strings 
  17735.  
  17736. Text justification requires an application to perform both queries and 
  17737. coordinate calculations. The following flags are used to specify types of 
  17738. horizontal alignment: 
  17739.  
  17740. Horizontal Alignment Values 
  17741.  
  17742. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17743. ΓöéIdentifier              ΓöéAlignment                           Γöé
  17744. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17745. ΓöéTA_LEFT                 ΓöéOn the left edge of the leftmost    Γöé
  17746. Γöé                        Γöécharacter in the string             Γöé
  17747. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17748. ΓöéTA_RIGHT                ΓöéOn the right edge of the rightmost  Γöé
  17749. Γöé                        Γöécharacter in the string             Γöé
  17750. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17751. ΓöéTA_CENTER               ΓöéOn the arithmetic mean of the       Γöé
  17752. Γöé                        Γöéleftmost and rightmost characters inΓöé
  17753. Γöé                        Γöéthe string                          Γöé
  17754. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17755.  
  17756. There are two sets of default values for the lHorizontal option. They are 
  17757. provided for compatibility and map into the horizontal alignment values 
  17758. described above. 
  17759.  
  17760. GpiQueryGraphicsField, GpiQueryPageViewport, and GpiQueryViewingLimits all 
  17761. provide methods of determining the width of the output area so your application 
  17762. can specify coordinates properly for the current position. 
  17763.  
  17764.  
  17765. ΓòÉΓòÉΓòÉ 8.1.1.7.2. Vertical Alignment of a Character String ΓòÉΓòÉΓòÉ
  17766.  
  17767. When a character string is to be displayed vertically, it can be positioned in 
  17768. one of the four ways illustrated in the following figure. The vertical options 
  17769. all can be set directly using the lVertical option of GpiSetTextAlignment. 
  17770.  
  17771. Vertical Positioning of Text Strings 
  17772.  
  17773. The following flags are used to specify types of vertical alignment: 
  17774.  
  17775. Vertical Alignment Values 
  17776.  
  17777. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17778. ΓöéIdentifier              ΓöéAlignment                           Γöé
  17779. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17780. ΓöéTA_TOP                  ΓöéOn the top edge of the topmost      Γöé
  17781. Γöé                        Γöécharacter in the string             Γöé
  17782. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17783. ΓöéTA_HALF                 ΓöéOn the arithmetic mean of the       Γöé
  17784. Γöé                        Γöétopmost and bottommost characters inΓöé
  17785. Γöé                        Γöéthe string                          Γöé
  17786. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17787. ΓöéTA_BASE                 ΓöéOn the baseline of the bottommost   Γöé
  17788. Γöé                        Γöécharacter in the string             Γöé
  17789. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17790. ΓöéTA_BOTTOM               ΓöéOn the bottom edge of the bottommostΓöé
  17791. Γöé                        Γöécharacter in the string             Γöé
  17792. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17793.  
  17794. There are two sets of default values for the lVertical option. They are 
  17795. provided for compatibility and map into the vertical alignment values described 
  17796. above. 
  17797.  
  17798.  
  17799. ΓòÉΓòÉΓòÉ 8.1.1.8. Character Extra and Break Extra ΓòÉΓòÉΓòÉ
  17800.  
  17801. Certain output devices permit you to specify extra space between character 
  17802. cells by using the character extra attribute. Sometimes the space between words 
  17803. can also be expanded by increasing the size of the break character, usually 
  17804. defined as the space character, by using the break extra attribute. If this 
  17805. adjustment to either attribute is permitted, the result will be in addition to 
  17806. the sizing effects caused by the following parameters: 
  17807.  
  17808.      Font kerning 
  17809.      Font proportional spacing 
  17810.      Width vectors 
  17811.  
  17812.  The break values you can specify create different effects, as follows: 
  17813.  
  17814.  Break Values and Their Effects 
  17815.  
  17816.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17817.   ΓöéValue               ΓöéEffect                                  Γöé
  17818.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17819.   ΓöéPositive            ΓöéForces characters apart.                Γöé
  17820.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17821.   Γöé0                   ΓöéResumes the default spacing created by  Γöé
  17822.   Γöé                    Γöéother parameters.                       Γöé
  17823.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17824.   ΓöéNegative            ΓöéForces characters together, even        Γöé
  17825.   Γöé                    Γöéoverlapped characters.                  Γöé
  17826.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17827.  
  17828.  These effects are illustrated in the following figure. 
  17829.  
  17830.  The Cumulative Effect of Break Values 
  17831.  
  17832.  The above are fixed integer values specified in world coordinates. Both the 
  17833.  character extra and break extra attributes have initial default values of 0, 
  17834.  which can be changed using GpiSetDefAttrs (CBB_EXTRA) and (CBB_BREAK_EXTRA). 
  17835.  These values can be changed using GpiSetCharExtra or GpiSetCharBreakExtra 
  17836.  respectively, and the values can be queried using GpiQueryCharExtra and 
  17837.  GpiQueryCharBreakExtra. 
  17838.  
  17839.  
  17840. ΓòÉΓòÉΓòÉ 8.1.1.9. Character Color and Mix ΓòÉΓòÉΓòÉ
  17841.  
  17842. The color attribute defines the color used to draw a primitive or an object. 
  17843. The mix attribute determines how the color of a primitive or an object is 
  17844. combined with the color of the drawing surface or any other objects on the 
  17845. surface. 
  17846.  
  17847. The character-string color defines the color used to draw the output from any 
  17848. of the draw-character-string functions. When a presentation space is created, 
  17849. the character-string color default is black. Character strings are one of the 
  17850. primitives that have both a foreground and a background color, as shown in the 
  17851. following figure. 
  17852.  
  17853. For image characters, colors are determined by setting pels. For outline 
  17854. characters, the foreground consists of arcs and lines that define the 
  17855. character; the background color appears between the foreground lines. The 
  17856. character can be solid or filled, in which cases the background color does not 
  17857. appear between the foreground lines. 
  17858.  
  17859. Character string primitives have a color attribute for both the actual 
  17860. character and its character cell, which surrounds the character. The 
  17861. character-cell color is the background color. 
  17862.  
  17863. The foreground mix attribute controls the combination of character-string color 
  17864. and drawing-surface color, while the background mix attribute controls the 
  17865. combination of the character-cell color and the drawing-surface color, as 
  17866. illustrated in the following figure. 
  17867.  
  17868. Character String Primitives 
  17869.  
  17870. When a presentation space is created, the character string mix attribute 
  17871. default is FM_OVERPAINT. The overpaint mix attribute specifies that the 
  17872. character-string color is not to be modified by the color of the drawing 
  17873. surface. If the character string mix attribute is changed, the character-string 
  17874. color is mixed with colors that are already on the drawing surface. 
  17875.  
  17876. The character string background color default is CLR_BACKGROUND, usually 
  17877. defined by the application as the same color as the drawing surface. The 
  17878. character string background mix attribute default is BM_LEAVEALONE. The 
  17879. leave-alone background mix attribute specifies that the character string 
  17880. background color not be drawn. The cell that surrounds the character string 
  17881. appears only if the background character-string color and mix attributes are 
  17882. changed. 
  17883.  
  17884. Use GpiSetAttrs to specify a new color or mix attribute. As input, this 
  17885. function accepts the following: 
  17886.  
  17887.      Type of primitive, for example, PRIM_CHAR 
  17888.      List of attributes to be changed 
  17889.      List of attributes to be set to their default values 
  17890.      Values for the attributes to be changed 
  17891.  
  17892.  GpiSetAttrs also is useful to specify color and mix attributes for a specific 
  17893.  data structure -for example, CHARBUNDLE. GpiSetAttrs provides some protection 
  17894.  against invalid colors. 
  17895.  
  17896.  To determine the current character-string color and mix attributes, call 
  17897.  GpiQueryAttrs, which accepts as input the primitive type and the attributes in 
  17898.  question. GpiQueryAttrs returns an array of values for the queried attributes. 
  17899.  
  17900.  To reset the default character-string color and mix attributes, as with all 
  17901.  attributes specified in CHARBUNDLE, call GpiSetDefAttrs, which accepts as 
  17902.  input the type of primitive, attributes to be changed, and values that will 
  17903.  become the new default values. Changing default values is especially important 
  17904.  when working with segments. Changing the default values during a series of 
  17905.  drawing functions is not recommended. 
  17906.  
  17907.  The character color and mix attributes also can be specified using the 
  17908.  following functions: 
  17909.  
  17910.      GpiSetColor 
  17911.      GpiSetMix 
  17912.      GpiSetBackColor 
  17913.      GpiSetBackMix 
  17914.  
  17915.  If the character color, character background color, mix, or background mix 
  17916.  attributes are specified individually, the following queries can return a 
  17917.  value inconsistent with the current character attributes: 
  17918.  
  17919.      GpiQueryColor 
  17920.      GpiQueryMix 
  17921.      GpiQueryBackColor 
  17922.      GpiQueryBackMix 
  17923.  
  17924.  
  17925. ΓòÉΓòÉΓòÉ 8.2. Using Character String Primitives ΓòÉΓòÉΓòÉ
  17926.  
  17927. You can use the character string primitive functions to perform the following 
  17928. tasks: 
  17929.  
  17930.      Draw a string of characters using the selected font. 
  17931.  
  17932.      Modify the string by using one or more of the following operations: 
  17933.  
  17934.            Scaling 
  17935.            Shearing 
  17936.            Rotating 
  17937.            Transforming 
  17938.            Changing the angle of the baseline 
  17939.  
  17940.      Aligning text 
  17941.  
  17942.  
  17943. ΓòÉΓòÉΓòÉ 8.2.1. Drawing Text ΓòÉΓòÉΓòÉ
  17944.  
  17945. The following figure shows how to select a Helvetica outline font, set the size 
  17946. of the character box, change the foreground color to red, set the character 
  17947. angle, and move the cursor to a specified location. Then, GpiCharString is used 
  17948. to write a string of characters with the specified size, color, angle, and 
  17949. location. 
  17950.  
  17951. #define INCL_GPIPRIMITIVES
  17952. #define INCL_GPILCIDS
  17953. #include <os2.h>
  17954. void fncFONT09(void){
  17955.  
  17956.     POINTL ptl = { 100, 50 };
  17957.     GRADIENTL grad = { 4, 1 };
  17958.     SIZEF sizfx;
  17959.     FATTRS fat;
  17960.     CHARBUNDLE cbnd;
  17961.     FONTMETRICS afm[80];
  17962.     HPS hps;
  17963.     HDC hdc;
  17964.     LONG cHelvFonts, i;
  17965.     LONG cFonts = 0;
  17966.     LONG lcid = 1;
  17967.     LONG devRes[2];               /* Horizontal, vertical font resolutions */
  17968.  
  17969.     cHelvFonts = GpiQueryFonts(hps, QF_PUBLIC, "Helv",
  17970.         &cFonts, sizeof(FONTMETRICS), NULL);
  17971.  
  17972.     GpiQueryFonts(hps, QF_PUBLIC, "Helv", &cHelvFonts,
  17973.         sizeof(FONTMETRICS), afm);
  17974.                                   /* Find an outline Helvetica font.       */
  17975.  
  17976.     for (i = 0; (!(afm[i].fsDefn & FM_DEFN_OUTLINE)) &&
  17977.                i < cHelvFonts; i++)    ;
  17978.  
  17979.     fat.usRecordLength = sizeof(FATTRS);
  17980.     fat.fsSelection = 0;
  17981.     fat.lMatch = afm[i].lMatch;
  17982.     StringCopy(fat.szFacename, afm[i].szFacename);
  17983.     fat.idRegistry = 0;
  17984.     fat.usCodePage = 0;
  17985.     fat.lMaxBaselineExt = 0;
  17986.     fat.lAveCharWidth = 0;
  17987.     fat.fsType = 0;
  17988.     fat.fsFontUse = FATTR_FONTUSE_OUTLINE;
  17989.  
  17990.     GpiCreateLogFont(hps, (PSTR8) NULL, lcid, &fat);
  17991.     GpiSetCharSet(hps, lcid);
  17992.  
  17993.     DevQueryCaps(hdc, CAPS_HORIZONTAL_FONT_RES, 2L, devRes);
  17994.     sizfx.cx = MAKEFIXED((afm[i].sNominalPointSize * devRes[0])/ 720, 0);
  17995.     sizfx.cy = MAKEFIXED((afm[i].sNominalPointSize * devRes[1])/ 720, 0);
  17996.     GpiSetCharBox(hps, &sizfx);
  17997.  
  17998.     cbnd.lColor = CLR_RED;
  17999.     GpiSetAttrs(hps, PRIM_CHAR, CBB_COLOR, NULLHANDLE, &cbnd);
  18000.     GpiSetCharAngle(hps, &grad);
  18001.     GpiMove(hps, &ptl);
  18002.     GpiCharString(hps, 11, "Vector Text");
  18003. } /* fncFONT09 */
  18004.  
  18005. Certain parameters in the above example are explained in Fonts. 
  18006.  
  18007.  
  18008. ΓòÉΓòÉΓòÉ 8.2.2. Formatting Text ΓòÉΓòÉΓòÉ
  18009.  
  18010. Graphics text, like all other graphics objects, has to be positioned correctly 
  18011. in the output area, which usually consists of one of the following: 
  18012.  
  18013.      Entire client area of a PM window 
  18014.      Part of a PM window 
  18015.      Addressable area of a printer 
  18016.  
  18017.  Unlike other graphics objects, however, text is governed by well-established 
  18018.  readability and usability rules. These rules apply generally to text output, 
  18019.  whatever its method of production. Following are some recommendations: 
  18020.  
  18021.      Lines of text from fonts with large point sizes must be more widely 
  18022.       spaced for maximum readability. 
  18023.  
  18024.      The longer the line of text, the greater the space between lines must be 
  18025.       to ensure that the lines do not appear to merge. 
  18026.  
  18027.      Very small text must be split into multiple columns rather than continued 
  18028.       across the page. 
  18029.  
  18030.  Some of these considerations are taken care of by the font designer. The PM 
  18031.  enables you to control both the horizontal and vertical positioning of text. 
  18032.  
  18033.  
  18034. ΓòÉΓòÉΓòÉ 8.2.3. Positioning Text in World Coordinates ΓòÉΓòÉΓòÉ
  18035.  
  18036. When considering text alignment, take the versatility of the coordinate systems 
  18037. into account. The following definitions depend on the current coordinate 
  18038. system: 
  18039.  
  18040. World Coordinate Values 
  18041.  
  18042. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18043. ΓöéValue          ΓöéCorresponds to the direction of...           Γöé
  18044. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18045. ΓöéLeft           ΓöéThe lowest x-coordinate value                Γöé
  18046. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18047. ΓöéRight          ΓöéThe highest x-coordinate value               Γöé
  18048. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18049. ΓöéTop            ΓöéThe highest y-coordinate value               Γöé
  18050. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18051. ΓöéBottom         ΓöéThe lowest y-coordinate value                Γöé
  18052. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18053.  
  18054. To position a character string horizontally, you must know the width of the 
  18055. output area and the length of the character string. The PM provides three 
  18056. different functions for determining the width of the output: 
  18057.  
  18058. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18059. ΓöéFunction Name                 ΓöéDescription                   Γöé
  18060. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18061. ΓöéGpiQueryGraphicsField         ΓöéReturns the bottom-left and   Γöé
  18062. Γöé                              Γöétop-right corners of the      Γöé
  18063. Γöé                              Γöégraphics field in presentationΓöé
  18064. Γöé                              Γöépage units.                   Γöé
  18065. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18066. ΓöéGpiQueryViewingLimits         ΓöéReturns the viewing limit.    Γöé
  18067. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18068. ΓöéGpiQueryPageViewport          ΓöéReturns the page viewport in  Γöé
  18069. Γöé                              Γöédevice units.                 Γöé
  18070. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18071.  
  18072. GpiConvert  changes coordinates into world coordinates. To calculate the width 
  18073. of the output area, subtract its left from its right. For example, if the left 
  18074. is 30, and right is 600, the width of the output area is 570 world coordinates. 
  18075.  
  18076. The PM provides three different functions for determining the length of the 
  18077. character string primitive: 
  18078.  
  18079.      GpiQueryTextBox 
  18080.      GpiQueryCharStringPos 
  18081.      GpiQueryCharStringPosAt 
  18082.  
  18083.  GpiQueryTextBox returns the relative coordinates of a parallelogram that 
  18084.  surrounds the character string. By subtracting the x-coordinate of 
  18085.  TXTBOX_BOTTOMRIGHT from the x-coordinate of TXTBOX_BOTTOMLEFT, an application 
  18086.  can determine the length of the string. 
  18087.  
  18088.  GpiQueryCharStringPos returns an array of points, in which the world 
  18089.  coordinate position of each character in the string is recorded. The last 
  18090.  value in the array becomes the new current position if the string is drawn 
  18091.  using GpiCharStringPos. By subtracting this position from the current position 
  18092.  (obtained using GpiQueryCurrentPosition), the length of the string can be 
  18093.  determined. 
  18094.  
  18095.  GpiQueryCharStringPosAt also returns an array of points, in which the world 
  18096.  coordinate position of each character in the string is recorded. The last 
  18097.  value of the array becomes the new current position if the string is drawn 
  18098.  using GpiCharStringPosAt. This function accepts a specified starting position 
  18099.  for the character string. By specifying a starting position of (0,0) for 
  18100.  example, an application can determine the length of the string without 
  18101.  subtraction. 
  18102.  
  18103.  The current position actually is not updated by either GpiQueryCharStringPos 
  18104.  or GpiQueryCharStringPosAt. 
  18105.  
  18106.  When a character string does not fill the width of the output area, it can be 
  18107.  positioned in one of the four ways illustrated in the following figure. 
  18108.  
  18109.  Horizontal Positioning of Text Strings 
  18110.  
  18111.  To left-align the text, set the x-coordinate of the current position to the 
  18112.  left of the output area before drawing the character string. 
  18113.  GpiSetCurrentPosition must be used to set the current position if your 
  18114.  application draws the string using either GpiCharString or GpiCharStringPos. 
  18115.  Both GpiCharStringAt and GpiCharStringPosAt accept a starting position as 
  18116.  input. 
  18117.  
  18118.  To right-align the text, subtract the length of the character string from the 
  18119.  width of the output area, then add the difference to the x-coordinate of the 
  18120.  current position before drawing the character string. If the output area is 
  18121.  570 world coordinates wide, for example, and the character string is 436 world 
  18122.  coordinates long, add 134 to the x-coordinate of the current position before 
  18123.  drawing the text. 
  18124.  
  18125.  To center the text, subtract the length of the character string from the width 
  18126.  of the output area, then divide the difference by 2 before adding it to the 
  18127.  x-coordinate of the current position. If the difference is 134, for example, 
  18128.  you add 67 to the x-coordinate of the current position. 
  18129.  
  18130.  To justify the text, so that the text string fills the width of the output 
  18131.  area, distribute the surplus space throughout the character string. For 
  18132.  example, you could add the extra space to the break characters only, or you 
  18133.  could share it equally among all characters in the string. Text justification 
  18134.  requires the individual positioning each character in the string using either 
  18135.  of the following calls: 
  18136.  
  18137.      GpiCharStringPos-draws at the current position and permits you to 
  18138.       position every character after the first. 
  18139.  
  18140.      GpiCharStringPosAt-permits you to position every character, including the 
  18141.       first. 
  18142.  
  18143.  Both functions enable you to specify a different character increment for each 
  18144.  character in the string. Distance is measured from the character reference 
  18145.  point of one character to the character reference point of the next character. 
  18146.  The values you specify apply only to the character string supplied at input; 
  18147.  they do not become current attribute values. 
  18148.  
  18149.  If you are formatting a block of text, the string might be wider than the 
  18150.  output area, or longer than 256 characters. In either case, your application 
  18151.  must separate the string into smaller groups of characters so that it fits 
  18152.  either criteria. A good starting point is to determine the number of 
  18153.  characters planned for each line. Dividing the output width by the character 
  18154.  cell width can provide a first estimate as to where to separate a character 
  18155.  string. An application can use this estimate to work through the string 
  18156.  looking for spaces. Each time you find a space, compare the length of the 
  18157.  string (up to the space) with the width of the output area. When the string is 
  18158.  longer than the output area, work back to the previous space and display or 
  18159.  print that part of the string. You can format the entire block of text for the 
  18160.  output area in this way. 
  18161.  
  18162.  When you are formatting a block instead of a single line of text, an 
  18163.  application must specify the vertical placement of each line. If you are using 
  18164.  an image font, you have the assurance that each character is the same height. 
  18165.  However, you do not have that assurance with an outline font, nor that the 
  18166.  text block is written in the same font. Therefore, when calculating the 
  18167.  separation of lines, avoid using complex combinations of font metrics values. 
  18168.  Instead, it is recommended that you multiply the desired point size, or 
  18169.  em-height metric, of the text by 1.2. 
  18170.  
  18171.  
  18172. ΓòÉΓòÉΓòÉ 9. Clipping and Boundary Determination ΓòÉΓòÉΓòÉ
  18173.  
  18174. Both clipping and boundary determination are graphics operations concerned with 
  18175. limiting the amount of graphics information passed between different coordinate 
  18176. spaces. The following topics are related to the information in this chapter: 
  18177.  
  18178.      Presentation spaces and device contexts 
  18179.      Coordinate spaces and transformations 
  18180.      Regions 
  18181.      Paths 
  18182.  
  18183.  
  18184. ΓòÉΓòÉΓòÉ 9.1. About Clipping ΓòÉΓòÉΓòÉ
  18185.  
  18186. Clipping enables the PM to discard parts of a picture that lie outside a 
  18187. specified clipping boundary. The parts of the picture enclosed by the boundary 
  18188. are said to be inside the clipping area. A clipping area might be a single 
  18189. rectangle or a complex shape, depending on the method used to define it. 
  18190.  
  18191. Note:  In this chapter, the word area does not refer to an area primitive; it 
  18192. describes the shape or shapes used for clipping graphics output. 
  18193.  
  18194. If an application attempts to draw outside of a clipping area, the operating 
  18195. system ensures that the output does not appear on the drawing surface of the 
  18196. output device. For example, if an application defined a triangular clipping 
  18197. area before drawing text output, all text outside of the triangle would be 
  18198. discarded, even though an entire page of text was defined. The following figure 
  18199. illustrates the result. 
  18200.  
  18201. Triangular Clip Path 
  18202.  
  18203. Clipping boundaries are defined by the application. The PM performs some 
  18204. clipping automatically when, for example, your application's graphic output is 
  18205. clipped to fit a client window area or the device's output area for a hardcopy 
  18206. device. 
  18207.  
  18208.  
  18209. ΓòÉΓòÉΓòÉ 9.1.1. Types of Clipping Areas ΓòÉΓòÉΓòÉ
  18210.  
  18211. The PM programming interface assembles the application's graphics output in a 
  18212. process that can use up to five coordinate spaces, known collectively as the 
  18213. viewing pipeline. Clipping can occur at each stage in the viewing pipeline. 
  18214. Objects in world coordinate, model, page, or device space can be clipped. When 
  18215. an application defines clipping areas in several coordinate spaces, the final 
  18216. result is similar to combining all the areas into a single clipping area. This 
  18217. single area is defined by the intersection of the areas in each coordinate 
  18218. space. 
  18219.  
  18220. Clipping in different coordinate spaces, however, is a means of conceptualizing 
  18221. the process to aid in its understanding. Clipping, like transformations, 
  18222. actually happens in one operation, with all the different types of clipping 
  18223. being performed on all primitives in the device space at once. 
  18224.  
  18225. The following table describes the different types of clipping areas associated 
  18226. with the different coordinate spaces. 
  18227.  
  18228. Clipping Areas and Coordinate Space Summary 
  18229.  
  18230. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18231. ΓöéClipping Area   ΓöéCoordinate SpaceΓöéDescription                 Γöé
  18232. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18233. ΓöéClip path       ΓöéWorld space     ΓöéAlways inclusive/inclusive  Γöé
  18234. Γöé                Γöé                Γöé                            Γöé
  18235. Γöé                Γöé                ΓöéClipping area can have      Γöé
  18236. Γöé                Γöé                Γöécurved edges                Γöé
  18237. Γöé                Γöé                Γöé                            Γöé
  18238. Γöé                Γöé                ΓöéClipping area can be        Γöé
  18239. Γöé                Γöé                Γöérotated.                    Γöé
  18240. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18241. ΓöéViewing limit   ΓöéModel space     ΓöéAlways a rectangular        Γöé
  18242. Γöé                Γöé                Γöéclipping boundary           Γöé
  18243. Γöé                Γöé                Γöé                            Γöé
  18244. Γöé                Γöé                ΓöéAlways inclusive/inclusive  Γöé
  18245. Γöé                Γöé                Γöé                            Γöé
  18246. Γöé                Γöé                ΓöéRotating clipping area      Γöé
  18247. Γöé                Γöé                Γöéresults in larger rectangle.Γöé
  18248. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18249. ΓöéGraphics field  ΓöéPage space      ΓöéAlways a rectangular        Γöé
  18250. Γöé                Γöé                Γöéclipping boundary           Γöé
  18251. Γöé                Γöé                Γöé                            Γöé
  18252. Γöé                Γöé                ΓöéAlways inclusive/inclusive  Γöé
  18253. Γöé                Γöé                Γöé                            Γöé
  18254. Γöé                Γöé                ΓöéRotating clipping area      Γöé
  18255. Γöé                Γöé                Γöéimpossible. Cannot specify aΓöé
  18256. Γöé                Γöé                Γöédevice transform with       Γöé
  18257. Γöé                Γöé                Γöérotation.                   Γöé
  18258. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18259. ΓöéClip region     ΓöéDevice space    ΓöéCan be a single rectangle orΓöé
  18260. Γöé                Γöé                Γöémultiple rectangles that    Γöé
  18261. Γöé                Γöé                Γöéoverlap or remain separate  Γöé
  18262. Γöé                Γöé                Γöé                            Γöé
  18263. Γöé                Γöé                ΓöéAlways inclusive/exclusive  Γöé
  18264. Γöé                Γöé                Γöé                            Γöé
  18265. Γöé                Γöé                ΓöéRotating the clipping area  Γöé
  18266. Γöé                Γöé                Γöéis impossible.              Γöé
  18267. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18268.  
  18269. Note:  Inclusive/inclusive means that the operating system includes the bottom 
  18270. and leftmost edges of the rectangle in the clipping area as well as the top and 
  18271. rightmost edges. Inclusive/exclusive means that the operating system includes 
  18272. the bottom and leftmost edges but excludes the top and rightmost edges. 
  18273.  
  18274. The following figure illustrates the differences between inclusive-inclusive 
  18275. and inclusive-exclusive clipping. 
  18276.  
  18277. Inclusive/Inclusive and Inclusive/Exclusive Clipping 
  18278.  
  18279.  
  18280. ΓòÉΓòÉΓòÉ 9.1.1.1. The Clip Path ΓòÉΓòÉΓòÉ
  18281.  
  18282. The clip path defines the clipping boundary in world coordinate space. Paths 
  18283. are graphic objects that serve many purposes, only one of which is to be used 
  18284. as a clipping mechanism. Paths are described in Paths. The recommended 
  18285. functional sequence for creating a clip path is as follows: 
  18286.  
  18287.  Function                 Effect 
  18288.  
  18289.  GpiBeginPath             Begins the path definition. 
  18290.  
  18291.  Line and arc GPIs        Gives the path shape. 
  18292.  
  18293.  GpiEndPath               Ends the path definition. 
  18294.  
  18295.  GpiModifyPath            An optional step explained below. 
  18296.  
  18297.  GpiSetClipPath           Converts the path to a clip path. 
  18298.  
  18299.  Before converting to a clip path, the path can be modified using 
  18300.  GpiModifyPath. If modified, the path is converted to a geometric (wide) line 
  18301.  using the current geometric width, line join, and line end attributes. The 
  18302.  shape defined by the geometric line then is used for the clip path. The clip 
  18303.  path can be a simple unmodified path. 
  18304.  
  18305.  GpiSetClipPath accepts two different path identifiers as input: 
  18306.  
  18307.      1SCP_RESET (default) 
  18308.      0SCP_AND 
  18309.  
  18310.  The default path identifier, SCP_RESET, resets the clip path to infinity, 
  18311.  which displays the picture without clipping. If this value is selected, the 
  18312.  current clip path definition is discarded instead of stored. 
  18313.  
  18314.  A path identifier of SCP_AND specifies that the clip path be redefined as the 
  18315.  mathematical intersection of the stored clip path and the current path 
  18316.  definition. 
  18317.  
  18318.  The only method of specifying the clip path to the current path, after 
  18319.  GpiSetClipPath has been called, is to call GpiSetClipPath twice:  the first 
  18320.  call with a path identifier of SCP_RESET, and the second with a path 
  18321.  identifier of SCP_AND. 
  18322.  
  18323.  The following figure shows a triangle shape that has been defined within a 
  18324.  path bracket and selected as the current clip path. The filled box shape is 
  18325.  drawn subsequently, and, therefore, is clipped to the triangle. 
  18326.  
  18327.  The Clipping Path 
  18328.  
  18329.  The broken lines show the area of the box that has been clipped. 
  18330.  
  18331.  Clip paths are most useful when you want to use an irregular clipping 
  18332.  boundary, or when the clipping boundary itself is an integral part of the 
  18333.  picture. Both are true of the clip path in the previous figure. 
  18334.  
  18335.  GpiSetClipPath also accepts one of two construction options as input: 
  18336.  
  18337.      SCP_ALTERNATE (default) 
  18338.      SCP_WINDING (must be selected if path has been modified). 
  18339.  
  18340.  Any drawing that is clipped to the current clip path must follow the alternate 
  18341.  or the winding rules as to whether that portion of a picture is included in 
  18342.  the clip area. The alternate and winding modes are described for paths in 
  18343.  Paths in Alternate Mode and Paths in Winding Mode. Any point on the boundary 
  18344.  of the path is considered within the path and is not clipped. 
  18345.  
  18346.  To end clipping to the current clip path, call GpiSetClipPath with an 
  18347.  identifier of 0. This function deselects the current clip path by setting it 
  18348.  to infinity. In some circumstances, the current clip path is deselected 
  18349.  automatically. 
  18350.  
  18351.  A path definition can be stored in a graphics segment, and if that segment is 
  18352.  retained, the path can be re-created as required when the segment is redrawn. 
  18353.  Clip path definitions can be stored in a retained segment also and redrawn 
  18354.  when required. In draw-and-retain mode (DM_DRAWANDRETAIN), the initial path or 
  18355.  clip path is created as the segment is constructed. If the current drawing 
  18356.  mode is retain (DM_RETAIN), however, the path or clip path is not created 
  18357.  until the first time the segment is drawn. 
  18358.  
  18359.  
  18360. ΓòÉΓòÉΓòÉ 9.1.1.2. The Viewing Window ΓòÉΓòÉΓòÉ
  18361.  
  18362. The viewing window defines a rectangular clipping boundary in model space. It 
  18363. is defined with GpiSetViewingLimits. As input to this function, you supply the 
  18364. model coordinates of the lower-left and upper-right corners of the viewing 
  18365. window. 
  18366.  
  18367. When a drawing primitive, such as a line, intersects a viewing window, any part 
  18368. of that line outside of the viewing window is clipped. Any point on the 
  18369. boundary of the viewing window is considered within the window, and is not 
  18370. clipped. By default, the viewing window performs no clipping. In this case, all 
  18371. graphics output in the model space is transformed. The following figure shows 
  18372. how the viewing window outlines a part of model space. The Viewing Window 
  18373.  
  18374. This example shows how a presentation page is constructed. The viewing window 
  18375. outlines the tail of the aircraft, which is scaled and translated when drawn in 
  18376. presentation-page space. The rest of the aircraft is clipped away during the 
  18377. drawing process. 
  18378.  
  18379.  
  18380. ΓòÉΓòÉΓòÉ 9.1.1.3. The Graphics Field ΓòÉΓòÉΓòÉ
  18381.  
  18382. The graphics field defines a rectangular clipping area in the presentation 
  18383. page. It is defined in GpiSetGraphicsField. 
  18384.  
  18385. Note:  If this clipping area is to be used, it must be defined before any 
  18386. drawing begins. 
  18387.  
  18388. Specify the size of the graphics field in presentation page coordinates as 
  18389. input to GpiSetGraphicsField. 
  18390.  
  18391. Only the graphic output contained in this clipping boundary is visible when the 
  18392. presentation page is transformed to device space. By default, the graphics 
  18393. field is infinitely large and therefore performs no clipping. If you do specify 
  18394. a graphics field, however, any point on its boundary is considered within the 
  18395. graphics field and is not clipped. When a drawing primitive, such as a line, 
  18396. intersects a graphic field, any part of the line outside the graphics field is 
  18397. clipped. The following figure shows how a graphics field could be defined for a 
  18398. presentation page. 
  18399.  
  18400. The Graphics Field 
  18401.  
  18402. The broken line shows an arbitrary graphics field that is smaller than the 
  18403. presentation page. The aircraft tail, a separate object in the presentation 
  18404. page, is outside the graphics field and is clipped away as it is drawn. 
  18405.  
  18406. The picture assembled in the graphics field is the picture that is displayed or 
  18407. printed. If you do not define a graphics field, the picture assembled in the 
  18408. presentation page is the picture that is displayed or printed. The presentation 
  18409. page is not a clipping boundary, and graphics in page coordinate space that are 
  18410. outside the presentation page boundary, therefore, might be visible. 
  18411.  
  18412.  
  18413. ΓòÉΓòÉΓòÉ 9.1.1.4. The Current Clipping Region ΓòÉΓòÉΓòÉ
  18414.  
  18415. Clipping regions are clipping areas defined (as regions) by one or more 
  18416. rectangles in device coordinates. Because they are defined in device 
  18417. coordinates, clipping regions do not suffer from the rounding errors associated 
  18418. with other types of clipping. Therefore, they are ideally suited to redraw part 
  18419. of the picture without boundary discontinuities, for example, after a BitBlt 
  18420. operation has been used to scroll a picture in a window. 
  18421.  
  18422. Regions are not available automatically for clipping. To select an existing 
  18423. region as the current clipping region, use GpiSetClipRegion. By default, the 
  18424. clipping region is the same size as the drawing surface. Only one clipping 
  18425. region can exist in the presentation space at one time. To end clipping to the 
  18426. current clipping region, deselect it by calling GpiSetClipRegion with a NULL 
  18427. region handle. A deselected clipping region retains the effects of any changes 
  18428. made to it while it was a clipping region and can be reselected. 
  18429.  
  18430. You do not have to deselect the current clipping region before selecting 
  18431. another. Each selected clipping region automatically replaces the one before 
  18432. it. If a clipping region exists when you call GpiSetClipRegion, the existing 
  18433. clipping region reverts to being a normal region, and its handle is returned. 
  18434.  
  18435. Clip paths and clip regions share a common implementation, but clip regions are 
  18436. faster to create than clip paths. This might be a performance factor when 
  18437. designing your application for repairing the screen or redrawing the picture in 
  18438. a client window after the display has changed. The following figure illustrates 
  18439. this use of regions. 
  18440.  
  18441. Screen Repairing 
  18442.  
  18443. Note:  GpiSetClipRegion does not cause graphics orders to be added to the 
  18444. current segment. Therefore, variations in the clip region must not be used to 
  18445. construct the picture. The clip region is intended to define a fixed clipping 
  18446. area for the entire picture. 
  18447.  
  18448. When you select the current clipping region, none of the region-related GPI 
  18449. functions can be used for that region. The PM provides a series of functions 
  18450. that mirror the region-related functions. However, all of these functions work 
  18451. in world coordinates rather than device coordinates, and, therefore, are 
  18452. subject to current transformations. 
  18453.  
  18454. Any of the following functions can be used to get information about or to 
  18455. redefine the current clipping region. 
  18456.  
  18457.      GpiQueryClipBox 
  18458.  
  18459.       You can request the dimensions of the smallest rectangle that encloses 
  18460.       all current clipping boundaries by calling GpiQueryClipBox. The following 
  18461.       boundaries are included in this calculation: 
  18462.  
  18463.         -  Current clip path 
  18464.         -  Current viewing window 
  18465.         -  Current graphics field 
  18466.         -  Current clipping region 
  18467.         -  Visible region of the window 
  18468.  
  18469.      GpiIntersectClipRectangle 
  18470.  
  18471.       GpiIntersectClipRectangle redefines the current clipping region to the 
  18472.       intersection of the existing clipping region with the rectangle whose 
  18473.       dimensions you supply in this function. This has the same effect as 
  18474.       CRGN_AND in GpiCombineRegion. 
  18475.  
  18476.      GpiExcludeClipRectangle 
  18477.  
  18478.       You also can redefine the current clipping region using 
  18479.       GpiExcludeClipRectangle. This function excludes a specified rectangle 
  18480.       from the current region and has the same effect as CRGN_DIFF on 
  18481.       GpiCombineRegion. 
  18482.  
  18483.      GpiOffsetClipRegion 
  18484.  
  18485.       The current clipping region can be moved from its current position using 
  18486.       GpiOffsetClipRegion. 
  18487.  
  18488.      GpiPtVisible 
  18489.  
  18490.       GpiPtVisible tells you whether a point, expressed in world coordinates, 
  18491.       is visible on the screen. A point is visible if it is within all current 
  18492.       clipping boundaries and is in the visible region of the window. 
  18493.  
  18494.      GpiRectVisible 
  18495.  
  18496.       GpiRectVisible tells you whether any part or the whole of a rectangle, 
  18497.       whose dimensions you supply in world coordinates, is visible on the 
  18498.       screen. The rectangle is visible if it intersects both the visible region 
  18499.       of the window and all current clipping boundaries. 
  18500.  
  18501.  
  18502. ΓòÉΓòÉΓòÉ 9.1.2. How Clipping Is Implemented ΓòÉΓòÉΓòÉ
  18503.  
  18504. The rules by which the PM implements clipping are as follows: 
  18505.  
  18506.      Any primitive completely outside the clipping boundary is discarded. 
  18507.  
  18508.       When a primitive crosses a clipping boundary, any part outside the 
  18509.       boundary is discarded. 
  18510.  
  18511.      Any primitive completely within the clipping boundary is retained. 
  18512.  
  18513.       When a primitive crosses a clipping boundary, any part within the 
  18514.       boundary is retained. 
  18515.  
  18516.      When the clipping boundary is a clip path, viewing window, or graphics 
  18517.       field, any point that falls on the boundary is considered within the 
  18518.       clipping boundary. 
  18519.  
  18520.       When the clipping boundary is a clipping region, any point on the top or 
  18521.       right boundaries of a rectangle is discarded; and any point on the bottom 
  18522.       or left boundaries of a rectangle, that is not on the right or top 
  18523.       boundaries also, is included in the region. 
  18524.  
  18525.  
  18526. ΓòÉΓòÉΓòÉ 9.1.3. Redrawing Nondynamic Graphics ΓòÉΓòÉΓòÉ
  18527.  
  18528. An interactive graphics application usually permits changes to the displayed 
  18529. picture. For example, an object can be moved or sized, and you can plan for 
  18530. this by defining particular segments as dynamic. Dynamic segments are described 
  18531. in Editing Retained Graphics and Graphics Segments. 
  18532.  
  18533. If dynamic segments are inappropriate (when you are using nonretained graphics, 
  18534. for example), you can repair the picture using a clipping region, for example, 
  18535. a picture of a hexagon and a circle as shown in the following figure. 
  18536.  
  18537. A Hexagon and Circle 
  18538.  
  18539. If the circle is moved to another screen position by the use of an input 
  18540. device, you must repair its original location and redraw it in its new 
  18541. location. The following figure shows this sequence of events. Following are the 
  18542. steps required to do this: 
  18543.  
  18544.    1. Determine the size of the smallest rectangle that contains the circle in 
  18545.       its current position using a process called boundary determination. 
  18546.  
  18547.    2. Switch off the DCTL_DISPLAY flag of GpiSetDrawControl, apply a 
  18548.       translation transformation to the circle, and redraw it in its new 
  18549.       position. 
  18550.  
  18551.    3. Determine the size of the smallest rectangle that contains the circle in 
  18552.       its new position using boundary determination. 
  18553.  
  18554.    4. Use GpiConvert to convert the model-space coordinates provided by the 
  18555.       boundary-determination process to device-space coordinates. 
  18556.  
  18557.    5. Use the device-space coordinates of the two rectangles to create a 
  18558.       region, and select it as the current clipping region. 
  18559.  
  18560.    6. Switch on the DCTL_DISPLAY flag of GpiSetDrawControl. 
  18561.  
  18562.    7. Call GpiErase (or set the erase-before-draw control) to erase the current 
  18563.       contents of the clipping region. 
  18564.  
  18565.    8. Redraw the picture with the circle in its new position. Any part of the 
  18566.       picture within the clipping region is redrawn. That part of the hexagon 
  18567.       that is outside the clipping region is unaffected by the change and does 
  18568.       not have to be redrawn. 
  18569.  
  18570.  Defining a Clipping Region 
  18571.  
  18572.  The broken circle shows the position to which the circle is to be moved.  The 
  18573.  two bounding rectangles overlap, and produce a complex region.  If the circle 
  18574.  were to be moved much farther away from its start position, the region would 
  18575.  comprise two disjoint rectangles. 
  18576.  
  18577.  
  18578. ΓòÉΓòÉΓòÉ 9.2. About Boundary Determination ΓòÉΓòÉΓòÉ
  18579.  
  18580. Boundary determination is an operation to compute the size of the smallest 
  18581. rectangle that encloses a graphics output in model space. One use of boundary 
  18582. determination is to enable you to repair only the affected parts of the screen, 
  18583. when a graphics object is moved, for example, or when a graphics object is 
  18584. changed some other way. Dynamic segments are not included in 
  18585. boundary-determination operations. 
  18586.  
  18587. Boundary determination can be performed on both retained and nonretained 
  18588. graphics. In both instances, you request boundary data to be calculated by 
  18589. setting the boundary data flag (DCTL_BOUNDARY) in GpiSetDrawControl. If you do 
  18590. not set this flag (for example, if you do not want to collect boundary data 
  18591. unnecessarily) and later find that you need boundary data for a particular 
  18592. object, you can do the following: 
  18593.  
  18594.    1. Switch on the boundary-data flag, and switch off the display flag, using 
  18595.       GpiSetDrawControl. 
  18596.  
  18597.    2. Redraw the object in its current location. Boundary data is collected, 
  18598.       but the object is unaltered. 
  18599.  
  18600.  If you are drawing retained graphics, each drawing request (GpiDrawSegment, 
  18601.  GpiDrawFrom, and GpiDrawChain) causes the boundary data resulting from the 
  18602.  drawing to be made available. The application must request this data 
  18603.  explicitly by calling GpiQueryDeviceBitmapFormats after each drawing request 
  18604.  for which it wants to examine boundary data. Boundary data is returned to the 
  18605.  application in model space coordinates. The boundary data is reset before each 
  18606.  retained drawing operation, so there is no risk of accumulating data from 
  18607.  separate operations. 
  18608.  
  18609.  If you are drawing nonretained graphics, boundary data is accumulated for each 
  18610.  GpiPutData and for each individual primitive drawing function. The application 
  18611.  can request the accumulated boundary data at any time by calling 
  18612.  GpiQueryBoundaryData. Data continues to accumulate unless you call the 
  18613.  GpiResetBoundaryData; it is not reset automatically. 
  18614.  
  18615.  The boundary data returned to you is in the form of four model-space 
  18616.  coordinates, which are the lowest (x,y) positions and the highest (x,y) 
  18617.  positions of the bounding rectangle in model space as illustrated in the 
  18618.  following figure. 
  18619.  
  18620.  The Bounding Rectangle 
  18621.  
  18622.  
  18623. ΓòÉΓòÉΓòÉ 9.3. Using Clipping and Boundary Determination ΓòÉΓòÉΓòÉ
  18624.  
  18625. This section explains how to use clipping functions to: 
  18626.  
  18627.      Create a clip path or clip region 
  18628.      Exclude a rectangular area from a clip region 
  18629.      Add a rectangular area to a clip region 
  18630.      Set the clip region to the intersection of the current clip region and a 
  18631.       specified rectangle 
  18632.      Determine the size of the smallest rectangle that will surround the 
  18633.       intersection of the current clipping areas completely 
  18634.  
  18635.  
  18636. ΓòÉΓòÉΓòÉ 9.3.1. Creating a Clip Path ΓòÉΓòÉΓòÉ
  18637.  
  18638. A drawing and computer-aided-design (CAD) application may require the ability 
  18639. to clip to curved edges. If so, it must use a clip path to define a curved 
  18640. clipping area in world coordinates. Because clip paths (especially ones that 
  18641. clip to curved edges) require considerable memory and processing time, use them 
  18642. only when necessary. Whenever possible, your application must use a clip 
  18643. region, graphics field, or viewing limit. 
  18644.  
  18645. To create a clip path, do the following: 
  18646.  
  18647.    1. Determine the clip path's shape and size (in world coordinates). 
  18648.  
  18649.    2. Use GpiBeginPath to begin defining the path. 
  18650.  
  18651.    3. Create the path. 
  18652.  
  18653.    4. Close the path definition with GpiEndPath. 
  18654.  
  18655.    5. Create a clip path from the path definition with GpiSetClipPath. 
  18656.  
  18657.  The following figure uses this procedure to create an elliptical clip path. 
  18658.  
  18659.   #define INCL_GPIPATHS
  18660.   #include <os2.h>
  18661.   void fncCLIP01(void){
  18662.       HPS    hps;                      /* Presentation-space handle */
  18663.       POINTL ptl1;                     /* Point structure           */
  18664.       FIXED  fxArc;                    /* Multiplier for arc        */
  18665.       LONG idPath;                     /* Path identifier           */
  18666.           .
  18667.           .           /* Load ptl1 with coordinates of clip path.   */
  18668.           .
  18669.       idPath = 1;
  18670.       GpiBeginPath(hps, idPath);       /* Begins path               */
  18671.       GpiMove(hps, &ptl1);             /* Sets current position     */
  18672.       fxArc  = MAKEFIXED(50, 0);       /* Sets arc multiplier       */
  18673.       GpiFullArc(hps, DRO_OUTLINE, fxArc);  /* Defines ellipse      */
  18674.       GpiEndPath(hps);                 /* Ends path                 */
  18675.       GpiSetClipPath(hps, idPath, SCP_ALTERNATE | SCP_AND);
  18676.   } /* fncCLIP01 */
  18677.  
  18678.  
  18679. ΓòÉΓòÉΓòÉ 9.3.2. Creating a Clip Region ΓòÉΓòÉΓòÉ
  18680.  
  18681. To create a clip region, first determine its size and shape (in device 
  18682. coordinates). Load the coordinates for the rectangles that define the clip 
  18683. region into an array of RECTL structures. Then create the region and set it to 
  18684. a clip region with GpiCreateRegion and GpiSetClipRegion respectively. 
  18685.  
  18686. The following figure shows how to create a clip region. 
  18687.  
  18688. #include <os2.h>
  18689. void fncCLIP02(void){
  18690.     HPS  hps;
  18691.     HRGN hrgn;
  18692.     RECTL arcl[3];
  18693.         .
  18694.         .  /* Load array of RECTL structures with coordinates.       */
  18695.         .
  18696.     hrgn = GpiCreateRegion(hps, sizeof(arcl) / sizeof(RECTL), arcl);
  18697.     GpiSetClipRegion(hps, hrgn, NULL);
  18698. } /* fncCLIP02 */
  18699.  
  18700.  
  18701. ΓòÉΓòÉΓòÉ 9.3.3. Excluding a Rectangular Area from a Clip Region ΓòÉΓòÉΓòÉ
  18702.  
  18703. Some applications let you prepare output in multiple stages. For example, a 
  18704. word processing application might permit you to prepare your text first and 
  18705. then add bit maps that enhance and support the text. These applications can use 
  18706. GpiExcludeClipRectangle to exclude an area from a clip region, preventing the 
  18707. user from deleting output that already exists. 
  18708.  
  18709. To exclude an area from a clip region, first determine the dimensions (in 
  18710. device coordinates) of the smallest rectangle that completely surrounds the 
  18711. area to exclude from the clip region. Then call GpiExcludeClipRectangle, 
  18712. including as input the dimensions of the area to exclude. The following figure 
  18713. illustrates these steps. 
  18714.  
  18715. #include <os2.h>
  18716. void fncCLIP03(void){
  18717.     HPS   hps;
  18718.     RECTL rcl;
  18719.         .
  18720.         .  /* Set rectangle coordinates here. */
  18721.         .
  18722.     GpiExcludeClipRectangle(hps, &rcl);
  18723. } /* fncCLIP03 */
  18724.  
  18725.  
  18726. ΓòÉΓòÉΓòÉ 9.3.4. Adding a Rectangular Area to a Clip Region ΓòÉΓòÉΓòÉ
  18727.  
  18728. Some applications might need to increase the size of a clip region. For 
  18729. example, a user might request that a desktop publishing application extend a 
  18730. column of text on a page. 
  18731.  
  18732. To add a rectangular area to a clip region, follow these steps: 
  18733.  
  18734.    1. Determine the dimensions (in device coordinates) of the rectangular area 
  18735.       to add to the current clip region. 
  18736.  
  18737.    2. Release the current clip region using GpiSetClipRegion. GpiCombineRegion 
  18738.       cannot combine regions if either of the regions is a clip region. 
  18739.  
  18740.    3. Call GpiCreateRegion and pass it the dimensions of the rectangle that you 
  18741.       defined in Step 1. This creates a second region that you can combine with 
  18742.       the first. 
  18743.  
  18744.    4. Call GpiCreateRegion again and create a third region that will be the 
  18745.       final destination region. 
  18746.  
  18747.    5. Call GpiCombineRegion to create a region that combines the original 
  18748.       region and the region you created in Step 2. It is not essential to 
  18749.       create a third region because GpiCombineRegion can use one of the 2 
  18750.       source regions being combined for a target region. 
  18751.  
  18752.    6. Call GpiSetClipRegion and pass it the handle returned by 
  18753.       GpiCombineRegion. 
  18754.  
  18755.  The following figure illustrates these steps. 
  18756.  
  18757.   #define INCL_GPIREGIONS
  18758.   #include <os2.h>
  18759.   void fncCLIP04(void){
  18760.       HPS   hps;
  18761.       RECTL rcl1, rcl2, rcl3;
  18762.       HRGN  hrgn1, hrgn2, hrgn3;
  18763.  
  18764.       hrgn1 = GpiCreateRegion(hps, sizeof(rcl1) / sizeof(RECTL), &rcl1);
  18765.       GpiSetClipRegion(hps, hrgn1, NULL);       /* Creates first clipping region */
  18766.           .
  18767.           .  /* Compute coordinates of second region here.                       */
  18768.           .
  18769.       GpiSetClipRegion(hps, NULLHANDLE, NULL);  /* Releases first clipping region*/
  18770.       hrgn2 = GpiCreateRegion(hps, sizeof(rcl2) / Sizeof(RECTL), &rcl2);
  18771.       hrgn3 = GpiCreateRegion(hps, sizeof(rcl3) / Sizeof(RECTL), &rcl3);
  18772.       GpiCombineRegion(hps, hrgn3, hrgn1, hrgn2, CRGN_OR);
  18773.       GpiSetClipRegion(hps, hrgn3, NULL);       /* Creates second clipping region*/
  18774.   } /* fncCLIP04 */
  18775.  
  18776.  
  18777. ΓòÉΓòÉΓòÉ 9.3.5. Setting the Clip Region to a Region Intersection ΓòÉΓòÉΓòÉ
  18778.  
  18779. Your application might require the ability to set the clip region to the 
  18780. intersection of the current clip region and another region. Do this with 
  18781. GpiIntersectClipRectangle, as shown in the following: 
  18782.  
  18783. #include <os2.h>
  18784. void fncCLIP05(void){
  18785.     RECTL rcl;
  18786.     HPS hps;
  18787.         .
  18788.         . /* Load rcl with coordinates of rectangle to intersect. */
  18789.         .
  18790.     GpiIntersectClipRectangle(hps, &rcl);
  18791. } /* fncCLIP05 */
  18792.  
  18793.  
  18794. ΓòÉΓòÉΓòÉ 9.3.6. Determining the Size of a Clipping Area ΓòÉΓòÉΓòÉ
  18795.  
  18796. If an application is able to specify a clip path in world space, a viewing 
  18797. limit in model space, a graphics field in page space, and a clip region in 
  18798. device space, it might be necessary for your application to determine the size 
  18799. of the clipping area formed by the intersection of the four. GpiQueryClipBox 
  18800. returns the dimensions (in world coordinates) of the smallest rectangle that 
  18801. completely surrounds the intersection of all the defined clipping areas, 
  18802. including the visible region. 
  18803.  
  18804. The following figure shows how to use GpiQueryClipBox to fill a RECTL structure 
  18805. with the desired coordinates. 
  18806.  
  18807. #include <os2.h>
  18808. void fncCLIP06(void){
  18809.     HPS   hps;
  18810.     RECTL rclClip;
  18811.     GpiQueryClipBox(hps, &rclClip);
  18812. } /* fncCLIP06 */
  18813.  
  18814.  
  18815. ΓòÉΓòÉΓòÉ 10. Color and Mix Attributes ΓòÉΓòÉΓòÉ
  18816.  
  18817. This chapter describes color and mix attributes and their use in OS/2 
  18818. applications. The following topics are related to information in this chapter: 
  18819.  
  18820.      Presentation spaces and device contexts 
  18821.      Line and arc primitives 
  18822.      Marker primitives 
  18823.      Area primitives 
  18824.      Character string primitives 
  18825.      Bit maps and images primitives 
  18826.  
  18827.  
  18828. ΓòÉΓòÉΓòÉ 10.1. About Color and Mix Attributes ΓòÉΓòÉΓòÉ
  18829.  
  18830. Color and mix are two attributes of graphics primitives. They can be specified 
  18831. by an application in a number of ways, and are specified in the ...BUNDLE data 
  18832. structures associated with the five graphics primitives and in bit maps. Bit 
  18833. maps and some of the primitives have both foreground and background color 
  18834. attributes. For example, a character string primitive has a foreground color 
  18835. attribute that specifies the color of the character and a background color 
  18836. attribute that specifies the color of the character cell surrounding the 
  18837. character. 
  18838.  
  18839. The mix attribute controls how each primitive is combined with the existing 
  18840. drawing. Among other things, it affects the color that results when primitives 
  18841. of different colors overlap. Primitives with foreground and background color 
  18842. attributes also have foreground and background mix attributes. 
  18843.  
  18844.  
  18845. ΓòÉΓòÉΓòÉ 10.2. Color Implementation ΓòÉΓòÉΓòÉ
  18846.  
  18847. Understanding how colors are implemented can assist in understanding how the 
  18848. color and mix attributes work. 
  18849.  
  18850. The pel is the smallest element of the display screen that can be addressed. 
  18851. For monochrome displays, pels are either turned off or turned on. For color 
  18852. displays, each pel contains a red, green, and blue section, each of which is 
  18853. called a phosphor. 
  18854.  
  18855. The display has color guns of red, blue, and green light that illuminate the 
  18856. phosphors in a single pel. By switching these color guns on and off in 
  18857. different combinations, eight standard colors can be produced. By varying the 
  18858. intensities of the color guns, additional colors can be produced. The following 
  18859. table shows the eight standard colors that can be generated from the three 
  18860. color guns. 
  18861.  
  18862. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18863. ΓöéPel appears... ΓöéRed            ΓöéGreen          ΓöéBlue           Γöé
  18864. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18865. ΓöéRed            ΓöéON             ΓöéOFF            ΓöéOFF            Γöé
  18866. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18867. ΓöéGreen          ΓöéOFF            ΓöéON             ΓöéOFF            Γöé
  18868. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18869. ΓöéBlue           ΓöéOFF            ΓöéOFF            ΓöéON             Γöé
  18870. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18871. ΓöéWhite          ΓöéON             ΓöéON             ΓöéON             Γöé
  18872. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18873. ΓöéBlack          ΓöéOFF            ΓöéOFF            ΓöéOFF            Γöé
  18874. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18875. ΓöéCyan           ΓöéOFF            ΓöéON             ΓöéON             Γöé
  18876. Γöé(Turquoise)    Γöé               Γöé               Γöé               Γöé
  18877. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18878. ΓöéPink           ΓöéON             ΓöéOFF            ΓöéON             Γöé
  18879. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18880. ΓöéYellow         ΓöéON             ΓöéON             ΓöéOFF            Γöé
  18881. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18882.  
  18883. Each pel is described internally by a number of bits of storage. In a 
  18884. monochrome display, only one bit per pel is required, and that bit is either on 
  18885. or off. In an eight-color system, three bits per pel are necessary. Each of 
  18886. those three bits records the on or off setting of one color gun. 
  18887.  
  18888. To be able to control the intensity of a color and obtain more than eight 
  18889. colors, more than three bits per pel are needed. For example, six bits per pel 
  18890. provide 32 different combinations. 
  18891.  
  18892. The wider the range of available colors, the more bits per pel required for 
  18893. each color. This storage issue is resolved by keeping a wide choice of colors 
  18894. but restricting the number of colors available at any given time. Applications 
  18895. define the colors that they want to use in a logical color table. Selecting a 
  18896. color defined in the logical color table produces the nearest available color 
  18897. in the hardware palette. 
  18898.  
  18899.  
  18900. ΓòÉΓòÉΓòÉ 10.2.1. RGB Color Encoding ΓòÉΓòÉΓòÉ
  18901.  
  18902. The red, green, and blue (RGB) components of a color are stored in either an 
  18903. RGB or RGB2 data structure, or as a long integer (32-bit) value. The color 
  18904. fields in the RGB2 structure and in the long integer follow the same rules. 
  18905.  
  18906. If stored as a long integer, the RGB value has the first 8 bits reserved for a 
  18907. flag value and the remaining 24 bits reserved for color intensity. The flag 
  18908. byte must be set to 0. Each of the last three bytes specifies a color 
  18909. intensity, in the range 0 through 255, for a single primary color. 
  18910.  
  18911. If a byte contains 0, the corresponding primary color is not present. As the 
  18912. value in the byte increases, the intensity of the primary color increases. For 
  18913. example, if the byte contains 128, the primary color is pale; if the byte 
  18914. contains 255, the primary color is as intense as the device permits. 
  18915.  
  18916. The RGB value is determined by the following equation: 
  18917.  
  18918.     RGB Value = (R * 65536) + (G * 256) + B
  18919.  
  18920.     Where:
  18921.         R is the red intensity
  18922.         G is the green intensity
  18923.         B is the blue intensity
  18924.  
  18925. If all three bytes are set to 0, the resulting color is black; if they all are 
  18926. set to 255, the resulting color is white. The RGB value associated with each of 
  18927. the standard eight colors is in the following table. 
  18928.  
  18929. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18930. ΓöéColor               ΓöéRGB value           Γöé
  18931. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18932. ΓöéBlack               Γöé0x00000000          Γöé
  18933. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18934. ΓöéRed                 Γöé0x00FF0000          Γöé
  18935. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18936. ΓöéGreen               Γöé0x0000FF00          Γöé
  18937. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18938. ΓöéBlue                Γöé0x000000FF          Γöé
  18939. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18940. ΓöéPink                Γöé0x00FF00FF          Γöé
  18941. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18942. ΓöéCyan                Γöé0x0000FFFF          Γöé
  18943. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18944. ΓöéYellow              Γöé0x00FFFF00          Γöé
  18945. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18946. ΓöéWhite               Γöé0x00FFFFFF          Γöé
  18947. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18948.  
  18949.  
  18950. ΓòÉΓòÉΓòÉ 10.2.2. Color Tables ΓòÉΓòÉΓòÉ
  18951.  
  18952. A color table is an array of RGB values. There are two kinds of color tables: 
  18953. logical and physical. The logical color table is a list of colors specific to a 
  18954. presentation space. An application typically uses a logical color table to 
  18955. define colors specific to that application. 
  18956.  
  18957. The physical color table specifies colors the device can generate currently. 
  18958. These device colors are shared by every application on the system. Because some 
  18959. display adapters cannot generate every possible device color at the same time, 
  18960. the physical color table can be a subset of the full range of possible device 
  18961. colors. The operating system maps the RGB values specified in the logical color 
  18962. table to device colors in the physical color table. 
  18963.  
  18964.  
  18965. ΓòÉΓòÉΓòÉ 10.2.3. Logical Color Table ΓòÉΓòÉΓòÉ
  18966.  
  18967. A logical color table contains a variable number of entries, each of which 
  18968. describes a different RGB (Red, Green, Blue) combination that produces a color. 
  18969. The principle of the color table is illustrated in the following figure. 
  18970.  
  18971. Logical Color Table 
  18972.  
  18973. This simplified example demonstrates that to produce yellow on the computer 
  18974. screen, red and green are mixed in equal intensities, and no blue is used at 
  18975. all. In this example, yellow is addressed in the color table by index 21. 
  18976. Notice that this is not the same index number used in the default logical color 
  18977. table, which indicates that this color table has been changed by the 
  18978. application. 
  18979.  
  18980. A logical color table is stored in a presentation space and is specific to that 
  18981. presentation space. A logical color table enables applications to specify 
  18982. colors as indexes rather than explicit RGB values. 
  18983.  
  18984. The colors displayed are likely to vary from one output device to another so 
  18985. the definitions in the color table can be fine-tuned to get the best results. 
  18986. Any color can be made more or less intense by altering its definition in the 
  18987. logical color table. 
  18988.  
  18989.  
  18990. ΓòÉΓòÉΓòÉ 10.2.3.1. Default Logical Color Table ΓòÉΓòÉΓòÉ
  18991.  
  18992. The PM provides a default logical color table, which defines the colors and the 
  18993. indexes that retrieve them, as shown in the following table. 
  18994.  
  18995. Default Logical Color Table 
  18996.  
  18997. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18998. ΓöéColor Index     ΓöéIndex ΓöéEffect                                Γöé
  18999. Γöé                ΓöéNumberΓöé                                      Γöé
  19000. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19001. ΓöéCLR_FALSE       Γöé-5    ΓöéAll bits are set to 0.                Γöé
  19002. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19003. ΓöéCLR_TRUE        Γöé-4    ΓöéAll bits are set to 1.                Γöé
  19004. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19005. ΓöéCLR_DEFAULT     Γöé-3    ΓöéDefault value                         Γöé
  19006. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19007. ΓöéCLR_WHITE       Γöé-2    ΓöéWhite                                 Γöé
  19008. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19009. ΓöéCLR_BLACK       Γöé-1    ΓöéBlack                                 Γöé
  19010. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19011. ΓöéCLR_BACKGROUND  Γöé0     ΓöéNatural background color for the      Γöé
  19012. Γöé                Γöé      Γöédevice                                Γöé
  19013. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19014. ΓöéCLR_BLUE        Γöé1     ΓöéBlue                                  Γöé
  19015. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19016. ΓöéCLR_RED         Γöé2     ΓöéRed                                   Γöé
  19017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19018. ΓöéCLR_PINK        Γöé3     ΓöéPink                                  Γöé
  19019. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19020. ΓöéCLR_GREEN       Γöé4     ΓöéGreen                                 Γöé
  19021. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19022. ΓöéCLR_CYAN        Γöé5     ΓöéCyan                                  Γöé
  19023. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19024. ΓöéCLR_YELLOW      Γöé6     ΓöéYellow                                Γöé
  19025. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19026. ΓöéCLR_NEUTRAL     Γöé7     ΓöéNeutral - The contrasting color to    Γöé
  19027. Γöé                Γöé      ΓöéCLR_BACKGROUND                        Γöé
  19028. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19029. ΓöéCLR_DARKGRAY    Γöé8     ΓöéDark gray                             Γöé
  19030. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19031. ΓöéCLR_DARKBLUE    Γöé9     ΓöéDark blue                             Γöé
  19032. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19033. ΓöéCLR_DARKRED     Γöé10    ΓöéDark red                              Γöé
  19034. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19035. ΓöéCLR_DARKPINK    Γöé11    ΓöéDark pink                             Γöé
  19036. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19037. ΓöéCLR_DARKGREEN   Γöé12    ΓöéDark green                            Γöé
  19038. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19039. ΓöéCLR_DARKCYAN    Γöé13    ΓöéDark cyan                             Γöé
  19040. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19041. ΓöéCLR_BROWN       Γöé14    ΓöéBrown                                 Γöé
  19042. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19043. ΓöéCLR_PALEGRAY    Γöé15    ΓöéPale gray                             Γöé
  19044. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19045.  
  19046. Note:  Entries after CLR_PALEGRAY have device-dependent defaults. 
  19047.  
  19048. PM maps the color index name to the index number (shown in the second column of 
  19049. the previous table), then uses that number to address the appropriate color. 
  19050.  
  19051.  
  19052. ΓòÉΓòÉΓòÉ 10.2.3.2. Device-Independent Color Indexing ΓòÉΓòÉΓòÉ
  19053.  
  19054. Three of the index names provide a level of device independence in choosing 
  19055. colors:  CLR_DEFAULT, CLR_BACKGROUND, and CLR_NEUTRAL. These indexes enable an 
  19056. application to select colors according to their purpose, and thus build device 
  19057. independence into your applications. The purpose of a color does not vary from 
  19058. one device to another, although the actual color used to implement that purpose 
  19059. might. The following table describes these indexes and the purpose of each: 
  19060.  
  19061. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  19062. ΓöéIndex               ΓöéPurpose                                 Γöé
  19063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19064. ΓöéCLR_BACKGROUND      ΓöéThe natural background color for the    Γöé
  19065. Γöé                    Γöédevice. This is the color of the paper  Γöé
  19066. Γöé                    Γöéon a printer, and the window background Γöé
  19067. Γöé                    Γöécolor (white, by default) on a display. Γöé
  19068. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19069. ΓöéCLR_NEUTRAL         ΓöéThe contrast color to CLR_BACKGROUND.   Γöé
  19070. Γöé                    ΓöéThis is usually black on a printer, and Γöé
  19071. Γöé                    Γöéthe default window text color (black, byΓöé
  19072. Γöé                    Γöédefault) on a display.                  Γöé
  19073. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19074. ΓöéCLR_DEFAULT         ΓöéUnless redefined, this has the same     Γöé
  19075. Γöé                    Γöéeffect as CLR_NEUTRAL.                  Γöé
  19076. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19077.  
  19078. The colors produced by CLR_DEFAULT, CLR_BACKGROUND, and CLR_NEUTRAL in the 
  19079. default logical color table depend on the output device. For example, 
  19080. CLR_NEUTRAL could produce black on a device with a white background or white on 
  19081. a device with a black background. 
  19082.  
  19083.  
  19084. ΓòÉΓòÉΓòÉ 10.2.4. Defining a Logical Color Table ΓòÉΓòÉΓòÉ
  19085.  
  19086. To change the values in the default logical color table (that is, to load a new 
  19087. logical color table), use GpiCreateLogColorTable. Using this function, an 
  19088. application can do the following: 
  19089.  
  19090.      Replace part or all of the default color table. 
  19091.      Add color definitions to the default color table. 
  19092.      Reset the logical color table to its default values. 
  19093.  
  19094.  There are two methods of making changes: 
  19095.  
  19096.      To add to a table or change some of its  contents, rather than replace 
  19097.       the table completely, supply an array of color indexes and their 
  19098.       associated RGB values. 
  19099.  
  19100.      To load a consecutive sequence of index values, supply only an array of 
  19101.       RGB values without index values. 
  19102.  
  19103.  
  19104. ΓòÉΓòÉΓòÉ 10.2.4.1. Color Tables in Index Mode ΓòÉΓòÉΓòÉ
  19105.  
  19106. The default logical color table is defined as an array of color indexes and 
  19107. their associated RGB values. A table in this format is in index mode. 
  19108.  
  19109. To alter a logical color table in index mode, specify either LCOLF_INDRGB or 
  19110. LCOLF_CONSECRGB as the format value in GpiCreateLogColorTable. If an 
  19111. application uses the color index names to address the contents of a loaded 
  19112. color table in index mode, the color identified by the associated index number 
  19113. is retrieved. For example, CLR_NEUTRAL produces the color addressed by index 
  19114. number 7. If CLR_NEUTRAL must be blue, the application must define the color 
  19115. table so that index number 7 addresses the RGB definition of the appropriate 
  19116. shade of blue. 
  19117.  
  19118. If an application uses the format LCOLF_INDRGB when calling 
  19119. GpiCreateLogColorTable, the application supplies an array of index and RGB 
  19120. pairs to update the table. These values do not have to be consecutive. An 
  19121. application can change the contents of an existing table and add entries to the 
  19122. end of the table. 
  19123.  
  19124. If an application calls GpiCreateLogColorTable using the LCOLF_CONSECRGB 
  19125. format, the application supplies an array of RGB values and a starting index. 
  19126. When using this format, the RGB values must be consecutive. You cannot use a 
  19127. single call to GpiCreateLogColorTable to redefine CLR_BLUE and CLR_PINK without 
  19128. also specifying an RGB value for CLR_RED. As with LCOLF_INDRGB, this format can 
  19129. be used to change the contents of the existing table and to add entries to the 
  19130. end of the table. 
  19131.  
  19132. When an application calls GpiSetAttrs to put a value into the color field of a 
  19133. graphics primitive attribute structure, the value is an index into the logical 
  19134. color table. When the operating system draws the primitive, it uses this index 
  19135. to determine the RGB value specified in the logical color table by the 
  19136. application. It then searches the physical color table for the color closest to 
  19137. this RGB value. The operating system then draws the primitive, using the color 
  19138. from the physical color table. How closely the drawn colors match the colors in 
  19139. the logical color table depends on the device colors in the physical color 
  19140. table. 
  19141.  
  19142.  
  19143. ΓòÉΓòÉΓòÉ 10.2.4.2. Color Tables in RGB Mode ΓòÉΓòÉΓòÉ
  19144.  
  19145. The color values specified with GpiSetAttrs  and GpiSetColor also can be 
  19146. specified directly as RGB values rather than as indexes. To enable this, the 
  19147. logical color table must be switched into RGB mode by calling 
  19148. GpiCreateLogColorTable, specifying a format of LCOLF_RGB. (No color array is 
  19149. passed.) 
  19150.  
  19151. If the color table is in RGB mode, it can be switched back to index mode and 
  19152. reset to its original default values by specifying either LCOLF_INGRGB or 
  19153. LCOLF_CONSECRGB in GpiCreateLogColorTable. 
  19154.  
  19155.  
  19156. ΓòÉΓòÉΓòÉ 10.2.5. Querying the Available Colors ΓòÉΓòÉΓòÉ
  19157.  
  19158. Several query functions are provided for applications to get information about 
  19159. the current logical and physical color tables before defining a logical color 
  19160. table. 
  19161.  
  19162. Applications use GpiQueryColorData to determine whether the default logical 
  19163. color table is in effect. If it is not, the following information about the 
  19164. loaded logical color table is returned: 
  19165.  
  19166.      Format of the current logical color table 
  19167.  
  19168.      Smallest and largest color indexes (if the table is in index mode) 
  19169.       supported in this color table. The smallest color index is always 0, and 
  19170.       the largest color index is never less than 15, because deleting entries 
  19171.       from the default logical color table is not permitted. 
  19172.  
  19173.  GpiQueryRealColors returns the RGB values of each of the distinct colors 
  19174.  defined in the physical color table of the current device. It also can return 
  19175.  the index in the current logical color table that references each of the 
  19176.  colors in the physical table. 
  19177.  
  19178.  To determine the available colors nearest to a specified color on a particular 
  19179.  device, call GpiQueryNearestColor, which accepts as input the RGB value of the 
  19180.  desired color. The function returns the RGB value of the nearest available 
  19181.  color in the physical color table of the associated device. 
  19182.  
  19183.  Applications can use GpiQueryRGBColor to determine the RGB value of a 
  19184.  particular color. GpiQueryRGBColor accepts as input the index to the logical 
  19185.  color table entry of the color in question. Output from this function is the 
  19186.  RGB value that the index would reference in the physical color table. If a 
  19187.  logical color table is loaded in RGB mode, GpiQueryRGBColor returns the same 
  19188.  results as GpiQueryNearestColor. 
  19189.  
  19190.  Conversely, to determine the index value that references a given RGB color (or 
  19191.  the closest match to that color) in the physical color table, an application 
  19192.  uses GpiQueryColorIndex. The application can determine which colors are in the 
  19193.  current logical color table by calling GpiQueryLogColorTable. To determine 
  19194.  which colors are in the physical color table, call GpiQueryRealColors. 
  19195.  
  19196.  
  19197. ΓòÉΓòÉΓòÉ 10.2.6. Physical Color Table ΓòÉΓòÉΓòÉ
  19198.  
  19199. Each output device has its own physical color table, which is organized like a 
  19200. logical color table. The physical color table contains the RGB color 
  19201. definitions of the distinct colors that the device can produce, while a logical 
  19202. color table contains the definitions of the colors as chosen by an application. 
  19203. When an application draws on an output device, the PM maps the index value that 
  19204. addresses the current color in the logical color table to the index that 
  19205. retrieves the closest match for the current color in the physical color table. 
  19206.  
  19207. Because this substitution occurs when the graphics are drawn, the presentation 
  19208. space can be associated with a number of different device contexts without 
  19209. invalidating the logical color definitions. For example, an application can 
  19210. create a picture on the screen using a wide range of colors, then direct that 
  19211. drawing to an eight-pen vector plotter. The drawing is reproduced without 
  19212. having to be re-created. Although the picture, as drawn by the plotter, does 
  19213. not have the variety of colors displayed on the screen, the substitution 
  19214. process selects the nearest match for each color on the screen from the eight 
  19215. available colors on the plotter. 
  19216.  
  19217.  
  19218. ΓòÉΓòÉΓòÉ 10.2.7. Palette Manager ΓòÉΓòÉΓòÉ
  19219.  
  19220. Applications can use GpiCreatePalette to change the physical color palette by 
  19221. creating a new palette. This function is used if the application has specific 
  19222. color needs and must ensure that the color is part of the physical color 
  19223. palette. GpiCreatePalette also enables an application to prevent dithering of 
  19224. the 16 default colors by setting the flag parameter to LCOL_PURECOLOR. If the 
  19225. full 256 colors in the palette are needed, the application can set the flag to 
  19226. LCOL_OVERRIDE_DEFAULT_COLORS. It is recommended that the palette manager 
  19227. functions be used only when really necessary because the operating system 
  19228. cannot guarantee consistent colors in other windows and the ability to change 
  19229. the physical palette is device dependent. 
  19230.  
  19231. After the palette is created, an application can set or change any of the 
  19232. values in the palette by calling GpiSetPaletteEntries. To delete the palette, 
  19233. applications use GpiDeletePalette, passing the handle of the palette to be 
  19234. deleted. (The handle is returned by GpiCreatePalette when the palette is 
  19235. created.) 
  19236.  
  19237. GpiQueryPalette enables applications to determine the palette currently 
  19238. selected for a given presentation space. A palette can be used by more than one 
  19239. presentation space at the same time. The operating system maintains a count of 
  19240. the number of presentation spaces using a specific palette. Complete 
  19241. information on the current palette can be accessed by GpiQueryPaletteInfo. 
  19242.  
  19243. Palettes also can be shared by using a palette handle. 
  19244.  
  19245. When coding an application, color table functions and color palette functions 
  19246. must not be mixed. The application can call DevQueryCaps to determine whether 
  19247. the hardware supports palettes, then call the appropriate functions. 
  19248.  
  19249.  
  19250. ΓòÉΓòÉΓòÉ 10.2.7.1. Realizing a Color Palette ΓòÉΓòÉΓòÉ
  19251.  
  19252. WinRealizePalette maps the colors requested by the application into the color 
  19253. palette for the system. When the application's window is activated, the palette 
  19254. changes are transferred, or realized, into the physical palette for the system. 
  19255.  
  19256. When a palette is realized, there might not be enough empty palette entries to 
  19257. accommodate the additional palette changes (a maximum of 256 entries). For 
  19258. example, it is possible that some of the colors changed in the physical palette 
  19259. are being used by another application. In this situation, a WM_REALIZEPALETTE 
  19260. message is posted to all the applications running on the desktop. 
  19261.  
  19262. On receiving the WM_REALIZEPALETTE message, applications using palette manager 
  19263. functions must repaint their screens. The original application colors are 
  19264. mapped to the closest matching color in the new palette. Applications that do 
  19265. not use palette manager functions normally perform default processing within 
  19266. their applications causing a repaint of their windows with the closest match 
  19267. from the palette. If there are no changes, just additions, to the physical 
  19268. palette, no message is sent. 
  19269.  
  19270. Note:  The palette manager maps a window's colors to the closest available 
  19271. value in the palette when the physical palette has to be changed, but this does 
  19272. not guarantee that the color will be a close match to the original color used. 
  19273.  
  19274. As the focus changes from window to window, the physical palette changes 
  19275. according to the activated window. Notification messages are sent as necessary 
  19276. to other applications. 
  19277.  
  19278. If the physical color values in the palette have to change to accommodate the 
  19279. number of palette entries passed from the application when a palette is 
  19280. realized, the number of altered entries in the physical palette is returned by 
  19281. WinRealizePalette. 
  19282.  
  19283. Color palette realization is available only to systems that have a minimum of 
  19284. 256 colors. 
  19285.  
  19286.  
  19287. ΓòÉΓòÉΓòÉ 10.2.8. Color Attribute ΓòÉΓòÉΓòÉ
  19288.  
  19289. The PM graphic interface uses a variety of colors. These colors are referred to 
  19290. as the system colors, and they are defined in the system color table, which is 
  19291. separate from an application's logical color table. To find out the RGB values 
  19292. of the system colors, call WinQuerySysColor. 
  19293.  
  19294. The colors of graphic primitives are specified separately from the system 
  19295. colors. Every primitive has a foreground color, and some also have a background 
  19296. color. 
  19297.  
  19298.  
  19299. ΓòÉΓòÉΓòÉ 10.2.8.1. Primitive Foreground ΓòÉΓòÉΓòÉ
  19300.  
  19301. The foreground of a primitive is the primitive itself. For example, the 
  19302. foreground of a full arc primitive is the full arc, as shown in the following 
  19303. figure. 
  19304.  
  19305. Foreground of a Primitive 
  19306.  
  19307. The full arc primitive is drawn in a different color from the window 
  19308. background. 
  19309.  
  19310. By default, the foreground color of all primitives is the color addressed by 
  19311. the index CLR_DEFAULT. In the default color table, this produces black on a 
  19312. graphics display. If the application replaces the default logical color table, 
  19313. CLR_DEFAULT produces the color addressed by index number 7 (CLR_NEUTRAL). 
  19314.  
  19315.  
  19316. ΓòÉΓòÉΓòÉ 10.2.8.2. Primitive Background ΓòÉΓòÉΓòÉ
  19317.  
  19318. The following primitives have a background: 
  19319.  
  19320.      Areas 
  19321.      Character strings 
  19322.      Images 
  19323.      Markers 
  19324.  
  19325.  The background of any character or marker primitive, whether the primitive is 
  19326.  from an image or an outline font, is the entire character or marker box. First 
  19327.  the background is drawn, then the foreground is drawn on top of it. Similarly, 
  19328.  the background of an area primitive is the entire area to be filled. The 
  19329.  background of an image primitive, however, is that part of the primitive in 
  19330.  which the pels are not set. The following figure shows the background of a 
  19331.  primitive. 
  19332.  
  19333.  Background of a Primitive 
  19334.  
  19335.  The background of this character-string primitive is the entire character box. 
  19336.  
  19337.  The index to the default background color is CLR_BACKGROUND, which provides a 
  19338.  background color appropriate for the device. On a printer, CLR_BACKGROUND is 
  19339.  the color of the paper. On a display screen, CLR_BACKGROUND is the default 
  19340.  window background color. 
  19341.  
  19342.  
  19343. ΓòÉΓòÉΓòÉ 10.2.8.3. Changing the Foreground and Background Colors of Primitives ΓòÉΓòÉΓòÉ
  19344.  
  19345. To change the current foreground color, use GpiSetColor. As input, the 
  19346. application supplies either the index to the required color in the current 
  19347. logical color table or the RGB value of the color, depending on the mode of the 
  19348. table. Color indexes higher than those supplied in the default color table must 
  19349. be loaded explicitly before they can be used. 
  19350.  
  19351. It is possible to specify one of the system colors (for example, 
  19352. SYSCLR_ACTIVEBORDER) as the current foreground (or background) color of a 
  19353. primitive. The color appears as defined in the system color table, and the 
  19354. logical color table is not used. 
  19355.  
  19356. The specified color becomes the current color, and the foreground of any 
  19357. primitive drawn subsequently is drawn in that color. The current foreground 
  19358. color for a particular primitive type is set by calling GpiSetAttrs. For 
  19359. example, if an application sets the current foreground color to CLR_RED by 
  19360. calling GpiSetColor, and sets the current foreground color for marker 
  19361. primitives to CLR_CYAN by calling GpiSetAttrs, all subsequent markers are cyan, 
  19362. and all other primitives are red. 
  19363.  
  19364. To change the current primitive background color, call GpiSetBackColor. To 
  19365. ensure that this color is different from the background color of the output 
  19366. area (so that the entire primitive background is visible), the current window 
  19367. background color must not be the same as the current primitive background 
  19368. color. Also, select an appropriate background mix attribute. 
  19369.  
  19370. GpiQueryBackColor returns the current background color setting for a character 
  19371. primitive. To learn the current foreground color setting, use GpiQueryColor. 
  19372. GpiQueryAttrs can be used to determine the current foreground and background 
  19373. color values for a single primitive type. 
  19374.  
  19375.  
  19376. ΓòÉΓòÉΓòÉ 10.2.9. Color Output and Mix Attributes ΓòÉΓòÉΓòÉ
  19377.  
  19378. A mix attribute is a bitwise operation on the color indexes in a device's 
  19379. logical color table. Mix attributes enable colors to be specified in relation 
  19380. to other colors. When an application draws a graphics primitive, the operating 
  19381. system uses a mix attribute to determine the color that appears on the output 
  19382. device. 
  19383.  
  19384. For example, instead of specifying that a line should be black and, therefore, 
  19385. invisible if the background also is black, an application can use a mix 
  19386. attribute of FM_XOR to specify that the line always should be drawn the inverse 
  19387. of the background color. 
  19388.  
  19389. Suppose an application has set the lColor field in the LINEBUNDLE structure to 
  19390. CLR_RED and the usMixMode field in the same structure to FM_OR. The current 
  19391. color of the drawing surface is CLR_GREEN. To determine the color of a line, 
  19392. the operating system performs a bitwise OR operation on the indexes of these 
  19393. colors, as follows: 
  19394.  
  19395.           0010  (the default index for red)
  19396.           0100  (the default index for green)
  19397.          ------
  19398.           0110  (result of bitwise OR)
  19399.  
  19400. In this case, the result is 6-the index for yellow. This means that even though 
  19401. the application specified CLR_RED in the LINEBUNDLE structure, a yellow line 
  19402. appears when the application calls any of the functions that draw a line 
  19403. primitive. 
  19404.  
  19405.  
  19406. ΓòÉΓòÉΓòÉ 10.2.10. Mix Attribute ΓòÉΓòÉΓòÉ
  19407.  
  19408. The mix attribute determines how each primitive an application draws is 
  19409. combined with any existing drawing. In color applications, the mix attribute 
  19410. determines the color that results when one primitive is drawn on top of 
  19411. another. There are two forms of the mix attribute:  foreground mix and 
  19412. background mix. 
  19413.  
  19414. The foreground mix attribute governs how the foreground of a primitive is 
  19415. combined with the existing drawing, and it applies to all primitive types. The 
  19416. background mix attribute governs how the background of a primitive is combined 
  19417. with the existing drawing, and it is applicable only to those primitives that 
  19418. have a background. Primitives that can be affected by the background mix 
  19419. attribute are areas, character strings, images, and markers. The primitive 
  19420. attribute data structures contain fields for both foreground and background 
  19421. color and mix attributes. 
  19422.  
  19423. There are 17 foreground mix attributes. For each mix attribute, the indexes of 
  19424. the foreground and current drawing-surface colors are combined by using one of 
  19425. the bitwise operators. The available foreground mix settings are listed in the 
  19426. following table. 
  19427.  
  19428. Foreground Mix Attributes 
  19429.  
  19430. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  19431. ΓöéMix Attribute  ΓöéEffect         ΓöéDescription                   Γöé
  19432. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19433. ΓöéFM_DEFAULT     ΓöéDefault        ΓöéDefault foreground mix        Γöé
  19434. Γöé               Γöé               Γöéattribute (overpaint).        Γöé
  19435. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19436. ΓöéFM_OR          ΓöéOR             ΓöéIndex value of the final colorΓöé
  19437. Γöé               Γöé               Γöéis determined by a bitwise OR Γöé
  19438. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19439. Γöé               Γöé               Γöéforeground color and the indexΓöé
  19440. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19441. Γöé               Γöé               Γöésurface.                      Γöé
  19442. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19443. ΓöéFM_OVERPAINT   ΓöéOverpaint      ΓöéIndex value of the final colorΓöé
  19444. Γöé               Γöé               Γöéis that of the foreground     Γöé
  19445. Γöé               Γöé               Γöécolor. This is the default    Γöé
  19446. Γöé               Γöé               Γöéforeground mix attribute.     Γöé
  19447. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19448. ΓöéFM_XOR         ΓöéExclusive-OR   ΓöéIndex value of the final colorΓöé
  19449. Γöé               Γöé(XOR)          Γöéis determined by a bitwise XORΓöé
  19450. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19451. Γöé               Γöé               Γöéforeground color and the indexΓöé
  19452. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19453. Γöé               Γöé               Γöésurface.                      Γöé
  19454. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19455. ΓöéFM_LEAVEALONE  ΓöéLeave-alone    ΓöéIndex value of the final colorΓöé
  19456. Γöé               Γöé(Invisible)    Γöéis that of the index of the   Γöé
  19457. Γöé               Γöé               Γöécolor of the drawing surface. Γöé
  19458. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19459. ΓöéFM_AND         ΓöéAND            ΓöéIndex value of the final colorΓöé
  19460. Γöé               Γöé               Γöéis determined by a bitwise ANDΓöé
  19461. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19462. Γöé               Γöé               Γöéforeground color and the indexΓöé
  19463. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19464. Γöé               Γöé               Γöésurface.                      Γöé
  19465. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19466. ΓöéFM_SUBTRACT    Γöé(Inverse       ΓöéIndex value of the final colorΓöé
  19467. Γöé               ΓöéSource) AND    Γöéis determined by inverting theΓöé
  19468. Γöé               ΓöéDestination    Γöéindex of the foreground color Γöé
  19469. Γöé               Γöé               Γöéand performing a bitwise AND  Γöé
  19470. Γöé               Γöé               Γöéoperation on this value and   Γöé
  19471. Γöé               Γöé               Γöéthe index of the color of the Γöé
  19472. Γöé               Γöé               Γöédrawing surface.              Γöé
  19473. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19474. ΓöéFM_MASKSRCNOT  ΓöéSource AND     ΓöéIndex value of the final colorΓöé
  19475. Γöé               Γöé(Inverse       Γöéis determined by inverting theΓöé
  19476. Γöé               ΓöéDestination)   Γöéindex value of the            Γöé
  19477. Γöé               Γöé               Γöédrawing-surface color and     Γöé
  19478. Γöé               Γöé               Γöéperforming a bitwise AND      Γöé
  19479. Γöé               Γöé               Γöéoperation on this value and   Γöé
  19480. Γöé               Γöé               Γöéthe index value of the        Γöé
  19481. Γöé               Γöé               Γöéforeground color.             Γöé
  19482. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19483. ΓöéFM_ZERO        ΓöéAll zeros      ΓöéRGB value of the final color'sΓöé
  19484. Γöé               Γöé               Γöéis always 0x00000000.         Γöé
  19485. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19486. ΓöéFM_NOTMERGESRC ΓöéInverse (SourceΓöéIndex value of the final colorΓöé
  19487. Γöé               ΓöéOR Destination)Γöéis always the inverse of the  Γöé
  19488. Γöé               Γöé               ΓöéFM_OR result.                 Γöé
  19489. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19490. ΓöéFM_NOTXORSRC   ΓöéInverse (SourceΓöéIndex value of the final colorΓöé
  19491. Γöé               ΓöéXOR            Γöéis always the inverse of the  Γöé
  19492. Γöé               ΓöéDestination)   ΓöéFM_XOR result.                Γöé
  19493. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19494. ΓöéFM_INVERT      ΓöéInverse        ΓöéIndex value of the final colorΓöé
  19495. Γöé               Γöé(Destination)  Γöéis always the inverse of the  Γöé
  19496. Γöé               Γöé               Γöéindex of the color of the     Γöé
  19497. Γöé               Γöé               Γöédrawing surface.              Γöé
  19498. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19499. ΓöéFM_MERGESRCNOT ΓöéSource OR      ΓöéIndex value of the final colorΓöé
  19500. Γöé               Γöé(Inverse       Γöéis determined by performing a Γöé
  19501. Γöé               ΓöéDestination)   Γöébitwise OR operation on the   Γöé
  19502. Γöé               Γöé               Γöéindex of the foreground color Γöé
  19503. Γöé               Γöé               Γöéand the inverse of the index  Γöé
  19504. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19505. Γöé               Γöé               Γöésurface.                      Γöé
  19506. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19507. ΓöéFM_NOTCOPYSRC  ΓöéInverse        ΓöéIndex value of the final colorΓöé
  19508. Γöé               Γöé(Source)       Γöéis the inverse of the index ofΓöé
  19509. Γöé               Γöé               Γöéthe foreground color.         Γöé
  19510. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19511. ΓöéFM_MERGENOTSRC Γöé(Inverse       ΓöéIndex value of the final colorΓöé
  19512. Γöé               ΓöéSource) OR     Γöéis determined by performing a Γöé
  19513. Γöé               ΓöéDestination    Γöébitwise AND operation on the  Γöé
  19514. Γöé               Γöé               Γöéindex of the drawing surface'sΓöé
  19515. Γöé               Γöé               Γöécolor and the inverse of the  Γöé
  19516. Γöé               Γöé               Γöéindex of the foreground color.Γöé
  19517. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19518. ΓöéFM_NOTMASKSRC  ΓöéInverse (SourceΓöéIndex value of the final colorΓöé
  19519. Γöé               ΓöéAND            Γöéis the inverse of the FM_AND  Γöé
  19520. Γöé               ΓöéDestination)   Γöéresult.                       Γöé
  19521. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19522. ΓöéFM_ONE         ΓöéAll 1's.       ΓöéRGB value of the final color  Γöé
  19523. Γöé               Γöé               Γöéis always 0x00FFFFFF.         Γöé
  19524. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19525.  
  19526. There are five background mix attributes. For each mix attribute, the index 
  19527. value for the background color and the current drawing-surface color (in the 
  19528. device's physical color table) are combined using one of the bitwise operators. 
  19529.  
  19530. The RGB values are those from the physical color table. When the result of the 
  19531. mix attribute's bitwise operation defines a color different from that of both 
  19532. the drawing surface and the drawing attribute, the resulting index accesses an 
  19533. RGB color in the physical table. The color, therefore, is unpredictable unless 
  19534. the logical color table has been realized (using the palette manager). 
  19535.  
  19536. The first five of the foreground mix attributes also are available as 
  19537. background mix attributes. The background mix attributes are listed in the 
  19538. following table. 
  19539.  
  19540. Background Mix Attributes 
  19541.  
  19542. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  19543. ΓöéMix Attribute  ΓöéEffect         ΓöéDescription                   Γöé
  19544. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19545. ΓöéBM_DEFAULT     ΓöéDefault        ΓöéDefault background mix        Γöé
  19546. Γöé               Γöé               Γöéattribute (Leave-alone).      Γöé
  19547. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19548. ΓöéBM_OR          ΓöéOR             ΓöéIndex value of the final colorΓöé
  19549. Γöé               Γöé               Γöéis determined by a bitwise OR Γöé
  19550. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19551. Γöé               Γöé               Γöébackground color and the indexΓöé
  19552. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19553. Γöé               Γöé               Γöésurface.                      Γöé
  19554. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19555. ΓöéBM_OVERPAINT   ΓöéOverpaint      ΓöéIndex value of the final colorΓöé
  19556. Γöé               Γöé               Γöéis that of the background     Γöé
  19557. Γöé               Γöé               Γöécolor.                        Γöé
  19558. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19559. ΓöéBM_XOR         ΓöéExclusive-OR   ΓöéIndex value of the final colorΓöé
  19560. Γöé               Γöé(XOR)          Γöéis determined by a bitwise XORΓöé
  19561. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19562. Γöé               Γöé               Γöébackground color and the indexΓöé
  19563. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19564. Γöé               Γöé               Γöésurface.                      Γöé
  19565. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19566. ΓöéBM_LEAVEALONE  ΓöéLeave-alone    ΓöéIndex value of the final colorΓöé
  19567. Γöé               Γöé(Invisible)    Γöéis that of the drawing-surfaceΓöé
  19568. Γöé               Γöé               Γöécolor.                        Γöé
  19569. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19570.  
  19571. The most frequently used foreground mix attributes are FM_OVERPAINT, which is 
  19572. the default value, FM_OR, and FM_XOR. The most frequently used background mix 
  19573. attributes are BM_LEAVEALONE, which is the default value, and BM_OVERPAINT. 
  19574.  
  19575.  
  19576. ΓòÉΓòÉΓòÉ 10.2.10.1. Overpaint Mix Attribute ΓòÉΓòÉΓòÉ
  19577.  
  19578. When using FM_OVERPAINT, the foreground of the primitive replaces any existing 
  19579. drawing in the same area of the presentation page. If the existing drawing is 
  19580. yellow, for example, and the new drawing is red, the drawing is red at the 
  19581. points of overlap. (This is the default foreground mix attribute.) Because one 
  19582. color is replacing another and no color mixing is being performed, the effects 
  19583. of the overpaint mix attribute are entirely predictable. This is shown in the 
  19584. following figure. 
  19585.  
  19586. Overpaint Foreground Mix Attribute 
  19587.  
  19588. The circle is drawn on top of the square. At the points of overlap, the output 
  19589. is the color of the circle. 
  19590.  
  19591. When using BM_OVERPAINT, the primitive background replaces the existing 
  19592. drawing. drawing, as shown in the following figure. 
  19593.  
  19594. Overpaint Background Mix Attribute 
  19595.  
  19596. Using BM_OVERPAINT, the background of the primitive is apparent only if it is 
  19597. drawn in a different color from the output-area background. Notice that, in 
  19598. this example, the foreground mix attribute is FM_OVERPAINT. 
  19599.  
  19600.  
  19601. ΓòÉΓòÉΓòÉ 10.2.10.2. OR Mix Attribute ΓòÉΓòÉΓòÉ
  19602.  
  19603. When using FM_OR, the foreground of the new primitive is merged with the 
  19604. existing drawing at the points of overlap. This is effected by ORing the 
  19605. indexes of the overlapping colors to produce a third color. The resulting color 
  19606. is unpredictable if the logical color table has not been realized (using the 
  19607. palette manager). The OR mix attribute is useful for making the common points 
  19608. of two graphics distinct from the points belonging to one of the graphics only, 
  19609. as shown in the following figure. 
  19610.  
  19611. OR Mix Attribute 
  19612.  
  19613. The circle is drawn on top of the square. At the points of overlap, indexes are 
  19614. OR'd to produce a new index referencing a new RGB color in the physical color 
  19615. table. 
  19616.  
  19617. When using the BM_OR attribute, the background of the primitive is merged with 
  19618. the existing drawing according to the same rules that apply to the FM_OR 
  19619. attribute. 
  19620.  
  19621.  
  19622. ΓòÉΓòÉΓòÉ 10.2.10.3. Exclusive-OR (XOR) Mix Attribute ΓòÉΓòÉΓòÉ
  19623.  
  19624. The FM_XOR attribute enables objects to be drawn in such a way that they can be 
  19625. removed easily by simply drawing them a second time using the FM_XOR attribute. 
  19626. The FM_XOR attribute is available on display devices only and is useful for 
  19627. graphics animation when an application must move an individual graphic and 
  19628. completely restore the graphics that it originally overlapped. Typically, an 
  19629. application would do the following: 
  19630.  
  19631.    1. Draw the graphics object using the FM_XOR attribute. 
  19632.  
  19633.    2. Calculate the object's next position. 
  19634.  
  19635.    3. Draw the object again in its current position, still using the FM_XOR 
  19636.       attribute. This effectively erases it from its current position without 
  19637.       destroying the graphics with which it overlaps. 
  19638.  
  19639.    4. Draw the object in its new position using the FM_XOR mix attribute. 
  19640.  
  19641.  For retained graphics, this sequence can be automated to some extent by 
  19642.  defining specific graphics segments as dynamic. Dynamic graphics always are 
  19643.  drawn using the FM_XOR attribute, regardless of the current mix attributes. 
  19644.  
  19645.  The effects of the FM_XOR attribute are shown in the following figure. 
  19646.  
  19647.  Exclusive-OR (XOR) Mix Attribute 
  19648.  
  19649.  The circle is drawn on top of the square. At the points of overlap, graphics 
  19650.  are not drawn if the two overlapping figures are an identical color. 
  19651.  
  19652.  When using the BM_XOR attribute, the background of the primitive is merged 
  19653.  with the existing picture according to the same rules that apply to the FM_XOR 
  19654.  attribute. 
  19655.  
  19656.  
  19657. ΓòÉΓòÉΓòÉ 10.2.10.4. Leave-Alone Mix Attribute ΓòÉΓòÉΓòÉ
  19658.  
  19659. The leave-alone mix attribute most often is used as a background mix attribute. 
  19660. When using the FM_LEAVEALONE attribute, the foreground of the primitive is not 
  19661. drawn. When using the BM_LEAVEALONE attribute, the background of the primitive 
  19662. is not drawn, as shown in the following figure. 
  19663.  
  19664. Leave-Alone Background Mix Attribute The leave-alone background mix attribute 
  19665. is the background mix attribute that most often is used for character strings 
  19666. and marker primitives. It is generally used with a foreground mix value of 
  19667. FM_OVERPAINT. 
  19668.  
  19669.  
  19670. ΓòÉΓòÉΓòÉ 10.2.10.5. Specifying Foreground and Background Mix Attributes ΓòÉΓòÉΓòÉ
  19671.  
  19672. Specify the current foreground mix value for all primitives using GpiSetMix. To 
  19673. learn the current foreground mix setting, use GpiQueryMix, which returns the 
  19674. current foreground mix setting for a character string primitive. GpiQueryAttrs 
  19675. can be used to determine the current foreground and background mix values for a 
  19676. single primitive type. 
  19677.  
  19678. To specify a background mix value for all primitives, use GpiSetBackMix. 
  19679. GpiQueryBackMix returns the current background mix value for a character-string 
  19680. primitive. To specify the current foreground and background mix values for a 
  19681. single primitive type, call GpiSetAttrs. 
  19682.  
  19683. Note:  Not all devices support all of the background and foreground mix 
  19684. attributes described. When a device does not support the mix attribute chosen 
  19685. by an application, the default mix attribute is used; no error condition is 
  19686. raised. DevQueryCaps can be used to determine whether a mix attribute is 
  19687. supported on a specific device. 
  19688.  
  19689.  
  19690. ΓòÉΓòÉΓòÉ 10.2.11. Color on Advanced Display Devices ΓòÉΓòÉΓòÉ
  19691.  
  19692. Some devices can display simultaneously a fixed number of colors (typically 
  19693. 156), chosen from a much larger number of colors (often more than 256000). An 
  19694. application can use the palette manager functions to take advantage of the 
  19695. extra capabilities of these devices. These functions enable an application to 
  19696. change the colors in a device's physical color table and the displayed colors 
  19697. rapidly without explicitly redrawing the screen. 
  19698.  
  19699. An application can use the CAPS_ADDITIONAL_GRAPHICS option of DevQueryCaps to 
  19700. determine whether the display device supports palette functions. 
  19701.  
  19702.  
  19703. ΓòÉΓòÉΓòÉ 10.2.12. Dithering ΓòÉΓòÉΓòÉ
  19704.  
  19705. If an application requests a color not available in the physical color table, 
  19706. the operating system can approximate the color by a process called dithering. 
  19707. For example, if the physical color table does not contain a light green color 
  19708. but does contain a yellow and a green, the operating system can create what 
  19709. appears to be light green by mixing yellow pels and green pels. Dithering is a 
  19710. variation on the way red, green, and blue color guns illuminate the phosphors 
  19711. in a single pel to produce a color that is not pure red, green, or blue (for 
  19712. example, yellow). 
  19713.  
  19714. The dithering process takes advantage of the way the human eye interprets 
  19715. color. If every other pel is set to one color, and all the intermediate pels to 
  19716. a different color, together they produce the effect of a third color at normal 
  19717. viewing distances. 
  19718.  
  19719. The checkerboard effect is just one of the ways in which dithering can be 
  19720. implemented. Dithering works only when producing a solid mass of color, such as 
  19721. an area fill pattern. It does not have the desired effect on line primitives. 
  19722.  
  19723. Dithering is especially important on monochrome devices. By combining various 
  19724. combinations of black pels with white pels, the operating system can create 
  19725. numerous shades of gray. 
  19726.  
  19727. To use only the pure colors defined in the physical color table, that is, to 
  19728. prevent color dithering, set LCOL_PURECOLOR in GpiCreateLogColorTable. When 
  19729. LCOL_PURECOLOR is set, the nearest available color to the one selected is used. 
  19730.  
  19731.  
  19732. ΓòÉΓòÉΓòÉ 10.2.13. Considerations When Using Monochrome Displays ΓòÉΓòÉΓòÉ
  19733.  
  19734. When a graphic primitive that is drawn in color is displayed on a monochrome 
  19735. display, the operating system maps the colors that the application uses to the 
  19736. colors supported by the monochrome display. 
  19737.  
  19738.  
  19739. ΓòÉΓòÉΓòÉ 10.2.13.1. Drawing Color Graphics on Monochrome Devices ΓòÉΓòÉΓòÉ
  19740.  
  19741. When mapping color graphics to a monochrome device (screen, printer, or bit 
  19742. map), the monochrome device has a reset color and a contrast color. The reset 
  19743. color is the color GpiErase clears to and is either black or white. If the 
  19744. reset color is black, the contrast color is white, and if the reset color is 
  19745. white, the contrast color is black. 
  19746.  
  19747. To determine whether the reset color is to be black or white, the color 
  19748. retrieved by the index CLR_BACKGROUND from the current logical color table is 
  19749. examined. If a logical color table has not been loaded, CLR_BACKGROUND is 
  19750. either the paper color on a printer or SYSCLR_WINDOW on a display. If a logical 
  19751. color table has been loaded, CLR_BACKGROUND is the color addressed by color 
  19752. index 0 on any device. 
  19753.  
  19754. If the color retrieved by CLR_BACKGROUND is either white or black, that color 
  19755. becomes the reset color. For example, if an application is drawing to a screen, 
  19756. has not loaded a color table, and the system colors have not been altered, the 
  19757. background color is white, because SYSCLR_WINDOW produces a white background by 
  19758. default. In this instance, the contrast color is black. 
  19759.  
  19760. If the color retrieved by CLR_BACKGROUND is neither white nor black, the color 
  19761. translates to whichever of black and white it is nearest to. As a rule, dark 
  19762. colors produce a black background, and pale colors produce a white background. 
  19763. For example, if an application is using a loaded color table, or if the color 
  19764. retrieved by SYSCLR_WINDOW has been altered (either interactively or by 
  19765. WinSetSysColors), CLR_BACKGROUND could be dark gray. In this instance, the 
  19766. reset color would be black, and the contrast color would be white. 
  19767.  
  19768. When the reset color has been established, the PM applies the following rules 
  19769. when mapping color graphics to a monochrome device: 
  19770.  
  19771.      Any color graphics drawn in CLR_BACKGROUND, and any graphics defined in 
  19772.       the actual reset color (which is either black or white), are drawn in the 
  19773.       reset color. Any other graphics are drawn in the contrast color. 
  19774.  
  19775.      The index CLR_WHITE produces white, and the index CLR_BLACK produces 
  19776.       black, regardless of whether the reset color is black or white. 
  19777.  
  19778.      If no color table is loaded and CLR_DEFAULT or CLR_NEUTRAL are used as 
  19779.       the foreground color, they produce the contrast color. If they are used 
  19780.       as the background color, they produce the reset color. 
  19781.  
  19782.      If an application calls GpiQueryNearestColor for a monochrome device, one 
  19783.       of the following occurs: 
  19784.  
  19785.         -  If the color supplied on input is the reset color, the reset color 
  19786.            is returned. 
  19787.         -  If the color supplied on input is not the reset color, the contrast 
  19788.            color is returned. 
  19789.  
  19790.  
  19791. ΓòÉΓòÉΓòÉ 10.2.13.2. Drawing Color Area Fill Patterns on Monochrome Devices ΓòÉΓòÉΓòÉ
  19792.  
  19793. An area primitive is drawn according to the current foreground and background 
  19794. mix attributes and in the current area foreground and area background colors. 
  19795.  
  19796. When an application draws a monochrome pattern on a color device, the bits of 
  19797. the pattern set to 1 translate to the current area foreground color, and the 0 
  19798. bits translate to the current area background color. When the application draws 
  19799. a color pattern on a monochrome device, and if the current pattern is anything 
  19800. other than PATSYM_DEFAULT or PATSYM_SOLID from the default pattern set, the 
  19801. color closest to white is translated into 1 bits. For example, if a pattern of 
  19802. diagonal lines is being drawn in which the foreground color is red and the 
  19803. background color is cyan, the cyan is translated to white (1 bits) because cyan 
  19804. is closer than red is to white. Red, therefore is translated to black (0 bits). 
  19805. The effect of translating this color pattern to a monochrome surface is 
  19806. summarized as follows: 
  19807.  
  19808. Pattern      As 1s and     Color       Monochrome
  19809.                 0s        Surface       Surface
  19810.  
  19811. \   \        10001000     RcccRccc     01110111
  19812.  \   \       01000100     cRcccRcc     10111011
  19813.   \   \      00100010     ccRcccRc     11011101
  19814.    \   \     00010001     cccRcccR     11101110
  19815. \   \        10001000     RcccRccc     01110111
  19816.  \   \       01000100     cRcccRcc     10111011
  19817.   \   \      00100010     ccRcccRc     11011101
  19818.    \   \     00010001     cccRcccR     11101110
  19819.  
  19820. The original pattern of 1's and 0's is used, however, when deciding which part 
  19821. of the pattern is the background and which part is the foreground. Thus, if the 
  19822. background mix attribute is BM_LEAVEALONE, the following occurs: 
  19823.  
  19824. Pattern      As 1s and     Color      Monochrome
  19825.                 0s        Surface      Surface
  19826.  
  19827. \   \        10001000     R...R...     0...0...
  19828.  \   \       01000100     .R...R..     .0...0..
  19829.   \   \      00100010     ..R...R.     ..0...0.
  19830.    \   \     00010001     ...R...R     ...0...0
  19831. \   \        10001000     R...R...     0...0...
  19832.  \   \       01000100     .R...R..     .0...0..
  19833.   \   \      00100010     ..R...R.     ..0...0.
  19834.    \   \     00010001     ...R...R     ...0...0
  19835.  
  19836. The 1 bits on the monochrome surface still are interpreted as the background of 
  19837. the primitive and are not drawn when the BM_LEAVEALONE attribute is specified. 
  19838.  
  19839. When a bit map is used as an area fill pattern, any bit drawn in the current 
  19840. area background color is set to 0, and all other bits are set to 1 on a 
  19841. monochrome surface. Thus, if the current area background color is blue, all 
  19842. blue bits in the bit map are set to 0, and all other bits are set to 1. The 0 
  19843. bits constitute the background of the primitive. 
  19844.  
  19845. If the pattern is solid (PATSYM_DEFAULT or PATSYM_SOLID in the supplied pattern 
  19846. set), the following occurs: 
  19847.  
  19848.      If color dithering is switched off, and the application is drawing a 
  19849.       color pattern to a color surface, the color nearest the color specified 
  19850.       is used. 
  19851.  
  19852.      If color dithering is switched on, and the application is drawing a color 
  19853.       pattern to a color surface, a combination of colors can be used to 
  19854.       achieve the effect of the requested color. For example, if the 
  19855.       application chooses pink on a surface where pink is not available, a 
  19856.       combination of red and white pels can be used to achieve the effect of 
  19857.       the color. 
  19858.  
  19859.      If color dithering is switched on, and the application is drawing a color 
  19860.       pattern to a monochrome surface, sufficient pels are set to suggest the 
  19861.       intensity of the requested color. 
  19862.  
  19863.  Dithering can be enabled and disabled using LCOL_PURECOLOR in 
  19864.  GpiCreateLogColorTable. 
  19865.  
  19866.  
  19867. ΓòÉΓòÉΓòÉ 10.3. Using Color and Mix Attributes ΓòÉΓòÉΓòÉ
  19868.  
  19869. The color- and mix-attribute functions can be used to perform the following 
  19870. tasks: 
  19871.  
  19872.      Create a logical color table 
  19873.  
  19874.      Determine the format and the starting and ending index values of the 
  19875.       current logical color table 
  19876.  
  19877.      Determine the index value for an entry in the logical color table that is 
  19878.       the closest match to an RGB value 
  19879.  
  19880.      Determine the RGB value associated with a particular entry in the logical 
  19881.       color table 
  19882.  
  19883.      Determine and set the current foreground and background colors 
  19884.  
  19885.      Determine and set the current foreground and background mix attributes 
  19886.  
  19887.  
  19888. ΓòÉΓòÉΓòÉ 10.3.1. Creating a Logical Color Table ΓòÉΓòÉΓòÉ
  19889.  
  19890. To create a logical color table, the application creates an array of RGB values 
  19891. that replace the existing logical color table, then calls 
  19892. GpiCreateLogColorTable, using the LCOL_RESET and LCOLF_CONSECRGB flags. The 
  19893. following figure demonstrates this process. 
  19894.  
  19895. #define INCL_GPILOGCOLORTABLE
  19896. #include <os2.h>
  19897.  
  19898. void fncCOLR01(void){
  19899.     HPS hps;
  19900.     LONG alTable[] = {
  19901.         0xFFFFFF,        /* White */
  19902.         0xFF88FF,
  19903.         0xFF8800,
  19904.         0xFF8888,
  19905.         0xFF0088,
  19906.         0x880088,
  19907.         0x008888,
  19908.         0x00FF88,
  19909.         0x00F800,
  19910.         0x008800,
  19911.         0x000088,
  19912.         0x0000F8,
  19913.         0x0800F8,
  19914.         0x888888,
  19915.         0x080808,
  19916.         0x000000 };      /* Black */
  19917.  
  19918.     GpiCreateLogColorTable(hps,
  19919.        LCOL_RESET,                      /* Start with the default      */
  19920.        LCOLF_CONSECRGB,                 /* Consecutive RGB values      */
  19921.        0,                               /* Starting index in table     */
  19922.        sizeof(alTable) / sizeof(LONG),  /* Number of elements in table */
  19923.        alTable);
  19924. } /* fncCOLR01 */
  19925.  
  19926.  
  19927. ΓòÉΓòÉΓòÉ 10.3.2. Determining the Color-Table Format and Index Values ΓòÉΓòÉΓòÉ
  19928.  
  19929. To determine the format and the starting and ending index values of the current 
  19930. logical color table, applications call GpiQueryColorData. The following figure 
  19931. is an example of using GpiQueryColorData to determine whether the default 
  19932. logical color table is loaded. If so, the code fragment loads a new table. 
  19933.  
  19934. #define INCL_GPILOGCOLORTABLE
  19935. #include <os2.h>
  19936.  
  19937. void fncCOLR02(void){
  19938.     HPS hps;
  19939.     LONG        aClrData[3];
  19940.     LONG alTable[16];
  19941.  
  19942.     GpiQueryColorData(hps, 3, aClrData);
  19943.  
  19944.     if (aClrData[QCD_LCT_FORMAT] == LCOLF_DEFAULT)
  19945.         GpiCreateLogColorTable(hps,
  19946.            LCOL_RESET,                      /* Start with the default      */
  19947.            LCOLF_CONSECRGB,                 /* Consecutive RGB values      */
  19948.            0,                               /* Starting index in table     */
  19949.            sizeof(alTable) / sizeof(LONG),  /* Number of elements in table */
  19950.            alTable);
  19951. } /* fncCOLR02 */
  19952.  
  19953.  
  19954. ΓòÉΓòÉΓòÉ 10.3.3. Determining the Index Value of an RGB Value ΓòÉΓòÉΓòÉ
  19955.  
  19956. Applications call GpiQueryColorIndex to find the closest match in a logical 
  19957. color table to an RGB value. This function finds the closest match for this RGB 
  19958. value in the physical color table, then finds the color in the logical color 
  19959. table closest to the color in the physical color table. The function returns 
  19960. the index value of that entry in the logical color table. The followiing figure 
  19961. is an example of how to determine which index value in the logical color table 
  19962. matches the RGB value for pink (0x00FF00FF), then uses that index entry to set 
  19963. the foreground color to pink for each of the primitive attributes. 
  19964.  
  19965. #define INCL_GPILOGCOLORTABLE
  19966. #include <os2.h>
  19967.  
  19968. void fncCOLR03(void){
  19969.     LONG lIndex;                             /* Logical-color-table index */
  19970.     HPS hps;
  19971.  
  19972.     lIndex = GpiQueryColorIndex(hps, LCOLOPT_REALIZED, 0x00FF00FF);
  19973.  
  19974.     if ((lIndex >= 0) && (lIndex <= 15))     /* Check for valid index     */
  19975.         GpiSetColor(hps, lIndex);
  19976. } /* fncCOLR03 */
  19977.  
  19978.  
  19979. ΓòÉΓòÉΓòÉ 10.3.4. Setting the Primitive Color Attributes ΓòÉΓòÉΓòÉ
  19980.  
  19981. To set the color attributes for one type of graphics primitive, an application 
  19982. uses GpiSetAttrs. To set the color attributes for each type of primitive in a 
  19983. presentation space, use GpiSetColor and GpiSetBackColor. The following figure 
  19984. shows how to use GpiSetAttrs to set the color attribute of line primitives to 
  19985. dark gray. 
  19986.  
  19987. #define INCL_GPIPRIMITIVES
  19988. #include <os2.h>
  19989.  
  19990. void fncCOLR04(void){
  19991.     LINEBUNDLE lbnd;     /* Line-primitive attribute structure */
  19992.     HPS hps;
  19993.  
  19994.     lbnd.lColor = CLR_DARKGRAY;
  19995.  
  19996.     GpiSetAttrs(hps, PRIM_LINE, LBB_COLOR, 0, &lbnd);
  19997. } /* fncCOLR04 */
  19998.  
  19999. The following figure is an example of how to use GpiSetColor to set the 
  20000. foreground color attribute to dark gray in all of the primitives. 
  20001.  
  20002. #include <os2.h>
  20003.  
  20004. void fncCOLR05(void){
  20005.     HPS hps;
  20006.  
  20007.     GpiSetColor(hps, CLR_DARKGRAY);
  20008. } /* fncCOLR05 */
  20009.  
  20010.  
  20011. ΓòÉΓòÉΓòÉ 10.3.5. Creating a Palette ΓòÉΓòÉΓòÉ
  20012.  
  20013. To create a palette, an application must first call DevQueryCaps with the 
  20014. CAPS_ADDITIONAL_GRAPHICS option to determine whether the device supports 
  20015. palette functions. Next the application creates an array of RGB values or an 
  20016. array of RGB2 structures, then calls GpiCreatePalette. Next the applications 
  20017. calls GpiSelectPalette to select the palette for the presentation space and 
  20018. calls WinRealizePalette to map the RGB values to device colors for subsequent 
  20019. drawing. When the application is finished drawing, it calls GpiSelectPalette to 
  20020. disassociate the presentation space and the palette. Then it deletes the 
  20021. palette by calling GpiDeletePalette. 
  20022.  
  20023. The following figure demonstrates these steps. 
  20024.  
  20025. #define INCL_GPILOGCOLORTABLE
  20026. #define INCL_GPIBITMAPS
  20027. #include <os2.h>
  20028. void fncCOLR06(void){
  20029.     COLOR clrCurrent;
  20030.     HPAL hpal;
  20031.     HDC hdc;
  20032.     HPS hps;
  20033.     HAB hab;
  20034.     HWND hwnd;
  20035.     POINTL aptl[2], ptl;
  20036.     LONG cSimulColors, lPalSupport;
  20037.     SHORT j;
  20038.     RGB2 *prgb2ColorData;
  20039.  
  20040.     /* Determine how many colors the device can display at once.              */
  20041.     DevQueryCaps(hdc, CAPS_COLORS, 1, &cSimulColors);
  20042.  
  20043.     /* Determine if the device supports palette manager functions.            */
  20044.     DevQueryCaps(hdc, CAPS_ADDITIONAL_GRAPHICS, 1, &lPalSupport);
  20045.  
  20046.     /* Allocate space for the array of RGB2 structures.                       */
  20047.     DosAllocMem((PPVOID)&prgb2ColorData, cSimulColors * sizeof(RGB2), fALLOC);
  20048.  
  20049.     /* Fill the array of RGB2 structures with as many different               */
  20050.     /*    shades of blue as the device will support.                          */
  20051.  
  20052.     clrCurrent = 0x000000FF;
  20053.     for (j = 0; j < cSimulColors; j++) {
  20054.         prgb2ColorData[j].bRed = 0;
  20055.         prgb2ColorData[j].bGreen = 0;
  20056.         prgb2ColorData[j].bBlue = clrCurrent;
  20057.         prgb2ColorData[j].fcOptions = 0;
  20058.         clrCurrent = clrCurrent > 0 ? --clrCurrent : 0x000000FF;
  20059.     }
  20060.  
  20061.     if (lPalSupport & CAPS_PALETTE_MANAGER) {
  20062.         hpal = GpiCreatePalette(hab,       /* Create palette                  */
  20063.                0L,
  20064.                LCOLF_CONSECRGB,            /* Format of color table entries   */
  20065.                cSimulColors,               /* Number of entries in table      */
  20066.                (PULONG) prgb2ColorData);   /* Pointer to color table          */
  20067.     }
  20068.  
  20069.     GpiSelectPalette(hps, hpal);
  20070.     WinRealizePalette(hwnd, hps);
  20071.     GpiSelectPalette(hps, NULLHANDLE);     /* Restore default physical colors */
  20072.     GpiDeletePalette(hpal);                /* Delete palette                  */
  20073. } /* fncCOLR06 */
  20074.  
  20075.