home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / doc / CLX / s06.doc < prev    next >
Encoding:
Interleaf document  |  1989-10-18  |  52.4 KB  |  1,544 lines

  1. <!OPS, Version = 5.2>
  2.  
  3. <!Document,
  4.     Print Rev Bars =    no,
  5.     Final Output Device =    "ps",
  6.     Default Printer =    "nearest-adps">
  7.  
  8. <!Font Definitions,
  9.     F2 = Times 10 Italic,
  10.     F3 = Times 10,
  11.     F4 = Times 8 Italic,
  12.     F5 = Times 18 Bold,
  13.     F6 = Times 10 Bold,
  14.     F7 = Times 18,
  15.     F8 = Times 12 Bold,
  16.     F9 = Symbol_B 8>
  17.  
  18. <!Page,
  19.     Bottom Margin =        1 inches,
  20.     Left Margin =        1 inches,
  21.     Right Margin =        1.15 inches,
  22.     First Page =        Right,
  23.     Starting Page # =     Inherit,
  24.     Page # Prefix =        "6<#1e>",
  25.     Hyphenation =        on,
  26.     Consecutive Hyphens =    2,
  27.     Vert. Just. =        off>
  28.  
  29. <!Autonumber Stream, List, 2,
  30.     Level 2 Suffix =    ,
  31.     Level 2 Starting Value = 0,
  32.     Level 2 Show =        no>
  33.  
  34. <!Autonumber Stream, Outline, 3,
  35.     Level 1 Symbol Type =    UPPER ROMAN,
  36.     Level 2 Symbol Type =    UPPER ALPHA>
  37.  
  38. <!Autonumber Stream, figure, 2,
  39.     Level 1 Prefix =    "Figure ",
  40.     Level 1 Suffix =    "<#1e>",
  41.     Level 1 Show =        no,
  42.     Level 2 Suffix =    ,
  43.     Level 2 Starting Value = 0,
  44.     Level 2 Show =        no>
  45.  
  46. <!Autonumber Stream, figurelet, 2,
  47.     Level 1 Symbol Type =    UPPER ALPHA,
  48.     Level 1 Prefix =    "Figure ",
  49.     Level 1 Suffix =    "<#1e>",
  50.     Level 1 Show =        no,
  51.     Level 2 Suffix =    "<#04>">
  52.  
  53. <!Autonumber Stream, invisible, 1,
  54.     Level 1 Suffix =    ,
  55.     Level 1 Show =        no>
  56.  
  57. <!Autonumber Stream, item, 2,
  58.     Level 2 Symbol Type =    LOWER ALPHA,
  59.     Level 2 Trail =        yes>
  60.  
  61. <!Autonumber Stream, paralet, 4,
  62.     Level 1 Symbol Type =    UPPER ALPHA,
  63.     Level 1 Suffix =    ,
  64.     Level 1 Show =        no,
  65.     Level 2 Prefix =    .,
  66.     Level 2 Suffix =    ,
  67.     Level 3 Prefix =    .,
  68.     Level 3 Suffix =    ,
  69.     Level 4 Prefix =    .,
  70.     Level 4 Suffix =    >
  71.  
  72. <!Autonumber Stream, paranum, 4,
  73.     Level 1 Suffix =    ,
  74.     Level 1 Show =        no,
  75.     Level 2 Prefix =    .,
  76.     Level 2 Suffix =    ,
  77.     Level 3 Prefix =    .,
  78.     Level 3 Suffix =    ,
  79.     Level 4 Prefix =    .,
  80.     Level 4 Suffix =    >
  81.  
  82. <!Autonumber Stream, table, 2,
  83.     Level 1 Prefix =    "Table ",
  84.     Level 1 Suffix =    "<#1e>",
  85.     Level 1 Show =        no,
  86.     Level 2 Suffix =    >
  87.  
  88. <!Autonumber Stream, tablelet, 2,
  89.     Level 1 Symbol Type =    UPPER ALPHA,
  90.     Level 1 Prefix =    "Table ",
  91.     Level 1 Suffix =    "<#1e>",
  92.     Level 1 Show =        no,
  93.     Level 2 Suffix =    "<#04>">
  94.  
  95. <!Class, arg,
  96.     Bottom Margin =        0.08 inches,
  97.     Left Margin =        1.85 inches,
  98.     First Indent =        -0.25 inches,
  99.     Line Spacing =        1.121 lines,
  100.     Font =            F2,
  101.     Left Tab =        -0.25/0 inches>
  102.  
  103. <!Class, bullet,
  104.     Bottom Margin =        0.153 inches,
  105.     Left Margin =        1.85 inches,
  106.     First Indent =        -0.25 inches,
  107.     Line Spacing =        1.121 lines,
  108.     Font =            F3,
  109.     Allow Page Break Within = no,
  110.     Left Tab =        -0.50/0 inches>
  111.  
  112. <!Class, caption,
  113.     Top Margin =        0.07 inches,
  114.     Bottom Margin =        0.07 inches,
  115.     Line Spacing =        1.100 lines,
  116.     Font =            F4>
  117.  
  118. <!Class, fig,
  119.     Top Margin =        0.07 inches,
  120.     Bottom Margin =        0.07 inches,
  121.     Line Spacing =        1.100 lines,
  122.     Alignment =        Left,
  123.     Font =            F5>
  124.  
  125. <!Class, keyword2,
  126.     Bottom Margin =        0.153 inches,
  127.     Left Margin =        1.85 inches,
  128.     First Indent =        -0.25 inches,
  129.     Line Spacing =        1.121 lines,
  130.     Font =            F6,
  131.     Left Tab =        -0.50/0 inches>
  132.  
  133. <!Class, newpage,
  134.     Bottom Margin =        0 inches,
  135.     Line Spacing =        1 lines,
  136.     Alignment =        Left,
  137.     Font =            F7,
  138.     Hyphenation =        off,
  139.     New Page =        yes,
  140.     Left Tab =        >
  141.  
  142. <!Class, "note",
  143.     Top Margin =        0.177 inches,
  144.     Bottom Margin =        0.334 inches,
  145.     Left Margin =        1.60 inches,
  146.     Line Spacing =        1.121 lines,
  147.     Font =            F3,
  148.     Allow Page Break Within = no,
  149.     Left Tab =        0 inches,
  150.     Right Tab =        6.50 inches>
  151.  
  152. <!Class, p1para,
  153.     Bottom Margin =        0.153 inches,
  154.     Left Margin =        1.60 inches,
  155.     First Indent =        -1.60 inches,
  156.     Line Spacing =        1.121 lines,
  157.     Alignment =        Left,
  158.     Font =            F8,
  159.     Allow Page Break Within = no,
  160.     Allow Page Break After = no,
  161.     Left Tab =        -1.70/0 inches>
  162.  
  163. <!Class, p1rule,
  164.     Bottom Margin =        0 inches,
  165.     Line Spacing =        1 lines,
  166.     Font =            F3,
  167.     Hyphenation =        off,
  168.     Allow Page Break After = no,
  169.     Left Tab =        0/0.75*13 inches>
  170.  
  171. <!Class, p1stacked,
  172.     Bottom Margin =        0 inches,
  173.     Left Margin =        1.60 inches,
  174.     First Indent =        -1.60 inches,
  175.     Line Spacing =        1 lines,
  176.     Font =            F6,
  177.     Allow Page Break Within = no,
  178.     Allow Page Break After = no,
  179.     Left Tab =        -1.60/-0.17/0 inches>
  180.  
  181. <!Class, para,
  182.     Bottom Margin =        0.153 inches,
  183.     Left Margin =        1.60 inches,
  184.     Line Spacing =        1.121 lines,
  185.     Font =            F3,
  186.     Allow Page Break Within = no,
  187.     Left Tab =        0/0.75*13 inches>
  188.  
  189. <!Class, return,
  190.     Bottom Margin =        0.077 inches,
  191.     Left Margin =        1.60 inches,
  192.     First Indent =        -0.90 inches,
  193.     Line Spacing =        1.121 lines,
  194.     Alignment =        Left,
  195.     Font =            F6,
  196.     Hyphenation =        off,
  197.     Allow Page Break Within = no,
  198.     Allow Page Break After = no,
  199.     Left Tab =        -0.90/0 inches,
  200.     Right Tab =        7.50 inches>
  201.  
  202. <!Class, secno,
  203.     Top Margin =        0.07 inches,
  204.     Bottom Margin =        0.07 inches,
  205.     Line Spacing =        1.100 lines,
  206.     Alignment =        Left,
  207.     Font =            F5,
  208.     Autonumber Name =    paranum>
  209.  
  210. <!Class, secrule,
  211.     Bottom Margin =        0 inches,
  212.     Line Spacing =        1 lines,
  213.     Font =            F3,
  214.     Hyphenation =        off,
  215.     Allow Page Break After = no,
  216.     Left Tab =        0/0.75*13 inches,
  217.     Autonumber Name =    table>
  218.  
  219. <!Class, sectitle,
  220.     Bottom Margin =        0 inches,
  221.     Line Spacing =        1 lines,
  222.     Alignment =        Right,
  223.     Font =            F5,
  224.     Hyphenation =        off,
  225.     New Page =        yes,
  226.     Left Tab =        0/0.75*13 inches>
  227.  
  228. <!Class, syntax,
  229.     Bottom Margin =        0.077 inches,
  230.     Left Margin =        1.60 inches,
  231.     First Indent =        -0.90 inches,
  232.     Line Spacing =        1.121 lines,
  233.     Alignment =        Left,
  234.     Font =            F6,
  235.     Hyphenation =        off,
  236.     Allow Page Break Within = no,
  237.     Allow Page Break After = no,
  238.     Left Tab =        -0.90/0 inches,
  239.     Right Tab =        8 inches>
  240.  
  241. <!Class, syntax0,
  242.     Bottom Margin =        0 inches,
  243.     Left Margin =        1.60 inches,
  244.     First Indent =        -0.90 inches,
  245.     Line Spacing =        1.121 lines,
  246.     Alignment =        Left,
  247.     Font =            F6,
  248.     Hyphenation =        off,
  249.     Allow Page Break Within = no,
  250.     Allow Page Break After = no,
  251.     Left Tab =        -0.90/0 inches,
  252.     Right Tab =        8 inches>
  253.  
  254. <!Class, "table",
  255.     Top Margin =        0.07 inches,
  256.     Bottom Margin =        0.07 inches,
  257.     Line Spacing =        1.100 lines,
  258.     Font =            F6,
  259.     Autonumber Name =    table>
  260.  
  261. <!Class, title,
  262.     Top Margin =        0.07 inches,
  263.     Bottom Margin =        0.07 inches,
  264.     Line Spacing =        1.100 lines,
  265.     Alignment =        Right,
  266.     Font =            F5,
  267.     TOC Doc Name =        TOC>
  268.  
  269. <!Master Frame,
  270.     Name =            "At Anchor",
  271.     Placement =        At Anchor,
  272.     Width =            0.41 inches,
  273.     Height =        0.137 inches,
  274.     Vertical Alignment =    0.03 inches,
  275.     Diagram =
  276. V4,
  277. (g9,32767,0
  278.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  279.   667,6))>
  280.  
  281. <!Master Frame,
  282.     Name =            p1rule,
  283.     Placement =        At Anchor,
  284.     Width =            6.35 inches,
  285.     Height =        0.153 inches,
  286.     Vertical Alignment =    0.007 inches,
  287.     Shared Contents =    yes,
  288.     Diagram =
  289. V4,
  290. (g9,1,0
  291.  (v4,1,0,0.006667,0.066723,6.326667,0.066611,17,2,0)
  292.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,0,1,1,0.066667,0.066667,6,6,0,0.066
  293.   667,6))>
  294.  
  295. <First Page Header, Frame =
  296. V4,
  297. (g9,0,0
  298.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,1,1,1,1,0.066667,0.066667,6,6,0,0.066
  299.   667,6))>
  300.  
  301. <Right Page Header, Frame =
  302. V4,
  303. (g9,1,0
  304.  (T8,1,12,4.8,0.293333,1.533333,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,
  305.   102,1101,2,
  306. <caption,
  307.     Alignment =        Right>
  308.  
  309. Graphic Operations
  310.  
  311. <End Text>)
  312.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  313.   667,6))>
  314.  
  315. <Left Page Header, Frame =
  316. V4,
  317. (g9,1,0
  318.  (T8,1,12,0,0.306667,1.933333,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,10
  319.   2,1101,2,
  320. <caption>
  321.  
  322. Graphic Operations
  323.  
  324. <End Text>)
  325.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  326.   667,6))>
  327.  
  328. <Right Page Footer, Frame =
  329. V4,
  330. (g9,1,0
  331.  (t8,1,4,6.333333,0.266667,2,17,@nntimsps10b,\240)
  332.  (t8,2,4,0.006667,0.266667,0,17,@nntimsps8i,CLX\ Programmer's\ Reference)
  333.  (v4,3,0,0,0.066667,6.333333,0.066554,17,2,0)
  334.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,1,1,1,0.066667,0.066667,6,6,0,0.066
  335.   667,6))>
  336.  
  337. <Left Page Footer, Frame =
  338. V4,
  339. (g9,1,0
  340.  (t8,1,4,0,0.266667,0,17,@nntimsps10b,\240)
  341.  (t8,2,4,6.333333,0.266667,2,17,@nntimsps8i,CLX\ Programmer's\ Reference)
  342.  (v4,3,0,0.026667,0.066667,6.333333,0.066554,17,2,0)
  343.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  344.   667,6))>
  345.  
  346. <sectitle,
  347.     Allow Page Break Within = no,
  348.     Allow Page Break After = no>
  349.  
  350. <|,"6<#1e>69">
  351. <Frame,
  352.     Name =            "At Anchor",
  353.     Placement =        At Anchor,
  354.     Width =            4.72 inches,
  355.     Height =        0.94 inches,
  356.     Vertical Alignment =    0.03 inches,
  357.     Diagram =
  358. V4,
  359. (g9,1,0
  360.  (T8,1,12,0.133333,0.72,4.563333,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512
  361.   ,102,1101,3,
  362. <title>
  363.  
  364. GRAPHIC OPERATIONS
  365.  
  366. <End Text>)
  367.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  368.   667,6))>
  369. <Frame,
  370.     Name =            "At Anchor",
  371.     Placement =        At Anchor,
  372.     Width =            1.626 inches,
  373.     Height =        0.938 inches,
  374.     Vertical Alignment =    0 inches,
  375.     Diagram =
  376. V4,
  377. (g9,1,0
  378.  (T8,1,12,0.066667,0.276667,0,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,10
  379.   2,1101,3,
  380. <secno,
  381.     TOC Doc Name =        TOC>
  382.  
  383. <Autonum, paranum, 1, First = Yes>
  384.  
  385. <End Text>)
  386.  (T8,2,12,0.026667,0.733333,0,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,10
  387.   2,1101,3,
  388. <"table">
  389.  
  390. <Autonum, table, 1, First = Yes>
  391.  
  392. <End Text>)
  393.  (T8,3,12,0.066667,0.6,0,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,102,110
  394.   1,3,
  395. <fig,
  396.     Alignment =        Both,
  397.     Font =            F6,
  398.     Autonumber Name =    figure>
  399.  
  400. <Autonum, figure, 1, First = Yes>
  401.  
  402. <End Text>)
  403.  (g9,5,0
  404.    (p7,5,8,19
  405.      (g9,5,0
  406.        (g9,5,0
  407.          (v4,5,0,0.266667,0,1.6,0,17,1,0)
  408.          (v4,6,0,1.6,0,1.6,0.933333,17,1,0)
  409.          (v4,7,0,1.6,0.933333,0.266667,0.933333,17,1,0)
  410.          (v4,8,0,0.266667,0.933333,0.266667,0,17,1,0))))
  411.    (g9,10,8
  412.      (g9,10,1032
  413.        (p7,10,8,13
  414.          (g9,10,0
  415.            (g9,10,0
  416.              (v4,10,32,1.015438,0.934816,1.082808,0.784694,17,0,0)
  417.              (v4,11,0,1.082808,0.784694,1.082808,0.615804,17,1,0)
  418.              (v4,12,32,1.082808,0.615804,1.082808,0.46568,17,0,0)
  419.              (v4,13,0,1.082808,0.46568,1.082808,0.296792,17,1,0)
  420.              (v4,14,0,1.082808,0.296792,1.262455,0.296792,17,1,0)
  421.              (v4,15,0,1.262455,0.296792,1.262455,0.371851,17,1,0)
  422.              (v4,16,0,1.262455,0.371851,1.464561,0.371851,17,1,0)
  423.              (v4,17,0,1.464561,0.371851,1.464561,0.259259,17,1,0)
  424.              (v4,18,0,1.464561,0.259259,1.329824,0.14667,17,1,0)
  425.              (v4,19,0,1.329824,0.14667,1.015438,0.14667,17,1,0)
  426.              (v4,20,0,1.015438,0.14667,0.880702,0.259259,17,1,0)
  427.              (v4,21,0,0.880702,0.259259,0.880702,0.822225,17,1,0)
  428.              (v4,22,0,0.880702,0.822225,1.015438,0.934816,17,1,0))))
  429.        (p7,24,8,13
  430.          (g9,24,0
  431.            (g9,24,0
  432.              (v4,24,0,1.329824,0.934816,1.015438,0.934816,17,1,0)
  433.              (v4,25,32,1.015438,0.934816,1.082808,0.784694,17,0,0)
  434.              (v4,26,0,1.082808,0.784694,1.262455,0.784694,17,1,0)
  435.              (v4,27,0,1.262455,0.784694,1.262455,0.615804,17,1,0)
  436.              (v4,28,0,1.262455,0.615804,1.082808,0.615804,17,1,0)
  437.              (v4,29,32,1.082808,0.615804,1.082808,0.46568,17,0,0)
  438.              (v4,30,0,1.082808,0.46568,1.329824,0.46568,17,1,0)
  439.              (v4,31,0,1.329824,0.46568,1.464561,0.578266,17,1,0)
  440.              (v4,32,0,1.464561,0.578266,1.464561,0.822225,17,1,0)
  441.              (v4,33,0,1.464561,0.822225,1.329824,0.934816,17,1,0)))))
  442.      (g9,34,2048
  443.        (v4,34,33,0.813333,0.14667,0.813333,0.14667,17,0,0)
  444.        (v4,35,33,0.813333,1.16,0.813333,1.16,17,0,0)
  445.        (v4,36,33,1.53193,1.16,1.53193,1.16,17,0,0)
  446.        (v4,37,33,1.53193,0.14667,1.53193,0.14667,17,0,0))))
  447.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,1,1,1,0.066667,0.066667,6,6,0,0.066
  448.   667,6))>
  449.  
  450. <secrule,
  451.     Allow Page Break Within = no,
  452.     Allow Page Break After = yes,
  453.     Autonumber Name =    >
  454.  
  455. <Index, "graphics", To Named = sectitle>
  456. <Frame,
  457.     Name =            "At Anchor",
  458.     Placement =        At Anchor,
  459.     Width =            6.35 inches,
  460.     Height =        0.153 inches,
  461.     Vertical Alignment =    0.007 inches,
  462.     Diagram =
  463. V4,
  464. (g9,1,0
  465.  (v4,1,0,0.006667,0.066723,6.333333,0.066611,17,2,0)
  466.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,0,1,1,0.066667,0.066667,6,6,0,0.066
  467.   667,6))>
  468.  
  469. <p1para,
  470.     Alignment =        Both,
  471.     Font =            F3,
  472.     Allow Page Break After = yes>
  473.  
  474. <F8>Introduction<Tab><F6>6.1<F0><#04>Once connected to an X server, 
  475. a client can use CLX functions to perform graphic operations on drawables. 
  476.  
  477. <para>
  478.  
  479. This section describes CLX functions to: 
  480.  
  481. <bullet>
  482.  
  483. <F9>w<Tab><F0>Operate on areas and planes 
  484.  
  485. <F9>w<Tab><F0>Draw points 
  486.  
  487. <F9>w<Tab><F0>Draw lines 
  488.  
  489. <F9>w<Tab><F0>Draw rectangles 
  490.  
  491. <F9>w<Tab><F0>Draw arcs 
  492.  
  493. <bullet,
  494.     Bottom Margin =        0.12 inches>
  495.  
  496. <F9>w<Tab><F0>Draw text 
  497.  
  498. <p1rule>
  499.  
  500. <Index, "area of a window", To Named = p1rule><Index, "plane", To Named = p1rule><Index, "graphics", "plane", To Named = p1rule><Index, "graphics", "area", To Named = p1rule>
  501. <Frame,
  502.     Name =            p1rule,
  503.     Placement =        At Anchor,
  504.     Width =            6.35 inches,
  505.     Height =        0.153 inches,
  506.     Vertical Alignment =    0.007 inches,
  507.     Shared Contents =    yes>
  508.  
  509. <p1stacked,
  510.     Font =            F3,
  511.     Left Tab =        -1.70/0 inches>
  512.  
  513. <F8>Area and Plane<Tab><F6>6.2<#04>clear<#1e>area<F0> clears an 
  514. area or an entire window to the background.<F6><FJ>
  515.  
  516. <p1para,
  517.     Bottom Margin =        0.12 inches,
  518.     Alignment =        Both,
  519.     Font =            F3,
  520.     Allow Page Break After = yes>
  521.  
  522. <F8>Operations<Tab><F0>Since pixmaps do not have backgrounds, they 
  523. cannot be filled by using the functions described in the following 
  524. paragraphs. Instead, you should use <F6>draw<#1e>rectangle<F0>, 
  525. which sets the pixmap to a known value. See paragraph 6.5, Drawing 
  526. Rectangles, for information on <F6>draw<#1e>rectangle<F0>. 
  527.  
  528. <syntax,
  529.     Left Tab =        -0.90/0 inches,
  530.     Right Tab =        7.50 inches>
  531.  
  532. clear<#1e>area <F2>window<F3> &key (<F0>:x<F3> 0) (<F0>:y<F3> 
  533. 0) <F0>:width<F3> <F0>:height<F3> <F0>:exposures<#1e>p<Tab><F3>Function<Index, Doc = operations, "xlib:clear<#1e>area", Sort String = "clear<#1e>area">
  534.  
  535. <para,
  536.     Bottom Margin =        0.12 inches>
  537.  
  538. Draws a rectangular area in the specified <F2>window<F0> with the 
  539. background pixel or pixmap of the <F2>window<F0>. The <F6>:x<F0> 
  540. and <F6>:y<F0> coordinates are relative to the<F2> window<F0> 
  541. origin, and specify the upper<#1e>left corner of the rectangular area 
  542. that is to be cleared. A <F6>nil<F0> or zero value for <F6>:height<F0> 
  543. or <F6>:width<F0> clears the remaining area (height - y or width 
  544. - x). If the <F2>window<F0> has a defined background tile, the rectangle 
  545. is tiled by using a plane<#1e>mask of all ones and a function of <F6>:copy
  546. <F0>. If the <F2>window<F0> has background <F6>:none<F0>, the 
  547. contents of the <F2>window<F0> are not changed. In either case, 
  548. if <F6>:exposures<#1e>p<F0> is non<#1e><F6>nil<F0>, then one or 
  549. more <F6>:exposure<F0> events are generated for regions of the rectangle 
  550. that are either visible or are being retained in a backing store.
  551.  
  552. <para>
  553.  
  554. To clear the entire area in a specified <F2>window<F0>, use (<F6>clear<#1e>a
  555. rea<F0> <F2>window<F0>).
  556.  
  557. <arg>
  558.  
  559. window <F3><#1f> A <F6>window<F3>.
  560.  
  561. <keyword2>
  562.  
  563. :x<F3>, <F0>:y <F3><#1f> Upper<#1e>left corner of the area to be 
  564. cleared. These coordinates are relative to the <F2>window<F3> origin. 
  565. Type is <F0>int16<F3>.
  566.  
  567. :width <F3><#1f> The width of the area to clear or <F0>nil<F3> 
  568. to clear to the remaining width of the window. Type is <F0>card16<F3> 
  569. or <F0>null<F3>.
  570.  
  571. :height <F3><#1f> The height of the area to clear or <F0>nil<F3> 
  572. to clear to the remaining height of the window. Type is <F0>card16<F3> 
  573. or <F0>null<F3>.
  574.  
  575. :exposures<#1e>p <F3><#1f> Specifies if <F0>:exposure<F3> events 
  576. should be generated for the affected areas. Type <F0>boolean<F3>.
  577.  
  578. <syntax,
  579.     Left Tab =        -0.90/0 inches,
  580.     Right Tab =        7.50 inches>
  581.  
  582. <|,"6<#1e>70">copy<#1e>area <F2>source gcontext source<#1e>x source<#1e>y 
  583. width height <F0><Tab><F3>Function<Index, Doc = operations, "xlib:copy<#1e>area", Sort String = "copy<#1e>area"><HR>
  584. <F2>destination destination<#1e>x destination<#1e>y
  585.  
  586. <para>
  587.  
  588. Copies the specified rectangular area from the <F2>source<F0> <F6>drawable
  589. <F0> to the specified rectangular area of the <F2>destination<F0> <F6>drawa
  590. ble<F0>, combining them as specified in the supplied graphics context 
  591. (<F2>gcontext<F0>). The <F2>x<F0> and <F2>y<F0> coordinates 
  592. are relative to their respective drawable origin, with each pair specifying 
  593. the upper left corner of the area.
  594.  
  595. If either regions of the <F2>source<F0> area are obscured and have 
  596. not been retained in backing store, or regions outside the boundaries 
  597. of the <F2>source<F0> <F6>drawable<F0> are specified, those regions 
  598. are not copied. Instead, the following occurs on all corresponding <F2>destina
  599. tion<F0> regions that are either visible or are retained in backing 
  600. store:  
  601.  
  602. <bullet>
  603.  
  604. <F9>w<Tab><F0>If the <F2>destination<F0> rectangle is a window 
  605. with a background other than <F6>:none<F0>, these corresponding 
  606. regions of the <F2>destination<F0> are tiled, using plane<#1e>mask 
  607. of all ones and function of <F6>boole<#1e>1<F0> (copy source), with 
  608. that background. 
  609.  
  610. <F9>w<Tab><F0>If the exposures attribute of the graphics context 
  611. is <F6>:on<F0>, then <F6>:graphics<#1e>exposure<F0> events for 
  612. all corresponding <F2>destination<F0> regions are generated (regardless 
  613. of tiling or whether the <F2>destination<F0> is a window or a pixmap).
  614.  
  615. <F9>w<Tab><F0>If exposures is <F6>:on<F0> but no regions are exposed, 
  616. a <F6>:no<#1e>exposure<F0> event is generated. Note that by default, 
  617. exposures is <F6>:on<F0> for new graphics contexts. See Section 
  618. 5, Graphics Contexts, for further information.
  619.  
  620. <arg>
  621.  
  622. source <F3><#1f> Source <F6>drawable<F3>.
  623.  
  624. gcontext <F3><#1f> The graphics context to use during the copy operation.
  625.  
  626. source<#1e>x<F3>, <F0>source<#1e>y <F3><#1f><F0> <F3>The x and 
  627. y coordinates of the upper<#1e>left corner of the area in the <F0>source<F3> 
  628. <F6>drawable<F3>. These coordinates are relative to the <F0>source<F3> 
  629. <F6>drawable<F3> origin. Type is <F6>int16<F3>.
  630.  
  631. width<F3>, <F0>height <F3><#1f><F0> <F3>The width and height 
  632. of the area being copied. These apply to both the <F0>source<F3> 
  633. and <F0>destination<F3> areas. Type is <F6>card16<F3>.
  634.  
  635. destination <F3><#1f> The destination <F6>drawable<F3>.
  636.  
  637. destination<#1e>x<F3>, <F0>destination<#1e>y <F3><#1f><F0> <F3>The 
  638. x and y coordinates of the upper left corner of the area in the <F0>destinatio
  639. n<F3> <F6>drawable<F3>. These coordinates are relative to the <F0>destinati
  640. on<F3> <F6>drawable<F3> origin. Type is <F6>int16<F3>.
  641.  
  642. <syntax,
  643.     Left Tab =        -0.90/0 inches,
  644.     Right Tab =        7.50 inches>
  645.  
  646. copy<#1e>plane <F2>source gcontext plane source<#1e>x source<#1e>y 
  647. width height <F0><Tab><F3>Function<Index, Doc = operations, "xlib:copy<#1e>plane", Sort String = "copy<#1e>plane"><HR>
  648. <F2>destination destination<#1e>x destination<#1e>y
  649.  
  650. <para>
  651.  
  652. Uses a single bit plane of the specified rectangular area of the <F2>source
  653. <F0> <F6>drawable<F0> along with the specified graphics context 
  654. (<F2>gcontext<F0>) to modify the specified rectangle area of the <F2>destina
  655. tion<F0> <F6>drawabl<F0>e. The drawables specified by the <F2>source<F0> 
  656. and <F2>destination<F0> arguments must have the same root but need 
  657. not have the same depth.
  658.  
  659. Effectively, this operation forms a pixmap of the same depth as <F2>destinatio
  660. n<F0> and with a size specified by the <F2>source<F0> area. It 
  661. then uses the foreground and background from the graphics context 
  662. (foreground where the bit<#1e>plane in <F2>source<F0> contains a 
  663. one bit, background where the bit<#1e>plane in <F2>source<F0> contains 
  664. a zero bit), and the equivalent of a <F6>copy<#1e>area<F0> operation 
  665. is performed with all the same exposure semantics. This can also be 
  666. thought of as using the specified region of the <F2>source<F0> bit<#1e>plane 
  667. as a stipple with a fill<#1e>style of <F6>:opaque<#1e>stippled<F0> 
  668. for filling a rectangular area of the <F2>destination<F0>.
  669.  
  670. <arg>
  671.  
  672. source <F3><#1f> The source <F6>drawable<F3>.
  673.  
  674. gcontext <F3><#1f> The graphics context to use during the copy operation.
  675.  
  676. <|,"6<#1e>71">plane <F3><#1f> Specifies the bit<#1e>plane of the <F0>source<F3> 
  677. <F6>drawable<F3>. Exactly one bit must be set. Type is <F6>pixel<F3>.
  678.  
  679. source<#1e>x<F3>, <F0>source<#1e>y<F6> <F3><#1f> The <F0>x<F3> 
  680. and <F0>y<F3> coordinates of the upper<#1e>left corner of the area 
  681. in the <F0>source<F3> <F6>drawable<F3>. These coordinates are 
  682. relative to the <F0>source<F3> <F6>drawable<F3> origin. Type is <F6>int16
  683. <F3>.
  684.  
  685. width<F3>, <F0>height<F6> <F3><#1f> The width and height of the 
  686. area being copied. These apply to both the <F0>source<F3> and <F0>destinatio
  687. n<F3> areas. Type is <F6>card16<F3>.
  688.  
  689. destination <F3><#1f> The destination <F6>drawable<F3>.
  690.  
  691. destination<#1e>x<F3>, <F0>destination<#1e>y <F3><#1f> The x and 
  692. y coordinates of the upper<#1e>left corner of the destination area 
  693. in the <F0>destination<F3> <F6>drawable<F3>. These coordinates 
  694. are relative to the <F0>destination<F3> <F6>drawable<F3> origin. 
  695. Type is <F6>int16<F3>.
  696.  
  697. <p1rule>
  698.  
  699. <Index, "drawing", "points", To Named = p1rule><Index, "points", "drawing", To Named = p1rule><Index, "graphics", "drawing", "points", To Named = p1rule>
  700. <Frame,
  701.     Name =            p1rule,
  702.     Placement =        At Anchor,
  703.     Width =            6.35 inches,
  704.     Height =        0.153 inches,
  705.     Vertical Alignment =    0.007 inches,
  706.     Shared Contents =    yes>
  707.  
  708. <p1para,
  709.     Alignment =        Both,
  710.     Font =            F3,
  711.     Allow Page Break After = yes>
  712.  
  713. <F8>Drawing Points<Tab><F6>6.3<F0><#04>The <F6>draw<#1e>point<F0> 
  714. and <F6>draw<#1e>points<F0> functions make use of the following 
  715. graphics context components: function, plane<#1e>mask, foreground, 
  716. subwindow<#1e>mode, clip<#1e>x, clip<#1e>y, clip<#1e>ordering, clip<#1e>region 
  717. and clip<#1e>mask. 
  718.  
  719. <para>
  720.  
  721. The <F6>draw<#1e>point<F0> function uses the foreground pixel and 
  722. function components of the graphics context to draw a single point 
  723. into the specified drawable, while <F6>draw<#1e>points<F0> draws 
  724. multiple points into the specified drawable. These functions are not 
  725. affected by the tile or stipple in the graphics context.
  726.  
  727. <syntax,
  728.     Left Tab =        -0.90/0 inches,
  729.     Right Tab =        7.50 inches>
  730.  
  731. draw<#1e>point <F2>drawable gcontext x y<F0><Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>point", Sort String = "draw<#1e>point">
  732.  
  733. <para>
  734.  
  735. Combines the foreground pixel in the <F2>gcontext<F0> with the pixel 
  736. in the <F2>drawable<F0> specified by the <F2>x<F0> and <F2>y<F0> 
  737. coordinates.
  738.  
  739. <arg>
  740.  
  741. drawable <F3><#1f> The destination <F6>drawable<F3>.
  742.  
  743. gcontext <F3><#1f> The graphics context for drawing the point.
  744.  
  745. x<F3>, <F0>y <F3><#1f> The <F0>x<F3> and <F0>y<F3> coordinates 
  746. of the point drawn. Type is <F6>int16<F3>.
  747.  
  748. <syntax,
  749.     Left Tab =        -0.90/0 inches,
  750.     Right Tab =        7.50 inches>
  751.  
  752. draw<#1e>points <F2>drawable gcontext points <F3>&optional<F2> 
  753. relative<#1e>p<F0><Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>points", Sort String = "draw<#1e>points">
  754.  
  755. <para>
  756.  
  757. Combines the foreground pixels in the graphics context with the pixels 
  758. at each point in the <F2>drawable<F0>. The points are drawn in the 
  759. order listed.
  760.  
  761. <F6>draw<#1e>points<F0> requires a mode argument, <F2>relative<#1e>p<F0> 
  762. that indicates whether the points are relative to the destination 
  763. origin or to the previous point. In either case, the first point is 
  764. always relative to the destination origin. The rest of the points 
  765. are relative either to the <F2>drawable<F0>'s origin or to the previous 
  766. point, depending on the value of <F2>relative<#1e>p<F0>.
  767.  
  768. <arg>
  769.  
  770. drawable <F3><#1f> The destination <F6>drawable<F3>.
  771.  
  772. gcontext <F3><#1f> The graphics context for drawing the points.
  773.  
  774. points <F3><#1f> A list of points to be drawn in the order listed. 
  775. The first point is always relative to the <F0>drawable<F3>'s origin; 
  776. if <F0>relative<#1e>p<F3>, the rest of the points are drawn relative 
  777. to the previous point, else they are drawn relative to the <F0>drawable<F3>'s 
  778. origin. Type is <F6>point<#1e>seq<F3>.
  779.  
  780. relative<#1e>p <F3><#1f> Specifies the coordinate mode used for drawing 
  781. the pixels either relative to the origin or to the previous point. 
  782. Type <F6>boolean<F3>.
  783.  
  784. <p1rule>
  785.  
  786. <Index, "lines", "drawing", To Named = p1rule><Index, "drawing", "lines", To Named = p1rule><Index, "graphics", "drawing", "lines", To Named = p1rule>
  787. <Frame,
  788.     Name =            p1rule,
  789.     Placement =        At Anchor,
  790.     Width =            6.35 inches,
  791.     Height =        0.153 inches,
  792.     Vertical Alignment =    0.007 inches,
  793.     Shared Contents =    yes>
  794.  
  795. <p1para,
  796.     Alignment =        Both,
  797.     Font =            F3,
  798.     Allow Page Break After = yes>
  799.  
  800. <F8>Drawing Lines<Tab><F6>6.4<F0><#04>The <F6>draw<#1e>line<F0>, <F6>draw
  801. <#1e>lines<F0>, and <F6>draw<#1e>segments<F0> functions use the 
  802. following graphics context components: background, cap<#1e>style, 
  803. clip<#1e>x<#1e>origin, clip<#1e>y<#1e>origin, clip<#1e>mask, dash<#1e>list, 
  804. dash<#1e>offset, fill<#1e>style, foreground, function, plane<#1e>mask, 
  805. line<#1e>width, line<#1e>style, stipple, subwindow<#1e>mode, tile, 
  806. ts<#1e>x<#1e>origin, and ts<#1e>y<#1e>origin.
  807.  
  808. <para>
  809.  
  810. <|,"6<#1e>72">The <F6>draw<#1e>lines <F0>function also uses the join<#1e>style 
  811. graphics context component. 
  812.  
  813. <syntax,
  814.     Left Tab =        -0.90/0 inches,
  815.     Right Tab =        7.50 inches>
  816.  
  817. draw<#1e>line <F2>drawable gcontext x1 y1 x2 y2 <F3>&optional<F2> 
  818. relative<#1e>p<F0><Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>line", Sort String = "draw<#1e>line">
  819.  
  820. <para>
  821.  
  822. Draws a line from the point <F2>x1<F0>,<F2>y1<F0> to the point <F2>x2
  823. <F0>,<F2>y2<F0>. When <F2>relative<#1e>p<F0> is true, the first 
  824. point is relative to the destination origin but the second point is 
  825. relative to the first point. When <F2>relative<#1e>p<F0> is <F6>nil<F0>, 
  826. both points are relative to the destination origin.
  827.  
  828. <arg>
  829.  
  830. drawable <F3><#1f> The destination <F6>drawable<F3>.
  831.  
  832. gcontext <F3><#1f> The graphics context for drawing the line.
  833.  
  834. x1<F3>, <F0>y1<F3>, <F0>x2<F3>, <F0>y2 <F3><#1f> The end points 
  835. of the line. 
  836.  
  837. relative<#1e>p <F3><#1f> Specifies the coordinate mode used for drawing 
  838. the line either relative to the origin or the previous point. In either 
  839. case, the first point is always drawn relative to the <F0>drawable<F3>'s 
  840. origin.
  841.  
  842. <syntax,
  843.     Left Tab =        -0.90/0 inches,
  844.     Right Tab =        7.50 inches>
  845.  
  846. draw<#1e>lines <F2>drawable gcontext points <F3>&key<F0> :relative<#1e>p 
  847. :fill<#1e>p<F3> <F0><Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>lines", Sort String = "draw<#1e>lines"><HR>
  848. (<F0>:shape :complex<F3>)
  849.  
  850. <para>
  851.  
  852. Draws a line between each pair of <F2>points<F0> in the points list. 
  853. The lines are drawn in the order listed and join correctly at all 
  854. intermediate points. The join<#1e>style graphics context component 
  855. defines the type of joint to use. When the first and last points coincide, 
  856. the first and last lines also join correctly to produce a hollow polygon.
  857.  
  858. When <F6>:relative<#1e>p<F0> is true, the first point is always 
  859. relative to the destination origin, but the rest are relative to the 
  860. previous point. When <F6>:relative<#1e>p<F0> is <F6>nil<F0>, the 
  861. rest of the points are drawn relative to the destination origin.
  862.  
  863. When <F6>:fill<#1e>p<F0> is true, the polygon defined by the <F2>points
  864. <F0> list is filled. The <F6>:shape<F0> keyword provides the server 
  865. with a hint about how to fill the polygon. <F6>:shape<F0> can be 
  866. either <F6>:complex<F0> (by default), <F6>:convex<F0>, or <F6>:non<#1e>con
  867. vex<F0>. 
  868.  
  869. The <F6>:convex<F0> operand is the simplest type of area and the 
  870. fastest to fill. A fill area is convex if every straight line connecting 
  871. any two interior points is entirely inside the area. For example, 
  872. triangles and rectangles are convex polygons.
  873.  
  874. The <F6>:non<#1e>convex<F0> operand is for filling an area that 
  875. is not convex and is also not self<#1e>intersecting. Filling this 
  876. type of area is harder than filling a convex area, but easier than 
  877. filling one that is self<#1e>intersecting. For example, the shape 
  878. of the letter <#7f>T" is non<#1e>convex and non<#1e>self<#1e>intersecting.
  879.  
  880. The <F6>:complex<F0> operand is the most general (and therefore 
  881. the hardest) type of fill area. A complex fill area can be non<#1e>convex 
  882. and self<#1e>intersecting. For example, draw the outline of a bow 
  883. tie, without lifting your pencil or tracing over an edge twice. This 
  884. shape is non<#1e>convex and intersects itself at the knot in the middle. 
  885.  
  886. <"note",
  887.     Top Margin =        0.15 inches,
  888.     Bottom Margin =        0.15 inches>
  889.  
  890. <Tab-><HR>
  891. <F6>NOTE: <F0>Unless you are sure that a shape is <F6>:convex<F0> 
  892. or <F6>:non<#1e>convex<F0>, it should always be drawn as a <F6>:complex
  893. <F0> shape. If <F6>:convex<F0> or <F6>:non<#1e>convex<F0> is 
  894. specified incorrectly, the graphics result is undefined.<HR>
  895. <Tab->
  896.  
  897. <arg>
  898.  
  899. drawable <F3><#1f> The destination <F6>drawable<F3>.
  900.  
  901. gcontext <F3><#1f> The graphics context for drawing the lines.
  902.  
  903. points <F3><#1f> A list of points that define the lines. Type is <F6>point<#1e>
  904. seq<F3>.
  905.  
  906. <keyword2>
  907.  
  908. :relative<#1e>p <F3><#1f> The coordinate mode of the points. 
  909.  
  910. <|,"6<#1e>73">:fill<#1e>p <F3><#1f> When true, a filled polygon is drawn 
  911. instead of a polyline.
  912.  
  913. :shape <F3><#1f> A hint that allows the server to use the most efficient 
  914. area fill algorithm. Either <F0>:convex<F3>,<F0> :non<#1e>convex<F3>, 
  915. or <F0>:complex<F3>.
  916.  
  917. <syntax,
  918.     Left Tab =        -0.90/0 inches,
  919.     Right Tab =        7.50 inches>
  920.  
  921. draw<#1e>segments <F2>drawable gcontext segments<F0><Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>segments", Sort String = "draw<#1e>segments">
  922.  
  923. <para>
  924.  
  925. Draws multiple lines, not necessarily connected. <F2>segments<F0> 
  926. is a sequence of the form {x1 y1 x2 y2}*, in which each subsequence 
  927. specifies the end<SP>points of a line segment. Line segments are drawn 
  928. in the order given by<SP><F2>segments<F0>. Unlike <F6>draw<#1e>lines<F0>, 
  929. no joining is performed at coincident end<SP>points.
  930.  
  931. <arg>
  932.  
  933. drawable <F3><#1f> The destination <F6>drawable<F3> to receive 
  934. the line segments.
  935.  
  936. gcontext <F3><#1f> Specifies the graphics context for drawing the 
  937. lines.
  938.  
  939. segments <F3><#1f> The points list for the segments to draw. Type 
  940. is <F6>seq<F3>.
  941.  
  942. <p1rule>
  943.  
  944. <Index, "drawing", "rectangles"><Index, "rectangles", "drawing", To Named = p1rule><Index, "graphics", "drawing", "rectangles", To Named = p1rule>
  945. <Frame,
  946.     Name =            p1rule,
  947.     Placement =        At Anchor,
  948.     Width =            6.35 inches,
  949.     Height =        0.153 inches,
  950.     Vertical Alignment =    0.007 inches,
  951.     Shared Contents =    yes>
  952.  
  953. <p1stacked,
  954.     Font =            F3,
  955.     Left Tab =        -1.70/0 inches>
  956.  
  957. <F8>Drawing <Tab><F6>6.5<F0><#04>The <F6>draw<#1e>rectangle<F0> 
  958. and <F6>draw<#1e>rectangles <F0>functions draw hollow or<F6><FJ>
  959.  
  960. <p1para,
  961.     Alignment =        Both,
  962.     Font =            F3,
  963.     Allow Page Break After = yes>
  964.  
  965. <F8>Rectangles<Tab><F0>filled outlines of the specified rectangle 
  966. or rectangles as if a five<#1e>point polyline were specified for each 
  967. rectangle, as follows:
  968.  
  969. <para>
  970.  
  971. [x,y,] [x+width,y] [x+width,y+height] [x,y+height] [x,y] 
  972.  
  973. <F6>draw<#1e>rectangle<F0> and <F6>draw<#1e>rectangles<F0> use 
  974. the following graphics context components: background, function, plane<#1e>mask
  975. , foreground, subwindow<#1e>mode, cap<#1e>style, clip<#1e>x, clip<#1e>y, 
  976. clip<#1e>ordering, clip<#1e>region and clip<#1e>mask, dash<#1e>list, 
  977. dash<#1e>offset, fill<#1e>style, join<#1e>style, line<#1e>width, line<#1e>style
  978. , stipple, tile, ts<#1e>x<#1e>origin, and ts<#1e>y<#1e>origin.
  979.  
  980. <syntax,
  981.     Left Tab =        -0.90/0 inches,
  982.     Right Tab =        7.50 inches>
  983.  
  984. draw<#1e>rectangle <F2>drawable gcontext x y width height <F3>&optional<F2> 
  985. fill<#1e>p<F0><Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>rectangle", Sort String = "draw<#1e>rectangle">
  986.  
  987. <para>
  988.  
  989. Draws a rectangle defined by the <F2>x<F0>, <F2>y<F0>, <F2>width<F0>, 
  990. and <F2>height<F0> arguments.
  991.  
  992. <arg>
  993.  
  994. drawable <F3><#1f> The destination <F6>drawable<F3>.
  995.  
  996. gcontext <F3><#1f> The graphics context for drawing the rectangle.
  997.  
  998. x<F3>, <F0>y <F3><#1f> The x and y coordinates that define the 
  999. upper left corner of the rectangle. The coordinates are relative to 
  1000. the destination origin. Type is <F6>int16<F3>.
  1001.  
  1002. width<F3>, <F0>height <F3><#1f> Specifies the width and height 
  1003. that define the outline of the rectangle. Type is <F6>card16<F3>.
  1004.  
  1005. fill<#1e>p <F3><#1f> Specifies whether the rectangle is filled or 
  1006. not. Type <F6>boolean<F3>.
  1007.  
  1008. <syntax,
  1009.     Left Tab =        -0.90/0 inches,
  1010.     Right Tab =        7.50 inches>
  1011.  
  1012. draw<#1e>rectangles <F2>drawable gcontext rectangles <F3>&optional<F2> 
  1013. fill<#1e>p<F0><Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>rectangles", Sort String = "draw<#1e>rectangles">
  1014.  
  1015. <para>
  1016.  
  1017. Draws the rectangles in the order listed in<F2> rectangles<F0>. 
  1018. For the specified <F2>rectangle<F0> or <F2>rectangles<F0>, no 
  1019. pixel is drawn more than once. The x and y coordinates of each rectangle 
  1020. are relative to the destination origin and define the upper left corner 
  1021. of the rectangle. If rectangles intersect, the intersecting pixels 
  1022. are drawn multiple times.
  1023.  
  1024. <arg>
  1025.  
  1026. drawable <F3><#1f> The destination <F6>drawable<F3>.
  1027.  
  1028. gcontext <F3><#1f> The graphics context.
  1029.  
  1030. rectangles <F3><#1f> A list specifying the upper left corner x and 
  1031. y, width and height of the rectangles. Type is <F6>rect<#1e>seq<F3>.
  1032.  
  1033. fill<#1e>p <F3><#1f> Specified if the rectangles are filled or not. 
  1034. Type is <F6>boolean<F3>.
  1035.  
  1036. <p1rule>
  1037.  
  1038. <|,"6<#1e>74"><Index, "drawing", "arcs"><Index, "arcs", "drawing", To Named = p1rule><Index, "graphics", "drawing", "arcs", To Named = p1rule>
  1039. <Frame,
  1040.     Name =            p1rule,
  1041.     Placement =        At Anchor,
  1042.     Width =            6.35 inches,
  1043.     Height =        0.153 inches,
  1044.     Vertical Alignment =    0.007 inches,
  1045.     Shared Contents =    yes>
  1046.  
  1047. <p1para,
  1048.     Alignment =        Both,
  1049.     Font =            F3,
  1050.     Allow Page Break After = yes>
  1051.  
  1052. <F8>Drawing Arcs<Tab><F6>6.6<#04><F0> <F6>draw<#1e>arc<F0> draws 
  1053. a single circular or an elliptical arc, while <F6>draw<#1e>arcs<F0> 
  1054. draws multiple circular or elliptical arcs. <F6>draw<#1e>arc<F0> 
  1055. and <F6>draw<#1e>arcs<F0> use the following graphics context components: 
  1056. arc<#1e>mode, background, cap<#1e>style, clip<#1e>x, clip<#1e>y, clip<#1e>mask, 
  1057. dash<#1e>list, dash<#1e>offset, fill<#1e>style, foreground, join<#1e>style, 
  1058. function, plane<#1e>mask, line<#1e>width, line<#1e>style, stipple, 
  1059. subwindow<#1e>mode, tile, ts<#1e>x<#1e>origin, and ts<#1e>y<#1e>origin.
  1060.  
  1061. <syntax,
  1062.     Left Tab =        -0.90/0 inches,
  1063.     Right Tab =        7.50 inches>
  1064.  
  1065. draw<#1e>arc <F2>drawable gcontext x y width height angle1 angle2 <F3>&option
  1066. al <F2>fill<#1e>p<F0><Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>arc", Sort String = "draw<#1e>arc">
  1067.  
  1068. <para>
  1069.  
  1070. Draws either a circular or an elliptical arc. Also, outlined or filled 
  1071. arcs can be drawn. Each arc is specified by a rectangle (<F2>x<F0>,<F2> 
  1072. y<F0>,<F2> width<F0>,<F2> <F0>and <F2>height<F0>) and two angles 
  1073. (<F2>angle1 <F0>and <F2>angle2<F0>). The angles are signed integers 
  1074. in radians, with positive indicating counterclockwise motion and negative 
  1075. indicating clockwise motion. The start of the arc is specified by <F2>angle1
  1076. <F0>, and the path and extent of the arc is specified by <F2>angle2<F0> 
  1077. relative to the start of the arc. If the magnitude of <F2>angle2<F0> 
  1078. is greater than 360 degrees, it is truncated to 360 degrees. The <F2>x<F0> 
  1079. and <F2>y<F0> coordinates of the rectangle are relative to the <F2>drawable
  1080. <F0>'s origin. 
  1081.  
  1082. For example, an arc specified as [<F2>x<F0>,<F2>y<F0>,<F2>width<F0>,
  1083. <F2>height<F0>,<F2>angle1<F0>,<F2>angle2<F0>] has the origin 
  1084. of the major and minor axes at:
  1085.  
  1086. [<F2>x<F0>+(<F2>width<F0>/2),<F2>y<F0>+(<F2>height<F0>/2)]
  1087.  
  1088. The infinitely thin path describing the entire circle/ellipse intersects 
  1089. the horizontal axis at:
  1090.  
  1091. [<F2>x<F0>,<F2>y<F0>+(<F2>height<F0>/2)] and [<F2>x<F0>+<F2>width
  1092. <F0>,<F2>y<F0>+(<F2>height<F0>/2)] 
  1093.  
  1094. The intersection of the vertical axis is at:
  1095.  
  1096. [<F2>x<F0>+(<F2>width<F0>/2),<F2>y<F0>] and [<F2>x<F0>+(<F2>width
  1097. <F0>/2),<F2>y<F0>+<F2>height<F0>]
  1098.  
  1099. These coordinates can be fractional; that is, they are not truncated 
  1100. to discrete coordinates. Note that the angle values are slightly different 
  1101. in CLX than in the X protocol specification.
  1102.  
  1103. If <F2>fill<#1e>p<F0> is <F6>nil<F0>, then only the outline of 
  1104. the arc is drawn. Otherwise, if <F2>fill<#1e>p<F0> is true, <F6>draw<#1e>arc
  1105. <F0> fills the area bounded by the arc outline and one or two line 
  1106. segments, depending on the arc<#1e>mode. If the arc<#1e>mode is <F6>:chord
  1107. <F0>, the filled area is bounded by the arc outline and the line 
  1108. segment joining the arc end points. If the arc<#1e>mode is <F6>:pie<#1e>slice
  1109. <F0>, the filled area is bounded by the arc outline and the two line 
  1110. segments joining each arc end point with the center point.
  1111.  
  1112. <arg>
  1113.  
  1114. drawable <F3><#1f> The destination <F6>drawable<F3>.
  1115.  
  1116. gcontext <F3><#1f> The graphics context for drawing the arc.
  1117.  
  1118. x<F3>, <F0>y <F3><#1f> The x and y coordinates of the arc rectangle 
  1119. relative to the origin of the <F0>drawable<F3>. Type is <F6>int16<F3>.
  1120.  
  1121. width<F3>, <F0>height <F3><#1f> Specifies the width and height 
  1122. of the rectangle. These are the major and minor axes of the arc. Type 
  1123. is <F6>card16<F3>.
  1124.  
  1125. angle1 <F3><#1f> Specifies the start of the arc in radians. Type 
  1126. is <F6>angle<F3>.
  1127.  
  1128. angle2 <F3><#1f> Specifies the direction and end point of the arc. 
  1129. Type is <F6>angle<F3>.
  1130.  
  1131. fill<#1e>p <F3><#1f> Specifies whether the arc is filled or not. 
  1132. Type <F6>boolean<F3>.
  1133.  
  1134. <syntax,
  1135.     Left Tab =        -0.90/0 inches,
  1136.     Right Tab =        7.50 inches>
  1137.  
  1138. <|,"6<#1e>75">draw<#1e>arcs <F2>drawable gcontext arcs <F3>&optional<F2> 
  1139. fill<#1e>p<F0><Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>arcs", Sort String = "draw<#1e>arcs">
  1140.  
  1141. <para>
  1142.  
  1143. Draws circular or elliptical, outlined or filled arcs. Each arc is 
  1144. specified by a rectangle and two angles. For a more detailed description, 
  1145. see <F6>draw<#1e>arc<F0>.
  1146.  
  1147. The arcs are filled in the order listed. For any given arc, no pixel 
  1148. is drawn more than once. If regions intersect, the intersecting pixels 
  1149. are drawn multiple times.
  1150.  
  1151. <arg>
  1152.  
  1153. drawable <F3><#1f> Specifies the <F6>drawable<F3> where you want 
  1154. the arcs drawn.
  1155.  
  1156. gcontext <F3><#1f> Specifies the graphics context for drawing the 
  1157. arc.
  1158.  
  1159. arcs <F3><#1f> A sequence containing the width, height, angle1, and 
  1160. angle2 arguments defining the arcs. See <F6>draw<#1e>arc<F3> for 
  1161. more detail. Type is <F6>arc<#1e>seq<F3>.
  1162.  
  1163. fill<#1e>p <F3><#1f> Specifies whether the arcs are filled or not. 
  1164. Type is <F6>boolean<F3>.
  1165.  
  1166. <p1rule>
  1167.  
  1168. <Index, "graphics", "drawing", "glyphs", To Named = p1rule><Index, "drawing", "glyphs", To Named = p1rule><Index, "glyphs", "drawing", To Named = p1rule><Index, "drawing", "text"><Index, "text", "drawing", To Named = p1rule><Index, "graphics", "drawing", "text", To Named = p1rule>
  1169. <Frame,
  1170.     Name =            p1rule,
  1171.     Placement =        At Anchor,
  1172.     Width =            6.35 inches,
  1173.     Height =        0.153 inches,
  1174.     Vertical Alignment =    0.007 inches,
  1175.     Shared Contents =    yes>
  1176.  
  1177. <p1para,
  1178.     Alignment =        Both,
  1179.     Font =            F3,
  1180.     Allow Page Break After = yes>
  1181.  
  1182. <F8>Drawing Text<Tab><F6>6.7<F0><#04>CLX provides functions for 
  1183. drawing text using text fonts provided by the<SP>X server. An X font 
  1184. is array of character bit maps indexed by integer<SP>codes. See Section 
  1185. 8 for a complete discussion of the CLX functions<SP>used to manage 
  1186. fonts and characters.<F6><#04><F0> 
  1187.  
  1188. <para>
  1189.  
  1190. Since Common Lisp programs typically represent text as sequences of 
  1191. characters (that is, strings), CLX text functions must be prepared 
  1192. to<SP>convert a Common Lisp character into the integer code used to 
  1193. index the<SP>appropriate character bitmap in a given font. The <F6>:translate
  1194. <F0> argument<SP>to a text function is a function which performs 
  1195. this conversion. The default <F6>:translate<F0> function handles 
  1196. all characters that satisfy<SP><F6>graphic<#1e>char<#1e>p<F0> by 
  1197. converting each character into its ASCII code. Note<SP>that the assumption 
  1198. made by the default <F6>:translate<F0> function<#1f>that is,<SP>that 
  1199. an X font indexes bitmaps by ASCII codes<#1f>is often valid, but<SP>other 
  1200. encodings are possible. In general, a <F6>:translate<F0> function 
  1201. can perform complex transformations. It can be used to convert<SP>non<#1e>chara
  1202. cter input, to handle non<#1e>ASCII character encodings, and to change 
  1203. the fonts used to access character bitmaps. The complete behavior 
  1204. of a <F6>:translate<F0> function is given below by describing a<SP>prototypic
  1205. al <F6>translate<#1e>function<F0>.
  1206.  
  1207. CLX offers two different ways to draw text<#1f>filled text and block 
  1208. text. The <F6>draw<#1e>glyph<F0> and <F6>draw<#1e>glyphs<F0> functions 
  1209. create filled text, in which each character image is treated as an 
  1210. area to be filled according to the fill<#1e>style of the given graphics 
  1211. context, without otherwise disturbing the surrounding background. 
  1212. In addition, filled<SP>text sends a complex type of server request 
  1213. which allows a series of font<SP>indices, font changes, and horizontal 
  1214. position changes to be compiled<SP>into a single request. Filled text 
  1215. functions use<FJ>
  1216. the following graphics<SP>context attributes: background, clip<#1e>mask, 
  1217. clip<#1e>x<#1e>origin, clip<#1e>y<#1e>origin,<SP>fill<#1e>style, font, 
  1218. foreground, function, plane<#1e>mask, stipple,<SP>subwindow<#1e>mode, 
  1219. tile, ts<#1e>x<#1e>origin, ts<#1e>y<#1e>origin.
  1220.  
  1221. Block text is a rendering style commonly used by display terminals, 
  1222. in<SP> which each character image appears in the foreground pixel 
  1223. inside a<SP>rectangular character cell drawn in the graphics context 
  1224. background<SP>pixel. The <F6>draw<#1e>image<#1e>glyph<F0> and <F6>draw<#1e>i
  1225. mage<#1e>glyphs<F0> functions create<SP>block text. Block text functions 
  1226. use the following graphics context<SP> attributes: background, clip<#1e>mask, 
  1227. clip<#1e>x<#1e>origin, clip<#1e>y<#1e>origin, font,<SP>foreground, 
  1228. plane<#1e>mask, stipple, subwindow<#1e>mode, tile, ts<#1e>x<#1e>origin,<SP>ts<#1e>
  1229. y<#1e>origin.
  1230.  
  1231. <syntax0>
  1232.  
  1233. <|,"6<#1e>76">draw<#1e>glyph<F3> <F2>drawable gcontext x y element<F3> 
  1234. &key <F0>:translate :width<F3><Tab>Function <Index, Doc = operations, "xlib:draw<#1e>glyph", Sort String = "draw<#1e>glyph"><HR>
  1235. (<F0>:size :default<F3>) 
  1236.  
  1237. <return>
  1238.  
  1239. <Tab><F3>Returns:<HR>
  1240.   <F2>output<#1e>p<F3> <#1f> Type <F0>boolean<F3>.<HR>
  1241.   <F2>width<F3> <#1f> Type <F0>int32<F3> or <F0>null<F3>.
  1242.  
  1243. <para>
  1244.  
  1245. Draws a single character of filled text represented by the given <F2>element
  1246. <F0>.<SP>The given <F2>x<F0> and <F2>y<F0> specify the left baseline 
  1247. position for the character.<SP>The first return value is true if the 
  1248. character is successfully<SP>translated and drawn, or <F6>nil<F0> 
  1249. if the <F6>:translate<F0> function did not<SP>translate it. The 
  1250. second return value gives the total pixel width of the character actually 
  1251. drawn, if known.
  1252.  
  1253. Specifying a <F6>:width<F0> is a hint to improve performance. The <F6>:width
  1254. <F0> is assumed to be the total pixel width of the character actually 
  1255. drawn.<SP>Specifying <F6>:width<F0> permits appending the output 
  1256. of subsequent calls<SP>to the same protocol request, provided <F2>gcontext
  1257. <F0> has not been modified in<SP>the interim. If <F6>:width<F0> 
  1258. is not specified, appending of subsequent<SP> output might not occur 
  1259. (unless <F6>:translate<F0> returns the character width).
  1260.  
  1261. The <F6>:size<F0> specifies the element size of the destination 
  1262. buffer given to <F6>:translate<F0> (either 8, 16, or <F6>:default<F0>). 
  1263. If <F6>:default<F0> is specified, the<SP>size is based on the current 
  1264. font, if known; otherwise, 16 is used.
  1265.  
  1266. <arg>
  1267.  
  1268. drawable<F3> <#1f> The destination <F6>drawable<F3>.
  1269.  
  1270. gcontext<SP><F3><#1f> The graphics context for drawing text.
  1271.  
  1272. x<F3>, <F0>y<F3> <#1f> The left baseline position for the character 
  1273. drawn.<SP>
  1274.  
  1275. element<F3><SP><#1f> A character or other object to be translated 
  1276. into a font index.<SP>
  1277.  
  1278. <F6>:translate<F3> <#1f> A function to translate text to font indexes. 
  1279. Default is <F6>#'translate<#1e>default<F3>.
  1280.  
  1281. <F6>:width<F3> <#1f> The total pixel width of the character actually 
  1282. drawn, if known.
  1283.  
  1284. <F6>:size<F3> <#1f> Specifies the element size of the destination 
  1285. buffer given to <F6>:translate<F3> (8, 16, or <F6>:default<F3>).
  1286.  
  1287. <syntax0>
  1288.  
  1289. draw<#1e>glyphs<F3> <F2>drawable gcontext x y sequence<F3> &key 
  1290. (<F0>:start<F3> 0) <F0>:end :translate<F3><Tab>Function<Index, Doc = operations, "xlib:draw<#1e>glyphs", Sort String = "draw<#1e>glyphs"><HR>
  1291. <F0>:width<F3> (<F0>:size :default<F3>)
  1292.  
  1293. <return>
  1294.  
  1295. <Tab><F3>Returns:<HR>
  1296.   <F2>new<#1e>start <F3><#1f> Type <F0>array<#1e>index<F3> or <F0>null
  1297. <F3>.<SP><HR>
  1298.   <F2>width<F3> <#1f> Type <F0>int32<F3> or <F0>null<F3>.
  1299.  
  1300. <para>
  1301.  
  1302. Draws the filled text characters represented by the given sequence.<SP><F6>:st
  1303. art<F0> and <F6>:end<F0> define the elements of the sequence which 
  1304. are drawn. The<SP>given <F2>x<F0> and <F2>y<F0> specify the left 
  1305. baseline position for the first<SP> character. The first return value 
  1306. is <F6>nil<F0> if all characters are<SP>successfully translated 
  1307. and drawn; otherwise, the index of the first<SP>untranslated sequence 
  1308. element is returned. The second return value<SP>gives the total pixel 
  1309. width of the characters actually drawn, if known.
  1310.  
  1311. Specifying a <F6>:width<F0> is a hint to improve performance. The<F6> 
  1312. :width<F0> is assumed to be the total pixel width of the character 
  1313. sequence actually<SP>drawn. Specifying <F6>:width<F0> permits appending 
  1314. the output of subsequent<SP>calls to the same protocol request, provided <F2>g
  1315. context<F0> has not been<SP>modified in the interim. If <F6>:width<F0> 
  1316. is not specified, appending of<SP>subsequent output might not occur 
  1317. (unless <F6>:translate<F0> returns the<SP>character width).
  1318.  
  1319. The <F6>:size<F0> specifies the element size of the destination 
  1320. buffer given to<F6><SP>:translate<F0> (either 8, 16, or <F6>:default<F0>). 
  1321. If :<F6>default<F0> is specified, the size is based on the current 
  1322. font, if known; otherwise, 16 is used.
  1323.  
  1324. <arg>
  1325.  
  1326. drawable<F3> <#1f> The destination <F6>drawable<F3>.
  1327.  
  1328. <|,"6<#1e>77">gcontext<F3> <#1f> The graphics context for drawing text.
  1329.  
  1330. x<F3>, <F0>y<F3> <#1f> The left baseline position for the character 
  1331. drawn.
  1332.  
  1333. sequence<F3> <#1f> A sequence of characters or other objects to be 
  1334. translated into font indexes.
  1335.  
  1336. <F6>:start<F3>, <F6>:end<F3> <#1f> Start and end indexes defining 
  1337. the elements to draw.<SP>
  1338.  
  1339. <F6>:translate<F3> <#1f> A function to translate text to font indexes. 
  1340. Default is<SP><F6>#'translate<#1e>default<F3>.
  1341.  
  1342. <F6>:width<F3> <#1f> The total total pixel width of the character 
  1343. actually drawn, if<SP> known.
  1344.  
  1345. <F6>:size<F3> <#1f> The element size of the destination buffer given 
  1346. to <F6>:translate<F3> (8,<SP>16, or <F6>:default<F3>).
  1347.  
  1348. <syntax0>
  1349.  
  1350. draw<#1e>image<#1e>glyph<F3> <F2>drawable gcontext x y element<F3> 
  1351. &key <F0>:translate<F3> <F0>:width<Tab><F3>Function <Index, Doc = operations, "xlib:draw<#1e>image<#1e>glyph", Sort String = "draw<#1e>image<#1e>glyph"><HR>
  1352. (<F0>:size :default<F3>) 
  1353.  
  1354. <return>
  1355.  
  1356. <Tab><F3>Returns:<HR>
  1357.   <F2>output<#1e>p<F3> <#1f> Type <F0>boolean<F3>.<F0><HR>
  1358.   <F2>width<F3> <#1f> Type <F0>int32<F3> or <F0>null<F3>.
  1359.  
  1360. <para>
  1361.  
  1362. Draws a single character of block text represented by the given <F2>element
  1363. <F0>.<SP>The given <F2>x<F0> and <F2>y<F0> specify the left baseline 
  1364. position for the character.<SP>The first return value is true if the 
  1365. character is successfully<SP>translated and drawn, or <F6>nil<F0> 
  1366. if the <F6>:translate<F0> function did not<SP>translate it. The <F6>:transla
  1367. te<F0> function is allowed to return an initial<SP>font change. The 
  1368. second return value gives the total pixel width of the<SP>character 
  1369. actually drawn, if known.
  1370.  
  1371. The <F6>:translate<F0> function may not return a horizontal position 
  1372. change,<SP>since <F6>draw<#1e>image<#1e>glyph<F0> does not generate 
  1373. complex output requests.
  1374.  
  1375. Specifying a <F6>:width<F0> is a hint to improve performance. The <F6>:width
  1376. <F0> is<SP>assumed to be the total pixel width of the character actually 
  1377. drawn.<SP>Specifying <F6>:width<F0> permits appending the output 
  1378. of subsequent calls<SP>to the same protocol request, provided <F2>gcontext
  1379. <F0> has not been modified in<SP> the interim. If <F6>:width<F0> 
  1380. is not specified, appending of subsequent<SP> output might not occur 
  1381. (unless <F6>:translate<F0> returns the character width).
  1382.  
  1383. The <F6>:size<F0> specifies the element size of the destination 
  1384. buffer given to <F6>:translate<F0> (either 8, 16, or <F6>:default<F0>). 
  1385. If <F6>:default<F0> is specified, the size is based on the current 
  1386. font, if known; otherwise, 16 is used.
  1387.  
  1388. <arg>
  1389.  
  1390. drawable<F3> <#1f> The destination <F6>drawable<F3>.
  1391.  
  1392. gcontext <F3><#1f> The graphics context for drawing text.
  1393.  
  1394. x<F3>, <F0>y<F3> <#1f> The left baseline position for the character 
  1395. drawn.
  1396.  
  1397. element<F3> <#1f> A character or other object to be translated into 
  1398. a font index.<SP>
  1399.  
  1400. <F6>:translate<F3> <#1f> A function to translate text to font indexes. 
  1401. Default is<SP> <F6>#'translate<#1e>default<F3>.<SP>
  1402.  
  1403. <F6>:width<F3> <#1f> The total pixel width of the character actually 
  1404. drawn, if known.
  1405.  
  1406. <F6>:size<F3> <#1f> Specifies the element size of the destination 
  1407. buffer given to<SP><F6>:translate<F3> (8, 16, or <F6>:default<F3>).
  1408.  
  1409. <syntax0>
  1410.  
  1411. <|,"6<#1e>78">draw<#1e>image<#1e>glyphs<F3> <F2>drawable gcontext x y sequence<F3> 
  1412. &key (<F0>:start<F3> 0) <F0>:end <Tab><F3>Function<Index, Doc = operations, "xlib:draw<#1e>image<#1e>glyphs", Sort String = "draw<#1e>image<#1e>glyphs"><HR>
  1413. <F0>:translate<F3> <F0>:width<F3> (<F0>:size :default<F3>)
  1414.  
  1415. <return>
  1416.  
  1417. <Tab><F3>Returns:<HR>
  1418.   <F2>new<#1e>start<F3> <#1f> Type <F0>array<#1e>index<F3> or <F0>null
  1419. <F3>.<HR>
  1420.   <F2>width<F3> <#1f> Type <F0>int32<F3> or <F0>null<F3>.
  1421.  
  1422. <para>
  1423.  
  1424. Draws the block text characters represented by the given <F6>sequence<F0>. 
  1425. <F6>:start<F0> and <F6>:end<F0> define the elements of the <F2>sequence
  1426. <F0> which are drawn. The<SP>given <F2>x<F0> and <F2>y<F0> specify 
  1427. the left baseline position for the first<SP>character. The first return 
  1428. value is <F6>nil<F0> if all characters are<SP>successfully translated 
  1429. and drawn; otherwise, the index of the first<SP>untranslated sequence 
  1430. element is returned. The <F6>:translate<F0> function is<SP>allowed 
  1431. to return an initial font change. The second return value gives<SP>the 
  1432. total pixel width of the characters actually drawn, if known.
  1433.  
  1434. The <F6>:translate<F0> function may not return a horizontal position 
  1435. change,<SP>since <F6>draw<#1e>image<#1e>glyphs<F0> does not generate 
  1436. complex output requests.
  1437.  
  1438. Specifying a <F6>:width<F0> is a hint to improve performance. The <F6>:width
  1439. <F0> is<SP>assumed to be the total pixel width of the character sequence 
  1440. actually<SP>drawn. Specifying <F6>:width<F0> permits appending the 
  1441. output of subsequent<SP>calls to the same protocol request, provided <F2>gcont
  1442. ext<F0> has not been modified in the interim. If <F6>:width<F0> 
  1443. is not specified, appending of subsequent output might not occur (unless <F6>:
  1444. translate<F0> returns the<SP>character width).
  1445.  
  1446. The <F6>:size<F0> specifies the element size of the destination 
  1447. buffer given to<SP><F6>:translate<F0> (either 8, 16, or <F6>:default<F0>). 
  1448. If <F6>:default<F0> is specified, the<SP>size will be based on the 
  1449. current font, if known; otherwise, 16 is used.
  1450.  
  1451. <arg>
  1452.  
  1453. drawable<F3> <#1f> The destination <F6>drawable<F3>.
  1454.  
  1455. x<F3>, <F0>y<F3> <#1f> The left baseline position for the character 
  1456. drawn.
  1457.  
  1458. gcontext<F3> <#1f> The graphics context for drawing text.
  1459.  
  1460. sequence<F3><SP><#1f> A sequence of characters or other objects to 
  1461. be translated into font indexes.
  1462.  
  1463. <F6>:start<F3>, <F6>:end<F3><SP><#1f> Start and end indexes defining 
  1464. the elements to draw.
  1465.  
  1466. <F6>:translate<F3> <#1f> A function to translate text to font indexes. 
  1467. Default is<SP> <F6>#'translate<#1e>default<F3>.
  1468.  
  1469. <F6>:width<F3> <#1f> The total total pixel width of the character 
  1470. actually drawn, if<SP>known.
  1471.  
  1472. <F6>:size<F3> <#1f> The element size of the destination buffer given 
  1473. to <F6>:translate<F3> (8,<SP>16, or <F6>:default<F3>).
  1474.  
  1475. <syntax0>
  1476.  
  1477. translate<#1e>function<F3> <F2>source source<#1e>start source<#1e>end 
  1478. font destination<Tab><F3>Function<Index, Doc = operations, "xlib:translate<#1e>function", Sort String = "translate<#1e>function"><HR>
  1479. <F2>destination<#1e>start 
  1480.  
  1481. <return>
  1482.  
  1483. <Tab><F3>Returns:<HR>
  1484.  <F2> first<#1e>not<#1e>done<F3> <#1f> Type <F0>array<#1e>index<F3>.<HR>
  1485.   <F2>to<#1e>continue<F3> <#1f> Type <F0>int16<F3>, <F0>font<F3>, 
  1486. or <F0>null<F3>.<HR>
  1487.   <F2>current<#1e>width<F3> <#1f> Type <F0>int32<F3> or <F0>null<F3>.
  1488.  
  1489. <para>
  1490.  
  1491. A function used as the <F6>:translate<F0> argument for text functions. 
  1492. Converts elements of the <F2>source<F0> (sub)sequence into font 
  1493. indexes for the given <F2>font<F0> and stores them into the <F2>destination
  1494. <F0> vector.
  1495.  
  1496. <|,"6<#1e>79">The <F2>destination<F0> vector is created automatically by 
  1497. CLX. <F2>destination<F0> is guaranteed to have room for (- <F2>source<#1e>en
  1498. d source<#1e>star<F0>t) integer elements, starting at <F2>destination<#1e>sta
  1499. rt<F0>. Elements of <F2>destination<F0> can be either <F6>card8<F0><SP>or 
  1500. <F6>card16<F0> integers, depending on the context. <F2>font<F0> 
  1501. is the current font, if known, or <F6>nil<F0> otherwise. Starting 
  1502. with the element at <F2>source<#1e>start<F0>,<SP><F6>translate<#1e>function
  1503. <F0> should translate as many elements of <F2>source<F0> as possible<SP>(up 
  1504. to the <F2>source<#1e>end<F0> element) into indexes in the current <F2>font
  1505. <F0>, and store<SP>them into <F2>destination<F0>. The first return 
  1506. value should be the source index of<SP>the first untranslated element.
  1507.  
  1508. The second return value indicates the changes which should be made 
  1509. to the current text output request before translating the remaining <F2>source
  1510. <F0><SP>elements. If no further elements need to be translated, the 
  1511. second return<SP>value should be <F6>nil<F0>. If a horizontal motion 
  1512. is required before further<SP>translation, the second return value 
  1513. should be the change in x position. If<SP>a font change is required 
  1514. for further translation, the second return value<SP>should be the 
  1515. new font.
  1516.  
  1517. If known, the pixel width of the translated text can be returned as 
  1518. the<SP>third value; this can allow for appending of subsequent output 
  1519. to the same<SP>protocol request, if no overall width has been specified 
  1520. at the higher level. 
  1521.  
  1522. <arg>
  1523.  
  1524. source<F3> <#1f> A sequence of characters or other objects to be 
  1525. translated.<SP>
  1526.  
  1527. source<#1e>start<F3> <#1f> An array<#1e>index specifying the first <F0>source
  1528. <F3> element to be translated.
  1529.  
  1530. source<#1e>end<F3> <#1f> An array<#1e>index specifying the end of 
  1531. the <F0>source<F3> subsequence to be translated.
  1532.  
  1533. font<F3> <#1f> The font indexed by translated <F0>source<F3> elements.
  1534.  
  1535. destination<F3> <#1f> A vector where translated <F0>source<F3> 
  1536. elements are stored.
  1537.  
  1538. destination<#1e>start<F3> <#1f> An array<#1e>index specifying the 
  1539. position to begin storing translated<SP><F0>source<F3> elements.
  1540.  
  1541. <newpage>
  1542.  
  1543. <|,"6<#1e>80">
  1544.