home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vp21beta.zip / OAPIINF.RAR / VPGPI3.INF (.txt) < prev    next >
OS/2 Help File  |  2000-09-07  |  849KB  |  20,198 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. Type
  13.   ARCPARAMS = Record
  14.     lP: Long;
  15.     lQ: Long;
  16.     lR: Long;
  17.     lS: Long;
  18.   End;
  19.  
  20. Type
  21.   PARCPARAMS = ^ARCPARAMS;
  22.  
  23.  
  24. ΓòÉΓòÉΓòÉ <hidden> ARCPARAMS Field - lP ΓòÉΓòÉΓòÉ
  25.  
  26.  lP (LONG) 
  27.     P coefficient. 
  28.  
  29.  
  30. ΓòÉΓòÉΓòÉ <hidden> ARCPARAMS Field - lQ ΓòÉΓòÉΓòÉ
  31.  
  32.  lQ (LONG) 
  33.     Q coefficient. 
  34.  
  35.  
  36. ΓòÉΓòÉΓòÉ <hidden> ARCPARAMS Field - lR ΓòÉΓòÉΓòÉ
  37.  
  38.  lR (LONG) 
  39.     R coefficient. 
  40.  
  41.  
  42. ΓòÉΓòÉΓòÉ <hidden> ARCPARAMS Field - lS ΓòÉΓòÉΓòÉ
  43.  
  44.  lS (LONG) 
  45.     S coefficient. 
  46.  
  47.  
  48. ΓòÉΓòÉΓòÉ 1.2. AREABUNDLE ΓòÉΓòÉΓòÉ
  49.  
  50. Area-attributes bundle structure. 
  51.  
  52. Type
  53.   AREABUNDLE = Record
  54.     lColor:        Long;
  55.     lBackColor:    Long;
  56.     usMixMode:     SmallWord;
  57.     usBackMixMode: SmallWord;
  58.     usSet:         SmallWord;
  59.     usSymbol:      SmallWord;
  60.     ptlRefPoint:   PointL;
  61.   End;
  62.  
  63. Type
  64.   PAREABUNDLE = ^AREABUNDLE;
  65.  
  66.  
  67. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  68.  
  69.  lColor (LONG) 
  70.     Area foreground color. 
  71.  
  72.  
  73. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  74.  
  75.  lBackColor (LONG) 
  76.     Area background color. 
  77.  
  78.  
  79. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  80.  
  81.  usMixMode (USHORT) 
  82.     Area foreground-mix mode. 
  83.  
  84.  
  85. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  86.  
  87.  usBackMixMode (USHORT) 
  88.     Area background-mix mode. 
  89.  
  90.  
  91. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - usSet ΓòÉΓòÉΓòÉ
  92.  
  93.  usSet (USHORT) 
  94.     Pattern set. 
  95.  
  96.  
  97. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - usSymbol ΓòÉΓòÉΓòÉ
  98.  
  99.  usSymbol (USHORT) 
  100.     Pattern symbol. 
  101.  
  102.  
  103. ΓòÉΓòÉΓòÉ <hidden> AREABUNDLE Field - ptlRefPoint ΓòÉΓòÉΓòÉ
  104.  
  105.  ptlRefPoint (POINTL) 
  106.     Pattern reference point. 
  107.  
  108.  
  109. ΓòÉΓòÉΓòÉ 1.3. BITMAPINFO ΓòÉΓòÉΓòÉ
  110.  
  111. Bit-map information structure. 
  112.  
  113. Each bit plane logically contains (cx * cy * cBitCount) bits, although the 
  114. actual length can be greater because of padding. 
  115.  
  116. See also BITMAPINFO2, which is preferred. 
  117.  
  118. Type
  119.   BITMAPINFO = Record
  120.     cbFix:        ULong;
  121.     cx:           SmallWord;
  122.     cy:           SmallWord;
  123.     cPlanes:      SmallWord;
  124.     cBitCount:    SmallWord;
  125.     argbColor: array[0..0] of RGB;
  126.   End;
  127.  
  128. Type
  129.   PBITMAPINFO = ^BITMAPINFO;
  130.  
  131.  
  132. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cbFix ΓòÉΓòÉΓòÉ
  133.  
  134.  cbFix (ULONG) 
  135.     Length of fixed portion of structure. 
  136.  
  137.     This length can be determined using sizeof(BITMAPINFOHEADER). 
  138.  
  139.  
  140. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cx ΓòÉΓòÉΓòÉ
  141.  
  142.  cx (USHORT) 
  143.     Bit-map width in pels. 
  144.  
  145.  
  146. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cy ΓòÉΓòÉΓòÉ
  147.  
  148.  cy (USHORT) 
  149.     Bit-map height in pels. 
  150.  
  151.  
  152. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cPlanes ΓòÉΓòÉΓòÉ
  153.  
  154.  cPlanes (USHORT) 
  155.     Number of bit planes. 
  156.  
  157.  
  158. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - cBitCount ΓòÉΓòÉΓòÉ
  159.  
  160.  cBitCount (USHORT) 
  161.     Number of bits per pel within a plane. 
  162.  
  163.  
  164. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO Field - argbColor[1] ΓòÉΓòÉΓòÉ
  165.  
  166.  argbColor[1] (RGB) 
  167.     Array of RGB values. 
  168.  
  169.     This is a packed array of 24-bit RGB values. If there are N bits per pel 
  170.     (N =cPlanes * cBitCount), the array contains 2**N RGB values. However, if 
  171.     N = 24, the bit map does not need the color color array because the 
  172.     standard-format bit map, with 24 bits per pel, is assumed to contain RGB 
  173.     values. 
  174.  
  175.  
  176. ΓòÉΓòÉΓòÉ 1.4. BITMAPINFO2 ΓòÉΓòÉΓòÉ
  177.  
  178. Bit-map information structure. 
  179.  
  180. Each bit plane logically contains (cx * cy * cBitCount) bits, although the 
  181. actual length can be greater because of padding. 
  182.  
  183. Note:  Many functions can accept either this structure or the BITMAPINFO 
  184. structure. Where possible, BITMAPINFO2 should be used. 
  185.  
  186. The cbFix field is used to find the color table, if any, that goes with the 
  187. information in this structure. A color table is an array of color (RGB2) 
  188. values. If there are N bits per pel (N = cPlanes * cBitCount), the array 
  189. contains 2**N color values. However, if N = 24, the color table is not required 
  190. (because the standard-format bit map, with 24 bits per pel, is assumed to 
  191. contain RGB values), unless either cclrUsed or cclrImportant is non-zero. 
  192.  
  193. Type
  194.   BITMAPINFO2 = Record
  195.     cbFix:           ULong;    { Length of fixed portion of structure   }
  196.     cx:              ULong;    { Bit-map width in pels                  }
  197.     cy:              ULong;    { Bit-map height in pels                 }
  198.     cPlanes:         SmallWord;{ Number of bit planes                   }
  199.     cBitCount:       SmallWord;{ Number of bits per pel within a plane  }
  200.     ulCompression:   ULong;    { Compression scheme used to store the bitmap }
  201.     cbImage:         ULong;    { Length of bit-map storage data in bytes}
  202.     cxResolution:    ULong;    { x resolution of target device          }
  203.     cyResolution:    ULong;    { y resolution of target device          }
  204.     cclrUsed:        ULong;    { Number of color indices used           }
  205.     cclrImportant:   ULong;    { Number of important color indices      }
  206.     usUnits:         SmallWord;{ Units of measure                       }
  207.     usReserved:      SmallWord;{ Reserved                               }
  208.     usRecording:     SmallWord;{ Recording algorithm                    }
  209.     usRendering:     SmallWord;{ Halftoning algorithm                   }
  210.     cSize1:          ULong;    { Size value 1                           }
  211.     cSize2:          ULong;    { Size value 2                           }
  212.     ulColorEncoding: ULong;    { Color encoding                         }
  213.     ulIdentifier:    ULong;    { Reserved for application use           }
  214.     argbColor: array [0..0] of RGB2; { Color definition record          }
  215.   End;
  216.  
  217. Type
  218.   PBITMAPINFO2 = ^BITMAPINFO2;
  219.  
  220.  
  221. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cbFix ΓòÉΓòÉΓòÉ
  222.  
  223.  cbFix (ULONG) 
  224.     Length of fixed portion of structure. 
  225.  
  226.     The structure can be truncated after cBitCount or any subsequent field. 
  227.  
  228.     The length does not include the length of the color table. Where the color 
  229.     table is present, it is at an offset of cbFix from the start of the 
  230.     BITMAPINFO2 structure. 
  231.  
  232.     This length can range from 16 (BITMAPINFOHEADER through field cBitCount) up 
  233.     to sizeof(BITMAPINFOHEADER2) bytes. 
  234.  
  235.  
  236. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cx ΓòÉΓòÉΓòÉ
  237.  
  238.  cx (ULONG) 
  239.     Bit-map width in pels. 
  240.  
  241.  
  242. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cy ΓòÉΓòÉΓòÉ
  243.  
  244.  cy (ULONG) 
  245.     Bit-map height in pels. 
  246.  
  247.  
  248. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cPlanes ΓòÉΓòÉΓòÉ
  249.  
  250.  cPlanes (USHORT) 
  251.     Number of bit planes. 
  252.  
  253.  
  254. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cBitCount ΓòÉΓòÉΓòÉ
  255.  
  256.  cBitCount (USHORT) 
  257.     Number of bits per pel within a plane. 
  258.  
  259.  
  260. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - ulCompression ΓòÉΓòÉΓòÉ
  261.  
  262.  ulCompression (ULONG) 
  263.     Compression scheme used to store the bit map. 
  264.  
  265.     BCA_UNCOMP 
  266.               Bit map is uncompressed. 
  267.  
  268.     BCA_HUFFMAN1D 
  269.               The bit map is compressed by a modified Huffman encoding. This is 
  270.               valid for a bi-level (one bit per pel) bit map. 
  271.  
  272.     BCA_RLE4 
  273.               The bit map is a 4-bit per pel run-length encoded bit map. See 
  274.               the following section, "Format of Compressed Data," for a 
  275.               description of the format of the compressed data. 
  276.  
  277.     BCA_RLE8 
  278.               The bit map is an 8-bit per pel run-length encoded bit map. See 
  279.               the following section, "Format of Compressed Data," for a 
  280.               description of the format of the compressed data. 
  281.  
  282.     BCA_RLE24 
  283.               The bit map is a 24-bit per pel run-length encoded bit map. See 
  284.               the following section, "Format of Compressed Data," for a 
  285.               description of the format of the compressed data. 
  286.  
  287.     Format of Compressed Data 
  288.  
  289.     Encoding a run length: 
  290.  
  291.     Run-length encoded bit maps are encoded in the buffer in a controlled 
  292.     format. In all cases, if the first byte is non-zero, it is the length of a 
  293.     run of pels of a particular color or, in the case of a BCA_RLE4 bit map, a 
  294.     run of a length of pels of alternating colors. 
  295.  
  296.  
  297.         1st-byte       pel repetition count >= 1
  298.         2nd-4th bytes  (BCA_RLE24 only) RGB value of pel.
  299.         2nd-byte       (BCA_RLE8) color index of pel to be repeated
  300.                        (BCA_RLE4) the second byte contains 2 4-bit
  301.                        color indexes.  The repetition count is
  302.                        completed by alternately choosing the high-order
  303.                        nibble followed by the low-order nibble for the
  304.                        succeeding pels until the count is exhausted.
  305.  
  306.     Unencoded run: 
  307.  
  308.     An unencoded run is a string of pels to be placed in consecutive positions 
  309.     in the destination bit map. 
  310.  
  311.  
  312.         1st-byte     0
  313.         2nd-byte     COUNT = a multiple of 3 for BCA_RLE24 bit maps, or
  314.                      COUNT >= 3 (for BCA_RLE4 and BCA_RLE8 bit maps).
  315.  
  316.     followed by the bytes as follows: 
  317.  
  318.     BCA_RLE24 
  319.               A string of bytes specifying the RGB color values of succeeding 
  320.               pels.  If COUNT is odd, it must be padded by a zero byte for an 
  321.               even length overall. 
  322.  
  323.     BCA_RLE8 
  324.               A string of bytes specifying color indexes for succeeding pels. 
  325.               If COUNT is odd, it must be padded by a zero byte for an even 
  326.               length overall. 
  327.  
  328.     BCA_RLE4 
  329.               A string of bytes, each byte providing two color indexes, with 
  330.               the high-order nibble specifying the index of the pel preceding 
  331.               the low-order nibble. The COUNT specifies the number of indexes. 
  332.               The overall length of the string must be an even number of bytes, 
  333.               and thus may be padded with a zero byte, and the low order nibble 
  334.               of the last significant byte may also be zero and not used. 
  335.  
  336.     Delta record: 
  337.  
  338.     A delta record indicates a shift in position in the destination bit map 
  339.     before the next record is decoded. 
  340.  
  341.  
  342.         1st-byte        0
  343.         2nd-byte        2
  344.         3rd-byte        Delta-x (unsigned)
  345.         4th-byte        Delta-y (unsigned)
  346.  
  347.     This is a relative jump record.  It implies that the next record is to be 
  348.     decoded into a position in the destination bit map at an offset from the 
  349.     current position, determined by changing the horizontal and vertical 
  350.     positions by Delta-x and Delta-y, respectively. 
  351.  
  352.     End-of-line record: 
  353.  
  354.     The end-of-line record signifies that the data for the current scan line is 
  355.     complete and that decoding of the next record should begin at the start of 
  356.     the next scan line. 
  357.  
  358.  
  359.         1st-byte        0
  360.         2nd-byte        0
  361.  
  362.     End-of-RLE record: 
  363.  
  364.     The end-of-RLE record signifies the end of the data in the RLE compressed 
  365.     bit map. 
  366.  
  367.  
  368.         1st-byte        0
  369.         2nd-byte        1
  370.  
  371.  
  372. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cbImage ΓòÉΓòÉΓòÉ
  373.  
  374.  cbImage (ULONG) 
  375.     Length of bit-map storage data, in bytes. 
  376.  
  377.     If the bit map is uncompressed, zero (default) can be specified for this. 
  378.  
  379.  
  380. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cxResolution ΓòÉΓòÉΓòÉ
  381.  
  382.  cxResolution (ULONG) 
  383.     Horizontal component of the resolution of target device. 
  384.  
  385.     The resolution of the device the bit map is intended for, in the units 
  386.     specified by usUnits. This information enables an application to select 
  387.     from a resource group the bit map that best matches the characteristics of 
  388.     the current output device. 
  389.  
  390.  
  391. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cyResolution ΓòÉΓòÉΓòÉ
  392.  
  393.  cyResolution (ULONG) 
  394.     Vertical component of the resolution of the target device. 
  395.  
  396.     See the description of cxResolution. 
  397.  
  398.  
  399. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cclrUsed ΓòÉΓòÉΓòÉ
  400.  
  401.  cclrUsed (ULONG) 
  402.     Number of color indexes used. 
  403.  
  404.     The number of color indexes from the color table that are used by the bit 
  405.     map. If it is zero (the default), all the indexes are used. If it is 
  406.     non-zero, only the first cclrUsed entries in the table are accessed by the 
  407.     system, and further entries can be omitted. 
  408.  
  409.     For the standard formats with a cBitCount of 1, 4, or 8 (and cPlanes equal 
  410.     to 1), any indexes beyond cclrUsed are not valid. For example, a bit map 
  411.     with 64 colors can use the 8-bitcount format without having to supply the 
  412.     other 192 entries in the color table. For the 24-bitcount standard format, 
  413.     cclrUsed is the number of colors used by the bit map. 
  414.  
  415.  
  416. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cclrImportant ΓòÉΓòÉΓòÉ
  417.  
  418.  cclrImportant (ULONG) 
  419.     Minimum number of color indexes for satisfactory appearance of the bit map. 
  420.  
  421.     More colors may be used in the bit map, but it is not necessary to assign 
  422.     them to the device palette. These additional colors may be mapped to the 
  423.     nearest colors available. 
  424.  
  425.     Zero (the default) means that all entries are important. 
  426.  
  427.     For a 24-bitcount standard format bit map, the cclrImportant colors are 
  428.     also listed in the color table following the BITMAPINFO2 structure. 
  429.  
  430.  
  431. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - usUnits ΓòÉΓòÉΓòÉ
  432.  
  433.  usUnits (USHORT) 
  434.     Units of measure. 
  435.  
  436.     Units of measure of the horizontal and vertical components of resolution, 
  437.     cxResolution and cyResolution. 
  438.  
  439.     BRU_METRIC          Pels per meter. This is the default value. 
  440.  
  441.  
  442. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - usReserved ΓòÉΓòÉΓòÉ
  443.  
  444.  usReserved (USHORT) 
  445.     Reserved. 
  446.  
  447.     This is a reserved field. 
  448.  
  449.  
  450. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - usRecording ΓòÉΓòÉΓòÉ
  451.  
  452.  usRecording (USHORT) 
  453.     Recording algorithm. 
  454.  
  455.     The format in which the bit map data is recorded. 
  456.  
  457.     BRA_BOTTOMUP             Scan lines are recorded bottom to top. This is the 
  458.                              default value. 
  459.  
  460.  
  461. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - usRendering ΓòÉΓòÉΓòÉ
  462.  
  463.  usRendering (USHORT) 
  464.     Halftoning algorithm. 
  465.  
  466.     The algorithm used to record bit map data that has been digitally 
  467.     halftoned. 
  468.  
  469.     BRH_NOTHALFTONED              Bit-map data is not halftoned. This is the 
  470.                                   default value. 
  471.  
  472.     BRH_ERRORDIFFUSION            Error Diffusion or Damped Error Diffusion 
  473.                                   algorithm. 
  474.  
  475.     BRH_PANDA                     Processing Algorithm for Non-coded Document 
  476.                                   Acquisition. 
  477.  
  478.     BRH_SUPERCIRCLE               Super Circle algorithm. 
  479.  
  480.  
  481. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cSize1 ΓòÉΓòÉΓòÉ
  482.  
  483.  cSize1 (ULONG) 
  484.     Size value 1. 
  485.  
  486.     If BRH_ERRORDIFFUSION is specified in usRendering, cSize1 is the error 
  487.     damping as a percentage in the range 0 through 100. A value of 100% 
  488.     indicates no damping, and a value of 0% indicates that any errors are not 
  489.     diffused. 
  490.  
  491.     If BRH_PANDA or BRH_SUPERCIRCLE is specified, cSize1 is the x dimension of 
  492.     the pattern used, in pels. 
  493.  
  494.  
  495. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - cSize2 ΓòÉΓòÉΓòÉ
  496.  
  497.  cSize2 (ULONG) 
  498.     Size value 2. 
  499.  
  500.     If BRH_ERRORDIFFUSION is specified in usRendering, this parameter is 
  501.     ignored. 
  502.  
  503.     If BRH_PANDA or BRH_SUPERCIRCLE is specified, cSize2 is the y dimension of 
  504.     the pattern used, in pels. 
  505.  
  506.  
  507. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - ulColorEncoding ΓòÉΓòÉΓòÉ
  508.  
  509.  ulColorEncoding (ULONG) 
  510.     Color encoding. 
  511.  
  512.     BCE_RGB             Each element in the color array is an RGB2 datatype. 
  513.                         This is the default value. 
  514.  
  515.  
  516. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - ulIdentifier ΓòÉΓòÉΓòÉ
  517.  
  518.  ulIdentifier (ULONG) 
  519.     Reserved for application use. 
  520.  
  521.  
  522. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFO2 Field - argbColor[1] ΓòÉΓòÉΓòÉ
  523.  
  524.  argbColor[1] (RGB2) 
  525.     Array of RGB values. 
  526.  
  527.     This is a packed array of 24-bit RGB values. If there are N bits per pel 
  528.     (N =cPlanes * cBitCount), the array contains 2**N RGB values. However, if 
  529.     N = 24, the bit map does not need the color array because the 
  530.     standard-format bit map, with 24 bits per pel, is assumed to contain RGB 
  531.     values. 
  532.  
  533.  
  534. ΓòÉΓòÉΓòÉ 1.5. BITMAPINFOHEADER ΓòÉΓòÉΓòÉ
  535.  
  536. Bit-map information header structure. 
  537.  
  538. Each bit plane logically contains (cx * cy * cBitCount) bits, although the 
  539. actual length can be greater because of padding. 
  540.  
  541. See also BITMAPINFOHEADER2, which is preferred. 
  542.  
  543. Type
  544.   BITMAPINFOHEADER = Record
  545.     cbFix:     ULong;
  546.     cx:        SmallWord;
  547.     cy:        SmallWord;
  548.     cPlanes:   SmallWord;
  549.     cBitCount: SmallWord;
  550.   End;
  551.  
  552. Type
  553.   PBITMAPINFOHEADER = ^BITMAPINFOHEADER;
  554.  
  555.  
  556. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cbFix ΓòÉΓòÉΓòÉ
  557.  
  558.  cbFix (ULONG) 
  559.     Length of structure. 
  560.  
  561.  
  562. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cx ΓòÉΓòÉΓòÉ
  563.  
  564.  cx (USHORT) 
  565.     Bit-map width in pels. 
  566.  
  567.  
  568. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cy ΓòÉΓòÉΓòÉ
  569.  
  570.  cy (USHORT) 
  571.     Bit-map height in pels. 
  572.  
  573.  
  574. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cPlanes ΓòÉΓòÉΓòÉ
  575.  
  576.  cPlanes (USHORT) 
  577.     Number of bit planes. 
  578.  
  579.  
  580. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER Field - cBitCount ΓòÉΓòÉΓòÉ
  581.  
  582.  cBitCount (USHORT) 
  583.     Number of bits per pel within a plane. 
  584.  
  585.  
  586. ΓòÉΓòÉΓòÉ 1.6. BITMAPINFOHEADER2 ΓòÉΓòÉΓòÉ
  587.  
  588. Bit-map information header structure. 
  589.  
  590. Each bit plane logically contains (cx * cy * cBitCount) bits, although the 
  591. actual length can be greater because of padding. 
  592.  
  593. Note:  Many functions can accept either this structure or the BITMAPINFOHEADER 
  594. structure. Where possible, use BITMAPINFOHEADER2. 
  595.  
  596. Type
  597.   BITMAPINFOHEADER2 = Record
  598.     cbFix:           ULong;     { Length of structure                    }
  599.     cx:              ULong;     { Bit-map width in pels                  }
  600.     cy:              ULong;     { Bit-map height in pels                 }
  601.     cPlanes:         SmallWord; { Number of bit planes                   }
  602.     cBitCount:       SmallWord; { Number of bits per pel within a plane  }
  603.     ulCompression:   ULong;     { Compression scheme used to store the bitmap }
  604.     cbImage:         ULong;     { Length of bit-map storage data in bytes}
  605.     cxResolution:    ULong;     { x resolution of target device          }
  606.     cyResolution:    ULong;     { y resolution of target device          }
  607.     cclrUsed:        ULong;     { Number of color indices used           }
  608.     cclrImportant:   ULong;     { Number of important color indices      }
  609.     usUnits:         SmallWord; { Units of measure                       }
  610.     usReserved:      SmallWord; { Reserved                               }
  611.     usRecording:     SmallWord; { Recording algorithm                    }
  612.     usRendering:     SmallWord; { Halftoning algorithm                   }
  613.     cSize1:          ULong;     { Size value 1                           }
  614.     cSize2:          ULong;     { Size value 2                           }
  615.     ulColorEncoding: ULong;     { Color encoding                         }
  616.     ulIdentifier:    ULong;     { Reserved for application use           }
  617.   End;
  618.  
  619. Type
  620.   PBITMAPINFOHEADER2 = ^BITMAPINFOHEADER2;
  621.  
  622.  
  623. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cbFix ΓòÉΓòÉΓòÉ
  624.  
  625.  cbFix (ULONG) 
  626.     Length of structure. 
  627.  
  628.     The structure can be truncated after cBitCount or any subsequent field. 
  629.  
  630.  
  631. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cx ΓòÉΓòÉΓòÉ
  632.  
  633.  cx (ULONG) 
  634.     Bit-map width in pels. 
  635.  
  636.  
  637. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cy ΓòÉΓòÉΓòÉ
  638.  
  639.  cy (ULONG) 
  640.     Bit-map height in pels. 
  641.  
  642.  
  643. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cPlanes ΓòÉΓòÉΓòÉ
  644.  
  645.  cPlanes (USHORT) 
  646.     Number of bit planes. 
  647.  
  648.  
  649. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cBitCount ΓòÉΓòÉΓòÉ
  650.  
  651.  cBitCount (USHORT) 
  652.     Number of bits per pel within a plane. 
  653.  
  654.  
  655. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - ulCompression ΓòÉΓòÉΓòÉ
  656.  
  657.  ulCompression (ULONG) 
  658.     Compression scheme used to store the bit map. 
  659.  
  660.     BCA_UNCOMP 
  661.               Bit map is uncompressed. 
  662.  
  663.     BCA_HUFFMAN1D 
  664.               The bit map is compressed by a modified Huffman encoding. This is 
  665.               valid for a bi-level (one bit per pel) bit map. 
  666.  
  667.     BCA_RLE4 
  668.               The bit map is a 4-bit per pel run-length encoded bit map. See 
  669.               the following section, "Format of Compressed Data," for a 
  670.               description of the format of the compressed data. 
  671.  
  672.     BCA_RLE8 
  673.               The bit map is an 8-bit per pel run-length encoded bit map. See 
  674.               the following section, "Format of Compressed Data," for a 
  675.               description of the format of the compressed data. 
  676.  
  677.     BCA_RLE24 
  678.               The bit map is a 24-bit per pel run-length encoded bit map. See 
  679.               the following section, "Format of Compressed Data," for a 
  680.               description of the format of the compressed data. 
  681.  
  682.     Format of Compressed Data 
  683.  
  684.     Encoding a run length: 
  685.  
  686.     Run length encoded bit maps are encoded in the buffer in a controlled 
  687.     format. In all cases, if the first byte is non-zero, it is the length of a 
  688.     run of pels of a particular color or, in the case of a BCA_RLE4 bit map, a 
  689.     run of a length of pels of alternating colors. 
  690.  
  691.  
  692.         1st-byte       pel repetition count >= 1
  693.         2nd-4th bytes  (BCA_RLE24 only) RGB value of pel.
  694.         2nd-byte       (BCA_RLE8) color index of pel to be repeated
  695.                        (BCA_RLE4) the second byte contains 2 4-bit
  696.                        color indexes.  The repetition count is
  697.                        completed by alternately choosing the high-order
  698.                        nibble followed by the low-order nibble for the
  699.                        succeeding pels until the count is exhausted.
  700.  
  701.     Unencoded run: 
  702.  
  703.     An unencoded run is a string of pels to be placed in consecutive positions 
  704.     in the destination bit map. 
  705.  
  706.  
  707.         1st-byte     0
  708.         2nd-byte     COUNT = a multiple of 3 for BCA_RLE24 bit maps, or
  709.                      COUNT >= 3 (for BCA_RLE4 and BCA_RLE8 bit maps).
  710.  
  711.     followed by the bytes as follows: 
  712.  
  713.     BCA_RLE24 
  714.               A string of bytes specifying the RGB color values of succeeding 
  715.               pels.  If COUNT is odd, it must be padded by a zero byte for an 
  716.               even length overall. 
  717.  
  718.     BCA_RLE8 
  719.               A string of bytes specifying color indexes for succeeding pels. 
  720.               If COUNT is odd, it must be padded by a zero byte for an even 
  721.               length overall. 
  722.  
  723.     BCA_RLE4 
  724.               A string of bytes, each byte providing two color indexes, with 
  725.               the high-order nibble specifying the index of the pel preceding 
  726.               the low-order nibble. The COUNT specifies the number of indexes. 
  727.               The overall length of the string must be an even number of bytes, 
  728.               and thus may be padded with a zero byte, and the low order nibble 
  729.               of the last significant byte may also be zero and not used. 
  730.  
  731.     Delta record: 
  732.  
  733.     A delta record indicates a shift in position in the destination bit map 
  734.     before the next record is decoded. 
  735.  
  736.  
  737.         1st-byte        0
  738.         2nd-byte        2
  739.         3rd-byte        Delta-x (unsigned)
  740.         4th-byte        Delta-y (unsigned)
  741.  
  742.     This is a relative jump record.  It implies that the next record is to be 
  743.     decoded into a position in the destination bit map at an offset from the 
  744.     current position, determined by changing the horizontal and vertical 
  745.     positions by Delta-x and Delta-y, respectively. 
  746.  
  747.     End-of-line record: 
  748.  
  749.     The end-of-line record signifies that the data for the current scan line is 
  750.     complete and that decoding of the next record should begin at the start of 
  751.     the next scan line. 
  752.  
  753.  
  754.         1st-byte        0
  755.         2nd-byte        0
  756.  
  757.     End-of-RLE record: 
  758.  
  759.     The end-of-RLE record signifies the end of the data in the RLE compressed 
  760.     bit map. 
  761.  
  762.  
  763.         1st-byte        0
  764.         2nd-byte        1
  765.  
  766.  
  767. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cbImage ΓòÉΓòÉΓòÉ
  768.  
  769.  cbImage (ULONG) 
  770.     Length of bit-map storage data, in bytes. 
  771.  
  772.     If the bit map is uncompressed, zero (the default) can be specified for 
  773.     this. 
  774.  
  775.  
  776. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cxResolution ΓòÉΓòÉΓòÉ
  777.  
  778.  cxResolution (ULONG) 
  779.     Horizontal component of the resolution of target device. 
  780.  
  781.     The resolution of the device the bit map is intended for, in the units 
  782.     specified by usUnits. This information enables applications to select from 
  783.     a resource group the bit map that best matches the characteristics of the 
  784.     current output device. 
  785.  
  786.  
  787. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cyResolution ΓòÉΓòÉΓòÉ
  788.  
  789.  cyResolution (ULONG) 
  790.     Vertical component of the resolution of target device. 
  791.  
  792.     See the description of cxResolution. 
  793.  
  794.  
  795. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cclrUsed ΓòÉΓòÉΓòÉ
  796.  
  797.  cclrUsed (ULONG) 
  798.     Number of color indexes used. 
  799.  
  800.     The number of color indexes from the color table that are used by the bit 
  801.     map. If this is zero (the default), all the indexes are used. If it is 
  802.     non-zero, only the first cclrUsed entries in the table are accessed by the 
  803.     system, and further entries can be omitted. 
  804.  
  805.     For the standard formats with a cBitCount of 1, 4, or 8 (and cPlanes equal 
  806.     to 1), any indexes beyond cclrUsed are invalid. For example, a bit map with 
  807.     64 colors can use the 8-bitcount format without having to supply the other 
  808.     192 entries in the color table. For the 24-bitcount standard format, 
  809.     cclrUsed is the number of colors used by the bit map. 
  810.  
  811.  
  812. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cclrImportant ΓòÉΓòÉΓòÉ
  813.  
  814.  cclrImportant (ULONG) 
  815.     Minimum number of color indexes for satisfactory appearance of the bit map. 
  816.  
  817.     More colors may be used in the bit map, but it is not necessary to assign 
  818.     them to the device palette. These additional colors may be mapped to the 
  819.     nearest colors available. 
  820.  
  821.     Zero (the default) means that all entries are important. 
  822.  
  823.     For a 24-bitcount standard format bit map, the cclrImportant colors are 
  824.     also listed in the color table relating to this bit map. 
  825.  
  826.  
  827. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - usUnits ΓòÉΓòÉΓòÉ
  828.  
  829.  usUnits (USHORT) 
  830.     Units of measure. 
  831.  
  832.     Units of measure of the horizontal and vertical resolution, cxResolution 
  833.     and cyResolution. 
  834.  
  835.     BRU_METRIC     Pels per meter. This is the default value. 
  836.  
  837.  
  838. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - usReserved ΓòÉΓòÉΓòÉ
  839.  
  840.  usReserved (USHORT) 
  841.     Reserved. 
  842.  
  843.     This is a reserved field. If present, it must be zero. 
  844.  
  845.  
  846. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - usRecording ΓòÉΓòÉΓòÉ
  847.  
  848.  usRecording (USHORT) 
  849.     Recording algorithm. 
  850.  
  851.     The format in which the bit-map data is recorded. 
  852.  
  853.     BRA_BOTTOMUP        Scan lines are recorded bottom to top. This is the 
  854.                         default value. 
  855.  
  856.  
  857. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - usRendering ΓòÉΓòÉΓòÉ
  858.  
  859.  usRendering (USHORT) 
  860.     Halftoning algorithm. 
  861.  
  862.     The algorithm used to record bit-map data that has been digitally 
  863.     halftoned. 
  864.  
  865.     BRH_NOTHALFTONED Bit-map data is not halftoned. This is the default value. 
  866.  
  867.     BRH_ERRORDIFFUSION Error Diffusion or Damped Error Diffusion algorithm. 
  868.  
  869.     BRH_PANDA      Processing Algorithm for Non-coded Document Acquisition. 
  870.  
  871.     BRH_SUPERCIRCLE Super Circle algorithm. 
  872.  
  873.  
  874. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cSize1 ΓòÉΓòÉΓòÉ
  875.  
  876.  cSize1 (ULONG) 
  877.     Size value 1. 
  878.  
  879.     If BRH_ERRORDIFFUSION is specified in usRendering, cSize1 is the error 
  880.     damping as a percentage in the range 0 through 100. A value of 100% 
  881.     indicates no damping, and a value of 0% indicates that any errors are not 
  882.     diffused. 
  883.  
  884.     If BRH_PANDA or BRH_SUPERCIRCLE is specified, cSize1 is the x dimension of 
  885.     the pattern used, in pels. 
  886.  
  887.  
  888. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - cSize2 ΓòÉΓòÉΓòÉ
  889.  
  890.  cSize2 (ULONG) 
  891.     Size value 2. 
  892.  
  893.     If BRH_ERRORDIFFUSION is specified in usRendering, this parameter is 
  894.     ignored. 
  895.  
  896.     If BRH_PANDA or BRH_SUPERCIRCLE is specified, cSize2 is the y dimension of 
  897.     the pattern used, in pels. 
  898.  
  899.  
  900. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - ulColorEncoding ΓòÉΓòÉΓòÉ
  901.  
  902.  ulColorEncoding (ULONG) 
  903.     Color encoding. 
  904.  
  905.     BCE_RGB        Each element in the color array is an RGB2 datatype. This is 
  906.                    the default value. 
  907.  
  908.  
  909. ΓòÉΓòÉΓòÉ <hidden> BITMAPINFOHEADER2 Field - ulIdentifier ΓòÉΓòÉΓòÉ
  910.  
  911.  ulIdentifier (ULONG) 
  912.     Reserved for application use. 
  913.  
  914.  
  915. ΓòÉΓòÉΓòÉ 1.7. BOOL ΓòÉΓòÉΓòÉ
  916.  
  917. Boolean. 
  918.  
  919. Valid values are FALSE, which is 0, and TRUE, which is 1. 
  920.  
  921. Type
  922.   BOOL    = LONGBOOL;
  923.  
  924.  
  925. ΓòÉΓòÉΓòÉ 1.8. BYTE ΓòÉΓòÉΓòÉ
  926.  
  927. A byte. 
  928.  
  929. Type
  930.   Char    = Char;
  931.  
  932.  
  933. ΓòÉΓòÉΓòÉ 1.9. CHAR ΓòÉΓòÉΓòÉ
  934.  
  935. Single-byte character. 
  936.  
  937.  
  938. ΓòÉΓòÉΓòÉ 1.10. CHARBUNDLE ΓòÉΓòÉΓòÉ
  939.  
  940. Character-attributes bundle structure. 
  941.  
  942. Type
  943.   CHARBUNDLE = Record
  944.     lColor:        Long;
  945.     lBackColor:    Long;
  946.     usMixMode:     SmallWord;
  947.     usBackMixMode: SmallWord;
  948.     usSet:         SmallWord;
  949.     usPrecision:   SmallWord;
  950.     sizfxCell:     SizeF;
  951.     ptlAngle:      PointL;
  952.     ptlShear:      PointL;
  953.     usDirection:   SmallWord;
  954.     usTextAlign:   SmallWord;
  955.     fxExtra:       Fixed;
  956.     fxBreakExtra:  Fixed;
  957.   End;
  958.  
  959. Type
  960.   PCHARBUNDLE = ^CHARBUNDLE;
  961.  
  962.  
  963. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  964.  
  965.  lColor (LONG) 
  966.     Character foreground color. 
  967.  
  968.  
  969. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  970.  
  971.  lBackColor (LONG) 
  972.     Character background color. 
  973.  
  974.  
  975. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  976.  
  977.  usMixMode (USHORT) 
  978.     Character foreground-mix mode. 
  979.  
  980.  
  981. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  982.  
  983.  usBackMixMode (USHORT) 
  984.     Character background-mix mode. 
  985.  
  986.  
  987. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usSet ΓòÉΓòÉΓòÉ
  988.  
  989.  usSet (USHORT) 
  990.     Character set. 
  991.  
  992.  
  993. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usPrecision ΓòÉΓòÉΓòÉ
  994.  
  995.  usPrecision (USHORT) 
  996.     Character precision. 
  997.  
  998.  
  999. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - sizfxCell ΓòÉΓòÉΓòÉ
  1000.  
  1001.  sizfxCell (SIZEF) 
  1002.     Character cell size. 
  1003.  
  1004.  
  1005. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - ptlAngle ΓòÉΓòÉΓòÉ
  1006.  
  1007.  ptlAngle (POINTL) 
  1008.     Character angle. 
  1009.  
  1010.  
  1011. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - ptlShear ΓòÉΓòÉΓòÉ
  1012.  
  1013.  ptlShear (POINTL) 
  1014.     Character shear. 
  1015.  
  1016.  
  1017. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usDirection ΓòÉΓòÉΓòÉ
  1018.  
  1019.  usDirection (USHORT) 
  1020.     Character direction. 
  1021.  
  1022.  
  1023. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - usTextAlign ΓòÉΓòÉΓòÉ
  1024.  
  1025.  usTextAlign (USHORT) 
  1026.     Text alignment. 
  1027.  
  1028.  
  1029. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - fxExtra ΓòÉΓòÉΓòÉ
  1030.  
  1031.  fxExtra (FIXED) 
  1032.     Character extra. 
  1033.  
  1034.  
  1035. ΓòÉΓòÉΓòÉ <hidden> CHARBUNDLE Field - fxBreakExtra ΓòÉΓòÉΓòÉ
  1036.  
  1037.  fxBreakExtra (FIXED) 
  1038.     Character break extra. 
  1039.  
  1040.  
  1041. ΓòÉΓòÉΓòÉ 1.11. CONVCONTEXT ΓòÉΓòÉΓòÉ
  1042.  
  1043. Dynamic-data-exchange conversation context structure. 
  1044.  
  1045. Type
  1046.   CONVCONTEXT = Record
  1047.     cb:          ULong;         { SizeOf(ConvContext) }
  1048.     fsContext:   ULong;
  1049.     idCountry:   ULong;
  1050.     usCodepage:  ULong;
  1051.     usLangID:    ULong;
  1052.     usSubLangID: ULong;
  1053.   End;
  1054.  
  1055. Type
  1056.   PCONVCONTEXT = ^CONVCONTEXT;
  1057.  
  1058.  
  1059. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - cb ΓòÉΓòÉΓòÉ
  1060.  
  1061.  cb (ULONG) 
  1062.     Length of structure. 
  1063.  
  1064.     This must be set to the length of the CONVCONTEXT structure. 
  1065.  
  1066.  
  1067. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - fsContext ΓòÉΓòÉΓòÉ
  1068.  
  1069.  fsContext (ULONG) 
  1070.     Options. 
  1071.  
  1072.     DDECTXT_CASESENSITIVE 
  1073.             All strings in this conversation are case sensitive. 
  1074.  
  1075.  
  1076. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - idCountry ΓòÉΓòÉΓòÉ
  1077.  
  1078.  idCountry (ULONG) 
  1079.     Country code. 
  1080.  
  1081.  
  1082. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - usCodepage ΓòÉΓòÉΓòÉ
  1083.  
  1084.  usCodepage (ULONG) 
  1085.     Code-page identity. 
  1086.  
  1087.  
  1088. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - usLangID ΓòÉΓòÉΓòÉ
  1089.  
  1090.  usLangID (ULONG) 
  1091.     Language. 
  1092.  
  1093.     Zero is valid and means no language information. 
  1094.  
  1095.  
  1096. ΓòÉΓòÉΓòÉ <hidden> CONVCONTEXT Field - usSubLangID ΓòÉΓòÉΓòÉ
  1097.  
  1098.  usSubLangID (ULONG) 
  1099.     Sub-language. 
  1100.  
  1101.     Zero is valid and means no sub-language information. 
  1102.  
  1103.  
  1104. ΓòÉΓòÉΓòÉ 1.12. DDEINIT ΓòÉΓòÉΓòÉ
  1105.  
  1106. Dynamic-data-exchange initiation structure. 
  1107.  
  1108. Type
  1109.   DDEINIT = Record
  1110.     cb:             ULong;      { SizeOf(DdeInit) }
  1111.     pszAppName:     PChar;
  1112.     pszTopic:       PChar;
  1113.     offConvContext: ULong;
  1114.   End;
  1115.  
  1116. Type
  1117.   PDDEINIT = ^DDEINIT;
  1118.  
  1119.  
  1120. ΓòÉΓòÉΓòÉ <hidden> DDEINIT Field - cb ΓòÉΓòÉΓòÉ
  1121.  
  1122.  cb (ULONG) 
  1123.     Length of structure. 
  1124.  
  1125.     This must be set to the length of the DDEINIT structure. 
  1126.  
  1127.  
  1128. ΓòÉΓòÉΓòÉ <hidden> DDEINIT Field - pszAppName ΓòÉΓòÉΓòÉ
  1129.  
  1130.  pszAppName (PSZ) 
  1131.     Application name. 
  1132.  
  1133.     Pointer to name of the server application. 
  1134.  
  1135.     Application names must not contain slashes or backslashes. These characters 
  1136.     are reserved for future use in network implementations. 
  1137.  
  1138.  
  1139. ΓòÉΓòÉΓòÉ <hidden> DDEINIT Field - pszTopic ΓòÉΓòÉΓòÉ
  1140.  
  1141.  pszTopic (PSZ) 
  1142.     Topic. 
  1143.  
  1144.     Pointer to name of the topic. 
  1145.  
  1146.  
  1147. ΓòÉΓòÉΓòÉ <hidden> DDEINIT Field - offConvContext ΓòÉΓòÉΓòÉ
  1148.  
  1149.  offConvContext (ULONG) 
  1150.     Conversation context. 
  1151.  
  1152.     Offset to a CONVCONTEXT structure. 
  1153.  
  1154.  
  1155. ΓòÉΓòÉΓòÉ 1.13. DDESTRUCT ΓòÉΓòÉΓòÉ
  1156.  
  1157. Dynamic-data-exchange control structure. 
  1158.  
  1159. Type
  1160.   DDESTRUCT = Record
  1161.     cbData:        ULong;
  1162.     fsStatus:      SmallWord;
  1163.     usFormat:      SmallWord;
  1164.     offszItemName: SmallWord;
  1165.     offabData:     SmallWord;
  1166.   End;
  1167.  
  1168. Type
  1169.   PDDESTRUCT = ^DDESTRUCT;
  1170.  
  1171. DDE formats, specified in the usFormat parameter, are registered with the atom 
  1172. manager, using the system atom table.  The predefined DDE formats are 
  1173. guaranteed not to conflict with the values returned by the atom manager. 
  1174.  
  1175. Applications can define their own data formats; however, each nonstandard DDE 
  1176. format must have a unique identification number. To receive an identification 
  1177. number for a nonstardard format, the application must register the name of the 
  1178. format in the system atom table. Other applications that have the name of the 
  1179. format can then query the system atom table for the format's identification 
  1180. number. This method ensures that all applications use the same atom to identify 
  1181. a format. 
  1182.  
  1183.  
  1184. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - cbData ΓòÉΓòÉΓòÉ
  1185.  
  1186.  cbData (ULONG) 
  1187.     Length of the data. 
  1188.  
  1189.     This is the length of data that occurs after the offabData parameter. If no 
  1190.     data exists, this field should contain a zero (0). 
  1191.  
  1192.  
  1193. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - fsStatus ΓòÉΓòÉΓòÉ
  1194.  
  1195.  fsStatus (USHORT) 
  1196.     Status of the data exchange. 
  1197.  
  1198.     DDE_FACK 
  1199.             Positive acknowledgement 
  1200.     DDE_FBUSY 
  1201.             Application is busy 
  1202.     DDE_FNODATA 
  1203.             No data transfer for advise 
  1204.     DDE_FACKREQ 
  1205.             Acknowledgements are requested 
  1206.     DDE_FRESPONSE 
  1207.             Response to WM_DDE_REQUEST 
  1208.     DDE_NOTPROCESSED 
  1209.             DDE message not understood 
  1210.     DDE_FAPPSTATUS 
  1211.             A 1-byte field of bits that are reserved for application-specific 
  1212.             returns. 
  1213.  
  1214.  
  1215. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - usFormat ΓòÉΓòÉΓòÉ
  1216.  
  1217.  usFormat (USHORT) 
  1218.     DDE data format. 
  1219.  
  1220.     This parameter can be set to one of the following values: 
  1221.  
  1222.     DDEFMT_TEXT 
  1223.             System-defined standard format for exchanging text data. 
  1224.     SZFMT_BITMAP 
  1225.             Specifies that the data is a bit map. 
  1226.     SZFMT_CPTEXT 
  1227.             Specifies text whose format is defined by a CPTEXT data structure. 
  1228.             Applications can use this format to pass multiple-language strings 
  1229.             without changing the conversation context. 
  1230.     SZFMT_DIF 
  1231.             Specifies that the data is in Data Image Format (DIF). 
  1232.     SZFMT_DSPBITMAP 
  1233.             Specifies that the data is a bit-map representation of a private 
  1234.             data format. 
  1235.     SZFMT_DSPMETAFILE 
  1236.             Specifies that the data is a metafile representation of a private 
  1237.             data format. 
  1238.     SZFMT_DSPMETAFILEPICT 
  1239.             Specifies that the data is a metafile picture representation of a 
  1240.             private data format. 
  1241.     SZFMT_DSPTEXT 
  1242.             Specifies that the data is a text representation of a private data 
  1243.             format. 
  1244.     SZFMT_LINK 
  1245.             Specifies that the data is in link-file format. 
  1246.     SZFMT_METAFILE 
  1247.             Specifies that the data is a metafile. 
  1248.     SZFMT_METAFILEPICT 
  1249.             Specifies that the data is a metafile picture defined by an MFP 
  1250.             data structure. 
  1251.     SZFMT_OEMTEXT 
  1252.             Specifies that the data is in OEM Text format. 
  1253.     SZFMT_PALETTE 
  1254.             Specifies that the data is in palette format. 
  1255.     SZFMT_SYLK 
  1256.             Specifies that the data is in Synchronous Link format. 
  1257.     SZFMT_TEXT 
  1258.             Specifies that the data is an array of text characters. These 
  1259.             characters can include new-line characters to indicate linebreaks. 
  1260.             The zero-length character indicates the end of the text data. 
  1261.     SZFMT_TIFF 
  1262.             Specifies that the data is in Tag Image File Format (TIFF). 
  1263.  
  1264.  
  1265. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - offszItemName ΓòÉΓòÉΓòÉ
  1266.  
  1267.  offszItemName (USHORT) 
  1268.     Offset to item name. 
  1269.  
  1270.     This is the offset to the item name from the start of this structure. Item 
  1271.     name is a null (0x00) terminated string. If no item name exists, there must 
  1272.     be a single null (0x00) character in this position. (That is, ItemName is 
  1273.     ALWAYS a null terminated string.) 
  1274.  
  1275.  
  1276. ΓòÉΓòÉΓòÉ <hidden> DDESTRUCT Field - offabData ΓòÉΓòÉΓòÉ
  1277.  
  1278.  offabData (USHORT) 
  1279.     Offset to beginning of data. 
  1280.  
  1281.     This is the offset to the data, from the start of this structure. This 
  1282.     field should be calculated regardless of the presence of data. If no data 
  1283.     exists, cbData must be zero (0). 
  1284.  
  1285.     For compatibility reasons, this data should not contain embedded pointers. 
  1286.     Offsets should be used instead. 
  1287.  
  1288.  
  1289. ΓòÉΓòÉΓòÉ 1.14. DEVOPENSTRUC ΓòÉΓòÉΓòÉ
  1290.  
  1291. Open-device data structure. 
  1292.  
  1293. Type
  1294.   DEVOPENSTRUC = Record
  1295.     pszLogAddress:       PChar;
  1296.     pszDriverName:       PChar;
  1297.     pDriv:               PDrivData;
  1298.     pszDataType:         PChar;
  1299.     pszComment:          PChar;
  1300.     pszQueueProcName:    PChar;
  1301.     pszQueueProcParams:  PChar;
  1302.     pszSpoolerParams:    PChar;
  1303.     pszNetworkParams:    PChar;
  1304.   End;
  1305.  
  1306. Type
  1307.   PDEVOPENSTRUC = ^DEVOPENSTRUC;
  1308.  
  1309.  
  1310. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszLogAddress ΓòÉΓòÉΓòÉ
  1311.  
  1312.  pszLogAddress (PSZ) 
  1313.     Logical address. 
  1314.  
  1315.     This is required for an OD_DIRECT device being opened with DevOpenDC; it is 
  1316.     the logical device address, such as "LPT1" on OS/2. Some drivers may accept 
  1317.     a file name for this parameter or even a named pipe. 
  1318.  
  1319.     Where output is to be queued (for an OD_QUEUED device), this is the name of 
  1320.     the queue for the output device. The queue name can be a UNC name. 
  1321.  
  1322.     Note:  This parameter can be a port name for a printer device context. 
  1323.  
  1324.  
  1325. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszDriverName ΓòÉΓòÉΓòÉ
  1326.  
  1327.  pszDriverName (PSZ) 
  1328.     Driver name. 
  1329.  
  1330.     Character string identifying the printer driver, for example, LASERJET. The 
  1331.     Default Device Driver field of the PRQINFO3 structure, associated with the 
  1332.     required print queue, gives the driver and device name, separated by a 
  1333.     period, for example LASERJET.HP LaserJet IIID. It can contain only the name 
  1334.     up to the period, for example LASERJET. 
  1335.  
  1336.  
  1337. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pdriv ΓòÉΓòÉΓòÉ
  1338.  
  1339.  pdriv (PDRIVDATA) 
  1340.     Driver data. 
  1341.  
  1342.     Data that is to be passed directly to the PM device driver. Whether any of 
  1343.     this is required depends upon the device driver. 
  1344.  
  1345.     For printer device context, this is a pointer to the job properties data. 
  1346.  
  1347.  
  1348. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszDataType ΓòÉΓòÉΓòÉ
  1349.  
  1350.  pszDataType (PSZ) 
  1351.     Data type. 
  1352.  
  1353.     For an OD_QUEUED or OD_DIRECT device, this parameter defines the type of 
  1354.     data that is to be queued as follows: 
  1355.  
  1356.     PM_Q_STD        Standard format 
  1357.     PM_Q_RAW        Raw format 
  1358.  
  1359.     Note that a device driver can define other data types. 
  1360.  
  1361.     For OD_QUEUED or OD_DIRECT defice types, the default is supplied by the 
  1362.     device driver if pszDataType is not specified. For any other device type, 
  1363.     pszDataType is ignored. 
  1364.  
  1365.  
  1366. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszComment ΓòÉΓòÉΓòÉ
  1367.  
  1368.  pszComment (PSZ) 
  1369.     Comment. 
  1370.  
  1371.     Optional character string that the printer object displays to the user in a 
  1372.     job settings notebook. It is recommended that the application include its 
  1373.     own name in this comment string. 
  1374.  
  1375.     Note:  The job title text is derived from the document name passed to 
  1376.            DevEscape (DEVESC_STARTDOC). 
  1377.  
  1378.  
  1379. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszQueueProcName ΓòÉΓòÉΓòÉ
  1380.  
  1381.  pszQueueProcName (PSZ) 
  1382.     Queue-processor name. 
  1383.  
  1384.     This is the name of the queue processor, for queued output, and is usually 
  1385.     the default. 
  1386.  
  1387.  
  1388. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszQueueProcParams ΓòÉΓòÉΓòÉ
  1389.  
  1390.  pszQueueProcParams (PSZ) 
  1391.     Queue-processor parameters. 
  1392.  
  1393.     Queue processor parameters (optional). They can include information such as 
  1394.     the number of copies you want to print and the size of the output area on 
  1395.     the printed page. 
  1396.  
  1397.     The first parameter (COP) is used for all spool-file formats. The remaining 
  1398.     parameters are valid for PM_Q_STD spool files only. Because PM_Q_STD data 
  1399.     are used mainly for graphic data, these parameters are described in 
  1400.     relation to the printing of picture files. 
  1401.  
  1402.     The PMPRINT/PMPLOT queue-processor parameters are separated by spaces and 
  1403.     are: 
  1404.  
  1405.     COP=n 
  1406.              The COP parameter specifies the number of copies of the spool file 
  1407.              that you want printed. The value of n must be an integer in the 
  1408.              range of 1 through 999. 
  1409.  
  1410.              The default is COP=1. 
  1411.  
  1412.     ARE=C | w,h,l,t 
  1413.              The ARE parameter determines the size and position of the output 
  1414.              area. This is the area of the physical page to which printing is 
  1415.              restricted. 
  1416.  
  1417.              The default value of ARE=C means that the output area is the whole 
  1418.              page. Note, however, that the printer cannot print outside its own 
  1419.              device clip limits. 
  1420.  
  1421.              To size and position the output area at a specific point on the 
  1422.              page, use ARE=w,h,l,t, where: 
  1423.  
  1424.              w, h                are the width and height of the desired output 
  1425.                                  area. 
  1426.  
  1427.              l, t                are the offsets of the upper-left corner of 
  1428.                                  the output area from the left (l) and from the 
  1429.                                  top (t) of the maximum output area. 
  1430.  
  1431.              These four values must be given as percentages of the maximum 
  1432.              output dimensions. The maximum output area is the area within the 
  1433.              device clip limits. 
  1434.  
  1435.     FIT=S | l,t 
  1436.              The FIT parameter determines which part of the picture is to be 
  1437.              printed. You can request the whole of the picture, scaled to fit 
  1438.              the output area; or you can position the picture (actual size) 
  1439.              anywhere within the output area. This could mean that the picture 
  1440.              is clipped at the boundaries of the output area. 
  1441.  
  1442.              The default value of FIT=S causes the output to be scaled until 
  1443.              the larger of the height or width just fits within the defined 
  1444.              output area. The aspect ratio of the picture is maintained. 
  1445.  
  1446.              To print the picture in actual size, use FIT=l,t, where l,t are 
  1447.              the coordinates of the point in the picture that you want 
  1448.              positioned at the center of the output area: l is measured from 
  1449.              the left edge of the picture; and t is measured from the top edge. 
  1450.              The coordinates must be given as percentages of the actual 
  1451.              dimensions of the picture. 
  1452.  
  1453.     XFM=0 | 1 
  1454.              The XFM parameter enables you to override the picture-positioning 
  1455.              and clipping instructions that are provided by the ARE and FIT 
  1456.              parameters, including their defaults. 
  1457.  
  1458.              The default value of XFM=1 allows the appearance of the output to 
  1459.              be determined by the settings of the ARE and FIT parameters. 
  1460.  
  1461.              A value of XFM=0 yields output as specified in the picture file. 
  1462.              For example, applications that use many different forms can define 
  1463.              different positions on each form for their output. 
  1464.  
  1465.     COL=M | C 
  1466.              The COL parameter enables you to specify color output if you have 
  1467.              a color printer. 
  1468.  
  1469.              A value of COL=M creates monochrome output (black foreground with 
  1470.              no background color). This is supported by all devices. 
  1471.  
  1472.              A value of COL=C creates color output. If you request color output 
  1473.              on a monochrome device, the printer presentation driver tries to 
  1474.              satisfy your request, which can cause problems because the only 
  1475.              color available is black. For example, if the picture file 
  1476.              specifies a red line on a blue background, both are drawn in 
  1477.              black. 
  1478.  
  1479.              The default is COL=M when you are addressing a monochrome printer 
  1480.              and COL=C when you are addressing a color printer. 
  1481.  
  1482.     MAP=N | A 
  1483.              The MAP parameter enables you to decide how the neutral colors 
  1484.              (those that are not specified in the picture file) are printed. 
  1485.  
  1486.              The default value of MAP=N yields a normal representation of the 
  1487.              screen picture on a printed page, which means that the page 
  1488.              background is white and the foreground is black. 
  1489.  
  1490.              A value of MAP=A provides the reverse of the normal 
  1491.              representation:  the background is black and the foreground is 
  1492.              white on the printed page. 
  1493.  
  1494.     CDP=codepage 
  1495.              The CDP parameter overrides the codepage to being used for 
  1496.              PM_Q_RAW print jobs. The print queue driver uses DEVESC_SETMODE to 
  1497.              set the codepage, but not all printer drivers support this device 
  1498.              escape. 
  1499.  
  1500.     XLT=0 | 1 
  1501.              The XLT parameter can eliminate the translation component when 
  1502.              printing a metafile if XLT=1. 
  1503.  
  1504.              When the resolution of the device is higher than that of the world 
  1505.              coordinate space, a small translation of world coordinate point 
  1506.              (0,0) occurs on the device to preserve the accuracy of the mapping 
  1507.              from world to device coordinate units. For example, (0,0) becomes 
  1508.              (1,1) if there are 3 pels to every world coordinate. 
  1509.  
  1510.              Normally, this is not noticeable, but it can be a problem with 
  1511.              some devices. For example, in order to draw a complete row of 80 
  1512.              characters using a device font, a device may require the text to 
  1513.              start at device coordinate position zero. Starting at a position 
  1514.              other than zero may cause one or more characters at the end of the 
  1515.              row to be clipped. In such cases, elimination of the translation 
  1516.              is important and can be accomplished by specifying XLT=1. 
  1517.  
  1518.              The default is XLT=0. 
  1519.  
  1520.  
  1521. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszSpoolerParams ΓòÉΓòÉΓòÉ
  1522.  
  1523.  pszSpoolerParams (PSZ) 
  1524.     Spooler parameters. 
  1525.  
  1526.     Spooler parameters (optional) are separated by spaces. They are used for 
  1527.     scheduling print jobs and are as follows: 
  1528.  
  1529.         The form names that identify the paper to be used, for example, 
  1530.          FORM=A4,A5,ENV. The form names are optional; but if they are provided, 
  1531.          the spooler is able to hold off printing the jobs until the required 
  1532.          form is installed in the printer. If the form name is not provided, 
  1533.          the spooler attempts to print the job. The printer driver recognizes 
  1534.          that there is a forms problem and displays a FORMS MISMATCH message 
  1535.          box. 
  1536.  
  1537.         Priority of the print job, for example, PRTY=60. The priority is 
  1538.          specified as an integer in the range 1 through 99; 99 is the highest. 
  1539.          The default priority value is 50. The application can use the spooler 
  1540.          priority parameter to prioritize its own jobs; however, it is not good 
  1541.          practice for an application always to use priority 99 in an attempt to 
  1542.          get its jobs printed first. 
  1543.  
  1544.  
  1545. ΓòÉΓòÉΓòÉ <hidden> DEVOPENSTRUC Field - pszNetworkParams ΓòÉΓòÉΓòÉ
  1546.  
  1547.  pszNetworkParams (PSZ) 
  1548.     Network parameters. 
  1549.  
  1550.     Optional parameter that can be used to specify network options; for 
  1551.     example, USER=JOESMITH. 
  1552.  
  1553.  
  1554. ΓòÉΓòÉΓòÉ 1.15. DRIVDATA ΓòÉΓòÉΓòÉ
  1555.  
  1556. Driver-data structure. 
  1557.  
  1558. Type
  1559.   DRIVDATA = Record
  1560.     cb:         Long;
  1561.     lVersion:   Long;
  1562.     szDeviceName: array[0..31] of Char;
  1563.     abGeneralData: Char;
  1564.   End;
  1565.  
  1566. Type
  1567.   PDRIVDATA = ^DRIVDATA;
  1568.  
  1569.  
  1570. ΓòÉΓòÉΓòÉ <hidden> DRIVDATA Field - cb ΓòÉΓòÉΓòÉ
  1571.  
  1572.  cb (LONG) 
  1573.     Length. 
  1574.  
  1575.     The length of the structure. 
  1576.  
  1577.  
  1578. ΓòÉΓòÉΓòÉ <hidden> DRIVDATA Field - lVersion ΓòÉΓòÉΓòÉ
  1579.  
  1580.  lVersion (LONG) 
  1581.     Version. 
  1582.  
  1583.     The version number of the data. Version numbers are defined by particular 
  1584.     PM device drivers. 
  1585.  
  1586.  
  1587. ΓòÉΓòÉΓòÉ <hidden> DRIVDATA Field - szDeviceName[32] ΓòÉΓòÉΓòÉ
  1588.  
  1589.  szDeviceName[32] (CHAR) 
  1590.     Device name. 
  1591.  
  1592.     A string in a 32-byte field identifying the particular device (model 
  1593.     number, and so on). Again, valid values are defined by PM device drivers. 
  1594.  
  1595.  
  1596. ΓòÉΓòÉΓòÉ <hidden> DRIVDATA Field - abGeneralData[1] ΓòÉΓòÉΓòÉ
  1597.  
  1598.  abGeneralData[1] (CHAR) 
  1599.     General data. 
  1600.  
  1601.     Data as defined by the Presentation Manager device driver. 
  1602.  
  1603.     The data type of this field is defined by the Presentation Manager device 
  1604.     driver. It does not contain pointers, as these are not necessarily valid 
  1605.     when passed to the device driver. 
  1606.  
  1607.  
  1608. ΓòÉΓòÉΓòÉ 1.16. ERRORID ΓòÉΓòÉΓòÉ
  1609.  
  1610. Error identity. 
  1611.  
  1612. Type
  1613.   ERRORID = ULONG;
  1614.  
  1615.  
  1616. ΓòÉΓòÉΓòÉ 1.17. ERRINFO ΓòÉΓòÉΓòÉ
  1617.  
  1618. Error-information structure. 
  1619.  
  1620. Type
  1621.   ERRINFO = Record
  1622.     cbFixedErrInfo: ULong;
  1623.     idError:        ErrorId;
  1624.     cDetailLevel:   ULong;
  1625.     offaoffszMsg:   ULong;
  1626.     offBinaryData:  ULong;
  1627.   End;
  1628.  
  1629. Type
  1630.   PERRINFO = ^ERRINFO;
  1631.  
  1632.  
  1633. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - cbFixedErrInfo ΓòÉΓòÉΓòÉ
  1634.  
  1635.  cbFixedErrInfo (ULONG) 
  1636.     Length of fixed data to this structure. 
  1637.  
  1638.  
  1639. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - idError ΓòÉΓòÉΓòÉ
  1640.  
  1641.  idError (ERRORID) 
  1642.     Error identity. 
  1643.  
  1644.     This is identical to the value returned by WinGetLastError. 
  1645.  
  1646.  
  1647. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - cDetailLevel ΓòÉΓòÉΓòÉ
  1648.  
  1649.  cDetailLevel (ULONG) 
  1650.     Number of levels of detail. 
  1651.  
  1652.     This is the number of entries in the array of words pointed to by the 
  1653.     following field. One level of detail is provided. 
  1654.  
  1655.  
  1656. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - offaoffszMsg ΓòÉΓòÉΓòÉ
  1657.  
  1658.  offaoffszMsg (ULONG) 
  1659.     Offset to the array of message offsets. 
  1660.  
  1661.     This is an offset to an array of 16-bit offsets to null-terminated strings. 
  1662.     Each string is a printable message that offers varying levels of 
  1663.     information.  The first level is the least amount of detail, and the 
  1664.     remaining levels offer more and more detail. 
  1665.  
  1666.     The first level of detail is always an error message string, in the 
  1667.     following format: 
  1668.  
  1669.             xxxnnnns
  1670.  
  1671.             where    xxx    is the product identifier
  1672.                      nnnn   is the message number
  1673.                      s      is the message severity letter
  1674.                               W = warning
  1675.                               E = error
  1676.                               S = severe error
  1677.                               U = unrecoverable
  1678.  
  1679.  
  1680. ΓòÉΓòÉΓòÉ <hidden> ERRINFO Field - offBinaryData ΓòÉΓòÉΓòÉ
  1681.  
  1682.  offBinaryData (ULONG) 
  1683.     Offset to the binary data. 
  1684.  
  1685.     This can contain additional information relating to the error. 
  1686.  
  1687.  
  1688. ΓòÉΓòÉΓòÉ 1.18. FACENAMEDESC ΓòÉΓòÉΓòÉ
  1689.  
  1690. Face-name description structure. See GpiQueryFaceString. 
  1691.  
  1692. Type
  1693.   FACENAMEDESC = Record
  1694.     usSize:        SmallWord;
  1695.     usWeightClass: SmallWord;
  1696.     usWidthClass:  SmallWord;
  1697.     usReserved:    SmallWord;
  1698.     flOptions:     ULong;
  1699.   End;
  1700.  
  1701. Type
  1702.   PFACENAMEDESC = ^FACENAMEDESC;
  1703.  
  1704.  
  1705. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - usSize ΓòÉΓòÉΓòÉ
  1706.  
  1707.  usSize (USHORT) 
  1708.     Length of structure. 
  1709.  
  1710.  
  1711. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - usWeightClass ΓòÉΓòÉΓòÉ
  1712.  
  1713.  usWeightClass (USHORT) 
  1714.     Weight class. 
  1715.  
  1716.     Indicates the visual weight (thickness of strokes) of the characters in the 
  1717.     font: 
  1718.  
  1719.     FWEIGHT_DONT_CARE 
  1720.                                    Any font weight satisfies the request. 
  1721.     FWEIGHT_ULTRA_LIGHT 
  1722.                                    Ultra-light. 
  1723.     FWEIGHT_EXTRA_LIGHT 
  1724.                                    Extra-light. 
  1725.     FWEIGHT_LIGHT 
  1726.                                    Light. 
  1727.     FWEIGHT_SEMI_LIGHT 
  1728.                                    Semi-light. 
  1729.     FWEIGHT_NORMAL 
  1730.                                    Medium (normal) weight. 
  1731.     FWEIGHT_SEMI_BOLD 
  1732.                                    Semi-bold. 
  1733.     FWEIGHT_BOLD 
  1734.                                    Bold. 
  1735.     FWEIGHT_EXTRA_BOLD 
  1736.                                    Extra-bold. 
  1737.     FWEIGHT_ULTRA_BOLD 
  1738.                                    Ultra-bold. 
  1739.  
  1740.  
  1741. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - usWidthClass ΓòÉΓòÉΓòÉ
  1742.  
  1743.  usWidthClass (USHORT) 
  1744.     Width class. 
  1745.  
  1746.     Indicates the relative aspect ratio of the characters of the font in 
  1747.     relation to the normal aspect ratio for this type of font: 
  1748.  
  1749.     FWIDTH_DONT_CARE 
  1750.                                    Any font width satisfies the request. 
  1751.     FWIDTH_ULTRA_CONDENSED 
  1752.                                    Ultra-condensed (50% of normal). 
  1753.     FWIDTH_EXTRA_CONDENSED 
  1754.                                    Extra-condensed (62.5% of normal). 
  1755.     FWIDTH_CONDENSED 
  1756.                                    Condensed (75% of normal). 
  1757.     FWIDTH_SEMI_CONDENSED 
  1758.                                    Semi-condensed (87.5% of normal). 
  1759.     FWIDTH_NORMAL 
  1760.                                    Medium (normal). 
  1761.     FWIDTH_SEMI_EXPANDED 
  1762.                                    Semi-expanded (112.5% of normal). 
  1763.     FWIDTH_EXPANDED 
  1764.                                    Expanded (125% of normal). 
  1765.     FWIDTH_EXTRA_EXPANDED 
  1766.                                    Extra-expanded (150% of normal). 
  1767.     FWIDTH_ULTRA_EXPANDED 
  1768.                                    Ultra-expanded (200% of normal). 
  1769.  
  1770.  
  1771. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - usReserved ΓòÉΓòÉΓòÉ
  1772.  
  1773.  usReserved (USHORT) 
  1774.     Reserved. 
  1775.  
  1776.  
  1777. ΓòÉΓòÉΓòÉ <hidden> FACENAMEDESC Field - flOptions ΓòÉΓòÉΓòÉ
  1778.  
  1779.  flOptions (ULONG) 
  1780.     Other characteristics of the font. 
  1781.  
  1782.     FTYPE_ITALIC 
  1783.                                    Italic font required. If not specified, 
  1784.                                    non-italic font required. 
  1785.  
  1786.     FTYPE_ITALIC_DONT_CARE 
  1787.                                    Italic and non-italic fonts can satisfy the 
  1788.                                    request. If this option is specified, 
  1789.                                    FTYPE_ITALIC is ignored. 
  1790.  
  1791.     FTYPE_OBLIQUE 
  1792.                                    Oblique font required. If not specified, 
  1793.                                    non-oblique font required. 
  1794.  
  1795.     FTYPE_OBLIQUE_DONT_CARE 
  1796.                                    Oblique and non-oblique fonts can satisfy 
  1797.                                    the request. If this option is specified, 
  1798.                                    FTYPE_OBLIQUE is ignored. 
  1799.  
  1800.     FTYPE_ROUNDED 
  1801.                                    Rounded font required. If not specified, 
  1802.                                    non-rounded font required. 
  1803.  
  1804.     FTYPE_ROUNDED_DONT_CARE 
  1805.                                    Rounded and non-rounded fonts can satisfy 
  1806.                                    the request. If this option is specified, 
  1807.                                    FTYPE_ROUNDED is ignored. 
  1808.  
  1809.  
  1810. ΓòÉΓòÉΓòÉ 1.19. FATTRS ΓòÉΓòÉΓòÉ
  1811.  
  1812. Font-attributes structure. 
  1813.  
  1814. Type
  1815.   FATTRS = Record
  1816.     usRecordLength:         Word;
  1817.     fsSelection:            Word;
  1818.     lMatch:                 Long;
  1819.     szFacename: array [0..FACESIZE-1] of Char;
  1820.     idRegistry:             Word;
  1821.     usCodePage:             Word;
  1822.     lMaxBaselineExt:        Long;
  1823.     lAveCharWidth:          Long;
  1824.     fsType:                 Word;
  1825.     fsFontUse:              Word;
  1826.   End;
  1827.  
  1828. Type
  1829.   PFATTRS = ^FATTRS;
  1830.  
  1831.  
  1832. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - usRecordLength ΓòÉΓòÉΓòÉ
  1833.  
  1834.  usRecordLength (USHORT) 
  1835.     Length of record. 
  1836.  
  1837.  
  1838. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - fsSelection ΓòÉΓòÉΓòÉ
  1839.  
  1840.  fsSelection (USHORT) 
  1841.     Selection indicators. 
  1842.  
  1843.     Flags causing the following features to be simulated by the system. 
  1844.  
  1845.     Note:  If an italic flag is applied to a font that is itself defined as 
  1846.            italic, the font is slanted further by italic simulation. 
  1847.  
  1848.     Underscore or strikeout lines are drawn using the appropriate attributes 
  1849.     (for example, color) from the character bundle (see the CHARBUNDLE 
  1850.     datatype), not the line bundle (see LINEBUNDLE). The width of the line, and 
  1851.     the vertical position of the line in font space, are determined by the 
  1852.     font. Horizontally, the line starts from a point in font space directly 
  1853.     above or below the start point of each character, and extends to a point 
  1854.     directly above or below the escapement point for that character. 
  1855.  
  1856.     For this purpose, the start and escapement points are those applicable to 
  1857.     left-to-right or right-to-left character directions (see 
  1858.     GpiSetCharDirection in Graphics Programming Interface Programming 
  1859.     Reference), even if the string is currently being drawn in a top-to-bottom 
  1860.     or bottom-to-top direction. 
  1861.  
  1862.     For left-to-right or right-to-left directions, any white space generated by 
  1863.     the character extra and character break extra attributes (see 
  1864.     GpiSetCharExtra and GpiSetCharBreakExtra in Graphics Programming Interface 
  1865.     Programming Reference), as well as increments provided by the vector of 
  1866.     increments on GpiCharStringPos and GpiCharStringPosAt, are also 
  1867.     underlined/overstruck, so that in these cases the line is continuous for 
  1868.     the string. 
  1869.  
  1870.     FATTR_SEL_ITALIC                   Generate italic font. 
  1871.  
  1872.     FATTR_SEL_UNDERSCORE               Generate underscored font. 
  1873.  
  1874.     FATTR_SEL_BOLD                     Generate bold font. (Note that the 
  1875.                                        resulting characters are wider than 
  1876.                                        those in the original font.) 
  1877.  
  1878.     FATTR_SEL_STRIKEOUT                Generate font with overstruck 
  1879.                                        characters. 
  1880.  
  1881.     FATTR_SEL_OUTLINE                  Use an outline font with hollow 
  1882.                                        characters. If this flag is not set, 
  1883.                                        outline font characters are filled. 
  1884.                                        Setting this flag normally gives better 
  1885.                                        performance, and for sufficiently small 
  1886.                                        characters (depending on device 
  1887.                                        resolution) there may be little visual 
  1888.                                        difference. 
  1889.  
  1890.  
  1891. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - lMatch ΓòÉΓòÉΓòÉ
  1892.  
  1893.  lMatch (LONG) 
  1894.     Matched-font identity. 
  1895.  
  1896.  
  1897. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - szFacename[FACESIZE] ΓòÉΓòÉΓòÉ
  1898.  
  1899.  szFacename[FACESIZE] (CHAR) 
  1900.     Typeface name. 
  1901.  
  1902.     The typeface name of the font, for example, Tms Rmn. 
  1903.  
  1904.  
  1905. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - idRegistry ΓòÉΓòÉΓòÉ
  1906.  
  1907.  idRegistry (USHORT) 
  1908.     Registry identifier. 
  1909.  
  1910.     Font registry identifier (zero if unknown). 
  1911.  
  1912.  
  1913. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - usCodePage ΓòÉΓòÉΓòÉ
  1914.  
  1915.  usCodePage (USHORT) 
  1916.     Code page. 
  1917.  
  1918.     If zero, the current Gpi code page (see GpiSetCp in Graphics Programming 
  1919.     Interface Programming Reference) is used. A subsequent GpiSetCp function 
  1920.     changes the code page used for this logical font. 
  1921.  
  1922.  
  1923. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - lMaxBaselineExt ΓòÉΓòÉΓòÉ
  1924.  
  1925.  lMaxBaselineExt (LONG) 
  1926.     Maximum baseline extension. 
  1927.  
  1928.     For raster fonts, this should be the height of the required font, in world 
  1929.     coordinates. 
  1930.  
  1931.     For outline fonts, this should be zero. 
  1932.  
  1933.  
  1934. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - lAveCharWidth ΓòÉΓòÉΓòÉ
  1935.  
  1936.  lAveCharWidth (LONG) 
  1937.     Average character width. 
  1938.  
  1939.     For raster fonts, this should be the width of the required font, in world 
  1940.     coordinates. 
  1941.  
  1942.     For outline fonts, this should be zero. 
  1943.  
  1944.  
  1945. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - fsType ΓòÉΓòÉΓòÉ
  1946.  
  1947.  fsType (USHORT) 
  1948.     Type indicators. 
  1949.  
  1950.     FATTR_TYPE_KERNING                 Enable kerning (PostScript only). 
  1951.  
  1952.     FATTR_TYPE_MBCS                    Font for mixed single- and double-byte 
  1953.                                        code pages. 
  1954.  
  1955.     FATTR_TYPE_DBCS                    Font for double-byte code pages. 
  1956.  
  1957.     FATTR_TYPE_ANTIALIASED             Antialiased font required. Only valid if 
  1958.                                        supported by the device driver. 
  1959.  
  1960.  
  1961. ΓòÉΓòÉΓòÉ <hidden> FATTRS Field - fsFontUse ΓòÉΓòÉΓòÉ
  1962.  
  1963.  fsFontUse (USHORT) 
  1964.     Font-use indicators. 
  1965.  
  1966.     These flags indicate how the font is to be used. They affect presentation 
  1967.     speed and font quality. 
  1968.  
  1969.     FATTR_FONTUSE_NOMIX 
  1970.                                   Text is not mixed with graphics and can be 
  1971.                                   written without regard to any interaction 
  1972.                                   with graphics objects. 
  1973.  
  1974.     FATTR_FONTUSE_OUTLINE 
  1975.                                   Select an outline (vector) font. The font 
  1976.                                   characters can be used as part of a path 
  1977.                                   definition. If this flag is not set, an 
  1978.                                   outline font might or might not be selected. 
  1979.                                   If an outline font is selected, however, 
  1980.                                   character widths are rounded to an integral 
  1981.                                   number of pels. 
  1982.  
  1983.     FATTR_FONTUSE_TRANSFORMABLE 
  1984.                                   Characters can be transformed (for example, 
  1985.                                   scaled, rotated, or sheared). 
  1986.  
  1987.  
  1988. ΓòÉΓòÉΓòÉ 1.20. FIXED ΓòÉΓòÉΓòÉ
  1989.  
  1990. Signed-integer fraction (16:16). This can be treated as a LONG where the value 
  1991. has been multiplied by 65 536. 
  1992.  
  1993. Type
  1994.   FIXED  = LONG;
  1995.  
  1996.  
  1997. ΓòÉΓòÉΓòÉ 1.21. FFDESCS ΓòÉΓòÉΓòÉ
  1998.  
  1999. Font-file descriptor. 
  2000.  
  2001. Not defined.
  2002.  
  2003.  
  2004. ΓòÉΓòÉΓòÉ 1.22. FFDESCS2 ΓòÉΓòÉΓòÉ
  2005.  
  2006. Font-file descriptor. 
  2007.  
  2008. Type
  2009.   FFDESCS2 = Record
  2010.     cbLength:         ULong;
  2011.     cbFacenameOffset: ULong;
  2012.     abFamilyName: array[0..0] of Byte;
  2013.   End;
  2014.  
  2015. Type ^FFDESCS2 - Not defined.
  2016.  
  2017.  
  2018. ΓòÉΓòÉΓòÉ <hidden> FFDESCS2 Field - cbLength ΓòÉΓòÉΓòÉ
  2019.  
  2020.  cbLength (ULONG) 
  2021.     Structure length. 
  2022.  
  2023.     cbLength is the overall length of the FFDESCS2 structure. It is always 
  2024.     rounded up to a multiple of four. 
  2025.  
  2026.  
  2027. ΓòÉΓòÉΓòÉ <hidden> FFDESCS2 Field - cbFacenameOffset ΓòÉΓòÉΓòÉ
  2028.  
  2029.  cbFacenameOffset (ULONG) 
  2030.     Offset of Facename in the structure. 
  2031.  
  2032.     The facename is a null terminated string. It starts at cbFacenameOffset 
  2033.     bytes offset into FFDESCS2. 
  2034.  
  2035.  
  2036. ΓòÉΓòÉΓòÉ <hidden> FFDESCS2 Field - abFamilyName[1] ΓòÉΓòÉΓòÉ
  2037.  
  2038.  abFamilyName[1] (BYTE) 
  2039.     Family name. 
  2040.  
  2041.     abFamilyName is a null terminated string. 
  2042.  
  2043.  
  2044. ΓòÉΓòÉΓòÉ 1.23. FOCAMETRICS ΓòÉΓòÉΓòÉ
  2045.  
  2046. FOCAMETRICS data structure. 
  2047.  
  2048. This structure is returned to applications on the GPIQueryFonts and 
  2049. GPIQueryFontMetrics calls and conveys information from the font creator to the 
  2050. application. 
  2051.  
  2052. FOCAMETRICS    - Not defined.
  2053.  
  2054. ^PFOCAMETRICS   - Not defined.
  2055.  
  2056.  
  2057. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ulIdentity ΓòÉΓòÉΓòÉ
  2058.  
  2059.  ulIdentity (ULONG) 
  2060.     Structure identity code. 
  2061.  
  2062.     Value must be one (1). This field is not part of the FONTMETRICS structure. 
  2063.  
  2064.  
  2065. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ulSize ΓòÉΓòÉΓòÉ
  2066.  
  2067.  ulSize (ULONG) 
  2068.     Structure size in bytes. 
  2069.  
  2070.     This must be set to the size of the FOCAMETRICS structure. This field is 
  2071.     not part of the FONTMETRICS structure. 
  2072.  
  2073.  
  2074. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - szFamilyname[32] ΓòÉΓòÉΓòÉ
  2075.  
  2076.  szFamilyname[32] (CHAR) 
  2077.     Font family name. 
  2078.  
  2079.     The family name defines the basic appearance of the font; for example, 
  2080.     "Times New Roman."** This string is null terminated and is, therefore, 
  2081.     limited to 32 characters in length. 
  2082.  
  2083.  
  2084. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - szFacename[32] ΓòÉΓòÉΓòÉ
  2085.  
  2086.  szFacename[32] (CHAR) 
  2087.     Face name. The typeface name defines the particular font; for example, 
  2088.     "Times New Roman Bold Italic."** This string is null terminated and is, 
  2089.     therefore, limited to 32 characters in length. 
  2090.  
  2091.  
  2092. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usRegistryId ΓòÉΓòÉΓòÉ
  2093.  
  2094.  usRegistryId (SHORT) 
  2095.     Registry identifier. 
  2096.  
  2097.     The IBM registered number (or zero). 
  2098.  
  2099.  
  2100. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usCodePage ΓòÉΓòÉΓòÉ
  2101.  
  2102.  usCodePage (USHORT) 
  2103.     Code page supported by the font. 
  2104.  
  2105.     Defines the registered code page supported by the font. A value of zero (0) 
  2106.     implies that the font may be used with any of the code pages supported by 
  2107.     OS/2. 
  2108.  
  2109.     When a font contains special symbols for which there is no registered code 
  2110.     page, then code page 65400 is used. 
  2111.  
  2112.  
  2113. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yEmHeight ΓòÉΓòÉΓòÉ
  2114.  
  2115.  yEmHeight (SHORT) 
  2116.     Em height. 
  2117.  
  2118.     The height of the Em square in world coordinate units. This height 
  2119.     corresponds to the point size for the font. 
  2120.  
  2121.  
  2122. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yXHeight ΓòÉΓòÉΓòÉ
  2123.  
  2124.  yXHeight (SHORT) 
  2125.     X height. 
  2126.  
  2127.     The nominal height above the baseline for lowercase characters (ignoring 
  2128.     ascenders), in world coordinate units. 
  2129.  
  2130.  
  2131. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yMaxAscender ΓòÉΓòÉΓòÉ
  2132.  
  2133.  yMaxAscender (SHORT) 
  2134.     Maximum ascender. 
  2135.  
  2136.     The maximum height above the baseline reached by any part of any symbol in 
  2137.     the font, in world coordinate units. This field may exceed yEmHeight. 
  2138.  
  2139.  
  2140. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yMaxDescender ΓòÉΓòÉΓòÉ
  2141.  
  2142.  yMaxDescender (SHORT) 
  2143.     Maximum descender. 
  2144.  
  2145.     The maximum depth below the baseline reached by any part of any symbol in 
  2146.     the font, in world coordinate units. This field may exceed yEmHeight. 
  2147.  
  2148.  
  2149. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yLowerCaseAscent ΓòÉΓòÉΓòÉ
  2150.  
  2151.  yLowerCaseAscent (SHORT) 
  2152.     Lowercase ascent. 
  2153.  
  2154.     The maximum height above the baseline reached by any part of any lowercase 
  2155.     (Latin unaccented ' a ' through ' z ') symbol in the font, in world 
  2156.     coordinate units. 
  2157.  
  2158.  
  2159. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yLowerCaseDescent ΓòÉΓòÉΓòÉ
  2160.  
  2161.  yLowerCaseDescent (SHORT) 
  2162.     Lowercase descent. 
  2163.  
  2164.     The maximum depth below the baseline reached by any part of any lowercase 
  2165.     (Latin unaccented ' a ' through ' z ') symbol in the font, in world 
  2166.     coordinate units. 
  2167.  
  2168.  
  2169. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yInternalLeading ΓòÉΓòÉΓòÉ
  2170.  
  2171.  yInternalLeading (SHORT) 
  2172.     Internal leading. 
  2173.  
  2174.     The amount of space which, when subtracted from yMaxAscender, gives a 
  2175.     measure of the distance above the baseline that characters extend. This 
  2176.     measure is font-design dependent, but glyph-set independent. Therefore, 
  2177.     this calculation approximates the visual top to a row of characters without 
  2178.     actually looking at the characters in the row. 
  2179.  
  2180.     It is recommended that applications use this field to position the first 
  2181.     line of a block of text by subtracting yInternalLeading from yMaxAscender. 
  2182.     Then position the baseline that distance below the preceding information 
  2183.     (text or graphic element). 
  2184.  
  2185.     Note:  This use does not guarantee that characters will not overwrite those 
  2186.            above them; it does give a font designer's view of where to place 
  2187.            the text. Collision should be tested for and additional space 
  2188.            allocated if necessary. 
  2189.  
  2190.  
  2191. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yExternalLeading ΓòÉΓòÉΓòÉ
  2192.  
  2193.  yExternalLeading (SHORT) 
  2194.     External leading. 
  2195.  
  2196.     The amount of guaranteed white space advised by the font designer to appear 
  2197.     between adjacent rows of text. This value may be zero (0). 
  2198.  
  2199.     Note:  The fonts built into Presentation Manager have zero (0) in this 
  2200.            field. 
  2201.  
  2202.  
  2203. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - xAveCharWidth ΓòÉΓòÉΓòÉ
  2204.  
  2205.  xAveCharWidth (SHORT) 
  2206.     Average character width. 
  2207.  
  2208.     This is determined by multiplying the width of each lowercase character  by 
  2209.     a constant, adding the products, and then dividing by 1000. The letters, 
  2210.     plus their constants, are listed below: 
  2211.  
  2212.          Letter  Constant 
  2213.     a            64 
  2214.     b            14 
  2215.     c            27 
  2216.     d            35 
  2217.     e            100 
  2218.     f            20 
  2219.     g            14 
  2220.     h            42 
  2221.     i            63 
  2222.     j            3 
  2223.     k            6 
  2224.     l            35 
  2225.     m            20 
  2226.     n            56 
  2227.     o            56 
  2228.     p            17 
  2229.     q            4 
  2230.     r            49 
  2231.     s            56 
  2232.     t            71 
  2233.     u            31 
  2234.     v            10 
  2235.     w            18 
  2236.     x            3 
  2237.     y            18 
  2238.     z            2 
  2239.     space        166 
  2240.  
  2241.                  Note:  For fixed pitch fonts, this value will be the same as 
  2242.                         the (A width + B width + C width) escapement of each 
  2243.                         character. 
  2244.  
  2245.  
  2246. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - xMaxCharInc ΓòÉΓòÉΓòÉ
  2247.  
  2248.  xMaxCharInc (SHORT) 
  2249.     Maximum character increment. 
  2250.  
  2251.     The maximum character increment for the font, in world coordinate units. 
  2252.  
  2253.  
  2254. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - xEmInc ΓòÉΓòÉΓòÉ
  2255.  
  2256.  xEmInc (SHORT) 
  2257.     Em increment. 
  2258.  
  2259.     The width of the Em square in world coordinate units. This width 
  2260.     corresponds to the point size of the font. When the horizontal device 
  2261.     resolution equals the vertical device resolution, width is equal to the em 
  2262.     height. 
  2263.  
  2264.  
  2265. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yMaxBaselineExt ΓòÉΓòÉΓòÉ
  2266.  
  2267.  yMaxBaselineExt (SHORT) 
  2268.     Maximum baseline extent. 
  2269.  
  2270.     The maximum vertical space occupied by the font, in world coordinate units. 
  2271.     This space is the sum of yMaxAscender and yMaxDescender if both are 
  2272.     positive. It is also the sum of yInternalLeading and yEmHeight. 
  2273.  
  2274.     One possible line spacing can be computed by adding yMaxBaselineExt to 
  2275.     yInternalLeading. Such a line spacing, however, would be dependent on the 
  2276.     glyph set included in the font. If a new version of the font is made 
  2277.     available with new glyphs, then it is possible that this value will change 
  2278.     because one of the new glyphs has gone above the previous yMaxAscender or 
  2279.     below the previous yMaxDescender. More sophisticated applications will base 
  2280.     their line spacing on the point size (yEmHeight) of the font, which is an 
  2281.     invariant of the font, multiplied by some factor (for example, 120%), plus 
  2282.     any external leading. 
  2283.  
  2284.     yMaxBaselineExt may exceed yEmHeight. 
  2285.  
  2286.  
  2287. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - sCharSlope ΓòÉΓòÉΓòÉ
  2288.  
  2289.  sCharSlope (SHORT) 
  2290.     Character slope. 
  2291.  
  2292.     Defines the nominal slope of the characters of a font. The slope is defined 
  2293.     in degrees, increasing clockwise from the vertical. An italic font is an 
  2294.     example of a font with a nonzero slope. 
  2295.  
  2296.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  2297.            in the following example. 
  2298.  
  2299.  
  2300.                       180 degrees 59 minutes would be represented as:
  2301.  
  2302.                       Γöé   < byte 1  > Γöé   < byte 2   >  Γöé
  2303.  
  2304.                       Γöé Γöé < Minutes > Γöé   < Degrees >   Γöé
  2305.  
  2306.                       Γöé0Γöé1 1 1 0 1 1  Γöé0 1 0 1 1 0 1 0 0Γöé
  2307.  
  2308.                         Γöé  59 min     Γöé   180 degrees   Γöé
  2309.  
  2310.  
  2311. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - sInlineDir ΓòÉΓòÉΓòÉ
  2312.  
  2313.  sInlineDir (SHORT) 
  2314.     Inline direction. 
  2315.  
  2316.     The direction in which the characters in the font are designed for viewing. 
  2317.     Shown in degrees, increasing clockwise from the horizontal (left-to-right). 
  2318.     Characters are added to a line of text in the inline direction. 
  2319.  
  2320.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  2321.            in sCharSlope. 
  2322.  
  2323.  
  2324. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - sCharRot ΓòÉΓòÉΓòÉ
  2325.  
  2326.  sCharRot (SHORT) 
  2327.     Character rotation. 
  2328.  
  2329.     The rotation of the character glyphs with respect to the baseline, the 
  2330.     angle increasing counterclockwise. This is the angle assigned by the font 
  2331.     designer. 
  2332.  
  2333.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  2334.            in sCharSlope. 
  2335.  
  2336.  
  2337. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usWeightClass ΓòÉΓòÉΓòÉ
  2338.  
  2339.  usWeightClass (USHORT) 
  2340.     Weight class. 
  2341.  
  2342.     Indicates the visual weight (thickness of strokes) of the characters in the 
  2343.     font: 
  2344.  
  2345.          Value   Description 
  2346.     1000         Ultra-light 
  2347.     2000         Extra-light 
  2348.     3000         Light 
  2349.     4000         Semi-light 
  2350.     5000         Medium (normal) 
  2351.     6000         Semi-bold 
  2352.     7000         Bold 
  2353.     8000         Extra-bold 
  2354.     9000         Ultra-bold 
  2355.  
  2356.  
  2357. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usWidthClass ΓòÉΓòÉΓòÉ
  2358.  
  2359.  usWidthClass (USHORT) 
  2360.     Width class. 
  2361.  
  2362.     Indicates the relative aspect ratio of the font characters in relation to 
  2363.     the normal aspect ratio for this type of font: 
  2364.  
  2365.         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2366.         ΓöéValue          ΓöéDescription                   Γöé% of Normal    Γöé
  2367.         Γöé               Γöé                              ΓöéWidth          Γöé
  2368.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2369.         Γöé1000           ΓöéUltra-condensed               Γöé50             Γöé
  2370.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2371.         Γöé2000           ΓöéExtra-condensed               Γöé62.5           Γöé
  2372.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2373.         Γöé3000           ΓöéCondensed                     Γöé75             Γöé
  2374.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2375.         Γöé4000           ΓöéSemi-condensed                Γöé87.5           Γöé
  2376.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2377.         Γöé5000           ΓöéMedium (normal)               Γöé100            Γöé
  2378.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2379.         Γöé6000           ΓöéSemi-expanded                 Γöé112.5          Γöé
  2380.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2381.         Γöé7000           ΓöéExpanded                      Γöé125            Γöé
  2382.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2383.         Γöé8000           ΓöéExtra-expanded                Γöé150            Γöé
  2384.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2385.         Γöé9000           ΓöéUltra-expanded                Γöé200            Γöé
  2386.         ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2387.  
  2388.  
  2389. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - xDeviceRes ΓòÉΓòÉΓòÉ
  2390.  
  2391.  xDeviceRes (SHORT) 
  2392.     X-device resolution. 
  2393.  
  2394.     For bit-map fonts, this is the resolution in the X direction of the 
  2395.     intended target device, measured in pels per inch. 
  2396.  
  2397.     For outline fonts, this is the number of notional units in the X direction 
  2398.     of the Em square, measured in notional units per Em. (Notional units are 
  2399.     the units in which the outline is defined.) 
  2400.  
  2401.  
  2402. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yDeviceRes ΓòÉΓòÉΓòÉ
  2403.  
  2404.  yDeviceRes (SHORT) 
  2405.     Y-device resolution. 
  2406.  
  2407.     For bit-map fonts, this is the resolution in the Y direction of the 
  2408.     intended target device, measured in pels per inch. 
  2409.  
  2410.     For outline fonts, this is the number of notional units in the Y direction 
  2411.     of the Em square, measured in notional units per Em. (Notional units are 
  2412.     the units in which the outline is defined.) 
  2413.  
  2414.  
  2415. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usFirstChar ΓòÉΓòÉΓòÉ
  2416.  
  2417.  usFirstChar (SHORT) 
  2418.     First character. 
  2419.  
  2420.     The code point of the first character in the font. 
  2421.  
  2422.  
  2423. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usLastChar ΓòÉΓòÉΓòÉ
  2424.  
  2425.  usLastChar (SHORT) 
  2426.     Last character. 
  2427.  
  2428.     The code point of the last character in the font, expressed as an offset 
  2429.     from usFirstChar. 
  2430.  
  2431.     All code points between the first and last character specified must be 
  2432.     supported by the font. 
  2433.  
  2434.  
  2435. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usDefaultChar ΓòÉΓòÉΓòÉ
  2436.  
  2437.  usDefaultChar (SHORT) 
  2438.     Default character. 
  2439.  
  2440.     The code point that is used if a code point outside the range supported by 
  2441.     the font is used, expressed as an offset from usFirstChar. 
  2442.  
  2443.  
  2444. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usBreakChar ΓòÉΓòÉΓòÉ
  2445.  
  2446.  usBreakChar (SHORT) 
  2447.     Break character. 
  2448.  
  2449.     The code point that represents the "space" or "break" character for this 
  2450.     font, expressed as an offset from usFirstChar. For example, if the first 
  2451.     character is the space in code page 850, usFirstChar = 32, and usBreakChar 
  2452.     = 0. 
  2453.  
  2454.  
  2455. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usNominalPointSize ΓòÉΓòÉΓòÉ
  2456.  
  2457.  usNominalPointSize (SHORT) 
  2458.     Nominal point size. 
  2459.  
  2460.     For a bit-map font, this field contains the height of the font. 
  2461.  
  2462.     For an outline font, this field contains the height that the font designer 
  2463.     intended for this font. For example, some fonts are designed for text use, 
  2464.     in which case a value of 120 (12 point) would probably be placed in this 
  2465.     field. Other fonts are designed for "display" use ("display" is a 
  2466.     typographer's term for larger point sizes). This is not the only size at 
  2467.     which the font can be used. 
  2468.  
  2469.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  2470.  
  2471.  
  2472. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usMinimumPointSize ΓòÉΓòÉΓòÉ
  2473.  
  2474.  usMinimumPointSize (SHORT) 
  2475.     Minimum point size. 
  2476.  
  2477.     For a bit-map font, this field is not applicable. 
  2478.  
  2479.     For an outline font, this field contains the minimum height that the font 
  2480.     designer intended for this font. Note that this is not a restriction on the 
  2481.     size at which the font can be used. 
  2482.  
  2483.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  2484.  
  2485.  
  2486. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usMaximumPointSize ΓòÉΓòÉΓòÉ
  2487.  
  2488.  usMaximumPointSize (SHORT) 
  2489.     Maximum point size. 
  2490.  
  2491.     For a bit-map font, this field is not applicable. 
  2492.  
  2493.     For an outline font, this field contains the maximum height that the font 
  2494.     designer intended for this font. Note that this is not a restriction on the 
  2495.     size at which the font can be used. 
  2496.  
  2497.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  2498.  
  2499.  
  2500. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usTypeFlags ΓòÉΓòÉΓòÉ
  2501.  
  2502.  usTypeFlags (SHORT) 
  2503.     Type indicators. 
  2504.  
  2505.     These flags contain the following information: 
  2506.  
  2507.     FM_TYPE_FIXED                 Characters in the font have the same fixed 
  2508.                                   width. 
  2509.     FM_TYPE_LICENSED              Licensed (protected) font. 
  2510.     FM_TYPE_KERNING               Font contains kerning information. 
  2511.     FM_TYPE_64K                   Font is larger than 64KB (KB equals 1024 
  2512.                                   bytes) in size. Only one of the following 
  2513.                                   bits (FM_TYPE_DBCS or FM_TYPE_MCBS) may be 
  2514.                                   set. If both of those bits are false (not 
  2515.                                   set), the font is for single-byte code pages. 
  2516.     FM_TYPE_DBCS                  Font is for double-byte code pages. 
  2517.     FM_TYPE_MBCS                  Font is for mixed single- and double-byte 
  2518.                                   code pages. 
  2519.     FM_TYPE_FACETRUNC             Font szFacename[32] has been truncated. 
  2520.     FM_TYPE_FAMTRUNC              Font szFamilyname[32] has been truncated. 
  2521.  
  2522.  
  2523. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - fsDefn ΓòÉΓòÉΓòÉ
  2524.  
  2525.  fsDefn (SHORT) 
  2526.     Definition indicators. 
  2527.  
  2528.     These indicators contain the following font definition data: 
  2529.  
  2530.     FM_DEFN_OUTLINE               Font is a vector (outline) font; otherwise, 
  2531.                                   it is a bit map font. 
  2532.     FM_DEFN_GENERIC               Font is in a format that can be used by the 
  2533.                                   GPI; otherwise, it is a device font. 
  2534.  
  2535.  
  2536. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - fsSelectionFlags ΓòÉΓòÉΓòÉ
  2537.  
  2538.  fsSelectionFlags (SHORT) 
  2539.     Selection indicators. 
  2540.  
  2541.     These indicators contain information about the font patterns in the 
  2542.     physical font. 
  2543.  
  2544.     Note:  The flags do not reflect simulations applied to the physical font. 
  2545.  
  2546.     FM_SEL_ITALIC                 TRUE indicates that this font is designed as 
  2547.                                   an italic font. 
  2548.     FM_SEL_UNDERSCORE             TRUE indicates that this font is designed 
  2549.                                   with underscores included in each character. 
  2550.     FM_SEL_NEGATIVE               TRUE indicates that this font is designed 
  2551.                                   with the background and foreground reversed. 
  2552.     FM_SEL_OUTLINE                TRUE indicates that this font is designed 
  2553.                                   with outline (hollow) characters. 
  2554.     FM_SEL_STRIKEOUT              TRUE indicates that this font is designed 
  2555.                                   with an overstrike through each character. 
  2556.     FM_SEL_BOLD                   TRUE indicates that this font is designed 
  2557.                                   with bold characters. 
  2558.  
  2559.  
  2560. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - fsCapabilities ΓòÉΓòÉΓòÉ
  2561.  
  2562.  fsCapabilities (SHORT) 
  2563.     Capabilities. 
  2564.  
  2565.     This attribute applies only to device fonts. 
  2566.  
  2567.     FM_CAP_NOMIX           Characters may not be mixed with graphics. 
  2568.     QUALITY                The most significant byte may contain the following 
  2569.                            numeric value: 
  2570.                            0        Undefined 
  2571.  
  2572.                            1        DP quality 
  2573.  
  2574.                            2        DP draft 
  2575.  
  2576.                            3        Near Letter Quality 
  2577.  
  2578.                            4        Letter Quality 
  2579.  
  2580.  
  2581. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySubscriptXSize ΓòÉΓòÉΓòÉ
  2582.  
  2583.  ySubscriptXSize (SHORT) 
  2584.     Subscript X-size. 
  2585.  
  2586.     The recommended horizontal point size for subscripts for this font, in 
  2587.     world coordinate units. 
  2588.  
  2589.  
  2590. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySubscriptYSize ΓòÉΓòÉΓòÉ
  2591.  
  2592.  ySubscriptYSize (SHORT) 
  2593.     Subscript Y-size. 
  2594.  
  2595.     The recommended vertical point size for subscripts for this font, in world 
  2596.     coordinate units. 
  2597.  
  2598.  
  2599. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySubscriptXOffset ΓòÉΓòÉΓòÉ
  2600.  
  2601.  ySubscriptXOffset (SHORT) 
  2602.     Subscript X-offset. 
  2603.  
  2604.     The recommended baseline X-offset for subscripts for this font, in world 
  2605.     coordinate units. 
  2606.  
  2607.  
  2608. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySubscriptYOffset ΓòÉΓòÉΓòÉ
  2609.  
  2610.  ySubscriptYOffset (SHORT) 
  2611.     Subscript Y-offset. 
  2612.  
  2613.     The recommended baseline Y-offset for subscripts for this font, in world 
  2614.     coordinate units. 
  2615.  
  2616.  
  2617. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySuperscriptXSize ΓòÉΓòÉΓòÉ
  2618.  
  2619.  ySuperscriptXSize (SHORT) 
  2620.     Superscript X-size. 
  2621.  
  2622.     The recommended horizontal point size for superscripts for this font, in 
  2623.     world coordinate units. 
  2624.  
  2625.  
  2626. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySuperscriptYSize ΓòÉΓòÉΓòÉ
  2627.  
  2628.  ySuperscriptYSize (SHORT) 
  2629.     Superscript Y-size. 
  2630.  
  2631.     The recommended vertical point size for superscripts for this font, in 
  2632.     world coordinate units. 
  2633.  
  2634.  
  2635. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySuperscriptXOffset ΓòÉΓòÉΓòÉ
  2636.  
  2637.  ySuperscriptXOffset (SHORT) 
  2638.     Superscript X-offset. 
  2639.  
  2640.     The recommended baseline X-offset for superscripts for this font, in world 
  2641.     coordinate units. 
  2642.  
  2643.  
  2644. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - ySuperscriptYOffset ΓòÉΓòÉΓòÉ
  2645.  
  2646.  ySuperscriptYOffset (SHORT) 
  2647.     Superscript Y-offset. 
  2648.  
  2649.     The recommended baseline Y-offset for superscripts for this font, in world 
  2650.     coordinate units. 
  2651.  
  2652.  
  2653. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yUnderscoreSize ΓòÉΓòÉΓòÉ
  2654.  
  2655.  yUnderscoreSize (SHORT) 
  2656.     Underscore size. 
  2657.  
  2658.     The width (thickness) of the underscore stroke, in world coordinate units. 
  2659.     This describes the actual underscore in the font if FM_SEL_UNDERSCORE is 
  2660.     also set. Otherwise, it describes what the graphics engine will simulate if 
  2661.     underscore is requested in GpiCreateLogFont. 
  2662.  
  2663.  
  2664. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yUnderscorePosition ΓòÉΓòÉΓòÉ
  2665.  
  2666.  yUnderscorePosition (SHORT) 
  2667.     Underscore position. 
  2668.  
  2669.     The position of the underscore stroke from the baseline, in world 
  2670.     coordinate units. This value describes the actual underscore in the font if 
  2671.     FM_SEL_UNDERSCORE is also set. Otherwise, it describes what the graphics 
  2672.     engine will simulate if underscore is requested in GpiCreateLogFont. 
  2673.  
  2674.     Note:  Positive values mean below the baseline. 
  2675.  
  2676.  
  2677. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yStrikeoutSize ΓòÉΓòÉΓòÉ
  2678.  
  2679.  yStrikeoutSize (SHORT) 
  2680.     Strikeout size. 
  2681.  
  2682.     The width of the strikeout stroke, in world coordinate units. This value 
  2683.     describes the actual strikeout in the font if FM_SEL_STRIKEOUT is also set. 
  2684.     Otherwise, it describes what the graphics engine will simulate if 
  2685.     overstrike is requested in GpiCreateLogFont. 
  2686.  
  2687.  
  2688. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - yStrikeoutPosition ΓòÉΓòÉΓòÉ
  2689.  
  2690.  yStrikeoutPosition (SHORT) 
  2691.     Strikeout position. 
  2692.  
  2693.     The position of the strikeout stroke relative to the baseline, in world 
  2694.     coordinate units. This value describes the actual strikeout in the font if 
  2695.     FM_SEL_STRIKEOUT is also set. Otherwise, it describes what the graphics 
  2696.     engine will simulate if overstrike is requested in GpiCreateLogFont. 
  2697.  
  2698.  
  2699. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - usKerningPairs ΓòÉΓòÉΓòÉ
  2700.  
  2701.  usKerningPairs (SHORT) 
  2702.     Kerning pairs. 
  2703.  
  2704.     The number of kerning pairs in the kerning pair table. 
  2705.  
  2706.  
  2707. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - sFamilyClass ΓòÉΓòÉΓòÉ
  2708.  
  2709.  sFamilyClass (SHORT) 
  2710.     Font family design classification. 
  2711.  
  2712.     This value contains a font class and its subclass. 
  2713.  
  2714.  
  2715. ΓòÉΓòÉΓòÉ <hidden> FOCAMETRICS Field - pszDeviceNameOffset ΓòÉΓòÉΓòÉ
  2716.  
  2717.  pszDeviceNameOffset (PSZ) 
  2718.     Address where device name is stored. 
  2719.  
  2720.  
  2721. ΓòÉΓòÉΓòÉ 1.24. FONTMETRICS ΓòÉΓòÉΓòÉ
  2722.  
  2723. Font-metrics structure. 
  2724.  
  2725. This structure is returned to applications on the GpiQueryFonts and 
  2726. GpiQueryFontMetrics calls and conveys information from the font creator to the 
  2727. application. 
  2728.  
  2729. Type
  2730.   FONTMETRICS = Record
  2731.     szFamilyname: array[0..FACESIZE-1] of Char;
  2732.     szFacename:   array[0..FACESIZE-1] of Char;
  2733.     idRegistry:             Word;
  2734.     usCodePage:             Word;
  2735.     lEmHeight:              Long;
  2736.     lXHeight:               Long;
  2737.     lMaxAscender:           Long;
  2738.     lMaxDescender:          Long;
  2739.     lLowerCaseAscent:       Long;
  2740.     lLowerCaseDescent:      Long;
  2741.     lInternalLeading:       Long;
  2742.     lExternalLeading:       Long;
  2743.     lAveCharWidth:          Long;
  2744.     lMaxCharInc:            Long;
  2745.     lEmInc:                 Long;
  2746.     lMaxBaselineExt:        Long;
  2747.     sCharSlope:             Integer;
  2748.     sInlineDir:             Integer;
  2749.     sCharRot:               Integer;
  2750.     usWeightClass:          Word;
  2751.     usWidthClass:           Word;
  2752.     sXDeviceRes:            Integer;
  2753.     sYDeviceRes:            Integer;
  2754.     sFirstChar:             Integer;
  2755.     sLastChar:              Integer;
  2756.     sDefaultChar:           Integer;
  2757.     sBreakChar:             Integer;
  2758.     sNominalPointSize:      Integer;
  2759.     sMinimumPointSize:      Integer;
  2760.     sMaximumPointSize:      Integer;
  2761.     fsType:                 Word;
  2762.     fsDefn:                 Word;
  2763.     fsSelection:            Word;
  2764.     fsCapabilities:         Word;
  2765.     lSubscriptXSize:        Long;
  2766.     lSubscriptYSize:        Long;
  2767.     lSubscriptXOffset:      Long;
  2768.     lSubscriptYOffset:      Long;
  2769.     lSuperscriptXSize:      Long;
  2770.     lSuperscriptYSize:      Long;
  2771.     lSuperscriptXOffset:    Long;
  2772.     lSuperscriptYOffset:    Long;
  2773.     lUnderscoreSize:        Long;
  2774.     lUnderscorePosition:    Long;
  2775.     lStrikeoutSize:         Long;
  2776.     lStrikeoutPosition:     Long;
  2777.     sKerningPairs:          Integer;
  2778.     sFamilyClass:           Integer;
  2779.     lMatch:                 Long;
  2780.     FamilyNameAtom:         Long;
  2781.     FaceNameAtom:           Long;
  2782.     FmPanose:               Panose;
  2783.   End;
  2784.  
  2785. Type
  2786.   PFONTMETRICS = ^FONTMETRICS;
  2787.  
  2788.  
  2789. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - szFamilyname[FACESIZE] ΓòÉΓòÉΓòÉ
  2790.  
  2791.  szFamilyname[FACESIZE] (CHAR) 
  2792.     Family name. 
  2793.  
  2794.     The family name of the font that describes the basic appearance of the 
  2795.     font, for example, Times New Roman** This string is null terminated, and 
  2796.     therefore is limited to 31 characters in length. Longer names may be 
  2797.     retrieved by using the FamilyNameAtom field to retrieve the full name from 
  2798.     the System Atom table. 
  2799.  
  2800.  
  2801. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - szFacename[FACESIZE] ΓòÉΓòÉΓòÉ
  2802.  
  2803.  szFacename[FACESIZE] (CHAR) 
  2804.     Face name. 
  2805.  
  2806.     The typeface name that defines the particular font, for example, Times New 
  2807.     Roman Bold Italic. This string is null terminated, and therefore is limited 
  2808.     to 31 characters in length. Longer names may be retrieved by using the 
  2809.     FaceNameAtom field to retrieve the full name from the System Atom table. 
  2810.  
  2811.  
  2812. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - idRegistry ΓòÉΓòÉΓòÉ
  2813.  
  2814.  idRegistry (USHORT) 
  2815.     Registry identifier. 
  2816.  
  2817.     The IBM registered number (or zero). 
  2818.  
  2819.  
  2820. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - usCodePage ΓòÉΓòÉΓòÉ
  2821.  
  2822.  usCodePage (USHORT) 
  2823.     Code page. 
  2824.  
  2825.     Defines the registered code page supported by the font. For example, the 
  2826.     original IBM PC code page is 437. A value of 0 implies that the font may be 
  2827.     used with any of the OS/2 supported code pages. 
  2828.  
  2829.     Where a font contains special symbols for which there is no registered code 
  2830.     page, then code page 65400 is used. 
  2831.  
  2832.  
  2833. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lEmHeight ΓòÉΓòÉΓòÉ
  2834.  
  2835.  lEmHeight (LONG) 
  2836.     Em height. 
  2837.  
  2838.     The height of the Em square in world coordinate units. This corresponds to 
  2839.     the point size for the font. 
  2840.  
  2841.  
  2842. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lXHeight ΓòÉΓòÉΓòÉ
  2843.  
  2844.  lXHeight (LONG) 
  2845.     X height. 
  2846.  
  2847.     The nominal height above the baseline for lowercase characters (ignoring 
  2848.     ascenders) in world coordinate units. 
  2849.  
  2850.  
  2851. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMaxAscender ΓòÉΓòÉΓòÉ
  2852.  
  2853.  lMaxAscender (LONG) 
  2854.     Maximum ascender. 
  2855.  
  2856.     The maximum height above the baseline reached by any part of any symbol in 
  2857.     the font in world coordinate units. This field may exceed lEmHeight. 
  2858.  
  2859.  
  2860. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMaxDescender ΓòÉΓòÉΓòÉ
  2861.  
  2862.  lMaxDescender (LONG) 
  2863.     Maximum descender. 
  2864.  
  2865.     The maximum depth below the baseline reached by any part of any symbol in 
  2866.     the font in world coordinate units. This field may exceed lEmHeight. 
  2867.  
  2868.  
  2869. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lLowerCaseAscent ΓòÉΓòÉΓòÉ
  2870.  
  2871.  lLowerCaseAscent (LONG) 
  2872.     Lowercase ascent. 
  2873.  
  2874.     The maximum height above the baseline reached by any part of any lowercase 
  2875.     (Latin unaccented "a" through "z") symbol in the font in world coordinate 
  2876.     units. 
  2877.  
  2878.  
  2879. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lLowerCaseDescent ΓòÉΓòÉΓòÉ
  2880.  
  2881.  lLowerCaseDescent (LONG) 
  2882.     Lowercase descent. 
  2883.  
  2884.     The maximum depth below the baseline reached by any part of any lowercase 
  2885.     (Latin unaccented "a" through "z") symbol in the font in world coordinate 
  2886.     units. 
  2887.  
  2888.  
  2889. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lInternalLeading ΓòÉΓòÉΓòÉ
  2890.  
  2891.  lInternalLeading (LONG) 
  2892.     Internal leading. 
  2893.  
  2894.     The amount of space which, when subtracted from lMaxAscender, gives a 
  2895.     font-design dependent, but glyph-set independent, measure of the distance 
  2896.     above the baseline that characters extend. This calculation approximates 
  2897.     the visual top to a row of characters without actually looking at the 
  2898.     characters in the row. 
  2899.  
  2900.     For optimum results, this field should be used by applications to position 
  2901.     the first line of a block of text by subtracting it from lMaxAscender and 
  2902.     positioning the baseline that distance below whatever is above the text. 
  2903.  
  2904.     Note:  This does not guarantee that characters will not overwrite 
  2905.            information above them, but does give a font designer's view of 
  2906.            where to place the text. Collision should be tested for, and 
  2907.            additional space allocated if necessary. 
  2908.  
  2909.  
  2910. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lExternalLeading ΓòÉΓòÉΓòÉ
  2911.  
  2912.  lExternalLeading (LONG) 
  2913.     External leading. 
  2914.  
  2915.     The amount of guaranteed white space advised by the font designer to appear 
  2916.     between adjacent rows of text. This value may be zero. 
  2917.  
  2918.     Note:  The fonts built in to Presentation Manager have zero in this field. 
  2919.  
  2920.  
  2921. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lAveCharWidth ΓòÉΓòÉΓòÉ
  2922.  
  2923.  lAveCharWidth (LONG) 
  2924.     Average character width. 
  2925.  
  2926.     This is determined by multiplying the width of each lowercase character by 
  2927.     a constant, adding the products, and then dividing by 1000. The letters 
  2928.     involved in this, plus their constants, are as follows: 
  2929.  
  2930.          Letter    Constant 
  2931.     a              64 
  2932.     b              14 
  2933.     c              27 
  2934.     d              35 
  2935.     e              100 
  2936.     f              20 
  2937.     g              14 
  2938.     h              42 
  2939.     i              63 
  2940.     j              3 
  2941.     k              6 
  2942.     l              35 
  2943.     m              20 
  2944.     n              56 
  2945.     o              56 
  2946.     p              17 
  2947.     q              4 
  2948.     r              49 
  2949.     s              56 
  2950.     t              71 
  2951.     u              31 
  2952.     v              10 
  2953.     w              18 
  2954.     x              3 
  2955.     y              18 
  2956.     z              2 
  2957.     space          166 
  2958.  
  2959.     Note:  For fixed pitch fonts, this value will be the same as the (A width + 
  2960.            B width + C width) escapement of each character. 
  2961.  
  2962.  
  2963. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMaxCharInc ΓòÉΓòÉΓòÉ
  2964.  
  2965.  lMaxCharInc (LONG) 
  2966.     Maximum character increment. 
  2967.  
  2968.     The maximum character increment for the font in world coordinate units. 
  2969.  
  2970.  
  2971. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lEmInc ΓòÉΓòÉΓòÉ
  2972.  
  2973.  lEmInc (LONG) 
  2974.     Em increment. 
  2975.  
  2976.     The width of the Em square in world coordinate units. This corresponds to 
  2977.     the point size of the font.  When the horizontal device resolution equals 
  2978.     the vertical device resolution this is equal to the em height. 
  2979.  
  2980.  
  2981. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMaxBaselineExt ΓòÉΓòÉΓòÉ
  2982.  
  2983.  lMaxBaselineExt (LONG) 
  2984.     Maximum baseline extent. 
  2985.  
  2986.     The maximum vertical space occupied by the font, in world coordinate units. 
  2987.     This is the sum of lMaxAscender and lMaxDescender if both are positive. It 
  2988.     is also the sum of lInternalLeading and lEmHeight. 
  2989.  
  2990.     One possible type of line spacing can be computed by adding lMaxBaselineExt 
  2991.     to lExternalLeading. Such a line spacing, however, would be dependent on 
  2992.     the glyph set included in the font. If a new version of the font should be 
  2993.     made available, with new glyphs, then it is possible that this value will 
  2994.     change because one of the new glyphs has gone above the previous 
  2995.     lMaxAscender or below the previous lMaxDescender. More sophisticated 
  2996.     applications will base line spacing on the point size (lEmHeight) of the 
  2997.     font, which is an invariant of the font, multiplied by some factor (for 
  2998.     example, 120%) plus any external leading. 
  2999.  
  3000.     This field may exceed lEmHeight. 
  3001.  
  3002.  
  3003. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sCharSlope ΓòÉΓòÉΓòÉ
  3004.  
  3005.  sCharSlope (SHORT) 
  3006.     Character slope. 
  3007.  
  3008.     Defines the nominal slope for the characters of a font. The slope is 
  3009.     defined in degrees increasing clockwise from the vertical. An italic font 
  3010.     is an example of a font with a nonzero slope. 
  3011.  
  3012.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  3013.            in the following example: 
  3014.  
  3015.  
  3016.                       180 degrees 59 minutes would be represented as :
  3017.  
  3018.                       Γöé   < byte 1  > Γöé   < byte 2   >  Γöé
  3019.  
  3020.                       Γöé Γöé < Minutes > Γöé   < Degrees >   Γöé
  3021.  
  3022.                       Γöé0Γöé1 1 1 0 1 1  Γöé0 1 0 1 1 0 1 0 0Γöé
  3023.  
  3024.                         Γöé  59 min     Γöé   180 degrees   Γöé
  3025.  
  3026.  
  3027. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sInlineDir ΓòÉΓòÉΓòÉ
  3028.  
  3029.  sInlineDir (SHORT) 
  3030.     Inline direction. 
  3031.  
  3032.     The direction in which the characters in the font are designed for viewing. 
  3033.     The direction is defined in degrees increasing clockwise from the 
  3034.     horizontal (left-to-right). Characters are added to a line of text in the 
  3035.     inline direction. 
  3036.  
  3037.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  3038.            in sCharSlope. 
  3039.  
  3040.  
  3041. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sCharRot ΓòÉΓòÉΓòÉ
  3042.  
  3043.  sCharRot (SHORT) 
  3044.     Character rotation. 
  3045.  
  3046.     The rotation of the character glyphs with respect to the baseline, the 
  3047.     angle increasing counter clockwise. This is the angle assigned by the font 
  3048.     designer. 
  3049.  
  3050.     Note:  The units for this metric are degrees and minutes, encoded as shown 
  3051.            in sCharSlope. 
  3052.  
  3053.  
  3054. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - usWeightClass ΓòÉΓòÉΓòÉ
  3055.  
  3056.  usWeightClass (USHORT) 
  3057.     Weight class. 
  3058.  
  3059.     Indicates the visual weight (thickness of strokes) of the characters in the 
  3060.     font: 
  3061.  
  3062.          Value   Description 
  3063.     1            Ultra-light 
  3064.     2            Extra-light 
  3065.     3            Light 
  3066.     4            Semi-light 
  3067.     5            Medium (normal) 
  3068.     6            Semi-bold 
  3069.     7            Bold 
  3070.     8            Extra-bold 
  3071.     9            Ultra-bold 
  3072.  
  3073.  
  3074. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - usWidthClass ΓòÉΓòÉΓòÉ
  3075.  
  3076.  usWidthClass (USHORT) 
  3077.     Width class. 
  3078.  
  3079.     Indicates the relative aspect ratio of the characters of the font in 
  3080.     relation to the normal aspect ratio for this type of font: 
  3081.  
  3082.         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3083.         ΓöéValueΓöéDescription    Γöé% of normal width   Γöé
  3084.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3085.         Γöé1    ΓöéUltra-condensedΓöé50                  Γöé
  3086.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3087.         Γöé2    ΓöéExtra-condensedΓöé62.5                Γöé
  3088.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3089.         Γöé3    ΓöéCondensed      Γöé75                  Γöé
  3090.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3091.         Γöé4    ΓöéSemi-condensed Γöé87.5                Γöé
  3092.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3093.         Γöé5    ΓöéMedium (normal)Γöé100                 Γöé
  3094.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3095.         Γöé6    ΓöéSemi-expanded  Γöé112.5               Γöé
  3096.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3097.         Γöé7    ΓöéExpanded       Γöé125                 Γöé
  3098.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3099.         Γöé8    ΓöéExtra-expanded Γöé150                 Γöé
  3100.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3101.         Γöé9    ΓöéUltra-expanded Γöé200                 Γöé
  3102.         ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3103.  
  3104.  
  3105. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sXDeviceRes ΓòÉΓòÉΓòÉ
  3106.  
  3107.  sXDeviceRes (SHORT) 
  3108.     X-device resolution. 
  3109.  
  3110.     For bit-map fonts this is the resolution in the X direction of the intended 
  3111.     target device, measured in pels per inch. 
  3112.  
  3113.     For outline fonts this is the number of notional units in the X direction 
  3114.     of the Em square, measured in notional units per Em. (Notional units are 
  3115.     the units in which the outline is defined.) 
  3116.  
  3117.  
  3118. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sYDeviceRes ΓòÉΓòÉΓòÉ
  3119.  
  3120.  sYDeviceRes (SHORT) 
  3121.     Y-device resolution. 
  3122.  
  3123.     For bit-map fonts this is the resolution in the Y direction of the intended 
  3124.     target device, measured in pels per inch. 
  3125.  
  3126.     For outline fonts this is the number of notional units in the Y direction 
  3127.     of the Em square, measured in notional units per Em. (Notional units are 
  3128.     the units in which the outline is defined.) 
  3129.  
  3130.  
  3131. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sFirstChar ΓòÉΓòÉΓòÉ
  3132.  
  3133.  sFirstChar (SHORT) 
  3134.     First character. 
  3135.  
  3136.     The code point of the first character in the font. 
  3137.  
  3138.  
  3139. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sLastChar ΓòÉΓòÉΓòÉ
  3140.  
  3141.  sLastChar (SHORT) 
  3142.     Last character. 
  3143.  
  3144.     The code point of the last character in the font, expressed as an offset 
  3145.     from sFirstChar. 
  3146.  
  3147.     All code points between the first and last character specified must be 
  3148.     supported by the font. 
  3149.  
  3150.  
  3151. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sDefaultChar ΓòÉΓòÉΓòÉ
  3152.  
  3153.  sDefaultChar (SHORT) 
  3154.     Default character. 
  3155.  
  3156.     The code point that is used if a code point outside the range supported by 
  3157.     the font is used, expressed as an offset from sFirstChar. 
  3158.  
  3159.  
  3160. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sBreakChar ΓòÉΓòÉΓòÉ
  3161.  
  3162.  sBreakChar (SHORT) 
  3163.     Break character. 
  3164.  
  3165.     The code point that represents the "space" or "break" character for this 
  3166.     font, expressed as an offset from sFirstChar. For example, if the first 
  3167.     character is the space in code page 850, sFirstChar = 32, and sBreakChar = 
  3168.     0. 
  3169.  
  3170.  
  3171. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sNominalPointSize ΓòÉΓòÉΓòÉ
  3172.  
  3173.  sNominalPointSize (SHORT) 
  3174.     Nominal point size. 
  3175.  
  3176.     For a bit-map font, this field contains the height of the font. 
  3177.  
  3178.     For an outline font, this field contains the height intended by the font 
  3179.     designer. For example, some fonts are designed for text use in which case a 
  3180.     value of 120 (12 point) would probably be placed in this field, whereas 
  3181.     other fonts are designed for "display" use ("display" is typographer's 
  3182.     terminology for larger sizes). This is not the only size at which the font 
  3183.     can be used. 
  3184.  
  3185.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  3186.  
  3187.  
  3188. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sMinimumPointSize ΓòÉΓòÉΓòÉ
  3189.  
  3190.  sMinimumPointSize (SHORT) 
  3191.     Minimum point size. 
  3192.  
  3193.     For a bit-map font, this field does not apply. For an outline font, this 
  3194.     field contains the minimum height intended by the font designer. Note that 
  3195.     this is not a restriction of the size at which the font can be used. 
  3196.  
  3197.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  3198.  
  3199.  
  3200. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sMaximumPointSize ΓòÉΓòÉΓòÉ
  3201.  
  3202.  sMaximumPointSize (SHORT) 
  3203.     Maximum point size. 
  3204.  
  3205.     For a bit-map font, this field does not apply. 
  3206.  
  3207.     For an outline font, this field contains the maximum height intended by the 
  3208.     font designer. Note that this is not a restriction of the size at which the 
  3209.     font can be used. 
  3210.  
  3211.     Measured in decipoints (a decipoint is 1/720th of an inch). 
  3212.  
  3213.  
  3214. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - fsType ΓòÉΓòÉΓòÉ
  3215.  
  3216.  fsType (USHORT) 
  3217.     Type indicators. 
  3218.  
  3219.     This field contains the following information: 
  3220.  
  3221.     FM_TYPE_FIXED                 Characters in the font have the same fixed 
  3222.                                   width. 
  3223.  
  3224.     FM_TYPE_LICENSED              Licensed (protected) font. 
  3225.  
  3226.     FM_TYPE_KERNING               Font contains kerning information. 
  3227.  
  3228.     FM_TYPE_64K                   Font is larger than 64KB (KB equals 1024 
  3229.                                   bytes) in size. If the following two bits are 
  3230.                                   false, the font is for single-byte code 
  3231.                                   pages. One of the bits may be set. 
  3232.  
  3233.     FM_TYPE_DBCS                  Font is for double-byte code pages. 
  3234.  
  3235.     FM_TYPE_MBCS                  Font is for mixed single- or double-byte code 
  3236.                                   pages. 
  3237.  
  3238.     FM_TYPE_FACETRUNC 
  3239.             Font szFacename has been truncated. 
  3240.     FM_TYPE_FAMTRUNC 
  3241.             Font szFamilyname has been truncated. 
  3242.     FM_TYPE_ATOMS 
  3243.             The System Atom table atom values in FamilyNameAtom and in 
  3244.             FaceNameAtom are valid. 
  3245.  
  3246.  
  3247. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - fsDefn ΓòÉΓòÉΓòÉ
  3248.  
  3249.  fsDefn (USHORT) 
  3250.     Definition indicators. 
  3251.  
  3252.     Contains the following font definition data: 
  3253.  
  3254.     FM_DEFN_OUTLINE               Font is a vector (outline) font; otherwise, 
  3255.                                   it is a bit-map font. 
  3256.  
  3257.     FM_DEFN_GENERIC               Font is in a format that can be used by the 
  3258.                                   GPI; otherwise, it is a device font. 
  3259.  
  3260.  
  3261. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - fsSelection ΓòÉΓòÉΓòÉ
  3262.  
  3263.  fsSelection (USHORT) 
  3264.     Selection indicators. 
  3265.  
  3266.     Contains information about the font patterns in the physical font. 
  3267.  
  3268.     Note:  The flags do not reflect simulations applied to the physical font. 
  3269.  
  3270.     Possible values are: 
  3271.  
  3272.     FM_SEL_ITALIC                 True indicates that this font is designed as 
  3273.                                   an italic font. 
  3274.  
  3275.     FM_SEL_UNDERSCORE             TRUE indicates that this font is designed 
  3276.                                   with underscores included in each character. 
  3277.  
  3278.     FM_SEL_NEGATIVE               TRUE indicates that this font is designed 
  3279.                                   with the background and foreground reversed. 
  3280.  
  3281.     FM_SEL_OUTLINE                TRUE indicates that this font is designed 
  3282.                                   with outline (hollow) characters. 
  3283.  
  3284.     FM_SEL_STRIKEOUT              TRUE indicates that this font is designed 
  3285.                                   with an overstrike through each character. 
  3286.  
  3287.     FM_SEL_BOLD                   TRUE indicates that this font is designed 
  3288.                                   with bold characters. 
  3289.  
  3290.     FM_SEL_ISO9241_TESTED         This flag indicates that the font has been 
  3291.                                   tested for compliance to ISO 9241. The 
  3292.                                   presence of this flag doesn't indicate 
  3293.                                   whether the font passed or failed, only that 
  3294.                                   it was tested. 
  3295.  
  3296.                                   Note:  While the fonts were primarily tested 
  3297.                                          for meeting the ISO standard, they 
  3298.                                          have also been designed to meet the 
  3299.                                          German standard DIN 66 234. Where the 
  3300.                                          two standards differ, the fonts have 
  3301.                                          been designed to meet the more 
  3302.                                          stringent requirement. 
  3303.  
  3304.  
  3305. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - fsCapabilities ΓòÉΓòÉΓòÉ
  3306.  
  3307.  fsCapabilities (USHORT) 
  3308.     Font capabilities. 
  3309.  
  3310.     This attribute applies only to device fonts. 
  3311.  
  3312.     FM_CAP_NOMIX                  Characters may not be mixed with graphics. 
  3313.  
  3314.     QUALITY                       The most significant byte may contain the 
  3315.                                   following numeric value: 
  3316.  
  3317.                                   0        Undefined 
  3318.                                   1        DP quality 
  3319.                                   2        DP draft 
  3320.                                   3        Near Letter Quality 
  3321.                                   4        Letter Quality 
  3322.  
  3323.  
  3324. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSubscriptXSize ΓòÉΓòÉΓòÉ
  3325.  
  3326.  lSubscriptXSize (LONG) 
  3327.     Subscript x-size. 
  3328.  
  3329.     The horizontal size recommended by the font designer for subscripts for 
  3330.     this font in world coordinate units. 
  3331.  
  3332.  
  3333. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSubscriptYSize ΓòÉΓòÉΓòÉ
  3334.  
  3335.  lSubscriptYSize (LONG) 
  3336.     Subscript y-size. 
  3337.  
  3338.     The vertical size recommended by the font designer for subscripts for this 
  3339.     font in world coordinate units. 
  3340.  
  3341.  
  3342. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSubscriptXOffset ΓòÉΓòÉΓòÉ
  3343.  
  3344.  lSubscriptXOffset (LONG) 
  3345.     Subscript x-offset. 
  3346.  
  3347.     The baseline x-offset recommended by the font designer for subscripts for 
  3348.     this font in world coordinate units. 
  3349.  
  3350.  
  3351. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSubscriptYOffset ΓòÉΓòÉΓòÉ
  3352.  
  3353.  lSubscriptYOffset (LONG) 
  3354.     Subscript y-offset. 
  3355.  
  3356.     The baseline y-offset recommended by the font designer for subscripts for 
  3357.     this font in world coordinate units. 
  3358.  
  3359.     Note:  Positive numbers indicate an offset below the baseline. 
  3360.  
  3361.  
  3362. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSuperscriptXSize ΓòÉΓòÉΓòÉ
  3363.  
  3364.  lSuperscriptXSize (LONG) 
  3365.     Superscript x-size. 
  3366.  
  3367.     The horizontal size recommended by the font designer for superscripts for 
  3368.     this font in world coordinate units. 
  3369.  
  3370.  
  3371. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSuperscriptYSize ΓòÉΓòÉΓòÉ
  3372.  
  3373.  lSuperscriptYSize (LONG) 
  3374.     Superscript y-size. 
  3375.  
  3376.     The vertical point size recommended by the font designer for superscripts 
  3377.     for this font in world coordinate units. 
  3378.  
  3379.  
  3380. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSuperscriptXOffset ΓòÉΓòÉΓòÉ
  3381.  
  3382.  lSuperscriptXOffset (LONG) 
  3383.     Superscript x-offset. 
  3384.  
  3385.     The baseline x-offset recommended by the font designer for superscripts for 
  3386.     this font in world coordinate units. 
  3387.  
  3388.  
  3389. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lSuperscriptYOffset ΓòÉΓòÉΓòÉ
  3390.  
  3391.  lSuperscriptYOffset (LONG) 
  3392.     Superscript y-offset. 
  3393.  
  3394.     The baseline y-offset recommended by the font designer for superscripts for 
  3395.     this font in world coordinate units. 
  3396.  
  3397.  
  3398. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lUnderscoreSize ΓòÉΓòÉΓòÉ
  3399.  
  3400.  lUnderscoreSize (LONG) 
  3401.     Underscore size. 
  3402.  
  3403.     The width (thickness) of the underscore stroke in world coordinate units. 
  3404.     This describes the actual underscore in the font if FM_SEL_UNDERSCORE is 
  3405.     also set. Otherwise it describes what the engine will simulate if 
  3406.     underscore is requested in GpiCreateLogFont. 
  3407.  
  3408.  
  3409. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lUnderscorePosition ΓòÉΓòÉΓòÉ
  3410.  
  3411.  lUnderscorePosition (LONG) 
  3412.     Underscore position. 
  3413.  
  3414.     The position of the underscore stroke from the baseline in world coordinate 
  3415.     units. This describes the actual underscore in the font if 
  3416.     FM_SEL_UNDERSCORE is also set. Otherwise it describes what the engine will 
  3417.     simulate if underscore is requested in GpiCreateLogFont. 
  3418.  
  3419.     Note:  Positive values indicate an offset below the baseline. 
  3420.  
  3421.  
  3422. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lStrikeoutSize ΓòÉΓòÉΓòÉ
  3423.  
  3424.  lStrikeoutSize (LONG) 
  3425.     Strikeout size. 
  3426.  
  3427.     The width of the strikeout stroke in world coordinate units. This describes 
  3428.     the actual underscore in the font if FM_SEL_STRIKEOUT is also set. 
  3429.     Otherwise it describes what the engine will simulate if overstrike is 
  3430.     requested in GpiCreateLogFont. 
  3431.  
  3432.  
  3433. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lStrikeoutPosition ΓòÉΓòÉΓòÉ
  3434.  
  3435.  lStrikeoutPosition (LONG) 
  3436.     Strikeout position. 
  3437.  
  3438.     The position of the strikeout stroke relative to the baseline in world 
  3439.     coordinate units. This describes the actual underscore in the font if 
  3440.     FM_SEL_STRIKEOUT is also set. Otherwise it describes what the engine will 
  3441.     simulate if overstrike is requested in GpiCreateLogFont. 
  3442.  
  3443.  
  3444. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sKerningPairs ΓòÉΓòÉΓòÉ
  3445.  
  3446.  sKerningPairs (SHORT) 
  3447.     Kerning pairs. 
  3448.  
  3449.     The number of kerning pairs in the kerning pair table. 
  3450.  
  3451.  
  3452. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - sFamilyClass ΓòÉΓòÉΓòÉ
  3453.  
  3454.  sFamilyClass (SHORT) 
  3455.     Font family design classification. 
  3456.  
  3457.     This value contains a font class and its subclass. 
  3458.  
  3459.  
  3460. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - lMatch ΓòÉΓòÉΓòÉ
  3461.  
  3462.  lMatch (LONG) 
  3463.     Matched font identity. 
  3464.  
  3465.     This uniquely identifies the font for a given device and device driver 
  3466.     combination. A positive match number signifies that the font is a generic 
  3467.     (engine) font while a negative number indicates a device font (a native or 
  3468.     downloadable font). This value should not be used to identify a font across 
  3469.     system boundaries. 
  3470.  
  3471.  
  3472. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - FamilyNameAtom ΓòÉΓòÉΓòÉ
  3473.  
  3474.  FamilyNameAtom (LONG) 
  3475.     Font family name atom. 
  3476.  
  3477.     This value contains the atom identifier for the font family name in the 
  3478.     System Atom Table. 
  3479.  
  3480.  
  3481. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - FaceNameAtom ΓòÉΓòÉΓòÉ
  3482.  
  3483.  FaceNameAtom (LONG) 
  3484.     Font facename atom. 
  3485.  
  3486.     This value contains the atom identifier for the font face name in the 
  3487.     System Atom Table. 
  3488.  
  3489.  
  3490. ΓòÉΓòÉΓòÉ <hidden> FONTMETRICS Field - panose ΓòÉΓòÉΓòÉ
  3491.  
  3492.  panose (PANOSE) 
  3493.     Panose font descriptor. 
  3494.  
  3495.     This is the Panose descriptor identifying the visual characteristics of the 
  3496.     font. 
  3497.  
  3498.  
  3499. ΓòÉΓòÉΓòÉ 1.25. GRADIENTL ΓòÉΓòÉΓòÉ
  3500.  
  3501. Direction-vector structure. 
  3502.  
  3503. Type
  3504.   GRADIENTL = Record
  3505.     x: Long;
  3506.     y: Long;
  3507.   End;
  3508.  
  3509. Type
  3510.   PGRADIENTL = ^GRADIENTL;
  3511.  
  3512.  
  3513. ΓòÉΓòÉΓòÉ <hidden> GRADIENTL Field - x ΓòÉΓòÉΓòÉ
  3514.  
  3515.  x (LONG) 
  3516.     X-component of direction. 
  3517.  
  3518.  
  3519. ΓòÉΓòÉΓòÉ <hidden> GRADIENTL Field - y ΓòÉΓòÉΓòÉ
  3520.  
  3521.  y (LONG) 
  3522.     Y-component of direction. 
  3523.  
  3524.  
  3525. ΓòÉΓòÉΓòÉ 1.26. HAB ΓòÉΓòÉΓòÉ
  3526.  
  3527. Anchor-block handle. 
  3528.  
  3529. Type
  3530.   HAB = LHANDLE;
  3531.  
  3532.  
  3533. ΓòÉΓòÉΓòÉ 1.27. HBITMAP ΓòÉΓòÉΓòÉ
  3534.  
  3535. Bit-map handle. 
  3536.  
  3537. Type
  3538.   HBITMAP = LHANDLE;
  3539.  
  3540.  
  3541. ΓòÉΓòÉΓòÉ 1.28. HCINFO ΓòÉΓòÉΓòÉ
  3542.  
  3543. Hardcopy-capabilities structure. 
  3544.  
  3545. Type
  3546.   HCINFO = Record
  3547.     szFormname: array [0..31] of Char;
  3548.     cx:             Long;
  3549.     cy:             Long;
  3550.     xLeftClip:      Long;
  3551.     yBottomClip:    Long;
  3552.     xRightClip:     Long;
  3553.     yTopClip:       Long;
  3554.     xPels:          Long;
  3555.     yPels:          Long;
  3556.     flAttributes:   Long;
  3557.   End;
  3558.  
  3559. Type
  3560.   PHCINFO = ^HCINFO;
  3561.  
  3562.  
  3563. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - szFormname[32] ΓòÉΓòÉΓòÉ
  3564.  
  3565.  szFormname[32] (CHAR) 
  3566.     Form name. 
  3567.  
  3568.  
  3569. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - cx ΓòÉΓòÉΓòÉ
  3570.  
  3571.  cx (LONG) 
  3572.     Width (left-to-right) in millimeters. 
  3573.  
  3574.  
  3575. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - cy ΓòÉΓòÉΓòÉ
  3576.  
  3577.  cy (LONG) 
  3578.     Height (top-to-bottom) in millimeters. 
  3579.  
  3580.  
  3581. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - xLeftClip ΓòÉΓòÉΓòÉ
  3582.  
  3583.  xLeftClip (LONG) 
  3584.     Left-clip limit in millimeters. 
  3585.  
  3586.  
  3587. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - yBottomClip ΓòÉΓòÉΓòÉ
  3588.  
  3589.  yBottomClip (LONG) 
  3590.     Bottom-clip limit in millimeters. 
  3591.  
  3592.  
  3593. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - xRightClip ΓòÉΓòÉΓòÉ
  3594.  
  3595.  xRightClip (LONG) 
  3596.     Right-clip limit in millimeters. 
  3597.  
  3598.  
  3599. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - yTopClip ΓòÉΓòÉΓòÉ
  3600.  
  3601.  yTopClip (LONG) 
  3602.     Top-clip limit in millimeters. 
  3603.  
  3604.  
  3605. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - xPels ΓòÉΓòÉΓòÉ
  3606.  
  3607.  xPels (LONG) 
  3608.     Number of pels between left-clip and right-clip limits. 
  3609.  
  3610.  
  3611. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - yPels ΓòÉΓòÉΓòÉ
  3612.  
  3613.  yPels (LONG) 
  3614.     Number of pels between bottom-clip and top-clip limits. 
  3615.  
  3616.  
  3617. ΓòÉΓòÉΓòÉ <hidden> HCINFO Field - flAttributes ΓòÉΓòÉΓòÉ
  3618.  
  3619.  flAttributes (LONG) 
  3620.     Attributes of the form identifier. 
  3621.  
  3622.     HCAPS_SELECTABLE 
  3623.                              The form is installed on the printer as given by 
  3624.                              the printer properties dialog. It is available 
  3625.                              from an alternate form source without operator 
  3626.                              intervention. If the form does not have this bit 
  3627.                              set and is used (if the user selects it), a "forms 
  3628.                              mismatch" error is generated by the printer 
  3629.                              object. 
  3630.  
  3631.     HCAPS_CURRENT 
  3632.                              The form is the one currently selected by the 
  3633.                              DevOpenDC DEVOPENSTRUC pdriv field (the job 
  3634.                              properties). 
  3635.  
  3636.  
  3637. ΓòÉΓòÉΓòÉ 1.29. HDC ΓòÉΓòÉΓòÉ
  3638.  
  3639. Device-context handle. 
  3640.  
  3641. Type
  3642.   HDC = LHANDLE;
  3643.  
  3644.  
  3645. ΓòÉΓòÉΓòÉ 1.30. HMF ΓòÉΓòÉΓòÉ
  3646.  
  3647. Metafile handle. 
  3648.  
  3649. Type
  3650.   HMF = LHANDLE;
  3651.  
  3652.  
  3653. ΓòÉΓòÉΓòÉ 1.31. HMODULE ΓòÉΓòÉΓòÉ
  3654.  
  3655. Module handle. 
  3656.  
  3657. Type
  3658.   HMODULE = LHANDLE;
  3659.  
  3660.  
  3661. ΓòÉΓòÉΓòÉ 1.32. HPAL ΓòÉΓòÉΓòÉ
  3662.  
  3663. Palette handle. 
  3664.  
  3665. Type
  3666.   HPAL = LHANDLE;
  3667.  
  3668.  
  3669. ΓòÉΓòÉΓòÉ 1.33. HPS ΓòÉΓòÉΓòÉ
  3670.  
  3671. Presentation-space handle. 
  3672.  
  3673. Type
  3674.   HPS = LHANDLE;
  3675.  
  3676.  
  3677. ΓòÉΓòÉΓòÉ 1.34. HRGN ΓòÉΓòÉΓòÉ
  3678.  
  3679. Region handle. 
  3680.  
  3681. Type
  3682.   HRGN = LHANDLE;
  3683.  
  3684.  
  3685. ΓòÉΓòÉΓòÉ 1.35. IMAGEBUNDLE ΓòÉΓòÉΓòÉ
  3686.  
  3687. Image-attributes bundle structure. 
  3688.  
  3689. Type
  3690.   IMAGEBUNDLE = Record
  3691.     lColor:        Long;
  3692.     lBackColor:    Long;
  3693.     usMixMode:     SmallWord;
  3694.     usBackMixMode: SmallWord;
  3695.   End;
  3696.  
  3697. Type
  3698.   PIMAGEBUNDLE = ^IMAGEBUNDLE;
  3699.  
  3700.  
  3701. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  3702.  
  3703.  lColor (LONG) 
  3704.     Image foreground color. 
  3705.  
  3706.  
  3707. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  3708.  
  3709.  lBackColor (LONG) 
  3710.     Image background color. 
  3711.  
  3712.  
  3713. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  3714.  
  3715.  usMixMode (USHORT) 
  3716.     Image foreground-mix mode. 
  3717.  
  3718.  
  3719. ΓòÉΓòÉΓòÉ <hidden> IMAGEBUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  3720.  
  3721.  usBackMixMode (USHORT) 
  3722.     Image background-mix mode. 
  3723.  
  3724.  
  3725. ΓòÉΓòÉΓòÉ 1.36. KERNINGPAIRS ΓòÉΓòÉΓòÉ
  3726.  
  3727. [Need description.] 
  3728.  
  3729. Type
  3730.   KERNINGPAIRS = Record
  3731.     sFirstChar:     SmallWord;
  3732.     sSecondChar:    SmallWord;
  3733.     lKerningAmount: Long;
  3734.   End;
  3735.  
  3736. Type
  3737.   PKERNINGPAIRS = ^KERNINGPAIRS;
  3738.  
  3739.  
  3740. ΓòÉΓòÉΓòÉ <hidden> KERNINGPAIRS Field - sFirstChar ΓòÉΓòÉΓòÉ
  3741.  
  3742.  sFirstChar (SHORT) 
  3743.     [Need definition.] 
  3744.  
  3745.  
  3746. ΓòÉΓòÉΓòÉ <hidden> KERNINGPAIRS Field - sSecondChar ΓòÉΓòÉΓòÉ
  3747.  
  3748.  sSecondChar (SHORT) 
  3749.     [Need definition.] 
  3750.  
  3751.  
  3752. ΓòÉΓòÉΓòÉ <hidden> KERNINGPAIRS Field - lKerningAmount ΓòÉΓòÉΓòÉ
  3753.  
  3754.  lKerningAmount (LONG) 
  3755.     [Need definition.] 
  3756.  
  3757.  
  3758. ΓòÉΓòÉΓòÉ 1.37. LINEBUNDLE ΓòÉΓòÉΓòÉ
  3759.  
  3760. Line-attributes bundle structure. 
  3761.  
  3762. Type
  3763.   LINEBUNDLE = Record
  3764.     lColor:        Long;
  3765.     lBackColor:    Long;
  3766.     usMixMode:     SmallWord;
  3767.     usBackMixMode: SmallWord;
  3768.     fxWidth:       Fixed;
  3769.     lGeomWidth:    Long;
  3770.     usType:        SmallWord;
  3771.     usEnd:         SmallWord;
  3772.     usJoin:        SmallWord;
  3773.     usReserved:    SmallWord;
  3774.   End;
  3775.  
  3776. Type
  3777.   PLINEBUNDLE = ^LINEBUNDLE;
  3778.  
  3779.  
  3780. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  3781.  
  3782.  lColor (LONG) 
  3783.     Line foreground color. 
  3784.  
  3785.  
  3786. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  3787.  
  3788.  lBackColor (LONG) 
  3789.     Line background color. 
  3790.  
  3791.  
  3792. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  3793.  
  3794.  usMixMode (USHORT) 
  3795.     Line foreground-mix mode. 
  3796.  
  3797.  
  3798. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  3799.  
  3800.  usBackMixMode (USHORT) 
  3801.     Line background-mix mode. 
  3802.  
  3803.  
  3804. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - fxWidth ΓòÉΓòÉΓòÉ
  3805.  
  3806.  fxWidth (FIXED) 
  3807.     Line width. 
  3808.  
  3809.  
  3810. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - lGeomWidth ΓòÉΓòÉΓòÉ
  3811.  
  3812.  lGeomWidth (LONG) 
  3813.     Geometric line width. 
  3814.  
  3815.  
  3816. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usType ΓòÉΓòÉΓòÉ
  3817.  
  3818.  usType (USHORT) 
  3819.     Line type. 
  3820.  
  3821.  
  3822. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usEnd ΓòÉΓòÉΓòÉ
  3823.  
  3824.  usEnd (USHORT) 
  3825.     Line end. 
  3826.  
  3827.  
  3828. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usJoin ΓòÉΓòÉΓòÉ
  3829.  
  3830.  usJoin (USHORT) 
  3831.     Line join. 
  3832.  
  3833.  
  3834. ΓòÉΓòÉΓòÉ <hidden> LINEBUNDLE Field - usReserved ΓòÉΓòÉΓòÉ
  3835.  
  3836.  usReserved (USHORT) 
  3837.     Reserved. 
  3838.  
  3839.  
  3840. ΓòÉΓòÉΓòÉ 1.38. LONG ΓòÉΓòÉΓòÉ
  3841.  
  3842. Signed integer in the range -2 147 483 648 through 2 147 483 647. 
  3843.  
  3844. Note:  Where this data type represents a graphic coordinate in world or model 
  3845.        space, its value is restricted to -134 217 728 through 134 217 727. 
  3846.  
  3847. A graphic coordinate in device or screen coordinates is restricted to -32 768 
  3848. through 32 767. 
  3849.  
  3850. The value of a graphic coordinate may be further restricted by any transforms 
  3851. currently in force, including the positioning of the origin of the window on 
  3852. the screen. In particular, coordinates in world or model space must not 
  3853. generate coordinate values after transformation (that is, in device or screen 
  3854. space) outside the range -32 768 through 32 767. 
  3855.  
  3856.  
  3857. ΓòÉΓòÉΓòÉ 1.39. MARKERBUNDLE ΓòÉΓòÉΓòÉ
  3858.  
  3859. Marker-attributes bundle structure. 
  3860.  
  3861. Type
  3862.   MARKERBUNDLE = Record
  3863.     lColor:        Long;
  3864.     lBackColor:    Long;
  3865.     usMixMode:     SmallWord;
  3866.     usBackMixMode: SmallWord;
  3867.     usSet:         SmallWord;
  3868.     usSymbol:      SmallWord;
  3869.     sizfxCell:     SizeF;
  3870.   End;
  3871.  
  3872. Type
  3873.   PMARKERBUNDLE = ^MARKERBUNDLE;
  3874.  
  3875.  
  3876. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - lColor ΓòÉΓòÉΓòÉ
  3877.  
  3878.  lColor (LONG) 
  3879.     Marker foreground color. 
  3880.  
  3881.  
  3882. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - lBackColor ΓòÉΓòÉΓòÉ
  3883.  
  3884.  lBackColor (LONG) 
  3885.     Marker background color. 
  3886.  
  3887.  
  3888. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - usMixMode ΓòÉΓòÉΓòÉ
  3889.  
  3890.  usMixMode (USHORT) 
  3891.     Marker foreground-mix mode. 
  3892.  
  3893.  
  3894. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - usBackMixMode ΓòÉΓòÉΓòÉ
  3895.  
  3896.  usBackMixMode (USHORT) 
  3897.     Marker background-mix mode. 
  3898.  
  3899.  
  3900. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - usSet ΓòÉΓòÉΓòÉ
  3901.  
  3902.  usSet (USHORT) 
  3903.     Marker set. 
  3904.  
  3905.  
  3906. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - usSymbol ΓòÉΓòÉΓòÉ
  3907.  
  3908.  usSymbol (USHORT) 
  3909.     Marker symbol. 
  3910.  
  3911.  
  3912. ΓòÉΓòÉΓòÉ <hidden> MARKERBUNDLE Field - sizfxCell ΓòÉΓòÉΓòÉ
  3913.  
  3914.  sizfxCell (SIZEF) 
  3915.     Marker cell. 
  3916.  
  3917.  
  3918. ΓòÉΓòÉΓòÉ 1.40. MATRIXLF ΓòÉΓòÉΓòÉ
  3919.  
  3920. Matrix-elements structure. 
  3921.  
  3922. Type
  3923.   MATRIXLF = Record
  3924.     fxM11: Fixed;
  3925.     fxM12: Fixed;
  3926.     lM13:  Long;
  3927.     fxM21: Fixed;
  3928.     fxM22: Fixed;
  3929.     lM23:  Long;
  3930.     lM31:  Long;
  3931.     lM32:  Long;
  3932.     lM33:  Long;
  3933.   End;
  3934.  
  3935. Type
  3936.   PMATRIXLF = ^MATRIXLF;
  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. Type
  3998.   MPARAM    = LONGINT;
  3999.  
  4000. Certain elements of information, placed into the parameters of a message, have 
  4001. data types that do not use all four bytes of this data type. The rules 
  4002. governing these cases are: 
  4003.  
  4004.  BOOL      The value is contained in the low word and the high word is 0. 
  4005.  SHORT     The value is contained in the low word and its sign is extended into 
  4006.            the high word. 
  4007.  USHORT    The value is contained in the low word and the high word is 0. 
  4008.  NULL      The entire four bytes are 0. 
  4009.  
  4010.  The structure of this data type depends on the message. For details, see the 
  4011.  description of the particular message. 
  4012.  
  4013.  
  4014. ΓòÉΓòÉΓòÉ 1.42. MRESULT ΓòÉΓòÉΓòÉ
  4015.  
  4016. A 4-byte message-dependent reply parameter structure. 
  4017.  
  4018. Type
  4019.   MRESULT   = LONGINT;
  4020.  
  4021. Certain elements of information, placed into the parameters of a message, have 
  4022. data types that do not use all four bytes of this data type. The rules 
  4023. governing these cases are: 
  4024.  
  4025.  BOOL      The value is contained in the low word and the high word is 0. 
  4026.  SHORT     The value is contained in the low word and its sign is extended into 
  4027.            the high word. 
  4028.  USHORT    The value is contained in the low word and the high word is 0. 
  4029.  NULL      The entire four bytes are 0. 
  4030.  
  4031.  The structure of this data type depends on the message. For details, see the 
  4032.  description of the particular message. 
  4033.  
  4034.  
  4035. ΓòÉΓòÉΓòÉ 1.43. PANOSE ΓòÉΓòÉΓòÉ
  4036.  
  4037. The Panose field in the font metrics will allow for quantitative descriptions 
  4038. of the visual properties of font faces. The PANOSE definition contains ten 
  4039. digits, each of which currently describes up to sixteen variations. 
  4040.  
  4041. Type
  4042.   PANOSE = Record
  4043.     bFamilyType:        Byte;
  4044.     bSerifStyle:        Byte;
  4045.     bWeight:            Byte;
  4046.     bProportion:        Byte;
  4047.     bContrast:          Byte;
  4048.     bStrokeVariation:   Byte;
  4049.     bArmStyle:          Byte;
  4050.     bLetterform:        Byte;
  4051.     bMidline:           Byte;
  4052.     bXHeight:           Byte;
  4053.     abReserved: array[0..1] of Byte;
  4054.   End;
  4055.  
  4056. Type ^PANOSE - Not defined.
  4057.  
  4058.  
  4059. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bFamilyType ΓòÉΓòÉΓòÉ
  4060.  
  4061.  bFamilyType (BYTE) 
  4062.     Family kind. 
  4063.  
  4064.     0         Any 
  4065.     1         No Fit 
  4066.     2         Text and Display 
  4067.     3         Script 
  4068.     4         Decorative 
  4069.     5         Pictorial 
  4070.  
  4071.  
  4072. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bSerifStyle ΓòÉΓòÉΓòÉ
  4073.  
  4074.  bSerifStyle (BYTE) 
  4075.     Serif style. 
  4076.  
  4077.     0         Any 
  4078.     1         No Fit 
  4079.     2         Cove 
  4080.     3         Obtuse Cove 
  4081.     4         Square Cove 
  4082.     5         Obtuse Square Cove 
  4083.     6         Square 
  4084.     7         Thin 
  4085.     8         Bone 
  4086.     9         Exaggerated 
  4087.     10        Triangle 
  4088.     11        Normal Sans 
  4089.     12        Obtuse Sans 
  4090.     13        Perp Sans 
  4091.     14        Flared 
  4092.     15        Rounded 
  4093.  
  4094.  
  4095. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bWeight ΓòÉΓòÉΓòÉ
  4096.  
  4097.  bWeight (BYTE) 
  4098.     Weight. 
  4099.  
  4100.     0         Any 
  4101.     1         No Fit 
  4102.     2         Very Light 
  4103.     3         Light 
  4104.     4         Thin 
  4105.     5         Book 
  4106.     6         Medium 
  4107.     7         Demi 
  4108.     8         Bold 
  4109.     9         Heavy 
  4110.     10        Black 
  4111.     11        Nord 
  4112.  
  4113.  
  4114. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bProportion ΓòÉΓòÉΓòÉ
  4115.  
  4116.  bProportion (BYTE) 
  4117.     Proportion. 
  4118.  
  4119.     0         Any 
  4120.     1         No Fit 
  4121.     2         Old Style 
  4122.     3         Modern 
  4123.     4         Even Width 
  4124.     5         Expanded 
  4125.     6         Condensed 
  4126.     7         Very Expanded 
  4127.     8         Very Condensed 
  4128.     9         Monospaced 
  4129.  
  4130.  
  4131. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bContrast ΓòÉΓòÉΓòÉ
  4132.  
  4133.  bContrast (BYTE) 
  4134.     Contrast. 
  4135.  
  4136.     0         Any 
  4137.     1         No Fit 
  4138.     2         None 
  4139.     3         Very Low 
  4140.     4         Low 
  4141.     5         Medium Low 
  4142.     6         Medium 
  4143.     7         Medium High 
  4144.     8         High 
  4145.     9         Very High 
  4146.  
  4147.  
  4148. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bStrokeVariation ΓòÉΓòÉΓòÉ
  4149.  
  4150.  bStrokeVariation (BYTE) 
  4151.     Stroke Variation. 
  4152.  
  4153.     0         Any 
  4154.     1         No Fit 
  4155.     2         Gradual/Diagonal 
  4156.     3         Gradual/Transitional 
  4157.     4         Gradual/Vertical 
  4158.     5         Gradual/Horizontal 
  4159.     6         Rapid/Vertical 
  4160.     7         Rapid/Horizontal 
  4161.     8         Instant/Vertical 
  4162.  
  4163.  
  4164. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bArmStyle ΓòÉΓòÉΓòÉ
  4165.  
  4166.  bArmStyle (BYTE) 
  4167.     Arm Style. 
  4168.  
  4169.     0         Any 
  4170.     1         No Fit 
  4171.     2         Straight Arms/Horizontal 
  4172.     3         Straight Arms/Wedge 
  4173.     4         Straight Arms/Vertical 
  4174.     5         Straight Arms/Single Serif 
  4175.     6         Straight Arms/Double Serif 
  4176.     7         Non-Straight Arms/Horizontal 
  4177.     8         Non-Straight Arms/Wedge 
  4178.     9         Non-Straight Arms/Vertical 
  4179.     10        Non-Straight Arms/Single Serif 
  4180.     11        Non-Straight Arms/Double Serif 
  4181.  
  4182.  
  4183. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bLetterform ΓòÉΓòÉΓòÉ
  4184.  
  4185.  bLetterform (BYTE) 
  4186.     Letterform. 
  4187.  
  4188.     0         Any 
  4189.     1         No Fit 
  4190.     2         Normal/Contact 
  4191.     3         ONormal/Weighted 
  4192.     4         ONormal/Boxed 
  4193.     5         ONormal/Flattened 
  4194.     6         ONormal/Rounded 
  4195.     7         ONormal/Off Center 
  4196.     8         ONormal/Square 
  4197.     9         Oblique/Contact 
  4198.     10        Oblique/Weighted 
  4199.     11        Oblique/Boxed 
  4200.     12        Oblique/Flattened 
  4201.     13        Oblique/Rounded 
  4202.     14        Oblique/Off Center 
  4203.     15        Oblique/Square 
  4204.  
  4205.  
  4206. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bMidline ΓòÉΓòÉΓòÉ
  4207.  
  4208.  bMidline (BYTE) 
  4209.     Midline. 
  4210.  
  4211.     0         Any 
  4212.     1         No Fit 
  4213.     2         Standard/Trimmed 
  4214.     3         Standard/Pointed 
  4215.     4         Standard/Serifed 
  4216.     5         High/Trimmed 
  4217.     6         High/Pointed 
  4218.     7         High/Serifed 
  4219.     8         Constant/Trimmed 
  4220.     9         Constant/Pointed 
  4221.     10        Constant/Serifed 
  4222.     11        Low/Trimmed 
  4223.     12        Low/Pointed 
  4224.     13        Low/Serifed 
  4225.  
  4226.  
  4227. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - bXHeight ΓòÉΓòÉΓòÉ
  4228.  
  4229.  bXHeight (BYTE) 
  4230.     X-Height. 
  4231.  
  4232.     0         Any 
  4233.     1         No Fit 
  4234.     2         Constant/Small 
  4235.     3         Constant/Standard 
  4236.     4         Constant/Large 
  4237.     5         Ducking/Small 
  4238.     6         Ducking/Standard 
  4239.     7         Ducking/Large 
  4240.  
  4241.  
  4242. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - fbPassedISO ΓòÉΓòÉΓòÉ
  4243.  
  4244.  fbPassedISO (BYTE) 
  4245.     Font passed ISO test. 
  4246.  
  4247.     The following flags indicate those displays and resolutions at which the 
  4248.     font complied with ISO 9241: 
  4249.  
  4250.     FM_ISO_9518_640 
  4251.     FM_ISO_9515_640 
  4252.     FM_ISO_9515_1024 
  4253.     FM_ISO_9517_640 
  4254.     FM_ISO_9517_1024 
  4255.  
  4256.  
  4257. ΓòÉΓòÉΓòÉ <hidden> PANOSE Field - fbFailedISO ΓòÉΓòÉΓòÉ
  4258.  
  4259.  fbFailedISO (BYTE) 
  4260.     Font failed ISO test. 
  4261.  
  4262.     The following flags indicate those displays and resolutions at which the 
  4263.     font did not comply with ISO 9241: 
  4264.  
  4265.     FM_ISO_9518_640 
  4266.     FM_ISO_9515_640 
  4267.     FM_ISO_9515_1024 
  4268.     FM_ISO_9517_640 
  4269.     FM_ISO_9517_1024 
  4270.  
  4271.  
  4272. ΓòÉΓòÉΓòÉ 1.44. PBUNDLE ΓòÉΓòÉΓòÉ
  4273.  
  4274. Points to a bundle data area. 
  4275.  
  4276. Type
  4277.   PBUNDLE = POINTER;
  4278.  
  4279.  
  4280. ΓòÉΓòÉΓòÉ 1.45. PCH ΓòÉΓòÉΓòÉ
  4281.  
  4282. Pointer to a character string. 
  4283.  
  4284. Not defined.
  4285.  
  4286.  
  4287. ΓòÉΓòÉΓòÉ 1.46. POLYGON ΓòÉΓòÉΓòÉ
  4288.  
  4289. Polygon structure. 
  4290.  
  4291. Type
  4292.   POLYGON = Record
  4293.     ulPoints: ULong;
  4294.     aPointl:  PPointL;
  4295.   End;
  4296.  
  4297. Type
  4298.   PPOLYGON = ^POLYGON;
  4299.  
  4300.  
  4301. ΓòÉΓòÉΓòÉ <hidden> POLYGON Field - ulPoints ΓòÉΓòÉΓòÉ
  4302.  
  4303.  ulPoints (ULONG) 
  4304.     Number of points in array. 
  4305.  
  4306.  
  4307. ΓòÉΓòÉΓòÉ <hidden> POLYGON Field - aPointl ΓòÉΓòÉΓòÉ
  4308.  
  4309.  aPointl (PPOINTL) 
  4310.     Array of points. 
  4311.  
  4312.  
  4313. ΓòÉΓòÉΓòÉ 1.47. POINTL ΓòÉΓòÉΓòÉ
  4314.  
  4315. Point structure (long integers). 
  4316.  
  4317. Type
  4318.   POINTL = Record
  4319.     X: Long;
  4320.     Y: Long;
  4321.   End;
  4322.  
  4323. Type
  4324.   PPOINTL  = ^POINTL;
  4325.  
  4326.  
  4327. ΓòÉΓòÉΓòÉ <hidden> POINTL Field - x ΓòÉΓòÉΓòÉ
  4328.  
  4329.  x (LONG) 
  4330.     X-coordinate. 
  4331.  
  4332.  
  4333. ΓòÉΓòÉΓòÉ <hidden> POINTL Field - y ΓòÉΓòÉΓòÉ
  4334.  
  4335.  y (LONG) 
  4336.     Y-coordinate. 
  4337.  
  4338.  
  4339. ΓòÉΓòÉΓòÉ 1.48. PCSZ ΓòÉΓòÉΓòÉ
  4340.  
  4341. Pointer to a constant null-terminated string. 
  4342.  
  4343. Not defined.
  4344.  
  4345.  
  4346. ΓòÉΓòÉΓòÉ 1.49. PSZ ΓòÉΓòÉΓòÉ
  4347.  
  4348. Pointer to a null-terminated string. 
  4349.  
  4350. If you are using C++ **, you may need to use PCSZ. 
  4351.  
  4352. Not defined.
  4353.  
  4354.  
  4355. ΓòÉΓòÉΓòÉ 1.50. PRQINFO3 ΓòÉΓòÉΓòÉ
  4356.  
  4357. Print-queue information structure. 
  4358.  
  4359. This structure is used at information levels 3 and 4. 
  4360.  
  4361. Type
  4362.   PRQINFO3 = Record
  4363.     pszName:        PChar;
  4364.     uPriority:      UShort;
  4365.     uStartTime:     UShort;
  4366.     uUntilTime:     UShort;
  4367.     fsType:         UShort;
  4368.     pszSepFile:     PChar;
  4369.     pszPrProc:      PChar;
  4370.     pszParms:       PChar;
  4371.     pszComment:     PChar;
  4372.     fsStatus:       UShort;
  4373.     cJobs:          UShort;
  4374.     pszPrinters:    PChar;
  4375.     pszDriverName:  PChar;
  4376.     pDriverData:    PDrivData;
  4377.   End;
  4378.  
  4379. Type
  4380.   PPRQINFO3 = ^PRQINFO3;
  4381.  
  4382.  
  4383. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszName ΓòÉΓòÉΓòÉ
  4384.  
  4385.  pszName (PSZ) 
  4386.     Queue name. 
  4387.  
  4388.     The maximum length of the name in the network case is 256 (including one 
  4389.     byte for zero termination). 
  4390.  
  4391.  
  4392. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - uPriority ΓòÉΓòÉΓòÉ
  4393.  
  4394.  uPriority (USHORT) 
  4395.     Queue priority. 
  4396.  
  4397.     The range is 1 through 9, with 1 being the highest queue priority. 
  4398.  
  4399.     The default job priority (DefJobPrio) is determined from: 
  4400.     DefJobPrio=100-(10* uPriority). 
  4401.  
  4402.     If a job is added with PRJ_NO_PRIORITY specified, DefJobPrio is used. If a 
  4403.     default priority higher than the default job priority is specified, the 
  4404.     default job priority is used. If a default priority lower than the default 
  4405.     is specified, the specified job priority is used. 
  4406.  
  4407.     PRQ_DEF_PRIORITY 
  4408.             Default priority 
  4409.     PRQ_MAX_PRIORITY 
  4410.             Highest priority 
  4411.     PRQ_MIN_PRIORITY 
  4412.             Minimum priority 
  4413.     PRQ_NO_PRIORITY 
  4414.             No priority. 
  4415.  
  4416.  
  4417. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - uStartTime ΓòÉΓòÉΓòÉ
  4418.  
  4419.  uStartTime (USHORT) 
  4420.     Minutes after midnight when queue becomes active. 
  4421.  
  4422.     For example, the value 75 represents 1:15 a.m. 
  4423.  
  4424.     If uStartTime and uUntilTime are both 0, the print queue is always 
  4425.     available. 
  4426.  
  4427.  
  4428. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - uUntilTime ΓòÉΓòÉΓòÉ
  4429.  
  4430.  uUntilTime (USHORT) 
  4431.     Minutes after midnight. when queue ceases to be active. 
  4432.  
  4433.     For example, the value 1200 represents 8 p.m. 
  4434.  
  4435.     If uUntilTime and uStartTime are both 0, the print queue is always 
  4436.     available. 
  4437.  
  4438.  
  4439. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - fsType ΓòÉΓòÉΓòÉ
  4440.  
  4441.  fsType (USHORT) 
  4442.     Queue type. 
  4443.  
  4444.     PRQ3_TYPE_RAW 
  4445.             Data is always enqueued in the device specific format. 
  4446.     PRQ3_TYPE_BYPASS 
  4447.             Allows the spooler to bypass the queue processor and send data 
  4448.             directly to the Printer Driver. Setting this bit allows the spooler 
  4449.             to print jobs of type PM_Q_RAW while they are still being spooled. 
  4450.     PRQ3_TYPE_APPDEFAULT 
  4451.             This bit is set for the application default queue only. 
  4452.  
  4453.  
  4454. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszSepFile ΓòÉΓòÉΓòÉ
  4455.  
  4456.  pszSepFile (PSZ) 
  4457.     Separator-page file. 
  4458.  
  4459.     The path and file name of a separator-page file on the target computer. 
  4460.  
  4461.     This file contains formatting information for the page or pages to be used 
  4462.     between print jobs. A relative path name is taken as relative to the 
  4463.     current spool directory. A NULL string indicates no separator page. 
  4464.  
  4465.  
  4466. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszPrProc ΓòÉΓòÉΓòÉ
  4467.  
  4468.  pszPrProc (PSZ) 
  4469.     Default queue-processor. 
  4470.  
  4471.  
  4472. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszParms ΓòÉΓòÉΓòÉ
  4473.  
  4474.  pszParms (PSZ) 
  4475.     Queue parameters. 
  4476.  
  4477.     This can be any text string or a NULL string. 
  4478.  
  4479.  
  4480. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszComment ΓòÉΓòÉΓòÉ
  4481.  
  4482.  pszComment (PSZ) 
  4483.     Queue description. 
  4484.  
  4485.     A NULL string results in no comment. The maximum length is 48 characters 
  4486.     (including one byte for the null terminator). 
  4487.  
  4488.  
  4489. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - fsStatus ΓòÉΓòÉΓòÉ
  4490.  
  4491.  fsStatus (USHORT) 
  4492.     Queue status. 
  4493.  
  4494.     PRQ3_PAUSED 
  4495.             Queue is paused (held). 
  4496.     PRQ3_PENDING 
  4497.             Queue is pending deletion. 
  4498.  
  4499.  
  4500. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - cJobs ΓòÉΓòÉΓòÉ
  4501.  
  4502.  cJobs (USHORT) 
  4503.     Number of jobs in queue. 
  4504.  
  4505.  
  4506. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszPrinters ΓòÉΓòÉΓòÉ
  4507.  
  4508.  pszPrinters (PSZ) 
  4509.     Print devices connected to queue. 
  4510.  
  4511.     This cannot be NULL. 
  4512.  
  4513.  
  4514. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pszDriverName ΓòÉΓòÉΓòÉ
  4515.  
  4516.  pszDriverName (PSZ) 
  4517.     Default device driver. 
  4518.  
  4519.  
  4520. ΓòÉΓòÉΓòÉ <hidden> PRQINFO3 Field - pDriverData ΓòÉΓòÉΓòÉ
  4521.  
  4522.  pDriverData (PDRIVDATA) 
  4523.     Default queue job properties. 
  4524.  
  4525.     Note:  An application can use pszDriverName, pDriverData, pszPrProc, and 
  4526.            pszParms to construct a valid DevOpenDC call based only on the queue 
  4527.            name. 
  4528.  
  4529.  
  4530. ΓòÉΓòÉΓòÉ 1.51. PVOID ΓòÉΓòÉΓòÉ
  4531.  
  4532. Pointer to a data type of undefined format. 
  4533.  
  4534. Not defined.
  4535.  
  4536.  
  4537. ΓòÉΓòÉΓòÉ 1.52. RECTL ΓòÉΓòÉΓòÉ
  4538.  
  4539. Rectangle structure. 
  4540.  
  4541. Type
  4542.   RECTL = Record
  4543.     xLeft:   Long;
  4544.     yBottom: Long;
  4545.     xRight:  Long;
  4546.     yTop:    Long;
  4547.   End;
  4548.  
  4549. Type
  4550.   PRECTL  = ^RECTL;
  4551.  
  4552.  
  4553. ΓòÉΓòÉΓòÉ <hidden> RECTL Field - xLeft ΓòÉΓòÉΓòÉ
  4554.  
  4555.  xLeft (LONG) 
  4556.     X-coordinate of left-hand edge of rectangle. 
  4557.  
  4558.  
  4559. ΓòÉΓòÉΓòÉ <hidden> RECTL Field - yBottom ΓòÉΓòÉΓòÉ
  4560.  
  4561.  yBottom (LONG) 
  4562.     Y-coordinate of bottom edge of rectangle. 
  4563.  
  4564.  
  4565. ΓòÉΓòÉΓòÉ <hidden> RECTL Field - xRight ΓòÉΓòÉΓòÉ
  4566.  
  4567.  xRight (LONG) 
  4568.     X-coordinate of right-hand edge of rectangle. 
  4569.  
  4570.  
  4571. ΓòÉΓòÉΓòÉ <hidden> RECTL Field - yTop ΓòÉΓòÉΓòÉ
  4572.  
  4573.  yTop (LONG) 
  4574.     Y-coordinate of top edge of rectangle. 
  4575.  
  4576.  
  4577. ΓòÉΓòÉΓòÉ 1.53. RGNRECT ΓòÉΓòÉΓòÉ
  4578.  
  4579. Region-rectangle structure. 
  4580.  
  4581. Type
  4582.   RGNRECT = Record
  4583.     ircStart:    ULong;
  4584.     crc:         ULong;
  4585.     crcReturned: ULong;
  4586.     ulDirection: ULong;
  4587.   End;
  4588.  
  4589. Type
  4590.   PRGNRECT = ^RGNRECT;
  4591.  
  4592.  
  4593. ΓòÉΓòÉΓòÉ <hidden> RGNRECT Field - ircStart ΓòÉΓòÉΓòÉ
  4594.  
  4595.  ircStart (ULONG) 
  4596.     Rectangle number from which to start enumerating. 
  4597.  
  4598.     Numbering starts from 1. 
  4599.  
  4600.  
  4601. ΓòÉΓòÉΓòÉ <hidden> RGNRECT Field - crc ΓòÉΓòÉΓòÉ
  4602.  
  4603.  crc (ULONG) 
  4604.     Number of rectangles that can be returned. 
  4605.  
  4606.     This must be 1 or greater. 
  4607.  
  4608.  
  4609. ΓòÉΓòÉΓòÉ <hidden> RGNRECT Field - crcReturned ΓòÉΓòÉΓòÉ
  4610.  
  4611.  crcReturned (ULONG) 
  4612.     Number of rectangles returned. 
  4613.  
  4614.     A value of less than crc indicates that there are no more rectangles to 
  4615.     enumerate. 
  4616.  
  4617.  
  4618. ΓòÉΓòÉΓòÉ <hidden> RGNRECT Field - ulDirection ΓòÉΓòÉΓòÉ
  4619.  
  4620.  ulDirection (ULONG) 
  4621.     Direction in which the returned rectangles are to be ordered. 
  4622.  
  4623.     This ordering uses the leading edge of a rectangle: 
  4624.  
  4625.     RECTDIR_LFRT_TOPBOT           Left-to-right, top-to-bottom 
  4626.  
  4627.     RECTDIR_RTLF_TOPBOT           Right-to-left, top-to-bottom 
  4628.  
  4629.     RECTDIR_LFRT_BOTTOP           Left-to-right, bottom-to-top 
  4630.  
  4631.     RECTDIR_RTLF_BOTTOP           Right-to-left, bottom-to-top 
  4632.  
  4633.  
  4634. ΓòÉΓòÉΓòÉ 1.54. RGB ΓòÉΓòÉΓòÉ
  4635.  
  4636. RGB color value. 
  4637.  
  4638. Type
  4639.   RGB = Record
  4640.     bBlue:  Byte;
  4641.     bGreen: Byte;
  4642.     bRed:   Byte;
  4643.   End;
  4644.  
  4645. Not defined.
  4646.  
  4647.  
  4648. ΓòÉΓòÉΓòÉ <hidden> RGB Field - bBlue ΓòÉΓòÉΓòÉ
  4649.  
  4650.  bBlue (BYTE) 
  4651.     Blue component of the color definition. 
  4652.  
  4653.  
  4654. ΓòÉΓòÉΓòÉ <hidden> RGB Field - bGreen ΓòÉΓòÉΓòÉ
  4655.  
  4656.  bGreen (BYTE) 
  4657.     Green component of the color definition. 
  4658.  
  4659.  
  4660. ΓòÉΓòÉΓòÉ <hidden> RGB Field - bRed ΓòÉΓòÉΓòÉ
  4661.  
  4662.  bRed (BYTE) 
  4663.     Red component of the color definition. 
  4664.  
  4665.  
  4666. ΓòÉΓòÉΓòÉ 1.55. RGB2 ΓòÉΓòÉΓòÉ
  4667.  
  4668. RGB color value. 
  4669.  
  4670. Type
  4671.   RGB2 = Record
  4672.     bBlue:     Byte;            { Blue component of the color definition }
  4673.     bGreen:    Byte;            { Green component of the color definition}
  4674.     bRed:      Byte;            { Red component of the color definition  }
  4675.     fcOptions: Byte;            { Reserved, must be zero                 }
  4676.   End;
  4677.  
  4678. Type
  4679.   PRGB2 = ^RGB2;
  4680.  
  4681.  
  4682. ΓòÉΓòÉΓòÉ <hidden> RGB2 Field - bBlue ΓòÉΓòÉΓòÉ
  4683.  
  4684.  bBlue (BYTE) 
  4685.     Blue component of the color definition. 
  4686.  
  4687.  
  4688. ΓòÉΓòÉΓòÉ <hidden> RGB2 Field - bGreen ΓòÉΓòÉΓòÉ
  4689.  
  4690.  bGreen (BYTE) 
  4691.     Green component of the color definition. 
  4692.  
  4693.  
  4694. ΓòÉΓòÉΓòÉ <hidden> RGB2 Field - bRed ΓòÉΓòÉΓòÉ
  4695.  
  4696.  bRed (BYTE) 
  4697.     Red component of the color definition. 
  4698.  
  4699.  
  4700. ΓòÉΓòÉΓòÉ <hidden> RGB2 Field - fcOptions ΓòÉΓòÉΓòÉ
  4701.  
  4702.  fcOptions (BYTE) 
  4703.     Entry options. 
  4704.  
  4705.     These can be ORed together if required: 
  4706.  
  4707.     PC_RESERVED         The color entry is reserved for animating color with 
  4708.                         the palette manager. 
  4709.  
  4710.     PC_EXPLICIT         The low-order word of the color table entry designates 
  4711.                         a physical palette slot. This allows an application to 
  4712.                         show the actual contents of the device palette as 
  4713.                         realized for other logical palettes. This does not 
  4714.                         prevent the color in the slot from being changed for 
  4715.                         any reason. 
  4716.  
  4717.  
  4718. ΓòÉΓòÉΓòÉ 1.56. SIZEF ΓòÉΓòÉΓòÉ
  4719.  
  4720. Size structure (FIXED values). 
  4721.  
  4722. Type
  4723.   SIZEF = Record
  4724.     cx: Fixed;
  4725.     cy: Fixed;
  4726.   End;
  4727.  
  4728. Type
  4729.   PSIZEF = ^SIZEF;
  4730.  
  4731.  
  4732. ΓòÉΓòÉΓòÉ <hidden> SIZEF Field - cx ΓòÉΓòÉΓòÉ
  4733.  
  4734.  cx (FIXED) 
  4735.     Width. 
  4736.  
  4737.  
  4738. ΓòÉΓòÉΓòÉ <hidden> SIZEF Field - cy ΓòÉΓòÉΓòÉ
  4739.  
  4740.  cy (FIXED) 
  4741.     Height. 
  4742.  
  4743.  
  4744. ΓòÉΓòÉΓòÉ 1.57. SIZEL ΓòÉΓòÉΓòÉ
  4745.  
  4746. Size structure (LONG values). 
  4747.  
  4748. Type
  4749.   SIZEL = Record
  4750.     cx: Long;
  4751.     cy: Long;
  4752.   End;
  4753.  
  4754. Type
  4755.   PSIZEL = ^SIZEL;
  4756.  
  4757.  
  4758. ΓòÉΓòÉΓòÉ <hidden> SIZEL Field - cx ΓòÉΓòÉΓòÉ
  4759.  
  4760.  cx (LONG) 
  4761.     Width. 
  4762.  
  4763.  
  4764. ΓòÉΓòÉΓòÉ <hidden> SIZEL Field - cy ΓòÉΓòÉΓòÉ
  4765.  
  4766.  cy (LONG) 
  4767.     Height. 
  4768.  
  4769.  
  4770. ΓòÉΓòÉΓòÉ 1.58. SHORT ΓòÉΓòÉΓòÉ
  4771.  
  4772. Signed integer in the range -32 768 through 32 767. 
  4773.  
  4774.  
  4775. ΓòÉΓòÉΓòÉ 1.59. STR8 ΓòÉΓòÉΓòÉ
  4776.  
  4777. String of 8 characters. 
  4778.  
  4779. Not defined.
  4780.  
  4781.  
  4782. ΓòÉΓòÉΓòÉ 1.60. ULONG ΓòÉΓòÉΓòÉ
  4783.  
  4784. Unsigned integer in the range 0 through 4 294 967 295. 
  4785.  
  4786. Type
  4787.   ULONG   = LONGINT;
  4788.  
  4789.  
  4790. ΓòÉΓòÉΓòÉ 1.61. USHORT ΓòÉΓòÉΓòÉ
  4791.  
  4792. Unsigned integer in the range 0 through 65 535. 
  4793.  
  4794. Type
  4795.   USHORT  = WORD;
  4796.  
  4797.  
  4798. ΓòÉΓòÉΓòÉ 2. Graphics Orders ΓòÉΓòÉΓòÉ
  4799.  
  4800. This section describes the format of the graphics orders. 
  4801.  
  4802. Graphics orders are used in the following circumstances: 
  4803.  
  4804.      Using GpiGetData or GpiPutData functions for bulk transfer of part or all 
  4805.       of graphics segment data (unless this is simply being copied without 
  4806.       being changed). 
  4807.  
  4808.      Editing segments with GpiQueryElement and GpiElement. 
  4809.  
  4810.      Generating metafiles (other than through the Presentation Manager API), 
  4811.       or examining their contents. The data part of Graphics Data structured 
  4812.       fields within the metafile (see "Metafile Data Format" in the 
  4813.       Presentation Manager Programming Reference) consists of graphics orders. 
  4814.  
  4815.  When primitive or attribute functions (plus certain other functions) are 
  4816.  specified at the programming interface, and the drawing mode (see 
  4817.  GpiSetDrawingMode) is set to drawandretain, graphics orders are constructed 
  4818.  and placed in the current graphics segment. One API call often causes a single 
  4819.  order to be generated. Sometimes, however, several orders are necessary: an 
  4820.  example of this is where a GpiPolyLine call is issued, which specifies more 
  4821.  strokes than there is room for, in a single order. 
  4822.  
  4823.  In either case, the order or orders generated by a single API call comprise a 
  4824.  single element, unless the application specifically starts an element using 
  4825.  the GpiBeginElement function. In this case the element consists of all of the 
  4826.  orders generated between this and the following GpiEndElement function. A 
  4827.  GpiQueryElement function returns the orders that comprise an element; the 
  4828.  application may edit these, and return them to the segment with GpiElement. 
  4829.  The Begin Element - End Element orders that surround a multi-order element in 
  4830.  the segment are never passed between the application and the system on 
  4831.  GpiQueryElement and GpiElement functions. 
  4832.  
  4833.  No double word or word alignment can be assumed for orders either within 
  4834.  segments or during editing. 
  4835.  
  4836.  
  4837. ΓòÉΓòÉΓòÉ 2.1. Introduction to Graphics Orders ΓòÉΓòÉΓòÉ
  4838.  
  4839. In the retain and draw-and-retain drawing modes, specific GPI functions 
  4840. (primitive-drawing and attribute-setting functions, plus some others) cause 
  4841. graphics orders to be stored in the current segment. A graphics order is a 
  4842. sequence of one or more bytes of data that describe a graphics function. There 
  4843. is typically a one-to-one correspondence between a GPI function and a graphics 
  4844. order. You do not need to understand the various formats and contents of the 
  4845. graphics orders, unless: 
  4846.  
  4847.      You are using GpiGetData or GpiPutData for bulk transfer of data that you 
  4848.       want to edit. 
  4849.  
  4850.      You are simply copying data from one segment to another. 
  4851.  
  4852.      You are using GpiElement to add data to a segment, or GpiQueryElement to 
  4853.       retrieve data from a segment. 
  4854.  
  4855.      You are examining the contents of a metafile. 
  4856.  
  4857.  Both the graphics orders and the metafile structure are described in the 
  4858.  Presentation Manager. This appendix describes the header file PMORD.H, which 
  4859.  has been provided to allow you to manipulate the graphics orders more easily. 
  4860.  
  4861.  
  4862. ΓòÉΓòÉΓòÉ 2.1.1. The Graphics-Orders Header File (PMORD.H) ΓòÉΓòÉΓòÉ
  4863.  
  4864. A set of helper constants, macros, and structures has been provided to help you 
  4865. decode and encode graphics orders. These items are defined in the header file 
  4866. PMORD.H. 
  4867.  
  4868. There are four types of graphics orders. The first byte of each order, 
  4869. regardless of the graphics-order type, is the order code itself, which either 
  4870. partially or completely describes what follows. Depending on the order type, 
  4871. the graphics order can contain further information. 
  4872.  
  4873. The four types of graphics order are: 
  4874.  
  4875.  1-Byte Order 
  4876.        The 1-byte order comprises a single byte: 
  4877.  
  4878.               BYTE 1 : order code.
  4879.  
  4880.  2-Byte Order 
  4881.        The 2-byte order consists of two bytes: 
  4882.  
  4883.               BYTE 1 : order code
  4884.               BYTE 2 : associated value.
  4885.  
  4886.  Long Order 
  4887.        The long order can comprise up to 257 bytes of information: 
  4888.  
  4889.               BYTE 1     : order code
  4890.               BYTE 2     : length of order (0 to 255)
  4891.               BYTE 3     -257 : associated value bytes
  4892.                            depending on the order code.
  4893.  
  4894.        There is a special long order (Escape) where: 
  4895.  
  4896.               BYTE 3     : escape type
  4897.               BYTE 4     : escape identifier
  4898.               BYTE 5     -257 : associated value bytes
  4899.                            depending on the escape
  4900.                            identifier.
  4901.  
  4902.  Very Long Order 
  4903.        The very long order can comprise up to 65537 bytes of information: 
  4904.  
  4905.               BYTE 1       : order code
  4906.               BYTE 2       : order qualifier
  4907.               BYTE 3       : length of order
  4908.                              (most significant byte)
  4909.               BYTE 4       : length of order
  4910.                              (least significant byte -
  4911.                               length of order is 0 to 65535)
  4912.               BYTE 5     -65537 : associated value bytes
  4913.                              depending on the order
  4914.                              qualifier.
  4915.  
  4916.        There is a special very long order (Escape) where : 
  4917.  
  4918.               BYTE 5       : escape type
  4919.               BYTE 6       : escape identifier
  4920.               BYTE 7     -65537 : associated value bytes
  4921.                              depending on the escape
  4922.                              identifier.
  4923.  
  4924.  
  4925.  Decoding Graphics Orders 
  4926.  
  4927.  The recommended way of decoding a buffer of graphics orders (in C language) is 
  4928.  to use a pointer to address the first byte of the buffer, and then retrieve 
  4929.  the graphics order it contains. To discover which of the four types of order 
  4930.  you have, use the following macros: 
  4931.  
  4932.      BYTE_ORDER  (1-byte order) 
  4933.  
  4934.      SHORT_ORDER  (2-byte order) 
  4935.  
  4936.      LONG_ORDER  (long order) 
  4937.  
  4938.      VLONG_ORDER  (very long order). 
  4939.  These macros are defined in the header file PMORD.H. Each macro processes a 
  4940.  single byte of data and returns a Boolean value (zero or nonzero). A zero 
  4941.  value means that the order is not of that type. When you know the 
  4942.  graphics-order type, you can establish the length of the order, and add the 
  4943.  length to the pointer. You can then retrieve the next order in the buffer, and 
  4944.  repeat the process until all data has been retrieved. 
  4945.  
  4946.  You can decode the graphics-order data itself by providing a routine for each 
  4947.  of the order types, or a routine for each individual order: 
  4948.  
  4949.      For a 1-byte graphic order, the decoding routine should simply return a 
  4950.       length of 1. 
  4951.  
  4952.      For a 2-byte graphic order, the decoding routine can use the overlay 
  4953.       structure ORDER to decode the data. The routine should return a length of 
  4954.       2. 
  4955.  
  4956.      For a long order, the decoding routine can use the overlay structure 
  4957.       LORDER to decode the data. The length of the data is a variable value. 
  4958.  
  4959.      For a very long order, the decoding routine can use the overlay structure 
  4960.       VORDER to decode the data. The length of the data is a variable value. 
  4961.  
  4962.  The overlay structures ORDER, LORDER, and VORDER are defined in the header 
  4963.  file PMORD.H. 
  4964.  
  4965.  You can build graphics orders using the same structures and order types that 
  4966.  are used for decoding graphics orders. 
  4967.  Naming Conventions 
  4968.  
  4969.  The names of the graphics-order codes are in the form OCODE_Gxxx. The Gxxx 
  4970.  abbreviation is the name of the individual order, and can be used for types, 
  4971.  structures, and constants directly related to that order. In the header file, 
  4972.  there is a comment on the same line as each of the orders that describes the 
  4973.  order. For example, the Begin Area order (GBAR) is described in the header 
  4974.  file as follows: 
  4975.  
  4976.  Note: 
  4977.  
  4978.  In some structures, an S or an L is added to the name to differentiate between 
  4979.  the short-coordinate form (16-bit) and the long-coordinate form (32-bit). For 
  4980.  example, the Set Arc Parameters order (GSAP) is as follows: 
  4981.  
  4982.  
  4983.      typedef struct _ORDERS_GSAP {
  4984.        SHORT  p;
  4985.        SHORT  q;
  4986.        SHORT  r;
  4987.        SHORT  s;
  4988.      } ORDERS_GSAP;
  4989.  
  4990.      typedef struct _ORDERL_GSAP {
  4991.        LONG   p;
  4992.        LONG   q;
  4993.        LONG   r;
  4994.        LONG   s;
  4995.      } ORDERL_GSAP;
  4996.  
  4997.  In this example, the structures ORDERS_GSAP and ORDERL_GSAP are shared by GSAP 
  4998.  (set arc parameters) and GPSAP (push and set arc parameters). As a rule, there 
  4999.  is structure sharing between the set and push-and-set forms of graphics 
  5000.  orders. 
  5001.  
  5002.  There is structure-sharing between the current-position and the given-position 
  5003.  forms of some orders. For example, the orders GCARC (arc at current position) 
  5004.  and GARC (arc at given position) share a structure. 
  5005.  
  5006.  
  5007. ΓòÉΓòÉΓòÉ 2.2. Arc at a Given Position/Arc at Current Position ΓòÉΓòÉΓòÉ
  5008.  
  5009.  
  5010. ΓòÉΓòÉΓòÉ <hidden> Arc at a Given Position/Arc at Current Position - Syntax ΓòÉΓòÉΓòÉ
  5011.  
  5012. This order constructs an arc starting at a given position. 
  5013.  
  5014. Arc at a Given Position (GARC) 
  5015. X'C6' (LEN, P0, P1, P2) 
  5016.  
  5017. Arc at Current Position (GCARC) 
  5018. X'86' (LEN, P1, P2) 
  5019.  
  5020.  
  5021. ΓòÉΓòÉΓòÉ <hidden> GARC/GCARC Parameter - LEN ΓòÉΓòÉΓòÉ
  5022.  
  5023.  LEN (GLENGTH1) 
  5024.     Length of following data. 
  5025.  
  5026.  
  5027. ΓòÉΓòÉΓòÉ <hidden> GARC/GCARC Parameter - P0 ΓòÉΓòÉΓòÉ
  5028.  
  5029.  P0 (GPOINT) 
  5030.     Coordinate data of start point. 
  5031.  
  5032.     This parameter is only present in a Arc at a Given Position order. 
  5033.  
  5034.  
  5035. ΓòÉΓòÉΓòÉ <hidden> GARC/GCARC Parameter - P1 ΓòÉΓòÉΓòÉ
  5036.  
  5037.  P1 (GPOINT) 
  5038.     Coordinate data of intermediate point. 
  5039.  
  5040.  
  5041. ΓòÉΓòÉΓòÉ <hidden> GARC/GCARC Parameter - P2 ΓòÉΓòÉΓòÉ
  5042.  
  5043.  P2 (GPOINT) 
  5044.     Coordinate data of end point. 
  5045.  
  5046.  
  5047. ΓòÉΓòÉΓòÉ <hidden> Arc at a Given Position/Arc at Current Position - Parameters ΓòÉΓòÉΓòÉ
  5048.  
  5049.  LEN (GLENGTH1) 
  5050.     Length of following data. 
  5051.  
  5052.  P0 (GPOINT) 
  5053.     Coordinate data of start point. 
  5054.  
  5055.     This parameter is only present in a Arc at a Given Position order. 
  5056.  
  5057.  P1 (GPOINT) 
  5058.     Coordinate data of intermediate point. 
  5059.  
  5060.  P2 (GPOINT) 
  5061.     Coordinate data of end point. 
  5062.  
  5063.  
  5064. ΓòÉΓòÉΓòÉ <hidden> Arc at a Given Position/Arc at Current Position - Topics ΓòÉΓòÉΓòÉ
  5065.  
  5066. Select an item: 
  5067.  
  5068. Syntax
  5069. Parameters
  5070. Glossary
  5071.  
  5072.  
  5073. ΓòÉΓòÉΓòÉ 2.3. Begin Area ΓòÉΓòÉΓòÉ
  5074.  
  5075.  
  5076. ΓòÉΓòÉΓòÉ <hidden> Begin Area - Syntax ΓòÉΓòÉΓòÉ
  5077.  
  5078. This order indicates the start of a set of primitives that define an area 
  5079. boundary. 
  5080.  
  5081. Begin Area (GBAR) 
  5082. X'68' (FLAGS) 
  5083.  
  5084.  
  5085. ΓòÉΓòÉΓòÉ <hidden> GBAR Parameter - FLAGS ΓòÉΓòÉΓòÉ
  5086.  
  5087.  FLAGS 
  5088.     Internal flags. 
  5089.  
  5090.     RES1 (GBIT1) 
  5091.              Reserved for migration: 
  5092.  
  5093.              1       Only valid value. 
  5094.  
  5095.     BOUNDARY (GBIT1) 
  5096.              Boundary-line draw indicator: 
  5097.  
  5098.              0       Do not draw boundary lines 
  5099.              1       Draw boundary lines. 
  5100.  
  5101.     INSIDE (GBIT1) 
  5102.              Mode shading: 
  5103.  
  5104.              0       Alternate mode 
  5105.              1       Winding mode. 
  5106.  
  5107.     RES2 (GBIT5) 
  5108.              Reserved value, must be 0. 
  5109.  
  5110.  
  5111. ΓòÉΓòÉΓòÉ <hidden> Begin Area - Parameters ΓòÉΓòÉΓòÉ
  5112.  
  5113.  FLAGS 
  5114.     Internal flags. 
  5115.  
  5116.     RES1 (GBIT1) 
  5117.              Reserved for migration: 
  5118.  
  5119.              1       Only valid value. 
  5120.  
  5121.     BOUNDARY (GBIT1) 
  5122.              Boundary-line draw indicator: 
  5123.  
  5124.              0       Do not draw boundary lines 
  5125.              1       Draw boundary lines. 
  5126.  
  5127.     INSIDE (GBIT1) 
  5128.              Mode shading: 
  5129.  
  5130.              0       Alternate mode 
  5131.              1       Winding mode. 
  5132.  
  5133.     RES2 (GBIT5) 
  5134.              Reserved value, must be 0. 
  5135.  
  5136.  
  5137. ΓòÉΓòÉΓòÉ <hidden> Begin Area - Topics ΓòÉΓòÉΓòÉ
  5138.  
  5139. Select an item: 
  5140.  
  5141. Syntax
  5142. Parameters
  5143. Glossary
  5144.  
  5145.  
  5146. ΓòÉΓòÉΓòÉ 2.4. Begin Element ΓòÉΓòÉΓòÉ
  5147.  
  5148.  
  5149. ΓòÉΓòÉΓòÉ <hidden> Begin Element - Syntax ΓòÉΓòÉΓòÉ
  5150.  
  5151. This order indicates the beginning of a set of primitives that define an 
  5152. element. 
  5153.  
  5154. Begin Element (GBEL) 
  5155. X'D2' (LEN, TYPE, DESCR) 
  5156.  
  5157.  
  5158. ΓòÉΓòÉΓòÉ <hidden> GBEL Parameter - LEN ΓòÉΓòÉΓòÉ
  5159.  
  5160.  LEN (GLENGTH1) 
  5161.     Length of following data. 
  5162.  
  5163.  
  5164. ΓòÉΓòÉΓòÉ <hidden> GBEL Parameter - TYPE ΓòÉΓòÉΓòÉ
  5165.  
  5166.  TYPE (GLONG) 
  5167.     Element type code. 
  5168.  
  5169.     Possible values are described in the following list: 
  5170.  
  5171.     0x0000FD01       Line bundle 
  5172.     0x0000FD02       Character bundle 
  5173.     0x0000FD03       Marker bundle 
  5174.     0x0000FD04       Area bundle 
  5175.     0x0000FD05       Image bundle 
  5176.     0x00000007       Call segment 
  5177.     0x00000081       Polyline 
  5178.     0x00000085       Polyfillet 
  5179.     0x000000A4       Polyfillet sharp 
  5180.     0x000000A5       Polyspline 
  5181.     0x00000082       Polymarker 
  5182.     0x00000087       Full arc 
  5183.     0x00000091       Image 
  5184.     0x000000B1       Character string at current position 
  5185.     0x000000F1       Character string at given position 
  5186.     0x81xxxxxx-0xFFxxxxxx Indicates user defined elements 
  5187.     Other            Reserved values. 
  5188.  
  5189.  
  5190. ΓòÉΓòÉΓòÉ <hidden> GBEL Parameter - DESCR ΓòÉΓòÉΓòÉ
  5191.  
  5192.  DESCR (GUNDF) 
  5193.     Element description data. 
  5194.  
  5195.     This is optional. 
  5196.  
  5197.  
  5198. ΓòÉΓòÉΓòÉ <hidden> Begin Element - Parameters ΓòÉΓòÉΓòÉ
  5199.  
  5200.  LEN (GLENGTH1) 
  5201.     Length of following data. 
  5202.  
  5203.  TYPE (GLONG) 
  5204.     Element type code. 
  5205.  
  5206.     Possible values are described in the following list: 
  5207.  
  5208.     0x0000FD01       Line bundle 
  5209.     0x0000FD02       Character bundle 
  5210.     0x0000FD03       Marker bundle 
  5211.     0x0000FD04       Area bundle 
  5212.     0x0000FD05       Image bundle 
  5213.     0x00000007       Call segment 
  5214.     0x00000081       Polyline 
  5215.     0x00000085       Polyfillet 
  5216.     0x000000A4       Polyfillet sharp 
  5217.     0x000000A5       Polyspline 
  5218.     0x00000082       Polymarker 
  5219.     0x00000087       Full arc 
  5220.     0x00000091       Image 
  5221.     0x000000B1       Character string at current position 
  5222.     0x000000F1       Character string at given position 
  5223.     0x81xxxxxx-0xFFxxxxxx Indicates user defined elements 
  5224.     Other            Reserved values. 
  5225.  
  5226.  DESCR (GUNDF) 
  5227.     Element description data. 
  5228.  
  5229.     This is optional. 
  5230.  
  5231.  
  5232. ΓòÉΓòÉΓòÉ <hidden> Begin Element - Topics ΓòÉΓòÉΓòÉ
  5233.  
  5234. Select an item: 
  5235.  
  5236. Syntax
  5237. Parameters
  5238. Glossary
  5239.  
  5240.  
  5241. ΓòÉΓòÉΓòÉ 2.5. Begin Image at Given Position/Begin Image at Current Position ΓòÉΓòÉΓòÉ
  5242.  
  5243.  
  5244. ΓòÉΓòÉΓòÉ <hidden> Begin Image at Given Position/Begin Image at Current Position - Syntax ΓòÉΓòÉΓòÉ
  5245.  
  5246. These orders identify the start of an image definition at a given position or 
  5247. at the current position. 
  5248.  
  5249. Begin Image at Given Position (GBIMG) 
  5250. X'D1' (LEN, P0, FORMAT, RES, WIDTH, HEIGHT) 
  5251.  
  5252. Begin Image at Current Position (GCBIMG) 
  5253. X'91' (LEN, FORMAT, RES, WIDTH, HEIGHT) 
  5254.  
  5255.  
  5256. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - LEN ΓòÉΓòÉΓòÉ
  5257.  
  5258.  LEN (GLENGTH1) 
  5259.     Length of following data. 
  5260.  
  5261.     0x06      Only valid value. 
  5262.  
  5263.  
  5264. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - P0 ΓòÉΓòÉΓòÉ
  5265.  
  5266.  P0 (GPOINT) 
  5267.     Point at which the image is to be placed. 
  5268.  
  5269.     This parameter is only present in a Begin Image at Given Position order. 
  5270.  
  5271.  
  5272. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - FORMAT ΓòÉΓòÉΓòÉ
  5273.  
  5274.  FORMAT (GBIT8) 
  5275.     Format of the image data. 
  5276.  
  5277.     0x00      One bit in the data represents one image point on the usable 
  5278.               area. 
  5279.  
  5280.  
  5281. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - RES ΓòÉΓòÉΓòÉ
  5282.  
  5283.  RES (GBIT8) 
  5284.     Reserved. 
  5285.  
  5286.     0x00      Only valid value. 
  5287.  
  5288.  
  5289. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - WIDTH ΓòÉΓòÉΓòÉ
  5290.  
  5291.  WIDTH (GUSHORT370) 
  5292.     Width of the image data. 
  5293.  
  5294.     This is the width in pels. 
  5295.  
  5296.     0x00-0x07     Valid range of values. 
  5297.  
  5298.  
  5299. ΓòÉΓòÉΓòÉ <hidden> GBIMG/GCBIMG Parameter - HEIGHT ΓòÉΓòÉΓòÉ
  5300.  
  5301.  HEIGHT (GUSHORT370) 
  5302.     Height of the image data. 
  5303.  
  5304.     This is the height in pels. 
  5305.  
  5306.  
  5307. ΓòÉΓòÉΓòÉ <hidden> Begin Image at Given Position/Begin Image at Current Position - Parameters ΓòÉΓòÉΓòÉ
  5308.  
  5309.  LEN (GLENGTH1) 
  5310.     Length of following data. 
  5311.  
  5312.     0x06      Only valid value. 
  5313.  
  5314.  P0 (GPOINT) 
  5315.     Point at which the image is to be placed. 
  5316.  
  5317.     This parameter is only present in a Begin Image at Given Position order. 
  5318.  
  5319.  FORMAT (GBIT8) 
  5320.     Format of the image data. 
  5321.  
  5322.     0x00      One bit in the data represents one image point on the usable 
  5323.               area. 
  5324.  
  5325.  RES (GBIT8) 
  5326.     Reserved. 
  5327.  
  5328.     0x00      Only valid value. 
  5329.  
  5330.  WIDTH (GUSHORT370) 
  5331.     Width of the image data. 
  5332.  
  5333.     This is the width in pels. 
  5334.  
  5335.     0x00-0x07     Valid range of values. 
  5336.  
  5337.  HEIGHT (GUSHORT370) 
  5338.     Height of the image data. 
  5339.  
  5340.     This is the height in pels. 
  5341.  
  5342.  
  5343. ΓòÉΓòÉΓòÉ <hidden> Begin Image at Given Position/Begin Image at Current Position - Topics ΓòÉΓòÉΓòÉ
  5344.  
  5345. Select an item: 
  5346.  
  5347. Syntax
  5348. Parameters
  5349. Glossary
  5350.  
  5351.  
  5352. ΓòÉΓòÉΓòÉ 2.6. Begin Path ΓòÉΓòÉΓòÉ
  5353.  
  5354.  
  5355. ΓòÉΓòÉΓòÉ <hidden> Begin Path - Syntax ΓòÉΓòÉΓòÉ
  5356.  
  5357. This order sets the drawing process into path state. 
  5358.  
  5359. Begin Path (GBPTH) 
  5360. X'D0' (LEN, RES, PTHID) 
  5361.  
  5362.  
  5363. ΓòÉΓòÉΓòÉ <hidden> GBPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  5364.  
  5365.  LEN (GLENGTH1) 
  5366.     Length of following data. 
  5367.  
  5368.     0x06      Only valid value. 
  5369.  
  5370.  
  5371. ΓòÉΓòÉΓòÉ <hidden> GBPTH Parameter - RES ΓòÉΓòÉΓòÉ
  5372.  
  5373.  RES (GBIT16) 
  5374.     Reserved. 
  5375.  
  5376.     0x0000    Only valid value. 
  5377.  
  5378.  
  5379. ΓòÉΓòÉΓòÉ <hidden> GBPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  5380.  
  5381.  PTHID (GLONG) 
  5382.     Path identifier. 
  5383.  
  5384.     0x00000001-0xFFFFFFFF   Valid path identifiers. 
  5385.  
  5386.  
  5387. ΓòÉΓòÉΓòÉ <hidden> Begin Path - Parameters ΓòÉΓòÉΓòÉ
  5388.  
  5389.  LEN (GLENGTH1) 
  5390.     Length of following data. 
  5391.  
  5392.     0x06      Only valid value. 
  5393.  
  5394.  RES (GBIT16) 
  5395.     Reserved. 
  5396.  
  5397.     0x0000    Only valid value. 
  5398.  
  5399.  PTHID (GLONG) 
  5400.     Path identifier. 
  5401.  
  5402.     0x00000001-0xFFFFFFFF   Valid path identifiers. 
  5403.  
  5404.  
  5405. ΓòÉΓòÉΓòÉ <hidden> Begin Path - Topics ΓòÉΓòÉΓòÉ
  5406.  
  5407. Select an item: 
  5408.  
  5409. Syntax
  5410. Parameters
  5411. Glossary
  5412.  
  5413.  
  5414. ΓòÉΓòÉΓòÉ 2.7. Bezier Curve at Given Position/Bezier Curve at Current Poition ΓòÉΓòÉΓòÉ
  5415.  
  5416.  
  5417. ΓòÉΓòÉΓòÉ <hidden> Bezier Curve at Given Position/Bezier Curve at Current Poition - Syntax ΓòÉΓòÉΓòÉ
  5418.  
  5419. This order generates a curve that starts at a given position. 
  5420.  
  5421. Bezier Curve at Given Position (GBEZ) 
  5422. X'E5' (LEN, P0, P1, P2, P3, P4, P5, P6, PN-2, PN-1, PN) 
  5423.  
  5424. Bezier Curve at Current Poition (GCBEZ) 
  5425. X'A5' (LEN, P1, P2, P3, P4, P5, P6, PN-2, PN-1, PN) 
  5426.  
  5427.  
  5428. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - LEN ΓòÉΓòÉΓòÉ
  5429.  
  5430.  LEN (GLENGTH1) 
  5431.     Length of following data. 
  5432.  
  5433.  
  5434. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P0 ΓòÉΓòÉΓòÉ
  5435.  
  5436.  P0 (GPOINT) 
  5437.     Coordinate data of first curve start. 
  5438.  
  5439.     This parameter is only present in a Bezier Curve at Given Position order. 
  5440.  
  5441.  
  5442. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P1 ΓòÉΓòÉΓòÉ
  5443.  
  5444.  P1 (GPOINT) 
  5445.     Coordinate data of first curve, first control point. 
  5446.  
  5447.  
  5448. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P2 ΓòÉΓòÉΓòÉ
  5449.  
  5450.  P2 (GPOINT) 
  5451.     Coordinate data of first curve, second control point. 
  5452.  
  5453.  
  5454. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P3 ΓòÉΓòÉΓòÉ
  5455.  
  5456.  P3 (GPOINT) 
  5457.     Coordinate data of first curve end. 
  5458.  
  5459.  
  5460. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P4 ΓòÉΓòÉΓòÉ
  5461.  
  5462.  P4 (GPOINT) 
  5463.     Coordinate data of second curve, first control point 
  5464.  
  5465.  
  5466. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P5 ΓòÉΓòÉΓòÉ
  5467.  
  5468.  P5 (GPOINT) 
  5469.     Coordinate data of second curve, second control point 
  5470.  
  5471.  
  5472. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - P6 ΓòÉΓòÉΓòÉ
  5473.  
  5474.  P6 (GPOINT) 
  5475.     Coordinate data of second curve end. 
  5476.  
  5477.  
  5478. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - PN-2 ΓòÉΓòÉΓòÉ
  5479.  
  5480.  PN-2 (GPOINT) 
  5481.     Coordinate data of final curve, first control point 
  5482.  
  5483.  
  5484. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - PN-1 ΓòÉΓòÉΓòÉ
  5485.  
  5486.  PN-1 (GPOINT) 
  5487.     Coordinate data of final curve, second control point 
  5488.  
  5489.  
  5490. ΓòÉΓòÉΓòÉ <hidden> GBEZ/GCBEZ Parameter - PN ΓòÉΓòÉΓòÉ
  5491.  
  5492.  PN (GPOINT) 
  5493.     Coordinate data of final curve end. 
  5494.  
  5495.  
  5496. ΓòÉΓòÉΓòÉ <hidden> Bezier Curve at Given Position/Bezier Curve at Current Poition - Parameters ΓòÉΓòÉΓòÉ
  5497.  
  5498.  LEN (GLENGTH1) 
  5499.     Length of following data. 
  5500.  
  5501.  P0 (GPOINT) 
  5502.     Coordinate data of first curve start. 
  5503.  
  5504.     This parameter is only present in a Bezier Curve at Given Position order. 
  5505.  
  5506.  P1 (GPOINT) 
  5507.     Coordinate data of first curve, first control point. 
  5508.  
  5509.  P2 (GPOINT) 
  5510.     Coordinate data of first curve, second control point. 
  5511.  
  5512.  P3 (GPOINT) 
  5513.     Coordinate data of first curve end. 
  5514.  
  5515.  P4 (GPOINT) 
  5516.     Coordinate data of second curve, first control point 
  5517.  
  5518.  P5 (GPOINT) 
  5519.     Coordinate data of second curve, second control point 
  5520.  
  5521.  P6 (GPOINT) 
  5522.     Coordinate data of second curve end. 
  5523.  
  5524.  PN-2 (GPOINT) 
  5525.     Coordinate data of final curve, first control point 
  5526.  
  5527.  PN-1 (GPOINT) 
  5528.     Coordinate data of final curve, second control point 
  5529.  
  5530.  PN (GPOINT) 
  5531.     Coordinate data of final curve end. 
  5532.  
  5533.  
  5534. ΓòÉΓòÉΓòÉ <hidden> Bezier Curve at Given Position/Bezier Curve at Current Poition - Topics ΓòÉΓòÉΓòÉ
  5535.  
  5536. Select an item: 
  5537.  
  5538. Syntax
  5539. Parameters
  5540. Glossary
  5541.  
  5542.  
  5543. ΓòÉΓòÉΓòÉ 2.8. Bitblt ΓòÉΓòÉΓòÉ
  5544.  
  5545.  
  5546. ΓòÉΓòÉΓòÉ <hidden> Bitblt - Syntax ΓòÉΓòÉΓòÉ
  5547.  
  5548. This order copies a rectangle of a bit map into DOCS. 
  5549.  
  5550. Bitblt (GBBLT) 
  5551. X'D6' (LEN, FLAGS, MIX, BMID, TRANS, P1, P2, SOURCE1X, SOURCE1Y, SOURCE2X, 
  5552. SOURCE2Y) 
  5553.  
  5554.  
  5555. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - LEN ΓòÉΓòÉΓòÉ
  5556.  
  5557.  LEN (GLENGTH1) 
  5558.     Length of following data. 
  5559.  
  5560.  
  5561. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - FLAGS ΓòÉΓòÉΓòÉ
  5562.  
  5563.  FLAGS (GBIT16) 
  5564.     Reserved. 
  5565.  
  5566.     0x0000      Only valid value. 
  5567.  
  5568.  
  5569. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - MIX ΓòÉΓòÉΓòÉ
  5570.  
  5571.  MIX (GBIT16) 
  5572.     Mix mode. 
  5573.  
  5574.     Values are: 
  5575.  
  5576.     0x00CC      Source. 
  5577.     0x00C0      Source and pattern. 
  5578.     0x00CA      Source where pattern1 
  5579.     0x000C      Source where pattern0 
  5580.     0x00E2      Pattern where source1 
  5581.     0x00B8      Pattern where source0 
  5582.     Other       Reserved values. 
  5583.  
  5584.  
  5585. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - BMID ΓòÉΓòÉΓòÉ
  5586.  
  5587.  BMID (GHBITMAP) 
  5588.     Bit-map identifier. 
  5589.  
  5590.  
  5591. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - TRANS ΓòÉΓòÉΓòÉ
  5592.  
  5593.  TRANS (GBIT32) 
  5594.     Transfer mode. 
  5595.  
  5596.     Values are: 
  5597.  
  5598.     0x00000000      OR 
  5599.     0x01000000      AND 
  5600.     0x02000000      Ignore 
  5601.     Other           Reserved values. 
  5602.  
  5603.  
  5604. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - P1 ΓòÉΓòÉΓòÉ
  5605.  
  5606.  P1 (GPOINT) 
  5607.     Target rectangle bottom-left corner. 
  5608.  
  5609.  
  5610. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - P2 ΓòÉΓòÉΓòÉ
  5611.  
  5612.  P2 (GPOINT) 
  5613.     Target rectangle top-right corner. 
  5614.  
  5615.  
  5616. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - SOURCE1X ΓòÉΓòÉΓòÉ
  5617.  
  5618.  SOURCE1X (GLONG) 
  5619.     Source rectangle bottom-left corner, x-coordinate. 
  5620.  
  5621.  
  5622. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - SOURCE1Y ΓòÉΓòÉΓòÉ
  5623.  
  5624.  SOURCE1Y (GLONG) 
  5625.     Source rectangle bottom-left corner, y-coordinate. 
  5626.  
  5627.  
  5628. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - SOURCE2X ΓòÉΓòÉΓòÉ
  5629.  
  5630.  SOURCE2X (GLONG) 
  5631.     Source rectangle top-right corner, x-coordinate. 
  5632.  
  5633.  
  5634. ΓòÉΓòÉΓòÉ <hidden> GBBLT Parameter - SOURCE2Y ΓòÉΓòÉΓòÉ
  5635.  
  5636.  SOURCE2Y (GLONG) 
  5637.     Source rectangle top-right corner, y-coordinate. 
  5638.  
  5639.  
  5640. ΓòÉΓòÉΓòÉ <hidden> Bitblt - Parameters ΓòÉΓòÉΓòÉ
  5641.  
  5642.  LEN (GLENGTH1) 
  5643.     Length of following data. 
  5644.  
  5645.  FLAGS (GBIT16) 
  5646.     Reserved. 
  5647.  
  5648.     0x0000      Only valid value. 
  5649.  
  5650.  MIX (GBIT16) 
  5651.     Mix mode. 
  5652.  
  5653.     Values are: 
  5654.  
  5655.     0x00CC      Source. 
  5656.     0x00C0      Source and pattern. 
  5657.     0x00CA      Source where pattern1 
  5658.     0x000C      Source where pattern0 
  5659.     0x00E2      Pattern where source1 
  5660.     0x00B8      Pattern where source0 
  5661.     Other       Reserved values. 
  5662.  
  5663.  BMID (GHBITMAP) 
  5664.     Bit-map identifier. 
  5665.  
  5666.  TRANS (GBIT32) 
  5667.     Transfer mode. 
  5668.  
  5669.     Values are: 
  5670.  
  5671.     0x00000000      OR 
  5672.     0x01000000      AND 
  5673.     0x02000000      Ignore 
  5674.     Other           Reserved values. 
  5675.  
  5676.  P1 (GPOINT) 
  5677.     Target rectangle bottom-left corner. 
  5678.  
  5679.  P2 (GPOINT) 
  5680.     Target rectangle top-right corner. 
  5681.  
  5682.  SOURCE1X (GLONG) 
  5683.     Source rectangle bottom-left corner, x-coordinate. 
  5684.  
  5685.  SOURCE1Y (GLONG) 
  5686.     Source rectangle bottom-left corner, y-coordinate. 
  5687.  
  5688.  SOURCE2X (GLONG) 
  5689.     Source rectangle top-right corner, x-coordinate. 
  5690.  
  5691.  SOURCE2Y (GLONG) 
  5692.     Source rectangle top-right corner, y-coordinate. 
  5693.  
  5694.  
  5695. ΓòÉΓòÉΓòÉ <hidden> Bitblt - Topics ΓòÉΓòÉΓòÉ
  5696.  
  5697. Select an item: 
  5698.  
  5699. Syntax
  5700. Parameters
  5701. Glossary
  5702.  
  5703.  
  5704. ΓòÉΓòÉΓòÉ 2.9. Box at Given Position/Box at Current Position ΓòÉΓòÉΓòÉ
  5705.  
  5706.  
  5707. ΓòÉΓòÉΓòÉ <hidden> Box at Given Position/Box at Current Position - Syntax ΓòÉΓòÉΓòÉ
  5708.  
  5709. This order defines a box with square or round corners, drawn with its first 
  5710. corner at a given position. 
  5711.  
  5712. Box at Given Position (GBOX) 
  5713. X'C0' (LEN, CONTROL, RES, P0, P1, HAXIS, VAXIS) 
  5714.  
  5715. Box at Current Position (GCBOX) 
  5716. X'80' (LEN, CONTROL, RES, P1, HAXIS, VAXIS) 
  5717.  
  5718.  
  5719. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - LEN ΓòÉΓòÉΓòÉ
  5720.  
  5721.  LEN (GLENGTH1) 
  5722.     Length of following data. 
  5723.  
  5724.  
  5725. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - CONTROL ΓòÉΓòÉΓòÉ
  5726.  
  5727.  CONTROL 
  5728.     Internal flags. 
  5729.  
  5730.     RES1 (GBIT1) 
  5731.              Reserved value, must be 0. 
  5732.  
  5733.     FILL (GBIT1) 
  5734.              Values: 
  5735.  
  5736.              0       No fill 
  5737.              1       Fill. 
  5738.  
  5739.     BOUNDARY (GBIT1) 
  5740.              Values: 
  5741.  
  5742.              0       No boundary 
  5743.              1       Boundary. 
  5744.  
  5745.     RES2 (GBIT5) 
  5746.              Reserved value, must be 0. 
  5747.  
  5748.  
  5749. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - RES ΓòÉΓòÉΓòÉ
  5750.  
  5751.  RES (GBIT8) 
  5752.     Reserved value, must be 0. 
  5753.  
  5754.  
  5755. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - P0 ΓòÉΓòÉΓòÉ
  5756.  
  5757.  P0 (GPOINT) 
  5758.     Coordinate data of box origin. 
  5759.  
  5760.     This parameter is only present in a Box at Given Position order. 
  5761.  
  5762.  
  5763. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - P1 ΓòÉΓòÉΓòÉ
  5764.  
  5765.  P1 (GPOINT) 
  5766.     Coordinate data of box corner. 
  5767.  
  5768.  
  5769. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - HAXIS ΓòÉΓòÉΓòÉ
  5770.  
  5771.  HAXIS (GROSOL) 
  5772.     Length of horizontal axis of ellipse. 
  5773.  
  5774.  
  5775. ΓòÉΓòÉΓòÉ <hidden> GBOX/GCBOX Parameter - VAXIS ΓòÉΓòÉΓòÉ
  5776.  
  5777.  VAXIS (GROSOL) 
  5778.     Length of vertical axis of ellipse. 
  5779.  
  5780.  
  5781. ΓòÉΓòÉΓòÉ <hidden> Box at Given Position/Box at Current Position - Parameters ΓòÉΓòÉΓòÉ
  5782.  
  5783.  LEN (GLENGTH1) 
  5784.     Length of following data. 
  5785.  
  5786.  CONTROL 
  5787.     Internal flags. 
  5788.  
  5789.     RES1 (GBIT1) 
  5790.              Reserved value, must be 0. 
  5791.  
  5792.     FILL (GBIT1) 
  5793.              Values: 
  5794.  
  5795.              0       No fill 
  5796.              1       Fill. 
  5797.  
  5798.     BOUNDARY (GBIT1) 
  5799.              Values: 
  5800.  
  5801.              0       No boundary 
  5802.              1       Boundary. 
  5803.  
  5804.     RES2 (GBIT5) 
  5805.              Reserved value, must be 0. 
  5806.  
  5807.  RES (GBIT8) 
  5808.     Reserved value, must be 0. 
  5809.  
  5810.  P0 (GPOINT) 
  5811.     Coordinate data of box origin. 
  5812.  
  5813.     This parameter is only present in a Box at Given Position order. 
  5814.  
  5815.  P1 (GPOINT) 
  5816.     Coordinate data of box corner. 
  5817.  
  5818.  HAXIS (GROSOL) 
  5819.     Length of horizontal axis of ellipse. 
  5820.  
  5821.  VAXIS (GROSOL) 
  5822.     Length of vertical axis of ellipse. 
  5823.  
  5824.  
  5825. ΓòÉΓòÉΓòÉ <hidden> Box at Given Position/Box at Current Position - Topics ΓòÉΓòÉΓòÉ
  5826.  
  5827. Select an item: 
  5828.  
  5829. Syntax
  5830. Parameters
  5831. Glossary
  5832.  
  5833.  
  5834. ΓòÉΓòÉΓòÉ 2.10. Call Segment ΓòÉΓòÉΓòÉ
  5835.  
  5836.  
  5837. ΓòÉΓòÉΓòÉ <hidden> Call Segment - Syntax ΓòÉΓòÉΓòÉ
  5838.  
  5839. This order calls one segment from another. 
  5840.  
  5841. Call Segment (GCALLS) 
  5842. X'07' (LEN, RES, SEGNAME) 
  5843.  
  5844.  
  5845. ΓòÉΓòÉΓòÉ <hidden> GCALLS Parameter - LEN ΓòÉΓòÉΓòÉ
  5846.  
  5847.  LEN (GLENGTH1) 
  5848.     Length of following data. 
  5849.  
  5850.     0x06      Only valid value. 
  5851.  
  5852.  
  5853. ΓòÉΓòÉΓòÉ <hidden> GCALLS Parameter - RES ΓòÉΓòÉΓòÉ
  5854.  
  5855.  RES (GBIT16) 
  5856.     Reserved value, must be 0. 
  5857.  
  5858.  
  5859. ΓòÉΓòÉΓòÉ <hidden> GCALLS Parameter - SEGNAME ΓòÉΓòÉΓòÉ
  5860.  
  5861.  SEGNAME (GLONG) 
  5862.     Name of segment that is to be called. 
  5863.  
  5864.     The name cannot be 0. 
  5865.  
  5866.  
  5867. ΓòÉΓòÉΓòÉ <hidden> Call Segment - Parameters ΓòÉΓòÉΓòÉ
  5868.  
  5869.  LEN (GLENGTH1) 
  5870.     Length of following data. 
  5871.  
  5872.     0x06      Only valid value. 
  5873.  
  5874.  RES (GBIT16) 
  5875.     Reserved value, must be 0. 
  5876.  
  5877.  SEGNAME (GLONG) 
  5878.     Name of segment that is to be called. 
  5879.  
  5880.     The name cannot be 0. 
  5881.  
  5882.  
  5883. ΓòÉΓòÉΓòÉ <hidden> Call Segment - Topics ΓòÉΓòÉΓòÉ
  5884.  
  5885. Select an item: 
  5886.  
  5887. Syntax
  5888. Parameters
  5889. Glossary
  5890.  
  5891.  
  5892. ΓòÉΓòÉΓòÉ 2.11. Character String at Given Position/Character String at Current Position ΓòÉΓòÉΓòÉ
  5893.  
  5894.  
  5895. ΓòÉΓòÉΓòÉ <hidden> Character String at Given Position/Character String at Current Position - Syntax ΓòÉΓòÉΓòÉ
  5896.  
  5897. These orders draw a character string at a given position or at the current 
  5898. position. 
  5899.  
  5900. Character String at Given Position (GCHST) 
  5901. X'C3' (LEN, P0, CP) 
  5902.  
  5903. Character String at Current Position (GCCHST) 
  5904. X'83' (LEN, CP) 
  5905.  
  5906.  
  5907. ΓòÉΓòÉΓòÉ <hidden> GCHST/GCCHST Parameter - LEN ΓòÉΓòÉΓòÉ
  5908.  
  5909.  LEN (GLENGTH1) 
  5910.     Length of following data. 
  5911.  
  5912.  
  5913. ΓòÉΓòÉΓòÉ <hidden> GCHST/GCCHST Parameter - P0 ΓòÉΓòÉΓòÉ
  5914.  
  5915.  P0 (GPOINT) 
  5916.     Point at which the character string is to be placed. 
  5917.  
  5918.     This parameter is only present in a Character String at Given Position 
  5919.     order. 
  5920.  
  5921.  
  5922. ΓòÉΓòÉΓòÉ <hidden> GCHST/GCCHST Parameter - CP ΓòÉΓòÉΓòÉ
  5923.  
  5924.  CP (GSTR) 
  5925.     Code points of each character in the string. 
  5926.  
  5927.  
  5928. ΓòÉΓòÉΓòÉ <hidden> Character String at Given Position/Character String at Current Position - Parameters ΓòÉΓòÉΓòÉ
  5929.  
  5930.  LEN (GLENGTH1) 
  5931.     Length of following data. 
  5932.  
  5933.  P0 (GPOINT) 
  5934.     Point at which the character string is to be placed. 
  5935.  
  5936.     This parameter is only present in a Character String at Given Position 
  5937.     order. 
  5938.  
  5939.  CP (GSTR) 
  5940.     Code points of each character in the string. 
  5941.  
  5942.  
  5943. ΓòÉΓòÉΓòÉ <hidden> Character String at Given Position/Character String at Current Position - Topics ΓòÉΓòÉΓòÉ
  5944.  
  5945. Select an item: 
  5946.  
  5947. Syntax
  5948. Parameters
  5949. Glossary
  5950.  
  5951.  
  5952. ΓòÉΓòÉΓòÉ 2.12. Character String Extended at Given Position/Character String Extended at Current Position ΓòÉΓòÉΓòÉ
  5953.  
  5954.  
  5955. ΓòÉΓòÉΓòÉ <hidden> Character String Extended at Given Position/Character String Extended at Current Position - Syntax ΓòÉΓòÉΓòÉ
  5956.  
  5957. This order defines a character string to be drawn at a given position. 
  5958.  
  5959. Character String Extended at Given Position (GCHSTE) 
  5960. X'FEF0' (LEN1, P0, FLAGS, RES, P1, P2, LEN2, CP, PAD, VECT) 
  5961.  
  5962. Character String Extended at Current Position (GCCHSTE) 
  5963. X'FEB0' (LEN1, FLAGS, RES, P1, P2, LEN2, CP, PAD, VECT) 
  5964.  
  5965.  
  5966. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - LEN1 ΓòÉΓòÉΓòÉ
  5967.  
  5968.  LEN1 (GLENGTH2) 
  5969.     Length of following data. 
  5970.  
  5971.  
  5972. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - P0 ΓòÉΓòÉΓòÉ
  5973.  
  5974.  P0 (GPOINT) 
  5975.     Point at which the character string is to be placed. 
  5976.  
  5977.     This parameter is only present in a Character String Extended at Given 
  5978.     Position order. 
  5979.  
  5980.  
  5981. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - FLAGS ΓòÉΓòÉΓòÉ
  5982.  
  5983.  FLAGS 
  5984.     Extra functions: 
  5985.  
  5986.     RECT (GBIT1) 
  5987.              Values: 
  5988.  
  5989.              0       Do not draw background rectangle 
  5990.              1       Draw background rectangle. 
  5991.  
  5992.     CLIP (GBIT1) 
  5993.              Values: 
  5994.  
  5995.              0       Do not clip to rectangle 
  5996.              1       Clip to rectangle. 
  5997.  
  5998.     RES1 (GBIT1) 
  5999.              Reserved value, must be 0. 
  6000.  
  6001.     LVCP (GBIT1) 
  6002.              Values: 
  6003.  
  6004.              0       Move current position 
  6005.              1       Leave current position. 
  6006.  
  6007.     RES2 (GBIT4) 
  6008.              Reserved value, must be 0. 
  6009.  
  6010.  
  6011. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - RES ΓòÉΓòÉΓòÉ
  6012.  
  6013.  RES (GBIT8) 
  6014.     Reserved value, must be 0. 
  6015.  
  6016.  
  6017. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - P1 ΓòÉΓòÉΓòÉ
  6018.  
  6019.  P1 (GPOINT) 
  6020.     Coordinate data of rectangle corner. 
  6021.  
  6022.  
  6023. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - P2 ΓòÉΓòÉΓòÉ
  6024.  
  6025.  P2 (GPOINT) 
  6026.     Coordinate data of rectangle corner. 
  6027.  
  6028.  
  6029. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - LEN2 ΓòÉΓòÉΓòÉ
  6030.  
  6031.  LEN2 (GLENGTH2) 
  6032.     Length of code-point data. 
  6033.  
  6034.  
  6035. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - CP ΓòÉΓòÉΓòÉ
  6036.  
  6037.  CP (GSTR) 
  6038.     Code-point data. 
  6039.  
  6040.  
  6041. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - PAD ΓòÉΓòÉΓòÉ
  6042.  
  6043.  PAD (GBIT8) 
  6044.     Pad byte. 
  6045.  
  6046.     Only needs to be included if CP is an odd number of bytes. 
  6047.  
  6048.  
  6049. ΓòÉΓòÉΓòÉ <hidden> GCHSTE/GCCHSTE Parameter - VECT ΓòÉΓòÉΓòÉ
  6050.  
  6051.  VECT (GROSOL) 
  6052.     IN (0) Vector of character increments. 
  6053.  
  6054.     VECT is a vector of n elements, where n is the number of code points 
  6055.     present in the CP parameter. 
  6056.  
  6057.  
  6058. ΓòÉΓòÉΓòÉ <hidden> Character String Extended at Given Position/Character String Extended at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6059.  
  6060.  LEN1 (GLENGTH2) 
  6061.     Length of following data. 
  6062.  
  6063.  P0 (GPOINT) 
  6064.     Point at which the character string is to be placed. 
  6065.  
  6066.     This parameter is only present in a Character String Extended at Given 
  6067.     Position order. 
  6068.  
  6069.  FLAGS 
  6070.     Extra functions: 
  6071.  
  6072.     RECT (GBIT1) 
  6073.              Values: 
  6074.  
  6075.              0       Do not draw background rectangle 
  6076.              1       Draw background rectangle. 
  6077.  
  6078.     CLIP (GBIT1) 
  6079.              Values: 
  6080.  
  6081.              0       Do not clip to rectangle 
  6082.              1       Clip to rectangle. 
  6083.  
  6084.     RES1 (GBIT1) 
  6085.              Reserved value, must be 0. 
  6086.  
  6087.     LVCP (GBIT1) 
  6088.              Values: 
  6089.  
  6090.              0       Move current position 
  6091.              1       Leave current position. 
  6092.  
  6093.     RES2 (GBIT4) 
  6094.              Reserved value, must be 0. 
  6095.  
  6096.  RES (GBIT8) 
  6097.     Reserved value, must be 0. 
  6098.  
  6099.  P1 (GPOINT) 
  6100.     Coordinate data of rectangle corner. 
  6101.  
  6102.  P2 (GPOINT) 
  6103.     Coordinate data of rectangle corner. 
  6104.  
  6105.  LEN2 (GLENGTH2) 
  6106.     Length of code-point data. 
  6107.  
  6108.  CP (GSTR) 
  6109.     Code-point data. 
  6110.  
  6111.  PAD (GBIT8) 
  6112.     Pad byte. 
  6113.  
  6114.     Only needs to be included if CP is an odd number of bytes. 
  6115.  
  6116.  VECT (GROSOL) 
  6117.     IN (0) Vector of character increments. 
  6118.  
  6119.     VECT is a vector of n elements, where n is the number of code points 
  6120.     present in the CP parameter. 
  6121.  
  6122.  
  6123. ΓòÉΓòÉΓòÉ <hidden> Character String Extended at Given Position/Character String Extended at Current Position - Topics ΓòÉΓòÉΓòÉ
  6124.  
  6125. Select an item: 
  6126.  
  6127. Syntax
  6128. Parameters
  6129. Glossary
  6130.  
  6131.  
  6132. ΓòÉΓòÉΓòÉ 2.13. Character String Move at Given Position/Character String Move at Current Position ΓòÉΓòÉΓòÉ
  6133.  
  6134.  
  6135. ΓòÉΓòÉΓòÉ <hidden> Character String Move at Given Position/Character String Move at Current Position - Syntax ΓòÉΓòÉΓòÉ
  6136.  
  6137. This order draws a character string starting from a given position and moves 
  6138. the current position to the end of the string. 
  6139.  
  6140. Character String Move at Given Position (GCHSTM) 
  6141. X'F1' (LEN, P0, CP) 
  6142.  
  6143. Character String Move at Current Position (GCCHSTM) 
  6144. X'B1' (LEN, CP) 
  6145.  
  6146.  
  6147. ΓòÉΓòÉΓòÉ <hidden> GCHSTM/GCCHSTM Parameter - LEN ΓòÉΓòÉΓòÉ
  6148.  
  6149.  LEN (GLENGTH1) 
  6150.     Length of following data. 
  6151.  
  6152.  
  6153. ΓòÉΓòÉΓòÉ <hidden> GCHSTM/GCCHSTM Parameter - P0 ΓòÉΓòÉΓòÉ
  6154.  
  6155.  P0 (GPOINT) 
  6156.     Point at which the character string is to be placed. 
  6157.  
  6158.     This parameter is only present in a Character String Move at Given Position 
  6159.     order. 
  6160.  
  6161.  
  6162. ΓòÉΓòÉΓòÉ <hidden> GCHSTM/GCCHSTM Parameter - CP ΓòÉΓòÉΓòÉ
  6163.  
  6164.  CP (GSTR) 
  6165.     Code points of each character in the string. 
  6166.  
  6167.  
  6168. ΓòÉΓòÉΓòÉ <hidden> Character String Move at Given Position/Character String Move at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6169.  
  6170.  LEN (GLENGTH1) 
  6171.     Length of following data. 
  6172.  
  6173.  P0 (GPOINT) 
  6174.     Point at which the character string is to be placed. 
  6175.  
  6176.     This parameter is only present in a Character String Move at Given Position 
  6177.     order. 
  6178.  
  6179.  CP (GSTR) 
  6180.     Code points of each character in the string. 
  6181.  
  6182.  
  6183. ΓòÉΓòÉΓòÉ <hidden> Character String Move at Given Position/Character String Move at Current Position - Topics ΓòÉΓòÉΓòÉ
  6184.  
  6185. Select an item: 
  6186.  
  6187. Syntax
  6188. Parameters
  6189. Glossary
  6190.  
  6191.  
  6192. ΓòÉΓòÉΓòÉ 2.14. Close Figure ΓòÉΓòÉΓòÉ
  6193.  
  6194.  
  6195. ΓòÉΓòÉΓòÉ <hidden> Close Figure - Syntax ΓòÉΓòÉΓòÉ
  6196.  
  6197. This order delimits the end of a closed figure. 
  6198.  
  6199. Close Figure (GCLFIG) 
  6200. X'7D' (RES) 
  6201.  
  6202.  
  6203. ΓòÉΓòÉΓòÉ <hidden> GCLFIG Parameter - RES ΓòÉΓòÉΓòÉ
  6204.  
  6205.  RES (GBIT8) 
  6206.     Reserved value, must be 0. 
  6207.  
  6208.  
  6209. ΓòÉΓòÉΓòÉ <hidden> Close Figure - Parameters ΓòÉΓòÉΓòÉ
  6210.  
  6211.  RES (GBIT8) 
  6212.     Reserved value, must be 0. 
  6213.  
  6214.  
  6215. ΓòÉΓòÉΓòÉ <hidden> Close Figure - Topics ΓòÉΓòÉΓòÉ
  6216.  
  6217. Select an item: 
  6218.  
  6219. Syntax
  6220. Parameters
  6221. Glossary
  6222.  
  6223.  
  6224. ΓòÉΓòÉΓòÉ 2.15. Comment ΓòÉΓòÉΓòÉ
  6225.  
  6226.  
  6227. ΓòÉΓòÉΓòÉ <hidden> Comment - Syntax ΓòÉΓòÉΓòÉ
  6228.  
  6229. This order enables data to be stored within a segment. 
  6230.  
  6231. Comment (GCOMT) 
  6232. X'01' (LEN, DATA[LEN]) 
  6233.  
  6234.  
  6235. ΓòÉΓòÉΓòÉ <hidden> GCOMT Parameter - LEN ΓòÉΓòÉΓòÉ
  6236.  
  6237.  LEN (GLENGTH1) 
  6238.     Length of following data. 
  6239.  
  6240.  
  6241. ΓòÉΓòÉΓòÉ <hidden> GCOMT Parameter - DATA[LEN] ΓòÉΓòÉΓòÉ
  6242.  
  6243.  DATA[LEN] (GBIT8) 
  6244.     Comment data. 
  6245.  
  6246.  
  6247. ΓòÉΓòÉΓòÉ <hidden> Comment - Parameters ΓòÉΓòÉΓòÉ
  6248.  
  6249.  LEN (GLENGTH1) 
  6250.     Length of following data. 
  6251.  
  6252.  DATA[LEN] (GBIT8) 
  6253.     Comment data. 
  6254.  
  6255.  
  6256. ΓòÉΓòÉΓòÉ <hidden> Comment - Remarks ΓòÉΓòÉΓòÉ
  6257.  
  6258. This order is treated as a no-operation. 
  6259.  
  6260.  
  6261. ΓòÉΓòÉΓòÉ <hidden> Comment - Topics ΓòÉΓòÉΓòÉ
  6262.  
  6263. Select an item: 
  6264.  
  6265. Syntax
  6266. Parameters
  6267. Remarks
  6268. Glossary
  6269.  
  6270.  
  6271. ΓòÉΓòÉΓòÉ 2.16. End Area ΓòÉΓòÉΓòÉ
  6272.  
  6273.  
  6274. ΓòÉΓòÉΓòÉ <hidden> End Area - Syntax ΓòÉΓòÉΓòÉ
  6275.  
  6276. This order indicates the end of a set of primitives that define an area 
  6277. boundary. 
  6278.  
  6279. End Area (GEAR) 
  6280. X'60' (LEN, DATA[LEN]) 
  6281.  
  6282.  
  6283. ΓòÉΓòÉΓòÉ <hidden> GEAR Parameter - LEN ΓòÉΓòÉΓòÉ
  6284.  
  6285.  LEN (GLENGTH1) 
  6286.     Length of following data.  It is normally 0. 
  6287.  
  6288.  
  6289. ΓòÉΓòÉΓòÉ <hidden> GEAR Parameter - DATA[LEN] ΓòÉΓòÉΓòÉ
  6290.  
  6291.  DATA[LEN] (GBIT8) 
  6292.     Reserved value, must be 0. 
  6293.  
  6294.  
  6295. ΓòÉΓòÉΓòÉ <hidden> End Area - Parameters ΓòÉΓòÉΓòÉ
  6296.  
  6297.  LEN (GLENGTH1) 
  6298.     Length of following data.  It is normally 0. 
  6299.  
  6300.  DATA[LEN] (GBIT8) 
  6301.     Reserved value, must be 0. 
  6302.  
  6303.  
  6304. ΓòÉΓòÉΓòÉ <hidden> End Area - Topics ΓòÉΓòÉΓòÉ
  6305.  
  6306. Select an item: 
  6307.  
  6308. Syntax
  6309. Parameters
  6310. Glossary
  6311.  
  6312.  
  6313. ΓòÉΓòÉΓòÉ 2.17. End Element ΓòÉΓòÉΓòÉ
  6314.  
  6315.  
  6316. ΓòÉΓòÉΓòÉ <hidden> End Element - Syntax ΓòÉΓòÉΓòÉ
  6317.  
  6318. This order identifies the end of a set of primitives that define an element. 
  6319.  
  6320. End Element (GEEL) 
  6321. X'49' (RES) 
  6322.  
  6323.  
  6324. ΓòÉΓòÉΓòÉ <hidden> GEEL Parameter - RES ΓòÉΓòÉΓòÉ
  6325.  
  6326.  RES (GBIT8) 
  6327.     Reserved value, must be 0. 
  6328.  
  6329.  
  6330. ΓòÉΓòÉΓòÉ <hidden> End Element - Parameters ΓòÉΓòÉΓòÉ
  6331.  
  6332.  RES (GBIT8) 
  6333.     Reserved value, must be 0. 
  6334.  
  6335.  
  6336. ΓòÉΓòÉΓòÉ <hidden> End Element - Topics ΓòÉΓòÉΓòÉ
  6337.  
  6338. Select an item: 
  6339.  
  6340. Syntax
  6341. Parameters
  6342. Glossary
  6343.  
  6344.  
  6345. ΓòÉΓòÉΓòÉ 2.18. End Image ΓòÉΓòÉΓòÉ
  6346.  
  6347.  
  6348. ΓòÉΓòÉΓòÉ <hidden> End Image - Syntax ΓòÉΓòÉΓòÉ
  6349.  
  6350. This order identifies the end of an image definition. 
  6351.  
  6352. End Image (GEIMG) 
  6353. X'93' (LEN, DATA[LEN]) 
  6354.  
  6355.  
  6356. ΓòÉΓòÉΓòÉ <hidden> GEIMG Parameter - LEN ΓòÉΓòÉΓòÉ
  6357.  
  6358.  LEN (GLENGTH1) 
  6359.     Length of following data.  It is normally 0. 
  6360.  
  6361.  
  6362. ΓòÉΓòÉΓòÉ <hidden> GEIMG Parameter - DATA[LEN] ΓòÉΓòÉΓòÉ
  6363.  
  6364.  DATA[LEN] (GBIT8) 
  6365.     Reserved value, must be 0. 
  6366.  
  6367.  
  6368. ΓòÉΓòÉΓòÉ <hidden> End Image - Parameters ΓòÉΓòÉΓòÉ
  6369.  
  6370.  LEN (GLENGTH1) 
  6371.     Length of following data.  It is normally 0. 
  6372.  
  6373.  DATA[LEN] (GBIT8) 
  6374.     Reserved value, must be 0. 
  6375.  
  6376.  
  6377. ΓòÉΓòÉΓòÉ <hidden> End Image - Topics ΓòÉΓòÉΓòÉ
  6378.  
  6379. Select an item: 
  6380.  
  6381. Syntax
  6382. Parameters
  6383. Glossary
  6384.  
  6385.  
  6386. ΓòÉΓòÉΓòÉ 2.19. End of Symbol Definition ΓòÉΓòÉΓòÉ
  6387.  
  6388.  
  6389. ΓòÉΓòÉΓòÉ <hidden> End of Symbol Definition - Syntax ΓòÉΓòÉΓòÉ
  6390.  
  6391. This order indicates the end of a set of orders defining a graphics symbol. 
  6392.  
  6393. End of Symbol Definition (GESD)
  6394. X'FF'
  6395.  
  6396.  
  6397. ΓòÉΓòÉΓòÉ <hidden> End of Symbol Definition - Remarks ΓòÉΓòÉΓòÉ
  6398.  
  6399. This order is only valid in the context of symbol definitions. 
  6400.  
  6401.  
  6402. ΓòÉΓòÉΓòÉ <hidden> End of Symbol Definition - Topics ΓòÉΓòÉΓòÉ
  6403.  
  6404. Select an item: 
  6405.  
  6406. Syntax
  6407. Remarks
  6408. Glossary
  6409.  
  6410.  
  6411. ΓòÉΓòÉΓòÉ 2.20. End Path ΓòÉΓòÉΓòÉ
  6412.  
  6413.  
  6414. ΓòÉΓòÉΓòÉ <hidden> End Path - Syntax ΓòÉΓòÉΓòÉ
  6415.  
  6416. This order ends the definition of a path. 
  6417.  
  6418. End Path (GEPTH) 
  6419. X'7F' (RES) 
  6420.  
  6421.  
  6422. ΓòÉΓòÉΓòÉ <hidden> GEPTH Parameter - RES ΓòÉΓòÉΓòÉ
  6423.  
  6424.  RES (GBIT8) 
  6425.     Reserved value, must be 0. 
  6426.  
  6427.  
  6428. ΓòÉΓòÉΓòÉ <hidden> End Path - Parameters ΓòÉΓòÉΓòÉ
  6429.  
  6430.  RES (GBIT8) 
  6431.     Reserved value, must be 0. 
  6432.  
  6433.  
  6434. ΓòÉΓòÉΓòÉ <hidden> End Path - Topics ΓòÉΓòÉΓòÉ
  6435.  
  6436. Select an item: 
  6437.  
  6438. Syntax
  6439. Parameters
  6440. Glossary
  6441.  
  6442.  
  6443. ΓòÉΓòÉΓòÉ 2.21. End Prolog ΓòÉΓòÉΓòÉ
  6444.  
  6445.  
  6446. ΓòÉΓòÉΓòÉ <hidden> End Prolog - Syntax ΓòÉΓòÉΓòÉ
  6447.  
  6448. This order indicates the end of the prolog of a segment. 
  6449.  
  6450. End Prolog (GEPROL) 
  6451. X'3E' (RES) 
  6452.  
  6453.  
  6454. ΓòÉΓòÉΓòÉ <hidden> GEPROL Parameter - RES ΓòÉΓòÉΓòÉ
  6455.  
  6456.  RES (GBIT8) 
  6457.     Reserved value, must be 0. 
  6458.  
  6459.  
  6460. ΓòÉΓòÉΓòÉ <hidden> End Prolog - Parameters ΓòÉΓòÉΓòÉ
  6461.  
  6462.  RES (GBIT8) 
  6463.     Reserved value, must be 0. 
  6464.  
  6465.  
  6466. ΓòÉΓòÉΓòÉ <hidden> End Prolog - Topics ΓòÉΓòÉΓòÉ
  6467.  
  6468. Select an item: 
  6469.  
  6470. Syntax
  6471. Parameters
  6472. Glossary
  6473.  
  6474.  
  6475. ΓòÉΓòÉΓòÉ 2.22. Escape ΓòÉΓòÉΓòÉ
  6476.  
  6477.  
  6478. ΓòÉΓòÉΓòÉ <hidden> Escape - Syntax ΓòÉΓòÉΓòÉ
  6479.  
  6480. This order provides facilities for registered and unregistered escape 
  6481. functions. 
  6482.  
  6483. Escape (GESCP) 
  6484. X'D5' (LEN, TYPE, RID, PARMS) 
  6485.  
  6486.  
  6487. ΓòÉΓòÉΓòÉ <hidden> GESCP Parameter - LEN ΓòÉΓòÉΓòÉ
  6488.  
  6489.  LEN (GLENGTH1) 
  6490.     Length of following data. 
  6491.  
  6492.  
  6493. ΓòÉΓòÉΓòÉ <hidden> GESCP Parameter - TYPE ΓòÉΓòÉΓòÉ
  6494.  
  6495.  TYPE (GBIT8) 
  6496.     Type identifier: 
  6497.  
  6498.     80         Registered value 
  6499.     Other      All other values are unregistered. 
  6500.  
  6501.  
  6502. ΓòÉΓòÉΓòÉ <hidden> GESCP Parameter - RID ΓòÉΓòÉΓòÉ
  6503.  
  6504.  RID (GBIT8) 
  6505.     Registered identifier: 
  6506.  
  6507.     01      Set pel. 
  6508.     02      BITBLT function. 
  6509.     03      Flood fill function. 
  6510.     04      Draw bits function. 
  6511.  
  6512.  
  6513. ΓòÉΓòÉΓòÉ <hidden> GESCP Parameter - PARMS ΓòÉΓòÉΓòÉ
  6514.  
  6515.  PARMS (GSTR) 
  6516.     Parameters of escape. 
  6517.  
  6518.  
  6519. ΓòÉΓòÉΓòÉ <hidden> Escape - Parameters ΓòÉΓòÉΓòÉ
  6520.  
  6521.  LEN (GLENGTH1) 
  6522.     Length of following data. 
  6523.  
  6524.  TYPE (GBIT8) 
  6525.     Type identifier: 
  6526.  
  6527.     80         Registered value 
  6528.     Other      All other values are unregistered. 
  6529.  
  6530.  RID (GBIT8) 
  6531.     Registered identifier: 
  6532.  
  6533.     01      Set pel. 
  6534.     02      BITBLT function. 
  6535.     03      Flood fill function. 
  6536.     04      Draw bits function. 
  6537.  
  6538.  PARMS (GSTR) 
  6539.     Parameters of escape. 
  6540.  
  6541.  
  6542. ΓòÉΓòÉΓòÉ <hidden> Escape - Topics ΓòÉΓòÉΓòÉ
  6543.  
  6544. Select an item: 
  6545.  
  6546. Syntax
  6547. Parameters
  6548. Glossary
  6549.  
  6550.  
  6551. ΓòÉΓòÉΓòÉ 2.23. Extended Escape ΓòÉΓòÉΓòÉ
  6552.  
  6553.  
  6554. ΓòÉΓòÉΓòÉ <hidden> Extended Escape - Syntax ΓòÉΓòÉΓòÉ
  6555.  
  6556. This order provides facilities for registered and unregistered escape 
  6557. functions. 
  6558.  
  6559. Extended Escape (GEESCP) 
  6560. X'FED5' (LEN, TYPE, RID, PARMS) 
  6561.  
  6562.  
  6563. ΓòÉΓòÉΓòÉ <hidden> GEESCP Parameter - LEN ΓòÉΓòÉΓòÉ
  6564.  
  6565.  LEN (GLENGTH2) 
  6566.     Length of following data. 
  6567.  
  6568.  
  6569. ΓòÉΓòÉΓòÉ <hidden> GEESCP Parameter - TYPE ΓòÉΓòÉΓòÉ
  6570.  
  6571.  TYPE (GBIT8) 
  6572.     Type identifier: 
  6573.  
  6574.     0x80       Registered value 
  6575.     Other      All other values are unregistered. 
  6576.  
  6577.  
  6578. ΓòÉΓòÉΓòÉ <hidden> GEESCP Parameter - RID ΓòÉΓòÉΓòÉ
  6579.  
  6580.  RID (GUCHAR) 
  6581.     Registered identifier. 
  6582.  
  6583.     No registered extended escapes are used by the OS/2* operating system. 
  6584.  
  6585.  
  6586. ΓòÉΓòÉΓòÉ <hidden> GEESCP Parameter - PARMS ΓòÉΓòÉΓòÉ
  6587.  
  6588.  PARMS (GSTR) 
  6589.     Parameters of escape. 
  6590.  
  6591.  
  6592. ΓòÉΓòÉΓòÉ <hidden> Extended Escape - Parameters ΓòÉΓòÉΓòÉ
  6593.  
  6594.  LEN (GLENGTH2) 
  6595.     Length of following data. 
  6596.  
  6597.  TYPE (GBIT8) 
  6598.     Type identifier: 
  6599.  
  6600.     0x80       Registered value 
  6601.     Other      All other values are unregistered. 
  6602.  
  6603.  RID (GUCHAR) 
  6604.     Registered identifier. 
  6605.  
  6606.     No registered extended escapes are used by the OS/2* operating system. 
  6607.  
  6608.  PARMS (GSTR) 
  6609.     Parameters of escape. 
  6610.  
  6611.  
  6612. ΓòÉΓòÉΓòÉ <hidden> Extended Escape - Topics ΓòÉΓòÉΓòÉ
  6613.  
  6614. Select an item: 
  6615.  
  6616. Syntax
  6617. Parameters
  6618. Glossary
  6619.  
  6620.  
  6621. ΓòÉΓòÉΓòÉ 2.24. Fill Path ΓòÉΓòÉΓòÉ
  6622.  
  6623.  
  6624. ΓòÉΓòÉΓòÉ <hidden> Fill Path - Syntax ΓòÉΓòÉΓòÉ
  6625.  
  6626. This order fills the interior of the specified path. 
  6627.  
  6628. Fill Path (GFPTH) 
  6629. X'D7' (LEN, FLAGS, RES, PTHID) 
  6630.  
  6631.  
  6632. ΓòÉΓòÉΓòÉ <hidden> GFPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  6633.  
  6634.  LEN (GLENGTH1) 
  6635.     Length of following data. 
  6636.  
  6637.     0x06    Only valid value. 
  6638.  
  6639.  
  6640. ΓòÉΓòÉΓòÉ <hidden> GFPTH Parameter - FLAGS ΓòÉΓòÉΓòÉ
  6641.  
  6642.  FLAGS 
  6643.     Extra functions: 
  6644.  
  6645.     RES1 (GBIT1) 
  6646.              Reserved value, must be 0. 
  6647.  
  6648.     INSIDE (GBIT1) 
  6649.              Values: 
  6650.  
  6651.              0       Alternate mode 
  6652.              1       Winding mode. 
  6653.  
  6654.     MOD (GBIT1) 
  6655.              Values: 
  6656.  
  6657.              0       Do not modify before filling 
  6658.              1       Modify path before filling. 
  6659.  
  6660.     RES2 (GBIT5) 
  6661.              Reserved value, must be 0. 
  6662.  
  6663.  
  6664. ΓòÉΓòÉΓòÉ <hidden> GFPTH Parameter - RES ΓòÉΓòÉΓòÉ
  6665.  
  6666.  RES (GBIT8) 
  6667.     Reserved value, must be 0. 
  6668.  
  6669.  
  6670. ΓòÉΓòÉΓòÉ <hidden> GFPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  6671.  
  6672.  PTHID (GLONG) 
  6673.     Path identifier. 
  6674.  
  6675.     0x00000001-0xFFFFFFFF Valid path identifiers. 
  6676.  
  6677.  
  6678. ΓòÉΓòÉΓòÉ <hidden> Fill Path - Parameters ΓòÉΓòÉΓòÉ
  6679.  
  6680.  LEN (GLENGTH1) 
  6681.     Length of following data. 
  6682.  
  6683.     0x06    Only valid value. 
  6684.  
  6685.  FLAGS 
  6686.     Extra functions: 
  6687.  
  6688.     RES1 (GBIT1) 
  6689.              Reserved value, must be 0. 
  6690.  
  6691.     INSIDE (GBIT1) 
  6692.              Values: 
  6693.  
  6694.              0       Alternate mode 
  6695.              1       Winding mode. 
  6696.  
  6697.     MOD (GBIT1) 
  6698.              Values: 
  6699.  
  6700.              0       Do not modify before filling 
  6701.              1       Modify path before filling. 
  6702.  
  6703.     RES2 (GBIT5) 
  6704.              Reserved value, must be 0. 
  6705.  
  6706.  RES (GBIT8) 
  6707.     Reserved value, must be 0. 
  6708.  
  6709.  PTHID (GLONG) 
  6710.     Path identifier. 
  6711.  
  6712.     0x00000001-0xFFFFFFFF Valid path identifiers. 
  6713.  
  6714.  
  6715. ΓòÉΓòÉΓòÉ <hidden> Fill Path - Topics ΓòÉΓòÉΓòÉ
  6716.  
  6717. Select an item: 
  6718.  
  6719. Syntax
  6720. Parameters
  6721. Glossary
  6722.  
  6723.  
  6724. ΓòÉΓòÉΓòÉ 2.25. Fillet at Given Position/Fillet at Current Position ΓòÉΓòÉΓòÉ
  6725.  
  6726.  
  6727. ΓòÉΓòÉΓòÉ <hidden> Fillet at Given Position/Fillet at Current Position - Syntax ΓòÉΓòÉΓòÉ
  6728.  
  6729. These orders draw a curved line tangential to a specified set of straight 
  6730. lines, at the given position or at the current position. 
  6731.  
  6732. Fillet at Given Position (GFLT) 
  6733. X'C5' (LEN, P0, P1, P2, PN) 
  6734.  
  6735. Fillet at Current Position (GCFLT) 
  6736. X'85' (LEN, P1, P2, PN) 
  6737.  
  6738.  
  6739. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - LEN ΓòÉΓòÉΓòÉ
  6740.  
  6741.  LEN (GLENGTH1) 
  6742.     Length of following data. 
  6743.  
  6744.  
  6745. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - P0 ΓòÉΓòÉΓòÉ
  6746.  
  6747.  P0 (GPOINT) 
  6748.     Coordinate data of line start. 
  6749.  
  6750.     This parameter is only present in a Fillet at Given Position order. 
  6751.  
  6752.  
  6753. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - P1 ΓòÉΓòÉΓòÉ
  6754.  
  6755.  P1 (GPOINT) 
  6756.     Coordinate data of first line end. 
  6757.  
  6758.  
  6759. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - P2 ΓòÉΓòÉΓòÉ
  6760.  
  6761.  P2 (GPOINT) 
  6762.     Coordinate data of second line end. 
  6763.  
  6764.  
  6765. ΓòÉΓòÉΓòÉ <hidden> GFLT/GCFLT Parameter - PN ΓòÉΓòÉΓòÉ
  6766.  
  6767.  PN (GPOINT) 
  6768.     Coordinate data of final line end. 
  6769.  
  6770.  
  6771. ΓòÉΓòÉΓòÉ <hidden> Fillet at Given Position/Fillet at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6772.  
  6773.  LEN (GLENGTH1) 
  6774.     Length of following data. 
  6775.  
  6776.  P0 (GPOINT) 
  6777.     Coordinate data of line start. 
  6778.  
  6779.     This parameter is only present in a Fillet at Given Position order. 
  6780.  
  6781.  P1 (GPOINT) 
  6782.     Coordinate data of first line end. 
  6783.  
  6784.  P2 (GPOINT) 
  6785.     Coordinate data of second line end. 
  6786.  
  6787.  PN (GPOINT) 
  6788.     Coordinate data of final line end. 
  6789.  
  6790.  
  6791. ΓòÉΓòÉΓòÉ <hidden> Fillet at Given Position/Fillet at Current Position - Topics ΓòÉΓòÉΓòÉ
  6792.  
  6793. Select an item: 
  6794.  
  6795. Syntax
  6796. Parameters
  6797. Glossary
  6798.  
  6799.  
  6800. ΓòÉΓòÉΓòÉ 2.26. Full Arc at Given Position/Full Arc at Current Position ΓòÉΓòÉΓòÉ
  6801.  
  6802.  
  6803. ΓòÉΓòÉΓòÉ <hidden> Full Arc at Given Position/Full Arc at Current Position - Syntax ΓòÉΓòÉΓòÉ
  6804.  
  6805. This order constructs a full circle or an ellipse, with the center at a given 
  6806. position. 
  6807.  
  6808. Full Arc at Given Position (GFARC) 
  6809. X'C7' (LEN, P0, M) 
  6810.  
  6811. Full Arc at Current Position (GCFARC) 
  6812. X'87' (LEN, M) 
  6813.  
  6814.  
  6815. ΓòÉΓòÉΓòÉ <hidden> GFARC/GCFARC Parameter - LEN ΓòÉΓòÉΓòÉ
  6816.  
  6817.  LEN (GLENGTH1) 
  6818.     Length of following data. 
  6819.  
  6820.  
  6821. ΓòÉΓòÉΓòÉ <hidden> GFARC/GCFARC Parameter - P0 ΓòÉΓòÉΓòÉ
  6822.  
  6823.  P0 (GPOINT) 
  6824.     Coordinate data of the center of the circle/ellipse. 
  6825.  
  6826.     This parameter is only present in a Full Arc at Given Position order. 
  6827.  
  6828.  
  6829. ΓòÉΓòÉΓòÉ <hidden> GFARC/GCFARC Parameter - M ΓòÉΓòÉΓòÉ
  6830.  
  6831.  M (GROFUFS) 
  6832.     Multiplier. 
  6833.  
  6834.  
  6835. ΓòÉΓòÉΓòÉ <hidden> Full Arc at Given Position/Full Arc at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6836.  
  6837.  LEN (GLENGTH1) 
  6838.     Length of following data. 
  6839.  
  6840.  P0 (GPOINT) 
  6841.     Coordinate data of the center of the circle/ellipse. 
  6842.  
  6843.     This parameter is only present in a Full Arc at Given Position order. 
  6844.  
  6845.  M (GROFUFS) 
  6846.     Multiplier. 
  6847.  
  6848.  
  6849. ΓòÉΓòÉΓòÉ <hidden> Full Arc at Given Position/Full Arc at Current Position - Topics ΓòÉΓòÉΓòÉ
  6850.  
  6851. Select an item: 
  6852.  
  6853. Syntax
  6854. Parameters
  6855. Glossary
  6856.  
  6857.  
  6858. ΓòÉΓòÉΓòÉ 2.27. Image Data ΓòÉΓòÉΓòÉ
  6859.  
  6860.  
  6861. ΓòÉΓòÉΓòÉ <hidden> Image Data - Syntax ΓòÉΓòÉΓòÉ
  6862.  
  6863. This order provides bit data for an image. 
  6864.  
  6865. Image Data (GIMD) 
  6866. X'92' (LEN, DATA[LEN]) 
  6867.  
  6868.  
  6869. ΓòÉΓòÉΓòÉ <hidden> GIMD Parameter - LEN ΓòÉΓòÉΓòÉ
  6870.  
  6871.  LEN (GLENGTH1) 
  6872.     Length of following data. 
  6873.  
  6874.  
  6875. ΓòÉΓòÉΓòÉ <hidden> GIMD Parameter - DATA[LEN] ΓòÉΓòÉΓòÉ
  6876.  
  6877.  DATA[LEN] (GBIT8) 
  6878.     Image data. 
  6879.  
  6880.  
  6881. ΓòÉΓòÉΓòÉ <hidden> Image Data - Parameters ΓòÉΓòÉΓòÉ
  6882.  
  6883.  LEN (GLENGTH1) 
  6884.     Length of following data. 
  6885.  
  6886.  DATA[LEN] (GBIT8) 
  6887.     Image data. 
  6888.  
  6889.  
  6890. ΓòÉΓòÉΓòÉ <hidden> Image Data - Topics ΓòÉΓòÉΓòÉ
  6891.  
  6892. Select an item: 
  6893.  
  6894. Syntax
  6895. Parameters
  6896. Glossary
  6897.  
  6898.  
  6899. ΓòÉΓòÉΓòÉ 2.28. Label ΓòÉΓòÉΓòÉ
  6900.  
  6901.  
  6902. ΓòÉΓòÉΓòÉ <hidden> Label - Syntax ΓòÉΓòÉΓòÉ
  6903.  
  6904. This order is used to label an element within a segment. 
  6905.  
  6906. Label (GLBL) 
  6907. X'D3' (LEN, LDATA) 
  6908.  
  6909.  
  6910. ΓòÉΓòÉΓòÉ <hidden> GLBL Parameter - LEN ΓòÉΓòÉΓòÉ
  6911.  
  6912.  LEN (GLENGTH1) 
  6913.     Length of following data. 
  6914.  
  6915.     0x04    Only valid value. 
  6916.  
  6917.  
  6918. ΓòÉΓòÉΓòÉ <hidden> GLBL Parameter - LDATA ΓòÉΓòÉΓòÉ
  6919.  
  6920.  LDATA (GLONG) 
  6921.     Label value. 
  6922.  
  6923.  
  6924. ΓòÉΓòÉΓòÉ <hidden> Label - Parameters ΓòÉΓòÉΓòÉ
  6925.  
  6926.  LEN (GLENGTH1) 
  6927.     Length of following data. 
  6928.  
  6929.     0x04    Only valid value. 
  6930.  
  6931.  LDATA (GLONG) 
  6932.     Label value. 
  6933.  
  6934.  
  6935. ΓòÉΓòÉΓòÉ <hidden> Label - Topics ΓòÉΓòÉΓòÉ
  6936.  
  6937. Select an item: 
  6938.  
  6939. Syntax
  6940. Parameters
  6941. Glossary
  6942.  
  6943.  
  6944. ΓòÉΓòÉΓòÉ 2.29. Line at Given Position/Line at Current Position ΓòÉΓòÉΓòÉ
  6945.  
  6946.  
  6947. ΓòÉΓòÉΓòÉ <hidden> Line at Given Position/Line at Current Position - Syntax ΓòÉΓòÉΓòÉ
  6948.  
  6949. This order defines one or more connected straight lines, drawn from the given 
  6950. position. 
  6951.  
  6952. Line at Given Position (GLINE) 
  6953. X'C1' (LEN, P0, P1, PN) 
  6954.  
  6955. Line at Current Position (GCLINE) 
  6956. X'81' (LEN, P1, PN) 
  6957.  
  6958.  
  6959. ΓòÉΓòÉΓòÉ <hidden> GLINE/GCLINE Parameter - LEN ΓòÉΓòÉΓòÉ
  6960.  
  6961.  LEN (GLENGTH1) 
  6962.     Length of following data. 
  6963.  
  6964.  
  6965. ΓòÉΓòÉΓòÉ <hidden> GLINE/GCLINE Parameter - P0 ΓòÉΓòÉΓòÉ
  6966.  
  6967.  P0 (GPOINT) 
  6968.     Coordinate data of line start. 
  6969.  
  6970.     This parameter is only present in a Line at Given Position order. 
  6971.  
  6972.  
  6973. ΓòÉΓòÉΓòÉ <hidden> GLINE/GCLINE Parameter - P1 ΓòÉΓòÉΓòÉ
  6974.  
  6975.  P1 (GPOINT) 
  6976.     Coordinate data of first line end. 
  6977.  
  6978.  
  6979. ΓòÉΓòÉΓòÉ <hidden> GLINE/GCLINE Parameter - PN ΓòÉΓòÉΓòÉ
  6980.  
  6981.  PN (GPOINT) 
  6982.     Coordinate data of final line end. 
  6983.  
  6984.  
  6985. ΓòÉΓòÉΓòÉ <hidden> Line at Given Position/Line at Current Position - Parameters ΓòÉΓòÉΓòÉ
  6986.  
  6987.  LEN (GLENGTH1) 
  6988.     Length of following data. 
  6989.  
  6990.  P0 (GPOINT) 
  6991.     Coordinate data of line start. 
  6992.  
  6993.     This parameter is only present in a Line at Given Position order. 
  6994.  
  6995.  P1 (GPOINT) 
  6996.     Coordinate data of first line end. 
  6997.  
  6998.  PN (GPOINT) 
  6999.     Coordinate data of final line end. 
  7000.  
  7001.  
  7002. ΓòÉΓòÉΓòÉ <hidden> Line at Given Position/Line at Current Position - Topics ΓòÉΓòÉΓòÉ
  7003.  
  7004. Select an item: 
  7005.  
  7006. Syntax
  7007. Parameters
  7008. Glossary
  7009.  
  7010.  
  7011. ΓòÉΓòÉΓòÉ 2.30. Marker at Given Position/Marker at Current Position ΓòÉΓòÉΓòÉ
  7012.  
  7013.  
  7014. ΓòÉΓòÉΓòÉ <hidden> Marker at Given Position/Marker at Current Position - Syntax ΓòÉΓòÉΓòÉ
  7015.  
  7016. This order draws the current marker symbol at one or more positions starting 
  7017. from a given position. 
  7018.  
  7019. Marker at Given Position (GMRK) 
  7020. X'C2' (LEN, P0, P1, PN) 
  7021.  
  7022. Marker at Current Position (GCMRK) 
  7023. X'82' (LEN, P1, PN) 
  7024.  
  7025.  
  7026. ΓòÉΓòÉΓòÉ <hidden> GMRK/GCMRK Parameter - LEN ΓòÉΓòÉΓòÉ
  7027.  
  7028.  LEN (GLENGTH1) 
  7029.     Length of following data. 
  7030.  
  7031.  
  7032. ΓòÉΓòÉΓòÉ <hidden> GMRK/GCMRK Parameter - P0 ΓòÉΓòÉΓòÉ
  7033.  
  7034.  P0 (GPOINT) 
  7035.     Coordinate data of first marker. 
  7036.  
  7037.  
  7038. ΓòÉΓòÉΓòÉ <hidden> GMRK/GCMRK Parameter - P1 ΓòÉΓòÉΓòÉ
  7039.  
  7040.  P1 (GPOINT) 
  7041.     Coordinate data of second marker. 
  7042.  
  7043.  
  7044. ΓòÉΓòÉΓòÉ <hidden> GMRK/GCMRK Parameter - PN ΓòÉΓòÉΓòÉ
  7045.  
  7046.  PN (GPOINT) 
  7047.     Coordinate data of final marker. 
  7048.  
  7049.  
  7050. ΓòÉΓòÉΓòÉ <hidden> Marker at Given Position/Marker at Current Position - Parameters ΓòÉΓòÉΓòÉ
  7051.  
  7052.  LEN (GLENGTH1) 
  7053.     Length of following data. 
  7054.  
  7055.  P0 (GPOINT) 
  7056.     Coordinate data of first marker. 
  7057.  
  7058.  P1 (GPOINT) 
  7059.     Coordinate data of second marker. 
  7060.  
  7061.  PN (GPOINT) 
  7062.     Coordinate data of final marker. 
  7063.  
  7064.  
  7065. ΓòÉΓòÉΓòÉ <hidden> Marker at Given Position/Marker at Current Position - Topics ΓòÉΓòÉΓòÉ
  7066.  
  7067. Select an item: 
  7068.  
  7069. Syntax
  7070. Parameters
  7071. Glossary
  7072.  
  7073.  
  7074. ΓòÉΓòÉΓòÉ 2.31. Modify Path ΓòÉΓòÉΓòÉ
  7075.  
  7076.  
  7077. ΓòÉΓòÉΓòÉ <hidden> Modify Path - Syntax ΓòÉΓòÉΓòÉ
  7078.  
  7079. This order modifies the path according to the value of the mode. 
  7080.  
  7081. Modify Path (GMPTH) 
  7082. X'D8' (LEN, MODE, RES, PTHID) 
  7083.  
  7084.  
  7085. ΓòÉΓòÉΓòÉ <hidden> GMPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  7086.  
  7087.  LEN (GLENGTH1) 
  7088.     Length of following data. 
  7089.  
  7090.     0x06       Only valid value. 
  7091.  
  7092.  
  7093. ΓòÉΓòÉΓòÉ <hidden> GMPTH Parameter - MODE ΓòÉΓòÉΓòÉ
  7094.  
  7095.  MODE (GBIT8) 
  7096.     Mode of path modification: 
  7097.  
  7098.     0x06       Stroke the path 
  7099.     Other      All other values are reserved. 
  7100.  
  7101.  
  7102. ΓòÉΓòÉΓòÉ <hidden> GMPTH Parameter - RES ΓòÉΓòÉΓòÉ
  7103.  
  7104.  RES (GBIT8) 
  7105.     Reserved value, must be 0. 
  7106.  
  7107.  
  7108. ΓòÉΓòÉΓòÉ <hidden> GMPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  7109.  
  7110.  PTHID (GLONG) 
  7111.     Path identifier. 
  7112.  
  7113.     0x00000001-0xFFFFFFFF Valid path identifiers. 
  7114.  
  7115.  
  7116. ΓòÉΓòÉΓòÉ <hidden> Modify Path - Parameters ΓòÉΓòÉΓòÉ
  7117.  
  7118.  LEN (GLENGTH1) 
  7119.     Length of following data. 
  7120.  
  7121.     0x06       Only valid value. 
  7122.  
  7123.  MODE (GBIT8) 
  7124.     Mode of path modification: 
  7125.  
  7126.     0x06       Stroke the path 
  7127.     Other      All other values are reserved. 
  7128.  
  7129.  RES (GBIT8) 
  7130.     Reserved value, must be 0. 
  7131.  
  7132.  PTHID (GLONG) 
  7133.     Path identifier. 
  7134.  
  7135.     0x00000001-0xFFFFFFFF Valid path identifiers. 
  7136.  
  7137.  
  7138. ΓòÉΓòÉΓòÉ <hidden> Modify Path - Topics ΓòÉΓòÉΓòÉ
  7139.  
  7140. Select an item: 
  7141.  
  7142. Syntax
  7143. Parameters
  7144. Glossary
  7145.  
  7146.  
  7147. ΓòÉΓòÉΓòÉ 2.32. No-Operation ΓòÉΓòÉΓòÉ
  7148.  
  7149.  
  7150. ΓòÉΓòÉΓòÉ <hidden> No-Operation - Syntax ΓòÉΓòÉΓòÉ
  7151.  
  7152. This order is a no-operation. 
  7153.  
  7154. No-Operation (GNOP1)
  7155. X'00'
  7156.  
  7157.  
  7158. ΓòÉΓòÉΓòÉ <hidden> No-Operation - Topics ΓòÉΓòÉΓòÉ
  7159.  
  7160. Select an item: 
  7161.  
  7162. Syntax
  7163. Glossary
  7164.  
  7165.  
  7166. ΓòÉΓòÉΓòÉ 2.33. Outline Path ΓòÉΓòÉΓòÉ
  7167.  
  7168.  
  7169. ΓòÉΓòÉΓòÉ <hidden> Outline Path - Syntax ΓòÉΓòÉΓòÉ
  7170.  
  7171. This order draws the outline of the specified path. 
  7172.  
  7173. Outline Path (GOPTH) 
  7174. X'D4' (LEN, FLAGS, RES, PTHID) 
  7175.  
  7176.  
  7177. ΓòÉΓòÉΓòÉ <hidden> GOPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  7178.  
  7179.  LEN (GLENGTH1) 
  7180.     Length of following data. 
  7181.  
  7182.  
  7183. ΓòÉΓòÉΓòÉ <hidden> GOPTH Parameter - FLAGS ΓòÉΓòÉΓòÉ
  7184.  
  7185.  FLAGS (GBIT8) 
  7186.     Function flags: 
  7187.  
  7188.     0x00    Only valid value. 
  7189.  
  7190.  
  7191. ΓòÉΓòÉΓòÉ <hidden> GOPTH Parameter - RES ΓòÉΓòÉΓòÉ
  7192.  
  7193.  RES (GBIT8) 
  7194.     Reserved value, must be 0. 
  7195.  
  7196.  
  7197. ΓòÉΓòÉΓòÉ <hidden> GOPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  7198.  
  7199.  PTHID (GLONG) 
  7200.     Path identifier. 
  7201.  
  7202.     1       Only valid value. 
  7203.  
  7204.  
  7205. ΓòÉΓòÉΓòÉ <hidden> Outline Path - Parameters ΓòÉΓòÉΓòÉ
  7206.  
  7207.  LEN (GLENGTH1) 
  7208.     Length of following data. 
  7209.  
  7210.  FLAGS (GBIT8) 
  7211.     Function flags: 
  7212.  
  7213.     0x00    Only valid value. 
  7214.  
  7215.  RES (GBIT8) 
  7216.     Reserved value, must be 0. 
  7217.  
  7218.  PTHID (GLONG) 
  7219.     Path identifier. 
  7220.  
  7221.     1       Only valid value. 
  7222.  
  7223.  
  7224. ΓòÉΓòÉΓòÉ <hidden> Outline Path - Topics ΓòÉΓòÉΓòÉ
  7225.  
  7226. Select an item: 
  7227.  
  7228. Syntax
  7229. Parameters
  7230. Glossary
  7231.  
  7232.  
  7233. ΓòÉΓòÉΓòÉ 2.34. Partial Arc at Given Position/Partial Arc at Current Position ΓòÉΓòÉΓòÉ
  7234.  
  7235.  
  7236. ΓòÉΓòÉΓòÉ <hidden> Partial Arc at Given Position/Partial Arc at Current Position - Syntax ΓòÉΓòÉΓòÉ
  7237.  
  7238. This order draws a line from a given position to the start of an arc, and then 
  7239. draws the arc. 
  7240.  
  7241. Partial Arc at Given Position (GPARC) 
  7242. X'E3' (LEN, P0, P1, M, START, SWEEP) 
  7243.  
  7244. Partial Arc at Current Position (GCPARC) 
  7245. X'A3' (LEN, P1, M, START, SWEEP) 
  7246.  
  7247.  
  7248. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - LEN ΓòÉΓòÉΓòÉ
  7249.  
  7250.  LEN (GLENGTH1) 
  7251.     Length of following data. 
  7252.  
  7253.  
  7254. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - P0 ΓòÉΓòÉΓòÉ
  7255.  
  7256.  P0 (GPOINT) 
  7257.     Coordinate data of start of line. 
  7258.  
  7259.     This parameter is only present in a Partial Arc at Given Position order. 
  7260.  
  7261.  
  7262. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - P1 ΓòÉΓòÉΓòÉ
  7263.  
  7264.  P1 (GPOINT) 
  7265.     Coordinate data of center of arc. 
  7266.  
  7267.  
  7268. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - M ΓòÉΓòÉΓòÉ
  7269.  
  7270.  M (GROFUFS) 
  7271.     Multiplier. 
  7272.  
  7273.  
  7274. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - START ΓòÉΓòÉΓòÉ
  7275.  
  7276.  START (GROF) 
  7277.     Start angle. 
  7278.  
  7279.  
  7280. ΓòÉΓòÉΓòÉ <hidden> GPARC/GCPARC Parameter - SWEEP ΓòÉΓòÉΓòÉ
  7281.  
  7282.  SWEEP (GROF) 
  7283.     Sweep angle. 
  7284.  
  7285.  
  7286. ΓòÉΓòÉΓòÉ <hidden> Partial Arc at Given Position/Partial Arc at Current Position - Parameters ΓòÉΓòÉΓòÉ
  7287.  
  7288.  LEN (GLENGTH1) 
  7289.     Length of following data. 
  7290.  
  7291.  P0 (GPOINT) 
  7292.     Coordinate data of start of line. 
  7293.  
  7294.     This parameter is only present in a Partial Arc at Given Position order. 
  7295.  
  7296.  P1 (GPOINT) 
  7297.     Coordinate data of center of arc. 
  7298.  
  7299.  M (GROFUFS) 
  7300.     Multiplier. 
  7301.  
  7302.  START (GROF) 
  7303.     Start angle. 
  7304.  
  7305.  SWEEP (GROF) 
  7306.     Sweep angle. 
  7307.  
  7308.  
  7309. ΓòÉΓòÉΓòÉ <hidden> Partial Arc at Given Position/Partial Arc at Current Position - Topics ΓòÉΓòÉΓòÉ
  7310.  
  7311. Select an item: 
  7312.  
  7313. Syntax
  7314. Parameters
  7315. Glossary
  7316.  
  7317.  
  7318. ΓòÉΓòÉΓòÉ 2.35. Polygons ΓòÉΓòÉΓòÉ
  7319.  
  7320.  
  7321. ΓòÉΓòÉΓòÉ <hidden> Polygons - Syntax ΓòÉΓòÉΓòÉ
  7322.  
  7323. This order defines a set of polygons, which are optionally filled. 
  7324.  
  7325. Polygons (GPOLYS) 
  7326. X'F3' (LEN, FLAGS, COUNT, POLYS) 
  7327.  
  7328.  
  7329. ΓòÉΓòÉΓòÉ <hidden> GPOLYS Parameter - LEN ΓòÉΓòÉΓòÉ
  7330.  
  7331.  LEN (GLENGTH2) 
  7332.     Length of following data. 
  7333.  
  7334.  
  7335. ΓòÉΓòÉΓòÉ <hidden> GPOLYS Parameter - FLAGS ΓòÉΓòÉΓòÉ
  7336.  
  7337.  FLAGS 
  7338.     Internal flags. 
  7339.  
  7340.     INSIDE (GBIT1) 
  7341.              Mode shading: 
  7342.  
  7343.              0       Alternate mode. 
  7344.              1       Winding mode. 
  7345.  
  7346.     MODEL (GBIT1) 
  7347.              Drawing model: 
  7348.  
  7349.              0       The fill is inclusive of bottom right. 
  7350.              1       The fill is exclusive of bottom right. 
  7351.  
  7352.     RES2 (GBIT6) 
  7353.              Reserved value, must be 0. 
  7354.  
  7355.  
  7356. ΓòÉΓòÉΓòÉ <hidden> GPOLYS Parameter - COUNT ΓòÉΓòÉΓòÉ
  7357.  
  7358.  COUNT (GUSHORT) 
  7359.     Number of polygons. 
  7360.  
  7361.  
  7362. ΓòÉΓòÉΓòÉ <hidden> GPOLYS Parameter - POLYS ΓòÉΓòÉΓòÉ
  7363.  
  7364.  POLYS (GPOLYS) 
  7365.     Array of polygons. 
  7366.  
  7367.  
  7368. ΓòÉΓòÉΓòÉ <hidden> Polygons - Parameters ΓòÉΓòÉΓòÉ
  7369.  
  7370.  LEN (GLENGTH2) 
  7371.     Length of following data. 
  7372.  
  7373.  FLAGS 
  7374.     Internal flags. 
  7375.  
  7376.     INSIDE (GBIT1) 
  7377.              Mode shading: 
  7378.  
  7379.              0       Alternate mode. 
  7380.              1       Winding mode. 
  7381.  
  7382.     MODEL (GBIT1) 
  7383.              Drawing model: 
  7384.  
  7385.              0       The fill is inclusive of bottom right. 
  7386.              1       The fill is exclusive of bottom right. 
  7387.  
  7388.     RES2 (GBIT6) 
  7389.              Reserved value, must be 0. 
  7390.  
  7391.  COUNT (GUSHORT) 
  7392.     Number of polygons. 
  7393.  
  7394.  POLYS (GPOLYS) 
  7395.     Array of polygons. 
  7396.  
  7397.  
  7398. ΓòÉΓòÉΓòÉ <hidden> Polygons - Remarks ΓòÉΓòÉΓòÉ
  7399.  
  7400. This order draws a set of polygons. For the first polygon the current position 
  7401. is the first point. For all subsequent polygons all points which define the 
  7402. polygon are given explicitly.  The polygons are automatically closed if 
  7403. necessary. 
  7404.  
  7405. The current position is set to the last point specified. 
  7406.  
  7407.  
  7408. ΓòÉΓòÉΓòÉ <hidden> Polygons - Topics ΓòÉΓòÉΓòÉ
  7409.  
  7410. Select an item: 
  7411.  
  7412. Syntax
  7413. Parameters
  7414. Remarks
  7415. Glossary
  7416.  
  7417.  
  7418. ΓòÉΓòÉΓòÉ 2.36. Pop ΓòÉΓòÉΓòÉ
  7419.  
  7420.  
  7421. ΓòÉΓòÉΓòÉ <hidden> Pop - Syntax ΓòÉΓòÉΓòÉ
  7422.  
  7423. This order enables data to be popped from the Segment Call Stack. 
  7424.  
  7425. Pop (GPOP) 
  7426. X'3F' (RES) 
  7427.  
  7428.  
  7429. ΓòÉΓòÉΓòÉ <hidden> GPOP Parameter - RES ΓòÉΓòÉΓòÉ
  7430.  
  7431.  RES (GBIT8) 
  7432.     Reserved value, must be 0. 
  7433.  
  7434.  
  7435. ΓòÉΓòÉΓòÉ <hidden> Pop - Parameters ΓòÉΓòÉΓòÉ
  7436.  
  7437.  RES (GBIT8) 
  7438.     Reserved value, must be 0. 
  7439.  
  7440.  
  7441. ΓòÉΓòÉΓòÉ <hidden> Pop - Remarks ΓòÉΓòÉΓòÉ
  7442.  
  7443. The data is placed into an attribute or Drawing Process Control. 
  7444.  
  7445.  
  7446. ΓòÉΓòÉΓòÉ <hidden> Pop - Topics ΓòÉΓòÉΓòÉ
  7447.  
  7448. Select an item: 
  7449.  
  7450. Syntax
  7451. Parameters
  7452. Remarks
  7453. Glossary
  7454.  
  7455.  
  7456. ΓòÉΓòÉΓòÉ 2.37. Relative Line at Given Position/Relative Line at Current Position ΓòÉΓòÉΓòÉ
  7457.  
  7458.  
  7459. ΓòÉΓòÉΓòÉ <hidden> Relative Line at Given Position/Relative Line at Current Position - Syntax ΓòÉΓòÉΓòÉ
  7460.  
  7461. These orders define one or more connected straight lines, at the given position 
  7462. or at the current position. 
  7463.  
  7464. Relative Line at Given Position (GRLINE) 
  7465. X'E1' (LEN, P0, OFF0, OFF1, OFFN) 
  7466.  
  7467. Relative Line at Current Position (GCRLINE) 
  7468. X'A1' (LEN, OFF0, OFF1, OFFN) 
  7469.  
  7470.  
  7471. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - LEN ΓòÉΓòÉΓòÉ
  7472.  
  7473.  LEN (GLENGTH1) 
  7474.     Length of following data. 
  7475.  
  7476.  
  7477. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - P0 ΓòÉΓòÉΓòÉ
  7478.  
  7479.  P0 (GPOINT) 
  7480.     Coordinate data of line start. 
  7481.  
  7482.     This parameter is only present in a Relative Line at Given Position order. 
  7483.  
  7484.  
  7485. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - OFF0 ΓòÉΓòÉΓòÉ
  7486.  
  7487.  OFF0 (GDELPOINT) 
  7488.     Offset data for first point. 
  7489.  
  7490.     This offset is to the first line end, relative to its start point. 
  7491.  
  7492.  
  7493. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - OFF1 ΓòÉΓòÉΓòÉ
  7494.  
  7495.  OFF1 (GDELPOINT) 
  7496.     Offset data for second point. 
  7497.  
  7498.     This offset is to the second line end, relative to the first line end. 
  7499.  
  7500.  
  7501. ΓòÉΓòÉΓòÉ <hidden> GRLINE/GCRLINE Parameter - OFFN ΓòÉΓòÉΓòÉ
  7502.  
  7503.  OFFN (GDELPOINT) 
  7504.     Offset data for final point. 
  7505.  
  7506.     This offset is to the nth line end, relative to the n-1th line end. 
  7507.  
  7508.  
  7509. ΓòÉΓòÉΓòÉ <hidden> Relative Line at Given Position/Relative Line at Current Position - Parameters ΓòÉΓòÉΓòÉ
  7510.  
  7511.  LEN (GLENGTH1) 
  7512.     Length of following data. 
  7513.  
  7514.  P0 (GPOINT) 
  7515.     Coordinate data of line start. 
  7516.  
  7517.     This parameter is only present in a Relative Line at Given Position order. 
  7518.  
  7519.  OFF0 (GDELPOINT) 
  7520.     Offset data for first point. 
  7521.  
  7522.     This offset is to the first line end, relative to its start point. 
  7523.  
  7524.  OFF1 (GDELPOINT) 
  7525.     Offset data for second point. 
  7526.  
  7527.     This offset is to the second line end, relative to the first line end. 
  7528.  
  7529.  OFFN (GDELPOINT) 
  7530.     Offset data for final point. 
  7531.  
  7532.     This offset is to the nth line end, relative to the n-1th line end. 
  7533.  
  7534.  
  7535. ΓòÉΓòÉΓòÉ <hidden> Relative Line at Given Position/Relative Line at Current Position - Remarks ΓòÉΓòÉΓòÉ
  7536.  
  7537. The end point of each line is given as an offset from the start of the line, 
  7538. rather than as absolute coordinates. 
  7539.  
  7540.  
  7541. ΓòÉΓòÉΓòÉ <hidden> Relative Line at Given Position/Relative Line at Current Position - Topics ΓòÉΓòÉΓòÉ
  7542.  
  7543. Select an item: 
  7544.  
  7545. Syntax
  7546. Parameters
  7547. Remarks
  7548. Glossary
  7549.  
  7550.  
  7551. ΓòÉΓòÉΓòÉ 2.38. Segment Characteristics ΓòÉΓòÉΓòÉ
  7552.  
  7553.  
  7554. ΓòÉΓòÉΓòÉ <hidden> Segment Characteristics - Syntax ΓòÉΓòÉΓòÉ
  7555.  
  7556. This order provides the facility to set architected or user-defined 
  7557. characteristics for a segment. 
  7558.  
  7559. Segment Characteristics (GSGCH) 
  7560. X'04' (LEN, CBIT8, PARMS) 
  7561.  
  7562.  
  7563. ΓòÉΓòÉΓòÉ <hidden> GSGCH Parameter - LEN ΓòÉΓòÉΓòÉ
  7564.  
  7565.  LEN (GLENGTH1) 
  7566.     Length of following data. 
  7567.  
  7568.  
  7569. ΓòÉΓòÉΓòÉ <hidden> GSGCH Parameter - CBIT8 ΓòÉΓòÉΓòÉ
  7570.  
  7571.  CBIT8 (GUCHAR) 
  7572.     Identification code for characteristics: 
  7573.  
  7574.     0x00-0x7F      Reserved for architected characteristics. 
  7575.     0x80-0xFF      Reserved for user-defined characteristics. 
  7576.  
  7577.  
  7578. ΓòÉΓòÉΓòÉ <hidden> GSGCH Parameter - PARMS ΓòÉΓòÉΓòÉ
  7579.  
  7580.  PARMS (GSTR) 
  7581.     Parameters of characteristics. 
  7582.  
  7583.  
  7584. ΓòÉΓòÉΓòÉ <hidden> Segment Characteristics - Parameters ΓòÉΓòÉΓòÉ
  7585.  
  7586.  LEN (GLENGTH1) 
  7587.     Length of following data. 
  7588.  
  7589.  CBIT8 (GUCHAR) 
  7590.     Identification code for characteristics: 
  7591.  
  7592.     0x00-0x7F      Reserved for architected characteristics. 
  7593.     0x80-0xFF      Reserved for user-defined characteristics. 
  7594.  
  7595.  PARMS (GSTR) 
  7596.     Parameters of characteristics. 
  7597.  
  7598.  
  7599. ΓòÉΓòÉΓòÉ <hidden> Segment Characteristics - Remarks ΓòÉΓòÉΓòÉ
  7600.  
  7601. The order is only valid in a root-segment prolog. 
  7602.  
  7603.  
  7604. ΓòÉΓòÉΓòÉ <hidden> Segment Characteristics - Topics ΓòÉΓòÉΓòÉ
  7605.  
  7606. Select an item: 
  7607.  
  7608. Syntax
  7609. Parameters
  7610. Remarks
  7611. Glossary
  7612.  
  7613.  
  7614. ΓòÉΓòÉΓòÉ 2.39. Set Arc Parameters/Push and Set Arc Parameters ΓòÉΓòÉΓòÉ
  7615.  
  7616.  
  7617. ΓòÉΓòÉΓòÉ <hidden> Set Arc Parameters/Push and Set Arc Parameters - Syntax ΓòÉΓòÉΓòÉ
  7618.  
  7619. These orders set, or push and set, the values of the current arc parameters. 
  7620.  
  7621. Set Arc Parameters (GSAP) 
  7622. X'22' (LEN, P, Q, R, S) 
  7623.  
  7624. Push and Set Arc Parameters (GPSAP) 
  7625. X'62' (LEN, P, Q, R, S) 
  7626.  
  7627.  
  7628. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - LEN ΓòÉΓòÉΓòÉ
  7629.  
  7630.  LEN (GLENGTH1) 
  7631.     Length of following data. 
  7632.  
  7633.  
  7634. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - P ΓòÉΓòÉΓòÉ
  7635.  
  7636.  P (GROSOL) 
  7637.     P-parameter of arc transform. 
  7638.  
  7639.  
  7640. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - Q ΓòÉΓòÉΓòÉ
  7641.  
  7642.  Q (GROSOL) 
  7643.     Q-parameter of arc transform. 
  7644.  
  7645.  
  7646. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - R ΓòÉΓòÉΓòÉ
  7647.  
  7648.  R (GROSOL) 
  7649.     R-parameter of arc transform. 
  7650.  
  7651.  
  7652. ΓòÉΓòÉΓòÉ <hidden> GSAP/GPSAP Parameter - S ΓòÉΓòÉΓòÉ
  7653.  
  7654.  S (GROSOL) 
  7655.     S-parameter of arc transform. 
  7656.  
  7657.  
  7658. ΓòÉΓòÉΓòÉ <hidden> Set Arc Parameters/Push and Set Arc Parameters - Parameters ΓòÉΓòÉΓòÉ
  7659.  
  7660.  LEN (GLENGTH1) 
  7661.     Length of following data. 
  7662.  
  7663.  P (GROSOL) 
  7664.     P-parameter of arc transform. 
  7665.  
  7666.  Q (GROSOL) 
  7667.     Q-parameter of arc transform. 
  7668.  
  7669.  R (GROSOL) 
  7670.     R-parameter of arc transform. 
  7671.  
  7672.  S (GROSOL) 
  7673.     S-parameter of arc transform. 
  7674.  
  7675.  
  7676. ΓòÉΓòÉΓòÉ <hidden> Set Arc Parameters/Push and Set Arc Parameters - Remarks ΓòÉΓòÉΓòÉ
  7677.  
  7678. The values of the current arc parameters are pushed on to the Segment Call 
  7679. stack by the Push and Set order only. Both orders then set the current arc 
  7680. parameters to the values specified in the order. 
  7681.  
  7682. The value of these parameters determines the shape of subsequent orders drawn 
  7683. using Arc at a Given Position/Arc at Current Position or Full Arc at Given 
  7684. Position/Full Arc at Current Position or Partial Arc at Given Position/Partial 
  7685. Arc at Current Position. 
  7686.  
  7687.  
  7688. ΓòÉΓòÉΓòÉ <hidden> Set Arc Parameters/Push and Set Arc Parameters - Topics ΓòÉΓòÉΓòÉ
  7689.  
  7690. Select an item: 
  7691.  
  7692. Syntax
  7693. Parameters
  7694. Remarks
  7695. Glossary
  7696.  
  7697.  
  7698. ΓòÉΓòÉΓòÉ 2.40. Set Background Color/Push and Set Background Color ΓòÉΓòÉΓòÉ
  7699.  
  7700.  
  7701. ΓòÉΓòÉΓòÉ <hidden> Set Background Color/Push and Set Background Color - Syntax ΓòÉΓòÉΓòÉ
  7702.  
  7703. These orders set, or push and set, the value of the current background color 
  7704. attribute. 
  7705.  
  7706. Set Background Color (GSBCOL) 
  7707. X'25' (LEN, COLOR) 
  7708.  
  7709. Push and Set Background Color (GPSBCOL) 
  7710. X'65' (LEN, COLOR) 
  7711.  
  7712.  
  7713. ΓòÉΓòÉΓòÉ <hidden> GSBCOL/GPSBCOL Parameter - LEN ΓòÉΓòÉΓòÉ
  7714.  
  7715.  LEN (GLENGTH1) 
  7716.     Length of following data. 
  7717.  
  7718.     0x02    Only valid value. 
  7719.  
  7720.  
  7721. ΓòÉΓòÉΓòÉ <hidden> GSBCOL/GPSBCOL Parameter - COLOR ΓòÉΓòÉΓòÉ
  7722.  
  7723.  COLOR (GBIT16) 
  7724.     Color-table index: Except for the special values, the values 0x0000 through 
  7725.     0xnnnn are allowed color indexes; that is, as many values as are allowed by 
  7726.     the size of the LCT. 
  7727.  
  7728.     Special Values 
  7729.  
  7730.     0x0000 
  7731.             Drawing default 
  7732.     0x0007 
  7733.             White 
  7734.     0x0008 
  7735.             Black 
  7736.     0xFF00 
  7737.             Drawing default 
  7738.     0xFF0x 
  7739.             Color indexes 0x000n, where n is in the range 1 through 7. 
  7740.     0xFF08 
  7741.             Color index 0 (reset color). 
  7742.  
  7743.  
  7744. ΓòÉΓòÉΓòÉ <hidden> Set Background Color/Push and Set Background Color - Parameters ΓòÉΓòÉΓòÉ
  7745.  
  7746.  LEN (GLENGTH1) 
  7747.     Length of following data. 
  7748.  
  7749.     0x02    Only valid value. 
  7750.  
  7751.  COLOR (GBIT16) 
  7752.     Color-table index: Except for the special values, the values 0x0000 through 
  7753.     0xnnnn are allowed color indexes; that is, as many values as are allowed by 
  7754.     the size of the LCT. 
  7755.  
  7756.     Special Values 
  7757.  
  7758.     0x0000 
  7759.             Drawing default 
  7760.     0x0007 
  7761.             White 
  7762.     0x0008 
  7763.             Black 
  7764.     0xFF00 
  7765.             Drawing default 
  7766.     0xFF0x 
  7767.             Color indexes 0x000n, where n is in the range 1 through 7. 
  7768.     0xFF08 
  7769.             Color index 0 (reset color). 
  7770.  
  7771.  
  7772. ΓòÉΓòÉΓòÉ <hidden> Set Background Color/Push and Set Background Color - Topics ΓòÉΓòÉΓòÉ
  7773.  
  7774. Select an item: 
  7775.  
  7776. Syntax
  7777. Parameters
  7778. Glossary
  7779.  
  7780.  
  7781. ΓòÉΓòÉΓòÉ 2.41. Set Background Indexed Color/Push and Set Background Indexed Color ΓòÉΓòÉΓòÉ
  7782.  
  7783.  
  7784. ΓòÉΓòÉΓòÉ <hidden> Set Background Indexed Color/Push and Set Background Indexed Color - Syntax ΓòÉΓòÉΓòÉ
  7785.  
  7786. These orders set, or push and set, the value of the current background color 
  7787. attribute. 
  7788.  
  7789. Set Background Indexed Color (GSBICOL) 
  7790. X'A7' (LEN, FLAGS, INDEX) 
  7791.  
  7792. Push and Set Background Indexed Color (GPSBICOL) 
  7793. X'E7' (LEN, FLAGS, INDEX) 
  7794.  
  7795.  
  7796. ΓòÉΓòÉΓòÉ <hidden> GSBICOL/GPSBICOL Parameter - LEN ΓòÉΓòÉΓòÉ
  7797.  
  7798.  LEN (GLENGTH1) 
  7799.     Length of following data. 
  7800.  
  7801.     0x04    Only valid value. 
  7802.  
  7803.  
  7804. ΓòÉΓòÉΓòÉ <hidden> GSBICOL/GPSBICOL Parameter - FLAGS ΓòÉΓòÉΓòÉ
  7805.  
  7806.  FLAGS 
  7807.     Values: 
  7808.  
  7809.     DEFAULT (GBIT1) 
  7810.              Options: 
  7811.  
  7812.              0       Use specified INDEX 
  7813.              1       Use drawing default color. 
  7814.  
  7815.     SPEC (GBIT1) 
  7816.              Options: 
  7817.  
  7818.              0       Use index directly 
  7819.              1       Special value. 
  7820.  
  7821.     RES (GBIT6) 
  7822.              Reserved value, must be 0. 
  7823.  
  7824.  
  7825. ΓòÉΓòÉΓòÉ <hidden> GSBICOL/GPSBICOL Parameter - INDEX ΓòÉΓòÉΓòÉ
  7826.  
  7827.  INDEX (GINDEX3) 
  7828.     Value for color index. 
  7829.  
  7830.     The value is a direct index into the current color table or a special 
  7831.     value. The special values are: 
  7832.  
  7833.     1 
  7834.             Black 
  7835.     2 
  7836.             White 
  7837.     4 
  7838.             All ones 
  7839.     5 
  7840.             All zeros. 
  7841.  
  7842.  
  7843. ΓòÉΓòÉΓòÉ <hidden> Set Background Indexed Color/Push and Set Background Indexed Color - Parameters ΓòÉΓòÉΓòÉ
  7844.  
  7845.  LEN (GLENGTH1) 
  7846.     Length of following data. 
  7847.  
  7848.     0x04    Only valid value. 
  7849.  
  7850.  FLAGS 
  7851.     Values: 
  7852.  
  7853.     DEFAULT (GBIT1) 
  7854.              Options: 
  7855.  
  7856.              0       Use specified INDEX 
  7857.              1       Use drawing default color. 
  7858.  
  7859.     SPEC (GBIT1) 
  7860.              Options: 
  7861.  
  7862.              0       Use index directly 
  7863.              1       Special value. 
  7864.  
  7865.     RES (GBIT6) 
  7866.              Reserved value, must be 0. 
  7867.  
  7868.  INDEX (GINDEX3) 
  7869.     Value for color index. 
  7870.  
  7871.     The value is a direct index into the current color table or a special 
  7872.     value. The special values are: 
  7873.  
  7874.     1 
  7875.             Black 
  7876.     2 
  7877.             White 
  7878.     4 
  7879.             All ones 
  7880.     5 
  7881.             All zeros. 
  7882.  
  7883.  
  7884. ΓòÉΓòÉΓòÉ <hidden> Set Background Indexed Color/Push and Set Background Indexed Color - Remarks ΓòÉΓòÉΓòÉ
  7885.  
  7886. The value of the current background color attribute is pushed on to the stack 
  7887. by the Push and Set order only. Both orders then set the current background 
  7888. color attribute to the value specified in the order. 
  7889.  
  7890.  
  7891. ΓòÉΓòÉΓòÉ <hidden> Set Background Indexed Color/Push and Set Background Indexed Color - Topics ΓòÉΓòÉΓòÉ
  7892.  
  7893. Select an item: 
  7894.  
  7895. Syntax
  7896. Parameters
  7897. Remarks
  7898. Glossary
  7899.  
  7900.  
  7901. ΓòÉΓòÉΓòÉ 2.42. Set Background Mix/Push and Set Background Mix ΓòÉΓòÉΓòÉ
  7902.  
  7903.  
  7904. ΓòÉΓòÉΓòÉ <hidden> Set Background Mix/Push and Set Background Mix - Syntax ΓòÉΓòÉΓòÉ
  7905.  
  7906. These orders set, or push and set, the value of the current background mix 
  7907. attribute. 
  7908.  
  7909. Set Background Mix (GSBMX) 
  7910. X'0D' (MODE) 
  7911.  
  7912. Push and Set Background Mix (GPSBMX) 
  7913. X'4D' (MODE) 
  7914.  
  7915.  
  7916. ΓòÉΓòÉΓòÉ <hidden> GSBMX/GPSBMX Parameter - MODE ΓòÉΓòÉΓòÉ
  7917.  
  7918.  MODE (GBIT8) 
  7919.     Mix-mode value: 
  7920.  
  7921.     0x00 
  7922.             Drawing default 
  7923.     0x01 
  7924.             OR 
  7925.     0x02 
  7926.             Overpaint 
  7927.     0x03 
  7928.             Reserved 
  7929.     0x04 
  7930.             Exclusive-OR 
  7931.     0x05 
  7932.             Leave Alone 
  7933.     0x06 
  7934.             AND 
  7935.     0x07 
  7936.             Subtract 
  7937.     0x08 
  7938.             Source AND (inverse destination) 
  7939.     0x09 
  7940.             All zeros 
  7941.     0x0A 
  7942.             Inverse (source OR destination) 
  7943.     0x0B 
  7944.             Inverse (source XOR destination) 
  7945.     0x0C 
  7946.             Inverse destination 
  7947.     0x0D 
  7948.             Source OR (inverse destination) 
  7949.     0x0E 
  7950.             Inverse source 
  7951.     0x0F 
  7952.             (Inverse source) OR destination 
  7953.     0x10 
  7954.             Inverse (source AND destination) 
  7955.     0x11 
  7956.             All ones. 
  7957.  
  7958.  
  7959. ΓòÉΓòÉΓòÉ <hidden> Set Background Mix/Push and Set Background Mix - Parameters ΓòÉΓòÉΓòÉ
  7960.  
  7961.  MODE (GBIT8) 
  7962.     Mix-mode value: 
  7963.  
  7964.     0x00 
  7965.             Drawing default 
  7966.     0x01 
  7967.             OR 
  7968.     0x02 
  7969.             Overpaint 
  7970.     0x03 
  7971.             Reserved 
  7972.     0x04 
  7973.             Exclusive-OR 
  7974.     0x05 
  7975.             Leave Alone 
  7976.     0x06 
  7977.             AND 
  7978.     0x07 
  7979.             Subtract 
  7980.     0x08 
  7981.             Source AND (inverse destination) 
  7982.     0x09 
  7983.             All zeros 
  7984.     0x0A 
  7985.             Inverse (source OR destination) 
  7986.     0x0B 
  7987.             Inverse (source XOR destination) 
  7988.     0x0C 
  7989.             Inverse destination 
  7990.     0x0D 
  7991.             Source OR (inverse destination) 
  7992.     0x0E 
  7993.             Inverse source 
  7994.     0x0F 
  7995.             (Inverse source) OR destination 
  7996.     0x10 
  7997.             Inverse (source AND destination) 
  7998.     0x11 
  7999.             All ones. 
  8000.  
  8001.  
  8002. ΓòÉΓòÉΓòÉ <hidden> Set Background Mix/Push and Set Background Mix - Remarks ΓòÉΓòÉΓòÉ
  8003.  
  8004. The value of the current background mix attribute is pushed on to the Segment 
  8005. Call stack by the Push and Set order only. Both orders then set the current 
  8006. background mix attribute to the value specified in the order. 
  8007.  
  8008.  
  8009. ΓòÉΓòÉΓòÉ <hidden> Set Background Mix/Push and Set Background Mix - Topics ΓòÉΓòÉΓòÉ
  8010.  
  8011. Select an item: 
  8012.  
  8013. Syntax
  8014. Parameters
  8015. Remarks
  8016. Glossary
  8017.  
  8018.  
  8019. ΓòÉΓòÉΓòÉ 2.43. Set Character Angle/Push and Set Character Angle ΓòÉΓòÉΓòÉ
  8020.  
  8021.  
  8022. ΓòÉΓòÉΓòÉ <hidden> Set Character Angle/Push and Set Character Angle - Syntax ΓòÉΓòÉΓòÉ
  8023.  
  8024. These orders set, or push and set, the value of the current character angle 
  8025. attribute. 
  8026.  
  8027. Set Character Angle (GSCA) 
  8028. X'34' (LEN, AX, AY) 
  8029.  
  8030. Push and Set Character Angle (GPSCA) 
  8031. X'74' (LEN, AX, AY) 
  8032.  
  8033.  
  8034. ΓòÉΓòÉΓòÉ <hidden> GSCA/GPSCA Parameter - LEN ΓòÉΓòÉΓòÉ
  8035.  
  8036.  LEN (GLENGTH1) 
  8037.     Length of following data. 
  8038.  
  8039.  
  8040. ΓòÉΓòÉΓòÉ <hidden> GSCA/GPSCA Parameter - AX ΓòÉΓòÉΓòÉ
  8041.  
  8042.  AX (GROSOL) 
  8043.     X coordinate of point. 
  8044.  
  8045.     This point defines the angle of the character string. 
  8046.  
  8047.  
  8048. ΓòÉΓòÉΓòÉ <hidden> GSCA/GPSCA Parameter - AY ΓòÉΓòÉΓòÉ
  8049.  
  8050.  AY (GROSOL) 
  8051.     Y coordinate of point. 
  8052.  
  8053.     This point defines the angle of the character string. 
  8054.  
  8055.  
  8056. ΓòÉΓòÉΓòÉ <hidden> Set Character Angle/Push and Set Character Angle - Parameters ΓòÉΓòÉΓòÉ
  8057.  
  8058.  LEN (GLENGTH1) 
  8059.     Length of following data. 
  8060.  
  8061.  AX (GROSOL) 
  8062.     X coordinate of point. 
  8063.  
  8064.     This point defines the angle of the character string. 
  8065.  
  8066.  AY (GROSOL) 
  8067.     Y coordinate of point. 
  8068.  
  8069.     This point defines the angle of the character string. 
  8070.  
  8071.  
  8072. ΓòÉΓòÉΓòÉ <hidden> Set Character Angle/Push and Set Character Angle - Remarks ΓòÉΓòÉΓòÉ
  8073.  
  8074. The value of the current character angle attribute is pushed on to the Segment 
  8075. Call Stack by the Push and Set order only. Both orders then set the value of 
  8076. the current character angle to the value specified in the order. 
  8077.  
  8078.  
  8079. ΓòÉΓòÉΓòÉ <hidden> Set Character Angle/Push and Set Character Angle - Topics ΓòÉΓòÉΓòÉ
  8080.  
  8081. Select an item: 
  8082.  
  8083. Syntax
  8084. Parameters
  8085. Remarks
  8086. Glossary
  8087.  
  8088.  
  8089. ΓòÉΓòÉΓòÉ 2.44. Set Character Break Extra/Push and Set Character Break Extra ΓòÉΓòÉΓòÉ
  8090.  
  8091.  
  8092. ΓòÉΓòÉΓòÉ <hidden> Set Character Break Extra/Push and Set Character Break Extra - Syntax ΓòÉΓòÉΓòÉ
  8093.  
  8094. These orders set, or push and set, the value of the current character break 
  8095. extra attribute. 
  8096.  
  8097. Set Character Break Extra (GSCBE) 
  8098. X'05' (LEN, FLAGS, RES2, INC) 
  8099.  
  8100. Push and Set Character Break Extra (GPSCBE) 
  8101. X'45' (LEN, FLAGS, RES2, INC) 
  8102.  
  8103.  
  8104. ΓòÉΓòÉΓòÉ <hidden> GSCBE/GPSCBE Parameter - LEN ΓòÉΓòÉΓòÉ
  8105.  
  8106.  LEN (GLENGTH1) 
  8107.     Length of following data. 
  8108.  
  8109.  
  8110. ΓòÉΓòÉΓòÉ <hidden> GSCBE/GPSCBE Parameter - FLAGS ΓòÉΓòÉΓòÉ
  8111.  
  8112.  FLAGS 
  8113.     Values as follows: 
  8114.  
  8115.     DEFAULT (GBIT1) 
  8116.              Values as follows: 
  8117.  
  8118.              B"0"       Set to specified value. 
  8119.              B"1"       Set to drawing default. 
  8120.  
  8121.     RES1 (GBIT7) 
  8122.              Reserved value, must be 0. 
  8123.  
  8124.  
  8125. ΓòÉΓòÉΓòÉ <hidden> GSCBE/GPSCBE Parameter - RES2 ΓòÉΓòÉΓòÉ
  8126.  
  8127.  RES2 (GUNDF1) 
  8128.     Reserved value, must be 0. 
  8129.  
  8130.  
  8131. ΓòÉΓòÉΓòÉ <hidden> GSCBE/GPSCBE Parameter - INC ΓòÉΓòÉΓòÉ
  8132.  
  8133.  INC (GROF) 
  8134.     Increment. 
  8135.  
  8136.  
  8137. ΓòÉΓòÉΓòÉ <hidden> Set Character Break Extra/Push and Set Character Break Extra - Parameters ΓòÉΓòÉΓòÉ
  8138.  
  8139.  LEN (GLENGTH1) 
  8140.     Length of following data. 
  8141.  
  8142.  FLAGS 
  8143.     Values as follows: 
  8144.  
  8145.     DEFAULT (GBIT1) 
  8146.              Values as follows: 
  8147.  
  8148.              B"0"       Set to specified value. 
  8149.              B"1"       Set to drawing default. 
  8150.  
  8151.     RES1 (GBIT7) 
  8152.              Reserved value, must be 0. 
  8153.  
  8154.  RES2 (GUNDF1) 
  8155.     Reserved value, must be 0. 
  8156.  
  8157.  INC (GROF) 
  8158.     Increment. 
  8159.  
  8160.  
  8161. ΓòÉΓòÉΓòÉ <hidden> Set Character Break Extra/Push and Set Character Break Extra - Remarks ΓòÉΓòÉΓòÉ
  8162.  
  8163. The value of the current character break extra attribute is pushed on to the 
  8164. Segment Call Stack by the Push and Set order only. Both orders then set the 
  8165. value of the current character break extra attribute to the value specified in 
  8166. the order. 
  8167.  
  8168.  
  8169. ΓòÉΓòÉΓòÉ <hidden> Set Character Break Extra/Push and Set Character Break Extra - Topics ΓòÉΓòÉΓòÉ
  8170.  
  8171. Select an item: 
  8172.  
  8173. Syntax
  8174. Parameters
  8175. Remarks
  8176. Glossary
  8177.  
  8178.  
  8179. ΓòÉΓòÉΓòÉ 2.45. Set Character Cell/Push and Set Character Cell ΓòÉΓòÉΓòÉ
  8180.  
  8181.  
  8182. ΓòÉΓòÉΓòÉ <hidden> Set Character Cell/Push and Set Character Cell - Syntax ΓòÉΓòÉΓòÉ
  8183.  
  8184. These orders set, or push and set, the value of the current character cell-size 
  8185. attribute. 
  8186.  
  8187. Set Character Cell (GSCC) 
  8188. X'33' (LEN, CELLX, CELLY, CELLXF, CELLYF, FLAGS, RES) 
  8189.  
  8190. Push and Set Character Cell (GPSCC) 
  8191. X'03' (LEN, CELLX, CELLY, CELLXF, CELLYF, FLAGS, RES) 
  8192.  
  8193.  
  8194. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - LEN ΓòÉΓòÉΓòÉ
  8195.  
  8196.  LEN (GLENGTH1) 
  8197.     Length of following data. 
  8198.  
  8199.  
  8200. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - CELLX ΓòÉΓòÉΓòÉ
  8201.  
  8202.  CELLX (GROSOL) 
  8203.     X part of character cell-size attribute. 
  8204.  
  8205.  
  8206. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - CELLY ΓòÉΓòÉΓòÉ
  8207.  
  8208.  CELLY (GROSOL) 
  8209.     Y part of character cell-size attribute. 
  8210.  
  8211.  
  8212. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - CELLXF ΓòÉΓòÉΓòÉ
  8213.  
  8214.  CELLXF (GUSHORT) 
  8215.     Fractional X part of character cell-size attribute. 
  8216.  
  8217.     This parameter is optional. 
  8218.  
  8219.  
  8220. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - CELLYF ΓòÉΓòÉΓòÉ
  8221.  
  8222.  CELLYF (GUSHORT) 
  8223.     Fractional Y part of character cell-size attribute. 
  8224.  
  8225.     This parameter must be present if CELLXF parameter is present. 
  8226.  
  8227.  
  8228. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - FLAGS ΓòÉΓòÉΓòÉ
  8229.  
  8230.  FLAGS 
  8231.     Internal flags. 
  8232.  
  8233.     This parameter is optional. 
  8234.  
  8235.     NOTDEFLT (GBIT1) 
  8236.              Values: 
  8237.  
  8238.              0       A cell size of zero sets drawing default 
  8239.              1       A cell size of zero sets to zero. 
  8240.  
  8241.     RES (GBIT7) 
  8242.              Reserved. 
  8243.  
  8244.              0000000 Only valid value. 
  8245.  
  8246.  
  8247. ΓòÉΓòÉΓòÉ <hidden> GSCC/GPSCC Parameter - RES ΓòÉΓòÉΓòÉ
  8248.  
  8249.  RES (GBIT8) 
  8250.     Reserved value, must be 0. 
  8251.  
  8252.     This parameter must be present if FLAGS parameter is present. 
  8253.  
  8254.  
  8255. ΓòÉΓòÉΓòÉ <hidden> Set Character Cell/Push and Set Character Cell - Parameters ΓòÉΓòÉΓòÉ
  8256.  
  8257.  LEN (GLENGTH1) 
  8258.     Length of following data. 
  8259.  
  8260.  CELLX (GROSOL) 
  8261.     X part of character cell-size attribute. 
  8262.  
  8263.  CELLY (GROSOL) 
  8264.     Y part of character cell-size attribute. 
  8265.  
  8266.  CELLXF (GUSHORT) 
  8267.     Fractional X part of character cell-size attribute. 
  8268.  
  8269.     This parameter is optional. 
  8270.  
  8271.  CELLYF (GUSHORT) 
  8272.     Fractional Y part of character cell-size attribute. 
  8273.  
  8274.     This parameter must be present if CELLXF parameter is present. 
  8275.  
  8276.  FLAGS 
  8277.     Internal flags. 
  8278.  
  8279.     This parameter is optional. 
  8280.  
  8281.     NOTDEFLT (GBIT1) 
  8282.              Values: 
  8283.  
  8284.              0       A cell size of zero sets drawing default 
  8285.              1       A cell size of zero sets to zero. 
  8286.  
  8287.     RES (GBIT7) 
  8288.              Reserved. 
  8289.  
  8290.              0000000 Only valid value. 
  8291.  
  8292.  RES (GBIT8) 
  8293.     Reserved value, must be 0. 
  8294.  
  8295.     This parameter must be present if FLAGS parameter is present. 
  8296.  
  8297.  
  8298. ΓòÉΓòÉΓòÉ <hidden> Set Character Cell/Push and Set Character Cell - Remarks ΓòÉΓòÉΓòÉ
  8299.  
  8300. The value of the current character cell-size attribute is pushed on to the 
  8301. Segment Call Stack by the Push and Set order only. Both orders then set the 
  8302. value of the current character cell-size attribute to the value in the order. 
  8303.  
  8304.  
  8305. ΓòÉΓòÉΓòÉ <hidden> Set Character Cell/Push and Set Character Cell - Topics ΓòÉΓòÉΓòÉ
  8306.  
  8307. Select an item: 
  8308.  
  8309. Syntax
  8310. Parameters
  8311. Remarks
  8312. Glossary
  8313.  
  8314.  
  8315. ΓòÉΓòÉΓòÉ 2.46. Set Character Direction/Push and Set Character Direction ΓòÉΓòÉΓòÉ
  8316.  
  8317.  
  8318. ΓòÉΓòÉΓòÉ <hidden> Set Character Direction/Push and Set Character Direction - Syntax ΓòÉΓòÉΓòÉ
  8319.  
  8320. These orders set, or push and set, the value of the current character direction 
  8321. attribute. 
  8322.  
  8323. Set Character Direction (GSCD) 
  8324. X'3A' (DIRECTION) 
  8325.  
  8326. Push and Set Character Direction (GPSCD) 
  8327. X'7A' (DIRECTION) 
  8328.  
  8329.  
  8330. ΓòÉΓòÉΓòÉ <hidden> GSCD/GPSCD Parameter - DIRECTION ΓòÉΓòÉΓòÉ
  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 - Parameters ΓòÉΓòÉΓòÉ
  8345.  
  8346.  DIRECTION (GBIT8) 
  8347.     Value for character direction: 
  8348.  
  8349.     All other values are reserved. 
  8350.  
  8351.     0x00       Drawing default 
  8352.     0x01       Left to right 
  8353.     0x02       Top to bottom 
  8354.     0x03       Right to left 
  8355.     0x04       Bottom to top. 
  8356.  
  8357.  
  8358. ΓòÉΓòÉΓòÉ <hidden> Set Character Direction/Push and Set Character Direction - Remarks ΓòÉΓòÉΓòÉ
  8359.  
  8360. The value of the current character direction attribute is pushed on to the 
  8361. Segment Call Stack by the Push and Set order only. Both orders then set the 
  8362. value of the current character direction attribute to the value in the order. 
  8363.  
  8364.  
  8365. ΓòÉΓòÉΓòÉ <hidden> Set Character Direction/Push and Set Character Direction - Topics ΓòÉΓòÉΓòÉ
  8366.  
  8367. Select an item: 
  8368.  
  8369. Syntax
  8370. Parameters
  8371. Remarks
  8372. Glossary
  8373.  
  8374.  
  8375. ΓòÉΓòÉΓòÉ 2.47. Set Character Extra/Push and Set Character Extra ΓòÉΓòÉΓòÉ
  8376.  
  8377.  
  8378. ΓòÉΓòÉΓòÉ <hidden> Set Character Extra/Push and Set Character Extra - Syntax ΓòÉΓòÉΓòÉ
  8379.  
  8380. These orders set, or push and set, the value of the current character extra 
  8381. attribute. 
  8382.  
  8383. Set Character Extra (GSCE) 
  8384. X'17' (LEN, FLAGS, RES2, INC) 
  8385.  
  8386. Push and Set Character Extra (GPSCE) 
  8387. X'57' (LEN, FLAGS, RES2, INC) 
  8388.  
  8389.  
  8390. ΓòÉΓòÉΓòÉ <hidden> GSCE/GPSCE Parameter - LEN ΓòÉΓòÉΓòÉ
  8391.  
  8392.  LEN (GLENGTH1) 
  8393.     Length of following data. 
  8394.  
  8395.  
  8396. ΓòÉΓòÉΓòÉ <hidden> GSCE/GPSCE Parameter - FLAGS ΓòÉΓòÉΓòÉ
  8397.  
  8398.  FLAGS 
  8399.     Values as follows: 
  8400.  
  8401.     DEFAULT (GBIT1) 
  8402.              Values as follows: 
  8403.  
  8404.              B"0"      Set to specified value. 
  8405.              B"1"      Set to drawing default. 
  8406.  
  8407.     RES1 (GBIT7) 
  8408.              Reserved value, must be 0. 
  8409.  
  8410.  
  8411. ΓòÉΓòÉΓòÉ <hidden> GSCE/GPSCE Parameter - RES2 ΓòÉΓòÉΓòÉ
  8412.  
  8413.  RES2 (GUNDF1) 
  8414.     Reserved value, must be 0. 
  8415.  
  8416.  
  8417. ΓòÉΓòÉΓòÉ <hidden> GSCE/GPSCE Parameter - INC ΓòÉΓòÉΓòÉ
  8418.  
  8419.  INC (GROF) 
  8420.     Increment. 
  8421.  
  8422.  
  8423. ΓòÉΓòÉΓòÉ <hidden> Set Character Extra/Push and Set Character Extra - Parameters ΓòÉΓòÉΓòÉ
  8424.  
  8425.  LEN (GLENGTH1) 
  8426.     Length of following data. 
  8427.  
  8428.  FLAGS 
  8429.     Values as follows: 
  8430.  
  8431.     DEFAULT (GBIT1) 
  8432.              Values as follows: 
  8433.  
  8434.              B"0"      Set to specified value. 
  8435.              B"1"      Set to drawing default. 
  8436.  
  8437.     RES1 (GBIT7) 
  8438.              Reserved value, must be 0. 
  8439.  
  8440.  RES2 (GUNDF1) 
  8441.     Reserved value, must be 0. 
  8442.  
  8443.  INC (GROF) 
  8444.     Increment. 
  8445.  
  8446.  
  8447. ΓòÉΓòÉΓòÉ <hidden> Set Character Extra/Push and Set Character Extra - Remarks ΓòÉΓòÉΓòÉ
  8448.  
  8449. The value of the current character extra attribute is pushed on to the Segment 
  8450. Call Stack by the Push and Set order only. Both orders set the value of the 
  8451. current character extra attribute to the value specified in the order. 
  8452.  
  8453.  
  8454. ΓòÉΓòÉΓòÉ <hidden> Set Character Extra/Push and Set Character Extra - Topics ΓòÉΓòÉΓòÉ
  8455.  
  8456. Select an item: 
  8457.  
  8458. Syntax
  8459. Parameters
  8460. Remarks
  8461. Glossary
  8462.  
  8463.  
  8464. ΓòÉΓòÉΓòÉ 2.48. Set Character Precision/Push and Set Character Precision ΓòÉΓòÉΓòÉ
  8465.  
  8466.  
  8467. ΓòÉΓòÉΓòÉ <hidden> Set Character Precision/Push and Set Character Precision - Syntax ΓòÉΓòÉΓòÉ
  8468.  
  8469. These orders set, or push and set, the value of the current character precision 
  8470. attribute. 
  8471.  
  8472. Set Character Precision (GSCR) 
  8473. X'39' (PREC) 
  8474.  
  8475. Push and Set Character Precision (GPSCR) 
  8476. X'79' (PREC) 
  8477.  
  8478.  
  8479. ΓòÉΓòÉΓòÉ <hidden> GSCR/GPSCR Parameter - PREC ΓòÉΓòÉΓòÉ
  8480.  
  8481.  PREC (GBIT8) 
  8482.     Value for character-precision attribute: 
  8483.  
  8484.     All other values are reserved. 
  8485.  
  8486.     0x00       Drawing default 
  8487.     0x01       String precision 
  8488.     0x02       Character precision 
  8489.     0x03       Stroke precision 
  8490.  
  8491.  
  8492. ΓòÉΓòÉΓòÉ <hidden> Set Character Precision/Push and Set Character Precision - Parameters ΓòÉΓòÉΓòÉ
  8493.  
  8494.  PREC (GBIT8) 
  8495.     Value for character-precision attribute: 
  8496.  
  8497.     All other values are reserved. 
  8498.  
  8499.     0x00       Drawing default 
  8500.     0x01       String precision 
  8501.     0x02       Character precision 
  8502.     0x03       Stroke precision 
  8503.  
  8504.  
  8505. ΓòÉΓòÉΓòÉ <hidden> Set Character Precision/Push and Set Character Precision - Remarks ΓòÉΓòÉΓòÉ
  8506.  
  8507. The value of the current character precision attribute is pushed on to the 
  8508. Segment Call Stack by the Push and Set order only. Both orders then set the 
  8509. value of the current character precision attribute to the value in the order. 
  8510.  
  8511.  
  8512. ΓòÉΓòÉΓòÉ <hidden> Set Character Precision/Push and Set Character Precision - Topics ΓòÉΓòÉΓòÉ
  8513.  
  8514. Select an item: 
  8515.  
  8516. Syntax
  8517. Parameters
  8518. Remarks
  8519. Glossary
  8520.  
  8521.  
  8522. ΓòÉΓòÉΓòÉ 2.49. Set Character Set/Push and Set Character Set ΓòÉΓòÉΓòÉ
  8523.  
  8524.  
  8525. ΓòÉΓòÉΓòÉ <hidden> Set Character Set/Push and Set Character Set - Syntax ΓòÉΓòÉΓòÉ
  8526.  
  8527. These orders set, or push and set, the value of the current character-set 
  8528. attribute. 
  8529.  
  8530. Set Character Set (GSCS) 
  8531. X'38' (LCID) 
  8532.  
  8533. Push and Set Character Set (GPSCS) 
  8534. X'78' (LCID) 
  8535.  
  8536.  
  8537. ΓòÉΓòÉΓòÉ <hidden> GSCS/GPSCS Parameter - LCID ΓòÉΓòÉΓòÉ
  8538.  
  8539.  LCID (GUCHAR) 
  8540.     Local identifier (LCID) for the character set: 
  8541.  
  8542.     0x00          Drawing default 
  8543.     0x01-0xFE     Lcid for the symbol set 
  8544.     0xFF          Special character set. 
  8545.  
  8546.  
  8547. ΓòÉΓòÉΓòÉ <hidden> Set Character Set/Push and Set Character Set - Parameters ΓòÉΓòÉΓòÉ
  8548.  
  8549.  LCID (GUCHAR) 
  8550.     Local identifier (LCID) for the character set: 
  8551.  
  8552.     0x00          Drawing default 
  8553.     0x01-0xFE     Lcid for the symbol set 
  8554.     0xFF          Special character set. 
  8555.  
  8556.  
  8557. ΓòÉΓòÉΓòÉ <hidden> Set Character Set/Push and Set Character Set - Remarks ΓòÉΓòÉΓòÉ
  8558.  
  8559. The value of the current character-set attribute is pushed on to the Segment 
  8560. Call Stack by the Push and Set order only. Both orders then set the value of 
  8561. the current character-set attribute to the value in the order. 
  8562.  
  8563.  
  8564. ΓòÉΓòÉΓòÉ <hidden> Set Character Set/Push and Set Character Set - Topics ΓòÉΓòÉΓòÉ
  8565.  
  8566. Select an item: 
  8567.  
  8568. Syntax
  8569. Parameters
  8570. Remarks
  8571. Glossary
  8572.  
  8573.  
  8574. ΓòÉΓòÉΓòÉ 2.50. Set Character Shear/Push and Set Character Shear ΓòÉΓòÉΓòÉ
  8575.  
  8576.  
  8577. ΓòÉΓòÉΓòÉ <hidden> Set Character Shear/Push and Set Character Shear - Syntax ΓòÉΓòÉΓòÉ
  8578.  
  8579. These orders set, or push and set, the value of the current character shear 
  8580. attribute. 
  8581.  
  8582. Set Character Shear (GSCH) 
  8583. X'35' (LEN, HX, HY) 
  8584.  
  8585. Push and Set Character Shear (GPSCH) 
  8586. X'75' (LEN, HX, HY) 
  8587.  
  8588.  
  8589. ΓòÉΓòÉΓòÉ <hidden> GSCH/GPSCH Parameter - LEN ΓòÉΓòÉΓòÉ
  8590.  
  8591.  LEN (GLENGTH1) 
  8592.     Length of following data. 
  8593.  
  8594.  
  8595. ΓòÉΓòÉΓòÉ <hidden> GSCH/GPSCH Parameter - HX ΓòÉΓòÉΓòÉ
  8596.  
  8597.  HX (GROSOL) 
  8598.     Dividend of shear ratio. 
  8599.  
  8600.  
  8601. ΓòÉΓòÉΓòÉ <hidden> GSCH/GPSCH Parameter - HY ΓòÉΓòÉΓòÉ
  8602.  
  8603.  HY (GROSOL) 
  8604.     Divisor of shear ratio. 
  8605.  
  8606.  
  8607. ΓòÉΓòÉΓòÉ <hidden> Set Character Shear/Push and Set Character Shear - Parameters ΓòÉΓòÉΓòÉ
  8608.  
  8609.  LEN (GLENGTH1) 
  8610.     Length of following data. 
  8611.  
  8612.  HX (GROSOL) 
  8613.     Dividend of shear ratio. 
  8614.  
  8615.  HY (GROSOL) 
  8616.     Divisor of shear ratio. 
  8617.  
  8618.  
  8619. ΓòÉΓòÉΓòÉ <hidden> Set Character Shear/Push and Set Character Shear - Remarks ΓòÉΓòÉΓòÉ
  8620.  
  8621. When HX and HY are both 0, the drawing default is set. The value of the current 
  8622. character shear attribute is pushed on to the Segment Call Stack by the Push 
  8623. and Set order only. Both orders then set the value of the current character 
  8624. shear attribute to the value in the order. 
  8625.  
  8626.  
  8627. ΓòÉΓòÉΓòÉ <hidden> Set Character Shear/Push and Set Character Shear - Topics ΓòÉΓòÉΓòÉ
  8628.  
  8629. Select an item: 
  8630.  
  8631. Syntax
  8632. Parameters
  8633. Remarks
  8634. Glossary
  8635.  
  8636.  
  8637. ΓòÉΓòÉΓòÉ 2.51. Set Clip Path ΓòÉΓòÉΓòÉ
  8638.  
  8639.  
  8640. ΓòÉΓòÉΓòÉ <hidden> Set Clip Path - Syntax ΓòÉΓòÉΓòÉ
  8641.  
  8642. This order sets the current clip path. 
  8643.  
  8644. Set Clip Path (GSCPTH) 
  8645. X'B4' (LEN, FLAGS, RES, PTHID) 
  8646.  
  8647.  
  8648. ΓòÉΓòÉΓòÉ <hidden> GSCPTH Parameter - LEN ΓòÉΓòÉΓòÉ
  8649.  
  8650.  LEN (GLENGTH1) 
  8651.     Length of following data. 
  8652.  
  8653.  
  8654. ΓòÉΓòÉΓòÉ <hidden> GSCPTH Parameter - FLAGS ΓòÉΓòÉΓòÉ
  8655.  
  8656.  FLAGS 
  8657.     Extra functions: 
  8658.  
  8659.     RES (GBIT1) 
  8660.              Reserved value, must be 0. 
  8661.  
  8662.     FILL (GBIT1) 
  8663.              Values: 
  8664.  
  8665.              0       Alternate mode 
  8666.              1       Winding mode. 
  8667.  
  8668.     INTER (GBIT1) 
  8669.              Values: 
  8670.  
  8671.              0       Set to specified path 
  8672.              1       Set to intersection of specified and current clip path. 
  8673.  
  8674.     RES2 (GBIT5) 
  8675.              Reserved value, must be 0. 
  8676.  
  8677.  
  8678. ΓòÉΓòÉΓòÉ <hidden> GSCPTH Parameter - RES ΓòÉΓòÉΓòÉ
  8679.  
  8680.  RES (GBIT8) 
  8681.     Reserved. 
  8682.  
  8683.     0x00    Only valid value. 
  8684.  
  8685.  
  8686. ΓòÉΓòÉΓòÉ <hidden> GSCPTH Parameter - PTHID ΓòÉΓòÉΓòÉ
  8687.  
  8688.  PTHID (GLONG) 
  8689.     Path identifier. 
  8690.  
  8691.     0x00000000              No clipping. 
  8692.     0x00000001-0xFFFFFFFF   Path identifier. 
  8693.  
  8694.  
  8695. ΓòÉΓòÉΓòÉ <hidden> Set Clip Path - Parameters ΓòÉΓòÉΓòÉ
  8696.  
  8697.  LEN (GLENGTH1) 
  8698.     Length of following data. 
  8699.  
  8700.  FLAGS 
  8701.     Extra functions: 
  8702.  
  8703.     RES (GBIT1) 
  8704.              Reserved value, must be 0. 
  8705.  
  8706.     FILL (GBIT1) 
  8707.              Values: 
  8708.  
  8709.              0       Alternate mode 
  8710.              1       Winding mode. 
  8711.  
  8712.     INTER (GBIT1) 
  8713.              Values: 
  8714.  
  8715.              0       Set to specified path 
  8716.              1       Set to intersection of specified and current clip path. 
  8717.  
  8718.     RES2 (GBIT5) 
  8719.              Reserved value, must be 0. 
  8720.  
  8721.  RES (GBIT8) 
  8722.     Reserved. 
  8723.  
  8724.     0x00    Only valid value. 
  8725.  
  8726.  PTHID (GLONG) 
  8727.     Path identifier. 
  8728.  
  8729.     0x00000000              No clipping. 
  8730.     0x00000001-0xFFFFFFFF   Path identifier. 
  8731.  
  8732.  
  8733. ΓòÉΓòÉΓòÉ <hidden> Set Clip Path - Topics ΓòÉΓòÉΓòÉ
  8734.  
  8735. Select an item: 
  8736.  
  8737. Syntax
  8738. Parameters
  8739. Glossary
  8740.  
  8741.  
  8742. ΓòÉΓòÉΓòÉ 2.52. Set Color/Push and Set Color ΓòÉΓòÉΓòÉ
  8743.  
  8744.  
  8745. ΓòÉΓòÉΓòÉ <hidden> Set Color/Push and Set Color - Syntax ΓòÉΓòÉΓòÉ
  8746.  
  8747. These orders set, or push and set, the value of the current color attribute. 
  8748.  
  8749. Set Color (GSCOL) 
  8750. X'0A' (COL) 
  8751.  
  8752. Push and Set Color (GPSCOL) 
  8753. X'4A' (COL) 
  8754.  
  8755.  
  8756. ΓòÉΓòÉΓòÉ <hidden> GSCOL/GPSCOL Parameter - COL ΓòÉΓòÉΓòÉ
  8757.  
  8758.  COL (GBIT8) 
  8759.     Value for color attribute: 
  8760.  
  8761.     0x00-0x08     These one-byte values are converted to two-byte values by 
  8762.                   preceding the value with 0xFF. The resultant is then treated 
  8763.                   as a two-byte value as defined by the Set Extended Color/Push 
  8764.                   and Set Extended Color order. 
  8765.     Other         Reserved values. 
  8766.  
  8767.  
  8768. ΓòÉΓòÉΓòÉ <hidden> Set Color/Push and Set Color - Parameters ΓòÉΓòÉΓòÉ
  8769.  
  8770.  COL (GBIT8) 
  8771.     Value for color attribute: 
  8772.  
  8773.     0x00-0x08     These one-byte values are converted to two-byte values by 
  8774.                   preceding the value with 0xFF. The resultant is then treated 
  8775.                   as a two-byte value as defined by the Set Extended Color/Push 
  8776.                   and Set Extended Color order. 
  8777.     Other         Reserved values. 
  8778.  
  8779.  
  8780. ΓòÉΓòÉΓòÉ <hidden> Set Color/Push and Set Color - Remarks ΓòÉΓòÉΓòÉ
  8781.  
  8782. The value of the current color attribute is pushed on to the Segment Call Stack 
  8783. by the Push and Set order only. Both orders then set the value of the current 
  8784. color attribute to the value in the order. 
  8785.  
  8786.  
  8787. ΓòÉΓòÉΓòÉ <hidden> Set Color/Push and Set Color - Topics ΓòÉΓòÉΓòÉ
  8788.  
  8789. Select an item: 
  8790.  
  8791. Syntax
  8792. Parameters
  8793. Remarks
  8794. Glossary
  8795.  
  8796.  
  8797. ΓòÉΓòÉΓòÉ 2.53. Set Current Position/Push and Set Current Position ΓòÉΓòÉΓòÉ
  8798.  
  8799.  
  8800. ΓòÉΓòÉΓòÉ <hidden> Set Current Position/Push and Set Current Position - Syntax ΓòÉΓòÉΓòÉ
  8801.  
  8802. These orders set, or push and set, the value of the current position. 
  8803.  
  8804. Set Current Position (GSCP) 
  8805. X'21' (LEN, P) 
  8806.  
  8807. Push and Set Current Position (GPSCP) 
  8808. X'61' (LEN, P) 
  8809.  
  8810.  
  8811. ΓòÉΓòÉΓòÉ <hidden> GSCP/GPSCP Parameter - LEN ΓòÉΓòÉΓòÉ
  8812.  
  8813.  LEN (GLENGTH1) 
  8814.     Length of following data. 
  8815.  
  8816.  
  8817. ΓòÉΓòÉΓòÉ <hidden> GSCP/GPSCP Parameter - P ΓòÉΓòÉΓòÉ
  8818.  
  8819.  P (GPOINT) 
  8820.     Coordinate data. 
  8821.  
  8822.  
  8823. ΓòÉΓòÉΓòÉ <hidden> Set Current Position/Push and Set Current Position - Parameters ΓòÉΓòÉΓòÉ
  8824.  
  8825.  LEN (GLENGTH1) 
  8826.     Length of following data. 
  8827.  
  8828.  P (GPOINT) 
  8829.     Coordinate data. 
  8830.  
  8831.  
  8832. ΓòÉΓòÉΓòÉ <hidden> Set Current Position/Push and Set Current Position - Remarks ΓòÉΓòÉΓòÉ
  8833.  
  8834. The value of the current position is pushed on to the Segment Call Stack by the 
  8835. Push and Set order only. Both orders then set the value of the current position 
  8836. to the value in the order. 
  8837.  
  8838.  
  8839. ΓòÉΓòÉΓòÉ <hidden> Set Current Position/Push and Set Current Position - Topics ΓòÉΓòÉΓòÉ
  8840.  
  8841. Select an item: 
  8842.  
  8843. Syntax
  8844. Parameters
  8845. Remarks
  8846. Glossary
  8847.  
  8848.  
  8849. ΓòÉΓòÉΓòÉ 2.54. Set Extended Color/Push and Set Extended Color ΓòÉΓòÉΓòÉ
  8850.  
  8851.  
  8852. ΓòÉΓòÉΓòÉ <hidden> Set Extended Color/Push and Set Extended Color - Syntax ΓòÉΓòÉΓòÉ
  8853.  
  8854. These orders set, or push and set, the value of the current color attribute. 
  8855.  
  8856. Set Extended Color (GSECOL) 
  8857. X'26' (LEN, COLOR) 
  8858.  
  8859. Push and Set Extended Color (GPSECOL) 
  8860. X'66' (LEN, COLOR) 
  8861.  
  8862.  
  8863. ΓòÉΓòÉΓòÉ <hidden> GSECOL/GPSECOL Parameter - LEN ΓòÉΓòÉΓòÉ
  8864.  
  8865.  LEN (GLENGTH1) 
  8866.     Length of following data. 
  8867.  
  8868.     0x02    Only valid value. 
  8869.  
  8870.  
  8871. ΓòÉΓòÉΓòÉ <hidden> GSECOL/GPSECOL Parameter - COLOR ΓòÉΓòÉΓòÉ
  8872.  
  8873.  COLOR (GBIT16) 
  8874.     Color-table index. Except for the special values, the values 0x0000 through 
  8875.     0xnnnn are allowed color indexes; that is, as many values as are allowed by 
  8876.     the size of the LCT. 
  8877.  
  8878.  Special Values 
  8879.  
  8880.     0x0000 
  8881.             Drawing default 
  8882.     0x0007 
  8883.             White 
  8884.     0x0008 
  8885.             Black 
  8886.     0xFF00 
  8887.             Drawing default 
  8888.     0xFF0n 
  8889.             Color indexes 0x000n, where n is in the range 1 through 7. 
  8890.     0xFF08 
  8891.             Color index 0 (reset color). 
  8892.  
  8893.  
  8894. ΓòÉΓòÉΓòÉ <hidden> Set Extended Color/Push and Set Extended Color - Parameters ΓòÉΓòÉΓòÉ
  8895.  
  8896.  LEN (GLENGTH1) 
  8897.     Length of following data. 
  8898.  
  8899.     0x02    Only valid value. 
  8900.  
  8901.  COLOR (GBIT16) 
  8902.     Color-table index. Except for the special values, the values 0x0000 through 
  8903.     0xnnnn are allowed color indexes; that is, as many values as are allowed by 
  8904.     the size of the LCT. 
  8905.  
  8906.  Special Values 
  8907.  
  8908.     0x0000 
  8909.             Drawing default 
  8910.     0x0007 
  8911.             White 
  8912.     0x0008 
  8913.             Black 
  8914.     0xFF00 
  8915.             Drawing default 
  8916.     0xFF0n 
  8917.             Color indexes 0x000n, where n is in the range 1 through 7. 
  8918.     0xFF08 
  8919.             Color index 0 (reset color). 
  8920.  
  8921.  
  8922. ΓòÉΓòÉΓòÉ <hidden> Set Extended Color/Push and Set Extended Color - Remarks ΓòÉΓòÉΓòÉ
  8923.  
  8924. The value of the current extended color attribute is pushed on to the Segment 
  8925. Call Stack by the Push and Set order only. Both orders then set the value of 
  8926. the current extended color attribute to the value in the order. 
  8927.  
  8928.  
  8929. ΓòÉΓòÉΓòÉ <hidden> Set Extended Color/Push and Set Extended Color - Topics ΓòÉΓòÉΓòÉ
  8930.  
  8931. Select an item: 
  8932.  
  8933. Syntax
  8934. Parameters
  8935. Remarks
  8936. Glossary
  8937.  
  8938.  
  8939. ΓòÉΓòÉΓòÉ 2.55. Set Fractional Line Width/Push and Set Fractional Line Width ΓòÉΓòÉΓòÉ
  8940.  
  8941.  
  8942. ΓòÉΓòÉΓòÉ <hidden> Set Fractional Line Width/Push and Set Fractional Line Width - Syntax ΓòÉΓòÉΓòÉ
  8943.  
  8944. These orders set, or push and set, the value of the current line-width 
  8945. attribute. 
  8946.  
  8947. Set Fractional Line Width (GSFLW) 
  8948. X'11' (LEN, LINEWIDTH) 
  8949.  
  8950. Push and Set Fractional Line Width (GPSFLW) 
  8951. X'51' (LEN, LINEWIDTH) 
  8952.  
  8953.  
  8954. ΓòÉΓòÉΓòÉ <hidden> GSFLW/GPSFLW Parameter - LEN ΓòÉΓòÉΓòÉ
  8955.  
  8956.  LEN (GLENGTH1) 
  8957.     Length of following data. 
  8958.  
  8959.     0x02    Only valid value. 
  8960.  
  8961.  
  8962. ΓòÉΓòÉΓòÉ <hidden> GSFLW/GPSFLW Parameter - LINEWIDTH ΓòÉΓòÉΓòÉ
  8963.  
  8964.  LINEWIDTH (GROUFS) 
  8965.     Value for the line-width attribute. 
  8966.  
  8967.     The nonzero value is an integral and fractional multiplier of the normal 
  8968.     line width: 
  8969.  
  8970.     0x0000            Drawing default 
  8971.     0x0001-0xFFFF     Multiplier of normal line width. 
  8972.  
  8973.  
  8974. ΓòÉΓòÉΓòÉ <hidden> Set Fractional Line Width/Push and Set Fractional Line Width - Parameters ΓòÉΓòÉΓòÉ
  8975.  
  8976.  LEN (GLENGTH1) 
  8977.     Length of following data. 
  8978.  
  8979.     0x02    Only valid value. 
  8980.  
  8981.  LINEWIDTH (GROUFS) 
  8982.     Value for the line-width attribute. 
  8983.  
  8984.     The nonzero value is an integral and fractional multiplier of the normal 
  8985.     line width: 
  8986.  
  8987.     0x0000            Drawing default 
  8988.     0x0001-0xFFFF     Multiplier of normal line width. 
  8989.  
  8990.  
  8991. ΓòÉΓòÉΓòÉ <hidden> Set Fractional Line Width/Push and Set Fractional Line Width - Remarks ΓòÉΓòÉΓòÉ
  8992.  
  8993. The value of the current line-width attribute is pushed on to the Segment Call 
  8994. Stack by the Push and Set order only. Both orders then set the value of the 
  8995. current line-width attribute to the value in the order. 
  8996.  
  8997.  
  8998. ΓòÉΓòÉΓòÉ <hidden> Set Fractional Line Width/Push and Set Fractional Line Width - Topics ΓòÉΓòÉΓòÉ
  8999.  
  9000. Select an item: 
  9001.  
  9002. Syntax
  9003. Parameters
  9004. Remarks
  9005. Glossary
  9006.  
  9007.  
  9008. ΓòÉΓòÉΓòÉ 2.56. Set Indexed Color/Push and Set Indexed Color ΓòÉΓòÉΓòÉ
  9009.  
  9010.  
  9011. ΓòÉΓòÉΓòÉ <hidden> Set Indexed Color/Push and Set Indexed Color - Syntax ΓòÉΓòÉΓòÉ
  9012.  
  9013. These orders set, or push and set, the value of the current color attribute. 
  9014.  
  9015. Set Indexed Color (GSICOL) 
  9016. X'A6' (LEN, FLAGS, INDEX) 
  9017.  
  9018. Push and Set Indexed Color (GPSICOL) 
  9019. X'E6' (LEN, FLAGS, INDEX) 
  9020.  
  9021.  
  9022. ΓòÉΓòÉΓòÉ <hidden> GSICOL/GPSICOL Parameter - LEN ΓòÉΓòÉΓòÉ
  9023.  
  9024.  LEN (GLENGTH1) 
  9025.     Length of following data. 
  9026.  
  9027.     0x04    Only valid value. 
  9028.  
  9029.  
  9030. ΓòÉΓòÉΓòÉ <hidden> GSICOL/GPSICOL Parameter - FLAGS ΓòÉΓòÉΓòÉ
  9031.  
  9032.  FLAGS 
  9033.     Values: 
  9034.  
  9035.     DEFAULT (GBIT1) 
  9036.              Options: 
  9037.  
  9038.              0       Use specified index 
  9039.              1       Use drawing default color. 
  9040.  
  9041.     SPEC (GBIT1) 
  9042.              Options: 
  9043.  
  9044.              0       Use index directly 
  9045.              1       Special value. 
  9046.  
  9047.     RES (GBIT6) 
  9048.              Reserved value, must be 0. 
  9049.  
  9050.  
  9051. ΓòÉΓòÉΓòÉ <hidden> GSICOL/GPSICOL Parameter - INDEX ΓòÉΓòÉΓòÉ
  9052.  
  9053.  INDEX (GINDEX3) 
  9054.     Value for color index. 
  9055.  
  9056.     The value is a direct index into the current color table or a special 
  9057.     value. 
  9058.  
  9059.     The table can be the standard table, or one loaded by the user. The special 
  9060.     values are: 
  9061.  
  9062.     1 
  9063.             Black 
  9064.     2 
  9065.             White 
  9066.     4 
  9067.             All ones 
  9068.     5 
  9069.             All zeros. 
  9070.  
  9071.  
  9072. ΓòÉΓòÉΓòÉ <hidden> Set Indexed Color/Push and Set Indexed Color - Parameters ΓòÉΓòÉΓòÉ
  9073.  
  9074.  LEN (GLENGTH1) 
  9075.     Length of following data. 
  9076.  
  9077.     0x04    Only valid value. 
  9078.  
  9079.  FLAGS 
  9080.     Values: 
  9081.  
  9082.     DEFAULT (GBIT1) 
  9083.              Options: 
  9084.  
  9085.              0       Use specified index 
  9086.              1       Use drawing default color. 
  9087.  
  9088.     SPEC (GBIT1) 
  9089.              Options: 
  9090.  
  9091.              0       Use index directly 
  9092.              1       Special value. 
  9093.  
  9094.     RES (GBIT6) 
  9095.              Reserved value, must be 0. 
  9096.  
  9097.  INDEX (GINDEX3) 
  9098.     Value for color index. 
  9099.  
  9100.     The value is a direct index into the current color table or a special 
  9101.     value. 
  9102.  
  9103.     The table can be the standard table, or one loaded by the user. The special 
  9104.     values are: 
  9105.  
  9106.     1 
  9107.             Black 
  9108.     2 
  9109.             White 
  9110.     4 
  9111.             All ones 
  9112.     5 
  9113.             All zeros. 
  9114.  
  9115.  
  9116. ΓòÉΓòÉΓòÉ <hidden> Set Indexed Color/Push and Set Indexed Color - Remarks ΓòÉΓòÉΓòÉ
  9117.  
  9118. The value of the current color attribute is pushed on to the Segment Call Stack 
  9119. by the Push and Set order only. Both orders then set the value of the current 
  9120. color attribute to the value in the order. 
  9121.  
  9122.  
  9123. ΓòÉΓòÉΓòÉ <hidden> Set Indexed Color/Push and Set Indexed Color - Topics ΓòÉΓòÉΓòÉ
  9124.  
  9125. Select an item: 
  9126.  
  9127. Syntax
  9128. Parameters
  9129. Remarks
  9130. Glossary
  9131.  
  9132.  
  9133. ΓòÉΓòÉΓòÉ 2.57. Set Individual Attribute/Push and Set Individual Attribute ΓòÉΓòÉΓòÉ
  9134.  
  9135.  
  9136. ΓòÉΓòÉΓòÉ <hidden> Set Individual Attribute/Push and Set Individual Attribute - Syntax ΓòÉΓòÉΓòÉ
  9137.  
  9138. These orders set, or push and set, the value of the color, background color, 
  9139. mix, or background mix attribute for the line character, marker, pattern, or 
  9140. image primitive type. 
  9141.  
  9142. Set Individual Attribute (GSIA) 
  9143. X'14' (LEN, ATYPE, PTYPE, FLAG1, VAL) 
  9144.  
  9145. Push and Set Individual Attribute (GPSIA) 
  9146. X'54' (LEN, ATYPE, PTYPE, FLAG1, VAL) 
  9147.  
  9148.  
  9149. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - LEN ΓòÉΓòÉΓòÉ
  9150.  
  9151.  LEN (GLENGTH1) 
  9152.     Length of following data. 
  9153.  
  9154.  
  9155. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - ATYPE ΓòÉΓòÉΓòÉ
  9156.  
  9157.  ATYPE (GBIT8) 
  9158.     Attribute type: 
  9159.  
  9160.     0x1        Color 
  9161.     0x2        Background color 
  9162.     0x3        Mix 
  9163.     0x4        Background Mix 
  9164.     Other      All other values are reserved. 
  9165.  
  9166.  
  9167. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - PTYPE ΓòÉΓòÉΓòÉ
  9168.  
  9169.  PTYPE (GBIT8) 
  9170.     Primitive type: 
  9171.  
  9172.     0x1 
  9173.             Line 
  9174.     0x2 
  9175.             Character 
  9176.     0x3 
  9177.             Marker 
  9178.     0x4 
  9179.             Pattern 
  9180.     0x5 
  9181.             Image 
  9182.     Other 
  9183.             All other values are reserved. 
  9184.  
  9185.  
  9186. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - FLAG1 ΓòÉΓòÉΓòÉ
  9187.  
  9188.  FLAG1 
  9189.     Values: 
  9190.  
  9191.     DEFAULT (GBIT1) 
  9192.              Options: 
  9193.  
  9194.              0 
  9195.                      Use specified value 
  9196.              1 
  9197.                      Use drawing default color. 
  9198.  
  9199.     SPEC (GBIT1) 
  9200.              Options: 
  9201.  
  9202.              0 
  9203.                      Use value directly 
  9204.              1 
  9205.                      Special Value. 
  9206.  
  9207.     RES (GBIT6) 
  9208.              Reserved value, must be 0. 
  9209.  
  9210.  
  9211. ΓòÉΓòÉΓòÉ <hidden> GSIA/GPSIA Parameter - VAL ΓòÉΓòÉΓòÉ
  9212.  
  9213.  VAL (GINDATT) 
  9214.     Color index value. 
  9215.  
  9216.     For colors, the value is a direct index into the current color table or a 
  9217.     special value. 
  9218.  
  9219.     The table can be the standard table, or one loaded by the user. The special 
  9220.     values are: 
  9221.  
  9222.     1 
  9223.             Black 
  9224.     2 
  9225.             White 
  9226.     4 
  9227.             All ones 
  9228.     5 
  9229.             All zeros. 
  9230.  
  9231.  
  9232. ΓòÉΓòÉΓòÉ <hidden> Set Individual Attribute/Push and Set Individual Attribute - Parameters ΓòÉΓòÉΓòÉ
  9233.  
  9234.  LEN (GLENGTH1) 
  9235.     Length of following data. 
  9236.  
  9237.  ATYPE (GBIT8) 
  9238.     Attribute type: 
  9239.  
  9240.     0x1        Color 
  9241.     0x2        Background color 
  9242.     0x3        Mix 
  9243.     0x4        Background Mix 
  9244.     Other      All other values are reserved. 
  9245.  
  9246.  PTYPE (GBIT8) 
  9247.     Primitive type: 
  9248.  
  9249.     0x1 
  9250.             Line 
  9251.     0x2 
  9252.             Character 
  9253.     0x3 
  9254.             Marker 
  9255.     0x4 
  9256.             Pattern 
  9257.     0x5 
  9258.             Image 
  9259.     Other 
  9260.             All other values are reserved. 
  9261.  
  9262.  FLAG1 
  9263.     Values: 
  9264.  
  9265.     DEFAULT (GBIT1) 
  9266.              Options: 
  9267.  
  9268.              0 
  9269.                      Use specified value 
  9270.              1 
  9271.                      Use drawing default color. 
  9272.  
  9273.     SPEC (GBIT1) 
  9274.              Options: 
  9275.  
  9276.              0 
  9277.                      Use value directly 
  9278.              1 
  9279.                      Special Value. 
  9280.  
  9281.     RES (GBIT6) 
  9282.              Reserved value, must be 0. 
  9283.  
  9284.  VAL (GINDATT) 
  9285.     Color index value. 
  9286.  
  9287.     For colors, the value is a direct index into the current color table or a 
  9288.     special value. 
  9289.  
  9290.     The table can be the standard table, or one loaded by the user. The special 
  9291.     values are: 
  9292.  
  9293.     1 
  9294.             Black 
  9295.     2 
  9296.             White 
  9297.     4 
  9298.             All ones 
  9299.     5 
  9300.             All zeros. 
  9301.  
  9302.  
  9303. ΓòÉΓòÉΓòÉ <hidden> Set Individual Attribute/Push and Set Individual Attribute - Remarks ΓòÉΓòÉΓòÉ
  9304.  
  9305. The value of the current attribute is pushed on to the Segment Call Stack by 
  9306. the Push and Set order only. Both orders then set the value of the individual 
  9307. attribute to the value in the order. 
  9308.  
  9309.  
  9310. ΓòÉΓòÉΓòÉ <hidden> Set Individual Attribute/Push and Set Individual Attribute - Topics ΓòÉΓòÉΓòÉ
  9311.  
  9312. Select an item: 
  9313.  
  9314. Syntax
  9315. Parameters
  9316. Remarks
  9317. Glossary
  9318.  
  9319.  
  9320. ΓòÉΓòÉΓòÉ 2.58. Set Line End/Push and Set Line End ΓòÉΓòÉΓòÉ
  9321.  
  9322.  
  9323. ΓòÉΓòÉΓòÉ <hidden> Set Line End/Push and Set Line End - Syntax ΓòÉΓòÉΓòÉ
  9324.  
  9325. These orders set, or push and set, the value of the current line-end attribute. 
  9326.  
  9327. Set Line End (GSLE) 
  9328. X'1A' (LINEEND) 
  9329.  
  9330. Push and Set Line End (GPSLE) 
  9331. X'5A' (LINEEND) 
  9332.  
  9333.  
  9334. ΓòÉΓòÉΓòÉ <hidden> GSLE/GPSLE Parameter - LINEEND ΓòÉΓòÉΓòÉ
  9335.  
  9336.  LINEEND (GBIT8) 
  9337.     Value for the line-end attribute: 
  9338.  
  9339.     0x00       Drawing default 
  9340.     0x01       Flat 
  9341.     0x02       Square 
  9342.     0x03       Round 
  9343.     Other      Reserved values. 
  9344.  
  9345.  
  9346. ΓòÉΓòÉΓòÉ <hidden> Set Line End/Push and Set Line End - Parameters ΓòÉΓòÉΓòÉ
  9347.  
  9348.  LINEEND (GBIT8) 
  9349.     Value for the line-end attribute: 
  9350.  
  9351.     0x00       Drawing default 
  9352.     0x01       Flat 
  9353.     0x02       Square 
  9354.     0x03       Round 
  9355.     Other      Reserved values. 
  9356.  
  9357.  
  9358. ΓòÉΓòÉΓòÉ <hidden> Set Line End/Push and Set Line End - Remarks ΓòÉΓòÉΓòÉ
  9359.  
  9360. The value of the current line-end attribute is pushed on to the Segment Call 
  9361. Stack by the Push and Set order only. Both orders then set the value of the 
  9362. current line-end attribute to the value in the order. 
  9363.  
  9364.  
  9365. ΓòÉΓòÉΓòÉ <hidden> Set Line End/Push and Set Line End - Topics ΓòÉΓòÉΓòÉ
  9366.  
  9367. Select an item: 
  9368.  
  9369. Syntax
  9370. Parameters
  9371. Remarks
  9372. Glossary
  9373.  
  9374.  
  9375. ΓòÉΓòÉΓòÉ 2.59. Set Line Join/Push and Set Line Join ΓòÉΓòÉΓòÉ
  9376.  
  9377.  
  9378. ΓòÉΓòÉΓòÉ <hidden> Set Line Join/Push and Set Line Join - Syntax ΓòÉΓòÉΓòÉ
  9379.  
  9380. These orders set the value of the current line-join attribute. 
  9381.  
  9382. Set Line Join (GSLJ) 
  9383. X'1B' (LINEJOIN) 
  9384.  
  9385. Push and Set Line Join (GPSLJ) 
  9386. X'5B' (LINEJOIN) 
  9387.  
  9388.  
  9389. ΓòÉΓòÉΓòÉ <hidden> GSLJ/GPSLJ Parameter - LINEJOIN ΓòÉΓòÉΓòÉ
  9390.  
  9391.  LINEJOIN (GBIT8) 
  9392.     Value for line-join attribute: 
  9393.  
  9394.     0x00       Drawing default 
  9395.     0x01       Bevel 
  9396.     0x02       Round 
  9397.     0x03       Miter 
  9398.     Other      Reserved values. 
  9399.  
  9400.  
  9401. ΓòÉΓòÉΓòÉ <hidden> Set Line Join/Push and Set Line Join - Parameters ΓòÉΓòÉΓòÉ
  9402.  
  9403.  LINEJOIN (GBIT8) 
  9404.     Value for line-join attribute: 
  9405.  
  9406.     0x00       Drawing default 
  9407.     0x01       Bevel 
  9408.     0x02       Round 
  9409.     0x03       Miter 
  9410.     Other      Reserved values. 
  9411.  
  9412.  
  9413. ΓòÉΓòÉΓòÉ <hidden> Set Line Join/Push and Set Line Join - Remarks ΓòÉΓòÉΓòÉ
  9414.  
  9415. The value of the current line-join attribute is pushed on to the Segment Call 
  9416. stack by the Push and Set order only. Both orders then set the value of the 
  9417. current line-join attribute to the value in the order. 
  9418.  
  9419.  
  9420. ΓòÉΓòÉΓòÉ <hidden> Set Line Join/Push and Set Line Join - Topics ΓòÉΓòÉΓòÉ
  9421.  
  9422. Select an item: 
  9423.  
  9424. Syntax
  9425. Parameters
  9426. Remarks
  9427. Glossary
  9428.  
  9429.  
  9430. ΓòÉΓòÉΓòÉ 2.60. Set Line Type/Push and Set Line Type ΓòÉΓòÉΓòÉ
  9431.  
  9432.  
  9433. ΓòÉΓòÉΓòÉ <hidden> Set Line Type/Push and Set Line Type - Syntax ΓòÉΓòÉΓòÉ
  9434.  
  9435. These orders set, or push and set, the value of the current line-type 
  9436. attribute. 
  9437.  
  9438. Set Line Type (GSLT) 
  9439. X'18' (LINETYPE) 
  9440.  
  9441. Push and Set Line Type (GPSLT) 
  9442. X'58' (LINETYPE) 
  9443.  
  9444.  
  9445. ΓòÉΓòÉΓòÉ <hidden> GSLT/GPSLT Parameter - LINETYPE ΓòÉΓòÉΓòÉ
  9446.  
  9447.  LINETYPE (GBIT8) 
  9448.     Value for line-type attribute. 
  9449.  
  9450.     The value is an index into a notational line-type table: 
  9451.  
  9452.     0x00       Drawing default 
  9453.     0x01       Dotted line 
  9454.     0x02       Short dashed line 
  9455.     0x03       Dash-dot line 
  9456.     0x04       Double dotted line 
  9457.     0x05       Long dashed line 
  9458.     0x06       Dash-double-dot line 
  9459.     0x07       Solid line 
  9460.     0x08       Invisible line 
  9461.     Other      Reserved values. 
  9462.  
  9463.  
  9464. ΓòÉΓòÉΓòÉ <hidden> Set Line Type/Push and Set Line Type - Parameters ΓòÉΓòÉΓòÉ
  9465.  
  9466.  LINETYPE (GBIT8) 
  9467.     Value for line-type attribute. 
  9468.  
  9469.     The value is an index into a notational line-type table: 
  9470.  
  9471.     0x00       Drawing default 
  9472.     0x01       Dotted line 
  9473.     0x02       Short dashed line 
  9474.     0x03       Dash-dot line 
  9475.     0x04       Double dotted line 
  9476.     0x05       Long dashed line 
  9477.     0x06       Dash-double-dot line 
  9478.     0x07       Solid line 
  9479.     0x08       Invisible line 
  9480.     Other      Reserved values. 
  9481.  
  9482.  
  9483. ΓòÉΓòÉΓòÉ <hidden> Set Line Type/Push and Set Line Type - Remarks ΓòÉΓòÉΓòÉ
  9484.  
  9485. The value of the current line-type attribute is pushed on to the Segment Call 
  9486. Stack by the Push and Set order only. Both orders then set the value of the 
  9487. current line-type attribute to the value in the order. 
  9488.  
  9489.  
  9490. ΓòÉΓòÉΓòÉ <hidden> Set Line Type/Push and Set Line Type - Topics ΓòÉΓòÉΓòÉ
  9491.  
  9492. Select an item: 
  9493.  
  9494. Syntax
  9495. Parameters
  9496. Remarks
  9497. Glossary
  9498.  
  9499.  
  9500. ΓòÉΓòÉΓòÉ 2.61. Set Line Width/Push and Set Line Width ΓòÉΓòÉΓòÉ
  9501.  
  9502.  
  9503. ΓòÉΓòÉΓòÉ <hidden> Set Line Width/Push and Set Line Width - Syntax ΓòÉΓòÉΓòÉ
  9504.  
  9505. These orders set, or push and set, the value of the current line-width 
  9506. attribute to the value specified in the order. 
  9507.  
  9508. Set Line Width (GSLW) 
  9509. X'19' (LINEWIDTH) 
  9510.  
  9511. Push and Set Line Width (GPSLW) 
  9512. X'59' (LINEWIDTH) 
  9513.  
  9514.  
  9515. ΓòÉΓòÉΓòÉ <hidden> GSLW/GPSLW Parameter - LINEWIDTH ΓòÉΓòÉΓòÉ
  9516.  
  9517.  LINEWIDTH (GBIT8) 
  9518.     Value for line-width attribute: 
  9519.  
  9520.     0x00          Drawing default 
  9521.     0x01-0xFF     Integral multiplier of normal line width. 
  9522.  
  9523.  
  9524. ΓòÉΓòÉΓòÉ <hidden> Set Line Width/Push and Set Line Width - Parameters ΓòÉΓòÉΓòÉ
  9525.  
  9526.  LINEWIDTH (GBIT8) 
  9527.     Value for line-width attribute: 
  9528.  
  9529.     0x00          Drawing default 
  9530.     0x01-0xFF     Integral multiplier of normal line width. 
  9531.  
  9532.  
  9533. ΓòÉΓòÉΓòÉ <hidden> Set Line Width/Push and Set Line Width - Remarks ΓòÉΓòÉΓòÉ
  9534.  
  9535. The value of the current line-width attribute is pushed on to the Segment Call 
  9536. stack by the Push and Set order only. Both orders then set the value of the 
  9537. current line-width attribute to the value in the order. 
  9538.  
  9539.  
  9540. ΓòÉΓòÉΓòÉ <hidden> Set Line Width/Push and Set Line Width - Topics ΓòÉΓòÉΓòÉ
  9541.  
  9542. Select an item: 
  9543.  
  9544. Syntax
  9545. Parameters
  9546. Remarks
  9547. Glossary
  9548.  
  9549.  
  9550. ΓòÉΓòÉΓòÉ 2.62. Set Marker Cell/Push and Set Marker Cell ΓòÉΓòÉΓòÉ
  9551.  
  9552.  
  9553. ΓòÉΓòÉΓòÉ <hidden> Set Marker Cell/Push and Set Marker Cell - Syntax ΓòÉΓòÉΓòÉ
  9554.  
  9555. These orders set, or push and set, the value of the current marker cell-size 
  9556. attribute. 
  9557.  
  9558. Set Marker Cell (GSMC) 
  9559. X'37' (LEN, CELLX, CELLY, FLAGS, RES) 
  9560.  
  9561. Push and Set Marker Cell (GPSMC) 
  9562. X'77' (LEN, CELLX, CELLY, FLAGS, RES) 
  9563.  
  9564.  
  9565. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - LEN ΓòÉΓòÉΓòÉ
  9566.  
  9567.  LEN (GLENGTH1) 
  9568.     Length of following data. 
  9569.  
  9570.  
  9571. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - CELLX ΓòÉΓòÉΓòÉ
  9572.  
  9573.  CELLX (GROSOL) 
  9574.     X part of marker cell-size attribute. 
  9575.  
  9576.  
  9577. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - CELLY ΓòÉΓòÉΓòÉ
  9578.  
  9579.  CELLY (GROSOL) 
  9580.     Y part of marker cell-size attribute. 
  9581.  
  9582.  
  9583. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - FLAGS ΓòÉΓòÉΓòÉ
  9584.  
  9585.  FLAGS 
  9586.     This is an optional extension. 
  9587.  
  9588.     Values: 
  9589.  
  9590.     NOTDEFLT (GBIT1) 
  9591.              Options: 
  9592.  
  9593.              0       A cell size of zero sets drawing default 
  9594.              1       A cell size of zero sets to zero. 
  9595.  
  9596.     RES (GBIT7) 
  9597.              Reserved value, must be 0. 
  9598.  
  9599.  
  9600. ΓòÉΓòÉΓòÉ <hidden> GSMC/GPSMC Parameter - RES ΓòÉΓòÉΓòÉ
  9601.  
  9602.  RES (GBIT8) 
  9603.     Reserved value, must be 0. 
  9604.  
  9605.  
  9606. ΓòÉΓòÉΓòÉ <hidden> Set Marker Cell/Push and Set Marker Cell - Parameters ΓòÉΓòÉΓòÉ
  9607.  
  9608.  LEN (GLENGTH1) 
  9609.     Length of following data. 
  9610.  
  9611.  CELLX (GROSOL) 
  9612.     X part of marker cell-size attribute. 
  9613.  
  9614.  CELLY (GROSOL) 
  9615.     Y part of marker cell-size attribute. 
  9616.  
  9617.  FLAGS 
  9618.     This is an optional extension. 
  9619.  
  9620.     Values: 
  9621.  
  9622.     NOTDEFLT (GBIT1) 
  9623.              Options: 
  9624.  
  9625.              0       A cell size of zero sets drawing default 
  9626.              1       A cell size of zero sets to zero. 
  9627.  
  9628.     RES (GBIT7) 
  9629.              Reserved value, must be 0. 
  9630.  
  9631.  RES (GBIT8) 
  9632.     Reserved value, must be 0. 
  9633.  
  9634.  
  9635. ΓòÉΓòÉΓòÉ <hidden> Set Marker Cell/Push and Set Marker Cell - Remarks ΓòÉΓòÉΓòÉ
  9636.  
  9637. The value of the current marker cell-size attribute is pushed on to the Segment 
  9638. Call stack by the Push and Set order only. Both orders then set the value of 
  9639. the current marker cell-size attribute to the value in the order. 
  9640.  
  9641.  
  9642. ΓòÉΓòÉΓòÉ <hidden> Set Marker Cell/Push and Set Marker Cell - Topics ΓòÉΓòÉΓòÉ
  9643.  
  9644. Select an item: 
  9645.  
  9646. Syntax
  9647. Parameters
  9648. Remarks
  9649. Glossary
  9650.  
  9651.  
  9652. ΓòÉΓòÉΓòÉ 2.63. Set Marker Precision/Push and Set Marker Precision ΓòÉΓòÉΓòÉ
  9653.  
  9654.  
  9655. ΓòÉΓòÉΓòÉ <hidden> Set Marker Precision/Push and Set Marker Precision - Syntax ΓòÉΓòÉΓòÉ
  9656.  
  9657. These orders set, or push and set, the value of the current marker-precision 
  9658. attribute. 
  9659.  
  9660. Set Marker Precision (GSMP) 
  9661. X'3B' (PREC) 
  9662.  
  9663. Push and Set Marker Precision (GPSMP) 
  9664. X'7B' (PREC) 
  9665.  
  9666.  
  9667. ΓòÉΓòÉΓòÉ <hidden> GSMP/GPSMP Parameter - PREC ΓòÉΓòÉΓòÉ
  9668.  
  9669.  PREC (GBIT8) 
  9670.     Value for marker-precision attribute: 
  9671.  
  9672.     0x00       Drawing default 
  9673.     0x01       String precision 
  9674.     0x02       Character precision 
  9675.     0x03       Stroke precision 
  9676.     Other      Reserved values. 
  9677.  
  9678.  
  9679. ΓòÉΓòÉΓòÉ <hidden> Set Marker Precision/Push and Set Marker Precision - Parameters ΓòÉΓòÉΓòÉ
  9680.  
  9681.  PREC (GBIT8) 
  9682.     Value for marker-precision attribute: 
  9683.  
  9684.     0x00       Drawing default 
  9685.     0x01       String precision 
  9686.     0x02       Character precision 
  9687.     0x03       Stroke precision 
  9688.     Other      Reserved values. 
  9689.  
  9690.  
  9691. ΓòÉΓòÉΓòÉ <hidden> Set Marker Precision/Push and Set Marker Precision - Remarks ΓòÉΓòÉΓòÉ
  9692.  
  9693. The value of the current marker-precision attribute is pushed on to the Segment 
  9694. Call stack by the Push and Set order only. Both orders then set the value of 
  9695. the current-marker precision attribute to the value in the order. 
  9696.  
  9697.  
  9698. ΓòÉΓòÉΓòÉ <hidden> Set Marker Precision/Push and Set Marker Precision - Topics ΓòÉΓòÉΓòÉ
  9699.  
  9700. Select an item: 
  9701.  
  9702. Syntax
  9703. Parameters
  9704. Remarks
  9705. Glossary
  9706.  
  9707.  
  9708. ΓòÉΓòÉΓòÉ 2.64. Set Marker Set/Push and Set Marker Set ΓòÉΓòÉΓòÉ
  9709.  
  9710.  
  9711. ΓòÉΓòÉΓòÉ <hidden> Set Marker Set/Push and Set Marker Set - Syntax ΓòÉΓòÉΓòÉ
  9712.  
  9713. These orders set, or push and set, the value of the current marker symbol-set 
  9714. attribute. 
  9715.  
  9716. Set Marker Set (GSMS) 
  9717. X'3C' (LCID) 
  9718.  
  9719. Push and Set Marker Set (GPSMS) 
  9720. X'7C' (LCID) 
  9721.  
  9722.  
  9723. ΓòÉΓòÉΓòÉ <hidden> GSMS/GPSMS Parameter - LCID ΓòÉΓòÉΓòÉ
  9724.  
  9725.  LCID (GUCHAR) 
  9726.     Local identifier (LCID) for the marker set: 
  9727.  
  9728.     0x00          Drawing default 
  9729.     0x01-0xFE     LCID for the coded font 
  9730.     0xFF          Special marker set. 
  9731.  
  9732.  
  9733. ΓòÉΓòÉΓòÉ <hidden> Set Marker Set/Push and Set Marker Set - Parameters ΓòÉΓòÉΓòÉ
  9734.  
  9735.  LCID (GUCHAR) 
  9736.     Local identifier (LCID) for the marker set: 
  9737.  
  9738.     0x00          Drawing default 
  9739.     0x01-0xFE     LCID for the coded font 
  9740.     0xFF          Special marker set. 
  9741.  
  9742.  
  9743. ΓòÉΓòÉΓòÉ <hidden> Set Marker Set/Push and Set Marker Set - Remarks ΓòÉΓòÉΓòÉ
  9744.  
  9745. The value of the current marker symbol-set attribute is pushed on to the 
  9746. Segment Call stack by the Push and Set order only. Both orders then set the 
  9747. value of the current marker symbol-set attribute to the value in the order. 
  9748.  
  9749.  
  9750. ΓòÉΓòÉΓòÉ <hidden> Set Marker Set/Push and Set Marker Set - Topics ΓòÉΓòÉΓòÉ
  9751.  
  9752. Select an item: 
  9753.  
  9754. Syntax
  9755. Parameters
  9756. Remarks
  9757. Glossary
  9758.  
  9759.  
  9760. ΓòÉΓòÉΓòÉ 2.65. Set Marker Symbol/Push and Set Marker Symbol ΓòÉΓòÉΓòÉ
  9761.  
  9762.  
  9763. ΓòÉΓòÉΓòÉ <hidden> Set Marker Symbol/Push and Set Marker Symbol - Syntax ΓòÉΓòÉΓòÉ
  9764.  
  9765. These orders set, or push and set, the value of the current marker symbol 
  9766. attribute. 
  9767.  
  9768. Set Marker Symbol (GSMT) 
  9769. X'29' (N) 
  9770.  
  9771. Push and Set Marker Symbol (GPSMT) 
  9772. X'69' (N) 
  9773.  
  9774.  
  9775. ΓòÉΓòÉΓòÉ <hidden> GSMT/GPSMT Parameter - N ΓòÉΓòÉΓòÉ
  9776.  
  9777.  N (GBIT8) 
  9778.     Value of marker symbol code point. Special marker set 
  9779.  
  9780.     When this is selected (lcid = 0xFF), the values are: 
  9781.  
  9782.     0x00 
  9783.             Drawing default 
  9784.     0x01 
  9785.             Cross 
  9786.     0x02 
  9787.             Plus 
  9788.     0x03 
  9789.             Diamond 
  9790.     0x04 
  9791.             Square 
  9792.     0x05 
  9793.             6-point star 
  9794.     0x06 
  9795.             8-point star 
  9796.     0x07 
  9797.             Filled diamond 
  9798.     0x08 
  9799.             Filled square 
  9800.     0x09 
  9801.             Dot 
  9802.     0x0A 
  9803.             Small circle 
  9804.     0x40 
  9805.             Blank 
  9806.     Other 
  9807.             Reserved values. 
  9808.  Marker set 
  9809.  
  9810.             Values are as follows for any other set: 
  9811.     0x00 
  9812.             Drawing default 
  9813.     0x01-0xFF 
  9814.             These are the code points into the current marker set. 
  9815.  
  9816.  
  9817. ΓòÉΓòÉΓòÉ <hidden> Set Marker Symbol/Push and Set Marker Symbol - Parameters ΓòÉΓòÉΓòÉ
  9818.  
  9819.  N (GBIT8) 
  9820.     Value of marker symbol code point. Special marker set 
  9821.  
  9822.     When this is selected (lcid = 0xFF), the values are: 
  9823.  
  9824.     0x00 
  9825.             Drawing default 
  9826.     0x01 
  9827.             Cross 
  9828.     0x02 
  9829.             Plus 
  9830.     0x03 
  9831.             Diamond 
  9832.     0x04 
  9833.             Square 
  9834.     0x05 
  9835.             6-point star 
  9836.     0x06 
  9837.             8-point star 
  9838.     0x07 
  9839.             Filled diamond 
  9840.     0x08 
  9841.             Filled square 
  9842.     0x09 
  9843.             Dot 
  9844.     0x0A 
  9845.             Small circle 
  9846.     0x40 
  9847.             Blank 
  9848.     Other 
  9849.             Reserved values. 
  9850.  Marker set 
  9851.  
  9852.             Values are as follows for any other set: 
  9853.     0x00 
  9854.             Drawing default 
  9855.     0x01-0xFF 
  9856.             These are the code points into the current marker set. 
  9857.  
  9858.  
  9859. ΓòÉΓòÉΓòÉ <hidden> Set Marker Symbol/Push and Set Marker Symbol - Remarks ΓòÉΓòÉΓòÉ
  9860.  
  9861. The value of the current marker symbol attribute is pushed on to the Segment 
  9862. Call Stack by the Push and Set order only. Both orders then set the value of 
  9863. the current marker symbol attribute to the value in the order. 
  9864.  
  9865.  
  9866. ΓòÉΓòÉΓòÉ <hidden> Set Marker Symbol/Push and Set Marker Symbol - Topics ΓòÉΓòÉΓòÉ
  9867.  
  9868. Select an item: 
  9869.  
  9870. Syntax
  9871. Parameters
  9872. Remarks
  9873. Glossary
  9874.  
  9875.  
  9876. ΓòÉΓòÉΓòÉ 2.66. Set Mix/Push and Set Mix ΓòÉΓòÉΓòÉ
  9877.  
  9878.  
  9879. ΓòÉΓòÉΓòÉ <hidden> Set Mix/Push and Set Mix - Syntax ΓòÉΓòÉΓòÉ
  9880.  
  9881. These orders set, or push and set, the value of the current mix attribute. 
  9882.  
  9883. Set Mix (GSMX) 
  9884. X'0C' (MODE) 
  9885.  
  9886. Push and Set Mix (GPSMX) 
  9887. X'4C' (MODE) 
  9888.  
  9889.  
  9890. ΓòÉΓòÉΓòÉ <hidden> GSMX/GPSMX Parameter - MODE ΓòÉΓòÉΓòÉ
  9891.  
  9892.  MODE (GBIT8) 
  9893.     Mix-mode value: 
  9894.  
  9895.     0x00       Drawing default 
  9896.     0x01       OR 
  9897.     0x02       Overpaint 
  9898.     0x03       Reserved 
  9899.     0x04       Exclusive-OR 
  9900.     0x05       Leave alone 
  9901.     0x06       AND 
  9902.     0x07       Subtract 
  9903.     0x08       Source AND (inverse destination) 
  9904.     0x09       All zeros 
  9905.     0x0A       Inverse (source OR destination) 
  9906.     0x0B       Inverse (source XOR destination) 
  9907.     0x0C       Inverse destination 
  9908.     0x0D       Source OR (inverse destination) 
  9909.     0x0E       Inverse source 
  9910.     0x0F       (Inverse source) OR destination 
  9911.     0x10       Inverse (source AND destination) 
  9912.     0x11       All ones. 
  9913.     Other      Reserved values. 
  9914.  
  9915.  
  9916. ΓòÉΓòÉΓòÉ <hidden> Set Mix/Push and Set Mix - Parameters ΓòÉΓòÉΓòÉ
  9917.  
  9918.  MODE (GBIT8) 
  9919.     Mix-mode value: 
  9920.  
  9921.     0x00       Drawing default 
  9922.     0x01       OR 
  9923.     0x02       Overpaint 
  9924.     0x03       Reserved 
  9925.     0x04       Exclusive-OR 
  9926.     0x05       Leave alone 
  9927.     0x06       AND 
  9928.     0x07       Subtract 
  9929.     0x08       Source AND (inverse destination) 
  9930.     0x09       All zeros 
  9931.     0x0A       Inverse (source OR destination) 
  9932.     0x0B       Inverse (source XOR destination) 
  9933.     0x0C       Inverse destination 
  9934.     0x0D       Source OR (inverse destination) 
  9935.     0x0E       Inverse source 
  9936.     0x0F       (Inverse source) OR destination 
  9937.     0x10       Inverse (source AND destination) 
  9938.     0x11       All ones. 
  9939.     Other      Reserved values. 
  9940.  
  9941.  
  9942. ΓòÉΓòÉΓòÉ <hidden> Set Mix/Push and Set Mix - Remarks ΓòÉΓòÉΓòÉ
  9943.  
  9944. The value of the current mix attribute is pushed on to the Segment Call stack 
  9945. by the Push and Set order only. Both orders then set the value of the current 
  9946. mix attribute to the value in the order. 
  9947.  
  9948.  
  9949. ΓòÉΓòÉΓòÉ <hidden> Set Mix/Push and Set Mix - Topics ΓòÉΓòÉΓòÉ
  9950.  
  9951. Select an item: 
  9952.  
  9953. Syntax
  9954. Parameters
  9955. Remarks
  9956. Glossary
  9957.  
  9958.  
  9959. ΓòÉΓòÉΓòÉ 2.67. Set Model Transform/Push and Set Model Transform ΓòÉΓòÉΓòÉ
  9960.  
  9961.  
  9962. ΓòÉΓòÉΓòÉ <hidden> Set Model Transform/Push and Set Model Transform - Syntax ΓòÉΓòÉΓòÉ
  9963.  
  9964. These orders set, or push and set, values in the current model transform. 
  9965.  
  9966. Set Model Transform (GSTM) 
  9967. X'24' (LEN, RES, FLAGS, MASK, MX[LEN]) 
  9968.  
  9969. Push and Set Model Transform (GPSTM) 
  9970. X'64' (LEN, RES, FLAGS, MASK, MX[LEN]) 
  9971.  
  9972.  
  9973. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - LEN ΓòÉΓòÉΓòÉ
  9974.  
  9975.  LEN (GLENGTH1) 
  9976.     Length of following data. 
  9977.  
  9978.  
  9979. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - RES ΓòÉΓòÉΓòÉ
  9980.  
  9981.  RES (GBIT8) 
  9982.     Reserved value, must be 0. 
  9983.  
  9984.  
  9985. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - FLAGS ΓòÉΓòÉΓòÉ
  9986.  
  9987.  FLAGS 
  9988.     Values: 
  9989.  
  9990.     RES (GBIT6) 
  9991.              Reserved value, must be 0. 
  9992.  
  9993.     CM (GBIT2) 
  9994.              Matrix control bits: 
  9995.  
  9996.              B"00"      Unity matrix 
  9997.              B"01"      Concatenate after 
  9998.              B"10"      Concatenate before 
  9999.              B"11"      Overwrite. 
  10000.  
  10001.  
  10002. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - MASK ΓòÉΓòÉΓòÉ
  10003.  
  10004.  MASK (GBIT16) 
  10005.     Load mask. 
  10006.  
  10007.  
  10008. ΓòÉΓòÉΓòÉ <hidden> GSTM/GPSTM Parameter - MX[LEN] ΓòÉΓòÉΓòÉ
  10009.  
  10010.  MX[LEN] (GROSOL) 
  10011.     Matrix values. 
  10012.  
  10013.     The matrix size is based on the number of bits set in MASK. 
  10014.  
  10015.  
  10016. ΓòÉΓòÉΓòÉ <hidden> Set Model Transform/Push and Set Model Transform - Parameters ΓòÉΓòÉΓòÉ
  10017.  
  10018.  LEN (GLENGTH1) 
  10019.     Length of following data. 
  10020.  
  10021.  RES (GBIT8) 
  10022.     Reserved value, must be 0. 
  10023.  
  10024.  FLAGS 
  10025.     Values: 
  10026.  
  10027.     RES (GBIT6) 
  10028.              Reserved value, must be 0. 
  10029.  
  10030.     CM (GBIT2) 
  10031.              Matrix control bits: 
  10032.  
  10033.              B"00"      Unity matrix 
  10034.              B"01"      Concatenate after 
  10035.              B"10"      Concatenate before 
  10036.              B"11"      Overwrite. 
  10037.  
  10038.  MASK (GBIT16) 
  10039.     Load mask. 
  10040.  
  10041.  MX[LEN] (GROSOL) 
  10042.     Matrix values. 
  10043.  
  10044.     The matrix size is based on the number of bits set in MASK. 
  10045.  
  10046.  
  10047. ΓòÉΓòÉΓòÉ <hidden> Set Model Transform/Push and Set Model Transform - Remarks ΓòÉΓòÉΓòÉ
  10048.  
  10049. The value of the current model transform is pushed on to the Segment Call stack 
  10050. by the Push and Set order only. Both orders then set values in the current 
  10051. model transform as specified in the order. 
  10052.  
  10053.  
  10054. ΓòÉΓòÉΓòÉ <hidden> Set Model Transform/Push and Set Model Transform - Topics ΓòÉΓòÉΓòÉ
  10055.  
  10056. Select an item: 
  10057.  
  10058. Syntax
  10059. Parameters
  10060. Remarks
  10061. Glossary
  10062.  
  10063.  
  10064. ΓòÉΓòÉΓòÉ 2.68. Set Pattern Reference Point/Push and Set Pattern Reference Point ΓòÉΓòÉΓòÉ
  10065.  
  10066.  
  10067. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Reference Point/Push and Set Pattern Reference Point - Syntax ΓòÉΓòÉΓòÉ
  10068.  
  10069. These orders set, or push and set, the value of the current pattern 
  10070. reference-point attribute. 
  10071.  
  10072. Set Pattern Reference Point (GSPRP) 
  10073. X'A0' (LEN, FLAGS, RES, PREF) 
  10074.  
  10075. Push and Set Pattern Reference Point (GPSPRP) 
  10076. X'E0' (LEN, FLAGS, RES, PREF) 
  10077.  
  10078.  
  10079. ΓòÉΓòÉΓòÉ <hidden> GSPRP/GPSPRP Parameter - LEN ΓòÉΓòÉΓòÉ
  10080.  
  10081.  LEN (GLENGTH1) 
  10082.     Length of following data. 
  10083.  
  10084.  
  10085. ΓòÉΓòÉΓòÉ <hidden> GSPRP/GPSPRP Parameter - FLAGS ΓòÉΓòÉΓòÉ
  10086.  
  10087.  FLAGS 
  10088.     Values: 
  10089.  
  10090.     DEFAULT (GBIT1) 
  10091.              Options: 
  10092.  
  10093.              0       Set to specified value 
  10094.              1       Set to the drawing default. 
  10095.  
  10096.     RES (GBIT7) 
  10097.              Reserved value, must be 0. 
  10098.  
  10099.  
  10100. ΓòÉΓòÉΓòÉ <hidden> GSPRP/GPSPRP Parameter - RES ΓòÉΓòÉΓòÉ
  10101.  
  10102.  RES (GBIT8) 
  10103.     Reserved value, must be 0. 
  10104.  
  10105.  
  10106. ΓòÉΓòÉΓòÉ <hidden> GSPRP/GPSPRP Parameter - PREF ΓòÉΓòÉΓòÉ
  10107.  
  10108.  PREF (GPOINT) 
  10109.     Coordinate data of the pattern-reference point. 
  10110.  
  10111.  
  10112. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Reference Point/Push and Set Pattern Reference Point - Parameters ΓòÉΓòÉΓòÉ
  10113.  
  10114.  LEN (GLENGTH1) 
  10115.     Length of following data. 
  10116.  
  10117.  FLAGS 
  10118.     Values: 
  10119.  
  10120.     DEFAULT (GBIT1) 
  10121.              Options: 
  10122.  
  10123.              0       Set to specified value 
  10124.              1       Set to the drawing default. 
  10125.  
  10126.     RES (GBIT7) 
  10127.              Reserved value, must be 0. 
  10128.  
  10129.  RES (GBIT8) 
  10130.     Reserved value, must be 0. 
  10131.  
  10132.  PREF (GPOINT) 
  10133.     Coordinate data of the pattern-reference point. 
  10134.  
  10135.  
  10136. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Reference Point/Push and Set Pattern Reference Point - Remarks ΓòÉΓòÉΓòÉ
  10137.  
  10138. The value of the current pattern reference-point attribute is pushed on to the 
  10139. Segment Call stack by the Push and Set order only. Both orders then set the 
  10140. value of the current reference-point attribute to the value in the order. 
  10141.  
  10142.  
  10143. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Reference Point/Push and Set Pattern Reference Point - Topics ΓòÉΓòÉΓòÉ
  10144.  
  10145. Select an item: 
  10146.  
  10147. Syntax
  10148. Parameters
  10149. Remarks
  10150. Glossary
  10151.  
  10152.  
  10153. ΓòÉΓòÉΓòÉ 2.69. Set Pattern Set/Push and Set Pattern Set ΓòÉΓòÉΓòÉ
  10154.  
  10155.  
  10156. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Set/Push and Set Pattern Set - Syntax ΓòÉΓòÉΓòÉ
  10157.  
  10158. These orders set, or push and set, the value of the current pattern symbol-set 
  10159. attribute. 
  10160.  
  10161. Set Pattern Set (GSPS) 
  10162. X'08' (LCID) 
  10163.  
  10164. Push and Set Pattern Set (GPSPS) 
  10165. X'48' (LCID) 
  10166.  
  10167.  
  10168. ΓòÉΓòÉΓòÉ <hidden> GSPS/GPSPS Parameter - LCID ΓòÉΓòÉΓòÉ
  10169.  
  10170.  LCID (GUCHAR) 
  10171.     Local identifier (LCID) for the pattern set: 
  10172.  
  10173.     0x00          Drawing default 
  10174.     0x01-0xFE     LCID for the symbol set 
  10175.     0xFF          Special pattern set. 
  10176.  
  10177.  
  10178. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Set/Push and Set Pattern Set - Parameters ΓòÉΓòÉΓòÉ
  10179.  
  10180.  LCID (GUCHAR) 
  10181.     Local identifier (LCID) for the pattern set: 
  10182.  
  10183.     0x00          Drawing default 
  10184.     0x01-0xFE     LCID for the symbol set 
  10185.     0xFF          Special pattern set. 
  10186.  
  10187.  
  10188. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Set/Push and Set Pattern Set - Remarks ΓòÉΓòÉΓòÉ
  10189.  
  10190. The value of the current pattern symbol-set attribute is pushed on to the 
  10191. Segment Call stack by the Push and Set order only. Both orders then set the 
  10192. value of the current pattern symbol-set attribute to the value in the order. 
  10193.  
  10194.  
  10195. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Set/Push and Set Pattern Set - Topics ΓòÉΓòÉΓòÉ
  10196.  
  10197. Select an item: 
  10198.  
  10199. Syntax
  10200. Parameters
  10201. Remarks
  10202. Glossary
  10203.  
  10204.  
  10205. ΓòÉΓòÉΓòÉ 2.70. Set Pattern Symbol/Push and Set Pattern Symbol ΓòÉΓòÉΓòÉ
  10206.  
  10207.  
  10208. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Symbol/Push and Set Pattern Symbol - Syntax ΓòÉΓòÉΓòÉ
  10209.  
  10210. These orders set, or push and set, the value of the current pattern-symbol 
  10211. attribute. 
  10212.  
  10213. Set Pattern Symbol (GSPT) 
  10214. X'28' (PATT) 
  10215.  
  10216. Push and Set Pattern Symbol (GPSPT) 
  10217. X'09' (PATT) 
  10218.  
  10219.  
  10220. ΓòÉΓòÉΓòÉ <hidden> GSPT/GPSPT Parameter - PATT ΓòÉΓòÉΓòÉ
  10221.  
  10222.  PATT (GBIT8) 
  10223.     Value for pattern-symbol attribute. 
  10224.  
  10225.     Special pattern set 
  10226.  
  10227.     When this is selected (lcid = 0xFF), the values are: 
  10228.  
  10229.     0x00 
  10230.             Drawing default 
  10231.     0x01-0x08 
  10232.             Density one through density eight (decreasing) 
  10233.     0x09 
  10234.             Vertical lines 
  10235.     0x0A 
  10236.             Horizontal lines 
  10237.     0x0B 
  10238.             Diagonal lines 1 (bottom-left to top-right) 
  10239.     0x0C 
  10240.             Diagonal lines 2 (bottom-left to top-right) 
  10241.     0x0D 
  10242.             Diagonal lines 1 (top-left to bottom-right) 
  10243.     0x0E 
  10244.             Diagonal lines 2 (top-left to bottom-right) 
  10245.     0x0F 
  10246.             No shading 
  10247.     0x10 
  10248.             Solid shading 
  10249.     0x40 
  10250.             Blank. 
  10251.     Other 
  10252.             Reserved values. 
  10253.  
  10254.  
  10255.  Pattern set 
  10256.  
  10257.             Values are as follows for any other set: 
  10258.     0x00 
  10259.             Drawing default 
  10260.     0x01-0xFF 
  10261.             These are the code points into the current pattern set. 
  10262.  
  10263.  
  10264. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Symbol/Push and Set Pattern Symbol - Parameters ΓòÉΓòÉΓòÉ
  10265.  
  10266.  PATT (GBIT8) 
  10267.     Value for pattern-symbol attribute. 
  10268.  
  10269.     Special pattern set 
  10270.  
  10271.     When this is selected (lcid = 0xFF), the values are: 
  10272.  
  10273.     0x00 
  10274.             Drawing default 
  10275.     0x01-0x08 
  10276.             Density one through density eight (decreasing) 
  10277.     0x09 
  10278.             Vertical lines 
  10279.     0x0A 
  10280.             Horizontal lines 
  10281.     0x0B 
  10282.             Diagonal lines 1 (bottom-left to top-right) 
  10283.     0x0C 
  10284.             Diagonal lines 2 (bottom-left to top-right) 
  10285.     0x0D 
  10286.             Diagonal lines 1 (top-left to bottom-right) 
  10287.     0x0E 
  10288.             Diagonal lines 2 (top-left to bottom-right) 
  10289.     0x0F 
  10290.             No shading 
  10291.     0x10 
  10292.             Solid shading 
  10293.     0x40 
  10294.             Blank. 
  10295.     Other 
  10296.             Reserved values. 
  10297.  
  10298.  
  10299.  Pattern set 
  10300.  
  10301.             Values are as follows for any other set: 
  10302.     0x00 
  10303.             Drawing default 
  10304.     0x01-0xFF 
  10305.             These are the code points into the current pattern set. 
  10306.  
  10307.  
  10308. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Symbol/Push and Set Pattern Symbol - Remarks ΓòÉΓòÉΓòÉ
  10309.  
  10310. The value of the current pattern-symbol attribute is pushed on to the Segment 
  10311. Call stack by the Push and Set order only. Both orders then set the value of 
  10312. the current pattern-symbol attribute to the value in the order. 
  10313.  
  10314.  
  10315. ΓòÉΓòÉΓòÉ <hidden> Set Pattern Symbol/Push and Set Pattern Symbol - Topics ΓòÉΓòÉΓòÉ
  10316.  
  10317. Select an item: 
  10318.  
  10319. Syntax
  10320. Parameters
  10321. Remarks
  10322. Glossary
  10323.  
  10324.  
  10325. ΓòÉΓòÉΓòÉ 2.71. Set Pick Identifier/Push and Set Pick Identifier ΓòÉΓòÉΓòÉ
  10326.  
  10327.  
  10328. ΓòÉΓòÉΓòÉ <hidden> Set Pick Identifier/Push and Set Pick Identifier - Syntax ΓòÉΓòÉΓòÉ
  10329.  
  10330. These orders set, or push and set, the value of the current pick identifier. 
  10331.  
  10332. Set Pick Identifier (GSPIK) 
  10333. X'43' (LEN, PKID) 
  10334.  
  10335. Push and Set Pick Identifier (GPSPIK) 
  10336. X'23' (LEN, PKID) 
  10337.  
  10338.  
  10339. ΓòÉΓòÉΓòÉ <hidden> GSPIK/GPSPIK Parameter - LEN ΓòÉΓòÉΓòÉ
  10340.  
  10341.  LEN (GLENGTH1) 
  10342.     Length of following data. 
  10343.  
  10344.  
  10345. ΓòÉΓòÉΓòÉ <hidden> GSPIK/GPSPIK Parameter - PKID ΓòÉΓòÉΓòÉ
  10346.  
  10347.  PKID (GLONG) 
  10348.     Pick identifier. 
  10349.  
  10350.  
  10351. ΓòÉΓòÉΓòÉ <hidden> Set Pick Identifier/Push and Set Pick Identifier - Parameters ΓòÉΓòÉΓòÉ
  10352.  
  10353.  LEN (GLENGTH1) 
  10354.     Length of following data. 
  10355.  
  10356.  PKID (GLONG) 
  10357.     Pick identifier. 
  10358.  
  10359.  
  10360. ΓòÉΓòÉΓòÉ <hidden> Set Pick Identifier/Push and Set Pick Identifier - Remarks ΓòÉΓòÉΓòÉ
  10361.  
  10362. The value of the current pick identifier is pushed on to the Segment Call stack 
  10363. by the Push and Set order only. Both orders then set the value of the current 
  10364. pick identifier to the value in the order. 
  10365.  
  10366.  
  10367. ΓòÉΓòÉΓòÉ <hidden> Set Pick Identifier/Push and Set Pick Identifier - Topics ΓòÉΓòÉΓòÉ
  10368.  
  10369. Select an item: 
  10370.  
  10371. Syntax
  10372. Parameters
  10373. Remarks
  10374. Glossary
  10375.  
  10376.  
  10377. ΓòÉΓòÉΓòÉ 2.72. Set Segment Boundary ΓòÉΓòÉΓòÉ
  10378.  
  10379.  
  10380. ΓòÉΓòÉΓòÉ <hidden> Set Segment Boundary - Syntax ΓòÉΓòÉΓòÉ
  10381.  
  10382. This order defines the maximum extent of the boundaries of the associated root 
  10383. segment.  It is valid only in a root segment prolog. 
  10384.  
  10385. Set Segment Boundary (GSSB) 
  10386. X'32' (LEN, RES, MASK, BB[LEN]) 
  10387.  
  10388.  
  10389. ΓòÉΓòÉΓòÉ <hidden> GSSB Parameter - LEN ΓòÉΓòÉΓòÉ
  10390.  
  10391.  LEN (GLENGTH1) 
  10392.     Length of following data. 
  10393.  
  10394.  
  10395. ΓòÉΓòÉΓòÉ <hidden> GSSB Parameter - RES ΓòÉΓòÉΓòÉ
  10396.  
  10397.  RES (GBIT8) 
  10398.     Reserved value, must be 0. 
  10399.  
  10400.  
  10401. ΓòÉΓòÉΓòÉ <hidden> GSSB Parameter - MASK ΓòÉΓòÉΓòÉ
  10402.  
  10403.  MASK 
  10404.     Values: 
  10405.  
  10406.     RES1 (GBIT2) 
  10407.              Reserved value, must be 0. 
  10408.  
  10409.     XL (GBIT1) 
  10410.              X left limit. 
  10411.  
  10412.              0       Not included in list of BB values 
  10413.              1       Is included in list of BB values. 
  10414.  
  10415.     XR (GBIT1) 
  10416.              X right limit. 
  10417.  
  10418.              0       Not included in list of BB values 
  10419.              1       Is included in list of BB values. 
  10420.  
  10421.     YB (GBIT1) 
  10422.              Y bottom limit. 
  10423.  
  10424.              0       Not included in list of BB values 
  10425.              1       Is included in list of BB values. 
  10426.  
  10427.     YT (GBIT1) 
  10428.              Y top limit. 
  10429.  
  10430.              0       Not included in list of BB values 
  10431.              1       Is included in list of BB values. 
  10432.  
  10433.     RES2 (GBIT2) 
  10434.              Reserved value, must be 0. 
  10435.  
  10436.  
  10437. ΓòÉΓòÉΓòÉ <hidden> GSSB Parameter - BB[LEN] ΓòÉΓòÉΓòÉ
  10438.  
  10439.  BB[LEN] (GROSOL) 
  10440.     Boundary values. 
  10441.  
  10442.  
  10443. ΓòÉΓòÉΓòÉ <hidden> Set Segment Boundary - Parameters ΓòÉΓòÉΓòÉ
  10444.  
  10445.  LEN (GLENGTH1) 
  10446.     Length of following data. 
  10447.  
  10448.  RES (GBIT8) 
  10449.     Reserved value, must be 0. 
  10450.  
  10451.  MASK 
  10452.     Values: 
  10453.  
  10454.     RES1 (GBIT2) 
  10455.              Reserved value, must be 0. 
  10456.  
  10457.     XL (GBIT1) 
  10458.              X left limit. 
  10459.  
  10460.              0       Not included in list of BB values 
  10461.              1       Is included in list of BB values. 
  10462.  
  10463.     XR (GBIT1) 
  10464.              X right limit. 
  10465.  
  10466.              0       Not included in list of BB values 
  10467.              1       Is included in list of BB values. 
  10468.  
  10469.     YB (GBIT1) 
  10470.              Y bottom limit. 
  10471.  
  10472.              0       Not included in list of BB values 
  10473.              1       Is included in list of BB values. 
  10474.  
  10475.     YT (GBIT1) 
  10476.              Y top limit. 
  10477.  
  10478.              0       Not included in list of BB values 
  10479.              1       Is included in list of BB values. 
  10480.  
  10481.     RES2 (GBIT2) 
  10482.              Reserved value, must be 0. 
  10483.  
  10484.  BB[LEN] (GROSOL) 
  10485.     Boundary values. 
  10486.  
  10487.  
  10488. ΓòÉΓòÉΓòÉ <hidden> Set Segment Boundary - Remarks ΓòÉΓòÉΓòÉ
  10489.  
  10490. The order is only valid in a root-segment prolog. 
  10491.  
  10492.  
  10493. ΓòÉΓòÉΓòÉ <hidden> Set Segment Boundary - Topics ΓòÉΓòÉΓòÉ
  10494.  
  10495. Select an item: 
  10496.  
  10497. Syntax
  10498. Parameters
  10499. Remarks
  10500. Glossary
  10501.  
  10502.  
  10503. ΓòÉΓòÉΓòÉ 2.73. Set Stroke Line Width/Push and Set Stroke Line Width ΓòÉΓòÉΓòÉ
  10504.  
  10505.  
  10506. ΓòÉΓòÉΓòÉ <hidden> Set Stroke Line Width/Push and Set Stroke Line Width - Syntax ΓòÉΓòÉΓòÉ
  10507.  
  10508. These orders set the current stroke line-width attribute. 
  10509.  
  10510. Set Stroke Line Width (GSSLW) 
  10511. X'15' (LEN, FLAGS, RES, STRWIDTH) 
  10512.  
  10513. Push and Set Stroke Line Width (GPSSLW) 
  10514. X'55' (LEN, FLAGS, RES, STRWIDTH) 
  10515.  
  10516.  
  10517. ΓòÉΓòÉΓòÉ <hidden> GSSLW/GPSSLW Parameter - LEN ΓòÉΓòÉΓòÉ
  10518.  
  10519.  LEN (GLENGTH1) 
  10520.     Length of following data. 
  10521.  
  10522.  
  10523. ΓòÉΓòÉΓòÉ <hidden> GSSLW/GPSSLW Parameter - FLAGS ΓòÉΓòÉΓòÉ
  10524.  
  10525.  FLAGS 
  10526.  
  10527.     DEFLT (GBIT1) 
  10528.              Values: 
  10529.  
  10530.              0       Set to value 
  10531.              1       Set to drawing default. 
  10532.  
  10533.     RES (GBIT7) 
  10534.              Reserved value, must be 0. 
  10535.  
  10536.  
  10537. ΓòÉΓòÉΓòÉ <hidden> GSSLW/GPSSLW Parameter - RES ΓòÉΓòÉΓòÉ
  10538.  
  10539.  RES (GBIT8) 
  10540.     Reserved value, must be 0. 
  10541.  
  10542.  
  10543. ΓòÉΓòÉΓòÉ <hidden> GSSLW/GPSSLW Parameter - STRWIDTH ΓòÉΓòÉΓòÉ
  10544.  
  10545.  STRWIDTH (GROSOL) 
  10546.     Value for stroke width. 
  10547.  
  10548.  
  10549. ΓòÉΓòÉΓòÉ <hidden> Set Stroke Line Width/Push and Set Stroke Line Width - Parameters ΓòÉΓòÉΓòÉ
  10550.  
  10551.  LEN (GLENGTH1) 
  10552.     Length of following data. 
  10553.  
  10554.  FLAGS 
  10555.  
  10556.     DEFLT (GBIT1) 
  10557.              Values: 
  10558.  
  10559.              0       Set to value 
  10560.              1       Set to drawing default. 
  10561.  
  10562.     RES (GBIT7) 
  10563.              Reserved value, must be 0. 
  10564.  
  10565.  RES (GBIT8) 
  10566.     Reserved value, must be 0. 
  10567.  
  10568.  STRWIDTH (GROSOL) 
  10569.     Value for stroke width. 
  10570.  
  10571.  
  10572. ΓòÉΓòÉΓòÉ <hidden> Set Stroke Line Width/Push and Set Stroke Line Width - Topics ΓòÉΓòÉΓòÉ
  10573.  
  10574. Select an item: 
  10575.  
  10576. Syntax
  10577. Parameters
  10578. Glossary
  10579.  
  10580.  
  10581. ΓòÉΓòÉΓòÉ 2.74. Set Text Alignment/Push and Set Text Alignment ΓòÉΓòÉΓòÉ
  10582.  
  10583.  
  10584. ΓòÉΓòÉΓòÉ <hidden> Set Text Alignment/Push and Set Text Alignment - Syntax ΓòÉΓòÉΓòÉ
  10585.  
  10586. These orders set, or push and set, the value of the current text alignment 
  10587. attribute. 
  10588.  
  10589. Set Text Alignment (GSCSA) 
  10590. X'10' (LEN, HORIZ, VERT) 
  10591.  
  10592. Push and Set Text Alignment (GPSCSA) 
  10593. X'50' (LEN, HORIZ, VERT) 
  10594.  
  10595.  
  10596. ΓòÉΓòÉΓòÉ <hidden> GSCSA/GPSCSA Parameter - LEN ΓòÉΓòÉΓòÉ
  10597.  
  10598.  LEN (GLENGTH1) 
  10599.     Length of following data. 
  10600.  
  10601.  
  10602. ΓòÉΓòÉΓòÉ <hidden> GSCSA/GPSCSA Parameter - HORIZ ΓòÉΓòÉΓòÉ
  10603.  
  10604.  HORIZ (GUCHAR) 
  10605.     Horizontal alignment as follows: 
  10606.  
  10607.     0x00       Drawing default. 
  10608.  
  10609.     0x01       Normal alignment. The alignment assumed depends on the current 
  10610.                character direction: 
  10611.  
  10612.                Left to right                 Left alignment. 
  10613.                Top to bottom                 Center alignment. 
  10614.                Right to left                 Right alignment. 
  10615.                Bottom to top                 Center alignment. 
  10616.  
  10617.     0x02       Left alignment. The string is aligned on the left edge of its 
  10618.                leftmost character. 
  10619.  
  10620.     0x03       Center alignment. The string is aligned on the arithmetic mean 
  10621.                of left and right. 
  10622.  
  10623.     0x04       Right alignment. The string is aligned on the right edge of its 
  10624.                rightmost character. 
  10625.  
  10626.     0xFF       Standard alignment. The alignment assumed depends on the current 
  10627.                character direction: 
  10628.  
  10629.                Left to right                 Left alignment. 
  10630.                Top to bottom                 Left alignment. 
  10631.                Right to left                 Right alignment. 
  10632.                Bottom to top                 Left alignment. 
  10633.  
  10634.  
  10635. ΓòÉΓòÉΓòÉ <hidden> GSCSA/GPSCSA Parameter - VERT ΓòÉΓòÉΓòÉ
  10636.  
  10637.  VERT (GUCHAR) 
  10638.     Vertical alignment as follows: 
  10639.  
  10640.     0x00       Drawing default. 
  10641.  
  10642.     0x01       Normal alignment. The alignment assumed depends on the current 
  10643.                character direction: 
  10644.  
  10645.                Left to right                 Base alignment. 
  10646.                Top to bottom                 Top alignment. 
  10647.                Right to left                 Base alignment. 
  10648.                Bottom to top                 Bottom alignment. 
  10649.  
  10650.     0x02       Top Alignment. The string is aligned on the top edge of its 
  10651.                topmost character. 
  10652.  
  10653.     0x03       Reserved. 
  10654.  
  10655.     0x04       Half alignment. The string is aligned on the arithmetic mean of 
  10656.                top and bottom. 
  10657.  
  10658.     0x05       Base alignment. The string is aligned on the base of its bottom 
  10659.                character. 
  10660.  
  10661.     0x06       Bottom Alignment. The string is aligned on the bottom edge of 
  10662.                its bottom character. 
  10663.  
  10664.     0xFF       Standard alignment. The alignment assumed depends on the current 
  10665.                character direction: 
  10666.  
  10667.                Left to right                 Bottom alignment. 
  10668.                Top to bottom                 Top alignment. 
  10669.                Right to left                 Bottom alignment. 
  10670.                Bottom to top                 Bottom alignment. 
  10671.  
  10672.  
  10673. ΓòÉΓòÉΓòÉ <hidden> Set Text Alignment/Push and Set Text Alignment - Parameters ΓòÉΓòÉΓòÉ
  10674.  
  10675.  LEN (GLENGTH1) 
  10676.     Length of following data. 
  10677.  
  10678.  HORIZ (GUCHAR) 
  10679.     Horizontal alignment as follows: 
  10680.  
  10681.     0x00       Drawing default. 
  10682.  
  10683.     0x01       Normal alignment. The alignment assumed depends on the current 
  10684.                character direction: 
  10685.  
  10686.                Left to right                 Left alignment. 
  10687.                Top to bottom                 Center alignment. 
  10688.                Right to left                 Right alignment. 
  10689.                Bottom to top                 Center alignment. 
  10690.  
  10691.     0x02       Left alignment. The string is aligned on the left edge of its 
  10692.                leftmost character. 
  10693.  
  10694.     0x03       Center alignment. The string is aligned on the arithmetic mean 
  10695.                of left and right. 
  10696.  
  10697.     0x04       Right alignment. The string is aligned on the right edge of its 
  10698.                rightmost character. 
  10699.  
  10700.     0xFF       Standard alignment. The alignment assumed depends on the current 
  10701.                character direction: 
  10702.  
  10703.                Left to right                 Left alignment. 
  10704.                Top to bottom                 Left alignment. 
  10705.                Right to left                 Right alignment. 
  10706.                Bottom to top                 Left alignment. 
  10707.  
  10708.  VERT (GUCHAR) 
  10709.     Vertical alignment as follows: 
  10710.  
  10711.     0x00       Drawing default. 
  10712.  
  10713.     0x01       Normal alignment. The alignment assumed depends on the current 
  10714.                character direction: 
  10715.  
  10716.                Left to right                 Base alignment. 
  10717.                Top to bottom                 Top alignment. 
  10718.                Right to left                 Base alignment. 
  10719.                Bottom to top                 Bottom alignment. 
  10720.  
  10721.     0x02       Top Alignment. The string is aligned on the top edge of its 
  10722.                topmost character. 
  10723.  
  10724.     0x03       Reserved. 
  10725.  
  10726.     0x04       Half alignment. The string is aligned on the arithmetic mean of 
  10727.                top and bottom. 
  10728.  
  10729.     0x05       Base alignment. The string is aligned on the base of its bottom 
  10730.                character. 
  10731.  
  10732.     0x06       Bottom Alignment. The string is aligned on the bottom edge of 
  10733.                its bottom character. 
  10734.  
  10735.     0xFF       Standard alignment. The alignment assumed depends on the current 
  10736.                character direction: 
  10737.  
  10738.                Left to right                 Bottom alignment. 
  10739.                Top to bottom                 Top alignment. 
  10740.                Right to left                 Bottom alignment. 
  10741.                Bottom to top                 Bottom alignment. 
  10742.  
  10743.  
  10744. ΓòÉΓòÉΓòÉ <hidden> Set Text Alignment/Push and Set Text Alignment - Remarks ΓòÉΓòÉΓòÉ
  10745.  
  10746. The value of the current text alignment attribute is pushed on to the Segment 
  10747. Call stack by the Push and Set order only. Both orders set the value of the 
  10748. current text alignment attribute to the value specified in the order. 
  10749.  
  10750.  
  10751. ΓòÉΓòÉΓòÉ <hidden> Set Text Alignment/Push and Set Text Alignment - Topics ΓòÉΓòÉΓòÉ
  10752.  
  10753. Select an item: 
  10754.  
  10755. Syntax
  10756. Parameters
  10757. Remarks
  10758. Glossary
  10759.  
  10760.  
  10761. ΓòÉΓòÉΓòÉ 2.75. Set Viewing Transform ΓòÉΓòÉΓòÉ
  10762.  
  10763.  
  10764. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Transform - Syntax ΓòÉΓòÉΓòÉ
  10765.  
  10766. This order sets the current viewing transform. 
  10767.  
  10768. Set Viewing Transform (GSTV) 
  10769. X'31' (LEN, RES, FLAGS, MASK, MX[LEN]) 
  10770.  
  10771.  
  10772. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - LEN ΓòÉΓòÉΓòÉ
  10773.  
  10774.  LEN (GLENGTH1) 
  10775.     Length of following data. 
  10776.  
  10777.  
  10778. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - RES ΓòÉΓòÉΓòÉ
  10779.  
  10780.  RES (GBIT8) 
  10781.     Reserved value, must be 0. 
  10782.  
  10783.  
  10784. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - FLAGS ΓòÉΓòÉΓòÉ
  10785.  
  10786.  FLAGS 
  10787.     Values: 
  10788.  
  10789.     RES1 (GBIT5) 
  10790.              Reserved value, must be 0. 
  10791.  
  10792.     CONTROL (GBIT1) 
  10793.              Values: 
  10794.  
  10795.              0       Concatenate before drawing default 
  10796.              1       Concatenate before the current viewing transform. 
  10797.  
  10798.     RES2 (GBIT2) 
  10799.              Reserved value, must be 0. 
  10800.  
  10801.  
  10802. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - MASK ΓòÉΓòÉΓòÉ
  10803.  
  10804.  MASK (GBIT16) 
  10805.     Load mask. 
  10806.  
  10807.  
  10808. ΓòÉΓòÉΓòÉ <hidden> GSTV Parameter - MX[LEN] ΓòÉΓòÉΓòÉ
  10809.  
  10810.  MX[LEN] (GROSOL) 
  10811.     Matrix values. 
  10812.  
  10813.  
  10814. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Transform - Parameters ΓòÉΓòÉΓòÉ
  10815.  
  10816.  LEN (GLENGTH1) 
  10817.     Length of following data. 
  10818.  
  10819.  RES (GBIT8) 
  10820.     Reserved value, must be 0. 
  10821.  
  10822.  FLAGS 
  10823.     Values: 
  10824.  
  10825.     RES1 (GBIT5) 
  10826.              Reserved value, must be 0. 
  10827.  
  10828.     CONTROL (GBIT1) 
  10829.              Values: 
  10830.  
  10831.              0       Concatenate before drawing default 
  10832.              1       Concatenate before the current viewing transform. 
  10833.  
  10834.     RES2 (GBIT2) 
  10835.              Reserved value, must be 0. 
  10836.  
  10837.  MASK (GBIT16) 
  10838.     Load mask. 
  10839.  
  10840.  MX[LEN] (GROSOL) 
  10841.     Matrix values. 
  10842.  
  10843.  
  10844. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Transform - Topics ΓòÉΓòÉΓòÉ
  10845.  
  10846. Select an item: 
  10847.  
  10848. Syntax
  10849. Parameters
  10850. Glossary
  10851.  
  10852.  
  10853. ΓòÉΓòÉΓòÉ 2.76. Set Viewing Window/Push and Set Viewing Window ΓòÉΓòÉΓòÉ
  10854.  
  10855.  
  10856. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Window/Push and Set Viewing Window - Syntax ΓòÉΓòÉΓòÉ
  10857.  
  10858. These orders set, or push and set, the current viewing window. 
  10859.  
  10860. Set Viewing Window (GSVW) 
  10861. X'27' (LEN, FLAG, MASK, WW[LEN]) 
  10862.  
  10863. Push and Set Viewing Window (GPSVW) 
  10864. X'67' (LEN, FLAG, MASK, WW[LEN]) 
  10865.  
  10866.  
  10867. ΓòÉΓòÉΓòÉ <hidden> GSVW/GPSVW Parameter - LEN ΓòÉΓòÉΓòÉ
  10868.  
  10869.  LEN (GLENGTH1) 
  10870.     Length of following data. 
  10871.  
  10872.  
  10873. ΓòÉΓòÉΓòÉ <hidden> GSVW/GPSVW Parameter - FLAG ΓòÉΓòÉΓòÉ
  10874.  
  10875.  FLAG 
  10876.     Values: 
  10877.  
  10878.     REPLACE (GBIT1) 
  10879.              Values: 
  10880.  
  10881.              0       Intersect with current window 
  10882.              1       Replace current with new window. 
  10883.  
  10884.     RES (GBIT7) 
  10885.              Reserved value, must be 0. 
  10886.  
  10887.  
  10888. ΓòÉΓòÉΓòÉ <hidden> GSVW/GPSVW Parameter - MASK ΓòÉΓòÉΓòÉ
  10889.  
  10890.  MASK 
  10891.     Values: 
  10892.  
  10893.     RES1 (GBIT2) 
  10894.              Reserved value, must be 0. 
  10895.  
  10896.     XL (GBIT1) 
  10897.              X left limit. 
  10898.  
  10899.              0       Not included in list of WW values 
  10900.              1       Is included in list of WW values 
  10901.  
  10902.     XR (GBIT1) 
  10903.              X right limit. 
  10904.  
  10905.              0       Not included in list of WW values 
  10906.              1       Is included in list of WW values 
  10907.  
  10908.     YB (GBIT1) 
  10909.              Y bottom limit. 
  10910.  
  10911.              0       Not included in list of WW values 
  10912.              1       Is included in list of WW values 
  10913.  
  10914.     YT (GBIT1) 
  10915.              Y top limit. 
  10916.  
  10917.              0       Not included in list of WW values 
  10918.              1       Is included in list of WW values 
  10919.  
  10920.     RES2 (GBIT2) 
  10921.              Reserved value, must be 0. 
  10922.  
  10923.  
  10924. ΓòÉΓòÉΓòÉ <hidden> GSVW/GPSVW Parameter - WW[LEN] ΓòÉΓòÉΓòÉ
  10925.  
  10926.  WW[LEN] (GROSOL) 
  10927.     Window values. 
  10928.  
  10929.  
  10930. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Window/Push and Set Viewing Window - Parameters ΓòÉΓòÉΓòÉ
  10931.  
  10932.  LEN (GLENGTH1) 
  10933.     Length of following data. 
  10934.  
  10935.  FLAG 
  10936.     Values: 
  10937.  
  10938.     REPLACE (GBIT1) 
  10939.              Values: 
  10940.  
  10941.              0       Intersect with current window 
  10942.              1       Replace current with new window. 
  10943.  
  10944.     RES (GBIT7) 
  10945.              Reserved value, must be 0. 
  10946.  
  10947.  MASK 
  10948.     Values: 
  10949.  
  10950.     RES1 (GBIT2) 
  10951.              Reserved value, must be 0. 
  10952.  
  10953.     XL (GBIT1) 
  10954.              X left limit. 
  10955.  
  10956.              0       Not included in list of WW values 
  10957.              1       Is included in list of WW values 
  10958.  
  10959.     XR (GBIT1) 
  10960.              X right limit. 
  10961.  
  10962.              0       Not included in list of WW values 
  10963.              1       Is included in list of WW values 
  10964.  
  10965.     YB (GBIT1) 
  10966.              Y bottom limit. 
  10967.  
  10968.              0       Not included in list of WW values 
  10969.              1       Is included in list of WW values 
  10970.  
  10971.     YT (GBIT1) 
  10972.              Y top limit. 
  10973.  
  10974.              0       Not included in list of WW values 
  10975.              1       Is included in list of WW values 
  10976.  
  10977.     RES2 (GBIT2) 
  10978.              Reserved value, must be 0. 
  10979.  
  10980.  WW[LEN] (GROSOL) 
  10981.     Window values. 
  10982.  
  10983.  
  10984. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Window/Push and Set Viewing Window - Remarks ΓòÉΓòÉΓòÉ
  10985.  
  10986. The value of the current viewing window is pushed on to the Segment Call stack 
  10987. by the Push and Set order only. Both orders then set the current viewing window 
  10988. using the values in the order. 
  10989.  
  10990.  
  10991. ΓòÉΓòÉΓòÉ <hidden> Set Viewing Window/Push and Set Viewing Window - Topics ΓòÉΓòÉΓòÉ
  10992.  
  10993. Select an item: 
  10994.  
  10995. Syntax
  10996. Parameters
  10997. Remarks
  10998. Glossary
  10999.  
  11000.  
  11001. ΓòÉΓòÉΓòÉ 2.77. Sharp Fillet at Given Position/Sharp Fillet at Current Position ΓòÉΓòÉΓòÉ
  11002.  
  11003.  
  11004. ΓòÉΓòÉΓòÉ <hidden> Sharp Fillet at Given Position/Sharp Fillet at Current Position - Syntax ΓòÉΓòÉΓòÉ
  11005.  
  11006. This order generates a curve that starts at a given position, and uses points 
  11007. P1 and P2, together with the sharpness specification S1. 
  11008.  
  11009. Sharp Fillet at Given Position (GSFLT) 
  11010. X'E4' (LEN, P0, P1, P2, P3, P4, PN-1, PN, S1, S2, SN/2) 
  11011.  
  11012. Sharp Fillet at Current Position (GCSFLT) 
  11013. X'A4' (LEN, P1, P2, P3, P4, PN-1, PN, S1, S2, SN/2) 
  11014.  
  11015.  
  11016. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - LEN ΓòÉΓòÉΓòÉ
  11017.  
  11018.  LEN (GLENGTH1) 
  11019.     Length of following data. 
  11020.  
  11021.  
  11022. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P0 ΓòÉΓòÉΓòÉ
  11023.  
  11024.  P0 (GPOINT) 
  11025.     Coordinate data of first curve start. 
  11026.  
  11027.     This parameter is only present in a Sharp Fillet at Given Position order. 
  11028.  
  11029.  
  11030. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P1 ΓòÉΓòÉΓòÉ
  11031.  
  11032.  P1 (GPOINT) 
  11033.     Coordinate data of first curve control point. 
  11034.  
  11035.  
  11036. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P2 ΓòÉΓòÉΓòÉ
  11037.  
  11038.  P2 (GPOINT) 
  11039.     Coordinate data of first curve end. 
  11040.  
  11041.  
  11042. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P3 ΓòÉΓòÉΓòÉ
  11043.  
  11044.  P3 (GPOINT) 
  11045.     Coordinate data of second curve control point. 
  11046.  
  11047.  
  11048. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - P4 ΓòÉΓòÉΓòÉ
  11049.  
  11050.  P4 (GPOINT) 
  11051.     Coordinate data of second curve end. 
  11052.  
  11053.  
  11054. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - PN-1 ΓòÉΓòÉΓòÉ
  11055.  
  11056.  PN-1 (GPOINT) 
  11057.     Coordinate data of last curve control point. 
  11058.  
  11059.  
  11060. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - PN ΓòÉΓòÉΓòÉ
  11061.  
  11062.  PN (GPOINT) 
  11063.     Coordinate data of last curve end. 
  11064.  
  11065.  
  11066. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - S1 ΓòÉΓòÉΓòÉ
  11067.  
  11068.  S1 (GROF) 
  11069.     Sharpness specification of first curve. 
  11070.  
  11071.  
  11072. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - S2 ΓòÉΓòÉΓòÉ
  11073.  
  11074.  S2 (GROF) 
  11075.     Sharpness specification of second curve. 
  11076.  
  11077.  
  11078. ΓòÉΓòÉΓòÉ <hidden> GSFLT/GCSFLT Parameter - SN/2 ΓòÉΓòÉΓòÉ
  11079.  
  11080.  SN/2 (GROF) 
  11081.     Sharpness specification of last curve. 
  11082.  
  11083.  
  11084. ΓòÉΓòÉΓòÉ <hidden> Sharp Fillet at Given Position/Sharp Fillet at Current Position - Parameters ΓòÉΓòÉΓòÉ
  11085.  
  11086.  LEN (GLENGTH1) 
  11087.     Length of following data. 
  11088.  
  11089.  P0 (GPOINT) 
  11090.     Coordinate data of first curve start. 
  11091.  
  11092.     This parameter is only present in a Sharp Fillet at Given Position order. 
  11093.  
  11094.  P1 (GPOINT) 
  11095.     Coordinate data of first curve control point. 
  11096.  
  11097.  P2 (GPOINT) 
  11098.     Coordinate data of first curve end. 
  11099.  
  11100.  P3 (GPOINT) 
  11101.     Coordinate data of second curve control point. 
  11102.  
  11103.  P4 (GPOINT) 
  11104.     Coordinate data of second curve end. 
  11105.  
  11106.  PN-1 (GPOINT) 
  11107.     Coordinate data of last curve control point. 
  11108.  
  11109.  PN (GPOINT) 
  11110.     Coordinate data of last curve end. 
  11111.  
  11112.  S1 (GROF) 
  11113.     Sharpness specification of first curve. 
  11114.  
  11115.  S2 (GROF) 
  11116.     Sharpness specification of second curve. 
  11117.  
  11118.  SN/2 (GROF) 
  11119.     Sharpness specification of last curve. 
  11120.  
  11121.  
  11122. ΓòÉΓòÉΓòÉ <hidden> Sharp Fillet at Given Position/Sharp Fillet at Current Position - Remarks ΓòÉΓòÉΓòÉ
  11123.  
  11124. Further points are used in groups of two to form a polycurve. 
  11125.  
  11126.  
  11127. ΓòÉΓòÉΓòÉ <hidden> Sharp Fillet at Given Position/Sharp Fillet at Current Position - Topics ΓòÉΓòÉΓòÉ
  11128.  
  11129. Select an item: 
  11130.  
  11131. Syntax
  11132. Parameters
  11133. Remarks
  11134. Glossary
  11135.  
  11136.  
  11137. ΓòÉΓòÉΓòÉ 3. Graphics Orders Data Types ΓòÉΓòÉΓòÉ
  11138.  
  11139. All data types are in Intel** format, unless noted otherwise. 
  11140.  
  11141.  
  11142. ΓòÉΓòÉΓòÉ 3.1. GBIT1 ΓòÉΓòÉΓòÉ
  11143.  
  11144. 1-bit field. 
  11145.  
  11146.  
  11147. ΓòÉΓòÉΓòÉ 3.2. GBIT2 ΓòÉΓòÉΓòÉ
  11148.  
  11149. 2-bit field. 
  11150.  
  11151.  
  11152. ΓòÉΓòÉΓòÉ 3.3. GBIT4 ΓòÉΓòÉΓòÉ
  11153.  
  11154. 4-bit field. 
  11155.  
  11156.  
  11157. ΓòÉΓòÉΓòÉ 3.4. GBIT5 ΓòÉΓòÉΓòÉ
  11158.  
  11159. 5-bit field. 
  11160.  
  11161.  
  11162. ΓòÉΓòÉΓòÉ 3.5. GBIT6 ΓòÉΓòÉΓòÉ
  11163.  
  11164. 6-bit field. 
  11165.  
  11166.  
  11167. ΓòÉΓòÉΓòÉ 3.6. GBIT7 ΓòÉΓòÉΓòÉ
  11168.  
  11169. 7-bit field. 
  11170.  
  11171.  
  11172. ΓòÉΓòÉΓòÉ 3.7. GBIT8 ΓòÉΓòÉΓòÉ
  11173.  
  11174. 8-bit field. 
  11175.  
  11176.  
  11177. ΓòÉΓòÉΓòÉ 3.8. GBIT16 ΓòÉΓòÉΓòÉ
  11178.  
  11179. 16-bit field. 
  11180.  
  11181.  
  11182. ΓòÉΓòÉΓòÉ 3.9. GBIT32 ΓòÉΓòÉΓòÉ
  11183.  
  11184. 32-bit field. 
  11185.  
  11186.  
  11187. ΓòÉΓòÉΓòÉ 3.10. GCHAR ΓòÉΓòÉΓòÉ
  11188.  
  11189. Signed 1-byte integer value. 
  11190.  
  11191.  
  11192. ΓòÉΓòÉΓòÉ 3.11. GDELPOINT ΓòÉΓòÉΓòÉ
  11193.  
  11194. Offset point structure. 
  11195.  
  11196.  
  11197. ΓòÉΓòÉΓòÉ <hidden> GDELPOINT Field - dx ΓòÉΓòÉΓòÉ
  11198.  
  11199.  dx (GCHAR) 
  11200.     x coordinate offset. 
  11201.  
  11202.  
  11203. ΓòÉΓòÉΓòÉ <hidden> GDELPOINT Field - dy ΓòÉΓòÉΓòÉ
  11204.  
  11205.  dy (GCHAR) 
  11206.     y coordinate offset. 
  11207.  
  11208.  
  11209. ΓòÉΓòÉΓòÉ 3.12. GFIXED ΓòÉΓòÉΓòÉ
  11210.  
  11211. Signed integer fraction (16:16). (This can be treated as a GLONG where the 
  11212. value has been multiplied by 65536.) 
  11213.  
  11214.  
  11215. ΓòÉΓòÉΓòÉ 3.13. GFIXEDS ΓòÉΓòÉΓòÉ
  11216.  
  11217. Signed integer fraction (8:8), which can be treated as a GSHORT data type, 
  11218. where the value has been multiplied by 256. 
  11219.  
  11220.  
  11221. ΓòÉΓòÉΓòÉ <hidden> GFIXEDS Field - Integer ΓòÉΓòÉΓòÉ
  11222.  
  11223.  Integer (GCHAR) 
  11224.     Integral component. 
  11225.  
  11226.  
  11227. ΓòÉΓòÉΓòÉ <hidden> GFIXEDS Field - Fraction ΓòÉΓòÉΓòÉ
  11228.  
  11229.  Fraction (GUCHAR) 
  11230.     Fractional component. 
  11231.  
  11232.  
  11233. ΓòÉΓòÉΓòÉ 3.14. GHBITMAP ΓòÉΓòÉΓòÉ
  11234.  
  11235. Bit-map handle, which is the same as GULONG. 
  11236.  
  11237.  
  11238. ΓòÉΓòÉΓòÉ 3.15. GINDATT ΓòÉΓòÉΓòÉ
  11239.  
  11240. Individual attribute value.  For the attribute types color and background 
  11241. color, this is the same as GINDEX3. For the attribute types mix and background 
  11242. color, this is the same as GUCHAR. 
  11243.  
  11244.  
  11245. ΓòÉΓòÉΓòÉ 3.16. GINDEX3 ΓòÉΓòÉΓòÉ
  11246.  
  11247. Unsigned 3-byte integer value. 
  11248.  
  11249.  
  11250. ΓòÉΓòÉΓòÉ 3.17. GLENGTH1 ΓòÉΓòÉΓòÉ
  11251.  
  11252. 1-byte length. 
  11253.  
  11254.  
  11255. ΓòÉΓòÉΓòÉ 3.18. GLENGTH2 ΓòÉΓòÉΓòÉ
  11256.  
  11257. 2-byte length, in S/370 format; that is, the high-order byte precedes the 
  11258. low-order byte in storage. 
  11259.  
  11260.  
  11261. ΓòÉΓòÉΓòÉ 3.19. GLONG ΓòÉΓòÉΓòÉ
  11262.  
  11263. Signed 4-byte integer value. 
  11264.  
  11265.  
  11266. ΓòÉΓòÉΓòÉ 3.20. GPOINT ΓòÉΓòÉΓòÉ
  11267.  
  11268. Point structure. 
  11269.  
  11270.  
  11271. ΓòÉΓòÉΓòÉ <hidden> GPOINT Field - x ΓòÉΓòÉΓòÉ
  11272.  
  11273.  x (GROSOL) 
  11274.     x coordinate. 
  11275.  
  11276.  
  11277. ΓòÉΓòÉΓòÉ <hidden> GPOINT Field - y ΓòÉΓòÉΓòÉ
  11278.  
  11279.  y (GROSOL) 
  11280.     y coordinate. 
  11281.  
  11282.  
  11283. ΓòÉΓòÉΓòÉ 3.21. GPOINTB ΓòÉΓòÉΓòÉ
  11284.  
  11285. Point in bit-map structure. 
  11286.  
  11287.  
  11288. ΓòÉΓòÉΓòÉ <hidden> GPOINTB Field - x ΓòÉΓòÉΓòÉ
  11289.  
  11290.  x (GLONG) 
  11291.     x coordinate. 
  11292.  
  11293.  
  11294. ΓòÉΓòÉΓòÉ <hidden> GPOINTB Field - y ΓòÉΓòÉΓòÉ
  11295.  
  11296.  y (GLONG) 
  11297.     y coordinate. 
  11298.  
  11299.  
  11300. ΓòÉΓòÉΓòÉ 3.22. GPOLYS ΓòÉΓòÉΓòÉ
  11301.  
  11302. Array of Polygons. Each element of the array is a 16 bit count of the number of 
  11303. vertices, followed by the vertex coordinates. 
  11304.  
  11305.  
  11306. ΓòÉΓòÉΓòÉ 3.23. GREAL ΓòÉΓòÉΓòÉ
  11307.  
  11308. Real (single precision floating point). 
  11309.  
  11310. This data type is in Intel format. 
  11311.  
  11312.  
  11313. ΓòÉΓòÉΓòÉ 3.24. GROF ΓòÉΓòÉΓòÉ
  11314.  
  11315. Number representation which is the same as the GFIXED data type. 
  11316.  
  11317.  
  11318. ΓòÉΓòÉΓòÉ 3.25. GROFUFS ΓòÉΓòÉΓòÉ
  11319.  
  11320. Number representation which is either GFIXED, GUFIXEDS or GREAL data type, 
  11321. depending on the presentation-space format. 
  11322.  
  11323.  
  11324. ΓòÉΓòÉΓòÉ 3.26. GROUFS ΓòÉΓòÉΓòÉ
  11325.  
  11326. Number representation which is either the GUFIXEDS or GREAL data type, 
  11327. depending on the presentation-space format. 
  11328.  
  11329.  
  11330. ΓòÉΓòÉΓòÉ 3.27. GROL ΓòÉΓòÉΓòÉ
  11331.  
  11332. Number representation, which is the same as the GLONG data type. 
  11333.  
  11334.  
  11335. ΓòÉΓòÉΓòÉ 3.28. GROSOL ΓòÉΓòÉΓòÉ
  11336.  
  11337. Number representation which is either the GSHORT or the GLONG data type, 
  11338. depending on the presentation-space format; see PS_FORMAT in the flOptions 
  11339. parameter of the GpiCreatePS function. 
  11340.  
  11341.  
  11342. ΓòÉΓòÉΓòÉ 3.29. GROUL ΓòÉΓòÉΓòÉ
  11343.  
  11344. Number representation, which is the same as the GULONG data type. 
  11345.  
  11346.  
  11347. ΓòÉΓòÉΓòÉ 3.30. GSHORT ΓòÉΓòÉΓòÉ
  11348.  
  11349. Signed 2-byte integer value. 
  11350.  
  11351.  
  11352. ΓòÉΓòÉΓòÉ 3.31. GSHORT370 ΓòÉΓòÉΓòÉ
  11353.  
  11354. Signed 2-byte integer value, in S/370 format (that is, the high-order byte 
  11355. precedes the low-order byte in storage). 
  11356.  
  11357.  
  11358. ΓòÉΓòÉΓòÉ 3.32. GSTR ΓòÉΓòÉΓòÉ
  11359.  
  11360. String with an explicit length count. 
  11361.  
  11362.  
  11363. ΓòÉΓòÉΓòÉ 3.33. GUCHAR ΓòÉΓòÉΓòÉ
  11364.  
  11365. Unsigned 1-byte integer value. 
  11366.  
  11367.  
  11368. ΓòÉΓòÉΓòÉ 3.34. GUFIXEDS ΓòÉΓòÉΓòÉ
  11369.  
  11370. Unsigned integer fraction (8:8) which can be treated as a GUSHORT data type, 
  11371. where the value has been multiplied by 256. 
  11372.  
  11373.  
  11374. ΓòÉΓòÉΓòÉ 3.35. GULONG ΓòÉΓòÉΓòÉ
  11375.  
  11376. Unsigned 4-byte integer value. 
  11377.  
  11378.  
  11379. ΓòÉΓòÉΓòÉ 3.36. GULONG370 ΓòÉΓòÉΓòÉ
  11380.  
  11381. Unsigned 4-byte integer value, in S/370 format (that is, the high-order byte 
  11382. first, the low-order byte last in storage). 
  11383.  
  11384.  
  11385. ΓòÉΓòÉΓòÉ 3.37. GUNDF ΓòÉΓòÉΓòÉ
  11386.  
  11387. Undefined string of 8-bit bytes. 
  11388.  
  11389.  
  11390. ΓòÉΓòÉΓòÉ 3.38. GUNDF1 ΓòÉΓòÉΓòÉ
  11391.  
  11392. Undefined 8-bit byte. 
  11393.  
  11394.  
  11395. ΓòÉΓòÉΓòÉ 3.39. GUSHORT ΓòÉΓòÉΓòÉ
  11396.  
  11397. Unsigned 2-byte integer value. 
  11398.  
  11399.  
  11400. ΓòÉΓòÉΓòÉ 3.40. GUSHORT370 ΓòÉΓòÉΓòÉ
  11401.  
  11402. Unsigned 2-byte integer value, in S/370 format; that is, the high-order byte 
  11403. precedes the low-order byte in storage. 
  11404.  
  11405.  
  11406. ΓòÉΓòÉΓòÉ 4. Errors ΓòÉΓòÉΓòÉ
  11407.  
  11408. Error codes are furnished numerically and alphabetically. 
  11409.  
  11410. For a listing of error codes by number, see Error Number and Name. 
  11411.  
  11412. For a listing of error codes and their explanations, see Error Name and 
  11413. Explanation. 
  11414.  
  11415.  
  11416. ΓòÉΓòÉΓòÉ 4.1. Error Number and Name ΓòÉΓòÉΓòÉ
  11417.  
  11418. This section lists PM errors returned by WinGetLastError in order of their 
  11419. error numbers. For explanations of these errors, see Error Name and 
  11420. Explanation. 
  11421.  
  11422.  Error Number   Error Constant 
  11423.  0x0000         PMERR_OK 
  11424.  0x0000         PMERR_OK 
  11425.  0x0000         PMERR_OK 
  11426.  0x0836         NERR_NetNotStarted 
  11427.  0x0845         NERR_RedirectedPath 
  11428.  0x084B         NERR_BufTooSmall 
  11429.  0x085E         NERR_InvalidAPI 
  11430.  0x0866         NERR_QNotFound 
  11431.  0x0867         NERR_JobNotFound 
  11432.  0x0868         NERR_DestNotFound 
  11433.  0x0869         NERR_DestExists 
  11434.  0x086A         NERR_QExists 
  11435.  0x086B         NERR_QNoRoom 
  11436.  0x086C         NERR_JobNoRoom 
  11437.  0x086D         NERR_DestNoRoom 
  11438.  0x086E         NERR_DestIdle 
  11439.  0x086F         NERR_DestInvalidOp 
  11440.  0x0871         NERR_SpoolerNotLoaded 
  11441.  0x0872         NERR_DestInvalidState 
  11442.  0x0874         NERR_JobInvalidState 
  11443.  0x0875         NERR_SpoolNoMemory 
  11444.  0x0876         NERR_DriverNotFound 
  11445.  0x0877         NERR_DataTypeInvalid 
  11446.  0x0878         NERR_ProcNotFound 
  11447.  0x0925         NERR_BadDev 
  11448.  0x0927         NERR_CommDevInUse 
  11449.  0x092F         NERR_InvalidComputer 
  11450.  0x0961         NERR_OpenFiles 
  11451.  0x0965         NERR_LocalDrive 
  11452.  0x1001         PMERR_INVALID_HWND 
  11453.  0x1001         HMERR_NO_FRAME_WND_IN_CHAIN 
  11454.  0x1002         PMERR_INVALID_HMQ 
  11455.  0x1002         HMERR_INVALID_ASSOC_APP_WND 
  11456.  0x1003         PMERR_PARAMETER_OUT_OF_RANGE 
  11457.  0x1003         HMERR_INVALID_ASSOC_HELP_INST 
  11458.  0x1004         PMERR_WINDOW_LOCK_UNDERFLOW 
  11459.  0x1004         HMERR_INVALID_DESTROY_HELP_INST 
  11460.  0x1005         PMERR_WINDOW_LOCK_OVERFLOW 
  11461.  0x1005         HMERR_NO_HELP_INST_IN_CHAIN 
  11462.  0x1006         PMERR_BAD_WINDOW_LOCK_COUNT 
  11463.  0x1006         HMERR_INVALID_HELP_INSTANCE_HDL 
  11464.  0x1007         PMERR_WINDOW_NOT_LOCKED 
  11465.  0x1007         HMERR_INVALID_QUERY_APP_WND 
  11466.  0x1008         PMERR_INVALID_SELECTOR 
  11467.  0x1008         HMERR_HELP_INST_CALLED_INVALID 
  11468.  0x1009         PMERR_CALL_FROM_WRONG_THREAD 
  11469.  0x1009         HMERR_HELPTABLE_UNDEFINE 
  11470.  0x100A         PMERR_RESOURCE_NOT_FOUND 
  11471.  0x100A         HMERR_HELP_INSTANCE_UNDEFINE 
  11472.  0x100B         PMERR_INVALID_STRING_PARM 
  11473.  0x100B         HMERR_HELPITEM_NOT_FOUND 
  11474.  0x100C         PMERR_INVALID_HHEAP 
  11475.  0x100C         HMERR_INVALID_HELPSUBITEM_SIZE 
  11476.  0x100D         PMERR_INVALID_HEAP_POINTER 
  11477.  0x100D         HMERR_HELPSUBITEM_NOT_FOUND 
  11478.  0x100E         PMERR_INVALID_HEAP_SIZE_PARM 
  11479.  0x100F         PMERR_INVALID_HEAP_SIZE 
  11480.  0x1010         PMERR_INVALID_HEAP_SIZE_WORD 
  11481.  0x1011         PMERR_HEAP_OUT_OF_MEMORY 
  11482.  0x1012         PMERR_HEAP_MAX_SIZE_REACHED 
  11483.  0x1013         PMERR_INVALID_HATOMTBL 
  11484.  0x1014         PMERR_INVALID_ATOM 
  11485.  0x1015         PMERR_INVALID_ATOM_NAME 
  11486.  0x1016         PMERR_INVALID_INTEGER_ATOM 
  11487.  0x1017         PMERR_ATOM_NAME_NOT_FOUND 
  11488.  0x1018         PMERR_QUEUE_TOO_LARGE 
  11489.  0x1019         PMERR_INVALID_FLAG 
  11490.  0x101A         PMERR_INVALID_HACCEL 
  11491.  0x101B         PMERR_INVALID_HPTR 
  11492.  0x101C         PMERR_INVALID_HENUM 
  11493.  0x101D         PMERR_INVALID_SRC_CODEPAGE 
  11494.  0x101E         PMERR_INVALID_DST_CODEPAGE 
  11495.  0x101F         PMERR_UNKNOWN_COMPONENT_ID 
  11496.  0x1020         PMERR_UNKNOWN_ERROR_CODE 
  11497.  0x1021         PMERR_SEVERITY_LEVELS 
  11498.  0x1034         PMERR_INVALID_RESOURCE_FORMAT 
  11499.  0x1035         WINDBG_WINDOW_UNLOCK_WAIT 
  11500.  0x1036         PMERR_NO_MSG_QUEUE 
  11501.  0x1037         PMERR_CANNOT_SET_FOCUS 
  11502.  0x1038         PMERR_QUEUE_FULL 
  11503.  0x1039         PMERR_LIBRARY_LOAD_FAILED 
  11504.  0x103A         PMERR_PROCEDURE_LOAD_FAILED 
  11505.  0x103B         PMERR_LIBRARY_DELETE_FAILED 
  11506.  0x103C         PMERR_PROCEDURE_DELETE_FAILED 
  11507.  0x103D         PMERR_ARRAY_TOO_LARGE 
  11508.  0x103E         PMERR_ARRAY_TOO_SMALL 
  11509.  0x103F         PMERR_DATATYPE_ENTRY_BAD_INDEX 
  11510.  0x1040         PMERR_DATATYPE_ENTRY_CTL_BAD 
  11511.  0x1041         PMERR_DATATYPE_ENTRY_CTL_MISS 
  11512.  0x1042         PMERR_DATATYPE_ENTRY_INVALID 
  11513.  0x1043         PMERR_DATATYPE_ENTRY_NOT_NUM 
  11514.  0x1044         PMERR_DATATYPE_ENTRY_NOT_OFF 
  11515.  0x1045         PMERR_DATATYPE_INVALID 
  11516.  0x1046         PMERR_DATATYPE_NOT_UNIQUE 
  11517.  0x1047         PMERR_DATATYPE_TOO_LONG 
  11518.  0x1048         PMERR_DATATYPE_TOO_SMALL 
  11519.  0x1049         PMERR_DIRECTION_INVALID 
  11520.  0x104A         PMERR_INVALID_HAB 
  11521.  0x104D         PMERR_INVALID_HSTRUCT 
  11522.  0x104E         PMERR_LENGTH_TOO_SMALL 
  11523.  0x104F         PMERR_MSGID_TOO_SMALL 
  11524.  0x1050         PMERR_NO_HANDLE_ALLOC 
  11525.  0x1051         PMERR_NOT_IN_A_PM_SESSION 
  11526.  0x1052         PMERR_MSG_QUEUE_ALREADY_EXISTS 
  11527.  0x1055         PMERR_OLD_RESOURCE 
  11528.  0x1056         PMERR_WPDSERVER_IS_ACTIVE 
  11529.  0x1057         PMERR_WPDSERVER_NOT_STARTED 
  11530.  0x1058         PMERR_SOMDD_IS_ACTIVE 
  11531.  0x1059         PMERR_SOMDD_NOT_STARTED 
  11532.  0x1101         PMERR_INVALID_PIB 
  11533.  0x1102         PMERR_INSUFF_SPACE_TO_ADD 
  11534.  0x1103         PMERR_INVALID_GROUP_HANDLE 
  11535.  0x1104         PMERR_DUPLICATE_TITLE 
  11536.  0x1105         PMERR_INVALID_TITLE 
  11537.  0x1106         PMERR_INVALID_TARGET_HANDLE 
  11538.  0x1107         PMERR_HANDLE_NOT_IN_GROUP 
  11539.  0x1108         PMERR_INVALID_PATH_STATEMENT 
  11540.  0x1109         PMERR_NO_PROGRAM_FOUND 
  11541.  0x110A         PMERR_INVALID_BUFFER_SIZE 
  11542.  0x110B         PMERR_BUFFER_TOO_SMALL 
  11543.  0x110C         PMERR_PL_INITIALISATION_FAIL 
  11544.  0x110D         PMERR_CANT_DESTROY_SYS_GROUP 
  11545.  0x110E         PMERR_INVALID_TYPE_CHANGE 
  11546.  0x110F         PMERR_INVALID_PROGRAM_HANDLE 
  11547.  0x1110         PMERR_NOT_CURRENT_PL_VERSION 
  11548.  0x1111         PMERR_INVALID_CIRCULAR_REF 
  11549.  0x1112         PMERR_MEMORY_ALLOCATION_ERR 
  11550.  0x1113         PMERR_MEMORY_DEALLOCATION_ERR 
  11551.  0x1114         PMERR_TASK_HEADER_TOO_BIG 
  11552.  0x1115         PMERR_INVALID_INI_FILE_HANDLE 
  11553.  0x1116         PMERR_MEMORY_SHARE 
  11554.  0x1117         PMERR_OPEN_QUEUE 
  11555.  0x1118         PMERR_CREATE_QUEUE 
  11556.  0x1119         PMERR_WRITE_QUEUE 
  11557.  0x111A         PMERR_READ_QUEUE 
  11558.  0x111B         PMERR_CALL_NOT_EXECUTED 
  11559.  0x111C         PMERR_UNKNOWN_APIPKT 
  11560.  0x111D         PMERR_INITHREAD_EXISTS 
  11561.  0x111E         PMERR_CREATE_THREAD 
  11562.  0x111F         PMERR_NO_HK_PROFILE_INSTALLED 
  11563.  0x1120         PMERR_INVALID_DIRECTORY 
  11564.  0x1121         PMERR_WILDCARD_IN_FILENAME 
  11565.  0x1122         PMERR_FILENAME_BUFFER_FULL 
  11566.  0x1123         PMERR_FILENAME_TOO_LONG 
  11567.  0x1124         PMERR_INI_FILE_IS_SYS_OR_USER 
  11568.  0x1125         PMERR_BROADCAST_PLMSG 
  11569.  0x1126         PMERR_190_INIT_DONE 
  11570.  0x1127         PMERR_HMOD_FOR_PMSHAPI 
  11571.  0x1128         PMERR_SET_HK_PROFILE 
  11572.  0x1129         PMERR_API_NOT_ALLOWED 
  11573.  0x112A         PMERR_INI_STILL_OPEN 
  11574.  0x112B         PMERR_PROGDETAILS_NOT_IN_INI 
  11575.  0x112C         PMERR_PIBSTRUCT_NOT_IN_INI 
  11576.  0x112D         PMERR_INVALID_DISKPROGDETAILS 
  11577.  0x112E         PMERR_PROGDETAILS_READ_FAILURE 
  11578.  0x112F         PMERR_PROGDETAILS_WRITE_FAILURE 
  11579.  0x1130         PMERR_PROGDETAILS_QSIZE_FAILURE 
  11580.  0x1131         PMERR_INVALID_PROGDETAILS 
  11581.  0x1132         PMERR_SHEPROFILEHOOK_NOT_FOUND 
  11582.  0x1133         PMERR_190PLCONVERTED 
  11583.  0x1134         PMERR_FAILED_TO_CONVERT_INI_PL 
  11584.  0x1135         PMERR_PMSHAPI_NOT_INITIALISED 
  11585.  0x1136         PMERR_INVALID_SHELL_API_HOOK_ID 
  11586.  0x1200         PMERR_DOS_ERROR 
  11587.  0x1201         PMERR_NO_SPACE 
  11588.  0x1202         PMERR_INVALID_SWITCH_HANDLE 
  11589.  0x1203         PMERR_NO_HANDLE 
  11590.  0x1204         PMERR_INVALID_PROCESS_ID 
  11591.  0x1205         PMERR_NOT_SHELL 
  11592.  0x1206         PMERR_INVALID_WINDOW 
  11593.  0x1207         PMERR_INVALID_POST_MSG 
  11594.  0x1208         PMERR_INVALID_PARAMETERS 
  11595.  0x1208         PMERR_INVALID_PARAMETERS
  11596.  0x1209         PMERR_INVALID_PROGRAM_TYPE 
  11597.  0x120A         PMERR_NOT_EXTENDED_FOCUS 
  11598.  0x120B         PMERR_INVALID_SESSION_ID 
  11599.  0x120C         PMERR_SMG_INVALID_ICON_FILE 
  11600.  0x120D         PMERR_SMG_ICON_NOT_CREATED 
  11601.  0x120E         PMERR_SHL_DEBUG 
  11602.  0x1301         PMERR_OPENING_INI_FILE 
  11603.  0x1302         PMERR_INI_FILE_CORRUPT 
  11604.  0x1303         PMERR_INVALID_PARM 
  11605.  0x1304         PMERR_NOT_IN_IDX 
  11606.  0x1305         PMERR_NO_ENTRIES_IN_GROUP 
  11607.  0x1306         PMERR_INI_WRITE_FAIL 
  11608.  0x1307         PMERR_IDX_FULL 
  11609.  0x1308         PMERR_INI_PROTECTED 
  11610.  0x1309         PMERR_MEMORY_ALLOC 
  11611.  0x130A         PMERR_INI_INIT_ALREADY_DONE 
  11612.  0x130B         PMERR_INVALID_INTEGER 
  11613.  0x130C         PMERR_INVALID_ASCIIZ 
  11614.  0x130D         PMERR_CAN_NOT_CALL_SPOOLER 
  11615.  0x130D         PMERR_VALIDATION_REJECTED 
  11616.  0x1401         PMERR_WARNING_WINDOW_NOT_KILLED 
  11617.  0x1402         PMERR_ERROR_INVALID_WINDOW 
  11618.  0x1403         PMERR_ALREADY_INITIALIZED 
  11619.  0x1405         PMERR_MSG_PROG_NO_MOU 
  11620.  0x1406         PMERR_MSG_PROG_NON_RECOV 
  11621.  0x1407         PMERR_WINCONV_INVALID_PATH 
  11622.  0x1408         PMERR_PI_NOT_INITIALISED 
  11623.  0x1409         PMERR_PL_NOT_INITIALISED 
  11624.  0x140A         PMERR_NO_TASK_MANAGER 
  11625.  0x140B         PMERR_SAVE_NOT_IN_PROGRESS 
  11626.  0x140C         PMERR_NO_STACK_SPACE 
  11627.  0x140D         PMERR_INVALID_COLR_FIELD 
  11628.  0x140E         PMERR_INVALID_COLR_VALUE 
  11629.  0x140F         PMERR_COLR_WRITE 
  11630.  0x1501         PMERR_TARGET_FILE_EXISTS 
  11631.  0x1502         PMERR_SOURCE_SAME_AS_TARGET 
  11632.  0x1503         PMERR_SOURCE_FILE_NOT_FOUND 
  11633.  0x1504         PMERR_INVALID_NEW_PATH 
  11634.  0x1505         PMERR_TARGET_FILE_NOT_FOUND 
  11635.  0x1506         PMERR_INVALID_DRIVE_NUMBER 
  11636.  0x1507         PMERR_NAME_TOO_LONG 
  11637.  0x1508         PMERR_NOT_ENOUGH_ROOM_ON_DISK 
  11638.  0x1509         PMERR_NOT_ENOUGH_MEM 
  11639.  0x150B         PMERR_LOG_DRV_DOES_NOT_EXIST 
  11640.  0x150C         PMERR_INVALID_DRIVE 
  11641.  0x150D         PMERR_ACCESS_DENIED 
  11642.  0x150E         PMERR_NO_FIRST_SLASH 
  11643.  0x150F         PMERR_READ_ONLY_FILE 
  11644.  0x151F         PMERR_GROUP_PROTECTED 
  11645.  0x152F         PMERR_INVALID_PROGRAM_CATEGORY 
  11646.  0x1530         PMERR_INVALID_APPL 
  11647.  0x1531         PMERR_CANNOT_START 
  11648.  0x1532         PMERR_STARTED_IN_BACKGROUND 
  11649.  0x1533         PMERR_INVALID_HAPP 
  11650.  0x1534         PMERR_CANNOT_STOP 
  11651.  0x1601         PMERR_INTERNAL_ERROR_1 
  11652.  0x1602         PMERR_INTERNAL_ERROR_2 
  11653.  0x1603         PMERR_INTERNAL_ERROR_3 
  11654.  0x1604         PMERR_INTERNAL_ERROR_4 
  11655.  0x1605         PMERR_INTERNAL_ERROR_5 
  11656.  0x1606         PMERR_INTERNAL_ERROR_6 
  11657.  0x1607         PMERR_INTERNAL_ERROR_7 
  11658.  0x1608         PMERR_INTERNAL_ERROR_8 
  11659.  0x1609         PMERR_INTERNAL_ERROR_9 
  11660.  0x160A         PMERR_INTERNAL_ERROR_10 
  11661.  0x160B         PMERR_INTERNAL_ERROR_11 
  11662.  0x160C         PMERR_INTERNAL_ERROR_12 
  11663.  0x160D         PMERR_INTERNAL_ERROR_13 
  11664.  0x160E         PMERR_INTERNAL_ERROR_14 
  11665.  0x160F         PMERR_INTERNAL_ERROR_15 
  11666.  0x1610         PMERR_INTERNAL_ERROR_16 
  11667.  0x1611         PMERR_INTERNAL_ERROR_17 
  11668.  0x1612         PMERR_INTERNAL_ERROR_18 
  11669.  0x1613         PMERR_INTERNAL_ERROR_19 
  11670.  0x1614         PMERR_INTERNAL_ERROR_20 
  11671.  0x1615         PMERR_INTERNAL_ERROR_21 
  11672.  0x1616         PMERR_INTERNAL_ERROR_22 
  11673.  0x1617         PMERR_INTERNAL_ERROR_23 
  11674.  0x1618         PMERR_INTERNAL_ERROR_24 
  11675.  0x1619         PMERR_INTERNAL_ERROR_25 
  11676.  0x161A         PMERR_INTERNAL_ERROR_26 
  11677.  0x161B         PMERR_INTERNAL_ERROR_27 
  11678.  0x161C         PMERR_INTERNAL_ERROR_28 
  11679.  0x161D         PMERR_INTERNAL_ERROR_29 
  11680.  0x1630         PMERR_INVALID_FREE_MESSAGE_ID 
  11681.  0x1641         PMERR_FUNCTION_NOT_SUPPORTED 
  11682.  0x1642         PMERR_INVALID_ARRAY_COUNT 
  11683.  0x1643         PMERR_INVALID_LENGTH 
  11684.  0x1644         PMERR_INVALID_BUNDLE_TYPE 
  11685.  0x1645         PMERR_INVALID_PARAMETER 
  11686.  0x1646         PMERR_INVALID_NUMBER_OF_PARMS 
  11687.  0x1647         PMERR_GREATER_THAN_64K 
  11688.  0x1648         PMERR_INVALID_PARAMETER_TYPE 
  11689.  0x1649         PMERR_NEGATIVE_STRCOND_DIM 
  11690.  0x164A         PMERR_INVALID_NUMBER_OF_TYPES 
  11691.  0x164B         PMERR_INCORRECT_HSTRUCT 
  11692.  0x164C         PMERR_INVALID_ARRAY_SIZE 
  11693.  0x164D         PMERR_INVALID_CONTROL_DATATYPE 
  11694.  0x164E         PMERR_INCOMPLETE_CONTROL_SEQU 
  11695.  0x164F         PMERR_INVALID_DATATYPE 
  11696.  0x1650         PMERR_INCORRECT_DATATYPE 
  11697.  0x1651         PMERR_NOT_SELF_DESCRIBING_DTYP 
  11698.  0x1652         PMERR_INVALID_CTRL_SEQ_INDEX 
  11699.  0x1653         PMERR_INVALID_TYPE_FOR_LENGTH 
  11700.  0x1654         PMERR_INVALID_TYPE_FOR_OFFSET 
  11701.  0x1655         PMERR_INVALID_TYPE_FOR_MPARAM 
  11702.  0x1656         PMERR_INVALID_MESSAGE_ID 
  11703.  0x1657         PMERR_C_LENGTH_TOO_SMALL 
  11704.  0x1658         PMERR_APPL_STRUCTURE_TOO_SMALL 
  11705.  0x1659         PMERR_INVALID_ERRORINFO_HANDLE 
  11706.  0x165A         PMERR_INVALID_CHARACTER_INDEX 
  11707.  0x1700         WPERR_PROTECTED_CLASS 
  11708.  0x1701         WPERR_INVALID_CLASS 
  11709.  0x1702         WPERR_INVALID_SUPERCLASS 
  11710.  0x1703         WPERR_NO_MEMORY 
  11711.  0x1704         WPERR_SEMAPHORE_ERROR 
  11712.  0x1705         WPERR_BUFFER_TOO_SMALL 
  11713.  0x1706         WPERR_CLSLOADMOD_FAILED 
  11714.  0x1707         WPERR_CLSPROCADDR_FAILED 
  11715.  0x1708         WPERR_OBJWORD_LOCATION 
  11716.  0x1709         WPERR_INVALID_OBJECT 
  11717.  0x170A         WPERR_MEMORY_CLEANUP 
  11718.  0x170B         WPERR_INVALID_MODULE 
  11719.  0x170C         WPERR_INVALID_OLDCLASS 
  11720.  0x170D         WPERR_INVALID_NEWCLASS 
  11721.  0x170E         WPERR_NOT_IMMEDIATE_CHILD 
  11722.  0x170F         WPERR_NOT_WORKPLACE_CLASS 
  11723.  0x1710         WPERR_CANT_REPLACE_METACLS 
  11724.  0x1711         WPERR_INI_FILE_WRITE 
  11725.  0x1712         WPERR_INVALID_FOLDER 
  11726.  0x1713         WPERR_BUFFER_OVERFLOW 
  11727.  0x1714         WPERR_OBJECT_NOT_FOUND 
  11728.  0x1715         WPERR_INVALID_HFIND 
  11729.  0x1716         WPERR_INVALID_COUNT 
  11730.  0x1717         WPERR_INVALID_BUFFER 
  11731.  0x1718         WPERR_ALREADY_EXISTS 
  11732.  0x1719         WPERR_INVALID_FLAGS 
  11733.  0x1720         WPERR_INVALID_OBJECTID 
  11734.  0x1721         WPERR_INVALID_TARGET_OBJECT 
  11735.  0x1F00         PMERR_NOT_DRAGGING 
  11736.  0x2001         PMERR_ALREADY_IN_AREA 
  11737.  0x2001         HMERR_INDEX_NOT_FOUND 
  11738.  0x2002         PMERR_ALREADY_IN_ELEMENT 
  11739.  0x2002         HMERR_CONTENT_NOT_FOUND 
  11740.  0x2003         PMERR_ALREADY_IN_PATH 
  11741.  0x2003         HMERR_OPEN_LIB_FILE 
  11742.  0x2004         PMERR_ALREADY_IN_SEG 
  11743.  0x2004         HMERR_READ_LIB_FILE 
  11744.  0x2005         PMERR_AREA_INCOMPLETE 
  11745.  0x2005         HMERR_CLOSE_LIB_FILE 
  11746.  0x2006         PMERR_BASE_ERROR 
  11747.  0x2006         HMERR_INVALID_LIB_FILE 
  11748.  0x2007         PMERR_BITBLT_LENGTH_EXCEEDED 
  11749.  0x2007         HMERR_NO_MEMORY 
  11750.  0x2008         PMERR_BITMAP_IN_USE 
  11751.  0x2008         HMERR_ALLOCATE_SEGMENT 
  11752.  0x2009         PMERR_BITMAP_IS_SELECTED 
  11753.  0x2009         HMERR_FREE_MEMORY 
  11754.  0x200A         PMERR_BITMAP_NOT_FOUND 
  11755.  0x200B         PMERR_BITMAP_NOT_SELECTED 
  11756.  0x200C         PMERR_BOUNDS_OVERFLOW 
  11757.  0x200D         PMERR_CALLED_SEG_IS_CHAINED 
  11758.  0x200E         PMERR_CALLED_SEG_IS_CURRENT 
  11759.  0x200F         PMERR_CALLED_SEG_NOT_FOUND 
  11760.  0x2010         PMERR_CANNOT_DELETE_ALL_DATA 
  11761.  0x2010         HMERR_PANEL_NOT_FOUND 
  11762.  0x2011         PMERR_CANNOT_REPLACE_ELEMENT_0 
  11763.  0x2011         HMERR_DATABASE_NOT_OPEN 
  11764.  0x2012         PMERR_COL_TABLE_NOT_REALIZABLE 
  11765.  0x2013         PMERR_COL_TABLE_NOT_REALIZED 
  11766.  0x2013         HMERR_LOAD_DLL 
  11767.  0x2014         PMERR_COORDINATE_OVERFLOW 
  11768.  0x2015         PMERR_CORR_FORMAT_MISMATCH 
  11769.  0x2016         PMERR_DATA_TOO_LONG 
  11770.  0x2017         PMERR_DC_IS_ASSOCIATED 
  11771.  0x2018         PMERR_DESC_STRING_TRUNCATED 
  11772.  0x2019         PMERR_DEVICE_DRIVER_ERROR_1 
  11773.  0x201A         PMERR_DEVICE_DRIVER_ERROR_2 
  11774.  0x201B         PMERR_DEVICE_DRIVER_ERROR_3 
  11775.  0x201C         PMERR_DEVICE_DRIVER_ERROR_4 
  11776.  0x201D         PMERR_DEVICE_DRIVER_ERROR_5 
  11777.  0x201E         PMERR_DEVICE_DRIVER_ERROR_6 
  11778.  0x201F         PMERR_DEVICE_DRIVER_ERROR_7 
  11779.  0x2020         PMERR_DEVICE_DRIVER_ERROR_8 
  11780.  0x2021         PMERR_DEVICE_DRIVER_ERROR_9 
  11781.  0x2022         PMERR_DEVICE_DRIVER_ERROR_10 
  11782.  0x2023         PMERR_DEV_FUNC_NOT_INSTALLED 
  11783.  0x2024         PMERR_DOSOPEN_FAILURE 
  11784.  0x2025         PMERR_DOSREAD_FAILURE 
  11785.  0x2026         PMERR_DRIVER_NOT_FOUND 
  11786.  0x2027         PMERR_DUP_SEG 
  11787.  0x2028         PMERR_DYNAMIC_SEG_SEQ_ERROR 
  11788.  0x2029         PMERR_DYNAMIC_SEG_ZERO_INV 
  11789.  0x202A         PMERR_ELEMENT_INCOMPLETE 
  11790.  0x202B         PMERR_ESC_CODE_NOT_SUPPORTED 
  11791.  0x202C         PMERR_EXCEEDS_MAX_SEG_LENGTH 
  11792.  0x202D         PMERR_FONT_AND_MODE_MISMATCH 
  11793.  0x202E         PMERR_FONT_FILE_NOT_LOADED 
  11794.  0x202F         PMERR_FONT_NOT_LOADED 
  11795.  0x2030         PMERR_FONT_TOO_BIG 
  11796.  0x2031         PMERR_HARDWARE_INIT_FAILURE 
  11797.  0x2032         PMERR_HBITMAP_BUSY 
  11798.  0x2033         PMERR_HDC_BUSY 
  11799.  0x2034         PMERR_HRGN_BUSY 
  11800.  0x2035         PMERR_HUGE_FONTS_NOT_SUPPORTED 
  11801.  0x2036         PMERR_ID_HAS_NO_BITMAP 
  11802.  0x2037         PMERR_IMAGE_INCOMPLETE 
  11803.  0x2038         PMERR_INCOMPAT_COLOR_FORMAT 
  11804.  0x2039         PMERR_INCOMPAT_COLOR_OPTIONS 
  11805.  0x203A         PMERR_INCOMPATIBLE_BITMAP 
  11806.  0x203B         PMERR_INCOMPATIBLE_METAFILE 
  11807.  0x203C         PMERR_INCORRECT_DC_TYPE 
  11808.  0x203D         PMERR_INSUFFICIENT_DISK_SPACE 
  11809.  0x203E         PMERR_INSUFFICIENT_MEMORY 
  11810.  0x203F         PMERR_INV_ANGLE_PARM 
  11811.  0x2040         PMERR_INV_ARC_CONTROL 
  11812.  0x2041         PMERR_INV_AREA_CONTROL 
  11813.  0x2042         PMERR_INV_ARC_POINTS 
  11814.  0x2043         PMERR_INV_ATTR_MODE 
  11815.  0x2044         PMERR_INV_BACKGROUND_COL_ATTR 
  11816.  0x2045         PMERR_INV_BACKGROUND_MIX_ATTR 
  11817.  0x2046         PMERR_INV_BITBLT_MIX 
  11818.  0x2047         PMERR_INV_BITBLT_STYLE 
  11819.  0x2048         PMERR_INV_BITMAP_DIMENSION 
  11820.  0x2049         PMERR_INV_BOX_CONTROL 
  11821.  0x204A         PMERR_INV_BOX_ROUNDING_PARM 
  11822.  0x204B         PMERR_INV_CHAR_ANGLE_ATTR 
  11823.  0x204C         PMERR_INV_CHAR_DIRECTION_ATTR 
  11824.  0x204D         PMERR_INV_CHAR_MODE_ATTR 
  11825.  0x204E         PMERR_INV_CHAR_POS_OPTIONS 
  11826.  0x204F         PMERR_INV_CHAR_SET_ATTR 
  11827.  0x2050         PMERR_INV_CHAR_SHEAR_ATTR 
  11828.  0x2051         PMERR_INV_CLIP_PATH_OPTIONS 
  11829.  0x2052         PMERR_INV_CODEPAGE 
  11830.  0x2053         PMERR_INV_COLOR_ATTR 
  11831.  0x2054         PMERR_INV_COLOR_DATA 
  11832.  0x2055         PMERR_INV_COLOR_FORMAT 
  11833.  0x2056         PMERR_INV_COLOR_INDEX 
  11834.  0x2057         PMERR_INV_COLOR_OPTIONS 
  11835.  0x2058         PMERR_INV_COLOR_START_INDEX 
  11836.  0x2059         PMERR_INV_COORD_OFFSET 
  11837.  0x205A         PMERR_INV_COORD_SPACE 
  11838.  0x205B         PMERR_INV_COORDINATE 
  11839.  0x205C         PMERR_INV_CORRELATE_DEPTH 
  11840.  0x205D         PMERR_INV_CORRELATE_TYPE 
  11841.  0x205E         PMERR_INV_CURSOR_BITMAP 
  11842.  0x205F         PMERR_INV_DC_DATA 
  11843.  0x2060         PMERR_INV_DC_TYPE 
  11844.  0x2061         PMERR_INV_DEVICE_NAME 
  11845.  0x2062         PMERR_INV_DEV_MODES_OPTIONS 
  11846.  0x2063         PMERR_INV_DRAW_CONTROL 
  11847.  0x2064         PMERR_INV_DRAW_VALUE 
  11848.  0x2065         PMERR_INV_DRAWING_MODE 
  11849.  0x2066         PMERR_INV_DRIVER_DATA 
  11850.  0x2067         PMERR_INV_DRIVER_NAME 
  11851.  0x2068         PMERR_INV_DRAW_BORDER_OPTION 
  11852.  0x2069         PMERR_INV_EDIT_MODE 
  11853.  0x206A         PMERR_INV_ELEMENT_OFFSET 
  11854.  0x206B         PMERR_INV_ELEMENT_POINTER 
  11855.  0x206C         PMERR_INV_END_PATH_OPTIONS 
  11856.  0x206D         PMERR_INV_ESC_CODE 
  11857.  0x206E         PMERR_INV_ESCAPE_DATA 
  11858.  0x206F         PMERR_INV_EXTENDED_LCID 
  11859.  0x2070         PMERR_INV_FILL_PATH_OPTIONS 
  11860.  0x2071         PMERR_INV_FIRST_CHAR 
  11861.  0x2072         PMERR_INV_FONT_ATTRS 
  11862.  0x2073         PMERR_INV_FONT_FILE_DATA 
  11863.  0x2074         PMERR_INV_FOR_THIS_DC_TYPE 
  11864.  0x2075         PMERR_INV_FORMAT_CONTROL 
  11865.  0x2076         PMERR_INV_FORMS_CODE 
  11866.  0x2077         PMERR_INV_FONTDEF 
  11867.  0x2078         PMERR_INV_GEOM_LINE_WIDTH_ATTR 
  11868.  0x2079         PMERR_INV_GETDATA_CONTROL 
  11869.  0x207A         PMERR_INV_GRAPHICS_FIELD 
  11870.  0x207B         PMERR_INV_HBITMAP 
  11871.  0x207C         PMERR_INV_HDC 
  11872.  0x207D         PMERR_INV_HJOURNAL 
  11873.  0x207E         PMERR_INV_HMF 
  11874.  0x207F         PMERR_INV_HPS 
  11875.  0x2080         PMERR_INV_HRGN 
  11876.  0x2081         PMERR_INV_ID 
  11877.  0x2082         PMERR_INV_IMAGE_DATA_LENGTH 
  11878.  0x2083         PMERR_INV_IMAGE_DIMENSION 
  11879.  0x2084         PMERR_INV_IMAGE_FORMAT 
  11880.  0x2085         PMERR_INV_IN_AREA 
  11881.  0x2086         PMERR_INV_IN_CALLED_SEG 
  11882.  0x2087         PMERR_INV_IN_CURRENT_EDIT_MODE 
  11883.  0x2088         PMERR_INV_IN_DRAW_MODE 
  11884.  0x2089         PMERR_INV_IN_ELEMENT 
  11885.  0x208A         PMERR_INV_IN_IMAGE 
  11886.  0x208B         PMERR_INV_IN_PATH 
  11887.  0x208C         PMERR_INV_IN_RETAIN_MODE 
  11888.  0x208D         PMERR_INV_IN_SEG 
  11889.  0x208E         PMERR_INV_IN_VECTOR_SYMBOL 
  11890.  0x208F         PMERR_INV_INFO_TABLE 
  11891.  0x2090         PMERR_INV_JOURNAL_OPTION 
  11892.  0x2091         PMERR_INV_KERNING_FLAGS 
  11893.  0x2092         PMERR_INV_LENGTH_OR_COUNT 
  11894.  0x2093         PMERR_INV_LINE_END_ATTR 
  11895.  0x2094         PMERR_INV_LINE_JOIN_ATTR 
  11896.  0x2095         PMERR_INV_LINE_TYPE_ATTR 
  11897.  0x2096         PMERR_INV_LINE_WIDTH_ATTR 
  11898.  0x2097         PMERR_INV_LOGICAL_ADDRESS 
  11899.  0x2098         PMERR_INV_MARKER_BOX_ATTR 
  11900.  0x2099         PMERR_INV_MARKER_SET_ATTR 
  11901.  0x209A         PMERR_INV_MARKER_SYMBOL_ATTR 
  11902.  0x209B         PMERR_INV_MATRIX_ELEMENT 
  11903.  0x209C         PMERR_INV_MAX_HITS 
  11904.  0x209D         PMERR_INV_METAFILE 
  11905.  0x209E         PMERR_INV_METAFILE_LENGTH 
  11906.  0x209F         PMERR_INV_METAFILE_OFFSET 
  11907.  0x20A0         PMERR_INV_MICROPS_DRAW_CONTROL 
  11908.  0x20A1         PMERR_INV_MICROPS_FUNCTION 
  11909.  0x20A2         PMERR_INV_MICROPS_ORDER 
  11910.  0x20A3         PMERR_INV_MIX_ATTR 
  11911.  0x20A4         PMERR_INV_MODE_FOR_OPEN_DYN 
  11912.  0x20A5         PMERR_INV_MODE_FOR_REOPEN_SEG 
  11913.  0x20A6         PMERR_INV_MODIFY_PATH_MODE 
  11914.  0x20A7         PMERR_INV_MULTIPLIER 
  11915.  0x20A8         PMERR_INV_NESTED_FIGURES 
  11916.  0x20A9         PMERR_INV_OR_INCOMPAT_OPTIONS 
  11917.  0x20AA         PMERR_INV_ORDER_LENGTH 
  11918.  0x20AB         PMERR_INV_ORDERING_PARM 
  11919.  0x20AC         PMERR_INV_OUTSIDE_DRAW_MODE 
  11920.  0x20AD         PMERR_INV_PAGE_VIEWPORT 
  11921.  0x20AE         PMERR_INV_PATH_ID 
  11922.  0x20AF         PMERR_INV_PATH_MODE 
  11923.  0x20B0         PMERR_INV_PATTERN_ATTR 
  11924.  0x20B1         PMERR_INV_PATTERN_REF_PT_ATTR 
  11925.  0x20B2         PMERR_INV_PATTERN_SET_ATTR 
  11926.  0x20B3         PMERR_INV_PATTERN_SET_FONT 
  11927.  0x20B4         PMERR_INV_PICK_APERTURE_OPTION 
  11928.  0x20B5         PMERR_INV_PICK_APERTURE_POSN 
  11929.  0x20B6         PMERR_INV_PICK_APERTURE_SIZE 
  11930.  0x20B7         PMERR_INV_PICK_NUMBER 
  11931.  0x20B8         PMERR_INV_PLAY_METAFILE_OPTION 
  11932.  0x20B9         PMERR_INV_PRIMITIVE_TYPE 
  11933.  0x20BA         PMERR_INV_PS_SIZE 
  11934.  0x20BB         PMERR_INV_PUTDATA_FORMAT 
  11935.  0x20BC         PMERR_INV_QUERY_ELEMENT_NO 
  11936.  0x20BD         PMERR_INV_RECT 
  11937.  0x20BE         PMERR_INV_REGION_CONTROL 
  11938.  0x20BF         PMERR_INV_REGION_MIX_MODE 
  11939.  0x20C0         PMERR_INV_REPLACE_MODE_FUNC 
  11940.  0x20C1         PMERR_INV_RESERVED_FIELD 
  11941.  0x20C2         PMERR_INV_RESET_OPTIONS 
  11942.  0x20C3         PMERR_INV_RGBCOLOR 
  11943.  0x20C4         PMERR_INV_SCAN_START 
  11944.  0x20C5         PMERR_INV_SEG_ATTR 
  11945.  0x20C6         PMERR_INV_SEG_ATTR_VALUE 
  11946.  0x20C7         PMERR_INV_SEG_CH_LENGTH 
  11947.  0x20C8         PMERR_INV_SEG_NAME 
  11948.  0x20C9         PMERR_INV_SEG_OFFSET 
  11949.  0x20CA         PMERR_INV_SETID 
  11950.  0x20CB         PMERR_INV_SETID_TYPE 
  11951.  0x20CC         PMERR_INV_SET_VIEWPORT_OPTION 
  11952.  0x20CD         PMERR_INV_SHARPNESS_PARM 
  11953.  0x20CE         PMERR_INV_SOURCE_OFFSET 
  11954.  0x20CF         PMERR_INV_STOP_DRAW_VALUE 
  11955.  0x20D0         PMERR_INV_TRANSFORM_TYPE 
  11956.  0x20D1         PMERR_INV_USAGE_PARM 
  11957.  0x20D2         PMERR_INV_VIEWING_LIMITS 
  11958.  0x20D3         PMERR_JFILE_BUSY 
  11959.  0x20D4         PMERR_JNL_FUNC_DATA_TOO_LONG 
  11960.  0x20D5         PMERR_KERNING_NOT_SUPPORTED 
  11961.  0x20D6         PMERR_LABEL_NOT_FOUND 
  11962.  0x20D7         PMERR_MATRIX_OVERFLOW 
  11963.  0x20D8         PMERR_METAFILE_INTERNAL_ERROR 
  11964.  0x20D9         PMERR_METAFILE_IN_USE 
  11965.  0x20DA         PMERR_METAFILE_LIMIT_EXCEEDED 
  11966.  0x20DB         PMERR_NAME_STACK_FULL 
  11967.  0x20DC         PMERR_NOT_CREATED_BY_DEVOPENDC 
  11968.  0x20DD         PMERR_NOT_IN_AREA 
  11969.  0x20DE         PMERR_NOT_IN_DRAW_MODE 
  11970.  0x20DF         PMERR_NOT_IN_ELEMENT 
  11971.  0x20E0         PMERR_NOT_IN_IMAGE 
  11972.  0x20E1         PMERR_NOT_IN_PATH 
  11973.  0x20E2         PMERR_NOT_IN_RETAIN_MODE 
  11974.  0x20E3         PMERR_NOT_IN_SEG 
  11975.  0x20E4         PMERR_NO_BITMAP_SELECTED 
  11976.  0x20E5         PMERR_NO_CURRENT_ELEMENT 
  11977.  0x20E6         PMERR_NO_CURRENT_SEG 
  11978.  0x20E7         PMERR_NO_METAFILE_RECORD_HANDLE 
  11979.  0x20E8         PMERR_ORDER_TOO_BIG 
  11980.  0x20E9         PMERR_OTHER_SET_ID_REFS 
  11981.  0x20EA         PMERR_OVERRAN_SEG 
  11982.  0x20EB         PMERR_OWN_SET_ID_REFS 
  11983.  0x20EC         PMERR_PATH_INCOMPLETE 
  11984.  0x20ED         PMERR_PATH_LIMIT_EXCEEDED 
  11985.  0x20EE         PMERR_PATH_UNKNOWN 
  11986.  0x20EF         PMERR_PEL_IS_CLIPPED 
  11987.  0x20F0         PMERR_PEL_NOT_AVAILABLE 
  11988.  0x20F1         PMERR_PRIMITIVE_STACK_EMPTY 
  11989.  0x20F2         PMERR_PROLOG_ERROR 
  11990.  0x20F3         PMERR_PROLOG_SEG_ATTR_NOT_SET 
  11991.  0x20F4         PMERR_PS_BUSY 
  11992.  0x20F5         PMERR_PS_IS_ASSOCIATED 
  11993.  0x20F6         PMERR_RAM_JNL_FILE_TOO_SMALL 
  11994.  0x20F7         PMERR_REALIZE_NOT_SUPPORTED 
  11995.  0x20F8         PMERR_REGION_IS_CLIP_REGION 
  11996.  0x20F9         PMERR_RESOURCE_DEPLETION 
  11997.  0x20FA         PMERR_SEG_AND_REFSEG_ARE_SAME 
  11998.  0x20FB         PMERR_SEG_CALL_RECURSIVE 
  11999.  0x20FC         PMERR_SEG_CALL_STACK_EMPTY 
  12000.  0x20FD         PMERR_SEG_CALL_STACK_FULL 
  12001.  0x20FE         PMERR_SEG_IS_CURRENT 
  12002.  0x20FF         PMERR_SEG_NOT_CHAINED 
  12003.  0x2100         PMERR_SEG_NOT_FOUND 
  12004.  0x2101         PMERR_SEG_STORE_LIMIT_EXCEEDED 
  12005.  0x2102         PMERR_SETID_IN_USE 
  12006.  0x2103         PMERR_SETID_NOT_FOUND 
  12007.  0x2104         PMERR_STARTDOC_NOT_ISSUED 
  12008.  0x2105         PMERR_STOP_DRAW_OCCURRED 
  12009.  0x2106         PMERR_TOO_MANY_METAFILES_IN_USE 
  12010.  0x2107         PMERR_TRUNCATED_ORDER 
  12011.  0x2108         PMERR_UNCHAINED_SEG_ZERO_INV 
  12012.  0x2109         PMERR_UNSUPPORTED_ATTR 
  12013.  0x210A         PMERR_UNSUPPORTED_ATTR_VALUE 
  12014.  0x210B         PMERR_ENDDOC_NOT_ISSUED 
  12015.  0x210C         PMERR_PS_NOT_ASSOCIATED 
  12016.  0x210D         PMERR_INV_FLOOD_FILL_OPTIONS 
  12017.  0x210E         PMERR_INV_FACENAME 
  12018.  0x210F         PMERR_PALETTE_SELECTED 
  12019.  0x2110         PMERR_NO_PALETTE_SELECTED 
  12020.  0x2111         PMERR_INV_HPAL 
  12021.  0x2112         PMERR_PALETTE_BUSY 
  12022.  0x2113         PMERR_START_POINT_CLIPPED 
  12023.  0x2114         PMERR_NO_FILL 
  12024.  0x2115         PMERR_INV_FACENAMEDESC 
  12025.  0x2116         PMERR_INV_BITMAP_DATA 
  12026.  0x2117         PMERR_INV_CHAR_ALIGN_ATTR 
  12027.  0x2118         PMERR_INV_HFONT 
  12028.  0x2119         PMERR_HFONT_IS_SELECTED 
  12029.  0x2120         PMERR_DRVR_NOT_SUPPORTED 
  12030.  0x2120         PMERR_RASTER_FONT 
  12031.  0x3001         HMERR_DDF_MEMORY 
  12032.  0x3002         HMERR_DDF_ALIGN_TYPE 
  12033.  0x3003         HMERR_DDF_BACKCOLOR 
  12034.  0x3004         HMERR_DDF_FORECOLOR 
  12035.  0x3005         HMERR_DDF_FONTSTYLE 
  12036.  0x3006         HMERR_DDF_REFTYPE 
  12037.  0x3007         HMERR_DDF_LIST_UNCLOSED 
  12038.  0x3008         HMERR_DDF_LIST_UNINITIALIZED 
  12039.  0x3009         HMERR_DDF_LIST_BREAKTYPE 
  12040.  0x300A         HMERR_DDF_LIST_SPACING 
  12041.  0x300B         HMERR_DDF_HINSTANCE 
  12042.  0x300C         HMERR_DDF_EXCEED_MAX_LENGTH 
  12043.  0x300D         HMERR_DDF_EXCEED_MAX_INC 
  12044.  0x300E         HMERR_DDF_INVALID_DDF 
  12045.  0x300F         HMERR_DDF_FORMAT_TYPE 
  12046.  0x3010         HMERR_DDF_INVALID_PARM 
  12047.  0x3011         HMERR_DDF_INVALID_FONT 
  12048.  0x3012         HMERR_DDF_SEVERE 
  12049.  0x4001         PMERR_SPL_DRIVER_ERROR 
  12050.  0x4001         MERR_SPL_DRIVER_ERROR 
  12051.  0x4002         PMERR_SPL_DEVICE_ERROR 
  12052.  0x4002         MERR_SPL_DEVICE_ERROR 
  12053.  0x4003         PMERR_SPL_DEVICE_NOT_INSTALLED 
  12054.  0x4003         MERR_SPL_DEVICE_NOT_INSTALLED 
  12055.  0x4004         PMERR_SPL_QUEUE_ERROR 
  12056.  0x4004         MERR_SPL_QUEUE_ERROR 
  12057.  0x4005         PMERR_SPL_INV_HSPL 
  12058.  0x4005         MERR_SPL_INV_HSPL 
  12059.  0x4006         PMERR_SPL_NO_DISK_SPACE 
  12060.  0x4006         MERR_SPL_NO_DISK_SPACE 
  12061.  0x4007         PMERR_SPL_NO_MEMORY 
  12062.  0x4007         MERR_SPL_NO_MEMORY 
  12063.  0x4008         PMERR_SPL_PRINT_ABORT 
  12064.  0x4008         MERR_SPL_PRINT_ABORT 
  12065.  0x4009         PMERR_SPL_SPOOLER_NOT_INSTALLED 
  12066.  0x4009         MERR_SPL_SPOOLER_NOT_INSTALLED 
  12067.  0x400A         PMERR_SPL_INV_FORMS_CODE 
  12068.  0x400A         MERR_SPL_INV_FORMS_CODE 
  12069.  0x400B         PMERR_SPL_INV_PRIORITY 
  12070.  0x400B         MERR_SPL_INV_PRIORITY 
  12071.  0x400C         PMERR_SPL_NO_FREE_JOB_ID 
  12072.  0x400C         MERR_SPL_NO_FREE_JOB_ID 
  12073.  0x400D         PMERR_SPL_NO_DATA 
  12074.  0x400D         MERR_SPL_NO_DATA 
  12075.  0x400E         PMERR_SPL_INV_TOKEN 
  12076.  0x400E         MERR_SPL_INV_TOKEN 
  12077.  0x400F         PMERR_SPL_INV_DATATYPE 
  12078.  0x400F         MERR_SPL_INV_DATATYPE 
  12079.  0x4010         PMERR_SPL_PROCESSOR_ERROR 
  12080.  0x4010         MERR_SPL_PROCESSOR_ERROR 
  12081.  0x4011         PMERR_SPL_INV_JOB_ID 
  12082.  0x4011         MERR_SPL_INV_JOB_ID 
  12083.  0x4012         PMERR_SPL_JOB_NOT_PRINTING 
  12084.  0x4012         MERR_SPL_JOB_NOT_PRINTING 
  12085.  0x4013         PMERR_SPL_JOB_PRINTING 
  12086.  0x4013         MERR_SPL_JOB_PRINTING 
  12087.  0x4014         PMERR_SPL_QUEUE_ALREADY_EXISTS 
  12088.  0x4014         MERR_SPL_QUEUE_ALREADY_EXISTS 
  12089.  0x4015         PMERR_SPL_INV_QUEUE_NAME 
  12090.  0x4015         MERR_SPL_INV_QUEUE_NAME 
  12091.  0x4016         PMERR_SPL_QUEUE_NOT_EMPTY 
  12092.  0x4016         MERR_SPL_QUEUE_NOT_EMPTY 
  12093.  0x4017         PMERR_SPL_DEVICE_ALREADY_EXISTS 
  12094.  0x4017         MERR_SPL_DEVICE_ALREADY_EXISTS 
  12095.  0x4018         PMERR_SPL_DEVICE_LIMIT_REACHED 
  12096.  0x4018         MERR_SPL_DEVICE_LIMIT_REACHED 
  12097.  0x4019         PMERR_SPL_STATUS_STRING_TRUNC 
  12098.  0x4019         MERR_SPL_STATUS_STRING_TRUNC 
  12099.  0x401A         PMERR_SPL_INV_LENGTH_OR_COUNT 
  12100.  0x401A         MERR_SPL_INV_LENGTH_OR_COUNT 
  12101.  0x401B         PMERR_SPL_FILE_NOT_FOUND 
  12102.  0x401B         MERR_SPL_FILE_NOT_FOUND 
  12103.  0x401C         PMERR_SPL_CANNOT_OPEN_FILE 
  12104.  0x401C         MERR_SPL_CANNOT_OPEN_FILE 
  12105.  0x401D         PMERR_SPL_DRIVER_NOT_INSTALLED 
  12106.  0x401D         MERR_SPL_DRIVER_NOT_INSTALLED 
  12107.  0x401E         PMERR_SPL_INV_PROCESSOR_DATTYPE 
  12108.  0x401E         MERR_SPL_INV_PROCESSOR_DATTYPE 
  12109.  0x401F         PMERR_SPL_INV_DRIVER_DATATYPE 
  12110.  0x401F         MERR_SPL_INV_DRIVER_DATATYPE 
  12111.  0x4020         PMERR_SPL_PROCESSOR_NOT_INST 
  12112.  0x4020         MERR_SPL_PROCESSOR_NOT_INST 
  12113.  0x4021         PMERR_SPL_NO_SUCH_LOG_ADDRESS 
  12114.  0x4021         MERR_SPL_NO_SUCH_LOG_ADDRESS 
  12115.  0x4022         PMERR_SPL_PRINTER_NOT_FOUND 
  12116.  0x4022         MERR_SPL_PRINTER_NOT_FOUND 
  12117.  0x4023         PMERR_SPL_DD_NOT_FOUND 
  12118.  0x4023         MERR_SPL_DD_NOT_FOUND 
  12119.  0x4024         PMERR_SPL_QUEUE_NOT_FOUND 
  12120.  0x4024         MERR_SPL_QUEUE_NOT_FOUND 
  12121.  0x4025         PMERR_SPL_MANY_QUEUES_ASSOC 
  12122.  0x4025         MERR_SPL_MANY_QUEUES_ASSOC 
  12123.  0x4026         PMERR_SPL_NO_QUEUES_ASSOCIATED 
  12124.  0x4026         MERR_SPL_NO_QUEUES_ASSOCIATED 
  12125.  0x4027         PMERR_SPL_INI_FILE_ERROR 
  12126.  0x4027         MERR_SPL_INI_FILE_ERROR 
  12127.  0x4028         PMERR_SPL_NO_DEFAULT_QUEUE 
  12128.  0x4028         MERR_SPL_NO_DEFAULT_QUEUE 
  12129.  0x4029         PMERR_SPL_NO_CURRENT_FORMS_CODE 
  12130.  0x4029         MERR_SPL_NO_CURRENT_FORMS_CODE 
  12131.  0x402A         PMERR_SPL_NOT_AUTHORISED 
  12132.  0x402A         MERR_SPL_NOT_AUTHORISED 
  12133.  0x402B         PMERR_SPL_TEMP_NETWORK_ERROR 
  12134.  0x402B         MERR_SPL_TEMP_NETWORK_ERROR 
  12135.  0x402C         PMERR_SPL_HARD_NETWORK_ERROR 
  12136.  0x402C         MERR_SPL_HARD_NETWORK_ERROR 
  12137.  0x402D         PMERR_DEL_NOT_ALLOWED 
  12138.  0x402D         MERR_DEL_NOT_ALLOWED 
  12139.  0x402E         PMERR_CANNOT_DEL_QP_REF 
  12140.  0x402E         MERR_CANNOT_DEL_QP_REF 
  12141.  0x402F         PMERR_CANNOT_DEL_QNAME_REF 
  12142.  0x402F         MERR_CANNOT_DEL_QNAME_REF 
  12143.  0x4030         PMERR_CANNOT_DEL_PRINTER_DD_REF 
  12144.  0x4030         MERR_CANNOT_DEL_PRINTER_DD_REF 
  12145.  0x4031         PMERR_CANNOT_DEL_PRN_NAME_REF 
  12146.  0x4031         MERR_CANNOT_DEL_PRN_NAME_REF 
  12147.  0x4032         PMERR_CANNOT_DEL_PRN_ADDR_REF 
  12148.  0x4032         MERR_CANNOT_DEL_PRN_ADDR_REF 
  12149.  0x4033         PMERR_SPOOLER_QP_NOT_DEFINED 
  12150.  0x4033         MERR_SPOOLER_QP_NOT_DEFINED 
  12151.  0x4034         PMERR_PRN_NAME_NOT_DEFINED 
  12152.  0x4034         MERR_PRN_NAME_NOT_DEFINED 
  12153.  0x4035         PMERR_PRN_ADDR_NOT_DEFINED 
  12154.  0x4035         MERR_PRN_ADDR_NOT_DEFINED 
  12155.  0x4036         PMERR_PRINTER_DD_NOT_DEFINED 
  12156.  0x4036         MERR_PRINTER_DD_NOT_DEFINED 
  12157.  0x4037         PMERR_PRINTER_QUEUE_NOT_DEFINED 
  12158.  0x4037         MERR_PRINTER_QUEUE_NOT_DEFINED 
  12159.  0x4038         PMERR_PRN_ADDR_IN_USE 
  12160.  0x4038         MERR_PRN_ADDR_IN_USE 
  12161.  0x4039         PMERR_SPL_TOO_MANY_OPEN_FILES 
  12162.  0x4039         MERR_SPL_TOO_MANY_OPEN_FILES 
  12163.  0x403A         PMERR_SPL_CP_NOT_REQD 
  12164.  0x403A         MERR_SPL_CP_NOT_REQD 
  12165.  0x4040         PMERR_UNABLE_TO_CLOSE_DEVICE 
  12166.  0x4040         MERR_UNABLE_TO_CLOSE_DEVICE 
  12167.  0x4FC9         PMERR_SPLMSGBOX_INFO_CAPTION 
  12168.  0x4FC9         MERR_SPLMSGBOX_INFO_CAPTION 
  12169.  0x4FCA         PMERR_SPLMSGBOX_WARNING_CAPTION 
  12170.  0x4FCA         MERR_SPLMSGBOX_WARNING_CAPTION 
  12171.  0x4FCB         PMERR_SPLMSGBOX_ERROR_CAPTION 
  12172.  0x4FCB         MERR_SPLMSGBOX_ERROR_CAPTION 
  12173.  0x4FCC         PMERR_SPLMSGBOX_SEVERE_CAPTION 
  12174.  0x4FCC         MERR_SPLMSGBOX_SEVERE_CAPTION 
  12175.  0x4FCD         PMERR_SPLMSGBOX_JOB_DETAILS 
  12176.  0x4FCD         MERR_SPLMSGBOX_JOB_DETAILS 
  12177.  0x4FCE         PMERR_SPLMSGBOX_ERROR_ACTION 
  12178.  0x4FCE         MERR_SPLMSGBOX_ERROR_ACTION 
  12179.  0x4FCF         PMERR_SPLMSGBOX_SEVERE_ACTION 
  12180.  0x4FCF         MERR_SPLMSGBOX_SEVERE_ACTION 
  12181.  0x4FD0         PMERR_SPLMSGBOX_BIT_0_TEXT 
  12182.  0x4FD0         MERR_SPLMSGBOX_BIT_0_TEXT 
  12183.  0x4FD1         PMERR_SPLMSGBOX_BIT_1_TEXT 
  12184.  0x4FD1         MERR_SPLMSGBOX_BIT_1_TEXT 
  12185.  0x4FD2         PMERR_SPLMSGBOX_BIT_2_TEXT 
  12186.  0x4FD2         MERR_SPLMSGBOX_BIT_2_TEXT 
  12187.  0x4FD3         PMERR_SPLMSGBOX_BIT_3_TEXT 
  12188.  0x4FD3         MERR_SPLMSGBOX_BIT_3_TEXT 
  12189.  0x4FD4         PMERR_SPLMSGBOX_BIT_4_TEXT 
  12190.  0x4FD4         MERR_SPLMSGBOX_BIT_4_TEXT 
  12191.  0x4FD5         PMERR_SPLMSGBOX_BIT_5_TEXT 
  12192.  0x4FD5         MERR_SPLMSGBOX_BIT_5_TEXT 
  12193.  0x4FD6         PMERR_SPLMSGBOX_BIT_15_TEXT 
  12194.  0x4FD6         MERR_SPLMSGBOX_BIT_15_TEXT 
  12195.  0x4FD7         PMERR_SPL_NOPATHBUFFER 
  12196.  0x4FD7         MERR_SPL_NOPATHBUFFER 
  12197.  0x4FD8         MERR_SPL_ALREADY_INITIALISED 
  12198.  0x4FD9         MERR_SPL_ERROR 
  12199.  0x5001         PMERR_INV_TYPE 
  12200.  0x5001         MERR_INV_TYPE 
  12201.  0x5002         PMERR_INV_CONV 
  12202.  0x5002         MERR_INV_CONV 
  12203.  0x5003         PMERR_INV_SEGLEN 
  12204.  0x5003         MERR_INV_SEGLEN 
  12205.  0x5004         PMERR_DUP_SEGNAME 
  12206.  0x5004         MERR_DUP_SEGNAME 
  12207.  0x5005         PMERR_INV_XFORM 
  12208.  0x5005         MERR_INV_XFORM 
  12209.  0x5006         PMERR_INV_VIEWLIM 
  12210.  0x5006         MERR_INV_VIEWLIM 
  12211.  0x5007         PMERR_INV_3DCOORD 
  12212.  0x5007         MERR_INV_3DCOORD 
  12213.  0x5008         PMERR_SMB_OVFLOW 
  12214.  0x5008         MERR_SMB_OVFLOW 
  12215.  0x5009         PMERR_SEG_OVFLOW 
  12216.  0x5009         MERR_SEG_OVFLOW 
  12217.  0x5010         PMERR_PIC_DUP_FILENAME 
  12218.  0x5010         MERR_PIC_DUP_FILENAME 
  12219.  SPLERR_BASE+0FA1   PMERR_SPL_ERROR_1 
  12220.  SPLERR_BASE+0FA2   PMERR_SPL_ERROR_2 
  12221.  SPLERR_BASE+0FA3   PMERR_SPL_ERROR_3 
  12222.  SPLERR_BASE+0FA4   PMERR_SPL_ERROR_4 
  12223.  SPLERR_BASE+0FA5   PMERR_SPL_ERROR_5 
  12224.  SPLERR_BASE+0FA6   PMERR_SPL_ERROR_6 
  12225.  SPLERR_BASE+0FA7   PMERR_SPL_ERROR_7 
  12226.  SPLERR_BASE+0FA8   PMERR_SPL_ERROR_8 
  12227.  SPLERR_BASE+0FA9   PMERR_SPL_ERROR_9 
  12228.  SPLERR_BASE+0FAA   PMERR_SPL_ERROR_10 
  12229.  SPLERR_BASE+0FAB   PMERR_SPL_ERROR_11 
  12230.  SPLERR_BASE+0FAC   PMERR_SPL_ERROR_12 
  12231.  SPLERR_BASE+0FAD   PMERR_SPL_ERROR_13 
  12232.  SPLERR_BASE+0FAE   PMERR_SPL_ERROR_14 
  12233.  SPLERR_BASE+0FAF   PMERR_SPL_ERROR_15 
  12234.  SPLERR_BASE+0FB0   PMERR_SPL_ERROR_16 
  12235.  SPLERR_BASE+0FB1   PMERR_SPL_ERROR_17 
  12236.  SPLERR_BASE+0FB2   PMERR_SPL_ERROR_18 
  12237.  SPLERR_BASE+0FB3   PMERR_SPL_ERROR_19 
  12238.  SPLERR_BASE+0FB4   PMERR_SPL_ERROR_20 
  12239.  SPLERR_BASE+0FB5   PMERR_SPL_ERROR_21 
  12240.  SPLERR_BASE+0FB6   PMERR_SPL_ERROR_22 
  12241.  SPLERR_BASE+0FB7   PMERR_SPL_ERROR_23 
  12242.  SPLERR_BASE+0FB8   PMERR_SPL_ERROR_24 
  12243.  SPLERR_BASE+0FB9   PMERR_SPL_ERROR_25 
  12244.  SPLERR_BASE+0FBA   PMERR_SPL_ERROR_26 
  12245.  SPLERR_BASE+0FBB   PMERR_SPL_ERROR_27 
  12246.  SPLERR_BASE+0FBC   PMERR_SPL_ERROR_28 
  12247.  SPLERR_BASE+0FBD   PMERR_SPL_ERROR_29 
  12248.  SPLERR_BASE+0FBE   PMERR_SPL_ERROR_30 
  12249.  SPLERR_BASE+0FBF   PMERR_SPL_ERROR_31 
  12250.  SPLERR_BASE+0FC0   PMERR_SPL_ERROR_32 
  12251.  SPLERR_BASE+0FC1   PMERR_SPL_ERROR_33 
  12252.  SPLERR_BASE+0FC2   PMERR_SPL_ERROR_34 
  12253.  SPLERR_BASE+0FC3   PMERR_SPL_ERROR_35 
  12254.  SPLERR_BASE+0FC4   PMERR_SPL_ERROR_36 
  12255.  SPLERR_BASE+0FC5   PMERR_SPL_ERROR_37 
  12256.  SPLERR_BASE+0FC6   PMERR_SPL_ERROR_38 
  12257.  SPLERR_BASE+0FC7   PMERR_SPL_ERROR_39 
  12258.  SPLERR_BASE+0FC8   PMERR_SPL_ERROR_40 
  12259.  SPLERR_BASE+0FFF   PMERR_SPL_ERROR 
  12260.  SPLERR_BASE+0FFD   PMERR_SPL_ALREADY_INITIALISED 
  12261.  
  12262.  
  12263. ΓòÉΓòÉΓòÉ 4.2. Error Name and Explanation ΓòÉΓòÉΓòÉ
  12264.  
  12265. This appendix gives an explanation for each PM error. The errors are listed in 
  12266. alphabetic order. The number associated with each error is given in Error 
  12267. Number and Name. 
  12268.  
  12269.  Error Constant                                  Explanation 
  12270.  
  12271.  HMERR_ALLOCATE_SEGMENT                          Unable to allocate a segment 
  12272.                                                  of memory for memory 
  12273.                                                  allocation requests from the 
  12274.                                                  Help Manager. 
  12275.  
  12276.  HMERR_CLOSE_LIB_FILE                            The library file cannot be 
  12277.                                                  closed. 
  12278.  
  12279.  HMERR_CONTENT_NOT_FOUND                         The library file does not have 
  12280.                                                  any content. 
  12281.  
  12282.  HMERR_DATABASE_NOT_OPEN                         Unable to read the unopened 
  12283.                                                  database. 
  12284.  
  12285.  HMERR_DDF_ALIGN_TYPE                            The alignment type is not 
  12286.                                                  valid. 
  12287.  
  12288.  HMERR_DDF_BACKCOLOR                             The background color is not 
  12289.                                                  valid. 
  12290.  
  12291.  HMERR_DDF_EXCEED_MAX_INC                        The value specified to 
  12292.                                                  increment DDF memory is too 
  12293.                                                  large. 
  12294.  
  12295.  HMERR_DDF_EXCEED_MAX_LENGTH                     The amount of data is too 
  12296.                                                  large for the DDF buffer. 
  12297.  
  12298.  HMERR_DDF_FONTSTYLE                             The font style is not valid. 
  12299.  
  12300.  HMERR_DDF_FORECOLOR                             The foreground color is not 
  12301.                                                  valid. 
  12302.  
  12303.  HMERR_DDF_FORMAT_TYPE                           The format type specified is 
  12304.                                                  invalid. 
  12305.  
  12306.  HMERR_DDF_HINSTANCE                             The DDF instance is invalid. 
  12307.  
  12308.  HMERR_DDF_INVALID_DDF                           The DDF handle is invalid. 
  12309.  
  12310.  HMERR_DDF_INVALID_FONT                          The font value specified is 
  12311.                                                  invalid. 
  12312.  
  12313.  HMERR_DDF_INVALID_PARM                          One of the DDF parameters 
  12314.                                                  specified is invalid. 
  12315.  
  12316.  HMERR_DDF_LIST_BREAKTYPE                        The value of BreakType is not 
  12317.                                                  valid. 
  12318.  
  12319.  HMERR_DDF_LIST_SPACING                          The value for Spacing is not 
  12320.                                                  valid. 
  12321.  
  12322.  HMERR_DDF_LIST_UNCLOSED                         An attempt was made to nest a 
  12323.                                                  list. 
  12324.  
  12325.  HMERR_DDF_LIST_UNINITIALIZED                    No definition list has been 
  12326.                                                  initialized by DdfBeginList. 
  12327.  
  12328.  HMERR_DDF_MEMORY                                Not enough memory is 
  12329.                                                  available. 
  12330.  
  12331.  HMERR_DDF_REFTYPE                               The reference type is not 
  12332.                                                  valid. 
  12333.  
  12334.  HMERR_DDF_SEVERE                                Internal error detected by the 
  12335.                                                  Help Manager. 
  12336.  
  12337.  HMERR_FREE_MEMORY                               Unable to free allocated 
  12338.                                                  memory. 
  12339.  
  12340.  HMERR_HELP_INST_CALLED_INVALID                  The handle of the instance 
  12341.                                                  specified on a call to the 
  12342.                                                  Help Manager does not have the 
  12343.                                                  class name of a Help Manager 
  12344.                                                  instance. 
  12345.  
  12346.  HMERR_HELP_INSTANCE_UNDEFINE                    The help instance handle 
  12347.                                                  specified is invalid. 
  12348.  
  12349.  HMERR_HELPITEM_NOT_FOUND                        Context-sensitive help was 
  12350.                                                  requested but the ID of the 
  12351.                                                  main help item specified was 
  12352.                                                  not found in the help table. 
  12353.  
  12354.  HMERR_HELPSUBITEM_NOT_FOUND                     Context-sensitive help was 
  12355.                                                  requested but the ID of the 
  12356.                                                  help item specified was not 
  12357.                                                  found in the help subtable. 
  12358.  
  12359.  HMERR_HELPTABLE_UNDEFINE                        The application did not 
  12360.                                                  provide a help table for 
  12361.                                                  context-sensitive help. 
  12362.  
  12363.  HMERR_INDEX_NOT_FOUND                           The index is not in the 
  12364.                                                  library file. 
  12365.  
  12366.  HMERR_INVALID_ASSOC_APP_WND                     The application window handle 
  12367.                                                  specified on the 
  12368.                                                  WinAssociateHelpInstance 
  12369.                                                  function is not a valid window 
  12370.                                                  handle. 
  12371.  
  12372.  HMERR_INVALID_ASSOC_HELP_INST                   The help instance handle 
  12373.                                                  specified on the 
  12374.                                                  WinAssociateHelpInstance 
  12375.                                                  function is not a valid window 
  12376.                                                  handle. 
  12377.  
  12378.  HMERR_INVALID_DESTROY_HELP_INST                 The window handle specified as 
  12379.                                                  the help instance to destroy 
  12380.                                                  is not of the help instance 
  12381.                                                  class. 
  12382.  
  12383.  HMERR_INVALID_HELP_INSTANCE_HDL                 The handle specified to be a 
  12384.                                                  help instance does not have 
  12385.                                                  the class name of a Help 
  12386.                                                  Manager instance. 
  12387.  
  12388.  HMERR_INVALID_HELPSUBITEM_SIZE                  The help subtable item size is 
  12389.                                                  less than 2. 
  12390.  
  12391.  HMERR_INVALID_LIB_FILE                          Improper library file 
  12392.                                                  provided. 
  12393.  
  12394.  HMERR_INVALID_QUERY_APP_WND                     The application window 
  12395.                                                  specified on a 
  12396.                                                  WinQueryHelpInstance function 
  12397.                                                  is not a valid window handle. 
  12398.  
  12399.  HMERR_LOAD_DLL                                  Unable to load resource data 
  12400.                                                  link library. 
  12401.  
  12402.  HMERR_NO_FRAME_WND_IN_CHAIN                     There is no frame window in 
  12403.                                                  the window chain from which to 
  12404.                                                  find or set the associated 
  12405.                                                  help instance. 
  12406.  
  12407.  HMERR_NO_HELP_INST_IN_CHAIN                     The parent or owner chain of 
  12408.                                                  the application window 
  12409.                                                  specified does not have an 
  12410.                                                  associated help instance. 
  12411.  
  12412.  HMERR_NO_MEMORY                                 Unable to allocate the 
  12413.                                                  requested amount of memory. 
  12414.  
  12415.  HMERR_OPEN_LIB_FILE                             The library file cannot be 
  12416.                                                  opened. 
  12417.  
  12418.  HMERR_PANEL_NOT_FOUND                           Unable to find the requested 
  12419.                                                  help panel. 
  12420.  
  12421.  HMERR_READ_LIB_FILE                             The library file cannot be 
  12422.                                                  read. 
  12423.  
  12424.  PMERR_ACCESS_DENIED                             The memory block was not 
  12425.                                                  allocated properly. 
  12426.  
  12427.  PMERR_ALREADY_IN_AREA                           An attempt was made to begin a 
  12428.                                                  new area while an existing 
  12429.                                                  area bracket was already open. 
  12430.  
  12431.  PMERR_ALREADY_IN_ELEMENT                        An attempt was made to begin a 
  12432.                                                  new element while an existing 
  12433.                                                  element bracket was already 
  12434.                                                  open. 
  12435.  
  12436.  PMERR_ALREADY_IN_PATH                           An attempt was made to begin a 
  12437.                                                  new path while an existing 
  12438.                                                  path bracket was already open. 
  12439.  
  12440.  PMERR_ALREADY_IN_SEG                            An attempt was made to open a 
  12441.                                                  new segment while an existing 
  12442.                                                  segment bracket was already 
  12443.                                                  open. 
  12444.  
  12445.  PMERR_APPL_STRUCTURE_TOO_SMALL                  The application buffer length 
  12446.                                                  is less than the total length 
  12447.                                                  required for the (application) 
  12448.                                                  component types. 
  12449.  
  12450.  PMERR_AREA_INCOMPLETE                           One of the following has 
  12451.                                                  occurred: 
  12452.  
  12453.                                                                                                   o A segment has been opened , closed,
  12454.                                                                                                    or drawn.
  12455.                                                                                                   o GpiAssociate was issued while an
  12456.                                                                                                    area bracket was open.
  12457.                                                                                                   o A drawn segment has opened an area
  12458.                                                                                                    bracket and ended without closing it.
  12459.  
  12460.  PMERR_ARRAY_TOO_LARGE                           More than 4 bytes was 
  12461.                                                  attempted to be inserted or 
  12462.                                                  extracted. 
  12463.  
  12464.  PMERR_ARRAY_TOO_SMALL                           The array specified was too 
  12465.                                                  small. 
  12466.  
  12467.  PMERR_ATOM_NAME_NOT_FOUND                       The specified atom name is not 
  12468.                                                  in the atom table. 
  12469.  
  12470.  PMERR_BASE_ERROR                                An OS/2 base error has 
  12471.                                                  occurred.  The base error code 
  12472.                                                  can be accessed using the 
  12473.                                                  OffBinaryData field of the 
  12474.                                                  ERRINFO structure returned by 
  12475.                                                  WinGetErrorInfo. 
  12476.  
  12477.  PMERR_BITMAP_IN_USE                             An attempt was made either to 
  12478.                                                  set a bit map into a device 
  12479.                                                  context using GpiSetBitmap 
  12480.                                                  while it was already selected 
  12481.                                                  into an existing device 
  12482.                                                  context, or to tag a bit map 
  12483.                                                  with a local pattern set 
  12484.                                                  identifier (setid) using 
  12485.                                                  GpiSetBitmapId while it was 
  12486.                                                  already tagged with an 
  12487.                                                  existing setid. 
  12488.  
  12489.  PMERR_BITMAP_IS_SELECTED                        An attempt was made to delete 
  12490.                                                  a bit map while it was 
  12491.                                                  selected into a device 
  12492.                                                  context. 
  12493.  
  12494.  PMERR_BITMAP_NOT_FOUND                          A attempt was made to perform 
  12495.                                                  a bit-map operation on a bit 
  12496.                                                  map that did not exist. 
  12497.  
  12498.  PMERR_BITMAP_NOT_SELECTED                       A attempt was made to perform 
  12499.                                                  an operation on presentation 
  12500.                                                  space associated with a memory 
  12501.                                                  device context that had no 
  12502.                                                  selected bit map. 
  12503.  
  12504.  PMERR_BOUNDS_OVERFLOW                           An internal overflow error 
  12505.                                                  occurred during boundary data 
  12506.                                                  accumulation.  This can occur 
  12507.                                                  if coordinates or matrix 
  12508.                                                  transformation elements (or 
  12509.                                                  both) are invalid or too 
  12510.                                                  large. 
  12511.  
  12512.  PMERR_BUFFER_TOO_SMALL                          The supplied buffer was not 
  12513.                                                  large enough for the data to 
  12514.                                                  be returned. 
  12515.  
  12516.  PMERR_C_LENGTH_TOO_SMALL                        The maximum length of the C 
  12517.                                                  structure is less than the 
  12518.                                                  total length required for the 
  12519.                                                  (C) component types. 
  12520.  
  12521.  PMERR_CALLED_SEG_IS_CHAINED                     An attempt was made to call a 
  12522.                                                  segment that has a chained 
  12523.                                                  attribute set. 
  12524.  
  12525.  PMERR_CALLED_SEG_IS_CURRENT                     An attempt was made to call a 
  12526.                                                  segment that is currently 
  12527.                                                  open. 
  12528.  
  12529.  PMERR_CALLED_SEG_NOT_FOUND                      An attempt was made to call a 
  12530.                                                  segment that did not exist. 
  12531.  
  12532.  PMERR_CAN_NOT_CALL_SPOOLER                      An error occurred attempting 
  12533.                                                  to call the spooler validation 
  12534.                                                  routine.  This error is not 
  12535.                                                  raised if the spooler is not 
  12536.                                                  installed. 
  12537.  
  12538.  PMERR_CANNOT_DEL_PRINTER_DD_REF                 Presentation Manager device 
  12539.                                                  driver deletion not possible 
  12540.                                                  due to a reference. 
  12541.  
  12542.  PMERR_CANNOT_DEL_PRN_ADDR_REF                   Printer port deletion not 
  12543.                                                  possible due to a reference. 
  12544.  
  12545.  PMERR_CANNOT_DEL_PRN_NAME_REF                   Printer deletion not possible 
  12546.                                                  due to a reference. 
  12547.  
  12548.  PMERR_CANNOT_DEL_QNAME_REF                      Spooler queue deletion not 
  12549.                                                  possible due to a reference. 
  12550.  
  12551.  PMERR_CANNOT_DEL_QP_REF                         Spooler queue processor 
  12552.                                                  deletion not possible due to a 
  12553.                                                  reference. 
  12554.  
  12555.  PMERR_CANNOT_SET_FOCUS                          Focus cannot be set if a focus 
  12556.                                                  change is in progress, or if a 
  12557.                                                  system-modal window exists. 
  12558.  
  12559.  PMERR_CANNOT_STOP                               The session cannot be stopped. 
  12560.  
  12561.  PMERR_COL_TABLE_NOT_REALIZABLE                  An attempt was made to realize 
  12562.                                                  a color table that is not 
  12563.                                                  realizable. 
  12564.  
  12565.  PMERR_COL_TABLE_NOT_REALIZED                    An attempt was made to realize 
  12566.                                                  a color table on a device 
  12567.                                                  driver that does not support 
  12568.                                                  this function. 
  12569.  
  12570.  PMERR_COORDINATE_OVERFLOW                       An internal coordinate 
  12571.                                                  overflow error occurred.  This 
  12572.                                                  can occur if coordinates or 
  12573.                                                  matrix transformation elements 
  12574.                                                  (or both) are invalid or too 
  12575.                                                  large. 
  12576.  
  12577.  PMERR_DATA_TOO_LONG                             An attempt was made to 
  12578.                                                  transfer more than the maximum 
  12579.                                                  permitted amount of data 
  12580.                                                  (64512 bytes) using 
  12581.                                                  GpiPutData, GpiGetData, or 
  12582.                                                  GpiElement. 
  12583.  
  12584.  PMERR_DATATYPE_ENTRY_BAD_INDEX                  An invalid datatype entry 
  12585.                                                  index was specified. 
  12586.  
  12587.  PMERR_DATATYPE_ENTRY_CTL_BAD                    An invalid datatype entry 
  12588.                                                  control was specified. 
  12589.  
  12590.  PMERR_DATATYPE_ENTRY_CTL_MISS                   The datatype entry control was 
  12591.                                                  missing. 
  12592.  
  12593.  PMERR_DATATYPE_ENTRY_NOT_NUM                    The datatype entry specified 
  12594.                                                  was not numerical. 
  12595.  
  12596.  PMERR_DATATYPE_ENTRY_NOT_OFF                    The datatype entry specified 
  12597.                                                  was not an offset. 
  12598.  
  12599.  PMERR_DATATYPE_INVALID                          An invalid datatype was 
  12600.                                                  specified. 
  12601.  
  12602.  PMERR_DATATYPE_NOT_UNIQUE                       An attempt to register a 
  12603.                                                  datatype failed because it is 
  12604.                                                  not unique. 
  12605.  
  12606.  PMERR_DATATYPE_TOO_LONG                         The datatype specified was too 
  12607.                                                  long. 
  12608.  
  12609.  PMERR_DATATYPE_TOO_SMALL                        The datatype specified was too 
  12610.                                                  small. 
  12611.  
  12612.  PMERR_DC_IS_ASSOCIATED                          An attempt was made to 
  12613.                                                  associate a presentation space 
  12614.                                                  with a device context that was 
  12615.                                                  already associated or to 
  12616.                                                  destroy a device context that 
  12617.                                                  was associated. 
  12618.  
  12619.  PMERR_DEL_NOT_ALLOWED                           Deletion not possible. 
  12620.  
  12621.  PMERR_DESC_STRING_TRUNCATED                     An attempt was made to supply 
  12622.                                                  a description string with 
  12623.                                                  GpiBeginElement that was 
  12624.                                                  greater then the permitted 
  12625.                                                  maximum length (251 
  12626.                                                  characters).  The string was 
  12627.                                                  truncated. 
  12628.  
  12629.  PMERR_DEV_FUNC_NOT_INSTALLED                    The function requested is not 
  12630.                                                  supported by the presentation 
  12631.                                                  driver. 
  12632.  
  12633.  PMERR_DEVICE_DRIVER_ERROR_1                     Miscellaneous error available 
  12634.                                                  for use by user written device 
  12635.                                                  drivers. 
  12636.  
  12637.  PMERR_DEVICE_DRIVER_ERROR_10                    Miscellaneous error available 
  12638.                                                  for use by user written device 
  12639.                                                  drivers. 
  12640.  
  12641.  PMERR_DEVICE_DRIVER_ERROR_2                     Miscellaneous error available 
  12642.                                                  for use by user written device 
  12643.                                                  drivers. 
  12644.  
  12645.  PMERR_DEVICE_DRIVER_ERROR_3                     Miscellaneous error available 
  12646.                                                  for use by user written device 
  12647.                                                  drivers. 
  12648.  
  12649.  PMERR_DEVICE_DRIVER_ERROR_4                     Miscellaneous error available 
  12650.                                                  for use by user written device 
  12651.                                                  drivers. 
  12652.  
  12653.  PMERR_DEVICE_DRIVER_ERROR_5                     Miscellaneous error available 
  12654.                                                  for use by user written device 
  12655.                                                  drivers. 
  12656.  
  12657.  PMERR_DEVICE_DRIVER_ERROR_6                     Miscellaneous error available 
  12658.                                                  for use by user written device 
  12659.                                                  drivers. 
  12660.  
  12661.  PMERR_DEVICE_DRIVER_ERROR_7                     Miscellaneous error available 
  12662.                                                  for use by user written device 
  12663.                                                  drivers. 
  12664.  
  12665.  PMERR_DEVICE_DRIVER_ERROR_8                     Miscellaneous error available 
  12666.                                                  for use by user written device 
  12667.                                                  drivers. 
  12668.  
  12669.  PMERR_DEVICE_DRIVER_ERROR_9                     Miscellaneous error available 
  12670.                                                  for use by user written device 
  12671.                                                  drivers. 
  12672.  
  12673.  PMERR_DOS_ERROR                                 A DOS call returned an error. 
  12674.  
  12675.  PMERR_DOSOPEN_FAILURE                           A DosOpen call made during 
  12676.                                                  GpiLoadMetaFile or 
  12677.                                                  GpiSaveMetaFile gave a good 
  12678.                                                  return code but the file was 
  12679.                                                  not opened successfully. 
  12680.  
  12681.  PMERR_DOSREAD_FAILURE                           A DosRead call made during 
  12682.                                                  GpiLoadMetaFile gave a good 
  12683.                                                  return code.  However, it 
  12684.                                                  failed to read any more bytes 
  12685.                                                  although the file length 
  12686.                                                  indicated that there were more 
  12687.                                                  to be read. 
  12688.  
  12689.  PMERR_DRIVER_NOT_FOUND                          The device driver specified 
  12690.                                                  with DevPostDeviceModes was 
  12691.                                                  not found. 
  12692.  
  12693.  PMERR_DUP_SEG                                   During GpiPlayMetaFile, while 
  12694.                                                  the actual drawing mode was 
  12695.                                                  draw-and-retain or retain, a 
  12696.                                                  metafile segment to be stored 
  12697.                                                  in the presentation space was 
  12698.                                                  found to have the same segment 
  12699.                                                  identifier as an existing 
  12700.                                                  segment. 
  12701.  
  12702.  PMERR_DUP_SEGNAME                               A called segment has a name 
  12703.                                                  that has already been used by 
  12704.                                                  another called segment in the 
  12705.                                                  input PIF. 
  12706.  
  12707.  PMERR_DUPLICATE_TITLE                           The program title specified in 
  12708.                                                  the PIBSTRUCT already exists 
  12709.                                                  within the same group. 
  12710.  
  12711.  PMERR_DYNAMIC_SEG_SEQ_ERROR                     During removal of dynamic 
  12712.                                                  segments while processing 
  12713.                                                  GpiDrawChain, GpiDrawFrom, or 
  12714.                                                  GpiDrawSegment, the internal 
  12715.                                                  state indicated that dynamic 
  12716.                                                  segment data was still visible 
  12717.                                                  after all chained dynamic 
  12718.                                                  segments had been processed. 
  12719.                                                  This can occur if segments 
  12720.                                                  drawn dynamically (including 
  12721.                                                  called segments) are modified 
  12722.                                                  or removed from the chain 
  12723.                                                  while visible. 
  12724.  
  12725.  PMERR_DYNAMIC_SEG_ZERO_INV                      An attempt was been made to 
  12726.                                                  open a dynamic segment with a 
  12727.                                                  segment identifier of zero. 
  12728.  
  12729.  PMERR_ENDDOC_NOT_ISSUED                         A request to close the spooled 
  12730.                                                  output without first issuing a 
  12731.                                                  an ENDDOC was attempted. 
  12732.  
  12733.  PMERR_ESC_CODE_NOT_SUPPORTED                    The code specified with 
  12734.                                                  DevEscape is not supported by 
  12735.                                                  the target device driver. 
  12736.  
  12737.  PMERR_EXCEEDS_MAX_SEG_LENGTH                    During metafile creation or 
  12738.                                                  generation of retained 
  12739.                                                  graphics the system has 
  12740.                                                  exceeded maximum segment size. 
  12741.  
  12742.  PMERR_FONT_AND_MODE_MISMATCH                    An attempt was made to draw 
  12743.                                                  characters with a character 
  12744.                                                  mode and character set that 
  12745.                                                  are incompatible.  For 
  12746.                                                  example, the character 
  12747.                                                  specifies an image/raster font 
  12748.                                                  when the mode calls for a 
  12749.                                                  vector/outline font. 
  12750.  
  12751.  PMERR_FONT_FILE_NOT_LOADED                      An attempt was made to unload 
  12752.                                                  a font file that was not 
  12753.                                                  loaded. 
  12754.  
  12755.  PMERR_FONT_NOT_LOADED                           An attempt was made to create 
  12756.                                                  a font that was not loaded. 
  12757.  
  12758.  PMERR_FUNCTION_NOT_SUPPORTED                    The function is not supported. 
  12759.  
  12760.  PMERR_GREATER_THAN_64K                          A data item or array dimension 
  12761.                                                  is greater than 65 535. 
  12762.  
  12763.  PMERR_HBITMAP_BUSY                              An internal bit map busy error 
  12764.                                                  was detected.  The bit map was 
  12765.                                                  locked by one thread during an 
  12766.                                                  attempt to access it from 
  12767.                                                  another thread. 
  12768.  
  12769.  PMERR_HDC_BUSY                                  An internal device context 
  12770.                                                  busy error was detected.  The 
  12771.                                                  device context was locked by 
  12772.                                                  one thread during an attempt 
  12773.                                                  to access it from another 
  12774.                                                  thread. 
  12775.  
  12776.  PMERR_HEAP_MAX_SIZE_REACHED                     The heap has reached its 
  12777.                                                  maximum size (64KB), and 
  12778.                                                  cannot be increased. 
  12779.  
  12780.  PMERR_HEAP_OUT_OF_MEMORY                        An attempt to increase the 
  12781.                                                  size of the heap failed. 
  12782.  
  12783.  PMERR_HFONT_IS_SELECTED                         An attempt has been made to 
  12784.                                                  either change the owner of a 
  12785.                                                  font, or delete when it is 
  12786.                                                  currently selected. 
  12787.  
  12788.  PMERR_HRGN_BUSY                                 An internal region busy error 
  12789.                                                  was detected.  The region was 
  12790.                                                  locked by one thread during an 
  12791.                                                  attempt to access it from 
  12792.                                                  another thread. 
  12793.  
  12794.  PMERR_HUGE_FONTS_NOT_SUPPORTED                  An attempt was made using 
  12795.                                                  GpiSetCharSet, 
  12796.                                                  GpiSetPatternSet, 
  12797.                                                  GpiSetMarkerSet, or 
  12798.                                                  GpiSetAttrs to select a font 
  12799.                                                  that is larger than the 
  12800.                                                  maximum size (64Kb) supported 
  12801.                                                  by the target device driver. 
  12802.  
  12803.  PMERR_ID_HAS_NO_BITMAP                          No bit map was tagged with the 
  12804.                                                  setid specified on a 
  12805.                                                  GpiQueryBitmapHandle function. 
  12806.  
  12807.  PMERR_IMAGE_INCOMPLETE                          A drawn segment has opened an 
  12808.                                                  image bracket and ended 
  12809.                                                  without closing it. 
  12810.  
  12811.  PMERR_INCOMPATIBLE_BITMAP                       An attempt was made to select 
  12812.                                                  a bit map or perform a BitBlt 
  12813.                                                  operation on a device context 
  12814.                                                  that was incompatible with the 
  12815.                                                  format of the bit map. 
  12816.  
  12817.  PMERR_INCOMPATIBLE_METAFILE                     An attempt was made to 
  12818.                                                  associate a presentation space 
  12819.                                                  and a metafile device context 
  12820.                                                  with incompatible page units, 
  12821.                                                  size or coordinate format; or 
  12822.                                                  to play a metafile using the 
  12823.                                                  RES_RESET option (to reset the 
  12824.                                                  presentation space) to a 
  12825.                                                  presentation space that is 
  12826.                                                  itself associated with a 
  12827.                                                  metafile device context. 
  12828.  
  12829.  PMERR_INCORRECT_DATATYPE                        A data type is specified which 
  12830.                                                  is incorrect for this 
  12831.                                                  function. 
  12832.  
  12833.  PMERR_INCORRECT_DC_TYPE                         An attempt was made to perform 
  12834.                                                  a bit-map operation on a 
  12835.                                                  presentation space associated 
  12836.                                                  with a device context of a 
  12837.                                                  type that is unable to support 
  12838.                                                  bit-map operations. 
  12839.  
  12840.  PMERR_INCORRECT_HSTRUCT                         A structure handle is 
  12841.                                                  non-NULL, and is invalid for 
  12842.                                                  one of the following reasons: 
  12843.  
  12844.                                                                                                   o It is not the handle of a data structure.
  12845.                                                                                                   o It is the handle of an ERRINFO
  12846.                                                                                                    structure, which should not be used in
  12847.                                                                                                    this call.
  12848.                                                                                                   o A handle block returned by the bindings
  12849.                                                                                                    to the application has been used for an
  12850.                                                                                                    in-line structure handle.
  12851.  
  12852.  PMERR_INI_FILE_IS_SYS_OR_USER                   User or system initialization 
  12853.                                                  file cannot be closed. 
  12854.  
  12855.  PMERR_INSUFF_SPACE_TO_ADD                       The initialization file could 
  12856.                                                  not be extended to add the 
  12857.                                                  required program or group. 
  12858.  
  12859.  PMERR_INSUFFICIENT_DISK_SPACE                   The operation terminated 
  12860.                                                  through insufficient disk 
  12861.                                                  space. 
  12862.  
  12863.  PMERR_INSUFFICIENT_MEMORY                       The operation terminated 
  12864.                                                  through insufficient memory. 
  12865.  
  12866.  PMERR_INV_3DCOORD                               An order specifying 
  12867.                                                  3-dimensional coordinates has 
  12868.                                                  been found in the input PIF. 
  12869.  
  12870.  PMERR_INV_ANGLE_PARM                            An invalid angle parameter was 
  12871.                                                  specified with GpiPartialArc. 
  12872.  
  12873.  PMERR_INV_ARC_CONTROL                           An invalid control parameter 
  12874.                                                  was specified with GpiFullArc. 
  12875.  
  12876.  PMERR_INV_AREA_CONTROL                          An invalid options parameter 
  12877.                                                  was specified with 
  12878.                                                  GpiBeginArea. 
  12879.  
  12880.  PMERR_INV_ATTR_MODE                             An invalid mode parameter was 
  12881.                                                  specified with GpiSetAttrMode. 
  12882.  
  12883.  PMERR_INV_BACKGROUND_COL_ATTR                   An invalid background color 
  12884.                                                  attribute value was specified 
  12885.                                                  or the default value was 
  12886.                                                  explicitly specified with 
  12887.                                                  GpiSetAttrs instead of using 
  12888.                                                  the defaults mask. 
  12889.  
  12890.  PMERR_INV_BACKGROUND_MIX_ATTR                   An invalid background mix 
  12891.                                                  attribute value was specified 
  12892.                                                  or the default value was 
  12893.                                                  explicitly specified with 
  12894.                                                  GpiSetAttrs instead of using 
  12895.                                                  the defaults mask. 
  12896.  
  12897.  PMERR_INV_BITBLT_MIX                            An invalid lRop was specified 
  12898.                                                  with a GpiBitBlt or 
  12899.                                                  GpiWCBitBlt function. 
  12900.  
  12901.  PMERR_INV_BITBLT_STYLE                          An invalid options parameter 
  12902.                                                  was specified with a GpiBitBlt 
  12903.                                                  or GpiWCBitBlt function. 
  12904.  
  12905.  PMERR_INV_BITMAP_DATA                           In processing a bit map, the 
  12906.                                                  end of the data was 
  12907.                                                  unexpectedly encountered. 
  12908.  
  12909.  PMERR_INV_BITMAP_DIMENSION                      An invalid dimension was 
  12910.                                                  specified with a load bit-map 
  12911.                                                  function. 
  12912.  
  12913.  PMERR_INV_BOX_CONTROL                           An invalid control parameter 
  12914.                                                  was specified with GpiBox. 
  12915.  
  12916.  PMERR_INV_BOX_ROUNDING_PARM                     An invalid corner rounding 
  12917.                                                  control parameter was 
  12918.                                                  specified with GpiBox. 
  12919.  
  12920.  PMERR_INV_CHAR_ALIGN_ATTR                       The text alignment attribute 
  12921.                                                  specified in 
  12922.                                                  GpiSetTextAlignment is not 
  12923.                                                  valid. 
  12924.  
  12925.  PMERR_INV_CHAR_ANGLE_ATTR                       The default character angle 
  12926.                                                  attribute value was explicitly 
  12927.                                                  specified with GpiSetAttrs 
  12928.                                                  instead of using the defaults 
  12929.                                                  mask. 
  12930.  
  12931.  PMERR_INV_CHAR_DIRECTION_ATTR                   An invalid character direction 
  12932.                                                  attribute value was specified 
  12933.                                                  or the default value was 
  12934.                                                  explicitly specified with 
  12935.                                                  GpiSetAttrs instead of using 
  12936.                                                  the defaults mask. 
  12937.  
  12938.  PMERR_INV_CHAR_MODE_ATTR                        An invalid character mode 
  12939.                                                  attribute value was specified 
  12940.                                                  or the default value was 
  12941.                                                  explicitly specified with 
  12942.                                                  GpiSetAttrs instead of using 
  12943.                                                  the defaults mask. 
  12944.  
  12945.  PMERR_INV_CHAR_POS_OPTIONS                      An invalid options parameter 
  12946.                                                  was specified with 
  12947.                                                  GpiCharStringPos or 
  12948.                                                  GpiCharStringPosAt. 
  12949.  
  12950.  PMERR_INV_CHAR_SET_ATTR                         An invalid character setid 
  12951.                                                  attribute value was specified 
  12952.                                                  or the default value was 
  12953.                                                  explicitly specified with 
  12954.                                                  GpiSetAttrs instead of using 
  12955.                                                  the defaults mask. 
  12956.  
  12957.  PMERR_INV_CHAR_SHEAR_ATTR                       An invalid character shear 
  12958.                                                  attribute value was specified 
  12959.                                                  or the default value was 
  12960.                                                  explicitly specified with 
  12961.                                                  GpiSetAttrs instead of using 
  12962.                                                  the defaults mask. 
  12963.  
  12964.  PMERR_INV_CLIP_PATH_OPTIONS                     An invalid options parameter 
  12965.                                                  was specified with 
  12966.                                                  GpiSetClipPath. 
  12967.  
  12968.  PMERR_INV_CODEPAGE                              An invalid code-page parameter 
  12969.                                                  was specified with GpiSetCp. 
  12970.  
  12971.  PMERR_INV_COLOR_ATTR                            An invalid color attribute 
  12972.                                                  value was specified or the 
  12973.                                                  default value was explicitly 
  12974.                                                  specified with GpiSetAttrs 
  12975.                                                  instead of using the defaults 
  12976.                                                  mask. 
  12977.  
  12978.  PMERR_INV_COLOR_DATA                            Invalid color table definition 
  12979.                                                  data was specified with 
  12980.                                                  GpiCreateLogColorTable. 
  12981.  
  12982.  PMERR_INV_COLOR_FORMAT                          An invalid format parameter 
  12983.                                                  was specified with 
  12984.                                                  GpiCreateLogColorTable. 
  12985.  
  12986.  PMERR_INV_COLOR_INDEX                           An invalid color index 
  12987.                                                  parameter was specified with 
  12988.                                                  GpiQueryRGBColor. 
  12989.  
  12990.  PMERR_INV_COLOR_OPTIONS                         An invalid options parameter 
  12991.                                                  was specified with a logical 
  12992.                                                  color table or color query 
  12993.                                                  function. 
  12994.  
  12995.  PMERR_INV_COLOR_START_INDEX                     An invalid starting index 
  12996.                                                  parameter was specified with a 
  12997.                                                  logical color table or color 
  12998.                                                  query function. 
  12999.  
  13000.  PMERR_INV_CONV                                  Invalid conversion-type 
  13001.                                                  parameter. 
  13002.  
  13003.  PMERR_INV_COORD_OFFSET                          An invalid coordinate offset 
  13004.                                                  value was specified. 
  13005.  
  13006.  PMERR_INV_COORD_SPACE                           An invalid source or target 
  13007.                                                  coordinate space parameter was 
  13008.                                                  specified with GpiConvert. 
  13009.  
  13010.  PMERR_INV_COORDINATE                            An invalid coordinate value 
  13011.                                                  was specified. 
  13012.  
  13013.  PMERR_INV_CORRELATE_DEPTH                       An invalid maxdepth parameter 
  13014.                                                  was specified with 
  13015.                                                  GpiCorrelateSegment, 
  13016.                                                  GpiCorrelateFrom, or 
  13017.                                                  GpiCorrelateChain. 
  13018.  
  13019.  PMERR_INV_CORRELATE_TYPE                        An invalid type parameter was 
  13020.                                                  specified with 
  13021.                                                  GpiCorrelateSegment, 
  13022.                                                  GpiCorrelateFrom, or 
  13023.                                                  GpiCorrelateChain. 
  13024.  
  13025.  PMERR_INV_CURSOR_BITMAP                         An invalid pointer was 
  13026.                                                  referenced with WinSetPointer. 
  13027.  
  13028.  PMERR_INV_DC_DATA                               An invalid data parameter was 
  13029.                                                  specified with DevOpenDC. 
  13030.  
  13031.  PMERR_INV_DC_TYPE                               An invalid type parameter was 
  13032.                                                  specified with DevOpenDC, or a 
  13033.                                                  function was issued that is 
  13034.                                                  invalid for a 
  13035.                                                  OD_METAFILE_NOQUERY device 
  13036.                                                  context. 
  13037.  
  13038.  PMERR_INV_DEV_MODES_OPTIONS                     An invalid options parameter 
  13039.                                                  was specified with 
  13040.                                                  DevPostDeviceModes. 
  13041.  
  13042.  PMERR_INV_DEVICE_NAME                           An invalid devicename 
  13043.                                                  parameter was specified with 
  13044.                                                  DevPostDeviceModes. 
  13045.  
  13046.  PMERR_INV_DRAW_BORDER_OPTION                    An invalid option parameter 
  13047.                                                  was specified with 
  13048.                                                  WinDrawBorder. 
  13049.  
  13050.  PMERR_INV_DRAW_CONTROL                          An invalid control parameter 
  13051.                                                  was specified with 
  13052.                                                  GpiSetDrawControl or 
  13053.                                                  GpiQueryDrawControl. 
  13054.  
  13055.  PMERR_INV_DRAW_VALUE                            An invalid value parameter was 
  13056.                                                  specified with 
  13057.                                                  GpiSetDrawControl. 
  13058.  
  13059.  PMERR_INV_DRAWING_MODE                          An invalid mode parameter was 
  13060.                                                  specified with 
  13061.                                                  GpiSetDrawControl not 
  13062.                                                  draw-and-retain or draw. 
  13063.  
  13064.  PMERR_INV_DRIVER_DATA                           Invalid driver data was 
  13065.                                                  specified. 
  13066.  
  13067.  PMERR_INV_DRIVER_NAME                           A driver name was specified 
  13068.                                                  which has not been installed. 
  13069.  
  13070.  PMERR_INV_EDIT_MODE                             An invalid mode parameter was 
  13071.                                                  specified with GpiSetEditMode. 
  13072.  
  13073.  PMERR_INV_ELEMENT_OFFSET                        An invalid off (offset) 
  13074.                                                  parameter was specified with 
  13075.                                                  GpiQueryElement. 
  13076.  
  13077.  PMERR_INV_ELEMENT_POINTER                       An attempt was made to issue 
  13078.                                                  GpiPutData with the element 
  13079.                                                  pointer not pointing at the 
  13080.                                                  last element. 
  13081.  
  13082.  PMERR_INV_END_PATH_OPTIONS                      An attempt to create or delete 
  13083.                                                  a path out of context of the 
  13084.                                                  path bracket was made. 
  13085.  
  13086.  PMERR_INV_ESC_CODE                              An invalid escape code was 
  13087.                                                  used in a call to DevEscape. 
  13088.  
  13089.  PMERR_INV_ESCAPE_DATA                           An invalid data parameter was 
  13090.                                                  specified with DevEscape. 
  13091.  
  13092.  PMERR_INV_FACENAME                              An invalid font family name 
  13093.                                                  was passed to 
  13094.                                                  GpiQueryFaceString. 
  13095.  
  13096.  PMERR_INV_FACENAMEDESC                          The font facename description 
  13097.                                                  is invalid. 
  13098.  
  13099.  PMERR_INV_FILL_PATH_OPTIONS                     An invalid options parameter 
  13100.                                                  was specified with 
  13101.                                                  GpiFillPath. 
  13102.  
  13103.  PMERR_INV_FIRST_CHAR                            An invalid firstchar parameter 
  13104.                                                  was specified with 
  13105.                                                  GpiQueryWidthTable. 
  13106.  
  13107.  PMERR_INV_FLOOD_FILL_OPTIONS                    Invalid flood fill parameters 
  13108.                                                  were specified. 
  13109.  
  13110.  PMERR_INV_FONT_ATTRS                            An invalid attrs parameter was 
  13111.                                                  specified with 
  13112.                                                  GpiCreateLogFont. 
  13113.  
  13114.  PMERR_INV_FONT_FILE_DATA                        The font file specified with 
  13115.                                                  GpiLoadFonts, 
  13116.                                                  GpiLoadPublicFonts, 
  13117.                                                  GpiQueryFontFileDescriptions, 
  13118.                                                  or GpiQueryFullFontFileDescs 
  13119.                                                  contains invalid data. 
  13120.  
  13121.  PMERR_INV_FOR_THIS_DC_TYPE                      An attempt has been made to 
  13122.                                                  issue GpiRemoveDynamics or 
  13123.                                                  GpiDrawDynamics to a 
  13124.                                                  presentation space associated 
  13125.                                                  with a metafile device 
  13126.                                                  context. 
  13127.  
  13128.  PMERR_INV_FORMS_CODE                            An invalid forms code 
  13129.                                                  parameter was specified with 
  13130.                                                  DevQueryHardcopyCaps. 
  13131.  
  13132.  PMERR_INV_GEOM_LINE_WIDTH_ATTR                  An invalid geometric line 
  13133.                                                  width attribute value was 
  13134.                                                  specified. 
  13135.  
  13136.  PMERR_INV_GETDATA_CONTROL                       An invalid format parameter 
  13137.                                                  was specified with GpiGetData. 
  13138.  
  13139.  PMERR_INV_GRAPHICS_FIELD                        An invalid field parameter was 
  13140.                                                  specified with 
  13141.                                                  GpiSetGraphicsField. 
  13142.  
  13143.  PMERR_INV_HBITMAP                               An invalid bit-map handle was 
  13144.                                                  specified. 
  13145.  
  13146.  PMERR_INV_HDC                                   An invalid device-context 
  13147.                                                  handle or (micro presentation 
  13148.                                                  space) presentation-space 
  13149.                                                  handle was specified. 
  13150.  
  13151.  PMERR_INV_HFONT                                 An invalid font handle was 
  13152.                                                  specified. 
  13153.  
  13154.  PMERR_INV_HMF                                   An invalid metafile handle was 
  13155.                                                  specified. 
  13156.  
  13157.  PMERR_INV_HPAL                                  An invalid color palette 
  13158.                                                  handle was specified. 
  13159.  
  13160.  PMERR_INV_HPS                                   An invalid presentation-space 
  13161.                                                  handle was specified. 
  13162.  
  13163.  PMERR_INV_HRGN                                  An invalid region handle was 
  13164.                                                  specified. 
  13165.  
  13166.  PMERR_INV_ID                                    An invalid lPSid parameter was 
  13167.                                                  specified with GpiRestorePS. 
  13168.  
  13169.  PMERR_INV_IMAGE_DATA_LENGTH                     An invalid lLength parameter 
  13170.                                                  was specified with GpiImage. 
  13171.                                                  There is a mismatch between 
  13172.                                                  the image size and the data 
  13173.                                                  length. 
  13174.  
  13175.  PMERR_INV_IMAGE_DIMENSION                       An invalid psizlImageSize 
  13176.                                                  parameter was specified with 
  13177.                                                  GpiImage. 
  13178.  
  13179.  PMERR_INV_IMAGE_FORMAT                          An invalid lFormat parameter 
  13180.                                                  was specified with GpiImage. 
  13181.  
  13182.  PMERR_INV_IN_AREA                               An attempt was made to issue a 
  13183.                                                  function invalid inside an 
  13184.                                                  area bracket. This can be 
  13185.                                                  detected while the actual 
  13186.                                                  drawing mode is draw or 
  13187.                                                  draw-and-retain or during 
  13188.                                                  segment drawing or correlation 
  13189.                                                  functions. 
  13190.  
  13191.  PMERR_INV_IN_CURRENT_EDIT_MODE                  An attempt was made to issue a 
  13192.                                                  function invalid inside the 
  13193.                                                  current editing mode. 
  13194.  
  13195.  PMERR_INV_IN_ELEMENT                            An attempt was made to issue a 
  13196.                                                  function invalid inside an 
  13197.                                                  element bracket. 
  13198.  
  13199.  PMERR_INV_IN_IMAGE                              An attempt was made to issue a 
  13200.                                                  function invalid inside an 
  13201.                                                  element bracket. 
  13202.  
  13203.  PMERR_INV_IN_PATH                               An attempt was made to issue a 
  13204.                                                  function invalid inside a path 
  13205.                                                  bracket. 
  13206.  
  13207.  PMERR_INV_IN_RETAIN_MODE                        An attempt was made to issue a 
  13208.                                                  function (for example, query) 
  13209.                                                  that is invalid when the 
  13210.                                                  actual drawing mode is not 
  13211.                                                  draw or draw-and-retain. 
  13212.  
  13213.  PMERR_INV_IN_SEG                                An attempt was made to issue a 
  13214.                                                  function invalid inside a 
  13215.                                                  segment bracket. 
  13216.  
  13217.  PMERR_INV_IN_VECTOR_SYMBOL                      An invalid order was detected 
  13218.                                                  inside a vector symbol 
  13219.                                                  definition while drawing a 
  13220.                                                  vector (outline) font. 
  13221.  
  13222.  PMERR_INV_INFO_TABLE                            An invalid bit-map info table 
  13223.                                                  was specified with a bit-map 
  13224.                                                  operation. 
  13225.  
  13226.  PMERR_INV_LENGTH_OR_COUNT                       An invalid length or count 
  13227.                                                  parameter was specified. 
  13228.  
  13229.  PMERR_INV_LINE_END_ATTR                         An invalid line end attribute 
  13230.                                                  value was specified. 
  13231.  
  13232.  PMERR_INV_LINE_JOIN_ATTR                        An invalid line join attribute 
  13233.                                                  value was specified. 
  13234.  
  13235.  PMERR_INV_LINE_TYPE_ATTR                        An invalid line type attribute 
  13236.                                                  value was specified or the 
  13237.                                                  default value was explicitly 
  13238.                                                  specified with GpiSetAttrs 
  13239.                                                  instead of using the defaults 
  13240.                                                  mask. 
  13241.  
  13242.  PMERR_INV_LINE_WIDTH_ATTR                       An invalid line width 
  13243.                                                  attribute value was specified 
  13244.                                                  or the default value was 
  13245.                                                  explicitly specified with 
  13246.                                                  GpiSetAttrs instead of using 
  13247.                                                  the defaults mask. 
  13248.  
  13249.  PMERR_INV_LOGICAL_ADDRESS                       An invalid device logical 
  13250.                                                  address was specified. 
  13251.  
  13252.  PMERR_INV_MARKER_BOX_ATTR                       An invalid marker box 
  13253.                                                  attribute value was specified. 
  13254.  
  13255.  PMERR_INV_MARKER_SET_ATTR                       An invalid marker set 
  13256.                                                  attribute value was specified 
  13257.                                                  or the default value was 
  13258.                                                  explicitly specified with 
  13259.                                                  GpiSetAttrs instead of using 
  13260.                                                  the defaults mask. 
  13261.  
  13262.  PMERR_INV_MARKER_SYMBOL_ATTR                    An invalid marker symbol 
  13263.                                                  attribute value was specified 
  13264.                                                  or the default value was 
  13265.                                                  explicitly specified with 
  13266.                                                  GpiSetAttrs instead of using 
  13267.                                                  the defaults mask. 
  13268.  
  13269.  PMERR_INV_MATRIX_ELEMENT                        An invalid transformation 
  13270.                                                  matrix element was specified. 
  13271.  
  13272.  PMERR_INV_MAX_HITS                              An invalid maxhits parameter 
  13273.                                                  was specified with 
  13274.                                                  GpiCorrelateSegment, 
  13275.                                                  GpiCorrelateFrom, or 
  13276.                                                  GpiCorrelateChain. 
  13277.  
  13278.  PMERR_INV_METAFILE                              An invalid metafile was 
  13279.                                                  specified with 
  13280.                                                  GpiPlayMetaFile. 
  13281.  
  13282.  PMERR_INV_METAFILE_LENGTH                       An invalid length parameter 
  13283.                                                  was specified with 
  13284.                                                  GpiSetMetaFileBits or 
  13285.                                                  GpiQueryMetaFileBits. 
  13286.  
  13287.  PMERR_INV_METAFILE_OFFSET                       An invalid length parameter 
  13288.                                                  was specified with 
  13289.                                                  GpiSetMetaFileBits or 
  13290.                                                  GpiQueryMetaFileBits. 
  13291.  
  13292.  PMERR_INV_MICROPS_DRAW_CONTROL                  A draw control parameter was 
  13293.                                                  specified with 
  13294.                                                  GpiSetDrawControl that is 
  13295.                                                  invalid in a micro 
  13296.                                                  presentation space. 
  13297.  
  13298.  PMERR_INV_MICROPS_FUNCTION                      An attempt was made to issue a 
  13299.                                                  function that is invalid in a 
  13300.                                                  micro presentation space. 
  13301.  
  13302.  PMERR_INV_MICROPS_ORDER                         An attempt was made to play a 
  13303.                                                  metafile containing orders 
  13304.                                                  that are invalid in a micro 
  13305.                                                  presentation space. 
  13306.  
  13307.  PMERR_INV_MIX_ATTR                              An invalid mix attribute value 
  13308.                                                  was specified or the default 
  13309.                                                  value was explicitly specified 
  13310.                                                  with GpiSetAttrs instead of 
  13311.                                                  using the defaults mask. 
  13312.  
  13313.  PMERR_INV_MODE_FOR_OPEN_DYN                     An attempt was made to open a 
  13314.                                                  segment with the ATTR_DYNAMIC 
  13315.                                                  segment set, while the drawing 
  13316.                                                  mode was set to DM_DRAW or 
  13317.                                                  DM_DRAWANDRETAIN. 
  13318.  
  13319.  PMERR_INV_MODE_FOR_REOPEN_SEG                   An attempt was made to reopen 
  13320.                                                  an existing segment while the 
  13321.                                                  drawing mode was set to 
  13322.                                                  DM_DRAW or DM_DRAWANDRETAIN. 
  13323.  
  13324.  PMERR_INV_MODIFY_PATH_MODE                      An invalid mode parameter was 
  13325.                                                  specified with GpiModifyPath. 
  13326.  
  13327.  PMERR_INV_MULTIPLIER                            An invalid multiplier 
  13328.                                                  parameter was specified with 
  13329.                                                  GpiPartialArc or GpiFullArc. 
  13330.  
  13331.  PMERR_INV_NESTED_FIGURES                        Nested figures have been 
  13332.                                                  detected within a path 
  13333.                                                  definition. 
  13334.  
  13335.  PMERR_INV_OR_INCOMPAT_OPTIONS                   An invalid or incompatible 
  13336.                                                  (with micro presentation 
  13337.                                                  space) options parameter was 
  13338.                                                  specified with GpiCreatePS or 
  13339.                                                  GpiSetPS. 
  13340.  
  13341.  PMERR_INV_ORDER_LENGTH                          An invalid order length was 
  13342.                                                  detected during GpiPutData or 
  13343.                                                  segment drawing. 
  13344.  
  13345.  PMERR_INV_ORDERING_PARM                         An invalid order parameter was 
  13346.                                                  specified with 
  13347.                                                  GpiSetSegmentPriority. 
  13348.  
  13349.  PMERR_INV_OUTSIDE_DRAW_MODE                     An attempt was made to issue a 
  13350.                                                  GpiSavePS or GpiRestorePS 
  13351.                                                  function, or an output only 
  13352.                                                  function (for example, 
  13353.                                                  GpiPaintRegion) from 
  13354.                                                  GpiPlayMetaFile without the 
  13355.                                                  drawing mode set to DM_DRAW. 
  13356.  
  13357.  PMERR_INV_PAGE_VIEWPORT                         An invalid viewport parameter 
  13358.                                                  was specified with 
  13359.                                                  GpiSetPageViewport. 
  13360.  
  13361.  PMERR_INV_PATH_ID                               An invalid path identifier 
  13362.                                                  parameter was specified. 
  13363.  
  13364.  PMERR_INV_PATTERN_ATTR                          An invalid pattern symbol 
  13365.                                                  attribute value was specified 
  13366.                                                  or the default value was 
  13367.                                                  explicitly specified with 
  13368.                                                  GpiSetAttrs instead of using 
  13369.                                                  the defaults mask. 
  13370.  
  13371.  PMERR_INV_PATTERN_REF_PT_ATTR                   An invalid refpoint attribute 
  13372.                                                  value was specified. 
  13373.  
  13374.  PMERR_INV_PATTERN_SET_ATTR                      An invalid pattern set 
  13375.                                                  attribute value was specified 
  13376.                                                  or the default value was 
  13377.                                                  explicitly specified with 
  13378.                                                  GpiSetAttrs instead of using 
  13379.                                                  the defaults mask. 
  13380.  
  13381.  PMERR_INV_PATTERN_SET_FONT                      An attempt was made to use an 
  13382.                                                  unsuitable font as a pattern 
  13383.                                                  set. 
  13384.  
  13385.  PMERR_INV_PICK_APERTURE_OPTION                  An invalid options parameter 
  13386.                                                  was specified with 
  13387.                                                  GpiSetPickApertureSize. 
  13388.  
  13389.  PMERR_INV_PICK_APERTURE_POSN                    An invalid pick aperture 
  13390.                                                  position was specified. 
  13391.  
  13392.  PMERR_INV_PICK_APERTURE_SIZE                    An invalid size parameter was 
  13393.                                                  specified with 
  13394.                                                  GpiSetPickApertureSize. 
  13395.  
  13396.  PMERR_INV_PLAY_METAFILE_OPTION                  An invalid option parameter 
  13397.                                                  was specified with 
  13398.                                                  GpiPlayMetaFile. 
  13399.  
  13400.  PMERR_INV_PRIMITIVE_TYPE                        An invalid primitive type 
  13401.                                                  parameter was specified with 
  13402.                                                  GpiSetAttrs or GpiQueryAttrs. 
  13403.  
  13404.  PMERR_INV_PS_SIZE                               An invalid size parameter was 
  13405.                                                  specified with GpiCreatePS or 
  13406.                                                  GpiSetPS. 
  13407.  
  13408.  PMERR_INV_PUTDATA_FORMAT                        An invalid format parameter 
  13409.                                                  was specified with GpiPutData. 
  13410.  
  13411.  PMERR_INV_QUERY_ELEMENT_NO                      An invalid start parameter was 
  13412.                                                  specified with DevQueryCaps. 
  13413.  
  13414.  PMERR_INV_RECT                                  An invalid rectangle parameter 
  13415.                                                  was specified. 
  13416.  
  13417.  PMERR_INV_REGION_CONTROL                        An invalid control parameter 
  13418.                                                  was specified with 
  13419.                                                  GpiQueryRegionRects. 
  13420.  
  13421.  PMERR_INV_REGION_MIX_MODE                       An invalid mode parameter was 
  13422.                                                  specified with 
  13423.                                                  GpiCombineRegion. 
  13424.  
  13425.  PMERR_INV_REPLACE_MODE_FUNC                     An attempt was made to issue 
  13426.                                                  GpiPutData with the editing 
  13427.                                                  mode set to SEGEM_REPLACE. 
  13428.  
  13429.  PMERR_INV_RESERVED_FIELD                        An invalid reserved field was 
  13430.                                                  specified. 
  13431.  
  13432.  PMERR_INV_RESET_OPTIONS                         An invalid options parameter 
  13433.                                                  was specified with GpiResetPS. 
  13434.  
  13435.  PMERR_INV_RGBCOLOR                              An invalid rgb color parameter 
  13436.                                                  was specified with 
  13437.                                                  GpiQueryNearestColor or 
  13438.                                                  GpiQueryColor. 
  13439.  
  13440.  PMERR_INV_SCAN_START                            An invalid scanstart parameter 
  13441.                                                  was specified with a bit-map 
  13442.                                                  function. 
  13443.  
  13444.  PMERR_INV_SEG_ATTR                              An invalid attribute parameter 
  13445.                                                  was specified with 
  13446.                                                  GpiSetSegmentAttrs, 
  13447.                                                  GpiQuerySegmentAttrs, 
  13448.                                                  GpiSetInitialSegmentAttrs, or 
  13449.                                                  GpiQueryInitialSegmentAttrs. 
  13450.  
  13451.  PMERR_INV_SEG_ATTR_VALUE                        An invalid attribute value 
  13452.                                                  parameter was specified with 
  13453.                                                  GpiSetSegmentAttrs or 
  13454.                                                  GpiSetInitialSegmentAttrs. 
  13455.  
  13456.  PMERR_INV_SEG_NAME                              An invalid segment identifier 
  13457.                                                  was specified. 
  13458.  
  13459.  PMERR_INV_SEG_OFFSET                            An invalid offset parameter 
  13460.                                                  was specified with GpiPutData. 
  13461.  
  13462.  PMERR_INV_SEGLEN                                An order length exceeds the 
  13463.                                                  remaining segment length in 
  13464.                                                  the input PIF. 
  13465.  
  13466.  PMERR_INV_SETID                                 An invalid setid parameter was 
  13467.                                                  specified. 
  13468.  
  13469.  PMERR_INV_SHARPNESS_PARM                        An invalid sharpness parameter 
  13470.                                                  was specified with 
  13471.                                                  GpiPolyFilletSharp. 
  13472.  
  13473.  PMERR_INV_STOP_DRAW_VALUE                       An invalid value parameter was 
  13474.                                                  specified with GpiSetStopDraw. 
  13475.  
  13476.  PMERR_INV_TRANSFORM_TYPE                        An invalid options parameter 
  13477.                                                  was specified with a transform 
  13478.                                                  matrix function. 
  13479.  
  13480.  PMERR_INV_TYPE                                  Invalid file-type parameter. 
  13481.  
  13482.  PMERR_INV_USAGE_PARM                            An invalid options parameter 
  13483.                                                  was specified with 
  13484.                                                  GpiCreateBitmap. 
  13485.  
  13486.  PMERR_INV_VIEWING_LIMITS                        An invalid limits parameter 
  13487.                                                  was specified with 
  13488.                                                  GpiSetViewingLimits. 
  13489.  
  13490.  PMERR_INV_VIEWLIM                               A set viewing limits order has 
  13491.                                                  an inconsistent mask and order 
  13492.                                                  length in the input PIF. 
  13493.  
  13494.  PMERR_INV_XFORM                                 A set (default) viewing 
  13495.                                                  transform order has an 
  13496.                                                  inconsistent mask and order 
  13497.                                                  length in the input PIF. 
  13498.  
  13499.  PMERR_INVALID_APPL                              Attempted to start an 
  13500.                                                  application whose type is not 
  13501.                                                  recognized by OS/2. 
  13502.  
  13503.  PMERR_INVALID_ARRAY_COUNT                       An array has an invalid count, 
  13504.                                                  that is, less than or equal to 
  13505.                                                  zero. 
  13506.  
  13507.  PMERR_INVALID_ARRAY_SIZE                        A control data type array size 
  13508.                                                  is invalid. 
  13509.  
  13510.  PMERR_INVALID_ASCIIZ                            The profile string is not a 
  13511.                                                  valid zero-terminated string. 
  13512.  
  13513.  PMERR_INVALID_ATOM                              The specified atom does not 
  13514.                                                  exist in the atom table. 
  13515.  
  13516.  PMERR_INVALID_ATOM_NAME                         An invalid atom name string 
  13517.                                                  was passed. 
  13518.  
  13519.  PMERR_INVALID_BUNDLE_TYPE                       An invalid bundle type was 
  13520.                                                  passed. 
  13521.  
  13522.  PMERR_INVALID_CHARACTER_INDEX                   On WinNextChar or WinPrevChar, 
  13523.                                                  a character index is invalid, 
  13524.                                                  that is, it is less than 1 or 
  13525.                                                  is greater than the string 
  13526.                                                  length+1. 
  13527.  
  13528.  PMERR_INVALID_CONTROL_DATATYPE                  An invalid control data type 
  13529.                                                  was specified. 
  13530.  
  13531.  PMERR_INVALID_DATATYPE                          An invalid data type was 
  13532.                                                  specified. 
  13533.  
  13534.  PMERR_INVALID_DST_CODEPAGE                      The destination code page 
  13535.                                                  parameter is invalid. 
  13536.  
  13537.  PMERR_INVALID_ERRORINFO_HANDLE                  On WinFreeErrorInfo, the 
  13538.                                                  ERRINFO is not the handle of 
  13539.                                                  an ERRINFO structure, that is, 
  13540.                                                  it was not created by 
  13541.                                                  WinGetErrorInfo. 
  13542.  
  13543.  PMERR_INVALID_FLAG                              An invalid bit was set for a 
  13544.                                                  parameter. Use constants 
  13545.                                                  defined by PM for options, and 
  13546.                                                  do not set any reserved bits. 
  13547.  
  13548.  PMERR_INVALID_FREE_MESSAGE_ID                   An invalid message identifier 
  13549.                                                  was specified. The call has 
  13550.                                                  completed by assuming the 
  13551.                                                  message parameter and reply 
  13552.                                                  data types to be ULONG. 
  13553.  
  13554.  PMERR_INVALID_GROUP_HANDLE                      An invalid program-group 
  13555.                                                  handle was specified. 
  13556.  
  13557.  PMERR_INVALID_HACCEL                            An invalid accelerator-table 
  13558.                                                  handle was specified. 
  13559.  
  13560.  PMERR_INVALID_HAPP                              The application handle passed 
  13561.                                                  to WinTerminateApp does not 
  13562.                                                  correspond to a valid session. 
  13563.  
  13564.  PMERR_INVALID_HATOMTBL                          An invalid atom-table handle 
  13565.                                                  was specified. 
  13566.  
  13567.  PMERR_INVALID_HEAP_POINTER                      An invalid pointer was found 
  13568.                                                  within the heap. 
  13569.  
  13570.  PMERR_INVALID_HEAP_SIZE                         Invalid data was found within 
  13571.                                                  the heap. 
  13572.  
  13573.  PMERR_INVALID_HEAP_SIZE_PARM                    Invalid data was found within 
  13574.                                                  the heap. 
  13575.  
  13576.  PMERR_INVALID_HEAP_SIZE_WORD                    Invalid data was found within 
  13577.                                                  the heap. 
  13578.  
  13579.  PMERR_INVALID_HENUM                             An invalid enumeration handle 
  13580.                                                  was specified. 
  13581.  
  13582.  PMERR_INVALID_HHEAP                             An invalid heap handle was 
  13583.                                                  specified. 
  13584.  
  13585.  PMERR_INVALID_HMQ                               An invalid message-queue 
  13586.                                                  handle was specified. 
  13587.  
  13588.  PMERR_INVALID_HPTR                              An invalid pointer handle was 
  13589.                                                  specified. 
  13590.  
  13591.  PMERR_INVALID_HSTRUCT                           An invalid (null) structure 
  13592.                                                  handle was specified. 
  13593.  
  13594.  PMERR_INVALID_HWND                              An invalid window handle was 
  13595.                                                  specified. 
  13596.  
  13597.  PMERR_INVALID_INI_FILE_HANDLE                   An invalid initialization-file 
  13598.                                                  handle was specified. 
  13599.  
  13600.  PMERR_INVALID_INTEGER                           The specified atom is not a 
  13601.                                                  valid integer atom. 
  13602.  
  13603.  PMERR_INVALID_INTEGER_ATOM                      The specified atom is not a 
  13604.                                                  valid integer atom. 
  13605.  
  13606.  PMERR_INVALID_MESSAGE_ID                        A message identifier is 
  13607.                                                  invalid. 
  13608.  
  13609.  PMERR_INVALID_NUMBER_OF_PARMS                   The number of parameters is 
  13610.                                                  invalid. 
  13611.  
  13612.  PMERR_INVALID_NUMBER_OF_TYPES                   The function call has an 
  13613.                                                  invalid number (zero) of 
  13614.                                                  types. 
  13615.  
  13616.  PMERR_INVALID_PARAMETER                         An application parameter value 
  13617.                                                  is invalid for its converted 
  13618.                                                  PM type. For example: a 4-byte 
  13619.                                                  value outside the range 
  13620.                                                  -32,768 to +32,767 cannot be 
  13621.                                                  converted to a SHORT, and a 
  13622.                                                  negative number cannot be 
  13623.                                                  converted to a ULONG or 
  13624.                                                  USHORT. 
  13625.  
  13626.  PMERR_INVALID_PARAMETER_TYPE                    A parameter type is invalid 
  13627.                                                  for a bundle mask. 
  13628.  
  13629.  PMERR_INVALID_PARAMETERS                        An application parameter value 
  13630.                                                  is invalid for its converted 
  13631.                                                  PM type. For example: a 4-byte 
  13632.                                                  value outside the range 
  13633.                                                  -32768 to +32 767 cannot be 
  13634.                                                  converted to a SHORT, and a 
  13635.                                                  negative number cannot be 
  13636.                                                  converted to a ULONG or 
  13637.                                                  USHORT. 
  13638.  
  13639.   PMERR_INVALID_PARAMETERS
  13640.  
  13641.  PMERR_INVALID_PARM                              A parameter to the function 
  13642.                                                  contained invalid data. 
  13643.  
  13644.  PMERR_INVALID_PROGRAM_HANDLE                    An invalid program handle was 
  13645.                                                  specified. 
  13646.  
  13647.  PMERR_INVALID_SESSION_ID                        The specified session 
  13648.                                                  identifier is invalid.  Either 
  13649.                                                  zero (for the application's 
  13650.                                                  own session) or a valid 
  13651.                                                  identifier must be specified. 
  13652.  
  13653.  PMERR_INVALID_SRC_CODEPAGE                      The source code page parameter 
  13654.                                                  is invalid. 
  13655.  
  13656.  PMERR_INVALID_STRING_PARM                       The specified string parameter 
  13657.                                                  is invalid. 
  13658.  
  13659.  PMERR_INVALID_SWITCH_HANDLE                     An invalid Window List entry 
  13660.                                                  handle was specified. 
  13661.  
  13662.  PMERR_INVALID_TARGET_HANDLE                     An invalid target 
  13663.                                                  program-group handle was 
  13664.                                                  specified. 
  13665.  
  13666.  PMERR_INVALID_TITLE                             The specified program or group 
  13667.                                                  title is too long or contains 
  13668.                                                  invalid characters. 
  13669.  
  13670.  PMERR_INVALID_TYPE_FOR_LENGTH                   The data type for a control 
  13671.                                                  length is invalid. 
  13672.  
  13673.  PMERR_INVALID_TYPE_FOR_MPARAM                   The message parameter type for 
  13674.                                                  a control MPARAM is invalid, 
  13675.                                                  that is, not mparam1, mparam2 
  13676.                                                  or mreply. 
  13677.  
  13678.  PMERR_INVALID_TYPE_FOR_OFFSET                   The data type for a control 
  13679.                                                  offset is invalid. 
  13680.  
  13681.  PMERR_INVALID_WINDOW                            The window specified with a 
  13682.                                                  Window List call is not a 
  13683.                                                  valid frame window. 
  13684.  
  13685.  PMERR_KERNING_NOT_SUPPORTED                     Kerning was requested on 
  13686.                                                  GpiCreateLogFont call to a 
  13687.                                                  presentation space associated 
  13688.                                                  with a device context that 
  13689.                                                  does not support kerning. 
  13690.  
  13691.  PMERR_LABEL_NOT_FOUND                           The specified element label 
  13692.                                                  did not exist. 
  13693.  
  13694.  PMERR_MATRIX_OVERFLOW                           An internal overflow error 
  13695.                                                  occurred during matrix 
  13696.                                                  multiplication. This can occur 
  13697.                                                  if coordinates or matrix 
  13698.                                                  transformation elements (or 
  13699.                                                  both) are invalid or too 
  13700.                                                  large. 
  13701.  
  13702.  PMERR_MEMORY_ALLOC                              An error occurred during 
  13703.                                                  memory management. 
  13704.  
  13705.  PMERR_MEMORY_ALLOCATION_ERR                     An error occurred during 
  13706.                                                  memory management. 
  13707.  
  13708.  PMERR_MEMORY_DEALLOCATION_ERR                   An error occurred during 
  13709.                                                  memory management. 
  13710.  
  13711.  PMERR_METAFILE_IN_USE                           An attempt has been made to 
  13712.                                                  access a metafile that is in 
  13713.                                                  use by another thread. 
  13714.  
  13715.  PMERR_METAFILE_INTERNAL_ERROR                   An internal inconsistency has 
  13716.                                                  been detected during metafile 
  13717.                                                  unlock processing. 
  13718.  
  13719.  PMERR_METAFILE_LIMIT_EXCEEDED                   The maximum permitted metafile 
  13720.                                                  size limit was exceeded during 
  13721.                                                  metafile recording. 
  13722.  
  13723.  PMERR_MSG_QUEUE_ALREADY_EXISTS                  An attempt to create a message 
  13724.                                                  queue for a thread failed 
  13725.                                                  because a message queue 
  13726.                                                  already exists for the calling 
  13727.                                                  thread. 
  13728.  
  13729.  PMERR_MSGID_TOO_SMALL                           The message identifier 
  13730.                                                  specified is too small. 
  13731.  
  13732.  PMERR_NEGATIVE_STRCOND_DIM                      A negative array dimension was 
  13733.                                                  passed for a data type length. 
  13734.  
  13735.  PMERR_NO_BITMAP_SELECTED                        An attempt has been made to 
  13736.                                                  operate on a memory device 
  13737.                                                  context that has no bit map 
  13738.                                                  selected. 
  13739.  
  13740.  PMERR_NO_CURRENT_ELEMENT                        An attempt has been made to 
  13741.                                                  issue GpiQueryElementType or 
  13742.                                                  GpiQueryElement while there is 
  13743.                                                  no currently open element. 
  13744.  
  13745.  PMERR_NO_CURRENT_SEG                            An attempt has been made to 
  13746.                                                  issue GpiQueryElementType or 
  13747.                                                  GpiQueryElement while there is 
  13748.                                                  no currently open segment. 
  13749.  
  13750.  PMERR_NO_FILL                                   No flood fill occurred because 
  13751.                                                  either the starting point 
  13752.                                                  color was the same as the 
  13753.                                                  input color when a boundary 
  13754.                                                  fill was requested, or the 
  13755.                                                  starting point color was not 
  13756.                                                  the same as the input color 
  13757.                                                  when a surface fill was 
  13758.                                                  requested. 
  13759.  
  13760.  PMERR_NO_METAFILE_RECORD_HANDLE                 The metafile record handle was 
  13761.                                                  not found during metafile 
  13762.                                                  recording, or DevEscape 
  13763.                                                  (DEVESC_STARTDOC) was not 
  13764.                                                  issued when drawing to a 
  13765.                                                  OD_QUEUED device context with 
  13766.                                                  a pszDataType field of 
  13767.                                                  PM_Q_STD. 
  13768.  
  13769.  PMERR_NO_MSG_QUEUE 
  13770.  
  13771.  PMERR_NO_PALETTE_SELECTED                       An attempt to realize a 
  13772.                                                  palette failed because no 
  13773.                                                  palette was previously 
  13774.                                                  selected into the Presentation 
  13775.                                                  Space. 
  13776.  
  13777.  PMERR_NO_SPACE                                  The limit on the number of 
  13778.                                                  Window List entries has been 
  13779.                                                  reached with 
  13780.                                                  WinAddSwitchEntry. 
  13781.  
  13782.  PMERR_NOT_CREATED_BY_DEVOPENDC                  An attempt has been made to 
  13783.                                                  destroy a device context using 
  13784.                                                  DevCloseDC that was not 
  13785.                                                  created using DevOpenDC. 
  13786.  
  13787.  PMERR_NOT_CURRENT_PL_VERSION                    An unexpected data format was 
  13788.                                                  found in the initialization 
  13789.                                                  file. 
  13790.  
  13791.  PMERR_NOT_DRAGGING                              A drag operation is not in 
  13792.                                                  progress at this time. 
  13793.  
  13794.  PMERR_NOT_IN_A_PM_SESSION                       An attempt was made to access 
  13795.                                                  function that is only 
  13796.                                                  available from PM programs 
  13797.                                                  from a non-PM session. 
  13798.  
  13799.  PMERR_NOT_IN_AREA                               An attempt was made to end an 
  13800.                                                  area using GpiEndArea or 
  13801.                                                  during segment drawing while 
  13802.                                                  not in an area bracket. 
  13803.  
  13804.  PMERR_NOT_IN_DRAW_MODE                          An attempt was made to issue 
  13805.                                                  GpiSavePS or GpiRestorePS 
  13806.                                                  while the drawing mode was not 
  13807.                                                  set to DM_DRAW. 
  13808.  
  13809.  PMERR_NOT_IN_ELEMENT                            An attempt was made to end an 
  13810.                                                  element using GpiEndElement or 
  13811.                                                  during segment drawing while 
  13812.                                                  not in an element bracket. 
  13813.  
  13814.  PMERR_NOT_IN_IDX                                The application name, key-name 
  13815.                                                  or program handle was not 
  13816.                                                  found. 
  13817.  
  13818.  PMERR_NOT_IN_IMAGE                              An attempt was made to end an 
  13819.                                                  image during segment drawing 
  13820.                                                  while not in an image bracket. 
  13821.  
  13822.  PMERR_NOT_IN_PATH                               An attempt was made to end a 
  13823.                                                  path using GpiEndPath or 
  13824.                                                  during segment drawing while 
  13825.                                                  not in a path bracket. 
  13826.  
  13827.  PMERR_NOT_IN_RETAIN_MODE                        An attempt was made to issue a 
  13828.                                                  segment editing element 
  13829.                                                  function that is invalid when 
  13830.                                                  the actual drawing mode is not 
  13831.                                                  set to retain. 
  13832.  
  13833.  PMERR_NOT_IN_SEG                                An attempt was made to end a 
  13834.                                                  segment using GpiCloseSegment 
  13835.                                                  while not in a segment 
  13836.                                                  bracket. 
  13837.  
  13838.  PMERR_NOT_SELF_DESCRIBING_DTYP                  A data type is not 
  13839.                                                  self-describing. 
  13840.  
  13841.  PMERR_OK                                        The code page or country code 
  13842.                                                  passed is not valid. 
  13843.  
  13844.  PMERR_OK                                        The window handle or menu item 
  13845.                                                  passed is not valid. 
  13846.  
  13847.  PMERR_OPENING_INI_FILE                          Unable to open initialization 
  13848.                                                  file (due to lack of disk 
  13849.                                                  space for example). 
  13850.  
  13851.  PMERR_ORDER_TOO_BIG                             An internal size limit was 
  13852.                                                  exceeded while converting 
  13853.                                                  orders from short to long 
  13854.                                                  format during GpiPutData 
  13855.                                                  processing. An order was too 
  13856.                                                  long to convert. 
  13857.  
  13858.  PMERR_OWN_SET_ID_REFS                           An attempt to unload a font 
  13859.                                                  failed because the setid is 
  13860.                                                  still being referenced. 
  13861.  
  13862.  PMERR_PALETTE_BUSY                              An attempt has been made to 
  13863.                                                  reset the owner of a palette 
  13864.                                                  when it was busy. 
  13865.  
  13866.  PMERR_PALETTE_SELECTED                          Color palette operations 
  13867.                                                  cannot be performed on a 
  13868.                                                  presentation space while a 
  13869.                                                  palette is selected. 
  13870.  
  13871.  PMERR_PARAMETER_OUT_OF_RANGE                    The value of a parameter was 
  13872.                                                  not within the defined valid 
  13873.                                                  range for that parameter. 
  13874.  
  13875.  PMERR_PATH_INCOMPLETE                           An attempt was made to open or 
  13876.                                                  close a segment either 
  13877.                                                  directly or during segment 
  13878.                                                  drawing, or to issue 
  13879.                                                  GpiAssociate while there is an 
  13880.                                                  open path bracket. 
  13881.  
  13882.  PMERR_PATH_LIMIT_EXCEEDED                       An internal size limit was 
  13883.                                                  exceeded during path or area 
  13884.                                                  processing. 
  13885.  
  13886.  PMERR_PATH_UNKNOWN                              An attempt was made to perform 
  13887.                                                  a path function on a path that 
  13888.                                                  did not exist. 
  13889.  
  13890.  PMERR_PEL_IS_CLIPPED                            An attempt was made to query a 
  13891.                                                  pel that had been clipped 
  13892.                                                  using GpiQueryPel. 
  13893.  
  13894.  PMERR_PEL_NOT_AVAILABLE                         An attempt was made to query a 
  13895.                                                  pel that did not exist in 
  13896.                                                  GpiQueryPel (for example, a 
  13897.                                                  memory device context with no 
  13898.                                                  selected bit map). 
  13899.  
  13900.  PMERR_PRINTER_DD_NOT_DEFINED                    The Presentation Manager 
  13901.                                                  device driver has not been 
  13902.                                                  defined. 
  13903.  
  13904.  PMERR_PRINTER_QUEUE_NOT_DEFINED                 The spooler queue for the 
  13905.                                                  printer has not been defined. 
  13906.  
  13907.  PMERR_PRN_ADDR_IN_USE                           A printer is already defined 
  13908.                                                  on the port. 
  13909.  
  13910.  PMERR_PRN_ADDR_NOT_DEFINED                      The printer port has not been 
  13911.                                                  defined. 
  13912.  
  13913.  PMERR_PRN_NAME_NOT_DEFINED                      The printer has not been 
  13914.                                                  defined. 
  13915.  
  13916.  PMERR_PROLOG_ERROR                              A prolog error was detected 
  13917.                                                  during drawing.  Segment 
  13918.                                                  prologs are used internally 
  13919.                                                  within retained segments and 
  13920.                                                  also appear in metafiles. This 
  13921.                                                  error can also arise from an 
  13922.                                                  End Prolog order that is 
  13923.                                                  outside a prolog. 
  13924.  
  13925.  PMERR_PS_BUSY                                   An attempt was made to access 
  13926.                                                  the presentation space from 
  13927.                                                  more than one thread 
  13928.                                                  simultaneously. 
  13929.  
  13930.  PMERR_PS_IS_ASSOCIATED                          An attempt was made to destroy 
  13931.                                                  a presentation or associate a 
  13932.                                                  presentation space that is 
  13933.                                                  still associated with a device 
  13934.                                                  context. 
  13935.  
  13936.  PMERR_PS_NOT_ASSOCIATED                         An attempt was made to access 
  13937.                                                  a presentation space that is 
  13938.                                                  not associated with a device 
  13939.                                                  context. 
  13940.  
  13941.  PMERR_QUEUE_TOO_LARGE                           An attempt to create a message 
  13942.                                                  queue has failed because the 
  13943.                                                  value specified for the size 
  13944.                                                  of the message queue is too 
  13945.                                                  large. 
  13946.  
  13947.  PMERR_RASTER_FONT                               A request was made for the 
  13948.                                                  outline of a bit-map font. 
  13949.                                                  Outlines can only be returned 
  13950.                                                  for vector font characters. 
  13951.  
  13952.  PMERR_REALIZE_NOT_SUPPORTED                     An attempt was made to create 
  13953.                                                  a realizable logical color 
  13954.                                                  table on a device driver that 
  13955.                                                  does not support this 
  13956.                                                  function. 
  13957.  
  13958.  PMERR_REGION_IS_CLIP_REGION                     An attempt was made to perform 
  13959.                                                  a region operation on a region 
  13960.                                                  that is selected as a clip 
  13961.                                                  region. 
  13962.  
  13963.  PMERR_RESOURCE_DEPLETION                        An internal resource depletion 
  13964.                                                  error has occurred. 
  13965.  
  13966.  PMERR_RESOURCE_NOT_FOUND                        The specified resource 
  13967.                                                  identity could not be found. 
  13968.  
  13969.  PMERR_SEG_AND_REFSEG_ARE_SAME                   The segid and refsegid 
  13970.                                                  specified with 
  13971.                                                  GpiSetSegmentPriority were the 
  13972.                                                  same. 
  13973.  
  13974.  PMERR_SEG_CALL_STACK_EMPTY                      A call stack empty condition 
  13975.                                                  was detected when attempting a 
  13976.                                                  pop function during GpiPop or 
  13977.                                                  segment drawing. 
  13978.  
  13979.  PMERR_SEG_CALL_STACK_FULL                       A call stack full condition 
  13980.                                                  was detected when attempting 
  13981.                                                  to call a segment using 
  13982.                                                  GpiCallSegmentMatrix, 
  13983.                                                  attempting to preserve an 
  13984.                                                  attribute, or during segment 
  13985.                                                  drawing. 
  13986.  
  13987.  PMERR_SEG_IS_CURRENT                            An attempt was made to issue 
  13988.                                                  GpiGetData to a segment that 
  13989.                                                  was currently open. 
  13990.  
  13991.  PMERR_SEG_NOT_CHAINED                           An attempt was made to issue 
  13992.                                                  GpiDrawFrom, GpiCorrelateFrom 
  13993.                                                  or GpiQuerySegmentPriority for 
  13994.                                                  a segment that was not 
  13995.                                                  chained. 
  13996.  
  13997.  PMERR_SEG_NOT_FOUND                             The specified segment 
  13998.                                                  identifier did not exist. 
  13999.  
  14000.  PMERR_SEG_OVFLOW                                The input PIF has more than 
  14001.                                                  1000 called segments. This has 
  14002.                                                  overflowed an internal buffer. 
  14003.  
  14004.  PMERR_SEG_STORE_LIMIT_EXCEEDED                  The maximum permitted retained 
  14005.                                                  segment store size limit was 
  14006.                                                  exceeded. 
  14007.  
  14008.  PMERR_SETID_IN_USE                              An attempt was made to specify 
  14009.                                                  a setid that was already in 
  14010.                                                  use as the currently selected 
  14011.                                                  character, marker or pattern 
  14012.                                                  set. 
  14013.  
  14014.  PMERR_SETID_NOT_FOUND                           An attempt was made to delete 
  14015.                                                  a setid that did not exist. 
  14016.  
  14017.  PMERR_SMB_OVFLOW                                The input PIF has more than 
  14018.                                                  100 symbol sets defined. This 
  14019.                                                  has overflowed an internal 
  14020.                                                  buffer. 
  14021.  
  14022.  PMERR_SOMDD_IS_ACTIVE                           The DSOM daemon is already 
  14023.                                                  active. 
  14024.  
  14025.  PMERR_SOMDD_NOT_STARTED                         The DSOM daemon failed to 
  14026.                                                  start. 
  14027.  
  14028.  PMERR_SOURCE_SAME_AS_TARGET                     The direct manipulation source 
  14029.                                                  and target process are the 
  14030.                                                  same. 
  14031.  
  14032.  PMERR_SPL_CANNOT_OPEN_FILE                      Unable to open the file. 
  14033.  
  14034.  PMERR_SPL_DD_NOT_FOUND                          The Presentation Manager 
  14035.                                                  device driver definition could 
  14036.                                                  not be found. 
  14037.  
  14038.  PMERR_SPL_DEVICE_ALREADY_EXISTS                 The device already exists. 
  14039.  
  14040.  PMERR_SPL_DEVICE_LIMIT_REACHED                  The limit on the number of 
  14041.                                                  devices has been reached. 
  14042.  
  14043.  PMERR_SPL_DEVICE_NOT_INSTALLED                  The device has not been 
  14044.                                                  installed. 
  14045.  
  14046.  PMERR_SPL_DRIVER_ERROR                          No Presentation Manager device 
  14047.                                                  driver supplied or found. 
  14048.  
  14049.  PMERR_SPL_DRIVER_NOT_INSTALLED                  The Presentation Manager 
  14050.                                                  device driver has not been 
  14051.                                                  installed. 
  14052.  
  14053.  PMERR_SPL_FILE_NOT_FOUND                        Unable to find the file. 
  14054.  
  14055.  PMERR_SPL_HARD_NETWORK_ERROR                    Hard network error. 
  14056.  
  14057.  PMERR_SPL_INI_FILE_ERROR                        Error accessing the 
  14058.                                                  initialization file. 
  14059.  
  14060.  PMERR_SPL_INV_DATATYPE                          The spool file data type is 
  14061.                                                  invalid. 
  14062.  
  14063.  PMERR_SPL_INV_DRIVER_DATATYPE                   The data type is invalid for 
  14064.                                                  the Presentation Manager 
  14065.                                                  device driver. 
  14066.  
  14067.  PMERR_SPL_INV_FORMS_CODE                        The forms code for the job is 
  14068.                                                  invalid. 
  14069.  
  14070.  PMERR_SPL_INV_HSPL                              The spooler handle is invalid. 
  14071.  
  14072.  PMERR_SPL_INV_JOB_ID                            The job id is invalid. 
  14073.  
  14074.  PMERR_SPL_INV_LENGTH_OR_COUNT                   The length or count is 
  14075.                                                  invalid. 
  14076.  
  14077.  PMERR_SPL_INV_PRIORITY                          The priority for the job is 
  14078.                                                  invalid. 
  14079.  
  14080.  PMERR_SPL_INV_PROCESSOR_DATTYPE                 The data type is invalid for 
  14081.                                                  the spooler queue processor. 
  14082.  
  14083.  PMERR_SPL_INV_QUEUE_NAME                        The spooler queue name is 
  14084.                                                  invalid. 
  14085.  
  14086.  PMERR_SPL_INV_TOKEN                             The token is invalid. 
  14087.  
  14088.  PMERR_SPL_JOB_NOT_PRINTING                      The print job is not printing. 
  14089.  
  14090.  PMERR_SPL_JOB_PRINTING                          The print job is already 
  14091.                                                  printing. 
  14092.  
  14093.  PMERR_SPL_MANY_QUEUES_ASSOC                     More than one queue has been 
  14094.                                                  associated with the printer. 
  14095.  
  14096.  PMERR_SPL_NO_CURRENT_FORMS_CODE                 There is no current forms code 
  14097.                                                  defined to the Presentation 
  14098.                                                  Manager device driver. 
  14099.  
  14100.  PMERR_SPL_NO_DATA                               No data supplied or found. 
  14101.  
  14102.  PMERR_SPL_NO_DEFAULT_QUEUE                      There is no default spooler 
  14103.                                                  queue for the printer. 
  14104.  
  14105.  PMERR_SPL_NO_DISK_SPACE                         There is not enough free disk 
  14106.                                                  space. 
  14107.  
  14108.  PMERR_SPL_NO_FREE_JOB_ID                        There is no free job id 
  14109.                                                  available. 
  14110.  
  14111.  PMERR_SPL_NO_MEMORY                             There is not enough free 
  14112.                                                  memory. 
  14113.  
  14114.  PMERR_SPL_NO_QUEUES_ASSOCIATED                  A queue has not been 
  14115.                                                  associated with the printer. 
  14116.  
  14117.  PMERR_SPL_NO_SUCH_LOG_ADDRESS                   The logical address does not 
  14118.                                                  exist (that is, it is not 
  14119.                                                  defined in the initialization 
  14120.                                                  file). 
  14121.  
  14122.  PMERR_SPL_NOT_AUTHORISED                        Not authorized to perform the 
  14123.                                                  operation. 
  14124.  
  14125.  PMERR_SPL_PRINT_ABORT                           The job has already been 
  14126.                                                  aborted. 
  14127.  
  14128.  PMERR_SPL_PRINTER_NOT_FOUND                     The printer definition could 
  14129.                                                  not be found. 
  14130.  
  14131.  PMERR_SPL_PROCESSOR_ERROR                       No spooler queue processor 
  14132.                                                  supplied or found. 
  14133.  
  14134.  PMERR_SPL_PROCESSOR_NOT_INST                    The spooler queue processor 
  14135.                                                  has not been installed. 
  14136.  
  14137.  PMERR_SPL_QUEUE_ALREADY_EXISTS                  The spooler queue already 
  14138.                                                  exists. 
  14139.  
  14140.  PMERR_SPL_QUEUE_ERROR                           No spooler queue supplied or 
  14141.                                                  found. 
  14142.  
  14143.  PMERR_SPL_QUEUE_NOT_EMPTY                       The spooler queue contains 
  14144.                                                  print jobs. 
  14145.  
  14146.  PMERR_SPL_QUEUE_NOT_FOUND                       The spooler queue definition 
  14147.                                                  could not be found. 
  14148.  
  14149.  PMERR_SPL_SPOOLER_NOT_INSTALLED                 The spooler is not installed. 
  14150.  
  14151.  PMERR_SPL_STATUS_STRING_TRUNC                   The print job status string 
  14152.                                                  has been truncated. 
  14153.  
  14154.  PMERR_SPL_TEMP_NETWORK_ERROR                    Temporary network error. 
  14155.  
  14156.  PMERR_SPL_TOO_MANY_OPEN_FILES                   Too many open files. 
  14157.  
  14158.  PMERR_SPOOLER_QP_NOT_DEFINED                    The spooler queue processor 
  14159.                                                  has not been defined. 
  14160.  
  14161.  PMERR_START_POINT_CLIPPED                       The starting point specified 
  14162.                                                  for flood fill is outside the 
  14163.                                                  current clipping path or 
  14164.                                                  region. 
  14165.  
  14166.  PMERR_STARTDOC_NOT_ISSUED                       A request to write spooled 
  14167.                                                  output without first issuing a 
  14168.                                                  STARTDOC was attempted. 
  14169.  
  14170.  PMERR_STARTED_IN_BACKGROUND                     The application started a new 
  14171.                                                  session in the background. 
  14172.  
  14173.  PMERR_STOP_DRAW_OCCURRED                        Segment drawing or 
  14174.                                                  GpiPlayMetaFile was stopped 
  14175.                                                  prematurely in response to a 
  14176.                                                  GpiSetStopDraw request. 
  14177.  
  14178.  PMERR_TOO_MANY_METAFILES_IN_USE                 The maximum number of 
  14179.                                                  metafiles allowed for a given 
  14180.                                                  process was exceeded. 
  14181.  
  14182.  PMERR_TRUNCATED_ORDER                           An incomplete order was 
  14183.                                                  detected during segment 
  14184.                                                  processing. 
  14185.  
  14186.  PMERR_UNABLE_TO_CLOSE_DEVICE                    Unable to close the print 
  14187.                                                  device (for example, powered 
  14188.                                                  off or offline). 
  14189.  
  14190.  PMERR_UNCHAINED_SEG_ZERO_INV                    An attempt was made to open 
  14191.                                                  segment with segment 
  14192.                                                  identifier zero and the 
  14193.                                                  ATTR_CHAINED segment attribute 
  14194.                                                  not specified. 
  14195.  
  14196.  PMERR_UNSUPPORTED_ATTR                          An unsupported attribute was 
  14197.                                                  specified in the attrmask with 
  14198.                                                  GpiSetAttrs or GpiQueryAttrs. 
  14199.  
  14200.  PMERR_UNSUPPORTED_ATTR_VALUE                    An attribute value was 
  14201.                                                  specified with GpiSetAttrs 
  14202.                                                  that is not supported. 
  14203.  
  14204.  PMERR_WINDOW_LOCK_OVERFLOW                      An overflow occurred for the 
  14205.                                                  use count of a window. 
  14206.  
  14207.  PMERR_WINDOW_LOCK_UNDERFLOW                     An attempt was made to 
  14208.                                                  decrement the use count of a 
  14209.                                                  window below zero. 
  14210.  
  14211.  PMERR_WINDOW_NOT_LOCKED                         The window specified in 
  14212.                                                  WinSendMsg was not locked. 
  14213.  
  14214.  PMERR_WPDSERVER_IS_ACTIVE                       The Workplace Shell DSOM 
  14215.                                                  Server is already active. 
  14216.  
  14217.  PMERR_WPDSERVER_NOT_STARTED                     The Workplace Shell DSOM 
  14218.                                                  Server could not be started. 
  14219.  
  14220.  WPERR_INVALID_FLAGS                             An invalid flag was specified. 
  14221.  
  14222.  WPERR_INVALID_OBJECTID                          An invalid object ID was 
  14223.                                                  specified. 
  14224.  
  14225.  WPERR_INVALID_TARGET_OBJECT                     An invalid target object was 
  14226.                                                  specified. 
  14227.  
  14228.  
  14229. ΓòÉΓòÉΓòÉ 5. Area and Polygon Primitives ΓòÉΓòÉΓòÉ
  14230.  
  14231. An area is one or more closed figures that can be drawn filled, outlined, or 
  14232. filled and outlined. If an area includes more than one figure, those figures 
  14233. can be separate or intersecting. 
  14234.  
  14235. A polygon, too, is one or more closed figures that can be drawn filled, 
  14236. outlined, or filled and outlined. Polygons, unlike areas, are limited to 
  14237. figures with straight edges. Polygons also can be separate or intersecting. 
  14238.  
  14239. The following topics are related to information in this chapter: 
  14240.  
  14241.      Presentation spaces 
  14242.      Line and arc primitives 
  14243.      Color and mix attributes 
  14244.      Fonts 
  14245.      Bit maps 
  14246.      Paths 
  14247.  
  14248.  
  14249. ΓòÉΓòÉΓòÉ 5.1. About Area Primitives ΓòÉΓòÉΓòÉ
  14250.  
  14251. Applications can create, outline, and fill areas and can create custom-fill 
  14252. patterns from bit maps or font symbols. Some graphics functions are not valid 
  14253. within an area definition. For example, you cannot include marker, image, or 
  14254. character-string primitives in an area definition. The following figure is an 
  14255. example of an area. 
  14256.  
  14257. An Area 
  14258.  
  14259. This area comprises two hexagons, one completely enclosed by the other. The 
  14260. area is filled with the current area-fill pattern. 
  14261.  
  14262.  
  14263. ΓòÉΓòÉΓòÉ 5.1.1. Attributes of Area Primitives ΓòÉΓòÉΓòÉ
  14264.  
  14265. The attributes of the area primitive are contained in a data structure called 
  14266. AREABUNDLE. These attributes are: 
  14267.  
  14268.      Pattern symbol 
  14269.      Pattern reference point 
  14270.      Pattern set 
  14271.      Foreground color 
  14272.      Background color 
  14273.      Foreground mix attribute 
  14274.      Background mix mode 
  14275.  
  14276.  When an application creates a presentation space, the area attributes are set 
  14277.  to the default values shown in the following table. 
  14278.  
  14279.  Area Attribute Default Values 
  14280.  
  14281.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14282.   ΓöéAttribute         ΓöéDefault     ΓöéFunction that Redefines       Γöé
  14283.   Γöé                  ΓöéValue       ΓöéAttribute                     Γöé
  14284.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14285.   ΓöéPattern symbol    Γöésolid       ΓöéGpiSetPattern                 Γöé
  14286.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14287.   ΓöéPattern reference Γöé(0,0)       ΓöéGpiSetPatternRefPoint         Γöé
  14288.   Γöépoint             Γöé            Γöé                              Γöé
  14289.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14290.   ΓöéPattern set       ΓöéLCID_DEFAULTΓöéGpiSetPatternSet              Γöé
  14291.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14292.   ΓöéForeground color  ΓöéBlack       ΓöéGpiSetAttrs (ABB_COLOR)       Γöé
  14293.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14294.   ΓöéBackground color  ΓöéClear       ΓöéGpiSetAttrs (ABB_BACK_COLOR)  Γöé
  14295.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14296.   ΓöéForeground mix    ΓöéOverpaint   ΓöéGpiSetAttrs (ABB_MIX_MODE)    Γöé
  14297.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14298.   ΓöéBackground mix    ΓöéLeave alone ΓöéGpiSetAttrs                   Γöé
  14299.   Γöé                  Γöé            Γöé(ABB_BACK_MIX_MODE)           Γöé
  14300.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14301.  
  14302.  Note:  If the default (LCID_DEFAULT) for pattern set is changed, the base 
  14303.  pattern set cannot be reselected with GpiSetPatternSet. 
  14304.  
  14305.  
  14306. ΓòÉΓòÉΓòÉ 5.1.2. Pattern Symbol Attribute ΓòÉΓòÉΓòÉ
  14307.  
  14308. The current pattern symbol, also called the symbol point code, is selected from 
  14309. the current pattern set with GpiSetPattern. The pattern symbol selected for the 
  14310. specified presentation space is used as the subsequent fill pattern until a new 
  14311. symbol is selected. Applications must not call GpiSetPattern while in an area 
  14312. or a path. If the current pattern set specifies a bit map, this attribute is 
  14313. ignored. 
  14314.  
  14315. The following table describes the pattern symbols provided by the PM 
  14316. programming interface in a base pattern set. These symbols are not necessarily 
  14317. available from other pattern sets. 
  14318.  
  14319. The Base Pattern Set 
  14320.  
  14321. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14322. ΓöéSymbol                                    ΓöéIdentifier       ΓöéLong ValueΓöé
  14323. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14324. ΓöéSolid shading decreasing in dots per inch ΓöéPATSYM_DENSE1    Γöé1L - 8L   Γöé
  14325. Γöé                                          Γöéthrough          Γöé          Γöé
  14326. Γöé                                          ΓöéPATSYM_DENSE8    Γöé          Γöé
  14327. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14328. ΓöéVertical lines                            ΓöéPATSYM_VERT      Γöé9L        Γöé
  14329. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14330. ΓöéHorizontal lines                          ΓöéPATSYM_HORIZ     Γöé10L       Γöé
  14331. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14332. ΓöéLines bottom left to top right            ΓöéPATSYM_DIAG1     Γöé11L       Γöé
  14333. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14334. ΓöéLines bottom left to middle right         ΓöéPATSYM_DIAG2     Γöé12L       Γöé
  14335. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14336. ΓöéLines top left to bottom right            ΓöéPATSYM_DIAG3     Γöé13L       Γöé
  14337. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14338. ΓöéLines top left to middle right            ΓöéPATSYM_DIAG4     Γöé14L       Γöé
  14339. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14340. ΓöéNo shading                                ΓöéPATSYM_NOSHADE   Γöé15L       Γöé
  14341. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14342. ΓöéSolid shading                             ΓöéPATSYM_SOLID     Γöé16L       Γöé
  14343. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14344. ΓöéAlternate pels                            ΓöéPATSYM_HALFTONE  Γöé17L       Γöé
  14345. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14346. ΓöéCartesian grid                            ΓöéPATSYM_HATCH     Γöé18L       Γöé
  14347. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14348. ΓöéDiagonal crosshatch                       ΓöéPATSYM_DIAGHATCH Γöé19L       Γöé
  14349. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14350. ΓöéBlank (often called the clear pattern)    ΓöéPATSYM_BLANK     Γöé64L       Γöé
  14351. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14352.  
  14353. The default pattern symbol (PATSYM_DEFAULT) is identical to the PATSYM_SOLID 
  14354. symbol, and has a long value of 0. The error pattern symbol (PATSYM_ERROR) has 
  14355. a long value of -1L. 
  14356.  
  14357. The following figure shows the patterns from the base pattern symbol set. 
  14358. Applications can determine the current pattern set by calling GpiQueryPattern. 
  14359.  
  14360. The Base Pattern Symbol Set 
  14361.  
  14362.  
  14363. ΓòÉΓòÉΓòÉ 5.1.3. Pattern Reference Point Attribute ΓòÉΓòÉΓòÉ
  14364.  
  14365. The pattern reference point is the point from which the area's fill-pattern 
  14366. spreads horizontally and vertically. The lower-left corner of the pattern is 
  14367. aligned on this point. The pattern reference point has a default value of 
  14368. (0,0), and is expressed in world coordinates. Applications can determine the 
  14369. pattern reference point with GpiQueryPatternRefPoint. Applications can specify 
  14370. the pattern reference point with GpiSetPatternRefPoint; however, this should 
  14371. not be done inside an area. The pattern reference point does not have to be 
  14372. within the boundary of the area. The following figure shows an area that was 
  14373. filled using the default pattern reference point. 
  14374.  
  14375. The Pattern Reference Point 
  14376.  
  14377. The pattern of diagonal lines is aligned with the pattern reference point 
  14378. (0,0).  When the picture is displayed or printed, only the hexagon will be 
  14379. filled. 
  14380.  
  14381. Use of the default reference point causes the diagonal lines of the pattern to 
  14382. intersect the area boundary at specific points. If you change the reference 
  14383. point to (0,4), for example, the pattern shifts upward, and the points of 
  14384. intersection with the area boundary are different. Although the reference point 
  14385. is outside the area, when an application displays or prints the picture, only 
  14386. the area is filled. 
  14387.  
  14388.  
  14389. ΓòÉΓòÉΓòÉ 5.1.4. Pattern Set Attribute ΓòÉΓòÉΓòÉ
  14390.  
  14391. When you create a presentation space, the current pattern set and other area 
  14392. attributes are set to the default. The current pattern-a black solid, as 
  14393. described earlier- is specified from the supplied pattern set. (The supplied 
  14394. set of pattern symbols contains image or raster patterns only.) An area 
  14395. primitive is filled by repeating this pattern vertically and horizontally 
  14396. within the area boundary. 
  14397. Default Pattern Set 
  14398.  
  14399. The standard pattern set contains patterns of solid shading with decreasing 
  14400. intensity, and patterns of vertical, horizontal, and diagonal lines. If the 
  14401. default pattern set is changed with GpiSetDefAttrs, its patterns are not 
  14402. accessible. The patterns from the default set can be recovered by specifying 
  14403. GpiSetDefAttrs with the value LCID_DEFAULT, (0). 
  14404. Customizing Pattern Sets 
  14405.  
  14406. An application can create custom patterns by using bit maps or characters and 
  14407. symbols from an image font. When designing custom patterns, consider that the 
  14408. operating system uses only the first eight bits in the first eight rows, 
  14409. starting with the lower-left corner of the bit map. The cell size of an image 
  14410. font used as a fill pattern might be too large to include the complete 
  14411. character or symbol. 
  14412.  
  14413. An application can change the appearance of a fill pattern by changing its 
  14414. alignment in an area primitive with GpiSetPatternRefPoint. When the default 
  14415. reference point is set, the operating system aligns the lower-left corner of 
  14416. the fill pattern with the point (0,0) in the application's world space and 
  14417. begins filling the area. If an application adjusts the pattern reference point 
  14418. to (3,2), The operating system aligns the lower-left corner of the fill pattern 
  14419. with the point (3,2) in the application's world space and begins filling the 
  14420. area. By moving the reference point from (0,0) to (3,2), the fill pattern 
  14421. appears shifted up two pels and to the right three pels. 
  14422.  
  14423.  
  14424. Custom Fill Patterns from a Bit Map 
  14425.  
  14426. To create a custom pattern from a hard-coded bit map, an application must use 
  14427. the following steps: 
  14428.  
  14429.    1. Create or load a bit map to obtain a bit-map handle; for example, use 
  14430.       GpiLoadBitmap. 
  14431.  
  14432.    2. Call GpiSetBitmapId (ID) to tag the bit map with a local identifier 
  14433.       (lcid) from 1 to 254. 
  14434.  
  14435.    3. Call GpiSetPatternSet (ID) or GpiSetAttrs (ABB_SET) to set the current 
  14436.       fill pattern. 
  14437.  
  14438.  The application can now draw the area. 
  14439.  
  14440.  
  14441.  Custom Fill Patterns from a Font Symbol 
  14442.  
  14443.  To create a custom pattern from a character or a symbol in a font: 
  14444.  
  14445.    1. Create a logical image font and assign it an ID; for example use 
  14446.       GpiCreateLogFont. 
  14447.  
  14448.    2. Call GpiSetPatternSet (ID) or GpiSetAttrs (ABB_SET), passing it the local 
  14449.       identifier for the font. 
  14450.  
  14451.    3. Call GpiSetPattern, passing the value of the code point for a character 
  14452.       or symbol in the font. 
  14453.  
  14454.  The application can now draw the area. 
  14455.  
  14456.  
  14457. ΓòÉΓòÉΓòÉ 5.1.5. Area Colors and Mix Attributes ΓòÉΓòÉΓòÉ
  14458.  
  14459. The color attribute defines the color used to draw a primitive or an object. 
  14460. The mix attribute determines how the color of a primitive or an object is 
  14461. combined with the color of the drawing surface, or any other objects on the 
  14462. surface. Both attributes also are described in Color and Mix Attributes. 
  14463.  
  14464. The area color defines the color used to fill the output from any of the IBM 
  14465. OS/2 area functions, when necessary. The area primitive is the only primitive 
  14466. in which the color can be changed during the drawing of the area. Therefore, 
  14467. this attribute, more than the other area attributes, depends on the current 
  14468. value as described in Attribute Currentness. 
  14469.  
  14470. When a presentation space is created, the area color initial default is black. 
  14471. The pattern symbol initial default, explained previously, is solid. Areas are 
  14472. one of the primitives that have a foreground and background color, as shown in 
  14473. the following figure. The appearance of the area also depends on the pattern 
  14474. symbol. 
  14475.  
  14476. Area Primitives 
  14477.  
  14478. Area primitives have both a color and background color attribute. The 
  14479. background color does not appear if the pattern symbol is solid, and the 
  14480. background color is undefined if the pattern symbol is a customized, 
  14481. multi-colored bit map. 
  14482.  
  14483. When a presentation space is created, the area mix attribute initial default is 
  14484. FM_OVERPAINT. The overpaint mix attribute specifies that the area color is not 
  14485. to be modified by the color of the drawing surface. If the area mix attribute 
  14486. is changed, the area color is mixed with colors that are already on the drawing 
  14487. surface. 
  14488.  
  14489. When the pattern symbol is solid, the color that fills the area, if necessary, 
  14490. is the current area foreground color. If the pattern symbol is changed to be a 
  14491. pattern of vertical lines, for example, the color of those lines is the current 
  14492. area foreground color. Inside of the area bracket, there can be other colors if 
  14493. these colors are the current color for primitives such as lines or arcs, that 
  14494. are drawn within the area bracket. These colors are not specifically defined or 
  14495. influenced by the area foreground color. 
  14496.  
  14497. The area background color initial default is CLR_BACKGROUND. Usually this is 
  14498. defined by the application to the same color as the drawing surface. If the 
  14499. pattern symbol is solid, the area background color does not appear. If the 
  14500. pattern symbol is changed to be a pattern of vertical lines, for example, the 
  14501. color in between those lines is the current area background color. 
  14502.  
  14503. The area background mix attribute initial default is BM_LEAVEALONE. The 
  14504. leave-alone background mix attribute specifies that the area background color 
  14505. is not drawn. This means that for a nonsolid pattern symbol, the 
  14506. drawing-surface color or the color of an object, not created by the area 
  14507. bracket, but on the drawing surface, shows through the nonsolid pattern. The 
  14508. area background color, for nonsolid pattern symbols, appears only if the 
  14509. background mix attribute is changed to overpaint, BM_OVERPAINT. 
  14510.  
  14511. If you have customized the pattern symbol with a bit map, the color definitions 
  14512. of the area primitive change. The foreground color corresponds to the color of 
  14513. the pels that are specified ON in the fill-pattern bit map. The background 
  14514. color corresponds to the color of the pels that are specified OFF in the 
  14515. fill-pattern bit map. The foreground and background mix attribute do not 
  14516. change. 
  14517.  
  14518. Note:  Background color and mix attribute only apply to monochrome (2-color) 
  14519. fill patterns. The bit set to 0 is defined as the background and the bit set to 
  14520. 1 is defined as the foreground. 
  14521.  
  14522. A multi-colored bit map is unaffected by the background color and mix 
  14523. attributes. 
  14524.  
  14525. To specify a new color or mix attribute call GpiSetAttrs. This function accepts 
  14526. as input the type of primitive, for example PRIM_AREA, a list of attributes 
  14527. that are to be changed, a list of attributes that are to be set to their 
  14528. default values, and the values for the attributes that are to be changed. 
  14529. GpiSetAttrs is useful to specify colors and mix attributes just for a specific 
  14530. data structure -for example the AREABUNDLE structure. GpiSetAttrs also provides 
  14531. some protection against invalid colors. 
  14532.  
  14533. To determine the current area color and mix attribute, call GpiQueryAttrs. This 
  14534. function accepts as input the primitive type and the attributes in question. It 
  14535. returns as output an array of values for the specifically queried attributes. 
  14536.  
  14537. To reset the default area color and mix attribute, just as with any other 
  14538. attribute specified in the AREABUNDLE. data structure, call GpiSetDefAttrs. 
  14539. This function accepts as input the type of primitive, for example PRIM_AREA, 
  14540. the attributes to be changed, and the values that will become the new default 
  14541. values. The changing of default values is important when working with segments. 
  14542. Changing the default values during a series of drawing functions is not 
  14543. recommended. 
  14544.  
  14545. The area color and mix attribute also can be specified with: 
  14546.  
  14547.      GpiSetColor 
  14548.      GpiSetMix 
  14549.      GpiSetBackColor 
  14550.      GpiSetBackMix 
  14551.  
  14552.  However, these functions have the disadvantage of specifying the foreground 
  14553.  and background color or mix attribute for all primitive BUNDLE data structures 
  14554.  that have the respective component. 
  14555.  
  14556.  There are four queries that determine the color and mix attribute as specified 
  14557.  by GpiSet... functions: 
  14558.  
  14559.      GpiQueryColor 
  14560.      GpiQueryMix 
  14561.      GpiQueryBackColor 
  14562.      GpiQueryBackMix 
  14563.  
  14564.  If the area color, area background color, mix attribute, or background mix 
  14565.  attribute were specified individually, the aforementioned queries can return a 
  14566.  value inconsistent with the current area attribute. 
  14567.  
  14568.  
  14569. ΓòÉΓòÉΓòÉ 5.1.6. Area Brackets ΓòÉΓòÉΓòÉ
  14570.  
  14571. Areas also are referred to as area brackets, because the functions that create 
  14572. and define the area always are "bracketed" by the two functions, GpiBeginArea 
  14573. and GpiEndArea. Only one area is defined between these two functions. However, 
  14574. within the area, there can be any number of adjacent, intersecting, or 
  14575. completely separate area primitives. 
  14576.  
  14577. GpiBeginArea signals the start of a group of primitives that define the 
  14578. boundary of the area. The current position is not changed by GpiBeginArea, 
  14579. although it is updated by any drawing instructions that follow. 
  14580.  
  14581. If you call GpiSetCurrentPosition or GpiMove within an area definition, the 
  14582. current figure is closed automatically, and a new figure is started at the 
  14583. current position by the next line or curve. A figure in the area, whose start 
  14584. and end points are not the same, is closed by drawing a straight line from the 
  14585. current position to the start position of the figure. 
  14586.  
  14587. GpiEndArea signals the end of an area definition and tells the operating system 
  14588. to draw the area. If an application does not close a figure before calling 
  14589. GpiEndArea, the figure is closed automatically by drawing a straight line from 
  14590. the end point of the last line or curve to the start point of the current 
  14591. figure. The current position is always updated to the end point of the last 
  14592. line drawn. 
  14593.  
  14594. The functional sequence to draw the area in the following figure could be: 
  14595.  
  14596.  
  14597.  
  14598. Procedure fncAREA01;
  14599.  
  14600. #If 0
  14601.  
  14602. GpiBeginArea                (* Starts the area bracket          *)
  14603.  
  14604. GpiSetCurrentPosition       (* Set the start point of the       *)
  14605.                             (* outer hexagon.                   *)
  14606. GpiPolyLine                 (* Draw the outer hexagon.          *)
  14607. GpiSetCurrentPosition       (* Set the start point of the inner *)
  14608.                             (*  hexagon.                        *)
  14609. GpiPolyLine                 (* Draw the inner hexagon.          *)
  14610.  
  14611. GpiEndArea                  (* End the area definition.         *)
  14612.  
  14613. #endif
  14614.  
  14615. End; (* fncAREA01 *)
  14616.  
  14617. An area bracket contains the functions that define an area. Only one area can 
  14618. be defined between "bracket" functions. 
  14619.  
  14620. Following the beginning of an area bracket, an application can define the shape 
  14621. and location of the area in world space by using the following line and arc 
  14622. functions: 
  14623.  
  14624.      GpiBox 
  14625.      GpiFullArc 
  14626.      GpiLine 
  14627.      GpiPartialArc 
  14628.      GpiPointArc 
  14629.      GpiPolyFillet 
  14630.      GpiPolyFilletSharp 
  14631.      GpiPolyLine 
  14632.      GpiPolySpline 
  14633.  
  14634.  If an application calls either GpiBox or GpiFullArc inside an area, it must 
  14635.  use the DRO_OUTLINE option. 
  14636.  
  14637.  In addition to the drawing functions, an application also can use the 
  14638.  following specification functions inside an area bracket: 
  14639.  
  14640.      GpiBeginElement 
  14641.      GpiCallSegmentMatrix 
  14642.      GpiComment 
  14643.      GpiElement 
  14644.      GpiEndArea 
  14645.      GpiEndElement 
  14646.      GpiGetData 
  14647.      GpiLabel 
  14648.      GpiMove 
  14649.      GpiOffsetElementPointer 
  14650.      GpiPop 
  14651.      GpiPutData 
  14652.      GpiSetArcParams 
  14653.      GpiSetAttrMode 
  14654.      GpiSetAttrs 
  14655.      GpiSetColor 
  14656.      GpiSetCurrentPosition 
  14657.      GpiSetEditMode 
  14658.      GpiSetElementPointer 
  14659.      GpiSetElementPointerAtLabel 
  14660.      GpiSetLineEnd 
  14661.      GpiSetLineJoin 
  14662.      GpiSetLineType 
  14663.      GpiSetLineWidth 
  14664.      GpiSetMix 
  14665.      GpiSetModelTransformMatrix 
  14666.      GpiSetSegmentTransformMatrix 
  14667.  
  14668.  An application also can use the following query functions inside an area 
  14669.  bracket: 
  14670.  
  14671.      GpiQueryArcParams 
  14672.      GpiQueryAttrMode 
  14673.      GpiQueryAttrs 
  14674.      GpiQueryBackColor 
  14675.      GpiQueryBackMix 
  14676.      GpiQueryBoundaryData 
  14677.      GpiQueryCharAngle 
  14678.      GpiQueryCharBox 
  14679.      GpiQueryCharDirection 
  14680.      GpiQueryCharMode 
  14681.      GpiQueryCharSet 
  14682.      GpiQueryCharShear 
  14683.      GpiQueryCharStringPos 
  14684.      GpiQueryCharStringPosAt 
  14685.      GpiQueryClipBox 
  14686.      GpiQueryClipRegion 
  14687.      GpiQueryColor 
  14688.      GpiQueryColorData 
  14689.      GpiQueryColorIndex 
  14690.      GpiQueryCp 
  14691.      GpiQueryCurrentPosition 
  14692.      GpiQueryDefaultViewMatrix 
  14693.      GpiQueryDefCharBox 
  14694.      GpiQueryDevice 
  14695.      GpiQueryDeviceBitmapFormats 
  14696.      GpiQueryEditMode 
  14697.      GpiQueryFontFileDescriptions 
  14698.      GpiQueryFontMetrics 
  14699.      GpiQueryFonts 
  14700.      GpiQueryGraphicsField 
  14701.      GpiQueryInitialSegmentAttrs 
  14702.      GpiQueryKerningPairs 
  14703.      GpiQueryLineEnd 
  14704.      GpiQueryLineJoin 
  14705.      GpiQueryLineType 
  14706.      GpiQueryLineWidth 
  14707.      GpiQueryLineWidthGeom 
  14708.      GpiQueryLogColorTable 
  14709.      GpiQueryMarker 
  14710.      GpiQueryMarkerBox 
  14711.      GpiQueryMarkerSet 
  14712.      GpiQueryMix 
  14713.      GpiQueryModelTransformMatrix 
  14714.      GpiQueryNearestColor 
  14715.      GpiQueryNumberSetIds 
  14716.      GpiQueryPageViewport 
  14717.      GpiQueryPattern 
  14718.      GpiQueryPatternRefPoint 
  14719.      GpiQueryPatternSet 
  14720.      GpiQueryPel 
  14721.      GpiQueryPickAperturePosition 
  14722.      GpiQueryPickApertureSize 
  14723.      GpiQueryRealColors 
  14724.      GpiQueryRegionBox 
  14725.      GpiQueryRegionRects 
  14726.      GpiQueryRGBColor 
  14727.      GpiQuerySegmentAttrs 
  14728.      GpiQuerySegmentNames 
  14729.      GpiQuerySegmentPriority 
  14730.      GpiQuerySegmentTransformMatrix 
  14731.      GpiQuerySetIds 
  14732.      GpiQueryStopDraw 
  14733.      GpiQueryTag 
  14734.      GpiQueryViewingLimits 
  14735.      GpiQueryViewingTransformMatrix 
  14736.      GpiQueryWidthTable 
  14737.  
  14738.  
  14739. ΓòÉΓòÉΓòÉ 5.1.7. Area Bracket Attributes ΓòÉΓòÉΓòÉ
  14740.  
  14741. In addition to the attributes controlled by the AREABUNDLE data structure, 
  14742. there are two attributes that can be specified for each individual area 
  14743. bracket: 
  14744.  
  14745.      Area boundary 
  14746.      Area construction 
  14747.  
  14748.  These bracket attributes affect how the area primitives inside the bracket are 
  14749.  drawn. 
  14750.  
  14751.  The concept of attribute currentness is especially important to areas and 
  14752.  paths that contain multiple figures. 
  14753.  
  14754.  
  14755. ΓòÉΓòÉΓòÉ 5.1.8. Area Boundaries ΓòÉΓòÉΓòÉ
  14756.  
  14757. An application specifies the area boundary when it calls GpiBeginArea. There 
  14758. are two options: 
  14759.  
  14760.      BA_BOUNDARY (the default) 
  14761.      BA_NOBOUNDARY. 
  14762.  
  14763.  The BA_BOUNDARY value tells the programming interface to draw all outlines of 
  14764.  the area primitives within the area bracket, using a line that conforms to the 
  14765.  current LINEBUNDLE attributes. If the line attributes have not been changed, 
  14766.  the default outline color is black on most displays and printers, and the 
  14767.  default line style is solid. An application can change the line color and line 
  14768.  styles within the area bracket. The interior of the area primitive is filled 
  14769.  with the current pattern. 
  14770.  
  14771.  To prevent the interface from outlining an area, an application can use the 
  14772.  BA_NOBOUNDARY flag when calling GpiBeginArea. Only the interior fill pattern 
  14773.  is visible. This value most often is used when an area contains many 
  14774.  overlapping figures, and the interior lines are not desired. 
  14775.  
  14776.  You could think of this option in terms similar to the outline and fill 
  14777.  options discussed with boxes and full arcs. The BA_BOUNDARY value corresponds 
  14778.  to DRO_OUTLINEFILL, and BA_NOBOUNDARY, to DRO_FILL. There is no distinct 
  14779.  boundary value that corresponds to DRO_OUTLINE, the simple outline. To 
  14780.  simulate this effect, OR the BA_NOBOUNDARY value with the appropriate area 
  14781.  construction value when calling GpiBeginArea. 
  14782.  
  14783.  
  14784. ΓòÉΓòÉΓòÉ 5.1.9. Area Construction ΓòÉΓòÉΓòÉ
  14785.  
  14786. An application specifies the area construction when it calls GpiBeginArea. 
  14787. There are two options: 
  14788.  
  14789.      BA_ALTERNATE  (the default) 
  14790.      BA_WINDING. 
  14791.  
  14792.  Construction modes also are called area-fill modes. They provide different 
  14793.  ways of determining whether a given point is included in the filled area. 
  14794.  Normally, the construction mode you use is a matter of personal preference. 
  14795.  
  14796.  
  14797.  Alternate Mode 
  14798.  
  14799.  In alternate mode, the following occurs: 
  14800.  
  14801.      A point is included in the filled area if you have to cross an odd number 
  14802.       of lines in the area when drawing a line from that point to infinity. 
  14803.  
  14804.      A point is not included in the filled area if you have to cross an even 
  14805.       number of lines in the area when drawing a line from that point to 
  14806.       infinity. 
  14807.  In the example in the following figure, the inner hexagon is not shaded, 
  14808.  because to draw a line from any point in the hexagon to infinity, you must 
  14809.  cross two boundary lines. The remainder of the area is shaded, because to move 
  14810.  outside the area, you need to cross only one boundary line. 
  14811.  
  14812.  Calculating Filled Areas Constructed in Alternate Mode 
  14813.  
  14814.  
  14815.  Winding Mode 
  14816.  
  14817.  In winding mode, the direction in which the boundary lines in the area are 
  14818.  drawn determines whether a given point is included in the filled area. The 
  14819.  direction of a line depends on both the graphics functions used to draw it and 
  14820.  the world coordinates that define it. For example, if the current position of 
  14821.  a presentation space is (c,c), and GpiBox is called with the 
  14822.  diagonally-opposite corner of the box specified as (d,d), GpiBox always draws 
  14823.  the box in the following order: 
  14824.  
  14825.    1. (xc.,yc.) to 
  14826.    2. (xd.,yc.) to 
  14827.    3. (xd.,yd.) to 
  14828.    4. (xc.,yd.) and returning to 
  14829.    5. (xc.,yc.). 
  14830.  
  14831.  As illustrated in the following figure, in some cases the box is drawn in a 
  14832.  counterclockwise direction. When either xd. is less than xc., or yd. is less 
  14833.  than yc., but not both, a box is drawn clockwise. 
  14834.  
  14835.  The Box 
  14836.  
  14837.  The current position is (3,2) and the specified corner is at (8,6).  The box 
  14838.  is drawn from (3,2) to (8,2) to (8,6) to (3,8) to (3,2). 
  14839.  
  14840.  For the polyline primitive, the direction in which a line is drawn depends on 
  14841.  the relative values of the end points of each line, so you can choose whether 
  14842.  to draw in a clockwise or counterclockwise direction. 
  14843.  
  14844.  To determine if a given point is included in the filled area, count the number 
  14845.  of lines to be crossed to move from that point to infinity. For each boundary 
  14846.  line drawn in one direction, add one to the tally. For each line drawn in the 
  14847.  opposite direction, subtract one from the tally. A point is within the area if 
  14848.  the result is nonzero. 
  14849.  
  14850.  If two figures -for example, the hexagons in the following figure- are drawn 
  14851.  in different directions, the tally for the inner hexagon is 0 and the area 
  14852.  will look exactly as it does in alternate mode. 
  14853.  
  14854.  Area Constructed in Different Directions in Winding Mode 
  14855.  
  14856.  If the two hexagons are drawn in the same direction, the result is 2, and the 
  14857.  inner hexagon is shaded as shown in the following figure. 
  14858.  
  14859.  Area Constructed in the Same Direction in Winding Mode 
  14860.  
  14861.  The boundary lines of the area in the previous figure have been drawn and are 
  14862.  visible through the area-fill pattern. The boundary lines of an area primitive 
  14863.  do not have to be drawn; but if they are, they are drawn according to the 
  14864.  current line attributes. 
  14865.  
  14866.  To vary the appearance of different parts of the boundary line, you can change 
  14867.  the current line attributes during area definition. 
  14868.  
  14869.  The boundary lines of an area are considered a part of the area's interior. 
  14870.  Therefore, when you draw an area without boundary lines (BA_NOBOUNDARY), the 
  14871.  area-fill pattern extends to include the boundaries of the area, and the area 
  14872.  is the same size it would be if the boundary lines had been drawn. 
  14873.  
  14874.  
  14875. ΓòÉΓòÉΓòÉ 5.1.10. Attribute Currentness ΓòÉΓòÉΓòÉ
  14876.  
  14877. Graphics functions that change attributes are valid within the area bracket. 
  14878. There are misconceptions, however, about which attributes are used when the 
  14879. figures are displayed in a window or drawn to the printer. 
  14880.  
  14881. Review the following functional sequence: 
  14882.  
  14883.  Function       Effect 
  14884.  
  14885.  GpiSetColor    Sets color to red. 
  14886.  
  14887.  GpiBeginArea   Opens area bracket 
  14888.  
  14889.  GpiLine        Draws a straight line 
  14890.  
  14891.  GpiSetColor    Sets color to green. 
  14892.  
  14893.  GpiPolyLine    Draws two additional lines to form a triangle. 
  14894.  
  14895.  GpiEndArea     Ends the area bracket and displays a picture. 
  14896.  
  14897.  If you are displaying on a color monitor, the image appears as follows: 
  14898.  
  14899.  The triangle has one red line, drawn with GpiLine and two green lines, drawn 
  14900.  with GpiPolyLine. The interior of the triangle, if drawn, is red. Red is the 
  14901.  color that was current when the area was defined and, therefore, is the 
  14902.  current color for the area interior. In terms of the interior area, green is 
  14903.  only the color that was current when the function that initiates drawing was 
  14904.  called. 
  14905.  
  14906.  If the application immediately opened a new area bracket, the interior of that 
  14907.  bracket, if drawn, would be green. The color attribute for the second 
  14908.  AREABUNDLE, is not "inherited" from the last AREABUNDLE drawn. 
  14909.  
  14910.  
  14911. ΓòÉΓòÉΓòÉ 5.2. About Polygon Primitives ΓòÉΓòÉΓòÉ
  14912.  
  14913. Area brackets have the flexibility to draw any combination of curved or 
  14914. straight lines and combine the results into a closed figure. An advantage that 
  14915. polygons sometimes have over area brackets, however, is that they require fewer 
  14916. time-consuming calculations to provide that kind of flexibility. 
  14917.  
  14918. The operating system provides a function that enables you to draw multiple 
  14919. straight-line closed areas outside of an area bracket. Like bracket-generated 
  14920. areas, they can be adjacent, intersecting, or completely separate. 
  14921.  
  14922. The function is GpiPolygons and the set of objects it draws are called polygon 
  14923. primitives. A polygon primitive is any set of polygons with specified vertices 
  14924. that can be filled or filled and outlined. This function accepts as input the 
  14925. desired number of polygons, the POLYGON data structure for each polygon, and a 
  14926. boundary and construction option similar to those of the GpiBeginArea function. 
  14927.  
  14928. The purpose of GpiPolygons is to enable you to specify an area in such a way as 
  14929. to pass all of the area boundaries at once. This improves performance 
  14930. significantly because the operating system cannot process the accumulated 
  14931. primitives inside an area bracket until it reaches a GpiEndArea. GpiPolygons is 
  14932. not valid inside an area bracket because the figures it defines are areas 
  14933. already. 
  14934.  
  14935. Although GpiPolygons is limited to straight line figures, it retains a great 
  14936. deal of flexibility. The polygon data structure (POLYGON) contains the number 
  14937. of vertices, and the vertices themselves are in world coordinates. The 
  14938. collection of POLYGON structures accepted in a single GpiPolygons is not 
  14939. limited to one type of polygon. 
  14940.  
  14941. The drawing of the first polygon begins at the current position. For all 
  14942. subsequent polygons, all vertices must be explicitly defined. If the individual 
  14943. polygons are not completely defined, they are closed with a straight line drawn 
  14944. from the last defined vertex to the first. 
  14945.  
  14946. After the application has defined the polygons, they may be transformed and 
  14947. manipulated just as other primitives are. 
  14948.  
  14949.  
  14950. ΓòÉΓòÉΓòÉ 5.2.1. Polygon Boundaries ΓòÉΓòÉΓòÉ
  14951.  
  14952. Applications have two options when specifying the polygon boundary: 
  14953.  
  14954.      POLYGON_BOUNDARY (the default) 
  14955.      POLYGON_NOBOUNDARY. 
  14956.  
  14957.  The POLYGON_BOUNDARY value tells the PM programming interface to draw all 
  14958.  outlines of the polygon primitives using a line that conforms to the current 
  14959.  LINEBUNDLE attributes. If the line attributes have not been changed, the 
  14960.  default outline color is black on most display devices and printers, and the 
  14961.  default line style is solid. As the attributes cannot be changed within the 
  14962.  context of GpiPolygons, all polygons are drawn with the same line. The 
  14963.  interior of the polygons are filled with the pattern that conforms to the 
  14964.  current AREABUNDLE attributes. 
  14965.  
  14966.  To prevent PM from outlining an area, an application can use the 
  14967.  POLYGON_NOBOUNDARY flag when calling GpiPolygons. Only the interior fill 
  14968.  pattern is visible. This value is used most often when there are many 
  14969.  overlapping polygons, and the interior lines are not desired. 
  14970.  
  14971.  You might think of this option in terms similar to the outline and fill 
  14972.  options discussed with boxes and full arcs. The POLYGON_BOUNDARY value 
  14973.  corresponds to the DRO_OUTLINEFILL value, and POLYGON_NOBOUNDARY, to the 
  14974.  DRO_FILL. There is no distinct boundary value that corresponds to DRO_OUTLINE, 
  14975.  the simple outline. 
  14976.  
  14977.  To simulate this effect, OR the POLYGON_NOBOUNDARY value with the appropriate 
  14978.  polygon construction value, described below, when calling GpiPolygons. 
  14979.  
  14980.  
  14981. ΓòÉΓòÉΓòÉ 5.2.2. Polygon Construction ΓòÉΓòÉΓòÉ
  14982.  
  14983. An application specifies the area construction when it calls GpiBeginArea. 
  14984. There are two options: 
  14985.  
  14986.      POLYGON_ALTERNATE (the default) 
  14987.      POLYGON_WINDING. 
  14988.  
  14989.  As with area construction, in alternate mode: 
  14990.  
  14991.      A point is included in the filled polygon if you have to cross an odd 
  14992.       number of lines in the set of polygons when drawing a line from that 
  14993.       point to infinity. 
  14994.  
  14995.      A point is not included in the filled polygon if you have to cross an 
  14996.       even number of lines in the set of polygons when drawing a line from that 
  14997.       point to infinity. 
  14998.  
  14999.  Also as with area construction, in winding mode, the direction in which the 
  15000.  boundary lines of the polygons are drawn determines whether a given point is 
  15001.  included in the filled polygon. Since the individual polygons drawn with 
  15002.  GpiPolygons are generated by independent structures, the direction in which a 
  15003.  polygon is drawn depends only on the vertices of that polygon. 
  15004.  
  15005.  To determine if a given point is included in the filled polygon, count the 
  15006.  number of lines to be crossed to move from that point to infinity. For each 
  15007.  boundary line drawn in one direction add one to the tally. For each line drawn 
  15008.  in the opposite direction, subtract one from the tally. A point is within the 
  15009.  polygon if the result is nonzero. 
  15010.  
  15011.  
  15012. ΓòÉΓòÉΓòÉ 5.2.3. Polygon Overlap ΓòÉΓòÉΓòÉ
  15013.  
  15014. An application specifies which pels are drawn when it calls GpiPolygons. There 
  15015. are two options: 
  15016.  
  15017.      POLYGON_INCL (the default) 
  15018.      POLYGON_EXCL. 
  15019.  
  15020.  When the overlap value is POLYGON_INCL, the bottom right is included in the 
  15021.  polygon. The value POLYGON_EXCL, the exclusive value, indicates that the 
  15022.  bottom right is excluded from the polygon. This value acts in conjunction with 
  15023.  the mix attribute in determining the appearance of a polygon, which is 
  15024.  especially important for a group of overlapping or adjacent polygons. 
  15025.  
  15026.  For example, GpiPolygons specifies a number of polygons. Two of the polygons 
  15027.  share the vertex pair (6,7) and (9,7). When the polygons are drawn, if the 
  15028.  overlap value was POLYGON_INCL, there are two distinct lines to be drawn from 
  15029.  (6,7) to (9,7). A mix attribute other than FM_OVERPAINT could cause 
  15030.  undesirable results as the line and drawing-surface colors mix. 
  15031.  
  15032.  As with the polygon boundary and construction values, the overlap value can be 
  15033.  ORed when calling GpiPolygons to create a specific effect. 
  15034.  
  15035.  
  15036. ΓòÉΓòÉΓòÉ 5.3. Using Area and Polygon Primitives ΓòÉΓòÉΓòÉ
  15037.  
  15038. You can use area functions to: 
  15039.  
  15040.      Draw one or more closed figures 
  15041.      Create a custom fill pattern from a bit map 
  15042.      Create a custom fill pattern from a font character 
  15043.  
  15044.  
  15045. ΓòÉΓòÉΓòÉ 5.3.1. Drawing a Single, Closed Figure ΓòÉΓòÉΓòÉ
  15046.  
  15047. The following figure shows an example of how to use area functions to draw a 
  15048. single closed figure that is filled with a vertical pattern using the alternate 
  15049. mode. The closed figure in this example is a 5-pointed star. 
  15050.  
  15051. Uses
  15052.   Os2Def,Os2Base,Os2PmApi;
  15053.  
  15054. Procedure fncAREA02;
  15055. Var
  15056.   Aptl : Array[0..4] of POINTL; (* Structure for current position *)
  15057.   Hps                 : HPS;
  15058.  
  15059. Begin
  15060.  
  15061.   (* Initialize the array of points for the 5-pointed star.       *)
  15062.   aptl[0].x := 400; aptl[0].y := 195;
  15063.   aptl[1].x := 40;  aptl[1].y := 320;
  15064.   aptl[2].x := 260; aptl[2].y := 10;
  15065.   aptl[3].x := 260; aptl[3].y := 390;
  15066.   aptl[4].x := 37;  aptl[4].y := 82;
  15067.  
  15068.   GpiSetPattern(hps, PATSYM_VERT);(* Set pattern outside bracket *)
  15069.  
  15070.   (* Draw the star. *)
  15071.   GpiBeginArea(hps, BA_ALTERNATE);
  15072.   GpiMove(hps, aptl[4]);         (* First and last point of star *)
  15073.   GpiPolyLine(hps, 5, aptl);
  15074.   GpiEndArea(hps);
  15075. End; (* fncAREA02 *)
  15076.  
  15077.  
  15078. ΓòÉΓòÉΓòÉ 5.3.2. Drawing Multiple, Intersecting, Closed Figures ΓòÉΓòÉΓòÉ
  15079.  
  15080. The following figure is an example of how to use area functions to draw two 
  15081. intersecting boxes, filled, using the winding mode. 
  15082.  
  15083. Uses
  15084.   Os2Def,Os2Base,Os2PmApi;
  15085.  
  15086. Procedure fncAREA03;
  15087. Var
  15088.   Ptl : POINTL; (* Structure for current position *)
  15089.   Hps : HPS;
  15090.  
  15091. Begin
  15092.   GpiBeginArea(hps, BA_WINDING);
  15093.   ptl.x := 100;
  15094.   ptl.y := 50;
  15095.   GpiMove(hps, ptl);
  15096.   ptl.x := 300;
  15097.   ptl.y := 250;
  15098.   GpiBox(hps, DRO_OUTLINE, ptl, 0, 0);
  15099.   ptl.x := 180;
  15100.   ptl.y := 120;
  15101.   GpiMove(hps, ptl);
  15102.   ptl.x := 380;
  15103.   ptl.y := 320;
  15104.   GpiBox(hps, DRO_OUTLINE, ptl, 0, 0);
  15105.   GpiEndArea(hps);
  15106. End; (* fncAREA03 *)
  15107.  
  15108.  
  15109. ΓòÉΓòÉΓòÉ 5.3.3. Creating a Custom Fill Pattern from a Bit Map ΓòÉΓòÉΓòÉ
  15110.  
  15111. The following figure is an example of how to create a custom fill pattern by 
  15112. using a hard-coded bit map. In this example, the bit map creates a pattern of 
  15113. arrows. 
  15114.  
  15115. Uses
  15116.   Os2Def,Os2Base,Os2PmApi;
  15117.  
  15118. Var
  15119.   LcidCustom : LONG; (* Bit map tag                           *)
  15120.   Hps        : HPS;
  15121.  
  15122.   Procedure CreatePattern;
  15123.   Var
  15124.     Hbm          : HBITMAP;           (* Bit map handle                          *)
  15125.     bmp2         : BITMAPINFOHEADER2; (* Structure for bit map information       *)
  15126.     pbmi2        : PBITMAPINFO2;      (* Pointer to structure for bit map data   *)
  15127.     prgb2        : PRGB2;             (* Structure for color data                *)
  15128.     CbBitmapInfo : ULONG;
  15129.     cColors      : ULONG;
  15130.     CONST AbPattern[0..27] of BYTE = (
  15131.                                       $E7, $FF, $C3, $FF,
  15132.                                       $C3, $FF, $81, $FF,
  15133.                                       $81, $FF, $E7, $FF,
  15134.                                       $E7, $FF, $E7, $FF,
  15135.                                       $E7, $FF, $E7, $FF,
  15136.                                       $E7, $FF, $E7, $FF,
  15137.                                       $E7, $FF, $FF, $FF );
  15138.  
  15139.   Begin
  15140.     lcidCustom := 1;            (* Bit map tag                             *)
  15141.  
  15142.     bmp2.cbFix := sizeof(BITMAPINFOHEADER2);
  15143.     bmp2.cx := 8;               (* Bit map is 8 pels wide                  *)
  15144.     bmp2.cy := 8;               (* Bit map is 8 pels high                  *)
  15145.     bmp2.cPlanes := 1;          (* One bit plane                           *)
  15146.     bmp2.cBitCount := 1;        (* One bit per pel                         *)
  15147.  
  15148.     (* Use default values for the remainder of the structure.             *)
  15149.  
  15150.     bmp2.ulCompression := 0;
  15151.     bmp2.cbImage := 0;
  15152.     bmp2.cxResolution := 0;
  15153.     bmp2.cyResolution := 0;
  15154.     bmp2.cclrUsed := 0;
  15155.     bmp2.cclrImportant := 0;
  15156.     bmp2.usUnits := 0;
  15157.     bmp2.usReserved := 0;
  15158.     bmp2.usRecording := 0;
  15159.     bmp2.usRendering := 0;
  15160.     bmp2.cSize1 := 0;
  15161.     bmp2.cSize2 := 0;
  15162.     bmp2.ulColorEncoding := 0;
  15163.     bmp2.ulIdentIfier := 0;
  15164.  
  15165.     cColors := 1 shl (bmp2.cBitCount * bmp2.cPlanes);
  15166.  
  15167.     cbBitmapInfo := sizeof(BITMAPINFO2) + (sizeof(RGB2) * cColors);
  15168.  
  15169.     DosAllocMem(pbmi2, cbBitmapInfo,
  15170.                 PAG_COMMIT Or PAG_READ Or PAG_WRITE);
  15171.  
  15172.     pbmi2^.cbFix := bmp2.cbFix;
  15173.     pbmi2^.cx := bmp2.cx;
  15174.     pbmi2^.cy := bmp2.cy;
  15175.     pbmi2^.cPlanes := bmp2.cPlanes;
  15176.     pbmi2^.cBitCount := bmp2.cBitCount;
  15177.  
  15178.     (* Use default values for the remainder of the structure.             *)
  15179.  
  15180.     pbmi2^.ulCompression := 0;
  15181.     pbmi2^.cbImage := 0;
  15182.     pbmi2^.cxResolution := 0;
  15183.     pbmi2^.cyResolution := 0;
  15184.     pbmi2^.cclrUsed := 0;
  15185.     pbmi2^.cclrImportant := 0;
  15186.     pbmi2^.usUnits := 0;
  15187.     pbmi2^.usReserved := 0;
  15188.     pbmi2^.usRecording := 0;
  15189.     pbmi2^.usRendering := 0;
  15190.     pbmi2^.cSize1 := 0;
  15191.     pbmi2^.cSize2 := 0;
  15192.     pbmi2^.ulColorEncoding := 0;
  15193.     pbmi2^.ulIdentIfier := 0;
  15194.  
  15195.     prgb2 := pbmi2 + 1;  (* Set address to follow bmp2           *)
  15196.  
  15197.     (* Set bit map colors to black and white.                             *)
  15198.     prgb2[0].bBlue := 0;                              (* Color[0] = black *)
  15199.     prgb2[0].bGreen := 0;                             (* Color[0] = black *)
  15200.     prgb2[0].bRed := 0;                               (* Color[0] = black *)
  15201.     prgb2[0].fcOptions := 0;
  15202.     prgb2[1].bBlue := 255;                            (* Color[1] = white *)
  15203.     prgb2[1].bGreen := 255;                           (* Color[1] = white *)
  15204.     prgb2[1].bRed := 255;                             (* Color[1] = white *)
  15205.     prgb2[1].fcOptions := 0;
  15206.  
  15207.     (* Create a bit map and retrieve its handle.                          *)
  15208.     hbm := GpiCreateBitmap(hps,
  15209.                            bmp2,
  15210.                            CBM_INIT,
  15211.                            abPattern,                 (* Array of bits    *)
  15212.                            pbmi2);
  15213.  
  15214.     (* Tag the bit map just created with a custom identIfier (lcid).      *)
  15215.     GpiSetBitmapId(hps, hbm, lcidCustom);
  15216.   End; (* CreatePattern *)
  15217.  
  15218.   Procedure MyFunction;
  15219.   Begin
  15220.     CreatePattern();
  15221.     GpiSetPatternSet(hps, lcidCustom);
  15222.         .
  15223.         .
  15224.         .
  15225.   End; (* func *)
  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. Uses
  15237.   Os2Def,Os2Base,Os2PmApi;
  15238.  
  15239. Var
  15240.   HPS                 : HPS;         (* PRESENTATION-SPACE HANDLE *)
  15241.   LcidCustom          : LONG;        (* Font identifier           *)
  15242.   Afm : Array[0..79] of FONTMETRICS;
  15243.   Fat                 : FATTRS;
  15244.  
  15245.   Procedure fncAREA05;
  15246.  
  15247.   LoadFont();
  15248.   GpiSetPatternSet(hps, lcidCustom);
  15249.   GpiSetPattern(hps, 'o');         (* Use lowercase 'o' as fill *)
  15250.   .
  15251.   .
  15252.   .
  15253. End; (* fncAREA05 *)
  15254.  
  15255. Procedure LoadFont;
  15256. Var
  15257.   CFonts          : LONG;
  15258.   CPublicFonts, i : LONG;
  15259.  
  15260. Begin
  15261.   CFonts        := 0;
  15262.  
  15263.   lcidCustom := 1;
  15264.  
  15265.   (* Determine the number of loaded public fonts.               *)
  15266.   cPublicFonts := GpiQueryFonts(hps, QF_PUBLIC, nil, cFonts,
  15267.                                 (sizeof(FONTMETRICS)), nil);
  15268.  
  15269.   (* Load the metrics for all public fonts into afm.            *)
  15270.   GpiQueryFonts(hps, QF_PUBLIC, nil, cPublicFonts,
  15271.                 (sizeof(FONTMETRICS)), afm);
  15272.  
  15273.   (* Get the first image font with a point size larger than 8.  *)
  15274.   i := 0;
  15275.   While ((agm[i].fsDefn AND FM_DEFN_OUTLINE) OR afm[i].lEmHeight <= 8)
  15276.          AND i < cPublicFonts Do
  15277.     Inc(i);
  15278.  
  15279.   (* Load the FATTRS structure with the required metrics.       *)
  15280.   fat.usRecordLength := sizeof(fat);
  15281.   fat.fsSelection := 0;
  15282.   fat.lMatch := afm[i].lMatch;
  15283.   StringCopy(fat.szFacename, afm[i].szFacename);
  15284.   fat.idRegistry := 0;
  15285.   fat.usCodePage := 0;
  15286.   fat.lMaxBaselineExt := 0;
  15287.   fat.lAveCharWidth := 0;
  15288.   fat.fsType := 0;
  15289.   fat.fsFontUse := 0;
  15290.  
  15291.   (* Select this font and assign it a custom lcid.              *)
  15292.   GpiCreateLogFont(hps, nil, lcidCustom, fat);
  15293.   GpiSetCharSet(hps, lcidCustom);
  15294. End; (* LoadFont *)
  15295.  
  15296.  
  15297. Creating a Custom Fill Pattern from a Font Character 
  15298.  
  15299.  
  15300. ΓòÉΓòÉΓòÉ 6. Bit Maps ΓòÉΓòÉΓòÉ
  15301.  
  15302. Raster output devices, such as display screens, are made up of a number of 
  15303. picture elements, called pixels or pels. By setting the color of the pels, you 
  15304. can create an image on the screen. The screen image can be represented 
  15305. internally by a graphics object called a bit map. The bit map contains a number 
  15306. of bits that describe the appearance of each pel on the screen. 
  15307.  
  15308. This chapter describes bit maps, their creation, uses, and functions. The 
  15309. following topics are related to information in this chapter: 
  15310.  
  15311.      Presentation spaces and device contexts 
  15312.      Coordinate spaces 
  15313.      Color and mix modes 
  15314.      Area primitives 
  15315.      Paths 
  15316.  
  15317.  
  15318. ΓòÉΓòÉΓòÉ 6.1. About Bit Maps ΓòÉΓòÉΓòÉ
  15319.  
  15320. Applications can use bit maps to: 
  15321.  
  15322.      Store and display scanned images, icons, and symbols 
  15323.      Create fill patterns for area primitives and paths 
  15324.  
  15325.  An application can display a bit-map image on any raster output device. A 
  15326.  raster is a rectangular matrix of pels on a video display or dot matrix 
  15327.  printer. A raster output device displays an image by setting pels in its 
  15328.  matrix to colors specified in a corresponding bit map. An image created in 
  15329.  this way is called a "bit-map image". Bit maps cannot be sent to vector output 
  15330.  devices such as plotters. 
  15331.  
  15332.  A bit map is drawn to an output device row by row. Each horizontal line of 
  15333.  pels is known as a scan line. 
  15334.  
  15335.  There is a 1-to-1 correspondence between the number of rows of pels in a 
  15336.  bit-map image and the rows of bits in a bit map. The first pel in a bit-map 
  15337.  image is in the lower-left corner, and the last pel is in the upper-right 
  15338.  corner. The pels are in left-to-right order inside each row of the image. The 
  15339.  following figure shows this relationship between bit map and image. 
  15340.  
  15341.  Bits and Pels in a Bit-Map Image 
  15342.  
  15343.  When an application creates a bit map by calling GpiCreateBitmap, it specifies 
  15344.  the bit-map width and height in terms of pels in the bit-map image. The width 
  15345.  is the number of pels within a row; the height is the number of rows. The 
  15346.  application must store these dimensions in the BITMAPINFO2 and 
  15347.  BITMAPINFOHEADER and pass their addresses to GpiCreateBitmap. 
  15348.  
  15349.  
  15350. ΓòÉΓòÉΓòÉ 6.1.1. System Implementation ΓòÉΓòÉΓòÉ
  15351.  
  15352. Bit maps are most useful when rapid and frequent movement is required, such as 
  15353. with icons and pointers. They are especially useful for restoring the contents 
  15354. of a window-for example, when an overlying window is removed. If you save the 
  15355. contents of a window in a bit map, you can restore the window contents simply 
  15356. by redisplaying the bit map when the window needs to be redrawn. 
  15357.  
  15358. Using bit maps is also an effective method of erasing some of the screen 
  15359. contents. For example, you can save the image of the screen in a bit map at any 
  15360. time while drawing on the screen. If you continue drawing after saving the 
  15361. screen image, you can "erase" any drawing done since you saved the screen image 
  15362. by redisplaying the bit map. 
  15363.  
  15364. Bit maps are not, however, the recommended way to store graphics that are going 
  15365. to be changed. Most changes to the bit-map contents mean that you have to 
  15366. re-create the bit map. 
  15367.  
  15368. Bit-map images are device-dependent. Their appearance is affected by the shape 
  15369. of the device's pels and the device's color capabilities. For example, if the 
  15370. pels on one display measure 0.05 mm by 0.1 mm, but 0.1 mm by 0.3 mm on a second 
  15371. display, a circular bit-map pie chart drawn on the first display appears 
  15372. elliptical on the second. The following figure shows how a bit map appears on 
  15373. two types of displays. 
  15374.  
  15375. Bit Map Shown on Two Types of Displays 
  15376.  
  15377. Bit maps, particularly color bit maps, can also occupy large amounts of memory. 
  15378. The actual amount of memory occupied by a bit map is determined by both the 
  15379. size of the bit map and the number of bits used to describe each pel. 
  15380.  
  15381.  
  15382. ΓòÉΓòÉΓòÉ 6.1.2. Bit Map Functions ΓòÉΓòÉΓòÉ
  15383.  
  15384. The OS/2 operating system provides a set of functions that allow you to: 
  15385.  
  15386.      Create bit maps 
  15387.      Create and load custom bit maps 
  15388.      Store color information on a bit map 
  15389.      Draw bit maps 
  15390.      Transfer bit maps 
  15391.      Change the size of a bit map 
  15392.      Specify the mix values for a bit map 
  15393.      Convert between monochrome and color data 
  15394.      Manipulate single pels 
  15395.      Copy images from a display into a bit map 
  15396.      Save a bit map 
  15397.      Delete a bit map 
  15398.      Make a bit map available to other processes 
  15399.  
  15400.  
  15401.  Creating a Bit Map 
  15402.  
  15403.  A bit map can be created by an application or by using the PM Icon Editor. 
  15404.  
  15405.  
  15406.  By an Application 
  15407.  
  15408.  To enable an application to create a bit map: 
  15409.  
  15410.    1. Create a memory device context. 
  15411.  
  15412.       A memory device context enables an application to treat a bit map in 
  15413.       memory as though it were a device. For example, an application can copy 
  15414.       color information from another bit map, or copy pels on the display, into 
  15415.       a bit map associated with a memory device context. 
  15416.  
  15417.       To create the memory device context, call DevOpenDC with: 
  15418.  
  15419.           A device type of OD_MEMORY (second argument) 
  15420.  
  15421.           A handle to a compatible device context (such as the device context 
  15422.            of a device with which the bit map is to be compatible). 
  15423.  
  15424.            Note:  The device device-context handle ideally should be the handle 
  15425.            of the actual device to which you will be directing the bit map. 
  15426.            Otherwise, it will be necessary to change ownership to the 
  15427.            appropriate device driver before the BitBlt operation (which copies 
  15428.            the bit map from one presentation space to one associated with a 
  15429.            screen device context). As a consequence, the image may appear 
  15430.            distorted. 
  15431.  
  15432.       If you omit the handle of the compatible device context by specifying 
  15433.       NULL, screen compatibility is assumed. 
  15434.  
  15435.    2. Create a graphics presentation space and associate it with the memory 
  15436.       device context. 
  15437.  
  15438.       The operating system requires this association before the application can 
  15439.       perform many of the bit map operations. The handle of this graphics 
  15440.       presentation space is required as input to subsequent bit-map-creation 
  15441.       and manipulation functions. 
  15442.  
  15443.    3. Create the bit map. 
  15444.  
  15445.       When an application creates a bit map, the handle of the presentation 
  15446.       space that you have associated with the memory device context causes the 
  15447.       bit map to be created in a format that is compatible with the memory 
  15448.       device context. 
  15449.  
  15450.       The application also passes two structures: the bit-map information 
  15451.       header and the bit-map information table. These structures contain a 
  15452.       great deal of information about the bit map. 
  15453.  
  15454.       To create the bit map, call GpiCreateBitmap with: 
  15455.  
  15456.           The handle of the presentation space (first argument) 
  15457.           The bit-map information header, BITMAPINFOHEADER (second argument). 
  15458.            (last argument). 
  15459.  
  15460.       The bit-map information table contains similar information, with the 
  15461.       addition of the RGB2 array structure. 
  15462.  
  15463.       GpiCreateBitmap returns a handle to the bit map, which is used to 
  15464.       identify the bit map. 
  15465.  
  15466.       To determine which bit-map formats are supported on a particular device, 
  15467.       call GpiQueryDeviceBitmapFormats. This returns every format supported on 
  15468.       a named device. The data is returned as an array of bit-map plane and 
  15469.       bit-count pairs. The first pair of values in the array is the one most 
  15470.       suitable for the device. 
  15471.  
  15472.       You can think of the bit map at this stage as a rectangular area of 
  15473.       memory containing random data. You can initialize the bit map at this 
  15474.       stage by providing GpiCreateBitmap with the address in application 
  15475.       storage of some initialization data and by setting the CBM_INIT option. 
  15476.       This is a useful function if, for example, your application always starts 
  15477.       by displaying the same image. 
  15478.  
  15479.    4. Select the bit map. 
  15480.  
  15481.       Before selecting the bit map, you can disassociate the presentation space 
  15482.       from the original memory device context and associate it with a different 
  15483.       memory device context. However, the bit-map format must be convertible to 
  15484.       a format that is supported by the new device. If you have selected one of 
  15485.       the four standard bit-map formats, this compatibility is guaranteed and 
  15486.       the conversion is automatic. 
  15487.  
  15488.       Note:  When a presentation space is associated with a memory device 
  15489.       context, a bit map must be selected into the device context before you 
  15490.       can draw in the presentation space. 
  15491.  
  15492.       To select the bit map, call GpiSetBitmap with: 
  15493.  
  15494.           The presentation-space handle (first parameter) 
  15495.           The bit-map handle (second parameter). 
  15496.  
  15497.  The following figure shows the sequence of events when you create and display 
  15498.  a bit map. 
  15499.  
  15500.  Creating and Displaying Bit Maps 
  15501.  
  15502.  The application: 
  15503.  
  15504.    1. Calls DevOpenDC to create the memory device context. 
  15505.  
  15506.    2. Creates a graphics presentation space. This is associated with the memory 
  15507.       device context. 
  15508.  
  15509.    3. Calls GpiCreateBitmap to define a bit map. 
  15510.  
  15511.    4. Calls GpiSetBitmap to designate the bit map as the one currently selected 
  15512.       in the memory device context. 
  15513.  
  15514.    5. Calls drawing instructions to the presentation space to draw to the bit 
  15515.       map. 
  15516.  
  15517.       Note:  If the bit map is initialized when it is created, this step does 
  15518.              not normally exist. Alternatively, this step can be a 
  15519.              GpiSetBitmapBits call. 
  15520.  
  15521.    6. Calls GpiBitBlt to copy the bit map from presentation space 1 to 
  15522.       presentation space 2 (associated with a screen device context). The bit 
  15523.       map is transferred directly to the screen. 
  15524.  
  15525.  
  15526.  Using the Icon Editor 
  15527.  
  15528.  Using the Icon Editor, you can create monochrome or color bit maps that have a 
  15529.  static appearance. This means that the bit maps can be created in advance and 
  15530.  then used without change while the application is running. 
  15531.  
  15532.  When you use the Icon Editor to create a bit map, the bit map is saved in a 
  15533.  resource file that can be loaded whenever it is needed. To load a bit-map 
  15534.  file, call GpiLoadBitmap, with the identifier of the resource file that 
  15535.  contains the bit map, as the second parameter. If you allow this value to 
  15536.  default, the application's .EXE file is assumed to contain the bit map. 
  15537.  
  15538.  GpiLoadBitmap lets you specify the x- and y-dimensions (in pels) of the bit 
  15539.  map. The loaded bit map is stretched or compressed accordingly. If you supply 
  15540.  a 0 value for one of these dimensions, the bit map is sized in the other 
  15541.  dimension only, which is likely to cause distortion of the image. If the bit 
  15542.  map is to be produced in its original size, specify 0 for both its width and 
  15543.  its height. 
  15544.  
  15545.  Output from the call to this function is the bit-map handle. To display the 
  15546.  loaded bit map on the screen, follow the sequence of steps described in the 
  15547.  preceding section, omitting steps 3 (defining the bit map) and 5 (issuing 
  15548.  drawing instructions to the presentation space). 
  15549.  
  15550.  A bit map created by the Icon Editor is saved in a device-independent format. 
  15551.  This format generates an array of bit maps with formats (bits per pel) 
  15552.  matching each of the supported display devices. 
  15553.  
  15554.  
  15555.  Creating and Loading a Custom Bit Map 
  15556.  
  15557.  An application can create a custom bit map by setting the bits in an array and 
  15558.  passing the array to GpiCreateBitmap or by running the Icon Editor and loading 
  15559.  the bit map with GpiLoadBitmap. 
  15560.  
  15561.  To create a custom bit map with an array, an application: 
  15562.  
  15563.    1. Defines an array of bytes that will set pels in an image to the 
  15564.       appropriate colors. This array of bytes typically represents the output 
  15565.       of a scanned image. 
  15566.  
  15567.    2. Sets the fields in the BITMAPINFOHEADER to their appropriate values. 
  15568.  
  15569.    3. Sets the fields in the BITMAPINFO2 structure to their appropriate values. 
  15570.  
  15571.    4. Calls GpiCreateBitmap, passes it the addresses of the structures and the 
  15572.       array of bytes that the application has already defined, and sets the 
  15573.       flOptions parameter to CBM_INIT. 
  15574.  
  15575.  If the application is to use this bit map as a fill pattern, it assigns the 
  15576.  bit map a local identifier by calling GpiSetBitmapId. 
  15577.  
  15578.  To load a custom bit map that was created with the Icon Editor: 
  15579.  
  15580.    1. Copy the bit map file to the directory in which you compile your 
  15581.       application. 
  15582.  
  15583.    2. Create a BITMAP entry in your application's resource file, assigning a 
  15584.       unique integer identifier to the bit map. 
  15585.  
  15586.    3. Call GpiLoadBitmap, passing it the identifier that you assigned to the 
  15587.       bit map in the resource file. 
  15588.  
  15589.  An application can use GpiLoadBitmap to load any bit map from a file that 
  15590.  conforms to any of the standard OS/2 bit-map formats or to a device-specific 
  15591.  format supported by the device concerned. This means that an application can 
  15592.  load a bit map created by another application, if that application created the 
  15593.  correct bit-map header and stored the bit-map bits correctly. 
  15594.  Storing Color Information in a Bit Map 
  15595.  
  15596.  Graphics systems use one of two formats for storing color information in bit 
  15597.  maps. The first format uses a single plane and a multiple bit count. The 
  15598.  second format uses multiple color planes. 
  15599.  Color Planes 
  15600.  
  15601.  Bit maps are arranged in one or more color planes. A color plane is an array 
  15602.  of bit-map bits that contains color information. 
  15603.  
  15604.  The bit maps in each of the previous illustrations use the single bit-map 
  15605.  plane format, which is the standard format for bit maps in OS/2 applications. 
  15606.  In this format, a specified number of adjacent bit-map bits contains indexes 
  15607.  to either a special color table of RGB values or actual RGB2 structures. 
  15608.  Whether the application maps bits into an RGB or RGB2 structure depends on the 
  15609.  bit-map format. All of the color information resides in a single plane. 
  15610.  
  15611.  The second color format uses more than one color plane. A common multiplane 
  15612.  bit-map format is the three-plane format, in which one plane corresponds to 
  15613.  the red pels, another to the green pels, and a third to the blue pels. 
  15614.  Multiplane bit-map formats are rare in PM applications. Most bit maps are 
  15615.  stored externally in a single-plane format, although the device driver (such 
  15616.  as VGA) may internally convert them to the multiplane format. 
  15617.  
  15618.  The single-plane format can be converted internally to any multiplane format 
  15619.  used by a device. You also can use a nonstandard number of bits to describe 
  15620.  each pel, if supported by your output device. If you write your own 
  15621.  presentation driver, it must be able to convert the standard bit-map formats 
  15622.  to its own internal format. 
  15623.  
  15624.  An application can determine which color-plane format a device supports by 
  15625.  calling GpiQueryDeviceBitmapFormats. 
  15626.  Standard Bit-Map Formats 
  15627.  
  15628.  On a monochrome device, you need only one bit to describe a single pel, and 
  15629.  that bit is switched on or off. Color devices require more bits. For example, 
  15630.  an eight-color picture requires three bits to describe a single pel, because 
  15631.  each component of the RGB mix (red, green, blue) that gives a pel its color 
  15632.  must be described. 
  15633.  
  15634.  A bit count is a value that specifies how many adjacent bit-map bits 
  15635.  correspond to each pel in a bit-map image.  There are four standard bit-map 
  15636.  formats, each with a different bit count.  The formats are shown in the 
  15637.  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 
  15654.  four bits for each pel, the four bits for pel 1 are followed by the four bits 
  15655.  for 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 
  15662.  contains two entries. A device that supports a bit count of n bits per pel, 
  15663.  has a corresponding color table with 2n entries. However, a bit count of 24 
  15664.  bits per pel indicates that there is no color table, because each pel is a 
  15665.  direct RGB value. 
  15666.  
  15667.  The following figure shows a bit map using a bit count of four bits per pel 
  15668.  and 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 
  15676.  on a device that supports a format of 24 bits per pel-such a device can 
  15677.  support over 16 million colors. Instead of using a color table, the 
  15678.  BITMAPINFO2 structure consists of only the header, and the red, green, and 
  15679.  blue color 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.  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 
  15691.  to receive raster images of your drawings. The following table describes the 
  15692.  bit 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.  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 
  15729.  require an application to select a bit map into a presentation space before 
  15730.  the application draws the corresponding image. An application can use 
  15731.  WinDrawBitmap to scale bit maps by specifying DBM_STRETCH as the last 
  15732.  argument, and the address of a RECTL structure as the fourth argument. The 
  15733.  coordinates in this 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.  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.  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.  GpiDrawBits 
  15794.  
  15795.  GpiDrawBits copies bit map image data from storage into a bit map that has 
  15796.  been selected into a device context associated with a presentation space. It 
  15797.  can also copy bit-map image data to a device. An application can use this 
  15798.  function to draw a bit map without first selecting the bit map into a 
  15799.  presentation 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.  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 
  15810.  to devices other than the screen. It is independent of the drawing mode, but 
  15811.  it 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.  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.  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.  Specifying Mix Values 
  15936.  
  15937.  When you draw a graphics primitive into a presentation space, it is affected 
  15938.  by the current foreground-mix value, and possibly by the current 
  15939.  background-mix value, in that presentation space. However, when you copy a bit 
  15940.  map into a target presentation space, the current foreground- and 
  15941.  background-mix values in the target presentation space are ignored. Instead, 
  15942.  you specify a mix-mode value, also known as the raster-operation (ROP) value. 
  15943.  This value determines: 
  15944.  
  15945.      How the bit map is affected by any data that might already be in the 
  15946.       target presentation space 
  15947.  
  15948.      The color of each pel in the bit map 
  15949.  
  15950.  Each pel in the bit map of the target presentation space has, potentially, 
  15951.  three color settings: 
  15952.  
  15953.      The setting of that pel in the source rectangle 
  15954.  
  15955.      The initial setting of that pel in the target rectangle 
  15956.  
  15957.      The setting of that pel in the current area-fill pattern in the target 
  15958.       presentation space 
  15959.  
  15960.  The (boolean) values of each of these settings can be combined using boolean 
  15961.  operations to produce the final value of each pel in the target presentation 
  15962.  space. For a color target, the target must be regarded as consisting of 
  15963.  multiple one-bit per pel planes, with the mixing applied to each plane 
  15964.  separately to produce the final color index into the physical color table. 
  15965.  Because the final color index is an index into the physical palette, the 
  15966.  results of any color mixing are therefore unpredictable. For example, if you 
  15967.  ORed together two numeric index values, the color indexed by the result is 
  15968.  unlikely to have any direct relation to the colors indexed by the two values 
  15969.  you ORed together. It depends on the order of the colors in the physical 
  15970.  table. 
  15971.  
  15972.  As input to the functions, you supply an actual mix value. The ROP mix value 
  15973.  required to achieve any given result can be determined from the following 
  15974.  table. The final value of each bit in every pel depends on the values of the 
  15975.  corresponding bits in the pattern (P), source (S), and the original target 
  15976.  value (T initial). Each row of the table shows one of the eight possible 
  15977.  combinations of these values. For each combination, mark the desired final 
  15978.  target value in the last column. The eight bits in this column then show the 
  15979.  value of the least significant byte of the ROP value required to achieve this 
  15980.  mixing function. For example, if the required mixing function is to copy the 
  15981.  source to the target, then the target (final) column will be the same as the S 
  15982.  column, and the ROP value will have the binary value 11001100, or the 
  15983.  hexadecimal value 00CC. 
  15984.  
  15985.  Possible Settings for the Index Bits 
  15986.  
  15987.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15988.   ΓöéPatternΓöéSource ΓöéTarget (initial)Γöé              ΓöéTarget (final)  Γöé
  15989.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15990.   Γöé0      Γöé0      Γöé0               Γöé              ΓöéIndex bit 0     Γöé
  15991.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15992.   Γöé0      Γöé0      Γöé1               Γöé              ΓöéIndex bit 1     Γöé
  15993.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15994.   Γöé0      Γöé1      Γöé0               Γöé              ΓöéIndex bit 2     Γöé
  15995.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15996.   Γöé0      Γöé1      Γöé1               Γöé              ΓöéIndex bit 3     Γöé
  15997.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15998.   Γöé1      Γöé0      Γöé0               Γöé              ΓöéIndex bit 4     Γöé
  15999.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16000.   Γöé1      Γöé0      Γöé1               Γöé              ΓöéIndex bit 5     Γöé
  16001.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16002.   Γöé1      Γöé1      Γöé0               Γöé              ΓöéIndex bit 6     Γöé
  16003.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16004.   Γöé1      Γöé1      Γöé1               Γöé              ΓöéIndex bit 7     Γöé
  16005.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16006.  
  16007.  If you want the pattern to have no effect on the target rectangle, the four 
  16008.  low-order bits of the index must be the same as the four high-order bits. 
  16009.  
  16010.  A monochrome bit map consists only of source settings of 1s and 0s, where a 1 
  16011.  or 0 represents each pel. It also has a two-entry color table with index 0 
  16012.  specifying what color a 0 pel represents and index 1 representing what color a 
  16013.  1 pel represents. In a monochrome bit map, this color table is not used during 
  16014.  BitBlt operations (but is used when drawing to the bit map and moving the bit 
  16015.  map between devices). The preceding table defines how any combination of 
  16016.  pattern, source and target original (1 and 0) values define the target final 
  16017.  (1 or 0) value. A color bit map has an index (in the case of four bits, 0-15) 
  16018.  for each pel which, serves as index into the bit map color table (16 entries 
  16019.  for four bits per pel) to define the color of each pel. Unlike monochrome bit 
  16020.  maps, this table is used during BitBlt operations (instead of target image 
  16021.  bundle attributes) to provide the color of the target output. 
  16022.  
  16023.  The following table represents a selection of the most commonly used mixes 
  16024.  with predefined symbolic names and their effects. (There are many other 
  16025.  possible mixes). 
  16026.  
  16027.  Mix Value Names 
  16028.  
  16029.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16030.   ΓöéMix Name          ΓöéEffect                                    Γöé
  16031.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16032.   ΓöéROP_SRCCOPY       ΓöéSource                                    Γöé
  16033.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16034.   ΓöéROP_SRCPAINT      ΓöéSource OR Target                          Γöé
  16035.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16036.   ΓöéROP_SRCAND        ΓöéSource AND Target                         Γöé
  16037.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16038.   ΓöéROP_SRCINVERT     ΓöéSource XOR Target                         Γöé
  16039.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16040.   ΓöéROP_SRCERASE      ΓöéSource AND NOT (Target)                   Γöé
  16041.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16042.   ΓöéROP_NOTSRCCOPY    ΓöéNOT (Source)                              Γöé
  16043.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16044.   ΓöéROP_NOTSRCERASE   ΓöéNOT (Source) AND NOT (Target)             Γöé
  16045.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16046.   ΓöéROP_MERGECOPY     ΓöéSource AND Pattern                        Γöé
  16047.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16048.   ΓöéROP_MERGEPAINT    ΓöéNOT (Source) OR Target                    Γöé
  16049.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16050.   ΓöéROP_PATCOPY       ΓöéPattern                                   Γöé
  16051.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16052.   ΓöéROP_PATPAINT      ΓöéNOT (Source) OR Pattern OR Target         Γöé
  16053.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16054.   ΓöéROP_PATINVERT     ΓöéTarget XOR Pattern                        Γöé
  16055.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16056.   ΓöéROP_DSTINVERT     ΓöéNOT (Target)                              Γöé
  16057.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16058.   ΓöéROP_ZERO          Γöé0                                         Γöé
  16059.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16060.   ΓöéROP_ONE           Γöé1                                         Γöé
  16061.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16062.   ΓöéROP_GRAY          ΓöéGray pattern background                   Γöé
  16063.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16064.  
  16065.  ROP_SRCCOPY is the most often used value. It simply copies the bit map to the 
  16066.  target presentation space without performing any color mixing. Because most of 
  16067.  the remaining mixes involve some degree of color mixing, they result in an 
  16068.  image that is quite different from the original. 
  16069.  
  16070.  
  16071.  Converting between Monochrome and Color Data Bit Maps 
  16072.  
  16073.  It is possible to copy a monochrome bit map to a color bit map or device, and 
  16074.  to copy a color bit map to a monochrome bit map or device. PM handles these 
  16075.  conversions automatically according to the following rules: 
  16076.  
  16077.      If you are copying a monochrome bit map to a color bit map or to a color 
  16078.       or monochrome device surface, a source setting of 1 adopts the current 
  16079.       image-foreground color of the target presentation space, and a source 
  16080.       setting of 0 adopts the current image-background color of the target 
  16081.       presentation space. For example, if the image foreground color is blue 
  16082.       and the image background color is yellow in the target presentation 
  16083.       space, a monochrome bit map is converted to a blue foreground on a yellow 
  16084.       background. 
  16085.  
  16086.      If you are copying from a monochrome pattern to a color bit map or 
  16087.       device, a source setting of 1 adopts the current area-foreground color of 
  16088.       the target device and a source setting of 0 adopts the current 
  16089.       area-background color of the target device. Note that if image bundle 
  16090.       attributes do not exist for the source bit map, as is the case when using 
  16091.       GpiWCBitBlt (which uses a bit map handle as the source), then zero source 
  16092.       pixels adopt the image background color and nonzero source pixels adopt 
  16093.       the image-foreground color of the presentation space. 
  16094.  
  16095.      If you are copying a color bit map to a monochrome bit map or device, 
  16096.       those pels that have the same color as the current image-background color 
  16097.       in the source presentation space adopt the image background color of the 
  16098.       target presentation space. For example, if the current image-background 
  16099.       color in the source presentation space is blue, all blue pels in the bit 
  16100.       map take on the color of the current image background in the target 
  16101.       presentation space. 
  16102.  
  16103.       All other pels in the color bit map adopt the current image foreground 
  16104.       color of the target presentation space. 
  16105.  
  16106.  
  16107.  Manipulating Single Pels 
  16108.  
  16109.  You can manipulate single pels in a bit map by using GpiSetPel and 
  16110.  GpiQueryPel. GpiSetPel sets the pel at the specified point (in world 
  16111.  coordinates) to the current line color. This function is independent of the 
  16112.  current drawing mode, and its effect is immediate. It is, however, a 
  16113.  device-dependent function. The CAPS_RASTER_CAPS option of DevQueryCaps 
  16114.  indicates if GpiSetPel is supported on the current device. 
  16115.  
  16116.  
  16117.  Copying Images from a Display into a Bit Map 
  16118.  
  16119.  An application can copy an image from a raster display screen to a bit map by 
  16120.  calling GpiBitBlt or GpiWCBitBlt. Before copying the bit map, the application 
  16121.  must call DevOpenDC to create a memory device context. This device context 
  16122.  allows an application to treat a bit map in memory as though it were a 
  16123.  device-the application can copy color information from pels on the display to 
  16124.  the bit map. 
  16125.  
  16126.  Once an application creates a memory device context, associates it with a 
  16127.  presentation space, and selects a bit map into the presentation space, the 
  16128.  application can use the presentation-space handle as the first argument to 
  16129.  GpiBitBlt or GpiWCBitBlt. If the application will be drawing the image on 
  16130.  devices with different aspect ratios, the application should use GpiWCBitBlt 
  16131.  to preserve the original dimensions of the bit map. 
  16132.  
  16133.  
  16134.  Saving a Bit Map 
  16135.  
  16136.  You have two ways to save a bit map that has been created by an application: 
  16137.  
  16138.      Store the bit map in a metafile, by calling GpiWCBitBlt. 
  16139.  
  16140.       Metafiles are covered in detail later. 
  16141.  
  16142.      Use the IBM OS/2 file-handling functions, in conjunction with 
  16143.       GpiQueryBitmapBits and GpiSetBitmapBits. 
  16144.  
  16145.       An application can save a bit map in a file by calling 
  16146.       GpiQueryBitmapBits, DosOpen, DosWrite, and DosClose. 
  16147.  
  16148.  GpiQueryBitmapBits copies bit-map data from a memory device context (that has 
  16149.  a standard-format bit map selected into it) to a buffer. The bit map you copy 
  16150.  can be newly created or have been loaded from a resource file. 
  16151.  
  16152.  You must supply the address in application storage of a bit-map information 
  16153.  table. The bit-map information table has the same structure as the bit map 
  16154.  information header, except for an additional entry, the colors field. As input 
  16155.  to GpiQueryBitmapBits, you supply a bit-count value and a plane value. These 
  16156.  must both be standard bit-map format values, so the plane value is always 1, 
  16157.  and the bit-count value is 1, 4, 8, or 24. If any conversion of the bit-map 
  16158.  data is necessary, it is done automatically. You also must provide the address 
  16159.  of the application storage into which the bit-map data is to be loaded. You 
  16160.  probably will need to find out how large the bit map is before you can do 
  16161.  this. GpiQueryBitmapParameters returns the width, height, plane count, and bit 
  16162.  count of a named bit map. 
  16163.  
  16164.  You also must supply the size of the fixed portion of the header (as well as 
  16165.  bit count, and so on). Nonstandard formats supported by the device that owns 
  16166.  the bit map will also be valid for GpiQueryBitmapBits. 
  16167.  
  16168.  You must ensure that you allocate sufficient storage at the end of the bit map 
  16169.  information table for the returned color table which, if the number of planes 
  16170.  is 1, will have 2n entries, where n is the number of bits per pel. 
  16171.  
  16172.  On return from GpiQueryBitmapBits, the system supplies the width, height, and 
  16173.  bit-map color table in the bit-map information table. You can retrieve a part 
  16174.  of a bit map by specifying the number of the scan line from which the transfer 
  16175.  is to start, and the number of scan lines you want. 
  16176.  
  16177.  When you have copied a bit map into application storage, you can save the bit 
  16178.  map externally, and reload it later, by using OS/2 file-handling functions. 
  16179.  After the application creates a file by calling DosOpen, it can call DosWrite 
  16180.  to copy the buffer containing the bit-map bits into the file. The application 
  16181.  then closes the file by calling DosClose. 
  16182.  
  16183.  If an application needs to use a bit map it has stored on disk, it can copy 
  16184.  the file's contents into a buffer by calling DosRead, and then copy 
  16185.  information about the image to the bit map by calling GpiSetBitmapBits. The 
  16186.  application must select the bit map into a memory device context before it 
  16187.  sets the bits. As with GpiQueryBitmapBits, you can transfer a part of the bit 
  16188.  map rather than the whole. GpiSetBitmapBits can be used to transfer 
  16189.  standard-format bit maps only, and only to a bit map selected into a memory 
  16190.  device context. If necessary, bit-map data is automatically converted from one 
  16191.  standard format to another. Nonstandard formats supported by the device owning 
  16192.  the bit map will also be valid for GpiSetBitmapBits. 
  16193.  
  16194.  If an application creates bit maps another application might use, it should 
  16195.  create them by using the standard IBM OS/2 bit-map file format. 
  16196.  
  16197.  
  16198.  Deleting a Bit Map 
  16199.  
  16200.  It is good practice always to delete a bit map from memory when you have 
  16201.  finished using it. To delete a bit map, use GpiDeleteBitmap. If you have 
  16202.  loaded a bit map from a resource file, GpiDeleteBitmap deletes only its memory 
  16203.  version. If the bit map has not been deleted when the owning process ends, it 
  16204.  is deleted automatically by the system. 
  16205.  
  16206.  
  16207.  Making Bit Maps Available to Other Processes 
  16208.  
  16209.  When an application creates a bit map or loads one from a resource file, it 
  16210.  can make the bit map available to other processes by placing the bit-map 
  16211.  handle in the clipboard. 
  16212.  
  16213.  
  16214. ΓòÉΓòÉΓòÉ 6.2. Using Bit Maps ΓòÉΓòÉΓòÉ
  16215.  
  16216. An application can use bit-map functions to: 
  16217.  
  16218.      Copy an image from a raster device (such as a display screen) to a bit 
  16219.       map 
  16220.      Copy an image from a raster device (such as a display screen) to the same 
  16221.       device 
  16222.      Copy an image from a bit map to a raster device 
  16223.      Copy an image from a bit map to another bit map 
  16224.      Copy an image from application memory to a bit map 
  16225.      Copy an image from application memory to a raster device 
  16226.      Scale bit-map images 
  16227.      Create custom fill patterns for area primitives and paths 
  16228.      Load a bit map created with the Icon Editor 
  16229.      Draw bit-map images 
  16230.      Store bit maps in a metafile or application memory 
  16231.  
  16232.  
  16233. ΓòÉΓòÉΓòÉ 6.2.1. Copying an Image from a Display Screen to a Bit Map ΓòÉΓòÉΓòÉ
  16234.  
  16235. To copy an image from a display screen to a bit map: 
  16236.  
  16237.    1. Associate the memory device context with a presentation space. 
  16238.  
  16239.    2. Create a bit map. 
  16240.  
  16241.    3. Select the bit map into the memory device context by calling 
  16242.       GpiSetBitmap. 
  16243.  
  16244.    4. Determine the location (in device coordinates) of the image. 
  16245.  
  16246.    5. Call GpiBitBlt and copy the image to the bit map. 
  16247.  
  16248.  The following figure demonstrates these steps. 
  16249.  
  16250.   Uses
  16251.     Os2Def,Os2PmApi;
  16252.  
  16253.   Var
  16254.     HdcMem                 : HDC;
  16255.     PszData : Array[0..3] of PSZ;
  16256.     HpsMem, hps            : HPS;
  16257.     Hab                    : HAB;
  16258.     sizlPage               : SIZEL;
  16259.     bmp                    : BITMAPINFOHEADER2;
  16260.     pbmi                   : PBITMAPINFO2;
  16261.     Hbm                    : HBITMAP;
  16262.     SWidth, SHeight        : SHORT;
  16263.     Aptl    : Array[0..2] of POINTL;
  16264.     AlData  : Array[0..1] of LONG;
  16265.  
  16266.   Begin
  16267.     SWidth  := 128;
  16268.     SHeight := 128;
  16269.  
  16270.     FillChar(sizlPage,SizeOf(sizlPage),0);
  16271.     FillChar(PszData[1],SizeOf(PszData[1]),nil);
  16272.     FillChar(PszData[2],SizeOf(PszData[2]),nil);
  16273.     FillChar(PszData[3],SizeOf(PszData[3]),nil);
  16274.  
  16275.     StrCopy(PszData[0],'Display');
  16276.  
  16277.     (*
  16278.     * Create the memory device context and presentation space so they
  16279.     * are compatible with the screen device context and presentation space.
  16280.     *)
  16281.  
  16282.     hdcMem := DevOpenDC(hab, OD_MEMORY, '*', 4,
  16283.                         pszData, NULLHANDLE);
  16284.  
  16285.     hpsMem := GpiCreatePS(hab, hdcMem, sizlPage,
  16286.                           PU_PELS or GPIA_ASSOC or GPIT_MICRO);
  16287.  
  16288.     (* Determine the device's plane/bit-count format. *)
  16289.  
  16290.     GpiQueryDeviceBitmapFormats(hpsMem, 2, alData);
  16291.  
  16292.     (*
  16293.     * Load the BITMAPINFOHEADER2 and BITMAPINFO2 structures. The sWidth and
  16294.     * sHeight fields specIfy the width and height of the destination
  16295.     * rectangle.
  16296.     *)
  16297.  
  16298.     bmp.cbFix := sizeof(BITMAPINFOHEADER2);
  16299.     bmp.cx := sWidth;
  16300.     bmp.cy := sHeight;
  16301.     bmp.cPlanes := alData[0];
  16302.     bmp.cBitCount := alData[1];
  16303.     bmp.ulCompression := BCA_UNCOMP;
  16304.     bmp.cbImage := (((sWidth *
  16305.             (1 shl bmp.cPlanes) * (1 shl bmp.cBitCount)) + 31) / 32) * sHeight;
  16306.     bmp.cxResolution := 70;
  16307.     bmp.cyResolution := 70;
  16308.     bmp.cclrUsed := 2;
  16309.     bmp.cclrImportant := 0;
  16310.     bmp.usUnits := BRU_METRIC;
  16311.     bmp.usReserved := 0;
  16312.     bmp.usRecording := BRA_BOTTOMUP;
  16313.     bmp.usRendering := BRH_NOTHALFTONED;
  16314.     bmp.cSize1 := 0;
  16315.     bmp.cSize2 := 0;
  16316.     bmp.ulColorEncoding := BCE_RGB;
  16317.     bmp.ulIdentIfier := 0;
  16318.  
  16319.  
  16320.     DosAllocMem(pbmi, sizeof(BITMAPINFO2) +
  16321.                 (sizeof(RGB2) * (1 shl bmp.cPlanes) * (1 shl bmp.cBitCount)),
  16322.                 PAG_COMMIT or PAG_READ or PAG_WRITE);
  16323.  
  16324.     pbmi^.cbFix := bmp.cbFix;
  16325.     pbmi^.cx := bmp.cx;
  16326.     pbmi^.cy := bmp.cy;
  16327.     pbmi^.cPlanes := bmp.cPlanes;
  16328.     pbmi^.cBitCount := bmp.cBitCount;
  16329.     pbmi^.ulCompression := BCA_UNCOMP;
  16330.     pbmi^.cbImage := ((sWidth+31)/32) * sHeight;
  16331.     pbmi^.cxResolution := 70;
  16332.     pbmi^.cyResolution := 70;
  16333.     pbmi^.cclrUsed := 2;
  16334.     pbmi^.cclrImportant := 0;
  16335.     pbmi^.usUnits := BRU_METRIC;
  16336.     pbmi^.usReserved := 0;
  16337.     pbmi^.usRecording := BRA_BOTTOMUP;
  16338.     pbmi^.usRendering := BRH_NOTHALFTONED;
  16339.     pbmi^.cSize1 := 0;
  16340.     pbmi^.cSize2 := 0;
  16341.     pbmi^.ulColorEncoding := BCE_RGB;
  16342.     pbmi^.ulIdentIfier := 0;
  16343.  
  16344.     (* Create a bit map that is compatible with the display.            *)
  16345.  
  16346.     hbm := GpiCreateBitmap(hpsMem, bmp, Ord(False), nil, pbmi);
  16347.  
  16348.     (* Associate the bit map and the memory presentation space.         *)
  16349.  
  16350.     GpiSetBitmap(hpsMem, hbm);
  16351.  
  16352.     (* Copy the screen to the bit map.                                  *)
  16353.  
  16354.     aptl[0].x := 0;       (* Lower-left corner of destination rectangle  *)
  16355.     aptl[0].y := 0;       (* Lower-left corner of destination rectangle  *)
  16356.     aptl[1].x := sWidth;  (* Upper-right corner of destination rectangle *)
  16357.     aptl[1].y := sHeight; (* Upper-right corner of destination rectangle *)
  16358.     aptl[2].x := 0;       (* Lower-left corner of source rectangle       *)
  16359.     aptl[2].y := 0;       (* Lower-left corner of source rectangle       *)
  16360.  
  16361.     hps := WinGetScreenPS(HWND_DESKTOP);
  16362.  
  16363.     GpiBitBlt(hpsMem, hps,
  16364.               sizeof(aptl) / sizeof(POINTL), (* Number of points in aptl      *)
  16365.               aptl, ROP_SRCCOPY, BBO_IGNORE);
  16366.  
  16367.     WinReleasePS(hps);
  16368.  
  16369.   End.
  16370.  
  16371.  
  16372. ΓòÉΓòÉΓòÉ 6.2.2. Scaling and Drawing a Bit-Map Image ΓòÉΓòÉΓòÉ
  16373.  
  16374. You can scale a bit map by calling GpiBitBlt or GpiWCBitBlt and altering the 
  16375. dimensions of the target rectangle. The following figure shows how to shrink 
  16376. the screen copied in the first example to half its original size, and then 
  16377. redraw it by calling GpiBitBlt. 
  16378.  
  16379. Uses
  16380.   Os2Def,Os2PmApi;
  16381.  
  16382. Var
  16383.   Aptl : Array[0..2] of POINTL;
  16384.   HpsMem, hps         : HPS;
  16385.   Hwnd                : HWND;
  16386.   SWidth,SHeight      : SHORT;
  16387.  
  16388. Begin
  16389.   SWidth  := 128;
  16390.   SHeight := 128;
  16391.  
  16392.   (* Target-rectangle dimensions (in device coordinates)              *)
  16393.   aptl[0].x := 0;
  16394.   aptl[0].y := 0;
  16395.   aptl[1].x := sWidth / 2;
  16396.   aptl[1].y := sHeight / 2;
  16397.  
  16398.   (* Source-rectangle dimensions (in device coordinates)              *)
  16399.   aptl[2].x := 0;
  16400.   aptl[2].y := 0;
  16401.   aptl[3].x := sWidth;
  16402.   aptl[3].y := sHeight;
  16403.  
  16404.  
  16405.   GpiBitBlt(hps, hpsMem,
  16406.             sizeof(aptl) / sizeof(POINTL),  (* Number of points in aptl *)
  16407.             aptl, ROP_SRCCOPY, BBO_IGNORE);
  16408.  
  16409.   WinReleasePS(hps);
  16410. End.
  16411.  
  16412.  
  16413. ΓòÉΓòÉΓòÉ 6.2.3. Creating a Custom Fill Pattern ΓòÉΓòÉΓòÉ
  16414.  
  16415. To create a custom fill pattern that the operating system will use to fill area 
  16416. primitives and paths: 
  16417.  
  16418.    1. Set an array of bits for a bit map that measures 8-bits-by-8-bits 
  16419.       (remember that the operating system pads the bit-map bits on a ULONG 
  16420.       (32-bit) boundary). 
  16421.  
  16422.    2. Create a bit map in a screen presentation space by calling 
  16423.       GpiCreateBitmap and passing it the address of the array of bits from Step 
  16424.       1. 
  16425.  
  16426.    3. Assign a local identifier (lcid) to the bit map by calling 
  16427.       GpiSetBitmapId. 
  16428.  
  16429.    4. Set the attribute of the pattern set in the AREABUNDLE structure by 
  16430.       calling GpiSetPattern. 
  16431.  
  16432.  The following figure shows how to create the pattern. 
  16433.  
  16434.   Uses
  16435.     Os2Def,Os2PmApi;
  16436.  
  16437.   Var
  16438.     LcidCustom : LONG;
  16439.     Hps        : HPS;
  16440.     Pbmi       : PBITMAPINFO2;
  16441.     Bmp        : BITMAPINFOHEADER2;
  16442.     Hbm        : HBITMAP;
  16443.     prgb2      : PRGB2;
  16444.     (* Define an array of bytes;  this array creates a grid pattern. *)
  16445.     CONST AbPattern5 : Array[0..63] of BYTE = (
  16446.           $FF, $FF, $00, $00,
  16447.           $80, $00, $00, $00,
  16448.           $80, $00, $00, $00,
  16449.           $80, $00, $00, $00,
  16450.           $80, $00, $00, $00,
  16451.           $80, $00, $00, $00,
  16452.           $80, $00, $00, $00,
  16453.           $80, $00, $00, $00,
  16454.           $80, $00, $00, $00,
  16455.           $80, $00, $00, $00,
  16456.           $80, $00, $00, $00,
  16457.           $80, $00, $00, $00,
  16458.           $80, $00, $00, $00,
  16459.           $80, $00, $00, $00,
  16460.           $80, $00, $00, $00,
  16461.           $80, $00, $00, $00 );
  16462.  
  16463.   Begin
  16464.     LcidCustom := 1;
  16465.  
  16466.     (* Create the bit map, passing the address of the array of bytes. *)
  16467.     hbm := GpiCreateBitmap(hps, bmp, CBM_INIT, (PBYTE) abPattern5, pbmi);
  16468.  
  16469.     (* Assign a local identIfier to the bit map.                      *)
  16470.     GpiSetBitmapId(hps, hbm, lcidCustom);
  16471.  
  16472.     (* Set the pattern-set attribute in the AREABUNDLE structure.     *)
  16473.     GpiSetPatternSet(hps, lcidCustom);
  16474.  
  16475.   End.
  16476.  
  16477.  
  16478. ΓòÉΓòÉΓòÉ 6.2.4. Loading a Bit Map from a File ΓòÉΓòÉΓòÉ
  16479.  
  16480. You can load a bit map from a file if the format of the file corresponds to the 
  16481. standard IBM OS/2 bit-map file format. (Any bit map that you create with the 
  16482. Icon Editor is automatically stored in this format.) To load a bit map: 
  16483.  
  16484.    1. Copy the bit-map file to the directory that contains your application's 
  16485.       resource file and source code. 
  16486.  
  16487.    2. Create an entry in your application's resource file, assigning a unique 
  16488.       integer identifier to the bit map. 
  16489.  
  16490.    3. Call GpiLoadBitmap in your application's source code, passing it the 
  16491.       integer identifier that you assigned to the bit map in your application's 
  16492.       resource file. 
  16493.  
  16494.  You can actually include your bit map in the application's .EXE file or in a 
  16495.  separate resource file. If the bit map is included in a separate resource 
  16496.  file, you must specify both the resource ID and the ID of the bit map within 
  16497.  the resource file on GpiLoadBitmap. If bit map is to be included in the 
  16498.  application's .EXE file, the resource ID is specified as NULL and only the ID 
  16499.  of the bit map is required by GpiLoadBitmap. 
  16500.  
  16501.  Following is an example of code from an application's resource file that 
  16502.  assigns the integer value 200 to a bit-map file called CUSTOM.BMP. 
  16503.  
  16504.       BITMAP  200 CUSTOM.BMP
  16505.  
  16506.  The following figure is an example of code from the application that shows how 
  16507.  to retrieve a bit-map handle by calling GpiLoadBitmap, use the handle to tag 
  16508.  the bit map by calling GpiSetBitmapId, and then use the local identifier 
  16509.  supplied by GpiSetBitmapId to set the bit map as the current fill pattern, 
  16510.  using GpiSetPatternSet. 
  16511.  
  16512.   Uses
  16513.     Os2Def,Os2PmApi;
  16514.  
  16515.   Var
  16516.     Hps        : HPS;
  16517.     Hbm        : HBITMAP;
  16518.     LcidCustom : LONG;
  16519.     Ptl        : POINTL;
  16520.  
  16521.   Begin
  16522.     LcidCustom := 1;
  16523.  
  16524.     hbm := GpiLoadBitmap(hps,  (* Presentation-space handle        *)
  16525.          NULLHANDLE,           (* Resource in application's module *)
  16526.          IDB_PATTERN,          (* Bit-map ID                       *)
  16527.          16,                   (* Bit-map width                    *)
  16528.          16);                  (* Bit-map height                   *)
  16529.  
  16530.     (* Assign a local identIfier to the bit map.                  *)
  16531.     GpiSetBitmapId(hps, hbm, lcidCustom);
  16532.  
  16533.     (* Set the pattern-set attribute in the AREABUNDLE structure. *)
  16534.     GpiSetPatternSet(hps, lcidCustom);
  16535.  
  16536.     ptl.x := 100;
  16537.     ptl.y := 100;
  16538.     GpiMove(hps, ptl);
  16539.     ptl.x := 200;
  16540.     ptl.y := 200;
  16541.     GpiBox(hps, DRO_OUTLINEFILL, ptl, 0, 0);
  16542.  
  16543.  
  16544. ΓòÉΓòÉΓòÉ 6.2.5. Storing a Bit Map in a Metafile ΓòÉΓòÉΓòÉ
  16545.  
  16546. You can draw bit maps in a metafile or segment by calling GpiWCBitBlt. The 
  16547. operating system converts this function to a drawing order. The 
  16548. target-rectangle dimensions that you pass to GpiWCBitBlt are in world 
  16549. coordinates, not device coordinates. The following figure shows how to draw a 
  16550. bit map in a metafile, and then play the metafile. 
  16551.  
  16552. Uses
  16553.   Os2Def,Os2PmApi;
  16554.  
  16555. Var
  16556.   Dop                 : DEVOPENSTRUC;
  16557.   HdcMeta             : HDC;
  16558.   Hps                 : HPS;
  16559.   HpsMeta             : HPS;
  16560.   SizlPage            : SIZEL;
  16561.   Hmf                 : HMF;
  16562.   Hbm                 : HBITMAP;
  16563.   Hab                 : HAB;
  16564.   Hwnd                : HWND;
  16565.   Aptl : Array[0..3] of POINTL;
  16566.  
  16567. Begin
  16568.  
  16569.   dop.pszLogAddress := nil;
  16570.   dop.pdriv := nil;
  16571.   dop.pszDataType := nil;
  16572.  
  16573.   StrCopy(dop.pszDriverName,'DISPLAY');
  16574.  
  16575.  
  16576.   hdcMeta := DevOpenDC(hab, OD_METAFILE, '*', 4L,
  16577.                        dop, NULLHANDLE);
  16578.   hpsMeta := GpiCreatePS(hab, hdcMeta, sizlPage, PU_PELS or GPIA_ASSOC);
  16579.  
  16580.   hbm := GpiLoadBitmap(hpsMeta, NULLHANDLE, IDB_PATTERN, 16, 16);
  16581.  
  16582. *
  16583.   aptl[0].x := aptl[0].y := 0;  (* Lower-left corner target rectangle        *)
  16584.   aptl[1].x := 150;             (* X coordinate upper-right target rectangle *)
  16585.   aptl[1].y := 300;             (* Y coordinate upper-right target rectangle *)
  16586.   aptl[2].x := aptl[2].y := 0;  (* Lower-left corner source rectangle        *)
  16587.   aptl[3].x := aptl[3].y := 16; (* Upper-right corner source rectangle       *)
  16588.  
  16589.   GpiWCBitBlt(hpsMeta, hbm, 4L, aptl, ROP_SRCCOPY, BBO_IGNORE);
  16590.  
  16591.   GpiAssociate(hpsMeta, NULLHANDLE);
  16592.   hmf := DevCloseDC(hdcMeta);
  16593.  
  16594.   GpiPlayMetaFile(hps, hmf, 0, nil, nil, 0, nil);
  16595.  
  16596.   WinReleasePS(hps);
  16597.  
  16598. End.
  16599.  
  16600. You can also store a bit map in a metafile by calling GpiBitBlt. In this case, 
  16601. however, the bit map will be stored inside an escape order. 
  16602.  
  16603.  
  16604. ΓòÉΓòÉΓòÉ 7. Creating and Drawing Retained Graphics ΓòÉΓòÉΓòÉ
  16605.  
  16606. There are two types of graphics output in the OS/2 operating system: 
  16607.  
  16608.      Retained graphics, which are stored in segments and can be redrawn or 
  16609.       edited when necessary 
  16610.  
  16611.      Nonretained graphics, which are drawn immediately but not stored and 
  16612.       therefore cannot be used again without repeating the graphics functions 
  16613.       needed to re-create the picture 
  16614.  
  16615.  This chapter describes the advantages of using retained graphics and provides 
  16616.  information on creating and drawing retained graphics. 
  16617.  
  16618.  The following topics are related to the information in this chapter: 
  16619.  
  16620.      Presentation spaces and device contexts 
  16621.      Coordinate spaces and transformations 
  16622.      Editing retained graphics and graphics segments 
  16623.  
  16624.  
  16625. ΓòÉΓòÉΓòÉ 7.1. About Creating and Drawing Retained Graphics ΓòÉΓòÉΓòÉ
  16626.  
  16627. An application draws by calling graphics functions. Applications store retained 
  16628. graphics in segments, which can be edited. This means that the retained image 
  16629. can be modified without having to re-create the unmodified portion using 
  16630. multiple GPI functions. 
  16631.  
  16632. When using nonretained graphics, the output appears on the output device (for 
  16633. example, a window) immediately. However, if part of the picture is erased or 
  16634. must be repeated, the application must call the same graphics functions a 
  16635. second, or even a third time. 
  16636.  
  16637. There are many other advantages to using retained graphics, including: 
  16638.  
  16639.      Convenience-An application can draw retained graphics with a single 
  16640.       function that accesses the storage area containing all the individual 
  16641.       functions necessary for the object. 
  16642.  
  16643.      Flexibility-An application can redraw graphics retained in the segment 
  16644.       store to any number of device contexts. 
  16645.  
  16646.      Editing-An application can modify an object without having to call all 
  16647.       the functions necessary to re-create the picture. Individual segments can 
  16648.       be moved, scaled, or rotated; then, redrawn. 
  16649.  
  16650.       Editing the graphics within a segment is described in Editing Retained 
  16651.       Graphics and Graphics Segments. 
  16652.  
  16653.      Power-An application can access the more powerful and useful graphics 
  16654.       functions only when graphics are stored in segments. 
  16655.  
  16656.      Organization-An application can use segments to store the components that 
  16657.       will be assembled into the final picture. 
  16658.  
  16659.  Primarily, a graphics segment is a means of grouping and storing graphics 
  16660.  primitives and their attributes. Although the graphics within a segment 
  16661.  usually are related in some way, they do not have to be. A segment might 
  16662.  contain a number of unrelated GPI functions that you want to keep and execute 
  16663.  at specific times. 
  16664.  
  16665.  Retained graphics do affect application performance, however, in that a normal 
  16666.  presentation space requires 114KB of main memory more than a micro 
  16667.  presentation space, and using the drawing mode DM_RETAIN adds an additional 
  16668.  46KB. 
  16669.  
  16670.  Note:  Your application can have up to 16KB (16378) segments in the segment 
  16671.         store of a single presentation space. The size of an individual segment 
  16672.         is limited only by the amount of storage available to you. 
  16673.  
  16674.  Do not confuse a graphics segment with a memory segment. 
  16675.  
  16676.  
  16677. ΓòÉΓòÉΓòÉ 7.1.1. Drawing Modes ΓòÉΓòÉΓòÉ
  16678.  
  16679. When you create a presentation space, the drawing mode is set to draw. Your 
  16680. application can change this mode using GpiSetDrawingMode. The two additional 
  16681. drawing modes provided by the PM are retain (DM_RETAIN) and draw-and-retain 
  16682. (DM_DRAWANDRETAIN). Your application can determine which drawing mode is set by 
  16683. using GpiQueryDrawingMode. 
  16684.  
  16685. The drawing mode that you select becomes current for the presentation space, 
  16686. and it can be changed any number of times. Select the appropriate drawing mode 
  16687. before creating a segment. The drawing mode affects the segment type. 
  16688.  
  16689.  
  16690. Draw Mode 
  16691.  
  16692. In draw mode, graphics output is provided immediately to the currently 
  16693. associated device and is not retained in a segment store.  When the graphics 
  16694. have been drawn, they cannot be used again unless they are re-created. For 
  16695. example, when a window containing draw mode graphics is moved or sized, the 
  16696. graphics have to be re-created by the application. 
  16697.  
  16698. Draw mode graphics are suitable if an application is creating fairly simple 
  16699. graphics quickly or is maintaining its own graphics database.  In the latter 
  16700. case, there is nothing to gain by retaining graphics. 
  16701.  
  16702. A segment created when the drawing mode is DM_DRAW, is called a nonretained 
  16703. segment. While it might sound contradictory, nonretained segments have certain 
  16704. advantages that are described in Nonretained Graphic Segments. 
  16705.  
  16706.  
  16707. Retain Mode 
  16708.  
  16709. In retain mode, graphics are retained in the segment store only. They are not 
  16710. directed to the current device as they are created. 
  16711.  
  16712. In retain mode, the presentation space does not have to be associated with a 
  16713. device context when graphics are being defined. It is possible to define 
  16714. graphics and store their definitions without sending them to a display screen 
  16715. or printer. The concept of attribute currentness, however, is relevant only 
  16716. when you are drawing graphics to an output device. For example, the color or 
  16717. other attribute that is current when you define a primitive is the color in 
  16718. which the line is drawn. That color or other attribute might not be the color 
  16719. that is current when you you actually draw the primitive. This is described in 
  16720. Attribute Currentness. 
  16721.  
  16722. Many of the GPI queries that return current attribute values are invalid in 
  16723. retain mode because current attribute values have no effect when graphics are 
  16724. not sent to an output device. 
  16725.  
  16726.  
  16727. Draw-and-Retain Mode 
  16728.  
  16729. In draw-and-retain mode, graphics are both drawn on the current device as they 
  16730. are created and stored for later use. The GPI queries that return current 
  16731. attribute values are valid in draw-and-retain mode. 
  16732.  
  16733.  
  16734. ΓòÉΓòÉΓòÉ 7.1.2. Creating a Graphics Segment ΓòÉΓòÉΓòÉ
  16735.  
  16736. Your application signals the start of a graphics segment using GpiOpenSegment, 
  16737. which is valid only in a normal presentation space. The following figure is an 
  16738. example of two segments in a presentation space. 
  16739.  
  16740.  
  16741.                             Presentation Space
  16742.                           ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16743.                           Γöé                                     Γöé
  16744.                           Γöé   Graphics Segment 1                Γöé
  16745.                           Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  16746.                           Γöé   Γöé            Γöé                    Γöé
  16747. GpiOpenSegment (hps,1);   Γöé   Γöé            Γöé                    Γöé
  16748. GpiSet... (hps,...);    ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ     Γöé                    Γöé
  16749. GpiLine (hps,...);      ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇ         Γöé                    Γöé
  16750. GpiCloseSegment (hps);    Γöé   Γöé            Γöé  Graphics Segment 2Γöé
  16751.                           Γöé   Γöé            Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    Γöé
  16752.                           Γöé   Γöé            Γöé  Γöé            Γöé    Γöé
  16753.                           Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé            Γöé    Γöé
  16754.                           Γöé                   Γöé            Γöé    Γöé
  16755. GpiOpenSegment (hps,2);   Γöé                   Γöé            Γöé    Γöé
  16756. GpiSet... (hps,...);    ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇ      Γöé    Γöé
  16757. GpiLine (hps,...);      ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇ         Γöé    Γöé
  16758. GpiCloseSegment (hps);    Γöé                   Γöé            Γöé    Γöé
  16759.                           Γöé                   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ    Γöé
  16760.                           Γöé                                     Γöé
  16761.                           Γöé                                     Γöé
  16762.                           ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16763.  
  16764. Graphics Segments in a Presentation Space 
  16765.  
  16766. GpiOpenSegment accepts, as input, the presentation space handle and a long 
  16767. integer value, which names each segment. 
  16768.  
  16769. OS/2 applications identify segments with long integer values. If you want to 
  16770. refer to the segment individually in later graphics operations (for example, to 
  16771. edit the segment) the identifier you supply must be greater than 0 and unique 
  16772. within the presentation space. 
  16773.  
  16774. If you do not want to refer to the segment individually after it is created, 
  16775. you can give the segment an identifier of 0. You might do this when you are 
  16776. creating nonretained segments, for example. Any number of segments can have the 
  16777. 0 identifier. They are referred to throughout this book as zero segments. 
  16778.  
  16779. To determine which names already have been used in a presentation space, use 
  16780. GpiQuerySegmentNames. This function returns an array of segment names for all 
  16781. retained segments, excluding zero segments, within a specified name range. 
  16782.  
  16783. Segments do not have to be named in consecutive order (although it is 
  16784. recommended for organizational purposes) because the segment order can be 
  16785. changed using GpiSetSegmentPriority. 
  16786.  
  16787.  
  16788. ΓòÉΓòÉΓòÉ 7.1.3. Filling a Graphics Segment ΓòÉΓòÉΓòÉ
  16789.  
  16790. After a graphics segment is opened, the GPI functions that follow become a part 
  16791. of a retained segment and are executed every time the segment itself is drawn. 
  16792.  
  16793. The typical GPI functions that would be called are those that: 
  16794.  
  16795.      Create graphics primitives-such as lines or markers 
  16796.      Assign attributes to those primitives-such as color or line type. 
  16797.  
  16798.  However, there are a few GPI functions that you cannot call while there is an 
  16799.  open segment-for example a second GpiOpenSegment. These functions are 
  16800.  identified in GPI Function Context. 
  16801.  
  16802.  A presentation space can contain many segments. Each time you open a new 
  16803.  segment, many attributes reset themselves to default values. Therefore, the 
  16804.  current position and attribute values that apply before you call 
  16805.  GpiOpenSegment cannot be guaranteed to be in effect after you call the 
  16806.  function. Beginning each segment with a number of attribute-setting requests 
  16807.  and, possibly, with GpiSetCurrentPosition, is recommended. Your application 
  16808.  also might take advantage of GpiSetDefAttrs, for example, to minimize the 
  16809.  number of attributes that must be dealt with upon opening a new segment. 
  16810.  
  16811.  
  16812. ΓòÉΓòÉΓòÉ 7.1.4. Closing a Graphics Segment ΓòÉΓòÉΓòÉ
  16813.  
  16814. When you have finished creating a graphics segment, close it using 
  16815. GpiCloseSegment. There can be only one open segment at a time in a single 
  16816. graphics presentation space, so you must close one segment before going on to 
  16817. the next. 
  16818.  
  16819. There is some degree of clean-up processing associated with using 
  16820. GpiCloseSegment, known as close-segment processing, that can make current 
  16821. attribute values unreliable. For more information about the effects of 
  16822. GpiOpenSegment and GpiCloseSegment on current attributes, see Graphics 
  16823. Attributes. 
  16824.  
  16825.  
  16826. ΓòÉΓòÉΓòÉ 7.1.5. Segment Attributes ΓòÉΓòÉΓòÉ
  16827.  
  16828. Each segment, whether retained or nonretained, has a number of characteristics, 
  16829. called attributes that you can set in accordance with your application's 
  16830. requirements. The attributes of a segment are quite different from those of a 
  16831. graphics primitive in that segment attributes have ON and OFF settings. There 
  16832. are seven segment attributes. However, only two are described in this chapter: 
  16833. chained (ATTR_CHAINED) and fast-chained (ATTR_FASTCHAIN). 
  16834.  
  16835. When an application creates a segment in a presentation space, the operating 
  16836. system assigns initial attributes to it. By default, five of the attributes 
  16837. will be set ON and two will be set OFF. The chained and fast-chained attributes 
  16838. are set ON. Your application can alter these values using 
  16839. GpiSetInitialSegmentAttrs or retrieve the values of the current initial 
  16840. attributes using GpiQueryInitialSegmentAttrs. 
  16841.  
  16842. The chain attribute tells the operating system to add each new segment in your 
  16843. application's presentation space to the segment chain. The fast-chained 
  16844. attribute tells the operating system to prevent the resetting of the primitive 
  16845. attributes to their default values before drawing the segment chain. 
  16846.  
  16847.  
  16848. Chained Attribute 
  16849.  
  16850. When you define a segment with the chained attribute switched ON, that segment 
  16851. becomes a part of the segment chain and is called a chained segment. The 
  16852. segment chain is composed of all chained segments defined in a single 
  16853. presentation space. Segments can be chained together so that they can be drawn 
  16854. as a group. By default, each new segment is chained to the previous segment. 
  16855.  
  16856. There can be only one segment chain at a time in a single presentation space, 
  16857. and all chained segments are chained to each other in the order in which you 
  16858. created them. Zero segments must have the chained attribute. 
  16859.  
  16860. Usually, a logical relationship exists between the segments in a segment chain, 
  16861. although this is not a requirement. The whole segment chain can be drawn using 
  16862. GpiDrawChain. Each segment in the chain is called a root segment. Root segments 
  16863. are affected by those GPI functions that act on the segment chain, but they 
  16864. also can be manipulated independently of the chain. 
  16865.  
  16866. Segments that are defined with the chained attribute switched OFF are called 
  16867. unchained segments. Your application can switch off the chain attribute using 
  16868. GpiSetInitialSegmentAttrs (hps, ATTR_CHAIN, ATTR_OFF). Unchained segments 
  16869. always are retained when they are created, regardless of the current 
  16870. drawing-mode parameter. An unchained segment must have a unique name. 
  16871.  
  16872. There are a number of reasons for defining a segment as unchained. For example, 
  16873. a particular segment might not belong to the picture that is defined by the 
  16874. segment chain. You also are likely to define as unchained any segment that 
  16875. belongs to the picture but that has no single, fixed place in the segment 
  16876. chain. A car wheel, for example, could be defined once but drawn four times in 
  16877. a picture of a car. It would have no single, fixed place in the segment chain, 
  16878. but would be included four times in the picture by being called from one or 
  16879. more root segments. 
  16880.  
  16881. A segment is called from another segment by including GpiCallSegmentMatrix in 
  16882. the calling segment. A segment and the segments it calls logically are one 
  16883. object. An important point about called segments is that they assume the 
  16884. primitive attribute settings of the calling segment. Of course, you can change 
  16885. the attribute settings within the called segment if the inherited values are 
  16886. inappropriate. 
  16887.  
  16888. A closed, unchained segment can be called from any other segment. Chained 
  16889. segments, however, cannot be called from other segments. 
  16890.  
  16891.  
  16892. Fast-Chained Attribute 
  16893.  
  16894. The fast-chained attribute applies only to chained segments. It prevents 
  16895. primitive attributes from being reset to their default values at the beginning 
  16896. of the segment, an aid to performance. There is unnecessary overhead in 
  16897. resetting attributes to their defaults if either of the following is true: 
  16898.  
  16899.      You are going to change the default values of the attributes at the start 
  16900.       of the segment. 
  16901.  
  16902.      You know that attributes have not been altered previously from their 
  16903.       default values. 
  16904.  
  16905.  The fast-chained attribute is switched ON by default, and you should leave it 
  16906.  on unless you specifically want attributes to be set to their default values. 
  16907.  To turn off the fast-chained attribute, call GpiSetInitialSegmentAttrs (hps, 
  16908.  ATTR_FASTCHAIN, ATTR_OFF). 
  16909.  
  16910.  
  16911. ΓòÉΓòÉΓòÉ 7.1.6. Actual Drawing Mode ΓòÉΓòÉΓòÉ
  16912.  
  16913. The drawing mode, as defined by GpiSetDrawingMode, works in conjunction with 
  16914. the segment status to produce the actual drawing mode. It is the actual drawing 
  16915. mode that determines whether graphics are: 
  16916.  
  16917.      Drawn directly to the output device 
  16918.      Retained in the segment store 
  16919.      Both drawn and retained 
  16920.  
  16921.  The actual drawing mode is summarized in the following table. 
  16922.  
  16923.  The Current Drawing Mode 
  16924.  
  16925.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16926.   Γöé                 Γöé               ΓöéContext       Γöé              Γöé
  16927.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16928.   ΓöéGpiSetDrawingModeΓöéChained SegmentΓöéUnchained     ΓöéOutside of anyΓöé
  16929.   Γöéparameter        Γöé               ΓöéSegment       Γöésegment       Γöé
  16930.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16931.   ΓöéDM_DRAWANDRETAIN Γöédraw-and-retainΓöéretain        Γöédraw          Γöé
  16932.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16933.   ΓöéDM_RETAIN        Γöéretain         Γöéretain        Γöédraw          Γöé
  16934.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16935.   ΓöéDM_DRAW          Γöédraw           Γöéretain        Γöédraw          Γöé
  16936.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16937.  
  16938.  As you can see in the preceding table, graphics within chained segments always 
  16939.  conform to the current drawing mode parameter. That is, they are drawn in 
  16940.  DM_DRAW mode, retained in DM_RETAIN mode, and both drawn and retained in 
  16941.  DM_DRAWANDRETAIN mode. 
  16942.  
  16943.  Graphics in unchained segments always are retained, regardless of the current 
  16944.  drawing-mode parameter. You cannot retain segments created when the current 
  16945.  drawing-mode parameter is DM_DRAW, unless they are unchained segments. 
  16946.  
  16947.  Similarly, graphics outside segments always are drawn without being retained. 
  16948.  You cannot retain primitives outside segments, regardless of the current 
  16949.  drawing mode. 
  16950.  
  16951.  Note:  A micro presentation space has no segment store. Therefore, you cannot 
  16952.  create graphics segments in a micro presentation space, nor can you change the 
  16953.  drawing mode, which is always DM_DRAW. 
  16954.  
  16955.  
  16956. ΓòÉΓòÉΓòÉ 7.1.7. Drawing a Retained Graphic ΓòÉΓòÉΓòÉ
  16957.  
  16958. Your application can draw a complete segment chain with GpiDrawChain. The 
  16959. segments are drawn in the order in which they appear in the chain. For example, 
  16960. the segments in the following figure are drawn in the following order: 
  16961.  
  16962.    1. Root segment 1 
  16963.    2. Unchained segment A 
  16964.    3. Unchained segment B 
  16965.    4. Root segment 2 
  16966.    5. Unchained segment B 
  16967.    6. Root segment 3. 
  16968.  
  16969.  Chained and Called Segments 
  16970.  
  16971.  Segment A is called by root segment 1, and segment B is called by both segment 
  16972.  A and root segment 2. Segment C calls segment D. Both C and D are unchained 
  16973.  segments that are not called from the segment chain, and consequently, are not 
  16974.  part of the segment chain. 
  16975.  
  16976.  GpiSetSegmentPriority changes the position of a root segment (which must not 
  16977.  be a zero segment) in the chain. As input to this function, you supply the 
  16978.  name of the segment you want to reorder and the name of a reference segment. 
  16979.  The reference segment is the segment that either will be immediately before, 
  16980.  or immediately after, the reordered segment's new position in the chain. 
  16981.  
  16982.  If the segment you are moving is to come after the reference segment in the 
  16983.  chain, it is said to have a higher priority (HIGHER_PRI). If it is to come 
  16984.  before the reference segment, it is said to have a lower priority (LOWER_PRI). 
  16985.  The nearer a segment is to the end of the chain, the higher its priority. 
  16986.  
  16987.  If you supply the name of an unchained segment as input to 
  16988.  GpiSetSegmentPriority, the segment is added to the chain in the position you 
  16989.  specify. To learn the position of a segment in the chain, use 
  16990.  GpiQuerySegmentPriority. 
  16991.  
  16992.  If your application called the following functions: 
  16993.  
  16994.   GpiSetSegmentPriority (hps, C, 2, LOWER_PRI)
  16995.   GpiSetSegmentPriority (hps, 3, 0, HIGHER_PRI)
  16996.   GpiSetSegmentPriority (hps, B, 0, LOWER_PRI)
  16997.  the segment chain in the previous figure would appear as in the following 
  16998.  figure; and GpiDrawChain would draw the segments in the following order: 
  16999.  
  17000.    1. Root segment 3 
  17001.    2. Root segment 1 
  17002.    3. Unchained segment A 
  17003.    4. Unchained segment B 
  17004.    5. Segment C 
  17005.    6. Unchained segment D. 
  17006.    7. Root segment 2 
  17007.    8. Unchained segment B. 
  17008.    9. Segment B 
  17009.  
  17010.  Chained and Called Segments Reordered Using GpiSetSegmentPriority 
  17011.  Segment Priority 
  17012.  
  17013.  The priority of a segment, in conjunction with the current foreground and 
  17014.  background mix attributes, affects how the picture is presented to the user. 
  17015.  The segment with the highest priority is drawn last, and appears on top of the 
  17016.  previously drawn primitives. Picture components in segments with low 
  17017.  priorities risk being drawn over and never seen by the user. The mix 
  17018.  attributes affect the graphics functions within each segment. 
  17019.  
  17020.  
  17021.  GpiDrawSegment 
  17022.  
  17023.  GpiDrawSegment accepts as input any segment name greater than zero. 
  17024.  GpiDrawSegment can draw individual segments both inside and outside the 
  17025.  segment chain. Any segment that is called from the GpiDrawSegment-named 
  17026.  segment also is drawn. 
  17027.  
  17028.  
  17029.  GpiDrawFrom 
  17030.  
  17031.  You can draw a smaller portion of the entire segment chain (but a larger 
  17032.  portion than a single segment) using GpiDrawFrom. GpiDrawFrom, as input, a 
  17033.  presentation space handle and two nonzero segment names, the first of which 
  17034.  must be part of the segment chain. GpiDrawFrom then draws the segments, 
  17035.  starting with the first and ending with the last, including all chained and 
  17036.  called segments. 
  17037.  
  17038.  
  17039. ΓòÉΓòÉΓòÉ 7.1.8. Attribute Modes ΓòÉΓòÉΓòÉ
  17040.  
  17041. You can change primitive-attribute settings at any time. The new values you 
  17042. specify replace the existing values. For example, if the current foreground 
  17043. color is green and you change it to red, red replaces green as the foreground 
  17044. color attribute. 
  17045.  
  17046. When you set primitive attributes within a retained or nonretained segment, you 
  17047. can save the existing attribute values on a last-in-first-out (LIFO) stack, 
  17048. from where they can later be retrieved and made current again. You do this by 
  17049. selecting either of the two attribute modes: 
  17050.  
  17051.      AM_PRESERVE mode-Also known as push-and-set mode 
  17052.      AM_NOPRESERVE mode-Also known as set mode. 
  17053.  
  17054.  In AM_NOPRESERVE mode, which is the default setting, existing attribute values 
  17055.  are replaced by any new attribute values that you supply. In AM_PRESERVE mode, 
  17056.  the existing attribute values are stored on a LIFO stack, and then the new 
  17057.  values that you specify take effect. AM_PRESERVE mode also causes the current 
  17058.  position to be saved if the position was specified using 
  17059.  GpiSetCurrentPosition. If you use GpiMove to set the current position, the 
  17060.  position is not saved, regardless of the attribute mode. 
  17061.  
  17062.  To select a current attribute mode, use GpiSetAttrMode. The current attribute 
  17063.  mode affects subsequent attribute-setting requests in the presentation space. 
  17064.  Attribute modes are not applicable to micro presentation spaces, because 
  17065.  graphics segments can be created only in normal presentation spaces. 
  17066.  
  17067.  To retrieve an attribute value from the LIFO stack, use GpiPop, which pulls 
  17068.  back the attribute that was stored most recently on the stack. You can 
  17069.  retrieve more than one attribute value by supplying a number as an input 
  17070.  parameter of this function. For example, if you specify 4, GpiPop retrieves 
  17071.  the four attributes that were most recently stored on the stack. If each of 
  17072.  the values retrieved applies the same type of attribute to the same primitive 
  17073.  (for example, if all four are line-type settings), the last one to be 
  17074.  retrieved (and, therefore, the first one on the stack) becomes the current 
  17075.  setting. 
  17076.  
  17077.  If you save attribute values from any segment called from another segment, and 
  17078.  do not retrieve the values using GpiPop, the values are restored automatically 
  17079.  when the end of the segment is reached. If you save attribute values from any 
  17080.  segment that is not called from another segment and do not explicitly restore 
  17081.  those values using GpiPop, they are lost at the end of the segment. 
  17082.  
  17083.  The AM_PRESERVE mode is useful when you do not want attributes in calling 
  17084.  segments to be overwritten by attributes specified in the called segments. 
  17085.  This overwriting happens because a calling segment and the segments it calls 
  17086.  are logically one object. Attribute changes within a called segment remain 
  17087.  current upon return to the calling segment. If you set some attribute values 
  17088.  at the start of a called segment, and the current attribute mode is 
  17089.  AM_PRESERVE, the attribute values of the calling segment are stored on the 
  17090.  LIFO stack. At the end of the called segment, the values on the stack are 
  17091.  retrieved automatically so that the calling segment continues with its own 
  17092.  attribute values. 
  17093.  
  17094.  
  17095. ΓòÉΓòÉΓòÉ 7.1.9. Reusing the Presentation Space ΓòÉΓòÉΓòÉ
  17096.  
  17097. A normal presentation space with segments retained in the segment store can be 
  17098. costly in terms of storage. Therefore, delete any presentation space that you 
  17099. no longer need, using GpiDestroyPS. If, for example, your application is using 
  17100. a series of presentation spaces, each with a different format, the creation and 
  17101. deletion activity also can be costly. The PM provides the following functions 
  17102. that let you reuse or redefine an existing presentation space so you can create 
  17103. a presentation space once and use it any number of times. 
  17104.  
  17105.      GpiSavePS 
  17106.      GpiRestorePS 
  17107.      GpiResetPS 
  17108.      GpiSetPS 
  17109.  
  17110.  
  17111.  GpiSavePS 
  17112.  
  17113.  GpiSavePS saves presentation space information (such as current primitive 
  17114.  attributes and the current position) on a dedicated LIFO stack. The 
  17115.  presentation space itself is unchanged; that is, it still exists, has the same 
  17116.  presentation space handle, and the presentation page dimensions and format are 
  17117.  the same. 
  17118.  
  17119.  Output from GpiSavePS is a number that identifies the saved information on the 
  17120.  LIFO stack. An output of 3, for example, tells you that this is the third lot 
  17121.  of presentation space data on the stack. 
  17122.  
  17123.  
  17124.  GpiRestorePS 
  17125.  
  17126.  GpiRestorePS retrieves the saved information from the LIFO stack and reapplies 
  17127.  it to the presentation space. Input to this function can be either the 
  17128.  identifier returned to you from GpiSavePS or a relative value. A relative 
  17129.  value of -1, for example, retrieves the information most recently stored on 
  17130.  the stack. You do not have to restore the information that was most recently 
  17131.  saved. However, any data that you skip over is discarded. 
  17132.  
  17133.  A LIFO Stack with Four Items 
  17134.  
  17135.  
  17136.  GpiResetPS 
  17137.  
  17138.  When a presentation space is first created, it is in a neutral state. Current 
  17139.  attributes are set to their initial default values. The current position is 
  17140.  (0,0). The segment store contains no segments, and there are no 
  17141.  application-defined resources, such as logical color tables. 
  17142.  
  17143.  You can return an existing presentation space to this state using GpiResetPS. 
  17144.  GpiResetPS has three levels of reset activity, each more powerful than the 
  17145.  last. These are: 
  17146.  
  17147.    1. GRES_ATTRS, which is equivalent to the processing done by 
  17148.       GpiCloseSegment. 
  17149.  
  17150.    2. GRES_SEGMENTS, which is equivalent to creating a new presentation space, 
  17151.       but without deleting any logical resources. All retained segments are 
  17152.       deleted from the segment store. 
  17153.  
  17154.    3. GRES_ALL, which is equivalent to creating a new presentation space. 
  17155.  
  17156.  GpiResetPS does not alter the size or format of the presentation page. 
  17157.  
  17158.  
  17159.  GpiSetPS 
  17160.  
  17161.  GpiSetPS redefines the size and format of the presentation page. The 
  17162.  processing performed when you call GpiSetPS is similar to that performed by 
  17163.  GpiCreatePS, except that the presentation space already exists. The 
  17164.  presentation space is returned to a neutral state (which is the equivalent of 
  17165.  requesting GRES_ALL using GpiResetPS), and the presentation page is redefined. 
  17166.  For example, you can change a presentation page defined in 0.01mm units to one 
  17167.  defined in pels. Essentially, this lets you work with a new presentation space 
  17168.  without having to delete one and create another. 
  17169.  
  17170.  You also can use GpiSetPS to change the current mapping mode of a presentation 
  17171.  space. To do this, use the PS_NORESET flag, which is the equivalent of 
  17172.  requesting GRES_SEGMENTS using GpiResetPS. This feature is particularly useful 
  17173.  if you are designing an application that deals with page layout and drafting, 
  17174.  or if you want the screen size to correspond to the page size for the printed 
  17175.  output. 
  17176.  
  17177.  
  17178. ΓòÉΓòÉΓòÉ 7.1.10. Nonretained Graphic Segments ΓòÉΓòÉΓòÉ
  17179.  
  17180. It is valid segment construction to create a segment bracket while the drawing 
  17181. mode is DM_DRAW. The GPI functions contained within the bracket are drawn 
  17182. immediately rather than being retained for future use. This type of segment is 
  17183. called a nonretained segment. 
  17184.  
  17185. Because the usual reason for constructing segments is to take advantage of 
  17186. retained graphics, nonretained segments might appear as a contradiction in 
  17187. terms at first. However, there are four particular advantages in their use: 
  17188.  
  17189.      If ATTR_FASTCHAIN is set to OFF, the GpiOpenSegment implicitly resets all 
  17190.       attributes to their defaults. 
  17191.  
  17192.      The GpiOpenSegment and GpiCloseSegment initialize and reset the viewing 
  17193.       transform matrix, just as they do for retained segments. 
  17194.  
  17195.      Nonretained segments can be recorded in a metafile, just as a retained 
  17196.       segment can. 
  17197.  
  17198.      A graphic in a nonretained segment, with a unique name, can be converted 
  17199.       easily to a retained graphic for future use. 
  17200.  
  17201.  
  17202. ΓòÉΓòÉΓòÉ 7.2. Using Segment Creating and Drawing Functions ΓòÉΓòÉΓòÉ
  17203.  
  17204. You can use retained-drawing and segment functions to: 
  17205.  
  17206.      Create a chained or called segment 
  17207.      Draw the picture associated with one or more segments 
  17208.  
  17209.  
  17210. ΓòÉΓòÉΓòÉ 7.2.1. Creating a Chained Segment ΓòÉΓòÉΓòÉ
  17211.  
  17212. To create a chained segment, you must: 
  17213.  
  17214.    1. Set the drawing mode to DM_RETAIN. 
  17215.  
  17216.    2. Check to see if the chained attribute is one of the initial segment 
  17217.       attributes using GpiQueryInitialSegmentAttrs. 
  17218.  
  17219.    3. Set the chained attribute, if necessary, with GpiSetInitialSegmentAttrs. 
  17220.  
  17221.    4. Open the segment using GpiOpenSegment. 
  17222.  
  17223.    5. Perform the necessary drawing operations. 
  17224.  
  17225.    6. Close the segment using GpiCloseSegment. 
  17226.  
  17227.  The following figure is an example of a segment containing a box primitive and 
  17228.  calling another segment using GpiCallSegmentMatrix. 
  17229.  
  17230.   Uses
  17231.     Os2Def,Os2Base,Os2PmApi;
  17232.  
  17233.   Procedure FncSEGS01;
  17234.   Var
  17235.     Ptl            : POINTL;
  17236.     Hps            : HPS;
  17237.     IdSegment      : LONG;
  17238.     IdNonChained   : LONG;
  17239.     CONST matlfTransform : MATRIXL = (fxM11:MAKEFIXED(2,0),fxM12:MAKEFIXED(0,0),
  17240.                                       lM13:0,fxM21:MAKEFIXED(0,0),
  17241.                                       fxM22:MAKEFIXED(1,0),lM23:0,lM31:0,lM32:0,
  17242.                                       lM33:1);
  17243.  
  17244.   Begin
  17245.     IdSegment    := 1;
  17246.     IdNonChained := 2;
  17247.  
  17248.     (************************************************************************)
  17249.     (* Turns chaining on. Adds the new segment to the segment chain.        *)
  17250.     (* Segment idNonChained is called, whether chained or not.              *)
  17251.     (************************************************************************)
  17252.  
  17253.     If (ATTR_OFF = GpiQueryInitialSegmentAttrs(hps, ATTR_CHAINED)
  17254.        GpiSetInitialSegmentAttrs(hps, ATTR_CHAINED, ATTR_ON);
  17255.     GpiOpenSegment(hps, idSegment);
  17256.     ptl.x := 150; ptl.y := 150;
  17257.     GpiMove(hps, ptl);
  17258.     ptl.x := 225; ptl.y := 225;
  17259.     GpiBox(hps, DRO_FILL, ptl, 0, 0);
  17260.     GpiCallSegmentMatrix(hps, idNonChained, 9, matlfTransform,
  17261.                          TRANSFORM_REPLACE);
  17262.     GpiCloseSegment(hps);
  17263.   End; (* fncSEGS01 *)
  17264.  
  17265.  
  17266. ΓòÉΓòÉΓòÉ 7.2.2. Creating a Called Segment ΓòÉΓòÉΓòÉ
  17267.  
  17268. To create a called segment, you must: 
  17269.  
  17270.    1. Set the drawing mode to DM_RETAIN. 
  17271.  
  17272.    2. Check to see whether the chained attribute is one of the initial segment 
  17273.       attributes using GpiQueryInitialSegmentAttrs. 
  17274.  
  17275.    3. Set the chained attribute, if necessary, with GpiSetInitialSegmentAttrs. 
  17276.  
  17277.    4. Open the segment using GpiOpenSegment. 
  17278.  
  17279.    5. Perform the necessary drawing operations. 
  17280.  
  17281.    6. Close the segment using GpiCloseSegment. 
  17282.  
  17283.  The following figure shows an example of how to draw a box in a called 
  17284.  segment. 
  17285.  
  17286.   Uses
  17287.     Os2Def,Os2Base,Os2PmApi;
  17288.  
  17289.   Procedure FncSEGS02;
  17290.   Var
  17291.     Ptl          : POINTL;
  17292.     Hps          : HPS;
  17293.     IdNonChained : LONG;
  17294.  
  17295.   Begin
  17296.     IdNonChained := 2;
  17297.  
  17298.     GpiSetDrawingMode(hps, DM_RETAIN);
  17299.  
  17300.     (* Creates a non-chained segment. *)
  17301.  
  17302.     If (ATTR_ON = GpiQueryInitialSegmentAttrs(hps, ATTR_CHAINED)) Then
  17303.       GpiSetInitialSegmentAttrs(hps, ATTR_CHAINED, ATTR_OFF);
  17304.     GpiOpenSegment(hps, idNonChained);
  17305.     ptl.x := 100;
  17306.     ptl.y := 100;
  17307.     GpiMove(hps, ptl);
  17308.     ptl.x := 200;
  17309.     ptl.y := 200;
  17310.     GpiLine(hps, ptl);
  17311.     GpiCloseSegment(hps);
  17312.   End; (* fncSEGS02 *)
  17313.  
  17314.  
  17315. ΓòÉΓòÉΓòÉ 7.2.3. Drawing a Segment Chain ΓòÉΓòÉΓòÉ
  17316.  
  17317. The following figure shows an example of how to draw a segment chain using 
  17318. GpiDrawChain. 
  17319.  
  17320. Uses
  17321.   Os2Def,Os2Base,Os2PmApi;
  17322.  
  17323. Procedure FncSEGS03(VOID);
  17324. Var
  17325.   Hps : HPS;
  17326.  
  17327. Begin
  17328.  
  17329.   If (DM_DRAW <> GpiQueryDrawingMode(hps)) Then
  17330.     GpiSetDrawingMode(hps, DM_DRAW);
  17331.   GpiDrawChain(hps);
  17332. End; (* fncSEGS03 *)
  17333.  
  17334.  
  17335. ΓòÉΓòÉΓòÉ 8. Character String Primitives ΓòÉΓòÉΓòÉ
  17336.  
  17337. Character string primitives are printed or displayed text limited to a length 
  17338. of 256 characters by the PM. 
  17339.  
  17340. The following topics are related to information in this chapter: 
  17341.  
  17342.      Presentation spaces and device contexts 
  17343.      Color and mix attributes 
  17344.      Fonts 
  17345.      Coordinate spaces and transformations 
  17346.  
  17347.  
  17348. ΓòÉΓòÉΓòÉ 8.1. About Character String Primitives ΓòÉΓòÉΓòÉ
  17349.  
  17350. A PM application must make certain choices about fonts in preparation for text 
  17351. display or printing. Often these choices are driven by selections from a user. 
  17352. After the selections are made, as discussed in Fonts, the application can make 
  17353. additional decisions about the appearance of the individual characters within 
  17354. the font by setting attributes in the CHARBUNDLE data structure. CHARBUNDLE is 
  17355. the lowest of three levels of data structures that define the appearance of 
  17356. displayed or printed text. The other two, FONTMETRICS and FATTRS, are described 
  17357. in Fonts. 
  17358.  
  17359. A font family-for instance, Helvetica** or Courier-is a collection of fonts. 
  17360. Fonts within the same family share certain attributes such as stroke width and 
  17361. serif characteristics. Stroke width refers to the width of lines used to draw 
  17362. characters and symbols from a font. A serif is a short crossline drawn at the 
  17363. ends of the main strokes that form a character or symbol. 
  17364.  
  17365. Individual fonts within a family differ from each other in the following ways: 
  17366.  
  17367.      Height 
  17368.      Line weight 
  17369.      Appearance 
  17370.  
  17371.  Height refers to the point size of a font. A common example of line weight is 
  17372.  boldface. A common example of appearance is italic. 
  17373.  
  17374.  The most important factor that affects the CHARBUNDLE attributes is whether 
  17375.  the current font is an image or an outline font. The following figure shows an 
  17376.  example of the difference. 
  17377.  
  17378.  Image and Outline Fonts 
  17379.  
  17380.  Outline fonts are composed of characters drawn with straight and curved lines. 
  17381.  Image fonts, also called bit map fonts, are composed of pels arranged in 
  17382.  certain shapes. 
  17383.  
  17384.  
  17385. ΓòÉΓòÉΓòÉ 8.1.1. Attributes of Character String Primitives ΓòÉΓòÉΓòÉ
  17386.  
  17387. Attributes of the character string primitives contained in CHARBUNDLE are as 
  17388. follows: 
  17389.  
  17390.      Character set 
  17391.      Character mode 
  17392.      Character cell 
  17393.      Character angle 
  17394.      Character shear 
  17395.      Character direction 
  17396.      Character text alignment 
  17397.      Character extra 
  17398.      Character break extra 
  17399.      Foreground color 
  17400.      Background color 
  17401.      Foreground mix 
  17402.      Background mix 
  17403.  
  17404.  When an application creates a presentation space, the character string 
  17405.  attributes are set to the default values shown in the following table. 
  17406.  
  17407.  Character String Attribute Default Values 
  17408.  
  17409.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17410.   ΓöéAttribute   ΓöéDefault Value           ΓöéFunction that Redefines Attribute Γöé
  17411.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17412.   ΓöéSet         ΓöéLCID_DEFAULT            ΓöéGpiSetCharSet                     Γöé
  17413.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17414.   ΓöéMode        ΓöéCM_MODE1                ΓöéGpiSetCharMode                    Γöé
  17415.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17416.   ΓöéCell        ΓöéOutline font - Defined  ΓöéGpiSetCharBox                     Γöé
  17417.   Γöé            Γöéby device               Γöé                                  Γöé
  17418.   Γöé            ΓöéImage font - Defined by Γöé                                  Γöé
  17419.   Γöé            Γöéfont                    Γöé                                  Γöé
  17420.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17421.   ΓöéAngle       Γöé(1,0)                   ΓöéGpiSetCharAngle                   Γöé
  17422.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17423.   ΓöéShear       Γöé(0,1)                   ΓöéGpiSetCharShear                   Γöé
  17424.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17425.   ΓöéDirection   ΓöéLeft to right           ΓöéGpiSetCharDirection               Γöé
  17426.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17427.   ΓöéText        ΓöéLeft                    ΓöéGpiSetTextAlignment               Γöé
  17428.   Γöéalignment   Γöé                        Γöé                                  Γöé
  17429.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17430.   ΓöéExtra       Γöé0                       ΓöéGpiSetCharExtra                   Γöé
  17431.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17432.   ΓöéBreak extra Γöé0                       ΓöéGpiSetCharBreakExtra              Γöé
  17433.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17434.   ΓöéForeground  ΓöéBlack                   ΓöéGpiSetAttrs(CBB_COLOR)            Γöé
  17435.   Γöécolor       Γöé                        Γöé                                  Γöé
  17436.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17437.   ΓöéBackground  ΓöéClear                   ΓöéGpiSetAttrs(CBB_BACK_COLOR)       Γöé
  17438.   Γöécolor       Γöé                        Γöé                                  Γöé
  17439.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17440.   ΓöéForeground  ΓöéOverpaint               ΓöéGpiSetAttrs(CBB_MIX_MODE)         Γöé
  17441.   Γöémix         Γöé                        Γöé                                  Γöé
  17442.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17443.   ΓöéBackground  ΓöéLeave alone             ΓöéGpiSetAttrs(CBB_BACK_MIX_MODE)    Γöé
  17444.   Γöémix         Γöé                        Γöé                                  Γöé
  17445.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17446.  
  17447.  Current character attributes take effect when you send graphics characters to 
  17448.  an output device. They have no effect at the time you define a logical font. 
  17449.  
  17450.  
  17451.  Character Set 
  17452.  
  17453.  Character set defines the local identifier, lcid, of the current font. The 
  17454.  font lcid is set using GpiSetCharSet. GpiCreateLogFont associates the font 
  17455.  with an lcid. 
  17456.  
  17457.  The value of the current lcid is determined using GpiQueryCharSet. 
  17458.  
  17459.  
  17460.  Character Mode 
  17461.  
  17462.  Every presentation space has a current character mode, which determines the 
  17463.  extent to which a font can be affected by the attributes defined in 
  17464.  CHARBUNDLE. The mode affects compatibility issues that are invisible to both 
  17465.  the user and the programmer. The following table describes the character modes 
  17466.  and their influences on the current font. 
  17467.  
  17468.  An application selects a character mode using GpiSetCharMode. When a mode is 
  17469.  selected, it applies to any font (including the system font) used while the 
  17470.  mode is current. The character mode takes effect when you draw character 
  17471.  strings; it has no effect at the time you define a logical font. 
  17472.  
  17473.  Character Mode Effects on Character Attributes 
  17474.  
  17475.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17476.   ΓöéCharacter ΓöéIf Image Font...            ΓöéIf Outline Font...    Γöé
  17477.   ΓöéMode      Γöé                            Γöé                      Γöé
  17478.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17479.   ΓöéCM_MODE1  ΓöéIgnores all current         ΓöéAffected by all       Γöé
  17480.   Γöé          Γöécharacter attributes, exceptΓöécurrent character     Γöé
  17481.   Γöé          Γöécharacter direction.        Γöéattributes.           Γöé
  17482.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17483.   ΓöéCM_MODE2  ΓöéUses the character shear,   ΓöéAffected by all       Γöé
  17484.   Γöé          Γöébox, angle, and direction   Γöécurrent character     Γöé
  17485.   Γöé          Γöéattributes to position the  Γöéattributes.           Γöé
  17486.   Γöé          Γöécharacter cell, but the     Γöé                      Γöé
  17487.   Γöé          Γöécharacters themselves are   Γöé                      Γöé
  17488.   Γöé          Γöénot sheared, rotated,       Γöé                      Γöé
  17489.   Γöé          Γöéscaled, or reversed.        Γöé                      Γöé
  17490.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17491.   ΓöéCM_MODE3  ΓöéRaises an error if you try  ΓöéAffected by all       Γöé
  17492.   Γöé          Γöéto draw a character string. Γöécurrent character     Γöé
  17493.   Γöé          ΓöéNote:  Any font used when   Γöéattributes.           Γöé
  17494.   Γöé          Γöéthe current character mode  Γöé                      Γöé
  17495.   Γöé          Γöéis CM_MODE3 must be an      Γöé                      Γöé
  17496.   Γöé          Γöéoutline font.               Γöé                      Γöé
  17497.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17498.  
  17499.  The default character mode (CM_DEFAULT) is identical to CM_MODE1. 
  17500.  Character Cell 
  17501.  
  17502.  A character cell is an imaginary rectangular boundary that defines the 
  17503.  horizontal and vertical space occupied by a single character from an outline 
  17504.  character set. 
  17505.  
  17506.  The PM calculates character cell width and height from the point size. The 
  17507.  width value for the character cell is the nominal width of the lowercase 
  17508.  characters in the character set. In a monospace font, the width of all 
  17509.  character cells is identical. In a proportional font, the width of the 
  17510.  character cells depends on the character. 
  17511.  
  17512.  In an image font, the height of the character cell is the number of pels in 
  17513.  the font. In an outline font, the height of the character cell is the point 
  17514.  size of the font. 
  17515.  
  17516.  The characters in a character string are positioned one character per cell. 
  17517.  The spacing between adjacent characters in a string is affected by the 
  17518.  character cell attribute, except for image characters in CM_MODE1. 
  17519.  
  17520.  Cell width determines the spacing of consecutive characters along the 
  17521.  baseline, as illustrated in the following figure. 
  17522.  
  17523.  Character Cell Measurements 
  17524.  
  17525.  Current cell size is specified using GpiSetCharBox. As input, this function 
  17526.  accepts the desired height and width of the character cell in world 
  17527.  coordinates. These values are related to certain dimensions in the FONTMETRICS 
  17528.  structure that controls font attributes. Heights or widths of 0 are valid 
  17529.  input and cause the outline character to be drawn as a point or straight line. 
  17530.  Heights or widths of negative values cause certain special effects, for 
  17531.  example, reversed lettering. 
  17532.  
  17533.  The character cell value affects both the size and position of characters 
  17534.  drawn from an outline font, regardless of the current character mode. Each 
  17535.  character is scaled up or down to fit the cell size, as shown in the following 
  17536.  figure. 
  17537.  
  17538.  Effect of the Character Cell on an Outline Font 
  17539.  
  17540.  The character cell value is ignored if the current font is an image font and 
  17541.  the current character mode is CM_MODE1, as shown in the following figure. 
  17542.  
  17543.  Note:  It is essential to code the character cell correctly, even if you 
  17544.  anticipate using image fonts. In case of a font match failure, an outline font 
  17545.  can be substituted for a image font. 
  17546.  
  17547.  Effect of the Character Cell on an Image Font in CM_MODE1 
  17548.  
  17549.  Although the character cell has been both increased and decreased, the 
  17550.  character string is unaltered. 
  17551.  
  17552.  The character cell value controls the positioning of image-font characters 
  17553.  when the current character mode is CM_MODE2; but it cannot cause the 
  17554.  characters to be scaled to fit the cell. This effect is shown in the following 
  17555.  figure. 
  17556.  
  17557.  Effect of the Character Cell on an Image Font in CM_MODE2 
  17558.  
  17559.  If you increase the character cell size for an image font in CM_MODE2, the 
  17560.  characters are more widely spaced, but their size is not changed. If you 
  17561.  decrease character cell size, the space between the characters is reduced, and 
  17562.  because the characters themselves cannot be scaled, they can overlap. 
  17563.  
  17564.  
  17565.  Default Character Cell 
  17566.  
  17567.  The default character-cell size is a device-dependent value. You do not need 
  17568.  to know this value unless you want to switch back to the initial default value 
  17569.  after having specified another value. It is recommended that you save initial 
  17570.  default values using GpiSavePS. 
  17571.  
  17572.  The default character cell, like other default attributes, can be set using 
  17573.  GpiSetDefAttrs(CBB_BOX). If necessary, you can query the current default value 
  17574.  using GpiQueryDefAttrs. 
  17575.  Coding a Character Cell 
  17576.  
  17577.  The dimensions that an application passes to GpiSetCharBox and that 
  17578.  GpiQueryCharBox returns are fixed-point values. A fixed value is a 32-bit 
  17579.  value whose high-order 16 bits contain the integral part of the floating-point 
  17580.  number and whose low-order 16 bits contain the fractional part. The fractional 
  17581.  part is the numerator of a fraction whose denominator is fixed at 65536. The 
  17582.  MAKEFIXED macro provides a method for producing fixed values. If, for example, 
  17583.  one of the character cell dimensions were 7.635 world units, an application 
  17584.  could obtain the corresponding fixed value by using the MAKEFIXED macro, 
  17585.  passing 7 as the first argument and 41615 as the second. 
  17586.  
  17587.  The purpose of the character cell is to assist other font metrics to define 
  17588.  text lines. For example, if you planned to have an average text line of 60 
  17589.  characters, dividing your output width by 60 would provide your character cell 
  17590.  width. 
  17591.  
  17592.  DevQueryCaps can be used to provide information about suitable character cell 
  17593.  values. DevQueryCaps returns two sets of values that can influence the 
  17594.  character cell: 
  17595.  
  17596.      Default cell values 
  17597.         -  CAPS_GRAPHICS_CHAR_WIDTH 
  17598.         -  CAPS_GRAPHICS_CHAR_HEIGHT. 
  17599.      Device resolution 
  17600.         -  CAPS_HORIZONTAL_FONT_RES 
  17601.         -  CAPS_VERTICAL_FONT_RES. 
  17602.  
  17603.  The default cell values return the size of the default character cell in pels. 
  17604.  Convert the device resolution into character cell values by multiplying it by 
  17605.  the desired point size, then dividing by 72 (72.2818). 
  17606.  
  17607.  
  17608.  Character Angle 
  17609.  
  17610.  The character angle is defined by the x-axis and a vector drawn through the 
  17611.  origin to a specified point in a Cartesian coordinate system. Neither (0,0) 
  17612.  nor the specified point need have any relation to the current position. The 
  17613.  operating system then aligns the baseline with this vector. 
  17614.  
  17615.  An application can retrieve the point that defines the character angle vector 
  17616.  using GpiQueryCharAngle. An application can set the character angle using 
  17617.  GpiSetCharAngle. This function accepts as input the x- and y-coordinates of a 
  17618.  point that defines the new vector. When you specify an angle, it becomes the 
  17619.  current setting. To reset the character angle vector to its default value 
  17620.  (parallel to the x-axis), call GpiSetCharAngle with both x and y equal to 0. 
  17621.  
  17622.  The effects of the current character angle vary depending on the current 
  17623.  character mode and the current font type. When the current font is an outline 
  17624.  font, the current character angle determines the angle of both the whole 
  17625.  string and the individual characters in the string, regardless of the current 
  17626.  character mode. The baseline of each character cell is drawn parallel to the 
  17627.  new baseline, as shown in the following figure. 
  17628.  
  17629.  Effect of the Character Angle on an Outline Font 
  17630.  
  17631.  The character string is drawn parallel to the vector drawn from the origin to 
  17632.  (10,7). The baseline of each of the character cells also is drawn parallel to 
  17633.  this vector. 
  17634.  
  17635.  The character angle value is ignored if the current font is an image font and 
  17636.  the current character mode is CM_MODE1, as shown in the following figure. 
  17637.  
  17638.  Effect of the Character Angle on an Image Font in CM_MODE1 
  17639.  
  17640.  The angle of the character string is unaltered by GpiSetCharAngle. 
  17641.  
  17642.  When the current font is an image font and the current character mode is 
  17643.  CM_MODE2, the current character angle determines the angle of the whole string 
  17644.  but does not affect the individual characters in the string. The character 
  17645.  reference point, which is the point at which the character baseline intersects 
  17646.  the left edge of the character cell, is placed on a line parallel to the new 
  17647.  baseline. The baseline of each character cell remains parallel to the x-axis, 
  17648.  as shown in the following figure. 
  17649.  
  17650.  Effect of the Character Angle on an Image Font in CM_MODE2 
  17651.  
  17652.  The character string is drawn parallel to the vector from (0,0) to (10,7). 
  17653.  
  17654.  Each of the characters in the string in the previous figure is drawn with the 
  17655.  vertical sides of its character cell parallel to the y-axis, and with the 
  17656.  horizontal sides of its character box parallel to the x-axis. 
  17657.  
  17658.  
  17659.  Character Shear 
  17660.  
  17661.  Character shear is the angle defined by the x-axis and a vector drawn through 
  17662.  the origin to a specified point in a Cartesian coordinate system. Neither 
  17663.  (0,0) nor the specified point need have any relation to the current position. 
  17664.  The operating system then aligns the vertical sides of the character cell. If 
  17665.  the font is an outline font, the operating system also aligns the vertical 
  17666.  strokes of the characters with the vector, regardless of the current character 
  17667.  mode, as shown in the following figure. 
  17668.  
  17669.  An application can retrieve the point that defines the character shear vector 
  17670.  using GpiQueryCharShear. An application can set the character shear using 
  17671.  GpiSetCharShear, which accepts as input the x- and y-coordinates of a point 
  17672.  that defines the new vector in a POINTL structure. 
  17673.  
  17674.  The shear of a character is the angle formed by the vertical lines of the 
  17675.  character cell, and it can affect both the positioning and shape of characters 
  17676.  in the character string. By default, the vertical lines of a character cell 
  17677.  are parallel to the y-axis of the presentation page. As input to 
  17678.  GpiSetCharShear supply the coordinates of the end point of a vector drawn from 
  17679.  the origin (0,0). The effects of the current character shear value vary, 
  17680.  depending on the current character mode and font type. 
  17681.  
  17682.  Effect of Character Shear on an Outline Font 
  17683.  
  17684.  The character cell is drawn with its vertical lines parallel to the vector 
  17685.  from the origin to (5,6). The character is sheared to the same degree. 
  17686.  
  17687.  The character-shear value is ignored if the current font is an image font and 
  17688.  the current character mode is CM_MODE1, as shown in the following figure. 
  17689.  
  17690.  Effect of Character Shear on an Image Font in CM_MODE1 
  17691.  
  17692.  The character string is unaffected by the character-shear value. 
  17693.  
  17694.  The character-shear value affects the positioning of the characters from an 
  17695.  image font in CM_MODE2 only if character direction is CHDIRN_TOPBOTTOM or 
  17696.  CHDIRN_BOTTOMTOP. That is, characters drawn vertically do not appear in a 
  17697.  vertical line for nonzero shear angle from the vertical. The characters 
  17698.  themselves cannot be sheared, as shown in the following figure. 
  17699.  
  17700.  Effect of Character Shear on an Image Font in CM_MODE2 
  17701.  
  17702.  The character cell is sheared, and it controls the positioning of the 
  17703.  characters; the characters themselves are unchanged. 
  17704.  
  17705.  If the x- and y-coordinate values you specify in GpiSetCharShear are both 
  17706.  positive and negative, the characters slant from lower left to upper right. If 
  17707.  you supply one negative and one positive value, the characters slant from 
  17708.  upper left to lower right, as illustrated in the following figure. 
  17709.  
  17710.  Effect of X- and Y-Values on Character Shear 
  17711.  
  17712.  Character shear, like other attributes, has a default value that can be 
  17713.  changed using GpiSetDefAttrs (CBB_SHEAR). To reset the character shear to its 
  17714.  default effect of drawing the vertical lines of the character cell parallel to 
  17715.  the y-axis, supply a coordinate value of (0,1) on GpiSetCharShear. 
  17716.  
  17717.  
  17718.  Character Direction 
  17719.  
  17720.  Character direction is the direction in which the characters in a string are 
  17721.  drawn in relation to the baseline. By default, the characters are drawn from 
  17722.  left to right. An application can change the direction using 
  17723.  GpiSetCharDirection. GpiSetCharDirection accepts as input one of the four 
  17724.  values illustrated in the following figure. The value CHDIRN_DEFAULT is 
  17725.  identical to CHDIRN_LEFTRIGHT. 
  17726.  
  17727.  
  17728.   ΓöîΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÉ            ΓöîΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÉ
  17729.   Γöé A Γöé B Γöé C Γöé            Γöé C Γöé B Γöé A Γöé
  17730.   ΓööΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÿ            ΓööΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÿ
  17731.                                     
  17732.   start       end          end         start
  17733.  
  17734.   CHDIRN_LEFTRIGHT         CHDIRN_RIGHTLEFT
  17735.  
  17736.  
  17737.   start                    end
  17738.                             
  17739.   ΓöîΓöÇΓöÇΓöÇΓöÉ                    ΓöîΓöÇΓöÇΓöÇΓöÉ
  17740.   Γöé A Γöé                    Γöé C Γöé
  17741.   Γö£ΓöÇΓöÇΓöÇΓöñ                    Γö£ΓöÇΓöÇΓöÇΓöñ
  17742.   Γöé B Γöé                    Γöé B Γöé
  17743.   Γö£ΓöÇΓöÇΓöÇΓöñ                    Γö£ΓöÇΓöÇΓöÇΓöñ
  17744.   Γöé C Γöé                    Γöé A Γöé
  17745.   ΓööΓöÇΓöÇΓöÇΓöÿ                    ΓööΓöÇΓöÇΓöÇΓöÿ
  17746.                             
  17747.   end                      start
  17748.  
  17749.   CHDIRN_TOPBOTTOM         CHDIRN_BOTTOMTOP
  17750.  
  17751.  An application can determine the current character direction using 
  17752.  GpiQueryCharDirection. 
  17753.  
  17754.  
  17755.  Character Text Alignment 
  17756.  
  17757.  Character text alignment is the attribute that describes how the character 
  17758.  strings are drawn with respect to the boundary of the output, either the 
  17759.  current position or the starting position of the string, if a 
  17760.  GpiCharString...At function draws the string. The alignment is set using 
  17761.  GpiSetTextAlignment, which accepts as input a long value for horizontal and 
  17762.  vertical alignment. 
  17763.  
  17764.  The acceptable values for GpiSetTextAlignment depend on the direction of the 
  17765.  current coordinate system, as follows: 
  17766.  
  17767.  Value          Corresponds to the direction of... 
  17768.  
  17769.  Left           The lowest x-coordinate value 
  17770.  
  17771.  Right          The highest x-coordinate value 
  17772.  
  17773.  Top            The highest y-coordinate value 
  17774.  
  17775.  Bottom         The lowest y-coordinate value 
  17776.  
  17777.  Internally, the PM determines a reference point within a character string that 
  17778.  is to be positioned over the starting point specified for the string. 
  17779.  
  17780.  If an application draws the string with either GpiCharString or 
  17781.  GpiCharStringPos, the starting point specified for the string is the current 
  17782.  position. If the application draws the string with either GpiCharStringAt or 
  17783.  GpiCharStringPosAt, the starting point specified for the string is accepted as 
  17784.  input by the function. 
  17785.  Horizontal Alignment of a Character String 
  17786.  
  17787.  When a horizontal character string does not fill the width of the output area, 
  17788.  it can be positioned in one of the three ways shown in the following figure. 
  17789.  All of these options can be set directly with the lHorizontal option of 
  17790.  GpiSetTextAlignment. 
  17791.  
  17792.  Horizontal Positioning of Text Strings 
  17793.  
  17794.  Text justification requires an application to perform both queries and 
  17795.  coordinate calculations. The following flags are used to specify types of 
  17796.  horizontal alignment: 
  17797.  
  17798.  Horizontal Alignment Values 
  17799.  
  17800.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17801.   ΓöéIdentifier              ΓöéAlignment                           Γöé
  17802.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17803.   ΓöéTA_LEFT                 ΓöéOn the left edge of the leftmost    Γöé
  17804.   Γöé                        Γöécharacter in the string             Γöé
  17805.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17806.   ΓöéTA_RIGHT                ΓöéOn the right edge of the rightmost  Γöé
  17807.   Γöé                        Γöécharacter in the string             Γöé
  17808.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17809.   ΓöéTA_CENTER               ΓöéOn the arithmetic mean of the       Γöé
  17810.   Γöé                        Γöéleftmost and rightmost characters inΓöé
  17811.   Γöé                        Γöéthe string                          Γöé
  17812.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17813.  
  17814.  There are two sets of default values for the lHorizontal option. They are 
  17815.  provided for compatibility and map into the horizontal alignment values 
  17816.  described above. 
  17817.  
  17818.  GpiQueryGraphicsField, GpiQueryPageViewport, and GpiQueryViewingLimits all 
  17819.  provide methods of determining the width of the output area so your 
  17820.  application can specify coordinates properly for the current position. 
  17821.  
  17822.  
  17823.  Vertical Alignment of a Character String 
  17824.  
  17825.  When a character string is to be displayed vertically, it can be positioned in 
  17826.  one of the four ways illustrated in the following figure. The vertical options 
  17827.  all can be set directly using the lVertical option of GpiSetTextAlignment. 
  17828.  
  17829.  Vertical Positioning of Text Strings 
  17830.  
  17831.  The following flags are used to specify types of vertical alignment: 
  17832.  
  17833.  Vertical Alignment Values 
  17834.  
  17835.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17836.   ΓöéIdentifier              ΓöéAlignment                           Γöé
  17837.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17838.   ΓöéTA_TOP                  ΓöéOn the top edge of the topmost      Γöé
  17839.   Γöé                        Γöécharacter in the string             Γöé
  17840.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17841.   ΓöéTA_HALF                 ΓöéOn the arithmetic mean of the       Γöé
  17842.   Γöé                        Γöétopmost and bottommost characters inΓöé
  17843.   Γöé                        Γöéthe string                          Γöé
  17844.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17845.   ΓöéTA_BASE                 ΓöéOn the baseline of the bottommost   Γöé
  17846.   Γöé                        Γöécharacter in the string             Γöé
  17847.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17848.   ΓöéTA_BOTTOM               ΓöéOn the bottom edge of the bottommostΓöé
  17849.   Γöé                        Γöécharacter in the string             Γöé
  17850.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17851.  
  17852.  There are two sets of default values for the lVertical option. They are 
  17853.  provided for compatibility and map into the vertical alignment values 
  17854.  described above. 
  17855.  
  17856.  
  17857.  Character Extra and Break Extra 
  17858.  
  17859.  Certain output devices permit you to specify extra space between character 
  17860.  cells by using the character extra attribute. Sometimes the space between 
  17861.  words can also be expanded by increasing the size of the break character, 
  17862.  usually defined as the space character, by using the break extra attribute. If 
  17863.  this adjustment to either attribute is permitted, the result will be in 
  17864.  addition to the sizing effects caused by the following parameters: 
  17865.  
  17866.      Font kerning 
  17867.      Font proportional spacing 
  17868.      Width vectors 
  17869.  
  17870.  The break values you can specify create different effects, as follows: 
  17871.  
  17872.  Break Values and Their Effects 
  17873.  
  17874.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17875.   ΓöéValue               ΓöéEffect                                  Γöé
  17876.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17877.   ΓöéPositive            ΓöéForces characters apart.                Γöé
  17878.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17879.   Γöé0                   ΓöéResumes the default spacing created by  Γöé
  17880.   Γöé                    Γöéother parameters.                       Γöé
  17881.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17882.   ΓöéNegative            ΓöéForces characters together, even        Γöé
  17883.   Γöé                    Γöéoverlapped characters.                  Γöé
  17884.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17885.  
  17886.  These effects are illustrated in the following figure. 
  17887.  
  17888.  The Cumulative Effect of Break Values 
  17889.  
  17890.  The above are fixed integer values specified in world coordinates. Both the 
  17891.  character extra and break extra attributes have initial default values of 0, 
  17892.  which can be changed using GpiSetDefAttrs (CBB_EXTRA) and (CBB_BREAK_EXTRA). 
  17893.  These values can be changed using GpiSetCharExtra or GpiSetCharBreakExtra 
  17894.  respectively, and the values can be queried using GpiQueryCharExtra and 
  17895.  GpiQueryCharBreakExtra. 
  17896.  Character Color and Mix 
  17897.  
  17898.  The color attribute defines the color used to draw a primitive or an object. 
  17899.  The mix attribute determines how the color of a primitive or an object is 
  17900.  combined with the color of the drawing surface or any other objects on the 
  17901.  surface. 
  17902.  
  17903.  The character-string color defines the color used to draw the output from any 
  17904.  of the draw-character-string functions. When a presentation space is created, 
  17905.  the character-string color default is black. Character strings are one of the 
  17906.  primitives that have both a foreground and a background color, as shown in the 
  17907.  following figure. 
  17908.  
  17909.  For image characters, colors are determined by setting pels. For outline 
  17910.  characters, the foreground consists of arcs and lines that define the 
  17911.  character; the background color appears between the foreground lines. The 
  17912.  character can be solid or filled, in which cases the background color does not 
  17913.  appear between the foreground lines. 
  17914.  
  17915.  Character string primitives have a color attribute for both the actual 
  17916.  character and its character cell, which surrounds the character. The 
  17917.  character-cell color is the background color. 
  17918.  
  17919.  The foreground mix attribute controls the combination of character-string 
  17920.  color and drawing-surface color, while the background mix attribute controls 
  17921.  the combination of the character-cell color and the drawing-surface color, as 
  17922.  illustrated in the following figure. 
  17923.  
  17924.  Character String Primitives 
  17925.  
  17926.  When a presentation space is created, the character string mix attribute 
  17927.  default is FM_OVERPAINT. The overpaint mix attribute specifies that the 
  17928.  character-string color is not to be modified by the color of the drawing 
  17929.  surface. If the character string mix attribute is changed, the 
  17930.  character-string color is mixed with colors that are already on the drawing 
  17931.  surface. 
  17932.  
  17933.  The character string background color default is CLR_BACKGROUND, usually 
  17934.  defined by the application as the same color as the drawing surface. The 
  17935.  character string background mix attribute default is BM_LEAVEALONE. The 
  17936.  leave-alone background mix attribute specifies that the character string 
  17937.  background color not be drawn. The cell that surrounds the character string 
  17938.  appears only if the background character-string color and mix attributes are 
  17939.  changed. 
  17940.  
  17941.  Use GpiSetAttrs to specify a new color or mix attribute. As input, this 
  17942.  function accepts the following: 
  17943.  
  17944.      Type of primitive, for example, PRIM_CHAR 
  17945.      List of attributes to be changed 
  17946.      List of attributes to be set to their default values 
  17947.      Values for the attributes to be changed 
  17948.  
  17949.  GpiSetAttrs also is useful to specify color and mix attributes for a specific 
  17950.  data structure -for example, CHARBUNDLE. GpiSetAttrs provides some protection 
  17951.  against invalid colors. 
  17952.  
  17953.  To determine the current character-string color and mix attributes, call 
  17954.  GpiQueryAttrs, which accepts as input the primitive type and the attributes in 
  17955.  question. GpiQueryAttrs returns an array of values for the queried attributes. 
  17956.  
  17957.  To reset the default character-string color and mix attributes, as with all 
  17958.  attributes specified in CHARBUNDLE, call GpiSetDefAttrs, which accepts as 
  17959.  input the type of primitive, attributes to be changed, and values that will 
  17960.  become the new default values. Changing default values is especially important 
  17961.  when working with segments. Changing the default values during a series of 
  17962.  drawing functions is not recommended. 
  17963.  
  17964.  The character color and mix attributes also can be specified using the 
  17965.  following functions: 
  17966.  
  17967.      GpiSetColor 
  17968.      GpiSetMix 
  17969.      GpiSetBackColor 
  17970.      GpiSetBackMix 
  17971.  
  17972.  If the character color, character background color, mix, or background mix 
  17973.  attributes are specified individually, the following queries can return a 
  17974.  value inconsistent with the current character attributes: 
  17975.  
  17976.      GpiQueryColor 
  17977.      GpiQueryMix 
  17978.      GpiQueryBackColor 
  17979.      GpiQueryBackMix 
  17980.  
  17981.  
  17982. ΓòÉΓòÉΓòÉ 8.2. Using Character String Primitives ΓòÉΓòÉΓòÉ
  17983.  
  17984. You can use the character string primitive functions to perform the following 
  17985. tasks: 
  17986.  
  17987.      Draw a string of characters using the selected font. 
  17988.  
  17989.      Modify the string by using one or more of the following operations: 
  17990.  
  17991.            Scaling 
  17992.            Shearing 
  17993.            Rotating 
  17994.            Transforming 
  17995.            Changing the angle of the baseline 
  17996.  
  17997.      Aligning text 
  17998.  
  17999.  
  18000. ΓòÉΓòÉΓòÉ 8.2.1. Drawing Text ΓòÉΓòÉΓòÉ
  18001.  
  18002. The following figure shows how to select a Helvetica outline font, set the size 
  18003. of the character box, change the foreground color to red, set the character 
  18004. angle, and move the cursor to a specified location. Then, GpiCharString is used 
  18005. to write a string of characters with the specified size, color, angle, and 
  18006. location. 
  18007.  
  18008. Uses
  18009.   Os2Def,Os2Base,Os2PmApi;
  18010.  
  18011. Procedure FNCFONT09;
  18012. Var
  18013.  
  18014.   CONST ptl             : POINTL = (x:100, y:50);
  18015.   CONST grad            : GRADIENTL = (x:4, y:1);
  18016.   Ptl                   : POINTL;
  18017.   Grad                  : GRADIENTL;
  18018.   Sizfx                 : SIZEF;
  18019.   Fat                   : FATTRS;
  18020.   Cbnd                  : CHARBUNDLE;
  18021.   Afm   : Array[0..79] of FONTMETRICS;
  18022.   Hps                   : HPS;
  18023.   Hdc                   : HDC;
  18024.   CHelvFonts, i         : LONG;
  18025.   CFonts                : LONG;
  18026.   Lcid                  : LONG;
  18027.   DevRes : Array[0..1] of LONG;        (* Horizontal, vertical font resolutions *)
  18028.  
  18029. Begin
  18030.   CFonts := 0;
  18031.   Lcid   := 1;
  18032.  
  18033.   cHelvFonts := GpiQueryFonts(hps, QF_PUBLIC, 'Helv',
  18034.       cFonts, sizeof(FONTMETRICS), nil);
  18035.  
  18036.   GpiQueryFonts(hps, QF_PUBLIC, 'Helv', cHelvFonts,
  18037.       sizeof(FONTMETRICS), afm);
  18038.                                 (* Find an outline Helvetica font.       *)
  18039.  
  18040.   i :=0;
  18041.   While (NOT (afm[i].fsDefn AND FM_DEFN_OUTLINE)) AND i < cHelvFonts Do
  18042.     Inc(i);
  18043.  
  18044.   fat.usRecordLength := sizeof(FATTRS);
  18045.   fat.fsSelection := 0;
  18046.   fat.lMatch := afm[i].lMatch;
  18047.   StringCopy(fat.szFacename, afm[i].szFacename);
  18048.   fat.idRegistry := 0;
  18049.   fat.usCodePage := 0;
  18050.   fat.lMaxBaselineExt := 0;
  18051.   fat.lAveCharWidth := 0;
  18052.   fat.fsType := 0;
  18053.   fat.fsFontUse := FATTR_FONTUSE_OUTLINE;
  18054.  
  18055.   GpiCreateLogFont(hps, (PSTR8) nil, lcid, fat);
  18056.   GpiSetCharSet(hps, lcid);
  18057.  
  18058.   DevQueryCaps(hdc, CAPS_HORIZONTAL_FONT_RES, 2, devRes);
  18059.   sizfx.cx := MAKEFIXED((afm[i].sNominalPointSize * devRes[0])/ 720, 0);
  18060.   sizfx.cy := MAKEFIXED((afm[i].sNominalPointSize * devRes[1])/ 720, 0);
  18061.   GpiSetCharBox(hps, sizfx);
  18062.  
  18063.   cbnd.lColor := CLR_RED;
  18064.   GpiSetAttrs(hps, PRIM_CHAR, CBB_COLOR, NULLHANDLE, cbnd);
  18065.   GpiSetCharAngle(hps, grad);
  18066.   GpiMove(hps, ptl);
  18067.   GpiCharString(hps, 11, 'Vector Text');
  18068. End; (* fncFONT09 *)
  18069.  
  18070. Certain parameters in the above example are explained in Fonts. 
  18071.  
  18072.  
  18073. ΓòÉΓòÉΓòÉ 8.2.2. Formatting Text ΓòÉΓòÉΓòÉ
  18074.  
  18075. Graphics text, like all other graphics objects, has to be positioned correctly 
  18076. in the output area, which usually consists of one of the following: 
  18077.  
  18078.      Entire client area of a PM window 
  18079.      Part of a PM window 
  18080.      Addressable area of a printer 
  18081.  
  18082.  Unlike other graphics objects, however, text is governed by well-established 
  18083.  readability and usability rules. These rules apply generally to text output, 
  18084.  whatever its method of production. Following are some recommendations: 
  18085.  
  18086.      Lines of text from fonts with large point sizes must be more widely 
  18087.       spaced for maximum readability. 
  18088.  
  18089.      The longer the line of text, the greater the space between lines must be 
  18090.       to ensure that the lines do not appear to merge. 
  18091.  
  18092.      Very small text must be split into multiple columns rather than continued 
  18093.       across the page. 
  18094.  
  18095.  Some of these considerations are taken care of by the font designer. The PM 
  18096.  enables you to control both the horizontal and vertical positioning of text. 
  18097.  
  18098.  
  18099. ΓòÉΓòÉΓòÉ 8.2.3. Positioning Text in World Coordinates ΓòÉΓòÉΓòÉ
  18100.  
  18101. When considering text alignment, take the versatility of the coordinate systems 
  18102. into account. The following definitions depend on the current coordinate 
  18103. system: 
  18104.  
  18105. World Coordinate Values 
  18106.  
  18107. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18108. ΓöéValue          ΓöéCorresponds to the direction of...           Γöé
  18109. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18110. ΓöéLeft           ΓöéThe lowest x-coordinate value                Γöé
  18111. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18112. ΓöéRight          ΓöéThe highest x-coordinate value               Γöé
  18113. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18114. ΓöéTop            ΓöéThe highest y-coordinate value               Γöé
  18115. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18116. ΓöéBottom         ΓöéThe lowest y-coordinate value                Γöé
  18117. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18118.  
  18119. To position a character string horizontally, you must know the width of the 
  18120. output area and the length of the character string. The PM provides three 
  18121. different functions for determining the width of the output: 
  18122.  
  18123. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18124. ΓöéFunction Name                 ΓöéDescription                   Γöé
  18125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18126. ΓöéGpiQueryGraphicsField         ΓöéReturns the bottom-left and   Γöé
  18127. Γöé                              Γöétop-right corners of the      Γöé
  18128. Γöé                              Γöégraphics field in presentationΓöé
  18129. Γöé                              Γöépage units.                   Γöé
  18130. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18131. ΓöéGpiQueryViewingLimits         ΓöéReturns the viewing limit.    Γöé
  18132. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18133. ΓöéGpiQueryPageViewport          ΓöéReturns the page viewport in  Γöé
  18134. Γöé                              Γöédevice units.                 Γöé
  18135. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18136.  
  18137. GpiConvert  changes coordinates into world coordinates. To calculate the width 
  18138. of the output area, subtract its left from its right. For example, if the left 
  18139. is 30, and right is 600, the width of the output area is 570 world coordinates. 
  18140.  
  18141. The PM provides three different functions for determining the length of the 
  18142. character string primitive: 
  18143.  
  18144.      GpiQueryTextBox 
  18145.      GpiQueryCharStringPos 
  18146.      GpiQueryCharStringPosAt 
  18147.  
  18148.  GpiQueryTextBox returns the relative coordinates of a parallelogram that 
  18149.  surrounds the character string. By subtracting the x-coordinate of 
  18150.  TXTBOX_BOTTOMRIGHT from the x-coordinate of TXTBOX_BOTTOMLEFT, an application 
  18151.  can determine the length of the string. 
  18152.  
  18153.  GpiQueryCharStringPos returns an array of points, in which the world 
  18154.  coordinate position of each character in the string is recorded. The last 
  18155.  value in the array becomes the new current position if the string is drawn 
  18156.  using GpiCharStringPos. By subtracting this position from the current position 
  18157.  (obtained using GpiQueryCurrentPosition), the length of the string can be 
  18158.  determined. 
  18159.  
  18160.  GpiQueryCharStringPosAt also returns an array of points, in which the world 
  18161.  coordinate position of each character in the string is recorded. The last 
  18162.  value of the array becomes the new current position if the string is drawn 
  18163.  using GpiCharStringPosAt. This function accepts a specified starting position 
  18164.  for the character string. By specifying a starting position of (0,0) for 
  18165.  example, an application can determine the length of the string without 
  18166.  subtraction. 
  18167.  
  18168.  The current position actually is not updated by either GpiQueryCharStringPos 
  18169.  or GpiQueryCharStringPosAt. 
  18170.  
  18171.  When a character string does not fill the width of the output area, it can be 
  18172.  positioned in one of the four ways illustrated in the following figure. 
  18173.  
  18174.  Horizontal Positioning of Text Strings 
  18175.  
  18176.  To left-align the text, set the x-coordinate of the current position to the 
  18177.  left of the output area before drawing the character string. 
  18178.  GpiSetCurrentPosition must be used to set the current position if your 
  18179.  application draws the string using either GpiCharString or GpiCharStringPos. 
  18180.  Both GpiCharStringAt and GpiCharStringPosAt accept a starting position as 
  18181.  input. 
  18182.  
  18183.  To right-align the text, subtract the length of the character string from the 
  18184.  width of the output area, then add the difference to the x-coordinate of the 
  18185.  current position before drawing the character string. If the output area is 
  18186.  570 world coordinates wide, for example, and the character string is 436 world 
  18187.  coordinates long, add 134 to the x-coordinate of the current position before 
  18188.  drawing the text. 
  18189.  
  18190.  To center the text, subtract the length of the character string from the width 
  18191.  of the output area, then divide the difference by 2 before adding it to the 
  18192.  x-coordinate of the current position. If the difference is 134, for example, 
  18193.  you add 67 to the x-coordinate of the current position. 
  18194.  
  18195.  To justify the text, so that the text string fills the width of the output 
  18196.  area, distribute the surplus space throughout the character string. For 
  18197.  example, you could add the extra space to the break characters only, or you 
  18198.  could share it equally among all characters in the string. Text justification 
  18199.  requires the individual positioning each character in the string using either 
  18200.  of the following calls: 
  18201.  
  18202.      GpiCharStringPos-draws at the current position and permits you to 
  18203.       position every character after the first. 
  18204.  
  18205.      GpiCharStringPosAt-permits you to position every character, including the 
  18206.       first. 
  18207.  
  18208.  Both functions enable you to specify a different character increment for each 
  18209.  character in the string. Distance is measured from the character reference 
  18210.  point of one character to the character reference point of the next character. 
  18211.  The values you specify apply only to the character string supplied at input; 
  18212.  they do not become current attribute values. 
  18213.  
  18214.  If you are formatting a block of text, the string might be wider than the 
  18215.  output area, or longer than 256 characters. In either case, your application 
  18216.  must separate the string into smaller groups of characters so that it fits 
  18217.  either criteria. A good starting point is to determine the number of 
  18218.  characters planned for each line. Dividing the output width by the character 
  18219.  cell width can provide a first estimate as to where to separate a character 
  18220.  string. An application can use this estimate to work through the string 
  18221.  looking for spaces. Each time you find a space, compare the length of the 
  18222.  string (up to the space) with the width of the output area. When the string is 
  18223.  longer than the output area, work back to the previous space and display or 
  18224.  print that part of the string. You can format the entire block of text for the 
  18225.  output area in this way. 
  18226.  
  18227.  When you are formatting a block instead of a single line of text, an 
  18228.  application must specify the vertical placement of each line. If you are using 
  18229.  an image font, you have the assurance that each character is the same height. 
  18230.  However, you do not have that assurance with an outline font, nor that the 
  18231.  text block is written in the same font. Therefore, when calculating the 
  18232.  separation of lines, avoid using complex combinations of font metrics values. 
  18233.  Instead, it is recommended that you multiply the desired point size, or 
  18234.  em-height metric, of the text by 1.2. 
  18235.  
  18236.  
  18237. ΓòÉΓòÉΓòÉ 9. Clipping and Boundary Determination ΓòÉΓòÉΓòÉ
  18238.  
  18239. Both clipping and boundary determination are graphics operations concerned with 
  18240. limiting the amount of graphics information passed between different coordinate 
  18241. spaces. The following topics are related to the information in this chapter: 
  18242.  
  18243.      Presentation spaces and device contexts 
  18244.      Coordinate spaces and transformations 
  18245.      Regions 
  18246.      Paths 
  18247.  
  18248.  
  18249. ΓòÉΓòÉΓòÉ 9.1. About Clipping ΓòÉΓòÉΓòÉ
  18250.  
  18251. Clipping enables the PM to discard parts of a picture that lie outside a 
  18252. specified clipping boundary. The parts of the picture enclosed by the boundary 
  18253. are said to be inside the clipping area. A clipping area might be a single 
  18254. rectangle or a complex shape, depending on the method used to define it. 
  18255.  
  18256. Note:  In this chapter, the word area does not refer to an area primitive; it 
  18257. describes the shape or shapes used for clipping graphics output. 
  18258.  
  18259. If an application attempts to draw outside of a clipping area, the operating 
  18260. system ensures that the output does not appear on the drawing surface of the 
  18261. output device. For example, if an application defined a triangular clipping 
  18262. area before drawing text output, all text outside of the triangle would be 
  18263. discarded, even though an entire page of text was defined. The following figure 
  18264. illustrates the result. 
  18265.  
  18266. Triangular Clip Path 
  18267.  
  18268. Clipping boundaries are defined by the application. The PM performs some 
  18269. clipping automatically when, for example, your application's graphic output is 
  18270. clipped to fit a client window area or the device's output area for a hardcopy 
  18271. device. 
  18272.  
  18273.  
  18274. ΓòÉΓòÉΓòÉ 9.1.1. Types of Clipping Areas ΓòÉΓòÉΓòÉ
  18275.  
  18276. The PM programming interface assembles the application's graphics output in a 
  18277. process that can use up to five coordinate spaces, known collectively as the 
  18278. viewing pipeline. Clipping can occur at each stage in the viewing pipeline. 
  18279. Objects in world coordinate, model, page, or device space can be clipped. When 
  18280. an application defines clipping areas in several coordinate spaces, the final 
  18281. result is similar to combining all the areas into a single clipping area. This 
  18282. single area is defined by the intersection of the areas in each coordinate 
  18283. space. 
  18284.  
  18285. Clipping in different coordinate spaces, however, is a means of conceptualizing 
  18286. the process to aid in its understanding. Clipping, like transformations, 
  18287. actually happens in one operation, with all the different types of clipping 
  18288. being performed on all primitives in the device space at once. 
  18289.  
  18290. The following table describes the different types of clipping areas associated 
  18291. with the different coordinate spaces. 
  18292.  
  18293. Clipping Areas and Coordinate Space Summary 
  18294.  
  18295. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18296. ΓöéClipping Area   ΓöéCoordinate SpaceΓöéDescription                 Γöé
  18297. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18298. ΓöéClip path       ΓöéWorld space     ΓöéAlways inclusive/inclusive  Γöé
  18299. Γöé                Γöé                Γöé                            Γöé
  18300. Γöé                Γöé                ΓöéClipping area can have      Γöé
  18301. Γöé                Γöé                Γöécurved edges                Γöé
  18302. Γöé                Γöé                Γöé                            Γöé
  18303. Γöé                Γöé                ΓöéClipping area can be        Γöé
  18304. Γöé                Γöé                Γöérotated.                    Γöé
  18305. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18306. ΓöéViewing limit   ΓöéModel space     ΓöéAlways a rectangular        Γöé
  18307. Γöé                Γöé                Γöéclipping boundary           Γöé
  18308. Γöé                Γöé                Γöé                            Γöé
  18309. Γöé                Γöé                ΓöéAlways inclusive/inclusive  Γöé
  18310. Γöé                Γöé                Γöé                            Γöé
  18311. Γöé                Γöé                ΓöéRotating clipping area      Γöé
  18312. Γöé                Γöé                Γöéresults in larger rectangle.Γöé
  18313. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18314. ΓöéGraphics field  ΓöéPage space      ΓöéAlways a rectangular        Γöé
  18315. Γöé                Γöé                Γöéclipping boundary           Γöé
  18316. Γöé                Γöé                Γöé                            Γöé
  18317. Γöé                Γöé                ΓöéAlways inclusive/inclusive  Γöé
  18318. Γöé                Γöé                Γöé                            Γöé
  18319. Γöé                Γöé                ΓöéRotating clipping area      Γöé
  18320. Γöé                Γöé                Γöéimpossible. Cannot specify aΓöé
  18321. Γöé                Γöé                Γöédevice transform with       Γöé
  18322. Γöé                Γöé                Γöérotation.                   Γöé
  18323. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18324. ΓöéClip region     ΓöéDevice space    ΓöéCan be a single rectangle orΓöé
  18325. Γöé                Γöé                Γöémultiple rectangles that    Γöé
  18326. Γöé                Γöé                Γöéoverlap or remain separate  Γöé
  18327. Γöé                Γöé                Γöé                            Γöé
  18328. Γöé                Γöé                ΓöéAlways inclusive/exclusive  Γöé
  18329. Γöé                Γöé                Γöé                            Γöé
  18330. Γöé                Γöé                ΓöéRotating the clipping area  Γöé
  18331. Γöé                Γöé                Γöéis impossible.              Γöé
  18332. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18333.  
  18334. Note:  Inclusive/inclusive means that the operating system includes the bottom 
  18335. and leftmost edges of the rectangle in the clipping area as well as the top and 
  18336. rightmost edges. Inclusive/exclusive means that the operating system includes 
  18337. the bottom and leftmost edges but excludes the top and rightmost edges. 
  18338.  
  18339. The following figure illustrates the differences between inclusive-inclusive 
  18340. and inclusive-exclusive clipping. 
  18341.  
  18342. Inclusive/Inclusive and Inclusive/Exclusive Clipping 
  18343.  
  18344.  
  18345. The Clip Path 
  18346.  
  18347. The clip path defines the clipping boundary in world coordinate space. Paths 
  18348. are graphic objects that serve many purposes, only one of which is to be used 
  18349. as a clipping mechanism. Paths are described in Paths. The recommended 
  18350. functional sequence for creating a clip path is as follows: 
  18351.  
  18352.  Function                 Effect 
  18353.  
  18354.  GpiBeginPath             Begins the path definition. 
  18355.  
  18356.  Line and arc GPIs        Gives the path shape. 
  18357.  
  18358.  GpiEndPath               Ends the path definition. 
  18359.  
  18360.  GpiModifyPath            An optional step explained below. 
  18361.  
  18362.  GpiSetClipPath           Converts the path to a clip path. 
  18363.  
  18364.  Before converting to a clip path, the path can be modified using 
  18365.  GpiModifyPath. If modified, the path is converted to a geometric (wide) line 
  18366.  using the current geometric width, line join, and line end attributes. The 
  18367.  shape defined by the geometric line then is used for the clip path. The clip 
  18368.  path can be a simple unmodified path. 
  18369.  
  18370.  GpiSetClipPath accepts two different path identifiers as input: 
  18371.  
  18372.      1SCP_RESET (default) 
  18373.      0SCP_AND 
  18374.  
  18375.  The default path identifier, SCP_RESET, resets the clip path to infinity, 
  18376.  which displays the picture without clipping. If this value is selected, the 
  18377.  current clip path definition is discarded instead of stored. 
  18378.  
  18379.  A path identifier of SCP_AND specifies that the clip path be redefined as the 
  18380.  mathematical intersection of the stored clip path and the current path 
  18381.  definition. 
  18382.  
  18383.  The only method of specifying the clip path to the current path, after 
  18384.  GpiSetClipPath has been called, is to call GpiSetClipPath twice:  the first 
  18385.  call with a path identifier of SCP_RESET, and the second with a path 
  18386.  identifier of SCP_AND. 
  18387.  
  18388.  The following figure shows a triangle shape that has been defined within a 
  18389.  path bracket and selected as the current clip path. The filled box shape is 
  18390.  drawn subsequently, and, therefore, is clipped to the triangle. 
  18391.  
  18392.  The Clipping Path 
  18393.  
  18394.  The broken lines show the area of the box that has been clipped. 
  18395.  
  18396.  Clip paths are most useful when you want to use an irregular clipping 
  18397.  boundary, or when the clipping boundary itself is an integral part of the 
  18398.  picture. Both are true of the clip path in the previous figure. 
  18399.  
  18400.  GpiSetClipPath also accepts one of two construction options as input: 
  18401.  
  18402.      SCP_ALTERNATE (default) 
  18403.      SCP_WINDING (must be selected if path has been modified). 
  18404.  
  18405.  Any drawing that is clipped to the current clip path must follow the alternate 
  18406.  or the winding rules as to whether that portion of a picture is included in 
  18407.  the clip area. The alternate and winding modes are described for paths in 
  18408.  Paths in Alternate Mode and Paths in Winding Mode. Any point on the boundary 
  18409.  of the path is considered within the path and is not clipped. 
  18410.  
  18411.  To end clipping to the current clip path, call GpiSetClipPath with an 
  18412.  identifier of 0. This function deselects the current clip path by setting it 
  18413.  to infinity. In some circumstances, the current clip path is deselected 
  18414.  automatically. 
  18415.  
  18416.  A path definition can be stored in a graphics segment, and if that segment is 
  18417.  retained, the path can be re-created as required when the segment is redrawn. 
  18418.  Clip path definitions can be stored in a retained segment also and redrawn 
  18419.  when required. In draw-and-retain mode (DM_DRAWANDRETAIN), the initial path or 
  18420.  clip path is created as the segment is constructed. If the current drawing 
  18421.  mode is retain (DM_RETAIN), however, the path or clip path is not created 
  18422.  until the first time the segment is drawn. 
  18423.  
  18424.  
  18425.  The Viewing Window 
  18426.  
  18427.  The viewing window defines a rectangular clipping boundary in model space. It 
  18428.  is defined with GpiSetViewingLimits. As input to this function, you supply the 
  18429.  model coordinates of the lower-left and upper-right corners of the viewing 
  18430.  window. 
  18431.  
  18432.  When a drawing primitive, such as a line, intersects a viewing window, any 
  18433.  part of that line outside of the viewing window is clipped. Any point on the 
  18434.  boundary of the viewing window is considered within the window, and is not 
  18435.  clipped. By default, the viewing window performs no clipping. In this case, 
  18436.  all graphics output in the model space is transformed. The following figure 
  18437.  shows how the viewing window outlines a part of model space. The Viewing 
  18438.  Window 
  18439.  
  18440.  This example shows how a presentation page is constructed. The viewing window 
  18441.  outlines the tail of the aircraft, which is scaled and translated when drawn 
  18442.  in presentation-page space. The rest of the aircraft is clipped away during 
  18443.  the drawing process. 
  18444.  
  18445.  
  18446.  The Graphics Field 
  18447.  
  18448.  The graphics field defines a rectangular clipping area in the presentation 
  18449.  page. It is defined in GpiSetGraphicsField. 
  18450.  
  18451.  Note:  If this clipping area is to be used, it must be defined before any 
  18452.  drawing begins. 
  18453.  
  18454.  Specify the size of the graphics field in presentation page coordinates as 
  18455.  input to GpiSetGraphicsField. 
  18456.  
  18457.  Only the graphic output contained in this clipping boundary is visible when 
  18458.  the presentation page is transformed to device space. By default, the graphics 
  18459.  field is infinitely large and therefore performs no clipping. If you do 
  18460.  specify a graphics field, however, any point on its boundary is considered 
  18461.  within the graphics field and is not clipped. When a drawing primitive, such 
  18462.  as a line, intersects a graphic field, any part of the line outside the 
  18463.  graphics field is clipped. The following figure shows how a graphics field 
  18464.  could be defined for a presentation page. 
  18465.  
  18466.  The Graphics Field 
  18467.  
  18468.  The broken line shows an arbitrary graphics field that is smaller than the 
  18469.  presentation page. The aircraft tail, a separate object in the presentation 
  18470.  page, is outside the graphics field and is clipped away as it is drawn. 
  18471.  
  18472.  The picture assembled in the graphics field is the picture that is displayed 
  18473.  or printed. If you do not define a graphics field, the picture assembled in 
  18474.  the presentation page is the picture that is displayed or printed. The 
  18475.  presentation page is not a clipping boundary, and graphics in page coordinate 
  18476.  space that are outside the presentation page boundary, therefore, might be 
  18477.  visible. 
  18478.  
  18479.  
  18480.  The Current Clipping Region 
  18481.  
  18482.  Clipping regions are clipping areas defined (as regions) by one or more 
  18483.  rectangles in device coordinates. Because they are defined in device 
  18484.  coordinates, clipping regions do not suffer from the rounding errors 
  18485.  associated with other types of clipping. Therefore, they are ideally suited to 
  18486.  redraw part of the picture without boundary discontinuities, for example, 
  18487.  after a BitBlt operation has been used to scroll a picture in a window. 
  18488.  
  18489.  Regions are not available automatically for clipping. To select an existing 
  18490.  region as the current clipping region, use GpiSetClipRegion. By default, the 
  18491.  clipping region is the same size as the drawing surface. Only one clipping 
  18492.  region can exist in the presentation space at one time. To end clipping to the 
  18493.  current clipping region, deselect it by calling GpiSetClipRegion with a NULL 
  18494.  region handle. A deselected clipping region retains the effects of any changes 
  18495.  made to it while it was a clipping region and can be reselected. 
  18496.  
  18497.  You do not have to deselect the current clipping region before selecting 
  18498.  another. Each selected clipping region automatically replaces the one before 
  18499.  it. If a clipping region exists when you call GpiSetClipRegion, the existing 
  18500.  clipping region reverts to being a normal region, and its handle is returned. 
  18501.  
  18502.  Clip paths and clip regions share a common implementation, but clip regions 
  18503.  are faster to create than clip paths. This might be a performance factor when 
  18504.  designing your application for repairing the screen or redrawing the picture 
  18505.  in a client window after the display has changed. The following figure 
  18506.  illustrates this use of regions. 
  18507.  
  18508.  Screen Repairing 
  18509.  
  18510.  Note:  GpiSetClipRegion does not cause graphics orders to be added to the 
  18511.  current segment. Therefore, variations in the clip region must not be used to 
  18512.  construct the picture. The clip region is intended to define a fixed clipping 
  18513.  area for the entire picture. 
  18514.  
  18515.  When you select the current clipping region, none of the region-related GPI 
  18516.  functions can be used for that region. The PM provides a series of functions 
  18517.  that mirror the region-related functions. However, all of these functions work 
  18518.  in world coordinates rather than device coordinates, and, therefore, are 
  18519.  subject to current transformations. 
  18520.  
  18521.  Any of the following functions can be used to get information about or to 
  18522.  redefine the current clipping region. 
  18523.  
  18524.      GpiQueryClipBox 
  18525.  
  18526.       You can request the dimensions of the smallest rectangle that encloses 
  18527.       all current clipping boundaries by calling GpiQueryClipBox. The following 
  18528.       boundaries are included in this calculation: 
  18529.  
  18530.         -  Current clip path 
  18531.         -  Current viewing window 
  18532.         -  Current graphics field 
  18533.         -  Current clipping region 
  18534.         -  Visible region of the window 
  18535.  
  18536.      GpiIntersectClipRectangle 
  18537.  
  18538.       GpiIntersectClipRectangle redefines the current clipping region to the 
  18539.       intersection of the existing clipping region with the rectangle whose 
  18540.       dimensions you supply in this function. This has the same effect as 
  18541.       CRGN_AND in GpiCombineRegion. 
  18542.  
  18543.      GpiExcludeClipRectangle 
  18544.  
  18545.       You also can redefine the current clipping region using 
  18546.       GpiExcludeClipRectangle. This function excludes a specified rectangle 
  18547.       from the current region and has the same effect as CRGN_DIFF on 
  18548.       GpiCombineRegion. 
  18549.  
  18550.      GpiOffsetClipRegion 
  18551.  
  18552.       The current clipping region can be moved from its current position using 
  18553.       GpiOffsetClipRegion. 
  18554.  
  18555.      GpiPtVisible 
  18556.  
  18557.       GpiPtVisible tells you whether a point, expressed in world coordinates, 
  18558.       is visible on the screen. A point is visible if it is within all current 
  18559.       clipping boundaries and is in the visible region of the window. 
  18560.  
  18561.      GpiRectVisible 
  18562.  
  18563.       GpiRectVisible tells you whether any part or the whole of a rectangle, 
  18564.       whose dimensions you supply in world coordinates, is visible on the 
  18565.       screen. The rectangle is visible if it intersects both the visible region 
  18566.       of the window and all current clipping boundaries. 
  18567.  
  18568.  
  18569. ΓòÉΓòÉΓòÉ 9.1.2. How Clipping Is Implemented ΓòÉΓòÉΓòÉ
  18570.  
  18571. The rules by which the PM implements clipping are as follows: 
  18572.  
  18573.      Any primitive completely outside the clipping boundary is discarded. 
  18574.  
  18575.       When a primitive crosses a clipping boundary, any part outside the 
  18576.       boundary is discarded. 
  18577.  
  18578.      Any primitive completely within the clipping boundary is retained. 
  18579.  
  18580.       When a primitive crosses a clipping boundary, any part within the 
  18581.       boundary is retained. 
  18582.  
  18583.      When the clipping boundary is a clip path, viewing window, or graphics 
  18584.       field, any point that falls on the boundary is considered within the 
  18585.       clipping boundary. 
  18586.  
  18587.       When the clipping boundary is a clipping region, any point on the top or 
  18588.       right boundaries of a rectangle is discarded; and any point on the bottom 
  18589.       or left boundaries of a rectangle, that is not on the right or top 
  18590.       boundaries also, is included in the region. 
  18591.  
  18592.  
  18593. ΓòÉΓòÉΓòÉ 9.1.3. Redrawing Nondynamic Graphics ΓòÉΓòÉΓòÉ
  18594.  
  18595. An interactive graphics application usually permits changes to the displayed 
  18596. picture. For example, an object can be moved or sized, and you can plan for 
  18597. this by defining particular segments as dynamic. Dynamic segments are described 
  18598. in Editing Retained Graphics and Graphics Segments. 
  18599.  
  18600. If dynamic segments are inappropriate (when you are using nonretained graphics, 
  18601. for example), you can repair the picture using a clipping region, for example, 
  18602. a picture of a hexagon and a circle as shown in the following figure. 
  18603.  
  18604. A Hexagon and Circle 
  18605.  
  18606. If the circle is moved to another screen position by the use of an input 
  18607. device, you must repair its original location and redraw it in its new 
  18608. location. The following figure shows this sequence of events. Following are the 
  18609. steps required to do this: 
  18610.  
  18611.    1. Determine the size of the smallest rectangle that contains the circle in 
  18612.       its current position using a process called boundary determination. 
  18613.  
  18614.    2. Switch off the DCTL_DISPLAY flag of GpiSetDrawControl, apply a 
  18615.       translation transformation to the circle, and redraw it in its new 
  18616.       position. 
  18617.  
  18618.    3. Determine the size of the smallest rectangle that contains the circle in 
  18619.       its new position using boundary determination. 
  18620.  
  18621.    4. Use GpiConvert to convert the model-space coordinates provided by the 
  18622.       boundary-determination process to device-space coordinates. 
  18623.  
  18624.    5. Use the device-space coordinates of the two rectangles to create a 
  18625.       region, and select it as the current clipping region. 
  18626.  
  18627.    6. Switch on the DCTL_DISPLAY flag of GpiSetDrawControl. 
  18628.  
  18629.    7. Call GpiErase (or set the erase-before-draw control) to erase the current 
  18630.       contents of the clipping region. 
  18631.  
  18632.    8. Redraw the picture with the circle in its new position. Any part of the 
  18633.       picture within the clipping region is redrawn. That part of the hexagon 
  18634.       that is outside the clipping region is unaffected by the change and does 
  18635.       not have to be redrawn. 
  18636.  
  18637.  Defining a Clipping Region 
  18638.  
  18639.  The broken circle shows the position to which the circle is to be moved.  The 
  18640.  two bounding rectangles overlap, and produce a complex region.  If the circle 
  18641.  were to be moved much farther away from its start position, the region would 
  18642.  comprise two disjoint rectangles. 
  18643.  
  18644.  
  18645. ΓòÉΓòÉΓòÉ 9.2. About Boundary Determination ΓòÉΓòÉΓòÉ
  18646.  
  18647. Boundary determination is an operation to compute the size of the smallest 
  18648. rectangle that encloses a graphics output in model space. One use of boundary 
  18649. determination is to enable you to repair only the affected parts of the screen, 
  18650. when a graphics object is moved, for example, or when a graphics object is 
  18651. changed some other way. Dynamic segments are not included in 
  18652. boundary-determination operations. 
  18653.  
  18654. Boundary determination can be performed on both retained and nonretained 
  18655. graphics. In both instances, you request boundary data to be calculated by 
  18656. setting the boundary data flag (DCTL_BOUNDARY) in GpiSetDrawControl. If you do 
  18657. not set this flag (for example, if you do not want to collect boundary data 
  18658. unnecessarily) and later find that you need boundary data for a particular 
  18659. object, you can do the following: 
  18660.  
  18661.    1. Switch on the boundary-data flag, and switch off the display flag, using 
  18662.       GpiSetDrawControl. 
  18663.  
  18664.    2. Redraw the object in its current location. Boundary data is collected, 
  18665.       but the object is unaltered. 
  18666.  
  18667.  If you are drawing retained graphics, each drawing request (GpiDrawSegment, 
  18668.  GpiDrawFrom, and GpiDrawChain) causes the boundary data resulting from the 
  18669.  drawing to be made available. The application must request this data 
  18670.  explicitly by calling GpiQueryDeviceBitmapFormats after each drawing request 
  18671.  for which it wants to examine boundary data. Boundary data is returned to the 
  18672.  application in model space coordinates. The boundary data is reset before each 
  18673.  retained drawing operation, so there is no risk of accumulating data from 
  18674.  separate operations. 
  18675.  
  18676.  If you are drawing nonretained graphics, boundary data is accumulated for each 
  18677.  GpiPutData and for each individual primitive drawing function. The application 
  18678.  can request the accumulated boundary data at any time by calling 
  18679.  GpiQueryBoundaryData. Data continues to accumulate unless you call the 
  18680.  GpiResetBoundaryData; it is not reset automatically. 
  18681.  
  18682.  The boundary data returned to you is in the form of four model-space 
  18683.  coordinates, which are the lowest (x,y) positions and the highest (x,y) 
  18684.  positions of the bounding rectangle in model space as illustrated in the 
  18685.  following figure. 
  18686.  
  18687.  The Bounding Rectangle 
  18688.  
  18689.  
  18690. ΓòÉΓòÉΓòÉ 9.3. Using Clipping and Boundary Determination ΓòÉΓòÉΓòÉ
  18691.  
  18692. This section explains how to use clipping functions to: 
  18693.  
  18694.      Create a clip path or clip region 
  18695.      Exclude a rectangular area from a clip region 
  18696.      Add a rectangular area to a clip region 
  18697.      Set the clip region to the intersection of the current clip region and a 
  18698.       specified rectangle 
  18699.      Determine the size of the smallest rectangle that will surround the 
  18700.       intersection of the current clipping areas completely 
  18701.  
  18702.  
  18703. ΓòÉΓòÉΓòÉ 9.3.1. Creating a Clip Path ΓòÉΓòÉΓòÉ
  18704.  
  18705. A drawing and computer-aided-design (CAD) application may require the ability 
  18706. to clip to curved edges. If so, it must use a clip path to define a curved 
  18707. clipping area in world coordinates. Because clip paths (especially ones that 
  18708. clip to curved edges) require considerable memory and processing time, use them 
  18709. only when necessary. Whenever possible, your application must use a clip 
  18710. region, graphics field, or viewing limit. 
  18711.  
  18712. To create a clip path, do the following: 
  18713.  
  18714.    1. Determine the clip path's shape and size (in world coordinates). 
  18715.  
  18716.    2. Use GpiBeginPath to begin defining the path. 
  18717.  
  18718.    3. Create the path. 
  18719.  
  18720.    4. Close the path definition with GpiEndPath. 
  18721.  
  18722.    5. Create a clip path from the path definition with GpiSetClipPath. 
  18723.  
  18724.  The following figure uses this procedure to create an elliptical clip path. 
  18725.  
  18726.   Uses
  18727.     Os2Def,Os2Base,Os2PmApi;
  18728.  
  18729.   Procedure FncCLIP01;
  18730.   Var
  18731.     Hps    : HPS;    (* Presentation-space handle *)
  18732.     Ptl1   : POINTL; (* Point structure           *)
  18733.     FxArc  : FIXED;  (* Multiplier for arc        *)
  18734.     IdPath : LONG;   (* Path identifier           *)
  18735.  
  18736.   Begin
  18737.         .
  18738.         .           (* Load ptl1 with coordinates of clip path.   *)
  18739.         .
  18740.     idPath := 1;
  18741.     GpiBeginPath(hps, idPath);       (* Begins path               *)
  18742.     GpiMove(hps, ptl1);             (* Sets current position     *)
  18743.     fxArc  := MAKEFIXED(50, 0);       (* Sets arc multiplier       *)
  18744.     GpiFullArc(hps, DRO_OUTLINE, fxArc);  (* Defines ellipse      *)
  18745.     GpiEndPath(hps);                 (* Ends path                 *)
  18746.     GpiSetClipPath(hps, idPath, SCP_ALTERNATE OR SCP_AND);
  18747.   End; (* fncCLIP01 *)
  18748.  
  18749.  
  18750. ΓòÉΓòÉΓòÉ 9.3.2. Creating a Clip Region ΓòÉΓòÉΓòÉ
  18751.  
  18752. To create a clip region, first determine its size and shape (in device 
  18753. coordinates). Load the coordinates for the rectangles that define the clip 
  18754. region into an array of RECTL structures. Then create the region and set it to 
  18755. a clip region with GpiCreateRegion and GpiSetClipRegion respectively. 
  18756.  
  18757. The following figure shows how to create a clip region. 
  18758.  
  18759.  
  18760. Uses
  18761.   Os2Def,Os2PmApi;
  18762.  
  18763. Procedure fncCLIP02;
  18764. Var
  18765.   Hps                : HPS;
  18766.   Hrgn               : HRGN;
  18767.   Arcl : Array[0..2] : RECTL;
  18768.  
  18769. Begin
  18770.       .
  18771.       .  (* Load array of RECTL structures with coordinates.       *)
  18772.       .
  18773.   GpiSetClipRegion(hps, hrgn, nil);
  18774. End; (* fncCLIP02 *)
  18775.  
  18776.  
  18777. ΓòÉΓòÉΓòÉ 9.3.3. Excluding a Rectangular Area from a Clip Region ΓòÉΓòÉΓòÉ
  18778.  
  18779. Some applications let you prepare output in multiple stages. For example, a 
  18780. word processing application might permit you to prepare your text first and 
  18781. then add bit maps that enhance and support the text. These applications can use 
  18782. GpiExcludeClipRectangle to exclude an area from a clip region, preventing the 
  18783. user from deleting output that already exists. 
  18784.  
  18785. To exclude an area from a clip region, first determine the dimensions (in 
  18786. device coordinates) of the smallest rectangle that completely surrounds the 
  18787. area to exclude from the clip region. Then call GpiExcludeClipRectangle, 
  18788. including as input the dimensions of the area to exclude. The following figure 
  18789. illustrates these steps. 
  18790.  
  18791.  
  18792. Uses
  18793.   Os2Def,Os2PmApi;
  18794.  
  18795. Procedure fncCLIP03;
  18796. Var
  18797.   Hps : HPS;
  18798.   Rcl : RECTL;
  18799.  
  18800. Begin
  18801.       .
  18802.       .  (* Set rectangle coordinates here. *)
  18803.       .
  18804.   GpiExcludeClipRectangle(hps, rcl);
  18805. End; (* fncCLIP03 *)
  18806.  
  18807.  
  18808. ΓòÉΓòÉΓòÉ 9.3.4. Adding a Rectangular Area to a Clip Region ΓòÉΓòÉΓòÉ
  18809.  
  18810. Some applications might need to increase the size of a clip region. For 
  18811. example, a user might request that a desktop publishing application extend a 
  18812. column of text on a page. 
  18813.  
  18814. To add a rectangular area to a clip region, follow these steps: 
  18815.  
  18816.    1. Determine the dimensions (in device coordinates) of the rectangular area 
  18817.       to add to the current clip region. 
  18818.  
  18819.    2. Release the current clip region using GpiSetClipRegion. GpiCombineRegion 
  18820.       cannot combine regions if either of the regions is a clip region. 
  18821.  
  18822.    3. Call GpiCreateRegion and pass it the dimensions of the rectangle that you 
  18823.       defined in Step 1. This creates a second region that you can combine with 
  18824.       the first. 
  18825.  
  18826.    4. Call GpiCreateRegion again and create a third region that will be the 
  18827.       final destination region. 
  18828.  
  18829.    5. Call GpiCombineRegion to create a region that combines the original 
  18830.       region and the region you created in Step 2. It is not essential to 
  18831.       create a third region because GpiCombineRegion can use one of the 2 
  18832.       source regions being combined for a target region. 
  18833.  
  18834.    6. Call GpiSetClipRegion and pass it the handle returned by 
  18835.       GpiCombineRegion. 
  18836.  
  18837.  The following figure illustrates these steps. 
  18838.  
  18839.   Uses
  18840.     Os2Def,Os2Base,Os2PmApi;
  18841.  
  18842.   Procedure FncCLIP04;
  18843.   Var
  18844.     Hps                 : HPS;
  18845.     Rcl1, Rcl2, Rcl3    : RECTL;
  18846.     Hrgn1, Hrgn2, Hrgn3 : HRGN;
  18847.  
  18848.   Begin
  18849.     hrgn1 := GpiCreateRegion(hps, sizeof(rcl1) div sizeof(RECTL), rcl1);
  18850.     GpiSetClipRegion(hps, hrgn1, nil);       (* Creates first clipping region *)
  18851.         .
  18852.         .  (* Compute coordinates of second region here.                       *)
  18853.         .
  18854.     GpiSetClipRegion(hps, NULLHANDLE, nil);  (* Releases first clipping region*)
  18855.     hrgn2 := GpiCreateRegion(hps, sizeof(rcl2) div Sizeof(RECTL), rcl2);
  18856.     hrgn3 := GpiCreateRegion(hps, sizeof(rcl3) div Sizeof(RECTL), rcl3);
  18857.     GpiCombineRegion(hps, hrgn3, hrgn1, hrgn2, CRGN_OR);
  18858.     GpiSetClipRegion(hps, hrgn3, nil);       (* Creates second clipping region*)
  18859.   End; (* fncCLIP04 *)
  18860.  
  18861.  
  18862. ΓòÉΓòÉΓòÉ 9.3.5. Setting the Clip Region to a Region Intersection ΓòÉΓòÉΓòÉ
  18863.  
  18864. Your application might require the ability to set the clip region to the 
  18865. intersection of the current clip region and another region. Do this with 
  18866. GpiIntersectClipRectangle, as shown in the following: 
  18867.  
  18868.  
  18869. Uses
  18870.   Os2Def,Os2PmApi;
  18871.  
  18872. Procedure fncCLIP05;
  18873. Var
  18874.   Rcl : RECTL;
  18875.   Hps : HPS;
  18876.  
  18877. Begin
  18878.       .
  18879.       . (* Load rcl with coordinates of rectangle to intersect. *)
  18880.       .
  18881.   GpiIntersectClipRectangle(hps, rcl);
  18882. End; (* fncCLIP05 *)
  18883.  
  18884.  
  18885. ΓòÉΓòÉΓòÉ 9.3.6. Determining the Size of a Clipping Area ΓòÉΓòÉΓòÉ
  18886.  
  18887. If an application is able to specify a clip path in world space, a viewing 
  18888. limit in model space, a graphics field in page space, and a clip region in 
  18889. device space, it might be necessary for your application to determine the size 
  18890. of the clipping area formed by the intersection of the four. GpiQueryClipBox 
  18891. returns the dimensions (in world coordinates) of the smallest rectangle that 
  18892. completely surrounds the intersection of all the defined clipping areas, 
  18893. including the visible region. 
  18894.  
  18895. The following figure shows how to use GpiQueryClipBox to fill a RECTL structure 
  18896. with the desired coordinates. 
  18897.  
  18898.  
  18899. Uses
  18900.   Os2Def,Os2PmApi;
  18901.  
  18902. Procedure fncCLIP06;
  18903. Var
  18904.   Hps     : HPS;
  18905.   RclClip : RECTL;
  18906.  
  18907. Begin
  18908.   GpiQueryClipBox(hps, rclClip);
  18909. End; (* fncCLIP06 *)
  18910.  
  18911.  
  18912. ΓòÉΓòÉΓòÉ 10. Color and Mix Attributes ΓòÉΓòÉΓòÉ
  18913.  
  18914. This chapter describes color and mix attributes and their use in OS/2 
  18915. applications. The following topics are related to information in this chapter: 
  18916.  
  18917.      Presentation spaces and device contexts 
  18918.      Line and arc primitives 
  18919.      Marker primitives 
  18920.      Area primitives 
  18921.      Character string primitives 
  18922.      Bit maps and images primitives 
  18923.  
  18924.  
  18925. ΓòÉΓòÉΓòÉ 10.1. About Color and Mix Attributes ΓòÉΓòÉΓòÉ
  18926.  
  18927. Color and mix are two attributes of graphics primitives. They can be specified 
  18928. by an application in a number of ways, and are specified in the ...BUNDLE data 
  18929. structures associated with the five graphics primitives and in bit maps. Bit 
  18930. maps and some of the primitives have both foreground and background color 
  18931. attributes. For example, a character string primitive has a foreground color 
  18932. attribute that specifies the color of the character and a background color 
  18933. attribute that specifies the color of the character cell surrounding the 
  18934. character. 
  18935.  
  18936. The mix attribute controls how each primitive is combined with the existing 
  18937. drawing. Among other things, it affects the color that results when primitives 
  18938. of different colors overlap. Primitives with foreground and background color 
  18939. attributes also have foreground and background mix attributes. 
  18940.  
  18941.  
  18942. ΓòÉΓòÉΓòÉ 10.2. Color Implementation ΓòÉΓòÉΓòÉ
  18943.  
  18944. Understanding how colors are implemented can assist in understanding how the 
  18945. color and mix attributes work. 
  18946.  
  18947. The pel is the smallest element of the display screen that can be addressed. 
  18948. For monochrome displays, pels are either turned off or turned on. For color 
  18949. displays, each pel contains a red, green, and blue section, each of which is 
  18950. called a phosphor. 
  18951.  
  18952. The display has color guns of red, blue, and green light that illuminate the 
  18953. phosphors in a single pel. By switching these color guns on and off in 
  18954. different combinations, eight standard colors can be produced. By varying the 
  18955. intensities of the color guns, additional colors can be produced. The following 
  18956. table shows the eight standard colors that can be generated from the three 
  18957. color guns. 
  18958.  
  18959. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18960. ΓöéPel appears... ΓöéRed            ΓöéGreen          ΓöéBlue           Γöé
  18961. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18962. ΓöéRed            ΓöéON             ΓöéOFF            ΓöéOFF            Γöé
  18963. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18964. ΓöéGreen          ΓöéOFF            ΓöéON             ΓöéOFF            Γöé
  18965. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18966. ΓöéBlue           ΓöéOFF            ΓöéOFF            ΓöéON             Γöé
  18967. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18968. ΓöéWhite          ΓöéON             ΓöéON             ΓöéON             Γöé
  18969. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18970. ΓöéBlack          ΓöéOFF            ΓöéOFF            ΓöéOFF            Γöé
  18971. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18972. ΓöéCyan           ΓöéOFF            ΓöéON             ΓöéON             Γöé
  18973. Γöé(Turquoise)    Γöé               Γöé               Γöé               Γöé
  18974. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18975. ΓöéPink           ΓöéON             ΓöéOFF            ΓöéON             Γöé
  18976. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18977. ΓöéYellow         ΓöéON             ΓöéON             ΓöéOFF            Γöé
  18978. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18979.  
  18980. Each pel is described internally by a number of bits of storage. In a 
  18981. monochrome display, only one bit per pel is required, and that bit is either on 
  18982. or off. In an eight-color system, three bits per pel are necessary. Each of 
  18983. those three bits records the on or off setting of one color gun. 
  18984.  
  18985. To be able to control the intensity of a color and obtain more than eight 
  18986. colors, more than three bits per pel are needed. For example, six bits per pel 
  18987. provide 32 different combinations. 
  18988.  
  18989. The wider the range of available colors, the more bits per pel required for 
  18990. each color. This storage issue is resolved by keeping a wide choice of colors 
  18991. but restricting the number of colors available at any given time. Applications 
  18992. define the colors that they want to use in a logical color table. Selecting a 
  18993. color defined in the logical color table produces the nearest available color 
  18994. in the hardware palette. 
  18995.  
  18996.  
  18997. ΓòÉΓòÉΓòÉ 10.2.1. RGB Color Encoding ΓòÉΓòÉΓòÉ
  18998.  
  18999. The red, green, and blue (RGB) components of a color are stored in either an 
  19000. RGB or RGB2 data structure, or as a long integer (32-bit) value. The color 
  19001. fields in the RGB2 structure and in the long integer follow the same rules. 
  19002.  
  19003. If stored as a long integer, the RGB value has the first 8 bits reserved for a 
  19004. flag value and the remaining 24 bits reserved for color intensity. The flag 
  19005. byte must be set to 0. Each of the last three bytes specifies a color 
  19006. intensity, in the range 0 through 255, for a single primary color. 
  19007.  
  19008. If a byte contains 0, the corresponding primary color is not present. As the 
  19009. value in the byte increases, the intensity of the primary color increases. For 
  19010. example, if the byte contains 128, the primary color is pale; if the byte 
  19011. contains 255, the primary color is as intense as the device permits. 
  19012.  
  19013. The RGB value is determined by the following equation: 
  19014.  
  19015.     RGB Value = (R * 65536) + (G * 256) + B
  19016.  
  19017.     Where:
  19018.         R is the red intensity
  19019.         G is the green intensity
  19020.         B is the blue intensity
  19021.  
  19022. If all three bytes are set to 0, the resulting color is black; if they all are 
  19023. set to 255, the resulting color is white. The RGB value associated with each of 
  19024. the standard eight colors is in the following table. 
  19025.  
  19026. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  19027. ΓöéColor               ΓöéRGB value           Γöé
  19028. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19029. ΓöéBlack               Γöé0x00000000          Γöé
  19030. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19031. ΓöéRed                 Γöé0x00FF0000          Γöé
  19032. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19033. ΓöéGreen               Γöé0x0000FF00          Γöé
  19034. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19035. ΓöéBlue                Γöé0x000000FF          Γöé
  19036. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19037. ΓöéPink                Γöé0x00FF00FF          Γöé
  19038. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19039. ΓöéCyan                Γöé0x0000FFFF          Γöé
  19040. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19041. ΓöéYellow              Γöé0x00FFFF00          Γöé
  19042. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19043. ΓöéWhite               Γöé0x00FFFFFF          Γöé
  19044. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19045.  
  19046.  
  19047. ΓòÉΓòÉΓòÉ 10.2.2. Color Tables ΓòÉΓòÉΓòÉ
  19048.  
  19049. A color table is an array of RGB values. There are two kinds of color tables: 
  19050. logical and physical. The logical color table is a list of colors specific to a 
  19051. presentation space. An application typically uses a logical color table to 
  19052. define colors specific to that application. 
  19053.  
  19054. The physical color table specifies colors the device can generate currently. 
  19055. These device colors are shared by every application on the system. Because some 
  19056. display adapters cannot generate every possible device color at the same time, 
  19057. the physical color table can be a subset of the full range of possible device 
  19058. colors. The operating system maps the RGB values specified in the logical color 
  19059. table to device colors in the physical color table. 
  19060.  
  19061.  
  19062. ΓòÉΓòÉΓòÉ 10.2.3. Logical Color Table ΓòÉΓòÉΓòÉ
  19063.  
  19064. A logical color table contains a variable number of entries, each of which 
  19065. describes a different RGB (Red, Green, Blue) combination that produces a color. 
  19066. The principle of the color table is illustrated in the following figure. 
  19067.  
  19068. Logical Color Table 
  19069.  
  19070. This simplified example demonstrates that to produce yellow on the computer 
  19071. screen, red and green are mixed in equal intensities, and no blue is used at 
  19072. all. In this example, yellow is addressed in the color table by index 21. 
  19073. Notice that this is not the same index number used in the default logical color 
  19074. table, which indicates that this color table has been changed by the 
  19075. application. 
  19076.  
  19077. A logical color table is stored in a presentation space and is specific to that 
  19078. presentation space. A logical color table enables applications to specify 
  19079. colors as indexes rather than explicit RGB values. 
  19080.  
  19081. The colors displayed are likely to vary from one output device to another so 
  19082. the definitions in the color table can be fine-tuned to get the best results. 
  19083. Any color can be made more or less intense by altering its definition in the 
  19084. logical color table. 
  19085.  
  19086.  
  19087. Default Logical Color Table 
  19088.  
  19089. The PM provides a default logical color table, which defines the colors and the 
  19090. indexes that retrieve them, as shown in the following table. 
  19091.  
  19092. Default Logical Color Table 
  19093.  
  19094. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  19095. ΓöéColor Index     ΓöéIndex ΓöéEffect                                Γöé
  19096. Γöé                ΓöéNumberΓöé                                      Γöé
  19097. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19098. ΓöéCLR_FALSE       Γöé-5    ΓöéAll bits are set to 0.                Γöé
  19099. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19100. ΓöéCLR_TRUE        Γöé-4    ΓöéAll bits are set to 1.                Γöé
  19101. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19102. ΓöéCLR_DEFAULT     Γöé-3    ΓöéDefault value                         Γöé
  19103. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19104. ΓöéCLR_WHITE       Γöé-2    ΓöéWhite                                 Γöé
  19105. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19106. ΓöéCLR_BLACK       Γöé-1    ΓöéBlack                                 Γöé
  19107. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19108. ΓöéCLR_BACKGROUND  Γöé0     ΓöéNatural background color for the      Γöé
  19109. Γöé                Γöé      Γöédevice                                Γöé
  19110. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19111. ΓöéCLR_BLUE        Γöé1     ΓöéBlue                                  Γöé
  19112. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19113. ΓöéCLR_RED         Γöé2     ΓöéRed                                   Γöé
  19114. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19115. ΓöéCLR_PINK        Γöé3     ΓöéPink                                  Γöé
  19116. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19117. ΓöéCLR_GREEN       Γöé4     ΓöéGreen                                 Γöé
  19118. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19119. ΓöéCLR_CYAN        Γöé5     ΓöéCyan                                  Γöé
  19120. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19121. ΓöéCLR_YELLOW      Γöé6     ΓöéYellow                                Γöé
  19122. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19123. ΓöéCLR_NEUTRAL     Γöé7     ΓöéNeutral - The contrasting color to    Γöé
  19124. Γöé                Γöé      ΓöéCLR_BACKGROUND                        Γöé
  19125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19126. ΓöéCLR_DARKGRAY    Γöé8     ΓöéDark gray                             Γöé
  19127. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19128. ΓöéCLR_DARKBLUE    Γöé9     ΓöéDark blue                             Γöé
  19129. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19130. ΓöéCLR_DARKRED     Γöé10    ΓöéDark red                              Γöé
  19131. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19132. ΓöéCLR_DARKPINK    Γöé11    ΓöéDark pink                             Γöé
  19133. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19134. ΓöéCLR_DARKGREEN   Γöé12    ΓöéDark green                            Γöé
  19135. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19136. ΓöéCLR_DARKCYAN    Γöé13    ΓöéDark cyan                             Γöé
  19137. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19138. ΓöéCLR_BROWN       Γöé14    ΓöéBrown                                 Γöé
  19139. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19140. ΓöéCLR_PALEGRAY    Γöé15    ΓöéPale gray                             Γöé
  19141. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19142.  
  19143. Note:  Entries after CLR_PALEGRAY have device-dependent defaults. 
  19144.  
  19145. PM maps the color index name to the index number (shown in the second column of 
  19146. the previous table), then uses that number to address the appropriate color. 
  19147.  
  19148.  
  19149. Device-Independent Color Indexing 
  19150.  
  19151. Three of the index names provide a level of device independence in choosing 
  19152. colors:  CLR_DEFAULT, CLR_BACKGROUND, and CLR_NEUTRAL. These indexes enable an 
  19153. application to select colors according to their purpose, and thus build device 
  19154. independence into your applications. The purpose of a color does not vary from 
  19155. one device to another, although the actual color used to implement that purpose 
  19156. might. The following table describes these indexes and the purpose of each: 
  19157.  
  19158. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  19159. ΓöéIndex               ΓöéPurpose                                 Γöé
  19160. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19161. ΓöéCLR_BACKGROUND      ΓöéThe natural background color for the    Γöé
  19162. Γöé                    Γöédevice. This is the color of the paper  Γöé
  19163. Γöé                    Γöéon a printer, and the window background Γöé
  19164. Γöé                    Γöécolor (white, by default) on a display. Γöé
  19165. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19166. ΓöéCLR_NEUTRAL         ΓöéThe contrast color to CLR_BACKGROUND.   Γöé
  19167. Γöé                    ΓöéThis is usually black on a printer, and Γöé
  19168. Γöé                    Γöéthe default window text color (black, byΓöé
  19169. Γöé                    Γöédefault) on a display.                  Γöé
  19170. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19171. ΓöéCLR_DEFAULT         ΓöéUnless redefined, this has the same     Γöé
  19172. Γöé                    Γöéeffect as CLR_NEUTRAL.                  Γöé
  19173. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19174.  
  19175. The colors produced by CLR_DEFAULT, CLR_BACKGROUND, and CLR_NEUTRAL in the 
  19176. default logical color table depend on the output device. For example, 
  19177. CLR_NEUTRAL could produce black on a device with a white background or white on 
  19178. a device with a black background. 
  19179.  
  19180.  
  19181. ΓòÉΓòÉΓòÉ 10.2.4. Defining a Logical Color Table ΓòÉΓòÉΓòÉ
  19182.  
  19183. To change the values in the default logical color table (that is, to load a new 
  19184. logical color table), use GpiCreateLogColorTable. Using this function, an 
  19185. application can do the following: 
  19186.  
  19187.      Replace part or all of the default color table. 
  19188.      Add color definitions to the default color table. 
  19189.      Reset the logical color table to its default values. 
  19190.  
  19191.  There are two methods of making changes: 
  19192.  
  19193.      To add to a table or change some of its  contents, rather than replace 
  19194.       the table completely, supply an array of color indexes and their 
  19195.       associated RGB values. 
  19196.  
  19197.      To load a consecutive sequence of index values, supply only an array of 
  19198.       RGB values without index values. 
  19199.  
  19200.  
  19201.  Color Tables in Index Mode 
  19202.  
  19203.  The default logical color table is defined as an array of color indexes and 
  19204.  their associated RGB values. A table in this format is in index mode. 
  19205.  
  19206.  To alter a logical color table in index mode, specify either LCOLF_INDRGB or 
  19207.  LCOLF_CONSECRGB as the format value in GpiCreateLogColorTable. If an 
  19208.  application uses the color index names to address the contents of a loaded 
  19209.  color table in index mode, the color identified by the associated index number 
  19210.  is retrieved. For example, CLR_NEUTRAL produces the color addressed by index 
  19211.  number 7. If CLR_NEUTRAL must be blue, the application must define the color 
  19212.  table so that index number 7 addresses the RGB definition of the appropriate 
  19213.  shade of blue. 
  19214.  
  19215.  If an application uses the format LCOLF_INDRGB when calling 
  19216.  GpiCreateLogColorTable, the application supplies an array of index and RGB 
  19217.  pairs to update the table. These values do not have to be consecutive. An 
  19218.  application can change the contents of an existing table and add entries to 
  19219.  the end of the table. 
  19220.  
  19221.  If an application calls GpiCreateLogColorTable using the LCOLF_CONSECRGB 
  19222.  format, the application supplies an array of RGB values and a starting index. 
  19223.  When using this format, the RGB values must be consecutive. You cannot use a 
  19224.  single call to GpiCreateLogColorTable to redefine CLR_BLUE and CLR_PINK 
  19225.  without also specifying an RGB value for CLR_RED. As with LCOLF_INDRGB, this 
  19226.  format can be used to change the contents of the existing table and to add 
  19227.  entries to the end of the table. 
  19228.  
  19229.  When an application calls GpiSetAttrs to put a value into the color field of a 
  19230.  graphics primitive attribute structure, the value is an index into the logical 
  19231.  color table. When the operating system draws the primitive, it uses this index 
  19232.  to determine the RGB value specified in the logical color table by the 
  19233.  application. It then searches the physical color table for the color closest 
  19234.  to this RGB value. The operating system then draws the primitive, using the 
  19235.  color from the physical color table. How closely the drawn colors match the 
  19236.  colors in the logical color table depends on the device colors in the physical 
  19237.  color table. 
  19238.  
  19239.  
  19240.  Color Tables in RGB Mode 
  19241.  
  19242.  The color values specified with GpiSetAttrs  and GpiSetColor also can be 
  19243.  specified directly as RGB values rather than as indexes. To enable this, the 
  19244.  logical color table must be switched into RGB mode by calling 
  19245.  GpiCreateLogColorTable, specifying a format of LCOLF_RGB. (No color array is 
  19246.  passed.) 
  19247.  
  19248.  If the color table is in RGB mode, it can be switched back to index mode and 
  19249.  reset to its original default values by specifying either LCOLF_INGRGB or 
  19250.  LCOLF_CONSECRGB in GpiCreateLogColorTable. 
  19251.  
  19252.  
  19253. ΓòÉΓòÉΓòÉ 10.2.5. Querying the Available Colors ΓòÉΓòÉΓòÉ
  19254.  
  19255. Several query functions are provided for applications to get information about 
  19256. the current logical and physical color tables before defining a logical color 
  19257. table. 
  19258.  
  19259. Applications use GpiQueryColorData to determine whether the default logical 
  19260. color table is in effect. If it is not, the following information about the 
  19261. loaded logical color table is returned: 
  19262.  
  19263.      Format of the current logical color table 
  19264.  
  19265.      Smallest and largest color indexes (if the table is in index mode) 
  19266.       supported in this color table. The smallest color index is always 0, and 
  19267.       the largest color index is never less than 15, because deleting entries 
  19268.       from the default logical color table is not permitted. 
  19269.  
  19270.  GpiQueryRealColors returns the RGB values of each of the distinct colors 
  19271.  defined in the physical color table of the current device. It also can return 
  19272.  the index in the current logical color table that references each of the 
  19273.  colors in the physical table. 
  19274.  
  19275.  To determine the available colors nearest to a specified color on a particular 
  19276.  device, call GpiQueryNearestColor, which accepts as input the RGB value of the 
  19277.  desired color. The function returns the RGB value of the nearest available 
  19278.  color in the physical color table of the associated device. 
  19279.  
  19280.  Applications can use GpiQueryRGBColor to determine the RGB value of a 
  19281.  particular color. GpiQueryRGBColor accepts as input the index to the logical 
  19282.  color table entry of the color in question. Output from this function is the 
  19283.  RGB value that the index would reference in the physical color table. If a 
  19284.  logical color table is loaded in RGB mode, GpiQueryRGBColor returns the same 
  19285.  results as GpiQueryNearestColor. 
  19286.  
  19287.  Conversely, to determine the index value that references a given RGB color (or 
  19288.  the closest match to that color) in the physical color table, an application 
  19289.  uses GpiQueryColorIndex. The application can determine which colors are in the 
  19290.  current logical color table by calling GpiQueryLogColorTable. To determine 
  19291.  which colors are in the physical color table, call GpiQueryRealColors. 
  19292.  
  19293.  
  19294. ΓòÉΓòÉΓòÉ 10.2.6. Physical Color Table ΓòÉΓòÉΓòÉ
  19295.  
  19296. Each output device has its own physical color table, which is organized like a 
  19297. logical color table. The physical color table contains the RGB color 
  19298. definitions of the distinct colors that the device can produce, while a logical 
  19299. color table contains the definitions of the colors as chosen by an application. 
  19300. When an application draws on an output device, the PM maps the index value that 
  19301. addresses the current color in the logical color table to the index that 
  19302. retrieves the closest match for the current color in the physical color table. 
  19303.  
  19304. Because this substitution occurs when the graphics are drawn, the presentation 
  19305. space can be associated with a number of different device contexts without 
  19306. invalidating the logical color definitions. For example, an application can 
  19307. create a picture on the screen using a wide range of colors, then direct that 
  19308. drawing to an eight-pen vector plotter. The drawing is reproduced without 
  19309. having to be re-created. Although the picture, as drawn by the plotter, does 
  19310. not have the variety of colors displayed on the screen, the substitution 
  19311. process selects the nearest match for each color on the screen from the eight 
  19312. available colors on the plotter. 
  19313.  
  19314.  
  19315. ΓòÉΓòÉΓòÉ 10.2.7. Palette Manager ΓòÉΓòÉΓòÉ
  19316.  
  19317. Applications can use GpiCreatePalette to change the physical color palette by 
  19318. creating a new palette. This function is used if the application has specific 
  19319. color needs and must ensure that the color is part of the physical color 
  19320. palette. GpiCreatePalette also enables an application to prevent dithering of 
  19321. the 16 default colors by setting the flag parameter to LCOL_PURECOLOR. If the 
  19322. full 256 colors in the palette are needed, the application can set the flag to 
  19323. LCOL_OVERRIDE_DEFAULT_COLORS. It is recommended that the palette manager 
  19324. functions be used only when really necessary because the operating system 
  19325. cannot guarantee consistent colors in other windows and the ability to change 
  19326. the physical palette is device dependent. 
  19327.  
  19328. After the palette is created, an application can set or change any of the 
  19329. values in the palette by calling GpiSetPaletteEntries. To delete the palette, 
  19330. applications use GpiDeletePalette, passing the handle of the palette to be 
  19331. deleted. (The handle is returned by GpiCreatePalette when the palette is 
  19332. created.) 
  19333.  
  19334. GpiQueryPalette enables applications to determine the palette currently 
  19335. selected for a given presentation space. A palette can be used by more than one 
  19336. presentation space at the same time. The operating system maintains a count of 
  19337. the number of presentation spaces using a specific palette. Complete 
  19338. information on the current palette can be accessed by GpiQueryPaletteInfo. 
  19339.  
  19340. Palettes also can be shared by using a palette handle. 
  19341.  
  19342. When coding an application, color table functions and color palette functions 
  19343. must not be mixed. The application can call DevQueryCaps to determine whether 
  19344. the hardware supports palettes, then call the appropriate functions. 
  19345.  
  19346.  
  19347. Realizing a Color Palette 
  19348.  
  19349. WinRealizePalette maps the colors requested by the application into the color 
  19350. palette for the system. When the application's window is activated, the palette 
  19351. changes are transferred, or realized, into the physical palette for the system. 
  19352.  
  19353. When a palette is realized, there might not be enough empty palette entries to 
  19354. accommodate the additional palette changes (a maximum of 256 entries). For 
  19355. example, it is possible that some of the colors changed in the physical palette 
  19356. are being used by another application. In this situation, a WM_REALIZEPALETTE 
  19357. message is posted to all the applications running on the desktop. 
  19358.  
  19359. On receiving the WM_REALIZEPALETTE message, applications using palette manager 
  19360. functions must repaint their screens. The original application colors are 
  19361. mapped to the closest matching color in the new palette. Applications that do 
  19362. not use palette manager functions normally perform default processing within 
  19363. their applications causing a repaint of their windows with the closest match 
  19364. from the palette. If there are no changes, just additions, to the physical 
  19365. palette, no message is sent. 
  19366.  
  19367. Note:  The palette manager maps a window's colors to the closest available 
  19368. value in the palette when the physical palette has to be changed, but this does 
  19369. not guarantee that the color will be a close match to the original color used. 
  19370.  
  19371. As the focus changes from window to window, the physical palette changes 
  19372. according to the activated window. Notification messages are sent as necessary 
  19373. to other applications. 
  19374.  
  19375. If the physical color values in the palette have to change to accommodate the 
  19376. number of palette entries passed from the application when a palette is 
  19377. realized, the number of altered entries in the physical palette is returned by 
  19378. WinRealizePalette. 
  19379.  
  19380. Color palette realization is available only to systems that have a minimum of 
  19381. 256 colors. 
  19382.  
  19383.  
  19384. ΓòÉΓòÉΓòÉ 10.2.8. Color Attribute ΓòÉΓòÉΓòÉ
  19385.  
  19386. The PM graphic interface uses a variety of colors. These colors are referred to 
  19387. as the system colors, and they are defined in the system color table, which is 
  19388. separate from an application's logical color table. To find out the RGB values 
  19389. of the system colors, call WinQuerySysColor. 
  19390.  
  19391. The colors of graphic primitives are specified separately from the system 
  19392. colors. Every primitive has a foreground color, and some also have a background 
  19393. color. 
  19394.  
  19395.  
  19396. Primitive Foreground 
  19397.  
  19398. The foreground of a primitive is the primitive itself. For example, the 
  19399. foreground of a full arc primitive is the full arc, as shown in the following 
  19400. figure. 
  19401.  
  19402. Foreground of a Primitive 
  19403.  
  19404. The full arc primitive is drawn in a different color from the window 
  19405. background. 
  19406.  
  19407. By default, the foreground color of all primitives is the color addressed by 
  19408. the index CLR_DEFAULT. In the default color table, this produces black on a 
  19409. graphics display. If the application replaces the default logical color table, 
  19410. CLR_DEFAULT produces the color addressed by index number 7 (CLR_NEUTRAL). 
  19411.  
  19412.  
  19413. Primitive Background 
  19414.  
  19415. The following primitives have a background: 
  19416.  
  19417.      Areas 
  19418.      Character strings 
  19419.      Images 
  19420.      Markers 
  19421.  
  19422.  The background of any character or marker primitive, whether the primitive is 
  19423.  from an image or an outline font, is the entire character or marker box. First 
  19424.  the background is drawn, then the foreground is drawn on top of it. Similarly, 
  19425.  the background of an area primitive is the entire area to be filled. The 
  19426.  background of an image primitive, however, is that part of the primitive in 
  19427.  which the pels are not set. The following figure shows the background of a 
  19428.  primitive. 
  19429.  
  19430.  Background of a Primitive 
  19431.  
  19432.  The background of this character-string primitive is the entire character box. 
  19433.  
  19434.  The index to the default background color is CLR_BACKGROUND, which provides a 
  19435.  background color appropriate for the device. On a printer, CLR_BACKGROUND is 
  19436.  the color of the paper. On a display screen, CLR_BACKGROUND is the default 
  19437.  window background color. 
  19438.  
  19439.  
  19440.  Changing the Foreground and Background Colors of Primitives 
  19441.  
  19442.  To change the current foreground color, use GpiSetColor. As input, the 
  19443.  application supplies either the index to the required color in the current 
  19444.  logical color table or the RGB value of the color, depending on the mode of 
  19445.  the table. Color indexes higher than those supplied in the default color table 
  19446.  must be loaded explicitly before they can be used. 
  19447.  
  19448.  It is possible to specify one of the system colors (for example, 
  19449.  SYSCLR_ACTIVEBORDER) as the current foreground (or background) color of a 
  19450.  primitive. The color appears as defined in the system color table, and the 
  19451.  logical color table is not used. 
  19452.  
  19453.  The specified color becomes the current color, and the foreground of any 
  19454.  primitive drawn subsequently is drawn in that color. The current foreground 
  19455.  color for a particular primitive type is set by calling GpiSetAttrs. For 
  19456.  example, if an application sets the current foreground color to CLR_RED by 
  19457.  calling GpiSetColor, and sets the current foreground color for marker 
  19458.  primitives to CLR_CYAN by calling GpiSetAttrs, all subsequent markers are 
  19459.  cyan, and all other primitives are red. 
  19460.  
  19461.  To change the current primitive background color, call GpiSetBackColor. To 
  19462.  ensure that this color is different from the background color of the output 
  19463.  area (so that the entire primitive background is visible), the current window 
  19464.  background color must not be the same as the current primitive background 
  19465.  color. Also, select an appropriate background mix attribute. 
  19466.  
  19467.  GpiQueryBackColor returns the current background color setting for a character 
  19468.  primitive. To learn the current foreground color setting, use GpiQueryColor. 
  19469.  GpiQueryAttrs can be used to determine the current foreground and background 
  19470.  color values for a single primitive type. 
  19471.  
  19472.  
  19473. ΓòÉΓòÉΓòÉ 10.2.9. Color Output and Mix Attributes ΓòÉΓòÉΓòÉ
  19474.  
  19475. A mix attribute is a bitwise operation on the color indexes in a device's 
  19476. logical color table. Mix attributes enable colors to be specified in relation 
  19477. to other colors. When an application draws a graphics primitive, the operating 
  19478. system uses a mix attribute to determine the color that appears on the output 
  19479. device. 
  19480.  
  19481. For example, instead of specifying that a line should be black and, therefore, 
  19482. invisible if the background also is black, an application can use a mix 
  19483. attribute of FM_XOR to specify that the line always should be drawn the inverse 
  19484. of the background color. 
  19485.  
  19486. Suppose an application has set the lColor field in the LINEBUNDLE structure to 
  19487. CLR_RED and the usMixMode field in the same structure to FM_OR. The current 
  19488. color of the drawing surface is CLR_GREEN. To determine the color of a line, 
  19489. the operating system performs a bitwise OR operation on the indexes of these 
  19490. colors, as follows: 
  19491.  
  19492.           0010  (the default index for red)
  19493.           0100  (the default index for green)
  19494.          ------
  19495.           0110  (result of bitwise OR)
  19496.  
  19497. In this case, the result is 6-the index for yellow. This means that even though 
  19498. the application specified CLR_RED in the LINEBUNDLE structure, a yellow line 
  19499. appears when the application calls any of the functions that draw a line 
  19500. primitive. 
  19501.  
  19502.  
  19503. ΓòÉΓòÉΓòÉ 10.2.10. Mix Attribute ΓòÉΓòÉΓòÉ
  19504.  
  19505. The mix attribute determines how each primitive an application draws is 
  19506. combined with any existing drawing. In color applications, the mix attribute 
  19507. determines the color that results when one primitive is drawn on top of 
  19508. another. There are two forms of the mix attribute:  foreground mix and 
  19509. background mix. 
  19510.  
  19511. The foreground mix attribute governs how the foreground of a primitive is 
  19512. combined with the existing drawing, and it applies to all primitive types. The 
  19513. background mix attribute governs how the background of a primitive is combined 
  19514. with the existing drawing, and it is applicable only to those primitives that 
  19515. have a background. Primitives that can be affected by the background mix 
  19516. attribute are areas, character strings, images, and markers. The primitive 
  19517. attribute data structures contain fields for both foreground and background 
  19518. color and mix attributes. 
  19519.  
  19520. There are 17 foreground mix attributes. For each mix attribute, the indexes of 
  19521. the foreground and current drawing-surface colors are combined by using one of 
  19522. the bitwise operators. The available foreground mix settings are listed in the 
  19523. following table. 
  19524.  
  19525. Foreground Mix Attributes 
  19526.  
  19527. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  19528. ΓöéMix Attribute  ΓöéEffect         ΓöéDescription                   Γöé
  19529. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19530. ΓöéFM_DEFAULT     ΓöéDefault        ΓöéDefault foreground mix        Γöé
  19531. Γöé               Γöé               Γöéattribute (overpaint).        Γöé
  19532. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19533. ΓöéFM_OR          ΓöéOR             ΓöéIndex value of the final colorΓöé
  19534. Γöé               Γöé               Γöéis determined by a bitwise OR Γöé
  19535. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19536. Γöé               Γöé               Γöéforeground color and the indexΓöé
  19537. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19538. Γöé               Γöé               Γöésurface.                      Γöé
  19539. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19540. ΓöéFM_OVERPAINT   ΓöéOverpaint      ΓöéIndex value of the final colorΓöé
  19541. Γöé               Γöé               Γöéis that of the foreground     Γöé
  19542. Γöé               Γöé               Γöécolor. This is the default    Γöé
  19543. Γöé               Γöé               Γöéforeground mix attribute.     Γöé
  19544. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19545. ΓöéFM_XOR         ΓöéExclusive-OR   ΓöéIndex value of the final colorΓöé
  19546. Γöé               Γöé(XOR)          Γöéis determined by a bitwise XORΓöé
  19547. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19548. Γöé               Γöé               Γöéforeground color and the indexΓöé
  19549. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19550. Γöé               Γöé               Γöésurface.                      Γöé
  19551. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19552. ΓöéFM_LEAVEALONE  ΓöéLeave-alone    ΓöéIndex value of the final colorΓöé
  19553. Γöé               Γöé(Invisible)    Γöéis that of the index of the   Γöé
  19554. Γöé               Γöé               Γöécolor of the drawing surface. Γöé
  19555. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19556. ΓöéFM_AND         ΓöéAND            ΓöéIndex value of the final colorΓöé
  19557. Γöé               Γöé               Γöéis determined by a bitwise ANDΓöé
  19558. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19559. Γöé               Γöé               Γöéforeground color and the indexΓöé
  19560. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19561. Γöé               Γöé               Γöésurface.                      Γöé
  19562. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19563. ΓöéFM_SUBTRACT    Γöé(Inverse       ΓöéIndex value of the final colorΓöé
  19564. Γöé               ΓöéSource) AND    Γöéis determined by inverting theΓöé
  19565. Γöé               ΓöéDestination    Γöéindex of the foreground color Γöé
  19566. Γöé               Γöé               Γöéand performing a bitwise AND  Γöé
  19567. Γöé               Γöé               Γöéoperation on this value and   Γöé
  19568. Γöé               Γöé               Γöéthe index of the color of the Γöé
  19569. Γöé               Γöé               Γöédrawing surface.              Γöé
  19570. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19571. ΓöéFM_MASKSRCNOT  ΓöéSource AND     ΓöéIndex value of the final colorΓöé
  19572. Γöé               Γöé(Inverse       Γöéis determined by inverting theΓöé
  19573. Γöé               ΓöéDestination)   Γöéindex value of the            Γöé
  19574. Γöé               Γöé               Γöédrawing-surface color and     Γöé
  19575. Γöé               Γöé               Γöéperforming a bitwise AND      Γöé
  19576. Γöé               Γöé               Γöéoperation on this value and   Γöé
  19577. Γöé               Γöé               Γöéthe index value of the        Γöé
  19578. Γöé               Γöé               Γöéforeground color.             Γöé
  19579. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19580. ΓöéFM_ZERO        ΓöéAll zeros      ΓöéRGB value of the final color'sΓöé
  19581. Γöé               Γöé               Γöéis always 0x00000000.         Γöé
  19582. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19583. ΓöéFM_NOTMERGESRC ΓöéInverse (SourceΓöéIndex value of the final colorΓöé
  19584. Γöé               ΓöéOR Destination)Γöéis always the inverse of the  Γöé
  19585. Γöé               Γöé               ΓöéFM_OR result.                 Γöé
  19586. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19587. ΓöéFM_NOTXORSRC   ΓöéInverse (SourceΓöéIndex value of the final colorΓöé
  19588. Γöé               ΓöéXOR            Γöéis always the inverse of the  Γöé
  19589. Γöé               ΓöéDestination)   ΓöéFM_XOR result.                Γöé
  19590. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19591. ΓöéFM_INVERT      ΓöéInverse        ΓöéIndex value of the final colorΓöé
  19592. Γöé               Γöé(Destination)  Γöéis always the inverse of the  Γöé
  19593. Γöé               Γöé               Γöéindex of the color of the     Γöé
  19594. Γöé               Γöé               Γöédrawing surface.              Γöé
  19595. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19596. ΓöéFM_MERGESRCNOT ΓöéSource OR      ΓöéIndex value of the final colorΓöé
  19597. Γöé               Γöé(Inverse       Γöéis determined by performing a Γöé
  19598. Γöé               ΓöéDestination)   Γöébitwise OR operation on the   Γöé
  19599. Γöé               Γöé               Γöéindex of the foreground color Γöé
  19600. Γöé               Γöé               Γöéand the inverse of the index  Γöé
  19601. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19602. Γöé               Γöé               Γöésurface.                      Γöé
  19603. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19604. ΓöéFM_NOTCOPYSRC  ΓöéInverse        ΓöéIndex value of the final colorΓöé
  19605. Γöé               Γöé(Source)       Γöéis the inverse of the index ofΓöé
  19606. Γöé               Γöé               Γöéthe foreground color.         Γöé
  19607. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19608. ΓöéFM_MERGENOTSRC Γöé(Inverse       ΓöéIndex value of the final colorΓöé
  19609. Γöé               ΓöéSource) OR     Γöéis determined by performing a Γöé
  19610. Γöé               ΓöéDestination    Γöébitwise AND operation on the  Γöé
  19611. Γöé               Γöé               Γöéindex of the drawing surface'sΓöé
  19612. Γöé               Γöé               Γöécolor and the inverse of the  Γöé
  19613. Γöé               Γöé               Γöéindex of the foreground color.Γöé
  19614. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19615. ΓöéFM_NOTMASKSRC  ΓöéInverse (SourceΓöéIndex value of the final colorΓöé
  19616. Γöé               ΓöéAND            Γöéis the inverse of the FM_AND  Γöé
  19617. Γöé               ΓöéDestination)   Γöéresult.                       Γöé
  19618. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19619. ΓöéFM_ONE         ΓöéAll 1's.       ΓöéRGB value of the final color  Γöé
  19620. Γöé               Γöé               Γöéis always 0x00FFFFFF.         Γöé
  19621. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19622.  
  19623. There are five background mix attributes. For each mix attribute, the index 
  19624. value for the background color and the current drawing-surface color (in the 
  19625. device's physical color table) are combined using one of the bitwise operators. 
  19626.  
  19627. The RGB values are those from the physical color table. When the result of the 
  19628. mix attribute's bitwise operation defines a color different from that of both 
  19629. the drawing surface and the drawing attribute, the resulting index accesses an 
  19630. RGB color in the physical table. The color, therefore, is unpredictable unless 
  19631. the logical color table has been realized (using the palette manager). 
  19632.  
  19633. The first five of the foreground mix attributes also are available as 
  19634. background mix attributes. The background mix attributes are listed in the 
  19635. following table. 
  19636.  
  19637. Background Mix Attributes 
  19638.  
  19639. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  19640. ΓöéMix Attribute  ΓöéEffect         ΓöéDescription                   Γöé
  19641. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19642. ΓöéBM_DEFAULT     ΓöéDefault        ΓöéDefault background mix        Γöé
  19643. Γöé               Γöé               Γöéattribute (Leave-alone).      Γöé
  19644. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19645. ΓöéBM_OR          ΓöéOR             ΓöéIndex value of the final colorΓöé
  19646. Γöé               Γöé               Γöéis determined by a bitwise OR Γöé
  19647. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19648. Γöé               Γöé               Γöébackground color and the indexΓöé
  19649. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19650. Γöé               Γöé               Γöésurface.                      Γöé
  19651. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19652. ΓöéBM_OVERPAINT   ΓöéOverpaint      ΓöéIndex value of the final colorΓöé
  19653. Γöé               Γöé               Γöéis that of the background     Γöé
  19654. Γöé               Γöé               Γöécolor.                        Γöé
  19655. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19656. ΓöéBM_XOR         ΓöéExclusive-OR   ΓöéIndex value of the final colorΓöé
  19657. Γöé               Γöé(XOR)          Γöéis determined by a bitwise XORΓöé
  19658. Γöé               Γöé               Γöéoperation on the index of the Γöé
  19659. Γöé               Γöé               Γöébackground color and the indexΓöé
  19660. Γöé               Γöé               Γöéof the color of the drawing   Γöé
  19661. Γöé               Γöé               Γöésurface.                      Γöé
  19662. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19663. ΓöéBM_LEAVEALONE  ΓöéLeave-alone    ΓöéIndex value of the final colorΓöé
  19664. Γöé               Γöé(Invisible)    Γöéis that of the drawing-surfaceΓöé
  19665. Γöé               Γöé               Γöécolor.                        Γöé
  19666. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19667.  
  19668. The most frequently used foreground mix attributes are FM_OVERPAINT, which is 
  19669. the default value, FM_OR, and FM_XOR. The most frequently used background mix 
  19670. attributes are BM_LEAVEALONE, which is the default value, and BM_OVERPAINT. 
  19671.  
  19672.  
  19673. Overpaint Mix Attribute 
  19674.  
  19675. When using FM_OVERPAINT, the foreground of the primitive replaces any existing 
  19676. drawing in the same area of the presentation page. If the existing drawing is 
  19677. yellow, for example, and the new drawing is red, the drawing is red at the 
  19678. points of overlap. (This is the default foreground mix attribute.) Because one 
  19679. color is replacing another and no color mixing is being performed, the effects 
  19680. of the overpaint mix attribute are entirely predictable. This is shown in the 
  19681. following figure. 
  19682.  
  19683. Overpaint Foreground Mix Attribute 
  19684.  
  19685. The circle is drawn on top of the square. At the points of overlap, the output 
  19686. is the color of the circle. 
  19687.  
  19688. When using BM_OVERPAINT, the primitive background replaces the existing 
  19689. drawing. drawing, as shown in the following figure. 
  19690.  
  19691. Overpaint Background Mix Attribute 
  19692.  
  19693. Using BM_OVERPAINT, the background of the primitive is apparent only if it is 
  19694. drawn in a different color from the output-area background. Notice that, in 
  19695. this example, the foreground mix attribute is FM_OVERPAINT. 
  19696.  
  19697.  
  19698. OR Mix Attribute 
  19699.  
  19700. When using FM_OR, the foreground of the new primitive is merged with the 
  19701. existing drawing at the points of overlap. This is effected by ORing the 
  19702. indexes of the overlapping colors to produce a third color. The resulting color 
  19703. is unpredictable if the logical color table has not been realized (using the 
  19704. palette manager). The OR mix attribute is useful for making the common points 
  19705. of two graphics distinct from the points belonging to one of the graphics only, 
  19706. as shown in the following figure. 
  19707.  
  19708. OR Mix Attribute 
  19709.  
  19710. The circle is drawn on top of the square. At the points of overlap, indexes are 
  19711. OR'd to produce a new index referencing a new RGB color in the physical color 
  19712. table. 
  19713.  
  19714. When using the BM_OR attribute, the background of the primitive is merged with 
  19715. the existing drawing according to the same rules that apply to the FM_OR 
  19716. attribute. 
  19717.  
  19718.  
  19719. Exclusive-OR (XOR) Mix Attribute 
  19720.  
  19721. The FM_XOR attribute enables objects to be drawn in such a way that they can be 
  19722. removed easily by simply drawing them a second time using the FM_XOR attribute. 
  19723. The FM_XOR attribute is available on display devices only and is useful for 
  19724. graphics animation when an application must move an individual graphic and 
  19725. completely restore the graphics that it originally overlapped. Typically, an 
  19726. application would do the following: 
  19727.  
  19728.    1. Draw the graphics object using the FM_XOR attribute. 
  19729.  
  19730.    2. Calculate the object's next position. 
  19731.  
  19732.    3. Draw the object again in its current position, still using the FM_XOR 
  19733.       attribute. This effectively erases it from its current position without 
  19734.       destroying the graphics with which it overlaps. 
  19735.  
  19736.    4. Draw the object in its new position using the FM_XOR mix attribute. 
  19737.  
  19738.  For retained graphics, this sequence can be automated to some extent by 
  19739.  defining specific graphics segments as dynamic. Dynamic graphics always are 
  19740.  drawn using the FM_XOR attribute, regardless of the current mix attributes. 
  19741.  
  19742.  The effects of the FM_XOR attribute are shown in the following figure. 
  19743.  
  19744.  Exclusive-OR (XOR) Mix Attribute 
  19745.  
  19746.  The circle is drawn on top of the square. At the points of overlap, graphics 
  19747.  are not drawn if the two overlapping figures are an identical color. 
  19748.  
  19749.  When using the BM_XOR attribute, the background of the primitive is merged 
  19750.  with the existing picture according to the same rules that apply to the FM_XOR 
  19751.  attribute. 
  19752.  
  19753.  
  19754.  Leave-Alone Mix Attribute 
  19755.  
  19756.  The leave-alone mix attribute most often is used as a background mix 
  19757.  attribute. When using the FM_LEAVEALONE attribute, the foreground of the 
  19758.  primitive is not drawn. When using the BM_LEAVEALONE attribute, the background 
  19759.  of the primitive is not drawn, as shown in the following figure. 
  19760.  
  19761.  Leave-Alone Background Mix Attribute The leave-alone background mix attribute 
  19762.  is the background mix attribute that most often is used for character strings 
  19763.  and marker primitives. It is generally used with a foreground mix value of 
  19764.  FM_OVERPAINT. 
  19765.  
  19766.  
  19767.  Specifying Foreground and Background Mix Attributes 
  19768.  
  19769.  Specify the current foreground mix value for all primitives using GpiSetMix. 
  19770.  To learn the current foreground mix setting, use GpiQueryMix, which returns 
  19771.  the current foreground mix setting for a character string primitive. 
  19772.  GpiQueryAttrs can be used to determine the current foreground and background 
  19773.  mix values for a single primitive type. 
  19774.  
  19775.  To specify a background mix value for all primitives, use GpiSetBackMix. 
  19776.  GpiQueryBackMix returns the current background mix value for a 
  19777.  character-string primitive. To specify the current foreground and background 
  19778.  mix values for a single primitive type, call GpiSetAttrs. 
  19779.  
  19780.  Note:  Not all devices support all of the background and foreground mix 
  19781.  attributes described. When a device does not support the mix attribute chosen 
  19782.  by an application, the default mix attribute is used; no error condition is 
  19783.  raised. DevQueryCaps can be used to determine whether a mix attribute is 
  19784.  supported on a specific device. 
  19785.  
  19786.  
  19787. ΓòÉΓòÉΓòÉ 10.2.11. Color on Advanced Display Devices ΓòÉΓòÉΓòÉ
  19788.  
  19789. Some devices can display simultaneously a fixed number of colors (typically 
  19790. 156), chosen from a much larger number of colors (often more than 256000). An 
  19791. application can use the palette manager functions to take advantage of the 
  19792. extra capabilities of these devices. These functions enable an application to 
  19793. change the colors in a device's physical color table and the displayed colors 
  19794. rapidly without explicitly redrawing the screen. 
  19795.  
  19796. An application can use the CAPS_ADDITIONAL_GRAPHICS option of DevQueryCaps to 
  19797. determine whether the display device supports palette functions. 
  19798.  
  19799.  
  19800. ΓòÉΓòÉΓòÉ 10.2.12. Dithering ΓòÉΓòÉΓòÉ
  19801.  
  19802. If an application requests a color not available in the physical color table, 
  19803. the operating system can approximate the color by a process called dithering. 
  19804. For example, if the physical color table does not contain a light green color 
  19805. but does contain a yellow and a green, the operating system can create what 
  19806. appears to be light green by mixing yellow pels and green pels. Dithering is a 
  19807. variation on the way red, green, and blue color guns illuminate the phosphors 
  19808. in a single pel to produce a color that is not pure red, green, or blue (for 
  19809. example, yellow). 
  19810.  
  19811. The dithering process takes advantage of the way the human eye interprets 
  19812. color. If every other pel is set to one color, and all the intermediate pels to 
  19813. a different color, together they produce the effect of a third color at normal 
  19814. viewing distances. 
  19815.  
  19816. The checkerboard effect is just one of the ways in which dithering can be 
  19817. implemented. Dithering works only when producing a solid mass of color, such as 
  19818. an area fill pattern. It does not have the desired effect on line primitives. 
  19819.  
  19820. Dithering is especially important on monochrome devices. By combining various 
  19821. combinations of black pels with white pels, the operating system can create 
  19822. numerous shades of gray. 
  19823.  
  19824. To use only the pure colors defined in the physical color table, that is, to 
  19825. prevent color dithering, set LCOL_PURECOLOR in GpiCreateLogColorTable. When 
  19826. LCOL_PURECOLOR is set, the nearest available color to the one selected is used. 
  19827.  
  19828.  
  19829. ΓòÉΓòÉΓòÉ 10.2.13. Considerations When Using Monochrome Displays ΓòÉΓòÉΓòÉ
  19830.  
  19831. When a graphic primitive that is drawn in color is displayed on a monochrome 
  19832. display, the operating system maps the colors that the application uses to the 
  19833. colors supported by the monochrome display. 
  19834. Drawing Color Graphics on Monochrome Devices 
  19835.  
  19836. When mapping color graphics to a monochrome device (screen, printer, or bit 
  19837. map), the monochrome device has a reset color and a contrast color. The reset 
  19838. color is the color GpiErase clears to and is either black or white. If the 
  19839. reset color is black, the contrast color is white, and if the reset color is 
  19840. white, the contrast color is black. 
  19841.  
  19842. To determine whether the reset color is to be black or white, the color 
  19843. retrieved by the index CLR_BACKGROUND from the current logical color table is 
  19844. examined. If a logical color table has not been loaded, CLR_BACKGROUND is 
  19845. either the paper color on a printer or SYSCLR_WINDOW on a display. If a logical 
  19846. color table has been loaded, CLR_BACKGROUND is the color addressed by color 
  19847. index 0 on any device. 
  19848.  
  19849. If the color retrieved by CLR_BACKGROUND is either white or black, that color 
  19850. becomes the reset color. For example, if an application is drawing to a screen, 
  19851. has not loaded a color table, and the system colors have not been altered, the 
  19852. background color is white, because SYSCLR_WINDOW produces a white background by 
  19853. default. In this instance, the contrast color is black. 
  19854.  
  19855. If the color retrieved by CLR_BACKGROUND is neither white nor black, the color 
  19856. translates to whichever of black and white it is nearest to. As a rule, dark 
  19857. colors produce a black background, and pale colors produce a white background. 
  19858. For example, if an application is using a loaded color table, or if the color 
  19859. retrieved by SYSCLR_WINDOW has been altered (either interactively or by 
  19860. WinSetSysColors), CLR_BACKGROUND could be dark gray. In this instance, the 
  19861. reset color would be black, and the contrast color would be white. 
  19862.  
  19863. When the reset color has been established, the PM applies the following rules 
  19864. when mapping color graphics to a monochrome device: 
  19865.  
  19866.      Any color graphics drawn in CLR_BACKGROUND, and any graphics defined in 
  19867.       the actual reset color (which is either black or white), are drawn in the 
  19868.       reset color. Any other graphics are drawn in the contrast color. 
  19869.  
  19870.      The index CLR_WHITE produces white, and the index CLR_BLACK produces 
  19871.       black, regardless of whether the reset color is black or white. 
  19872.  
  19873.      If no color table is loaded and CLR_DEFAULT or CLR_NEUTRAL are used as 
  19874.       the foreground color, they produce the contrast color. If they are used 
  19875.       as the background color, they produce the reset color. 
  19876.  
  19877.      If an application calls GpiQueryNearestColor for a monochrome device, one 
  19878.       of the following occurs: 
  19879.  
  19880.         -  If the color supplied on input is the reset color, the reset color 
  19881.            is returned. 
  19882.         -  If the color supplied on input is not the reset color, the contrast 
  19883.            color is returned. 
  19884.  
  19885.  Drawing Color Area Fill Patterns on Monochrome Devices 
  19886.  
  19887.  An area primitive is drawn according to the current foreground and background 
  19888.  mix attributes and in the current area foreground and area background colors. 
  19889.  
  19890.  When an application draws a monochrome pattern on a color device, the bits of 
  19891.  the pattern set to 1 translate to the current area foreground color, and the 0 
  19892.  bits translate to the current area background color. When the application 
  19893.  draws a color pattern on a monochrome device, and if the current pattern is 
  19894.  anything other than PATSYM_DEFAULT or PATSYM_SOLID from the default pattern 
  19895.  set, the color closest to white is translated into 1 bits. For example, if a 
  19896.  pattern of diagonal lines is being drawn in which the foreground color is red 
  19897.  and the background color is cyan, the cyan is translated to white (1 bits) 
  19898.  because cyan is closer than red is to white. Red, therefore is translated to 
  19899.  black (0 bits). The effect of translating this color pattern to a monochrome 
  19900.  surface is summarized as follows: 
  19901.  
  19902.                   0s        Surface       Surface
  19903.  
  19904.   \   \        10001000     RcccRccc     01110111
  19905.    \   \       01000100     cRcccRcc     10111011
  19906.     \   \      00100010     ccRcccRc     11011101
  19907.      \   \     00010001     cccRcccR     11101110
  19908.   \   \        10001000     RcccRccc     01110111
  19909.    \   \       01000100     cRcccRcc     10111011
  19910.     \   \      00100010     ccRcccRc     11011101
  19911.      \   \     00010001     cccRcccR     11101110
  19912.  
  19913.  The original pattern of 1's and 0's is used, however, when deciding which part 
  19914.  of the pattern is the background and which part is the foreground. Thus, if 
  19915.  the background mix attribute is BM_LEAVEALONE, the following occurs: 
  19916.  
  19917.   Pattern      As 1s and     Color      Monochrome
  19918.                   0s        Surface      Surface
  19919.  
  19920.   \   \        10001000     R...R...     0...0...
  19921.    \   \       01000100     .R...R..     .0...0..
  19922.     \   \      00100010     ..R...R.     ..0...0.
  19923.      \   \     00010001     ...R...R     ...0...0
  19924.   \   \        10001000     R...R...     0...0...
  19925.    \   \       01000100     .R...R..     .0...0..
  19926.     \   \      00100010     ..R...R.     ..0...0.
  19927.      \   \     00010001     ...R...R     ...0...0
  19928.  
  19929.  The 1 bits on the monochrome surface still are interpreted as the background 
  19930.  of the primitive and are not drawn when the BM_LEAVEALONE attribute is 
  19931.  specified. 
  19932.  
  19933.  When a bit map is used as an area fill pattern, any bit drawn in the current 
  19934.  area background color is set to 0, and all other bits are set to 1 on a 
  19935.  monochrome surface. Thus, if the current area background color is blue, all 
  19936.  blue bits in the bit map are set to 0, and all other bits are set to 1. The 0 
  19937.  bits constitute the background of the primitive. 
  19938.  
  19939.  If the pattern is solid (PATSYM_DEFAULT or PATSYM_SOLID in the supplied 
  19940.  pattern set), the following occurs: 
  19941.  
  19942.      If color dithering is switched off, and the application is drawing a 
  19943.       color pattern to a color surface, the color nearest the color specified 
  19944.       is used. 
  19945.  
  19946.      If color dithering is switched on, and the application is drawing a color 
  19947.       pattern to a color surface, a combination of colors can be used to 
  19948.       achieve the effect of the requested color. For example, if the 
  19949.       application chooses pink on a surface where pink is not available, a 
  19950.       combination of red and white pels can be used to achieve the effect of 
  19951.       the color. 
  19952.  
  19953.      If color dithering is switched on, and the application is drawing a color 
  19954.       pattern to a monochrome surface, sufficient pels are set to suggest the 
  19955.       intensity of the requested color. 
  19956.  
  19957.  Dithering can be enabled and disabled using LCOL_PURECOLOR in 
  19958.  GpiCreateLogColorTable. 
  19959.  
  19960.  
  19961. ΓòÉΓòÉΓòÉ 10.3. Using Color and Mix Attributes ΓòÉΓòÉΓòÉ
  19962.  
  19963. The color- and mix-attribute functions can be used to perform the following 
  19964. tasks: 
  19965.  
  19966.      Create a logical color table 
  19967.  
  19968.      Determine the format and the starting and ending index values of the 
  19969.       current logical color table 
  19970.  
  19971.      Determine the index value for an entry in the logical color table that is 
  19972.       the closest match to an RGB value 
  19973.  
  19974.      Determine the RGB value associated with a particular entry in the logical 
  19975.       color table 
  19976.  
  19977.      Determine and set the current foreground and background colors 
  19978.  
  19979.      Determine and set the current foreground and background mix attributes 
  19980.  
  19981.  
  19982. ΓòÉΓòÉΓòÉ 10.3.1. Creating a Logical Color Table ΓòÉΓòÉΓòÉ
  19983.  
  19984. To create a logical color table, the application creates an array of RGB values 
  19985. that replace the existing logical color table, then calls 
  19986. GpiCreateLogColorTable, using the LCOL_RESET and LCOLF_CONSECRGB flags. The 
  19987. following figure demonstrates this process. 
  19988.  
  19989. Uses
  19990.   Os2Def,Os2Base,Os2PmApi;
  19991.  
  19992. Procedure fncCOLR01;
  19993. Var
  19994.   Hps                           : HPS;
  19995.   CONST AlTable : Array[0..15] of LONG = (
  19996.                                           $FFFFFF,        (* White *)
  19997.                                           $FF88FF,
  19998.                                           $FF8800,
  19999.                                           $FF8888,
  20000.                                           $FF0088,
  20001.                                           $880088,
  20002.                                           $008888,
  20003.                                           $00FF88,
  20004.                                           $00F800,
  20005.                                           $008800,
  20006.                                           $000088,
  20007.                                           $0000F8,
  20008.                                           $0800F8,
  20009.                                           $888888,
  20010.                                           $080808,
  20011.                                           $000000 );      (* Black *)
  20012.  
  20013. Begin
  20014.   GpiCreateLogColorTable(hps,
  20015.      LCOL_RESET,                      (* Start with the default      *)
  20016.      LCOLF_CONSECRGB,                 (* Consecutive RGB values      *)
  20017.      0,                               (* Starting index in table     *)
  20018.      sizeof(alTable) / sizeof(LONG),  (* Number of elements in table *)
  20019.      alTable);
  20020. End; (* fncCOLR01 *)
  20021.  
  20022.  
  20023. ΓòÉΓòÉΓòÉ 10.3.2. Determining the Color-Table Format and Index Values ΓòÉΓòÉΓòÉ
  20024.  
  20025. To determine the format and the starting and ending index values of the current 
  20026. logical color table, applications call GpiQueryColorData. The following figure 
  20027. is an example of using GpiQueryColorData to determine whether the default 
  20028. logical color table is loaded. If so, the code fragment loads a new table. 
  20029.  
  20030. Uses
  20031.   Os2Def,Os2Base,Os2PmApi;
  20032.  
  20033. Procedure fncCOLR02;
  20034. Var
  20035.   Hps                     : HPS;
  20036.   AClrData : Array[0..2] of LONG;
  20037.   AlTable : Array[0..15] of LONG;
  20038.  
  20039. Begin
  20040.  
  20041.   GpiQueryColorData(Hps, 3, aClrData);
  20042.  
  20043.   If (aClrData[QCD_LCT_FORMAT] = LCOLF_DEFAULT)
  20044.   GpiCreateLogColorTable(hps,
  20045.       LCOL_RESET,                      (* Start with the default      *)
  20046.       LCOLF_CONSECRGB,                 (* Consecutive RGB values      *)
  20047.       0,                               (* Starting index in table     *)
  20048.       sizeof(alTable) / sizeof(LONG),  (* Number of elements in table *)
  20049.       alTable);
  20050. End; (* fncCOLR02 *)
  20051.  
  20052.  
  20053. ΓòÉΓòÉΓòÉ 10.3.3. Determining the Index Value of an RGB Value ΓòÉΓòÉΓòÉ
  20054.  
  20055. Applications call GpiQueryColorIndex to find the closest match in a logical 
  20056. color table to an RGB value. This function finds the closest match for this RGB 
  20057. value in the physical color table, then finds the color in the logical color 
  20058. table closest to the color in the physical color table. The function returns 
  20059. the index value of that entry in the logical color table. The followiing figure 
  20060. is an example of how to determine which index value in the logical color table 
  20061. matches the RGB value for pink (0x00FF00FF), then uses that index entry to set 
  20062. the foreground color to pink for each of the primitive attributes. 
  20063.  
  20064. Uses
  20065.   Os2Def,Os2Base,Os2PmApi;
  20066.  
  20067. Procedure fncCOLR03;
  20068. Var
  20069.   LIndex : LONG; (* Logical-color-table index *)
  20070.   Hps    : HPS;
  20071.  
  20072. Begin
  20073.   LIndex := GpiQueryColorIndex(Hps, LCOLOPT_REALIZED, $00FF00FF);
  20074.  
  20075.   If ((LIndex >= 0) AND (LIndex <= 15))     (* Check for valid index     *)
  20076.   GpiSetColor(Hps, LIndex);
  20077. End; (* fncCOLR03 *)
  20078.  
  20079.  
  20080. ΓòÉΓòÉΓòÉ 10.3.4. Setting the Primitive Color Attributes ΓòÉΓòÉΓòÉ
  20081.  
  20082. To set the color attributes for one type of graphics primitive, an application 
  20083. uses GpiSetAttrs. To set the color attributes for each type of primitive in a 
  20084. presentation space, use GpiSetColor and GpiSetBackColor. The following figure 
  20085. shows how to use GpiSetAttrs to set the color attribute of line primitives to 
  20086. dark gray. 
  20087.  
  20088. Uses
  20089.   Os2Def,Os2Base,Os2PmApi;
  20090.  
  20091. Procedure fncCOLR04;
  20092. Var
  20093.   Lbnd : LINEBUNDLE; (* Line-primitive attribute structure *)
  20094.   Hps  : HPS;
  20095.  
  20096. Begin
  20097.   Lbnd.lColor := CLR_DARKGRAY;
  20098.  
  20099.   GpiSetAttrs(Hps, PRIM_LINE, LBB_COLOR, 0, Lbnd);
  20100. End; (* fncCOLR04 *)
  20101.  
  20102. The following figure is an example of how to use GpiSetColor to set the 
  20103. foreground color attribute to dark gray in all of the primitives. 
  20104.  
  20105. Uses
  20106.   Os2Def,Os2PmApi;
  20107.  
  20108. Procedure fncCOLR05;
  20109. Var
  20110.   Hps : HPS;
  20111.  
  20112. Begin
  20113.   GpiSetColor(Hps, CLR_DARKGRAY);
  20114. End; (* fncCOLR05 *)
  20115.  
  20116.  
  20117. ΓòÉΓòÉΓòÉ 10.3.5. Creating a Palette ΓòÉΓòÉΓòÉ
  20118.  
  20119. To create a palette, an application must first call DevQueryCaps with the 
  20120. CAPS_ADDITIONAL_GRAPHICS option to determine whether the device supports 
  20121. palette functions. Next the application creates an array of RGB values or an 
  20122. array of RGB2 structures, then calls GpiCreatePalette. Next the applications 
  20123. calls GpiSelectPalette to select the palette for the presentation space and 
  20124. calls WinRealizePalette to map the RGB values to device colors for subsequent 
  20125. drawing. When the application is finished drawing, it calls GpiSelectPalette to 
  20126. disassociate the presentation space and the palette. Then it deletes the 
  20127. palette by calling GpiDeletePalette. 
  20128.  
  20129. The following figure demonstrates these steps. 
  20130.  
  20131. Uses
  20132.   Os2Def,Os2Base,Os2PmApi;
  20133.  
  20134. Procedure FNCCOLR06;
  20135. Var
  20136.   ClrCurrent          : COLOR;
  20137.   Hpal                : HPAL;
  20138.   Hdc                 : HDC;
  20139.   Hps                 : HPS;
  20140.   Hab                 : HAB;
  20141.   Hwnd                : HWND;
  20142.   Aptl : Array[0..1] of POINTL;
  20143.   Ptl                 : POINTL;
  20144.   CSimulColors        : LONG;
  20145.   LPalSupport         : LONG;
  20146.   J                   : SHORT;
  20147.   prgb2ColorData      : ^RGB2;
  20148.  
  20149. Begin
  20150.  
  20151.   .*
  20152.   .*=== FOR BOOKMASTER ====
  20153.   .*=== END BOOKMASTER ====
  20154.   .*
  20155.   (* Determine how many colors the device can display at once.              *)
  20156.   DevQueryCaps(hdc, CAPS_COLORS, 1, cSimulColors);
  20157.  
  20158.   (* Determine If the device supports palette manager functions.            *)
  20159.   DevQueryCaps(hdc, CAPS_ADDITIONAL_GRAPHICS, 1, lPalSupport);
  20160.  
  20161.   (* Allocate space for the array of RGB2 structures.                       *)
  20162.   DosAllocMem(prgb2ColorData, cSimulColors * sizeof(RGB2), fALLOC);
  20163.  
  20164.   (* Fill the array of RGB2 structures with as many dIfferent               *)
  20165.   (*    shades of blue as the device will support.                          *)
  20166.  
  20167.   .*
  20168.   .*=== FOR BOOKMASTER ====
  20169.   .*=== END BOOKMASTER ====
  20170.   .*
  20171.   clrCurrent := $000000FF;
  20172.   For j := 0 To cSimulColors-1 Do Begin
  20173.     prgb2ColorData[j].bRed      := 0;
  20174.     prgb2ColorData[j].bGreen    := 0;
  20175.     prgb2ColorData[j].bBlue     := clrCurrent;
  20176.     prgb2ColorData[j].fcOptions := 0;
  20177.     If (clrCurrent > 0) Then Dec(clrCurrent)  Else clrCurrent := $000000FF;
  20178.   End;
  20179.  
  20180.   .*
  20181.   .*=== FOR BOOKMASTER ====
  20182.   .*=== END BOOKMASTER ====
  20183.   .*
  20184.   If (lPalSupport) AND (CAPS_PALETTE_MANAGER) Then Begin
  20185.     hpal := GpiCreatePalette(hab,       (* Create palette                  *)
  20186.             0,
  20187.             LCOLF_CONSECRGB,            (* Format of color table entries   *)
  20188.             cSimulColors,               (* Number of entries in table      *)
  20189.             prgb2ColorData);            (* Pointer to color table          *)
  20190.   End;
  20191.  
  20192.   GpiSelectPalette(hps, hpal);
  20193.   WinRealizePalette(hwnd, hps);
  20194.   GpiSelectPalette(hps, NULLHANDLE);     (* Restore default physical colors *)
  20195.   GpiDeletePalette(hpal);                (* Delete palette                  *)
  20196. End; (* fncCOLR06 *)
  20197.  
  20198.