Artifact 01dd0798b9c4453ce6282feeb5e1503cee26ae1c:


0000: 3c 68 31 3e 3c 74 74 3e 62 61 73 65 3c 2f 74 74  <h1><tt>base</tt
0010: 3e 20 4d 6f 64 75 6c 65 3c 2f 68 31 3e 0a 0a 3c  > Module</h1>..<
0020: 68 32 3e 53 79 6e 6f 70 73 69 73 3c 2f 68 32 3e  h2>Synopsis</h2>
0030: 0a 0a 3c 74 61 62 6c 65 3e 0a 09 3c 74 72 3e 0a  ..<table>..<tr>.
0040: 09 09 3c 74 68 3e 52 61 63 6b 65 74 3c 2f 74 68  ..<th>Racket</th
0050: 3e 0a 09 09 3c 74 64 3e 3c 63 6f 64 65 3e 28 72  >...<td><code>(r
0060: 65 71 75 69 72 65 20 28 70 6c 61 6e 65 74 20 6d  equire (planet m
0070: 75 72 70 68 79 2f 63 61 6e 76 61 73 2d 64 72 61  urphy/canvas-dra
0080: 77 3a 31 3a 30 2f 62 61 73 65 29 29 3c 2f 63 6f  w:1:0/base))</co
0090: 64 65 3e 3c 2f 74 64 3e 0a 09 3c 2f 74 72 3e 0a  de></td>..</tr>.
00a0: 09 3c 74 72 3e 0a 09 09 3c 74 68 3e 43 48 49 43  .<tr>...<th>CHIC
00b0: 4b 45 4e 3c 2f 74 68 3e 0a 09 09 3c 74 64 3e 3c  KEN</th>...<td><
00c0: 63 6f 64 65 3e 28 72 65 71 75 69 72 65 2d 65 78  code>(require-ex
00d0: 74 65 6e 73 69 6f 6e 20 63 61 6e 76 61 73 2d 64  tension canvas-d
00e0: 72 61 77 2d 62 61 73 65 29 3c 2f 63 6f 64 65 3e  raw-base)</code>
00f0: 3c 2f 74 64 3e 0a 09 3c 2f 74 72 3e 0a 3c 2f 74  </td>..</tr>.</t
0100: 61 62 6c 65 3e 0a 0a 42 61 73 69 63 20 43 44 20  able>..Basic CD 
0110: 6c 69 62 72 61 72 79 20 73 75 70 70 6f 72 74 2e  library support.
0120: 20 49 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65   Initializes the
0130: 20 43 44 20 6c 69 62 72 61 72 79 20 77 68 65 6e   CD library when
0140: 20 6c 6f 61 64 65 64 2e 0a 0a 3c 68 32 3e 44 61   loaded...<h2>Da
0150: 74 61 20 54 79 70 65 73 3c 2f 68 32 3e 0a 0a 3c  ta Types</h2>..<
0160: 68 33 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61 73  h3><a id="canvas
0170: 5f 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69  _"><code><nowiki
0180: 3e 28 63 61 6e 76 61 73 3f 20 5b 76 20 61 6e 79  >(canvas? [v any
0190: 2f 63 5d 29 20 e2 86 92 20 62 6f 6f 6c 65 61 6e  /c]) → boolean
01a0: 3f 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64 65  ?</nowiki></code
01b0: 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 43 68 65 63  ></a></h3>..Chec
01c0: 6b 20 77 68 65 74 68 65 72 20 61 20 76 61 6c 75  k whether a valu
01d0: 65 20 69 73 20 61 20 43 44 20 63 61 6e 76 61 73  e is a CD canvas
01e0: 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63 6f  ...<h3><a id="co
01f0: 6e 74 65 78 74 5f 22 3e 3c 63 6f 64 65 3e 3c 6e  ntext_"><code><n
0200: 6f 77 69 6b 69 3e 28 63 6f 6e 74 65 78 74 3f 20  owiki>(context? 
0210: 5b 76 20 61 6e 79 2f 63 5d 29 20 e2 86 92 20 62  [v any/c]) → b
0220: 6f 6f 6c 65 61 6e 3f 3c 2f 6e 6f 77 69 6b 69 3e  oolean?</nowiki>
0230: 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e  </code></a></h3>
0240: 0a 0a 43 68 65 63 6b 20 77 68 65 74 68 65 72 20  ..Check whether 
0250: 61 20 76 61 6c 75 65 20 69 73 20 61 20 43 44 20  a value is a CD 
0260: 64 72 69 76 65 72 20 63 6f 6e 74 65 78 74 2e 0a  driver context..
0270: 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 73 74 61 74  .<h3><a id="stat
0280: 65 5f 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77 69 6b  e_"><code><nowik
0290: 69 3e 28 73 74 61 74 65 3f 20 5b 76 20 61 6e 79  i>(state? [v any
02a0: 2f 63 5d 29 20 e2 86 92 20 62 6f 6f 6c 65 61 6e  /c]) → boolean
02b0: 3f 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64 65  ?</nowiki></code
02c0: 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 43 68 65 63  ></a></h3>..Chec
02d0: 6b 20 77 68 65 74 68 65 72 20 61 20 76 61 6c 75  k whether a valu
02e0: 65 20 69 73 20 61 20 43 44 20 63 61 6e 76 61 73  e is a CD canvas
02f0: 20 73 74 61 74 65 2e 0a 0a 3c 68 32 3e 43 61 6e   state...<h2>Can
0300: 76 61 73 20 4d 61 6e 61 67 65 6d 65 6e 74 3c 2f  vas Management</
0310: 68 32 3e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22  h2>..<h3><a id="
0320: 63 6f 6e 74 65 78 74 2d 63 61 70 61 62 69 6c 69  context-capabili
0330: 74 69 65 73 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77  ties"><code><now
0340: 69 6b 69 3e 28 63 6f 6e 74 65 78 74 2d 63 61 70  iki>(context-cap
0350: 61 62 69 6c 69 74 69 65 73 20 5b 63 6f 6e 74 65  abilities [conte
0360: 78 74 20 63 6f 6e 74 65 78 74 3f 5d 29 20 e2 86  xt context?]) â†
0370: 92 20 28 6c 69 73 74 6f 66 20 73 79 6d 62 6f 6c  ’ (listof symbol
0380: 3f 29 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64  ?)</nowiki></cod
0390: 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 52 65 74  e></a></h3>..Ret
03a0: 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 66  urns a list of f
03b0: 6c 61 67 73 20 64 65 73 63 72 69 62 69 6e 67 20  lags describing 
03c0: 74 68 65 20 63 61 70 61 62 69 6c 69 74 69 65 73  the capabilities
03d0: 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68   supported by th
03e0: 65 20 67 69 76 65 6e 0a 63 6f 6e 74 65 78 74 2e  e given.context.
03f0: 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  ..The following 
0400: 66 6c 61 67 73 20 6d 61 79 20 73 68 6f 77 20 75  flags may show u
0410: 70 20 69 6e 20 74 68 65 20 6c 69 73 74 3a 0a 20  p in the list:. 
0420: 20 2a 20 20 3c 63 6f 64 65 3e 27 66 6c 75 73 68   *  <code>'flush
0430: 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63 6f  </code>.  *  <co
0440: 64 65 3e 27 63 6c 65 61 72 3c 2f 63 6f 64 65 3e  de>'clear</code>
0450: 0a 20 20 2a 20 20 3c 63 6f 64 65 3e 27 70 6c 61  .  *  <code>'pla
0460: 79 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63  y</code>.  *  <c
0470: 6f 64 65 3e 27 79 2d 61 78 69 73 3c 2f 63 6f 64  ode>'y-axis</cod
0480: 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e 27 63  e>.  *  <code>'c
0490: 6c 69 70 2d 61 72 65 61 3c 2f 63 6f 64 65 3e 0a  lip-area</code>.
04a0: 20 20 2a 20 20 3c 63 6f 64 65 3e 27 63 6c 69 70    *  <code>'clip
04b0: 2d 70 6f 6c 79 67 6f 6e 3c 2f 63 6f 64 65 3e 0a  -polygon</code>.
04c0: 20 20 2a 20 20 3c 63 6f 64 65 3e 27 72 65 67 69    *  <code>'regi
04d0: 6f 6e 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c  on</code>.  *  <
04e0: 63 6f 64 65 3e 27 72 65 63 74 61 6e 67 6c 65 3c  code>'rectangle<
04f0: 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64  /code>.  *  <cod
0500: 65 3e 27 63 68 6f 72 64 3c 2f 63 6f 64 65 3e 0a  e>'chord</code>.
0510: 20 20 2a 20 20 3c 63 6f 64 65 3e 27 69 6d 61 67    *  <code>'imag
0520: 65 2f 72 67 62 3c 2f 63 6f 64 65 3e 0a 20 20 2a  e/rgb</code>.  *
0530: 20 20 3c 63 6f 64 65 3e 27 69 6d 61 67 65 2f 72    <code>'image/r
0540: 67 62 61 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20  gba</code>.  *  
0550: 3c 63 6f 64 65 3e 27 69 6d 61 67 65 2f 6d 61 70  <code>'image/map
0560: 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63 6f  </code>.  *  <co
0570: 64 65 3e 27 67 65 74 2d 69 6d 61 67 65 2f 72 67  de>'get-image/rg
0580: 62 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63  b</code>.  *  <c
0590: 6f 64 65 3e 27 69 6d 61 67 65 2f 73 65 72 76 65  ode>'image/serve
05a0: 72 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63  r</code>.  *  <c
05b0: 6f 64 65 3e 27 62 61 63 6b 67 72 6f 75 6e 64 3c  ode>'background<
05c0: 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64  /code>.  *  <cod
05d0: 65 3e 27 62 61 63 6b 67 72 6f 75 6e 64 2d 6f 70  e>'background-op
05e0: 61 63 69 74 79 3c 2f 63 6f 64 65 3e 0a 20 20 2a  acity</code>.  *
05f0: 20 20 3c 63 6f 64 65 3e 27 77 72 69 74 65 2d 6d    <code>'write-m
0600: 6f 64 65 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20  ode</code>.  *  
0610: 3c 63 6f 64 65 3e 27 6c 69 6e 65 2d 73 74 79 6c  <code>'line-styl
0620: 65 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63  e</code>.  *  <c
0630: 6f 64 65 3e 27 6c 69 6e 65 2d 77 69 64 74 68 3c  ode>'line-width<
0640: 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64  /code>.  *  <cod
0650: 65 3e 27 66 70 72 69 6d 74 69 76 65 73 3c 2f 63  e>'fprimtives</c
0660: 6f 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e  ode>.  *  <code>
0670: 27 68 61 74 63 68 3c 2f 63 6f 64 65 3e 0a 20 20  'hatch</code>.  
0680: 2a 20 20 3c 63 6f 64 65 3e 27 73 74 69 70 70 6c  *  <code>'stippl
0690: 65 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63  e</code>.  *  <c
06a0: 6f 64 65 3e 27 70 61 74 74 65 72 6e 3c 2f 63 6f  ode>'pattern</co
06b0: 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e 27  de>.  *  <code>'
06c0: 66 6f 6e 74 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20  font</code>.  * 
06d0: 20 3c 63 6f 64 65 3e 27 66 6f 6e 74 2d 64 69 6d   <code>'font-dim
06e0: 65 6e 73 69 6f 6e 73 3c 2f 63 6f 64 65 3e 0a 20  ensions</code>. 
06f0: 20 2a 20 20 3c 63 6f 64 65 3e 27 74 65 78 74 2d   *  <code>'text-
0700: 73 69 7a 65 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20  size</code>.  * 
0710: 20 3c 63 6f 64 65 3e 27 74 65 78 74 2d 6f 72 69   <code>'text-ori
0720: 65 6e 74 61 74 69 6f 6e 3c 2f 63 6f 64 65 3e 0a  entation</code>.
0730: 20 20 2a 20 20 3c 63 6f 64 65 3e 27 70 61 6c 65    *  <code>'pale
0740: 74 74 65 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20  tte</code>.  *  
0750: 3c 63 6f 64 65 3e 27 6c 69 6e 65 2d 63 61 70 3c  <code>'line-cap<
0760: 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64  /code>.  *  <cod
0770: 65 3e 27 6c 69 6e 65 2d 6a 6f 69 6e 3c 2f 63 6f  e>'line-join</co
0780: 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e 27  de>.  *  <code>'
0790: 70 61 74 68 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20  path</code>.  * 
07a0: 20 3c 63 6f 64 65 3e 27 62 65 7a 69 65 72 3c 2f   <code>'bezier</
07b0: 63 6f 64 65 3e 0a 0a 3c 68 33 3e 3c 61 20 69 64  code>..<h3><a id
07c0: 3d 22 75 73 65 2d 63 6f 6e 74 65 78 74 5f 22 3e  ="use-context_">
07d0: 3c 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69 3e 5b 75  <code><nowiki>[u
07e0: 73 65 2d 63 6f 6e 74 65 78 74 2b 20 28 70 61 72  se-context+ (par
07f0: 61 6d 65 74 65 72 2f 63 20 61 6e 79 29 5d 3c 2f  ameter/c any)]</
0800: 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64 65 3e 3c 2f  nowiki></code></
0810: 61 3e 3c 2f 68 33 3e 0a 0a 41 20 70 61 72 61 6d  a></h3>..A param
0820: 65 74 65 72 20 64 65 74 65 72 6d 69 6e 69 6e 67  eter determining
0830: 20 77 68 65 74 68 65 72 20 63 61 6c 6c 73 20 74   whether calls t
0840: 6f 20 3c 63 6f 64 65 3e 5b 23 6d 61 6b 65 2d 63  o <code>[#make-c
0850: 61 6e 76 61 73 7c 6d 61 6b 65 2d 63 61 6e 76 61  anvas|make-canva
0860: 73 5d 3c 2f 63 6f 64 65 3e 0a 73 68 6f 75 6c 64  s]</code>.should
0870: 20 75 73 65 20 65 78 74 65 6e 64 65 64 20 76 61   use extended va
0880: 72 69 61 6e 74 73 20 6f 66 20 74 68 65 20 70 61  riants of the pa
0890: 73 73 65 64 20 63 6f 6e 74 65 78 74 20 64 72 69  ssed context dri
08a0: 76 65 72 73 2e 0a 0a 44 65 66 61 75 6c 74 73 20  vers...Defaults 
08b0: 74 6f 20 3c 63 6f 64 65 3e 23 66 3c 2f 63 6f 64  to <code>#f</cod
08c0: 65 3e 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22  e>...<h3><a id="
08d0: 6d 61 6b 65 2d 63 61 6e 76 61 73 22 3e 3c 63 6f  make-canvas"><co
08e0: 64 65 3e 3c 6e 6f 77 69 6b 69 3e 28 6d 61 6b 65  de><nowiki>(make
08f0: 2d 63 61 6e 76 61 73 20 5b 63 6f 6e 74 65 78 74  -canvas [context
0900: 20 63 6f 6e 74 65 78 74 3f 5d 20 5b 64 61 74 61   context?] [data
0910: 20 28 6f 72 2f 63 20 73 74 72 69 6e 67 3f 20 70   (or/c string? p
0920: 6f 69 6e 74 65 72 3f 29 5d 29 20 e2 86 92 20 63  ointer?)]) → c
0930: 61 6e 76 61 73 3f 3c 2f 6e 6f 77 69 6b 69 3e 3c  anvas?</nowiki><
0940: 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a  /code></a></h3>.
0950: 0a 43 72 65 61 74 65 73 20 61 20 6e 65 77 20 63  .Creates a new c
0960: 61 6e 76 61 73 20 77 69 74 68 20 74 68 65 20 67  anvas with the g
0970: 69 76 65 6e 20 64 72 69 76 65 72 20 63 6f 6e 74  iven driver cont
0980: 65 78 74 2e 20 54 68 65 20 3c 63 6f 64 65 3e 64  ext. The <code>d
0990: 61 74 61 3c 2f 63 6f 64 65 3e 20 69 73 0a 63 6f  ata</code> is.co
09a0: 6e 74 65 78 74 20 73 70 65 63 69 66 69 63 20 61  ntext specific a
09b0: 6e 64 20 69 73 20 65 69 74 68 65 72 20 61 20 73  nd is either a s
09c0: 74 72 69 6e 67 20 64 65 73 63 72 69 62 69 6e 67  tring describing
09d0: 20 74 68 65 20 73 65 74 75 70 20 6f 66 20 74 68   the setup of th
09e0: 65 20 6e 65 77 20 63 61 6e 76 61 73 0a 6f 72 20  e new canvas.or 
09f0: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 6f 6d  a pointer to som
0a00: 65 20 6e 61 74 69 76 65 20 64 61 74 61 20 6f 62  e native data ob
0a10: 6a 65 63 74 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64  ject...<h3><a id
0a20: 3d 22 63 61 6c 6c 2d 77 69 74 68 2d 63 61 6e 76  ="call-with-canv
0a30: 61 73 22 3e 3c 63 6f 64 65 3e 0a 09 3c 6e 6f 77  as"><code>..<now
0a40: 69 6b 69 3e 28 63 61 6c 6c 2d 77 69 74 68 2d 63  iki>(call-with-c
0a50: 61 6e 76 61 73 20 5b 63 61 6e 76 61 73 20 63 61  anvas [canvas ca
0a60: 6e 76 61 73 3f 5d 20 5b 70 72 6f 63 20 28 2d 3e  nvas?] [proc (->
0a70: 20 63 61 6e 76 61 73 3f 20 61 6e 79 29 5d 29 20   canvas? any)]) 
0a80: e2 86 92 20 61 6e 79 3c 2f 6e 6f 77 69 6b 69 3e  → any</nowiki>
0a90: 3c 62 72 3e 0a 09 3c 6e 6f 77 69 6b 69 3e 28 63  <br>..<nowiki>(c
0aa0: 61 6c 6c 2d 77 69 74 68 2d 63 61 6e 76 61 73 20  all-with-canvas 
0ab0: 5b 63 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74  [context context
0ac0: 3f 5d 20 5b 64 61 74 61 20 28 6f 72 2f 63 20 73  ?] [data (or/c s
0ad0: 74 72 69 6e 67 3f 20 70 6f 69 6e 74 65 72 3f 29  tring? pointer?)
0ae0: 5d 20 5b 70 72 6f 63 20 28 2d 3e 20 63 61 6e 76  ] [proc (-> canv
0af0: 61 73 3f 20 61 6e 79 29 5d 29 20 e2 86 92 20 61  as? any)]) → a
0b00: 6e 79 3c 2f 6e 6f 77 69 6b 69 3e 0a 3c 2f 63 6f  ny</nowiki>.</co
0b10: 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 43 61  de></a></h3>..Ca
0b20: 6c 6c 73 20 74 68 65 20 67 69 76 65 6e 20 70 72  lls the given pr
0b30: 6f 63 65 64 75 72 65 20 77 69 74 68 20 74 68 65  ocedure with the
0b40: 20 67 69 76 65 6e 20 63 61 6e 76 61 73 20 61 6e   given canvas an
0b50: 64 20 6d 61 6b 65 73 20 73 75 72 65 20 74 68 65  d makes sure the
0b60: 20 63 61 6e 76 61 73 20 69 73 0a 73 79 6e 63 68   canvas is.synch
0b70: 72 6f 6e 69 7a 65 64 20 77 69 74 68 20 65 78 74  ronized with ext
0b80: 65 72 6e 61 6c 20 72 65 73 6f 75 72 63 65 73 20  ernal resources 
0b90: 61 72 6f 75 6e 64 20 74 68 65 20 63 61 6c 6c 2e  around the call.
0ba0: 0a 0a 49 66 20 63 61 6c 6c 65 64 20 69 6e 20 74  ..If called in t
0bb0: 68 65 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e  he three argumen
0bc0: 74 20 66 6f 72 6d 2c 20 61 20 66 72 65 73 68 20  t form, a fresh 
0bd0: 63 61 6e 76 61 73 20 69 73 20 63 72 65 61 74 65  canvas is create
0be0: 64 20 75 73 69 6e 67 20 74 68 65 20 67 69 76 65  d using the give
0bf0: 6e 0a 63 6f 6e 74 65 78 74 20 61 6e 64 20 69 73  n.context and is
0c00: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64   automatically d
0c10: 65 73 74 72 6f 79 65 64 20 75 70 6f 6e 20 72 65  estroyed upon re
0c20: 74 75 72 6e 20 66 72 6f 6d 20 74 68 65 20 67 69  turn from the gi
0c30: 76 65 6e 20 70 72 6f 63 65 64 75 72 65 2e 0a 0a  ven procedure...
0c40: 3c 68 33 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61  <h3><a id="canva
0c50: 73 2d 63 6f 6e 74 65 78 74 22 3e 3c 63 6f 64 65  s-context"><code
0c60: 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61 73  ><nowiki>(canvas
0c70: 2d 63 6f 6e 74 65 78 74 20 5b 63 61 6e 76 61 73  -context [canvas
0c80: 20 63 61 6e 76 61 73 3f 5d 29 20 e2 86 92 20 63   canvas?]) → c
0c90: 6f 6e 74 65 78 74 3f 3c 2f 6e 6f 77 69 6b 69 3e  ontext?</nowiki>
0ca0: 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e  </code></a></h3>
0cb0: 0a 0a 52 65 74 72 69 65 76 65 73 20 74 68 65 20  ..Retrieves the 
0cc0: 63 6f 6e 74 65 78 74 20 66 72 6f 6d 20 61 20 67  context from a g
0cd0: 69 76 65 6e 20 63 61 6e 76 61 73 2e 0a 0a 3c 68  iven canvas...<h
0ce0: 33 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61 73 2d  3><a id="canvas-
0cf0: 73 69 6d 75 6c 61 74 65 5f 22 3e 3c 63 6f 64 65  simulate_"><code
0d00: 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61 73  ><nowiki>(canvas
0d10: 2d 73 69 6d 75 6c 61 74 65 21 20 5b 63 61 6e 76  -simulate! [canv
0d20: 61 73 20 63 61 6e 76 61 73 3f 5d 20 5b 66 6c 61  as canvas?] [fla
0d30: 67 73 20 28 6c 69 73 74 6f 66 20 73 79 6d 62 6f  gs (listof symbo
0d40: 6c 3f 29 5d 29 20 e2 86 92 20 28 6c 69 73 74 6f  l?)]) → (listo
0d50: 66 20 73 79 6d 62 6f 6c 3f 29 3c 2f 6e 6f 77 69  f symbol?)</nowi
0d60: 6b 69 3e 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f  ki></code></a></
0d70: 68 33 3e 0a 0a 53 65 74 73 20 66 6c 61 67 73 20  h3>..Sets flags 
0d80: 64 65 74 65 72 6d 69 6e 69 6e 67 20 77 68 69 63  determining whic
0d90: 68 20 6f 70 65 72 61 74 69 6f 6e 73 20 73 68 6f  h operations sho
0da0: 75 6c 64 20 62 65 20 73 69 6d 75 6c 61 74 65 64  uld be simulated
0db0: 20 62 79 20 74 68 65 20 67 69 76 65 6e 20 63 61   by the given ca
0dc0: 6e 76 61 73 2e 0a 52 65 74 75 72 6e 73 20 74 68  nvas..Returns th
0dd0: 65 20 70 72 65 76 69 6f 75 73 20 73 65 74 20 6f  e previous set o
0de0: 66 20 66 6c 61 67 73 2e 0a 0a 54 68 65 20 66 6f  f flags...The fo
0df0: 6c 6c 6f 77 69 6e 67 20 66 6c 61 67 73 20 6d 61  llowing flags ma
0e00: 79 20 73 68 6f 77 20 75 70 20 69 6e 20 74 68 65  y show up in the
0e10: 20 6c 69 73 74 3a 0a 20 20 2a 20 20 3c 63 6f 64   list:.  *  <cod
0e20: 65 3e 27 6c 69 6e 65 3c 2f 63 6f 64 65 3e 0a 20  e>'line</code>. 
0e30: 20 2a 20 20 3c 63 6f 64 65 3e 27 72 65 63 74 61   *  <code>'recta
0e40: 6e 67 6c 65 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20  ngle</code>.  * 
0e50: 20 3c 63 6f 64 65 3e 27 62 6f 78 3c 2f 63 6f 64   <code>'box</cod
0e60: 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e 27 61  e>.  *  <code>'a
0e70: 72 63 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c  rc</code>.  *  <
0e80: 63 6f 64 65 3e 27 73 65 63 74 6f 72 3c 2f 63 6f  code>'sector</co
0e90: 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e 27  de>.  *  <code>'
0ea0: 63 68 6f 72 64 3c 2f 63 6f 64 65 3e 0a 20 20 2a  chord</code>.  *
0eb0: 20 20 3c 63 6f 64 65 3e 27 70 6f 6c 79 6c 69 6e    <code>'polylin
0ec0: 65 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c 63  e</code>.  *  <c
0ed0: 6f 64 65 3e 27 70 6f 6c 79 67 6f 6e 3c 2f 63 6f  ode>'polygon</co
0ee0: 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e 27  de>.  *  <code>'
0ef0: 74 65 78 74 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20  text</code>.  * 
0f00: 20 3c 63 6f 64 65 3e 27 61 6c 6c 3c 2f 63 6f 64   <code>'all</cod
0f10: 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e 27 6c  e>.  *  <code>'l
0f20: 69 6e 65 73 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20  ines</code>.  * 
0f30: 20 3c 63 6f 64 65 3e 27 66 69 6c 6c 73 3c 2f 63   <code>'fills</c
0f40: 6f 64 65 3e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d  ode>..<h3><a id=
0f50: 22 63 61 6e 76 61 73 2d 61 74 74 72 69 62 75 74  "canvas-attribut
0f60: 65 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69  e"><code><nowiki
0f70: 3e 28 63 61 6e 76 61 73 2d 61 74 74 72 69 62 75  >(canvas-attribu
0f80: 74 65 20 5b 63 61 6e 76 61 73 20 63 61 6e 76 61  te [canvas canva
0f90: 73 3f 5d 20 5b 6e 61 6d 65 20 28 6f 72 2f 63 20  s?] [name (or/c 
0fa0: 73 79 6d 62 6f 6c 3f 20 73 74 72 69 6e 67 3f 29  symbol? string?)
0fb0: 5d 29 20 e2 86 92 20 28 6f 72 2f 63 20 73 74 72  ]) → (or/c str
0fc0: 69 6e 67 3f 20 23 66 29 3c 2f 6e 6f 77 69 6b 69  ing? #f)</nowiki
0fd0: 3e 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33  ></code></a></h3
0fe0: 3e 0a 0a 52 65 74 72 69 65 76 65 73 20 74 68 65  >..Retrieves the
0ff0: 20 76 61 6c 75 65 20 6f 66 20 61 20 63 6f 6e 74   value of a cont
1000: 65 78 74 20 73 70 65 63 69 66 69 63 20 63 61 6e  ext specific can
1010: 76 61 73 20 61 74 74 72 69 62 75 74 65 2e 0a 0a  vas attribute...
1020: 3c 68 33 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61  <h3><a id="canva
1030: 73 2d 61 74 74 72 69 62 75 74 65 2d 73 65 74 5f  s-attribute-set_
1040: 22 3e 3c 63 6f 64 65 3e 0a 09 3c 6e 6f 77 69 6b  "><code>..<nowik
1050: 69 3e 28 63 61 6e 76 61 73 2d 61 74 74 72 69 62  i>(canvas-attrib
1060: 75 74 65 2d 73 65 74 21 20 5b 63 61 6e 76 61 73  ute-set! [canvas
1070: 20 63 61 6e 76 61 73 3f 5d 20 5b 6e 61 6d 65 20   canvas?] [name 
1080: 28 6f 72 2f 63 20 73 79 6d 62 6f 6c 3f 20 73 74  (or/c symbol? st
1090: 72 69 6e 67 3f 29 5d 20 5b 76 61 6c 75 65 20 28  ring?)] [value (
10a0: 6f 72 2f 63 20 73 74 72 69 6e 67 3f 20 23 66 29  or/c string? #f)
10b0: 5d 29 20 e2 86 92 20 76 6f 69 64 3f 3c 2f 6e 6f  ]) → void?</no
10c0: 77 69 6b 69 3e 3c 62 72 3e 0a 09 3c 6e 6f 77 69  wiki><br>..<nowi
10d0: 6b 69 3e 28 73 65 74 21 20 28 63 61 6e 76 61 73  ki>(set! (canvas
10e0: 2d 61 74 74 72 69 62 75 74 65 20 5b 63 61 6e 76  -attribute [canv
10f0: 61 73 20 63 61 6e 76 61 73 3f 5d 20 5b 6e 61 6d  as canvas?] [nam
1100: 65 20 28 6f 72 2f 63 20 73 79 6d 62 6f 6c 3f 20  e (or/c symbol? 
1110: 73 74 72 69 6e 67 3f 29 5d 29 20 5b 76 61 6c 75  string?)]) [valu
1120: 65 20 28 6f 72 2f 63 20 73 74 72 69 6e 67 3f 20  e (or/c string? 
1130: 23 66 29 5d 29 20 e2 86 92 20 76 6f 69 64 3f 3c  #f)]) → void?<
1140: 2f 6e 6f 77 69 6b 69 3e 0a 3c 2f 63 6f 64 65 3e  /nowiki>.</code>
1150: 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 53 65 74 73 20  </a></h3>..Sets 
1160: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 61 20 63  the value of a c
1170: 6f 6e 74 65 78 74 20 73 70 65 63 69 66 69 63 20  ontext specific 
1180: 63 61 6e 76 61 73 20 61 74 74 72 69 62 75 74 65  canvas attribute
1190: 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63 61  ...<h3><a id="ca
11a0: 6e 76 61 73 2d 73 74 61 74 65 22 3e 3c 63 6f 64  nvas-state"><cod
11b0: 65 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61  e><nowiki>(canva
11c0: 73 2d 73 74 61 74 65 20 5b 63 61 6e 76 61 73 20  s-state [canvas 
11d0: 63 61 6e 76 61 73 3f 5d 29 20 e2 86 92 20 73 74  canvas?]) → st
11e0: 61 74 65 3f 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63  ate?</nowiki></c
11f0: 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 45  ode></a></h3>..E
1200: 78 74 72 61 63 74 73 20 61 20 72 65 70 72 65 73  xtracts a repres
1210: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
1220: 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 66 72  current state fr
1230: 6f 6d 20 61 20 63 61 6e 76 61 73 2e 0a 0a 3c 68  om a canvas...<h
1240: 33 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61 73 2d  3><a id="canvas-
1250: 73 74 61 74 65 2d 73 65 74 5f 22 3e 3c 63 6f 64  state-set_"><cod
1260: 65 3e 0a 09 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e  e>..<nowiki>(can
1270: 76 61 73 2d 73 74 61 74 65 2d 73 65 74 21 20 5b  vas-state-set! [
1280: 63 61 6e 76 61 73 20 63 61 6e 76 61 73 3f 5d 20  canvas canvas?] 
1290: 5b 73 74 61 74 65 20 73 74 61 74 65 3f 5d 29 20  [state state?]) 
12a0: e2 86 92 20 76 6f 69 64 3f 3c 2f 6e 6f 77 69 6b  → void?</nowik
12b0: 69 3e 3c 62 72 3e 0a 09 3c 6e 6f 77 69 6b 69 3e  i><br>..<nowiki>
12c0: 28 73 65 74 21 20 28 63 61 6e 76 61 73 2d 73 74  (set! (canvas-st
12d0: 61 74 65 20 5b 63 61 6e 76 61 73 20 63 61 6e 76  ate [canvas canv
12e0: 61 73 3f 5d 29 20 5b 73 74 61 74 65 20 73 74 61  as?]) [state sta
12f0: 74 65 3f 5d 29 20 e2 86 92 20 76 6f 69 64 3f 3c  te?]) → void?<
1300: 2f 6e 6f 77 69 6b 69 3e 0a 3c 2f 63 6f 64 65 3e  /nowiki>.</code>
1310: 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 52 65 73 74 6f  </a></h3>..Resto
1320: 72 65 73 20 74 68 65 20 67 69 76 65 6e 20 73 74  res the given st
1330: 61 74 65 20 6f 66 20 61 20 63 61 6e 76 61 73 2e  ate of a canvas.
1340: 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63 61 6e  ..<h3><a id="can
1350: 76 61 73 2d 63 6c 65 61 72 5f 22 3e 3c 63 6f 64  vas-clear_"><cod
1360: 65 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61  e><nowiki>(canva
1370: 73 2d 63 6c 65 61 72 21 20 5b 63 61 6e 76 61 73  s-clear! [canvas
1380: 20 63 61 6e 76 61 73 3f 5d 29 20 e2 86 92 20 76   canvas?]) → v
1390: 6f 69 64 3f 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63  oid?</nowiki></c
13a0: 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 43  ode></a></h3>..C
13b0: 6c 65 61 72 73 20 61 20 63 61 6e 76 61 73 20 74  lears a canvas t
13c0: 6f 20 74 68 65 20 62 61 63 6b 67 72 6f 75 6e 64  o the background
13d0: 20 63 6f 6c 6f 72 2e 0a 0a 3c 68 33 3e 3c 61 20   color...<h3><a 
13e0: 69 64 3d 22 63 61 6e 76 61 73 2d 66 6c 75 73 68  id="canvas-flush
13f0: 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69 3e  "><code><nowiki>
1400: 28 63 61 6e 76 61 73 2d 66 6c 75 73 68 20 5b 63  (canvas-flush [c
1410: 61 6e 76 61 73 20 63 61 6e 76 61 73 3f 5d 29 20  anvas canvas?]) 
1420: e2 86 92 20 76 6f 69 64 3f 3c 2f 6e 6f 77 69 6b  → void?</nowik
1430: 69 3e 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68  i></code></a></h
1440: 33 3e 0a 0a 46 6c 75 73 68 65 73 20 61 6c 6c 20  3>..Flushes all 
1450: 70 65 6e 64 69 6e 67 20 64 72 61 77 69 6e 67 20  pending drawing 
1460: 6f 70 65 72 61 74 69 6f 6e 73 20 69 6e 20 61 20  operations in a 
1470: 63 61 6e 76 61 73 20 74 6f 20 69 74 73 20 62 61  canvas to its ba
1480: 63 6b 65 6e 64 2e 0a 0a 3c 68 32 3e 43 6f 6f 72  ckend...<h2>Coor
1490: 64 69 6e 61 74 65 20 53 79 73 74 65 6d 3c 2f 68  dinate System</h
14a0: 32 3e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63  2>..<h3><a id="c
14b0: 61 6e 76 61 73 2d 73 69 7a 65 22 3e 3c 63 6f 64  anvas-size"><cod
14c0: 65 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61  e><nowiki>(canva
14d0: 73 2d 73 69 7a 65 20 5b 63 61 6e 76 61 73 20 63  s-size [canvas c
14e0: 61 6e 76 61 73 3f 5d 29 20 e2 86 92 20 28 76 61  anvas?]) → (va
14f0: 6c 75 65 73 20 69 6e 74 65 67 65 72 3f 20 69 6e  lues integer? in
1500: 74 65 67 65 72 3f 20 72 65 61 6c 3f 20 72 65 61  teger? real? rea
1510: 6c 3f 29 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f  l?)</nowiki></co
1520: 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 52 65  de></a></h3>..Re
1530: 74 72 69 65 76 65 73 20 74 68 65 20 77 69 64 74  trieves the widt
1540: 68 20 61 6e 64 20 68 65 69 67 68 74 20 6f 66 20  h and height of 
1550: 74 68 65 20 67 69 76 65 6e 20 63 61 6e 76 61 73  the given canvas
1560: 20 69 6e 20 70 69 78 65 6c 73 20 61 6e 64 20 6d   in pixels and m
1570: 69 6c 6c 69 6d 65 74 65 72 73 2e 0a 0a 3c 68 33  illimeters...<h3
1580: 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61 73 2d 6d  ><a id="canvas-m
1590: 6d 2d 3e 70 78 22 3e 3c 63 6f 64 65 3e 3c 6e 6f  m->px"><code><no
15a0: 77 69 6b 69 3e 28 63 61 6e 76 61 73 2d 6d 6d 2d  wiki>(canvas-mm-
15b0: 3e 70 78 20 5b 63 61 6e 76 61 73 20 63 61 6e 76  >px [canvas canv
15c0: 61 73 3f 5d 20 5b 78 2f 6d 6d 20 72 65 61 6c 3f  as?] [x/mm real?
15d0: 5d 20 5b 79 2f 6d 6d 20 72 65 61 6c 3f 5d 29 20  ] [y/mm real?]) 
15e0: e2 86 92 20 28 76 61 6c 75 65 73 20 69 6e 74 65  → (values inte
15f0: 67 65 72 3f 20 69 6e 74 65 67 65 72 3f 29 3c 2f  ger? integer?)</
1600: 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64 65 3e 3c 2f  nowiki></code></
1610: 61 3e 3c 2f 68 33 3e 0a 0a 43 6f 6e 76 65 72 74  a></h3>..Convert
1620: 73 20 61 20 70 6f 73 69 74 69 6f 6e 20 67 69 76  s a position giv
1630: 65 6e 20 69 6e 20 6d 69 6c 6c 69 6d 65 74 65 72  en in millimeter
1640: 73 20 69 6e 74 6f 20 61 20 70 69 78 65 6c 20 70  s into a pixel p
1650: 6f 73 69 74 69 6f 6e 20 69 6e 20 74 68 65 20 67  osition in the g
1660: 69 76 65 6e 0a 63 61 6e 76 61 73 2e 0a 0a 3c 68  iven.canvas...<h
1670: 33 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61 73 2d  3><a id="canvas-
1680: 70 78 2d 3e 6d 6d 22 3e 3c 63 6f 64 65 3e 3c 6e  px->mm"><code><n
1690: 6f 77 69 6b 69 3e 28 63 61 6e 76 61 73 2d 70 78  owiki>(canvas-px
16a0: 2d 3e 6d 6d 20 5b 63 61 6e 76 61 73 20 63 61 6e  ->mm [canvas can
16b0: 76 61 73 3f 5d 20 5b 78 2f 70 78 20 69 6e 74 65  vas?] [x/px inte
16c0: 67 65 72 3f 5d 20 5b 79 2f 70 78 20 69 6e 74 65  ger?] [y/px inte
16d0: 67 65 72 3f 5d 29 20 e2 86 92 20 28 76 61 6c 75  ger?]) → (valu
16e0: 65 73 20 72 65 61 6c 3f 20 72 65 61 6c 3f 29 3c  es real? real?)<
16f0: 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64 65 3e 3c  /nowiki></code><
1700: 2f 61 3e 3c 2f 68 33 3e 0a 0a 43 6f 6e 76 65 72  /a></h3>..Conver
1710: 74 73 20 61 20 70 6f 73 69 74 69 6f 6e 20 67 69  ts a position gi
1720: 76 65 6e 20 69 6e 20 70 69 78 65 6c 73 20 69 6e  ven in pixels in
1730: 74 6f 20 61 20 70 68 79 73 69 63 61 6c 20 70 6f  to a physical po
1740: 73 69 74 69 6f 6e 20 69 6e 20 74 68 65 20 67 69  sition in the gi
1750: 76 65 6e 0a 63 61 6e 76 61 73 2e 0a 0a 3c 68 33  ven.canvas...<h3
1760: 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61 73 2d 6f  ><a id="canvas-o
1770: 72 69 67 69 6e 22 3e 3c 63 6f 64 65 3e 3c 6e 6f  rigin"><code><no
1780: 77 69 6b 69 3e 28 63 61 6e 76 61 73 2d 6f 72 69  wiki>(canvas-ori
1790: 67 69 6e 20 5b 63 61 6e 76 61 73 20 63 61 6e 76  gin [canvas canv
17a0: 61 73 3f 5d 29 20 e2 86 92 20 28 76 61 6c 75 65  as?]) → (value
17b0: 73 20 69 6e 74 65 67 65 72 3f 20 69 6e 74 65 67  s integer? integ
17c0: 65 72 3f 29 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63  er?)</nowiki></c
17d0: 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 52  ode></a></h3>..R
17e0: 65 74 72 69 65 76 65 73 20 74 68 65 20 70 6f 73  etrieves the pos
17f0: 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6e  ition of the can
1800: 76 61 73 27 20 6f 72 69 67 69 6e 2e 0a 0a 3c 68  vas' origin...<h
1810: 33 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61 73 2d  3><a id="canvas-
1820: 6f 72 69 67 69 6e 2d 73 65 74 5f 22 3e 3c 63 6f  origin-set_"><co
1830: 64 65 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76  de><nowiki>(canv
1840: 61 73 2d 6f 72 69 67 69 6e 2d 73 65 74 21 20 5b  as-origin-set! [
1850: 63 61 6e 76 61 73 20 63 61 6e 76 61 73 3f 5d 20  canvas canvas?] 
1860: 5b 78 20 69 6e 74 65 67 65 72 3f 5d 20 5b 79 20  [x integer?] [y 
1870: 69 6e 74 65 67 65 72 3f 5d 29 20 e2 86 92 20 76  integer?]) → v
1880: 6f 69 64 3f 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63  oid?</nowiki></c
1890: 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 44  ode></a></h3>..D
18a0: 65 66 69 6e 65 73 20 74 68 65 20 70 6f 73 69 74  efines the posit
18b0: 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6e 76 61  ion of the canva
18c0: 73 27 20 6f 72 69 67 69 6e 2e 0a 0a 3c 68 33 3e  s' origin...<h3>
18d0: 3c 61 20 69 64 3d 22 63 61 6e 76 61 73 2d 74 72  <a id="canvas-tr
18e0: 61 6e 73 66 6f 72 6d 22 3e 3c 63 6f 64 65 3e 3c  ansform"><code><
18f0: 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61 73 2d 74  nowiki>(canvas-t
1900: 72 61 6e 73 66 6f 72 6d 20 5b 63 61 6e 76 61 73  ransform [canvas
1910: 20 63 61 6e 76 61 73 3f 5d 29 20 e2 86 92 20 28   canvas?]) → (
1920: 6f 72 2f 63 20 28 2d 3e 20 72 65 61 6c 3f 20 72  or/c (-> real? r
1930: 65 61 6c 3f 20 28 76 61 6c 75 65 73 20 69 6e 74  eal? (values int
1940: 65 67 65 72 3f 20 69 6e 74 65 67 65 72 3f 29 29  eger? integer?))
1950: 20 23 66 29 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63   #f)</nowiki></c
1960: 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 52  ode></a></h3>..R
1970: 65 74 72 69 65 76 65 73 20 74 68 65 20 61 63 74  etrieves the act
1980: 69 76 65 20 63 6f 6f 72 64 69 6e 61 74 65 20 74  ive coordinate t
1990: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6f 66  ransformation of
19a0: 20 74 68 65 20 67 69 76 65 6e 20 63 61 6e 76 61   the given canva
19b0: 73 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63  s...<h3><a id="c
19c0: 61 6e 76 61 73 2d 74 72 61 6e 73 66 6f 72 6d 2d  anvas-transform-
19d0: 73 65 74 5f 22 3e 3c 63 6f 64 65 3e 0a 09 3c 6e  set_"><code>..<n
19e0: 6f 77 69 6b 69 3e 28 63 61 6e 76 61 73 2d 74 72  owiki>(canvas-tr
19f0: 61 6e 73 66 6f 72 6d 2d 73 65 74 21 20 5b 63 61  ansform-set! [ca
1a00: 6e 76 61 73 20 63 61 6e 76 61 73 3f 5d 20 5b 70  nvas canvas?] [p
1a10: 72 6f 63 20 28 6f 72 2f 63 20 28 2d 3e 20 72 65  roc (or/c (-> re
1a20: 61 6c 3f 20 72 65 61 6c 3f 20 28 76 61 6c 75 65  al? real? (value
1a30: 73 20 69 6e 74 65 67 65 72 3f 20 69 6e 74 65 67  s integer? integ
1a40: 65 72 3f 29 29 20 23 66 29 5d 29 20 e2 86 92 20  er?)) #f)]) → 
1a50: 76 6f 69 64 3f 3c 2f 6e 6f 77 69 6b 69 3e 3c 62  void?</nowiki><b
1a60: 72 3e 0a 09 3c 6e 6f 77 69 6b 69 3e 28 73 65 74  r>..<nowiki>(set
1a70: 21 20 28 63 61 6e 76 61 73 2d 74 72 61 6e 73 66  ! (canvas-transf
1a80: 6f 72 6d 20 5b 63 61 6e 76 61 73 20 63 61 6e 76  orm [canvas canv
1a90: 61 73 3f 5d 29 20 5b 70 72 6f 63 20 28 6f 72 2f  as?]) [proc (or/
1aa0: 63 20 28 2d 3e 20 72 65 61 6c 3f 20 72 65 61 6c  c (-> real? real
1ab0: 3f 20 28 76 61 6c 75 65 73 20 69 6e 74 65 67 65  ? (values intege
1ac0: 72 3f 20 69 6e 74 65 67 65 72 3f 29 29 20 23 66  r? integer?)) #f
1ad0: 29 5d 29 20 e2 86 92 20 76 6f 69 64 3f 3c 2f 6e  )]) → void?</n
1ae0: 6f 77 69 6b 69 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f  owiki>.</code></
1af0: 61 3e 3c 2f 68 33 3e 0a 0a 44 65 66 69 6e 65 73  a></h3>..Defines
1b00: 20 74 68 65 20 61 63 74 69 76 65 20 63 6f 6f 72   the active coor
1b10: 64 69 6e 61 74 65 20 74 72 61 6e 73 66 6f 72 6d  dinate transform
1b20: 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 67 69  ation for the gi
1b30: 76 65 6e 20 63 61 6e 76 61 73 2e 20 54 68 65 20  ven canvas. The 
1b40: 67 69 76 65 6e 0a 70 72 6f 63 65 64 75 72 65 20  given.procedure 
1b50: 6d 75 73 74 20 72 65 70 72 65 73 65 6e 74 20 61  must represent a
1b60: 20 6c 69 6e 65 61 72 20 74 72 61 6e 73 66 6f 72   linear transfor
1b70: 6d 61 74 69 6f 6e 2e 0a 0a 3c 68 33 3e 3c 61 20  mation...<h3><a 
1b80: 69 64 3d 22 63 61 6e 76 61 73 2d 74 72 61 6e 73  id="canvas-trans
1b90: 66 6f 72 6d 2d 63 6f 6d 70 6f 73 65 5f 22 3e 3c  form-compose_"><
1ba0: 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61  code><nowiki>(ca
1bb0: 6e 76 61 73 2d 74 72 61 6e 73 66 6f 72 6d 2d 63  nvas-transform-c
1bc0: 6f 6d 70 6f 73 65 21 20 5b 63 61 6e 76 61 73 20  ompose! [canvas 
1bd0: 63 61 6e 76 61 73 3f 5d 20 5b 70 72 6f 63 20 28  canvas?] [proc (
1be0: 2d 3e 20 72 65 61 6c 3f 20 72 65 61 6c 3f 20 28  -> real? real? (
1bf0: 76 61 6c 75 65 73 20 69 6e 74 65 67 65 72 3f 20  values integer? 
1c00: 69 6e 74 65 67 65 72 3f 29 29 5d 29 20 e2 86 92  integer?))]) →
1c10: 20 76 6f 69 64 3f 3c 2f 6e 6f 77 69 6b 69 3e 3c   void?</nowiki><
1c20: 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a  /code></a></h3>.
1c30: 0a 4d 6f 64 69 66 69 65 73 20 74 68 65 20 61 63  .Modifies the ac
1c40: 74 69 76 65 20 63 6f 6f 72 64 69 6e 61 74 65 20  tive coordinate 
1c50: 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 66  transformation f
1c60: 6f 72 20 74 68 65 20 67 69 76 65 6e 20 63 61 6e  or the given can
1c70: 76 61 73 20 62 79 0a 6c 65 66 74 2d 6d 75 6c 74  vas by.left-mult
1c80: 69 70 6c 69 63 61 74 69 6f 6e 20 77 69 74 68 20  iplication with 
1c90: 74 68 65 20 67 69 76 65 6e 20 74 72 61 6e 73 66  the given transf
1ca0: 6f 72 6d 61 74 69 6f 6e 2e 20 54 68 65 20 67 69  ormation. The gi
1cb0: 76 65 6e 20 70 72 6f 63 65 64 75 72 65 20 6d 75  ven procedure mu
1cc0: 73 74 0a 72 65 70 72 65 73 65 6e 74 20 61 20 6c  st.represent a l
1cd0: 69 6e 65 61 72 20 74 72 61 6e 73 66 6f 72 6d 61  inear transforma
1ce0: 74 69 6f 6e 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64  tion...<h3><a id
1cf0: 3d 22 63 61 6e 76 61 73 2d 74 72 61 6e 73 66 6f  ="canvas-transfo
1d00: 72 6d 2d 74 72 61 6e 73 6c 61 74 65 5f 22 3e 3c  rm-translate_"><
1d10: 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61  code><nowiki>(ca
1d20: 6e 76 61 73 2d 74 72 61 6e 73 66 6f 72 6d 2d 74  nvas-transform-t
1d30: 72 61 6e 73 6c 61 74 65 21 20 5b 63 61 6e 76 61  ranslate! [canva
1d40: 73 20 63 61 6e 76 61 73 3f 5d 20 5b 64 78 20 72  s canvas?] [dx r
1d50: 65 61 6c 3f 5d 20 5b 64 79 20 72 65 61 6c 3f 5d  eal?] [dy real?]
1d60: 29 20 e2 86 92 20 76 6f 69 64 3f 3c 2f 6e 6f 77  ) → void?</now
1d70: 69 6b 69 3e 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c  iki></code></a><
1d80: 2f 68 33 3e 0a 0a 4d 6f 64 69 66 69 65 73 20 74  /h3>..Modifies t
1d90: 68 65 20 61 63 74 69 76 65 20 63 6f 6f 72 64 69  he active coordi
1da0: 6e 61 74 65 20 74 72 61 6e 73 66 6f 72 6d 61 74  nate transformat
1db0: 69 6f 6e 20 66 6f 72 20 74 68 65 20 67 69 76 65  ion for the give
1dc0: 6e 20 63 61 6e 76 61 73 20 61 70 70 6c 79 69 6e  n canvas applyin
1dd0: 67 0a 61 20 74 72 61 6e 73 6c 61 74 69 6f 6e 2e  g.a translation.
1de0: 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63 61 6e  ..<h3><a id="can
1df0: 76 61 73 2d 74 72 61 6e 73 66 6f 72 6d 2d 73 63  vas-transform-sc
1e00: 61 6c 65 21 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77  ale!"><code><now
1e10: 69 6b 69 3e 28 63 61 6e 76 61 73 2d 74 72 61 6e  iki>(canvas-tran
1e20: 73 66 6f 72 6d 2d 73 63 61 6c 65 21 20 5b 63 61  sform-scale! [ca
1e30: 6e 76 61 73 20 63 61 6e 76 61 73 3f 5d 20 5b 73  nvas canvas?] [s
1e40: 78 20 72 65 61 6c 3f 5d 20 5b 73 79 20 72 65 61  x real?] [sy rea
1e50: 6c 3f 5d 29 20 e2 86 92 20 76 6f 69 64 3f 3c 2f  l?]) → void?</
1e60: 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64 65 3e 3c 2f  nowiki></code></
1e70: 61 3e 3c 2f 68 33 3e 0a 0a 4d 6f 64 69 66 69 65  a></h3>..Modifie
1e80: 73 20 74 68 65 20 61 63 74 69 76 65 20 63 6f 6f  s the active coo
1e90: 72 64 69 6e 61 74 65 20 74 72 61 6e 73 66 6f 72  rdinate transfor
1ea0: 6d 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 67  mation for the g
1eb0: 69 76 65 6e 20 63 61 6e 76 61 73 20 61 70 70 6c  iven canvas appl
1ec0: 79 69 6e 67 0a 61 20 73 63 61 6c 69 6e 67 2e 0a  ying.a scaling..
1ed0: 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63 61 6e 76  .<h3><a id="canv
1ee0: 61 73 2d 74 72 61 6e 73 66 6f 72 6d 2d 72 6f 74  as-transform-rot
1ef0: 61 74 65 21 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77  ate!"><code><now
1f00: 69 6b 69 3e 28 63 61 6e 76 61 73 2d 74 72 61 6e  iki>(canvas-tran
1f10: 73 66 6f 72 6d 2d 72 6f 74 61 74 65 21 20 5b 63  sform-rotate! [c
1f20: 61 6e 76 61 73 20 63 61 6e 76 61 73 3f 5d 20 5b  anvas canvas?] [
1f30: 61 6c 70 68 61 20 72 65 61 6c 3f 5d 29 20 e2 86  alpha real?]) â†
1f40: 92 20 76 6f 69 64 3f 3c 2f 6e 6f 77 69 6b 69 3e  ’ void?</nowiki>
1f50: 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e  </code></a></h3>
1f60: 0a 0a 4d 6f 64 69 66 69 65 73 20 74 68 65 20 61  ..Modifies the a
1f70: 63 74 69 76 65 20 63 6f 6f 72 64 69 6e 61 74 65  ctive coordinate
1f80: 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20   transformation 
1f90: 66 6f 72 20 74 68 65 20 67 69 76 65 6e 20 63 61  for the given ca
1fa0: 6e 76 61 73 20 61 70 70 6c 79 69 6e 67 0a 61 20  nvas applying.a 
1fb0: 72 6f 74 61 74 69 6f 6e 20 61 72 6f 75 6e 64 20  rotation around 
1fc0: 74 68 65 20 6f 72 69 67 69 6e 2e 0a 0a 3c 68 32  the origin...<h2
1fd0: 3e 47 65 6e 65 72 61 6c 20 41 74 74 72 69 62 75  >General Attribu
1fe0: 74 65 73 3c 2f 68 32 3e 0a 0a 3c 68 33 3e 3c 61  tes</h2>..<h3><a
1ff0: 20 69 64 3d 22 63 61 6e 76 61 73 2d 66 6f 72 65   id="canvas-fore
2000: 67 72 6f 75 6e 64 22 3e 3c 63 6f 64 65 3e 3c 6e  ground"><code><n
2010: 6f 77 69 6b 69 3e 28 63 61 6e 76 61 73 2d 66 6f  owiki>(canvas-fo
2020: 72 65 67 72 6f 75 6e 64 20 5b 63 61 6e 76 61 73  reground [canvas
2030: 20 63 61 6e 76 61 73 3f 5d 29 20 e2 86 92 20 69   canvas?]) → i
2040: 6e 74 65 67 65 72 3f 3c 2f 6e 6f 77 69 6b 69 3e  nteger?</nowiki>
2050: 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e  </code></a></h3>
2060: 0a 0a 52 65 74 72 69 65 76 65 73 20 74 68 65 20  ..Retrieves the 
2070: 66 6f 72 65 67 72 6f 75 6e 64 20 63 6f 6c 6f 72  foreground color
2080: 20 6f 66 20 74 68 65 20 67 69 76 65 6e 20 63 61   of the given ca
2090: 6e 76 61 73 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64  nvas...<h3><a id
20a0: 3d 22 63 61 6e 76 61 73 2d 66 6f 72 65 67 72 6f  ="canvas-foregro
20b0: 75 6e 64 2d 73 65 74 5f 22 3e 3c 63 6f 64 65 3e  und-set_"><code>
20c0: 0a 09 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61  ..<nowiki>(canva
20d0: 73 2d 66 6f 72 65 67 72 6f 75 6e 64 2d 73 65 74  s-foreground-set
20e0: 21 20 5b 63 61 6e 76 61 73 20 63 61 6e 76 61 73  ! [canvas canvas
20f0: 3f 5d 20 5b 63 6f 6c 6f 72 20 69 6e 74 65 67 65  ?] [color intege
2100: 72 3f 5d 29 20 e2 86 92 20 76 6f 69 64 3f 3c 2f  r?]) → void?</
2110: 6e 6f 77 69 6b 69 3e 3c 62 72 3e 0a 09 3c 6e 6f  nowiki><br>..<no
2120: 77 69 6b 69 3e 28 73 65 74 21 20 28 63 61 6e 76  wiki>(set! (canv
2130: 61 73 2d 66 6f 72 65 67 72 6f 75 6e 64 20 5b 63  as-foreground [c
2140: 61 6e 76 61 73 20 63 61 6e 76 61 73 3f 5d 29 20  anvas canvas?]) 
2150: 5b 63 6f 6c 6f 72 20 69 6e 74 65 67 65 72 3f 5d  [color integer?]
2160: 29 20 e2 86 92 20 76 6f 69 64 3f 3c 2f 6e 6f 77  ) → void?</now
2170: 69 6b 69 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 61 3e  iki>.</code></a>
2180: 3c 2f 68 33 3e 0a 0a 53 65 74 73 20 74 68 65 20  </h3>..Sets the 
2190: 66 6f 72 65 67 72 6f 75 6e 64 20 63 6f 6c 6f 72  foreground color
21a0: 20 6f 66 20 74 68 65 20 67 69 76 65 6e 20 63 61   of the given ca
21b0: 6e 76 61 73 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64  nvas...<h3><a id
21c0: 3d 22 63 61 6e 76 61 73 2d 62 61 63 6b 67 72 6f  ="canvas-backgro
21d0: 75 6e 64 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77 69  und"><code><nowi
21e0: 6b 69 3e 28 63 61 6e 76 61 73 2d 62 61 63 6b 67  ki>(canvas-backg
21f0: 72 6f 75 6e 64 20 5b 63 61 6e 76 61 73 20 63 61  round [canvas ca
2200: 6e 76 61 73 3f 5d 29 20 e2 86 92 20 69 6e 74 65  nvas?]) → inte
2210: 67 65 72 3f 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63  ger?</nowiki></c
2220: 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 52  ode></a></h3>..R
2230: 65 74 72 69 65 76 65 73 20 74 68 65 20 62 61 63  etrieves the bac
2240: 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 6f 66  kground color of
2250: 20 74 68 65 20 67 69 76 65 6e 20 63 61 6e 76 61   the given canva
2260: 73 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63  s...<h3><a id="c
2270: 61 6e 76 61 73 2d 62 61 63 6b 67 72 6f 75 6e 64  anvas-background
2280: 2d 73 65 74 5f 22 3e 3c 63 6f 64 65 3e 0a 09 3c  -set_"><code>..<
2290: 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61 73 2d 62  nowiki>(canvas-b
22a0: 61 63 6b 67 72 6f 75 6e 64 2d 73 65 74 21 20 5b  ackground-set! [
22b0: 63 61 6e 76 61 73 20 63 61 6e 76 61 73 3f 5d 20  canvas canvas?] 
22c0: 5b 63 6f 6c 6f 72 20 69 6e 74 65 67 65 72 3f 5d  [color integer?]
22d0: 29 20 e2 86 92 20 76 6f 69 64 3f 3c 2f 6e 6f 77  ) → void?</now
22e0: 69 6b 69 3e 3c 62 72 3e 0a 09 3c 6e 6f 77 69 6b  iki><br>..<nowik
22f0: 69 3e 28 73 65 74 21 20 28 63 61 6e 76 61 73 2d  i>(set! (canvas-
2300: 62 61 63 6b 67 72 6f 75 6e 64 20 5b 63 61 6e 76  background [canv
2310: 61 73 20 63 61 6e 76 61 73 3f 5d 29 20 5b 63 6f  as canvas?]) [co
2320: 6c 6f 72 20 69 6e 74 65 67 65 72 3f 5d 29 20 e2  lor integer?]) â
2330: 86 92 20 76 6f 69 64 3f 3c 2f 6e 6f 77 69 6b 69  †’ void?</nowiki
2340: 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68  >.</code></a></h
2350: 33 3e 0a 0a 53 65 74 73 20 74 68 65 20 62 61 63  3>..Sets the bac
2360: 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 6f 66  kground color of
2370: 20 74 68 65 20 67 69 76 65 6e 20 63 61 6e 76 61   the given canva
2380: 73 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63  s...<h3><a id="c
2390: 61 6e 76 61 73 2d 77 72 69 74 65 2d 6d 6f 64 65  anvas-write-mode
23a0: 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69 3e  "><code><nowiki>
23b0: 28 63 61 6e 76 61 73 2d 77 72 69 74 65 2d 6d 6f  (canvas-write-mo
23c0: 64 65 20 5b 63 61 6e 76 61 73 20 63 61 6e 76 61  de [canvas canva
23d0: 73 3f 5d 29 20 e2 86 92 20 73 79 6d 62 6f 6c 3f  s?]) → symbol?
23e0: 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64 65 3e  </nowiki></code>
23f0: 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 52 65 74 72 69  </a></h3>..Retri
2400: 65 76 65 73 20 74 68 65 20 77 72 69 74 65 20 6d  eves the write m
2410: 6f 64 65 20 6f 66 20 74 68 65 20 67 69 76 65 6e  ode of the given
2420: 20 63 61 6e 76 61 73 2e 0a 0a 54 68 65 20 6d 6f   canvas...The mo
2430: 64 65 20 6d 61 79 20 62 65 20 6f 6e 65 20 6f 66  de may be one of
2440: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
2450: 79 6d 62 6f 6c 73 3a 0a 20 20 2a 20 20 3c 63 6f  ymbols:.  *  <co
2460: 64 65 3e 27 72 65 70 6c 61 63 65 3c 2f 63 6f 64  de>'replace</cod
2470: 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e 27 78  e>.  *  <code>'x
2480: 6f 72 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c  or</code>.  *  <
2490: 63 6f 64 65 3e 27 6e 6f 74 2d 78 6f 72 3c 2f 63  code>'not-xor</c
24a0: 6f 64 65 3e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d  ode>..<h3><a id=
24b0: 22 63 61 6e 76 61 73 2d 77 72 69 74 65 2d 6d 6f  "canvas-write-mo
24c0: 64 65 2d 73 65 74 5f 22 3e 3c 63 6f 64 65 3e 0a  de-set_"><code>.
24d0: 09 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61 73  .<nowiki>(canvas
24e0: 2d 77 72 69 74 65 2d 6d 6f 64 65 2d 73 65 74 21  -write-mode-set!
24f0: 20 5b 63 61 6e 76 61 73 20 63 61 6e 76 61 73 3f   [canvas canvas?
2500: 5d 20 5b 6d 6f 64 65 20 73 79 6d 62 6f 6c 3f 5d  ] [mode symbol?]
2510: 29 20 e2 86 92 20 76 6f 69 64 3f 3c 2f 6e 6f 77  ) → void?</now
2520: 69 6b 69 3e 3c 62 72 3e 0a 09 3c 6e 6f 77 69 6b  iki><br>..<nowik
2530: 69 3e 28 73 65 74 21 20 28 63 61 6e 76 61 73 2d  i>(set! (canvas-
2540: 77 72 69 74 65 2d 6d 6f 64 65 20 5b 63 61 6e 76  write-mode [canv
2550: 61 73 20 63 61 6e 76 61 73 3f 5d 29 20 5b 6d 6f  as canvas?]) [mo
2560: 64 65 20 73 79 6d 62 6f 6c 3f 5d 29 20 e2 86 92  de symbol?]) →
2570: 20 76 6f 69 64 3f 3c 2f 6e 6f 77 69 6b 69 3e 0a   void?</nowiki>.
2580: 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e  </code></a></h3>
2590: 0a 0a 53 65 74 73 20 74 68 65 20 77 72 69 74 65  ..Sets the write
25a0: 20 6d 6f 64 65 20 6f 66 20 74 68 65 20 67 69 76   mode of the giv
25b0: 65 6e 20 63 61 6e 76 61 73 2e 0a 0a 3c 68 32 3e  en canvas...<h2>
25c0: 43 6c 69 70 70 69 6e 67 3c 2f 68 32 3e 0a 0a 3c  Clipping</h2>..<
25d0: 68 33 3e 3c 61 20 69 64 3d 22 63 61 6e 76 61 73  h3><a id="canvas
25e0: 2d 63 6c 69 70 2d 6d 6f 64 65 22 3e 3c 63 6f 64  -clip-mode"><cod
25f0: 65 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61  e><nowiki>(canva
2600: 73 2d 63 6c 69 70 2d 6d 6f 64 65 20 5b 63 61 6e  s-clip-mode [can
2610: 76 61 73 20 63 61 6e 76 61 73 3f 5d 29 20 e2 86  vas canvas?]) â†
2620: 92 20 28 6f 72 2f 63 20 73 79 6d 62 6f 6c 3f 20  ’ (or/c symbol? 
2630: 23 66 29 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f  #f)</nowiki></co
2640: 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 52 65  de></a></h3>..Re
2650: 74 72 69 65 76 65 73 20 74 68 65 20 63 6c 69 70  trieves the clip
2660: 70 69 6e 67 20 6d 6f 64 65 20 6f 66 20 74 68 65  ping mode of the
2670: 20 67 69 76 65 6e 20 63 61 6e 76 61 73 2e 0a 0a   given canvas...
2680: 54 68 65 20 6d 6f 64 65 20 6d 61 79 20 62 65 20  The mode may be 
2690: 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f  one of the follo
26a0: 77 69 6e 67 20 76 61 6c 75 65 73 3a 0a 20 20 2a  wing values:.  *
26b0: 20 20 3c 63 6f 64 65 3e 27 61 72 65 61 3c 2f 63    <code>'area</c
26c0: 6f 64 65 3e 0a 20 20 2a 20 20 3c 63 6f 64 65 3e  ode>.  *  <code>
26d0: 27 70 6f 6c 79 67 6f 6e 3c 2f 63 6f 64 65 3e 0a  'polygon</code>.
26e0: 20 20 2a 20 20 3c 63 6f 64 65 3e 27 72 65 67 69    *  <code>'regi
26f0: 6f 6e 3c 2f 63 6f 64 65 3e 0a 20 20 2a 20 20 3c  on</code>.  *  <
2700: 63 6f 64 65 3e 23 66 3c 2f 63 6f 64 65 3e 0a 0a  code>#f</code>..
2710: 49 6e 20 66 61 63 74 2c 20 3c 63 6f 64 65 3e 23  In fact, <code>#
2720: 74 3c 2f 63 6f 64 65 3e 20 69 73 20 6e 65 76 65  t</code> is neve
2730: 72 20 72 65 74 75 72 6e 65 64 20 62 75 74 20 6d  r returned but m
2740: 61 79 20 62 65 20 75 73 65 64 20 77 68 65 6e 20  ay be used when 
2750: 73 65 74 74 69 6e 67 20 74 68 65 0a 63 6c 69 70  setting the.clip
2760: 70 69 6e 67 20 6d 6f 64 65 2e 0a 0a 3c 68 33 3e  ping mode...<h3>
2770: 3c 61 20 69 64 3d 22 63 61 6e 76 61 73 2d 63 6c  <a id="canvas-cl
2780: 69 70 2d 6d 6f 64 65 2d 73 65 74 5f 22 3e 3c 63  ip-mode-set_"><c
2790: 6f 64 65 3e 0a 09 3c 6e 6f 77 69 6b 69 3e 28 63  ode>..<nowiki>(c
27a0: 61 6e 76 61 73 2d 63 6c 69 70 2d 6d 6f 64 65 2d  anvas-clip-mode-
27b0: 73 65 74 21 20 5b 63 61 6e 76 61 73 20 63 61 6e  set! [canvas can
27c0: 76 61 73 3f 5d 20 5b 6d 6f 64 65 20 28 6f 72 2f  vas?] [mode (or/
27d0: 63 20 73 79 6d 62 6f 6c 3f 20 23 66 29 5d 29 20  c symbol? #f)]) 
27e0: e2 86 92 20 76 6f 69 64 3f 3c 2f 6e 6f 77 69 6b  → void?</nowik
27f0: 69 3e 3c 62 72 3e 0a 09 3c 6e 6f 77 69 6b 69 3e  i><br>..<nowiki>
2800: 28 73 65 74 21 20 28 63 61 6e 76 61 73 2d 63 6c  (set! (canvas-cl
2810: 69 70 2d 6d 6f 64 65 20 5b 63 61 6e 76 61 73 20  ip-mode [canvas 
2820: 63 61 6e 76 61 73 3f 5d 29 20 5b 6d 6f 64 65 20  canvas?]) [mode 
2830: 28 6f 72 2f 63 20 73 79 6d 62 6f 6c 3f 20 23 66  (or/c symbol? #f
2840: 29 5d 29 20 e2 86 92 20 76 6f 69 64 3f 3c 2f 6e  )]) → void?</n
2850: 6f 77 69 6b 69 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f  owiki>.</code></
2860: 61 3e 3c 2f 68 33 3e 0a 0a 53 65 74 73 20 74 68  a></h3>..Sets th
2870: 65 20 63 6c 69 70 70 69 6e 67 20 6d 6f 64 65 20  e clipping mode 
2880: 6f 66 20 74 68 65 20 67 69 76 65 6e 20 63 61 6e  of the given can
2890: 76 61 73 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d  vas...<h3><a id=
28a0: 22 63 61 6e 76 61 73 2d 63 6c 69 70 2d 61 72 65  "canvas-clip-are
28b0: 61 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69  a"><code><nowiki
28c0: 3e 28 63 61 6e 76 61 73 2d 63 6c 69 70 2d 61 72  >(canvas-clip-ar
28d0: 65 61 20 5b 63 61 6e 76 61 73 20 63 61 6e 76 61  ea [canvas canva
28e0: 73 3f 5d 29 20 e2 86 92 20 28 76 61 6c 75 65 73  s?]) → (values
28f0: 20 72 65 61 6c 3f 20 72 65 61 6c 3f 20 72 65 61   real? real? rea
2900: 6c 3f 20 72 65 61 6c 3f 29 3c 2f 6e 6f 77 69 6b  l? real?)</nowik
2910: 69 3e 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68  i></code></a></h
2920: 33 3e 0a 0a 52 65 74 72 69 65 76 65 73 20 74 68  3>..Retrieves th
2930: 65 20 63 75 72 72 65 6e 74 20 72 65 63 74 61 6e  e current rectan
2940: 67 75 6c 61 72 20 63 6c 69 70 70 69 6e 67 20 61  gular clipping a
2950: 72 65 61 20 6f 66 20 74 68 65 20 67 69 76 65 6e  rea of the given
2960: 20 63 61 6e 76 61 73 2e 0a 0a 3c 68 33 3e 3c 61   canvas...<h3><a
2970: 20 69 64 3d 22 63 61 6e 76 61 73 2d 63 6c 69 70   id="canvas-clip
2980: 2d 61 72 65 61 2d 73 65 74 5f 22 3e 3c 63 6f 64  -area-set_"><cod
2990: 65 3e 3c 6e 6f 77 69 6b 69 3e 28 63 61 6e 76 61  e><nowiki>(canva
29a0: 73 2d 63 6c 69 70 2d 61 72 65 61 2d 73 65 74 21  s-clip-area-set!
29b0: 20 5b 63 61 6e 76 61 73 20 63 61 6e 76 61 73 3f   [canvas canvas?
29c0: 5d 20 5b 78 30 20 64 6f 75 62 6c 65 3f 5d 20 5b  ] [x0 double?] [
29d0: 78 31 20 64 6f 75 62 6c 65 3f 5d 20 5b 79 30 20  x1 double?] [y0 
29e0: 64 6f 75 62 6c 65 3f 5d 20 5b 79 31 20 64 6f 75  double?] [y1 dou
29f0: 62 6c 65 3f 5d 29 20 e2 86 92 20 76 6f 69 64 3f  ble?]) → void?
2a00: 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64 65 3e  </nowiki></code>
2a10: 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 53 65 74 73 20  </a></h3>..Sets 
2a20: 74 68 65 20 63 75 72 72 65 6e 74 20 72 65 63 74  the current rect
2a30: 61 6e 67 75 6c 61 72 20 63 6c 69 70 70 69 6e 67  angular clipping
2a40: 20 61 72 65 61 20 6f 66 20 74 68 65 20 67 69 76   area of the giv
2a50: 65 6e 20 63 61 6e 76 61 73 2e 0a 0a 3c 68 32 3e  en canvas...<h2>
2a60: 52 61 63 6b 65 74 20 53 70 65 63 69 66 69 63 73  Racket Specifics
2a70: 3c 2f 68 32 3e 0a 0a 3c 68 33 3e 3c 61 20 69 64  </h2>..<h3><a id
2a80: 3d 22 5f 63 61 6e 76 61 73 22 3e 3c 63 6f 64 65  ="_canvas"><code
2a90: 3e 0a 09 3c 6e 6f 77 69 6b 69 3e 5b 5f 63 61 6e  >..<nowiki>[_can
2aa0: 76 61 73 20 63 74 79 70 65 3f 5d 3c 2f 6e 6f 77  vas ctype?]</now
2ab0: 69 6b 69 3e 3c 62 72 3e 0a 09 3c 6e 6f 77 69 6b  iki><br>..<nowik
2ac0: 69 3e 5b 5f 63 61 6e 76 61 73 2f 6e 75 6c 6c 20  i>[_canvas/null 
2ad0: 63 74 79 70 65 3f 5d 3c 2f 6e 6f 77 69 6b 69 3e  ctype?]</nowiki>
2ae0: 3c 62 72 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 61 3e  <br>.</code></a>
2af0: 3c 2f 68 33 3e 0a 0a 46 6f 72 65 69 67 6e 20 74  </h3>..Foreign t
2b00: 79 70 65 20 6f 66 20 43 44 20 63 61 6e 76 61 73  ype of CD canvas
2b10: 73 65 73 2c 20 77 68 69 63 68 20 6d 61 79 20 6f  ses, which may o
2b20: 70 74 69 6f 6e 61 6c 6c 79 20 62 65 20 3c 63 6f  ptionally be <co
2b30: 64 65 3e 4e 55 4c 4c 3c 2f 63 6f 64 65 3e 2e 0a  de>NULL</code>..
2b40: 0a 4e 6f 74 20 72 65 2d 65 78 70 6f 72 74 65 64  .Not re-exported
2b50: 20 66 72 6f 6d 20 74 68 65 20 3c 74 74 3e 5b 2e   from the <tt>[.
2b60: 2f 6d 61 69 6e 2e 77 69 6b 69 7c 6d 61 69 6e 5d  /main.wiki|main]
2b70: 3c 2f 74 74 3e 20 6d 6f 64 75 6c 65 2e 0a 0a 3c  </tt> module...<
2b80: 68 33 3e 3c 61 20 69 64 3d 22 5f 63 6f 6e 74 65  h3><a id="_conte
2b90: 78 74 22 3e 3c 63 6f 64 65 3e 0a 09 3c 6e 6f 77  xt"><code>..<now
2ba0: 69 6b 69 3e 5b 5f 63 6f 6e 74 65 78 74 20 63 74  iki>[_context ct
2bb0: 79 70 65 3f 5d 3c 2f 6e 6f 77 69 6b 69 3e 3c 62  ype?]</nowiki><b
2bc0: 72 3e 0a 09 3c 6e 6f 77 69 6b 69 3e 5b 5f 63 6f  r>..<nowiki>[_co
2bd0: 6e 74 65 78 74 2f 6e 75 6c 6c 20 63 74 79 70 65  ntext/null ctype
2be0: 3f 5d 3c 2f 6e 6f 77 69 6b 69 3e 3c 62 72 3e 0a  ?]</nowiki><br>.
2bf0: 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e  </code></a></h3>
2c00: 0a 0a 46 6f 72 65 69 67 6e 20 74 79 70 65 20 6f  ..Foreign type o
2c10: 66 20 43 44 20 63 6f 6e 74 65 78 74 73 2c 20 77  f CD contexts, w
2c20: 68 69 63 68 20 6d 61 79 20 6f 70 74 69 6f 6e 61  hich may optiona
2c30: 6c 6c 79 20 62 65 20 3c 63 6f 64 65 3e 4e 55 4c  lly be <code>NUL
2c40: 4c 3c 2f 63 6f 64 65 3e 2e 0a 0a 4e 6f 74 20 72  L</code>...Not r
2c50: 65 2d 65 78 70 6f 72 74 65 64 20 66 72 6f 6d 20  e-exported from 
2c60: 74 68 65 20 3c 74 74 3e 5b 2e 2f 6d 61 69 6e 2e  the <tt>[./main.
2c70: 77 69 6b 69 7c 6d 61 69 6e 5d 3c 2f 74 74 3e 20  wiki|main]</tt> 
2c80: 6d 6f 64 75 6c 65 2e 0a 0a 3c 68 33 3e 3c 61 20  module...<h3><a 
2c90: 69 64 3d 22 5f 73 74 61 74 65 22 3e 3c 63 6f 64  id="_state"><cod
2ca0: 65 3e 0a 09 3c 6e 6f 77 69 6b 69 3e 5b 5f 73 74  e>..<nowiki>[_st
2cb0: 61 74 65 20 63 74 79 70 65 3f 5d 3c 2f 6e 6f 77  ate ctype?]</now
2cc0: 69 6b 69 3e 3c 62 72 3e 0a 09 3c 6e 6f 77 69 6b  iki><br>..<nowik
2cd0: 69 3e 5b 5f 73 74 61 74 65 2f 6e 75 6c 6c 20 63  i>[_state/null c
2ce0: 74 79 70 65 3f 5d 3c 2f 6e 6f 77 69 6b 69 3e 3c  type?]</nowiki><
2cf0: 62 72 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c  br>.</code></a><
2d00: 2f 68 33 3e 0a 0a 46 6f 72 65 69 67 6e 20 74 79  /h3>..Foreign ty
2d10: 70 65 20 6f 66 20 43 44 20 73 74 61 74 65 73 2c  pe of CD states,
2d20: 20 77 68 69 63 68 20 6d 61 79 20 6f 70 74 69 6f   which may optio
2d30: 6e 61 6c 6c 79 20 62 65 20 3c 63 6f 64 65 3e 4e  nally be <code>N
2d40: 55 4c 4c 3c 2f 63 6f 64 65 3e 2e 0a 0a 4e 6f 74  ULL</code>...Not
2d50: 20 72 65 2d 65 78 70 6f 72 74 65 64 20 66 72 6f   re-exported fro
2d60: 6d 20 74 68 65 20 3c 74 74 3e 5b 2e 2f 6d 61 69  m the <tt>[./mai
2d70: 6e 2e 77 69 6b 69 7c 6d 61 69 6e 5d 3c 2f 74 74  n.wiki|main]</tt
2d80: 3e 20 6d 6f 64 75 6c 65 2e 0a 0a 3c 68 32 3e 43  > module...<h2>C
2d90: 48 49 43 4b 45 4e 20 53 70 65 63 69 66 69 63 73  HICKEN Specifics
2da0: 3c 2f 68 32 3e 0a 0a 54 68 65 20 3c 74 74 3e 62  </h2>..The <tt>b
2db0: 61 73 65 3c 2f 74 74 3e 20 6d 6f 64 75 6c 65 20  ase</tt> module 
2dc0: 6f 6e 6c 79 20 65 78 70 6f 72 74 73 20 63 68 65  only exports che
2dd0: 63 6b 69 6e 67 20 74 79 70 65 20 63 6f 6e 76 65  cking type conve
2de0: 72 73 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 0a  rsion functions.
2df0: 69 6e 73 74 65 61 64 20 6f 66 20 66 6f 72 65 69  instead of forei
2e00: 67 6e 20 74 79 70 65 73 20 73 69 6e 63 65 20 74  gn types since t
2e10: 68 65 20 6c 61 74 74 65 72 20 63 61 6e 6e 6f 74  he latter cannot
2e20: 20 62 65 20 65 78 70 6f 72 74 65 64 2e 20 54 6f   be exported. To
2e30: 20 64 65 66 69 6e 65 0a 74 68 65 20 74 79 70 65   define.the type
2e40: 73 20 3c 63 6f 64 65 3e 63 61 6e 76 61 73 3c 2f  s <code>canvas</
2e50: 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 6e 6f 6e  code>, <code>non
2e60: 6e 75 6c 6c 2d 63 61 6e 76 61 73 3c 2f 63 6f 64  null-canvas</cod
2e70: 65 3e 2c 0a 3c 63 6f 64 65 3e 63 6f 6e 74 65 78  e>,.<code>contex
2e80: 74 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e  t</code>, <code>
2e90: 6e 6f 6e 6e 75 6c 6c 2d 63 6f 6e 74 65 78 74 3c  nonnull-context<
2ea0: 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 73 74  /code>, <code>st
2eb0: 61 74 65 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 3c  ate</code> and.<
2ec0: 63 6f 64 65 3e 6e 6f 6e 6e 75 6c 6c 2d 73 74 61  code>nonnull-sta
2ed0: 74 65 3c 2f 63 6f 64 65 3e 20 69 6e 20 79 6f 75  te</code> in you
2ee0: 72 20 6f 77 6e 20 6d 6f 64 75 6c 65 2c 20 69 6e  r own module, in
2ef0: 63 6c 75 64 65 20 74 68 65 20 66 69 6c 65 0a 3c  clude the file.<
2f00: 74 74 3e 22 63 61 6e 76 61 73 2d 64 72 61 77 2d  tt>"canvas-draw-
2f10: 74 79 70 65 73 2e 73 63 6d 22 3c 2f 74 74 3e 2e  types.scm"</tt>.
2f20: 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 63 61 6e  ..<h3><a id="can
2f30: 76 61 73 2d 5f 70 6f 69 6e 74 65 72 22 3e 3c 63  vas-_pointer"><c
2f40: 6f 64 65 3e 3c 6e 6f 77 69 6b 69 3e 28 28 63 61  ode><nowiki>((ca
2f50: 6e 76 61 73 2d 3e 70 6f 69 6e 74 65 72 20 5b 6e  nvas->pointer [n
2f60: 6f 6e 6e 75 6c 6c 3f 20 61 6e 79 2f 63 5d 29 20  onnull? any/c]) 
2f70: 5b 63 61 6e 76 61 73 20 28 6f 72 2f 63 20 63 61  [canvas (or/c ca
2f80: 6e 76 61 73 3f 20 23 66 29 5d 29 20 e2 86 92 20  nvas? #f)]) → 
2f90: 28 6f 72 2f 63 20 70 6f 69 6e 74 65 72 3f 20 23  (or/c pointer? #
2fa0: 66 29 3c 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64  f)</nowiki></cod
2fb0: 65 3e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 43 68 65  e></a></h3>..Che
2fc0: 63 6b 69 6e 67 20 63 6f 6e 76 65 72 73 69 6f 6e  cking conversion
2fd0: 20 66 72 6f 6d 20 63 61 6e 76 61 73 73 65 73 20   from canvasses 
2fe0: 74 6f 20 70 6f 69 6e 74 65 72 73 2e 0a 0a 4e 6f  to pointers...No
2ff0: 74 20 72 65 2d 65 78 70 6f 72 74 65 64 20 66 72  t re-exported fr
3000: 6f 6d 20 74 68 65 20 3c 74 74 3e 5b 2e 2f 6d 61  om the <tt>[./ma
3010: 69 6e 2e 77 69 6b 69 7c 6d 61 69 6e 5d 3c 2f 74  in.wiki|main]</t
3020: 74 3e 20 6d 6f 64 75 6c 65 2e 0a 0a 3c 68 33 3e  t> module...<h3>
3030: 3c 61 20 69 64 3d 22 70 6f 69 6e 74 65 72 2d 5f  <a id="pointer-_
3040: 63 61 6e 76 61 73 22 3e 3c 63 6f 64 65 3e 3c 6e  canvas"><code><n
3050: 6f 77 69 6b 69 3e 28 28 70 6f 69 6e 74 65 72 2d  owiki>((pointer-
3060: 3e 63 61 6e 76 61 73 20 5b 6e 6f 6e 6e 75 6c 6c  >canvas [nonnull
3070: 3f 20 61 6e 79 2f 63 5d 29 20 5b 63 61 6e 76 61  ? any/c]) [canva
3080: 73 20 28 6f 72 2f 63 20 70 6f 69 6e 74 65 72 3f  s (or/c pointer?
3090: 20 23 66 29 5d 29 20 e2 86 92 20 28 6f 72 2f 63   #f)]) → (or/c
30a0: 20 63 61 6e 76 61 73 3f 20 23 66 29 3c 2f 6e 6f   canvas? #f)</no
30b0: 77 69 6b 69 3e 3c 2f 63 6f 64 65 3e 3c 2f 61 3e  wiki></code></a>
30c0: 3c 2f 68 33 3e 0a 0a 43 68 65 63 6b 69 6e 67 20  </h3>..Checking 
30d0: 63 6f 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20  conversion from 
30e0: 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6e 76  pointers to canv
30f0: 61 73 73 65 73 2e 0a 0a 4e 6f 74 20 72 65 2d 65  asses...Not re-e
3100: 78 70 6f 72 74 65 64 20 66 72 6f 6d 20 74 68 65  xported from the
3110: 20 3c 74 74 3e 5b 2e 2f 6d 61 69 6e 2e 77 69 6b   <tt>[./main.wik
3120: 69 7c 6d 61 69 6e 5d 3c 2f 74 74 3e 20 6d 6f 64  i|main]</tt> mod
3130: 75 6c 65 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d  ule...<h3><a id=
3140: 22 63 6f 6e 74 65 78 74 2d 5f 70 6f 69 6e 74 65  "context-_pointe
3150: 72 22 3e 3c 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69  r"><code><nowiki
3160: 3e 28 28 63 6f 6e 74 65 78 74 2d 3e 70 6f 69 6e  >((context->poin
3170: 74 65 72 20 5b 6e 6f 6e 6e 75 6c 6c 3f 20 61 6e  ter [nonnull? an
3180: 79 2f 63 5d 29 20 5b 63 6f 6e 74 65 78 74 20 28  y/c]) [context (
3190: 6f 72 2f 63 20 63 6f 6e 74 65 78 74 3f 20 23 66  or/c context? #f
31a0: 29 5d 29 20 e2 86 92 20 28 6f 72 2f 63 20 70 6f  )]) → (or/c po
31b0: 69 6e 74 65 72 3f 20 23 66 29 3c 2f 6e 6f 77 69  inter? #f)</nowi
31c0: 6b 69 3e 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f  ki></code></a></
31d0: 68 33 3e 0a 0a 43 68 65 63 6b 69 6e 67 20 63 6f  h3>..Checking co
31e0: 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 63 6f  nversion from co
31f0: 6e 74 65 78 74 73 20 74 6f 20 70 6f 69 6e 74 65  ntexts to pointe
3200: 72 73 2e 0a 0a 4e 6f 74 20 72 65 2d 65 78 70 6f  rs...Not re-expo
3210: 72 74 65 64 20 66 72 6f 6d 20 74 68 65 20 3c 74  rted from the <t
3220: 74 3e 5b 2e 2f 6d 61 69 6e 2e 77 69 6b 69 7c 6d  t>[./main.wiki|m
3230: 61 69 6e 5d 3c 2f 74 74 3e 20 6d 6f 64 75 6c 65  ain]</tt> module
3240: 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 70 6f  ...<h3><a id="po
3250: 69 6e 74 65 72 2d 5f 63 6f 6e 74 65 78 74 22 3e  inter-_context">
3260: 3c 63 6f 64 65 3e 3c 6e 6f 77 69 6b 69 3e 28 28  <code><nowiki>((
3270: 70 6f 69 6e 74 65 72 2d 3e 63 6f 6e 74 65 78 74  pointer->context
3280: 20 5b 6e 6f 6e 6e 75 6c 6c 3f 20 61 6e 79 2f 63   [nonnull? any/c
3290: 5d 29 20 5b 63 6f 6e 74 65 78 74 20 28 6f 72 2f  ]) [context (or/
32a0: 63 20 70 6f 69 6e 74 65 72 3f 20 23 66 29 5d 29  c pointer? #f)])
32b0: 20 e2 86 92 20 28 6f 72 2f 63 20 63 6f 6e 74 65   → (or/c conte
32c0: 78 74 3f 20 23 66 29 3c 2f 6e 6f 77 69 6b 69 3e  xt? #f)</nowiki>
32d0: 3c 2f 63 6f 64 65 3e 3c 2f 61 3e 3c 2f 68 33 3e  </code></a></h3>
32e0: 0a 0a 43 68 65 63 6b 69 6e 67 20 63 6f 6e 76 65  ..Checking conve
32f0: 72 73 69 6f 6e 20 66 72 6f 6d 20 70 6f 69 6e 74  rsion from point
3300: 65 72 73 20 74 6f 20 63 6f 6e 74 65 78 74 73 2e  ers to contexts.
3310: 0a 0a 4e 6f 74 20 72 65 2d 65 78 70 6f 72 74 65  ..Not re-exporte
3320: 64 20 66 72 6f 6d 20 74 68 65 20 3c 74 74 3e 5b  d from the <tt>[
3330: 2e 2f 6d 61 69 6e 2e 77 69 6b 69 7c 6d 61 69 6e  ./main.wiki|main
3340: 5d 3c 2f 74 74 3e 20 6d 6f 64 75 6c 65 2e 0a 0a  ]</tt> module...
3350: 3c 68 33 3e 3c 61 20 69 64 3d 22 73 74 61 74 65  <h3><a id="state
3360: 2d 5f 70 6f 69 6e 74 65 72 22 3e 3c 63 6f 64 65  -_pointer"><code
3370: 3e 3c 6e 6f 77 69 6b 69 3e 28 28 73 74 61 74 65  ><nowiki>((state
3380: 2d 3e 70 6f 69 6e 74 65 72 20 5b 6e 6f 6e 6e 75  ->pointer [nonnu
3390: 6c 6c 3f 20 61 6e 79 2f 63 5d 29 20 5b 73 74 61  ll? any/c]) [sta
33a0: 74 65 20 28 6f 72 2f 63 20 73 74 61 74 65 3f 20  te (or/c state? 
33b0: 23 66 29 5d 29 20 e2 86 92 20 28 6f 72 2f 63 20  #f)]) → (or/c 
33c0: 70 6f 69 6e 74 65 72 3f 20 23 66 29 3c 2f 6e 6f  pointer? #f)</no
33d0: 77 69 6b 69 3e 3c 2f 63 6f 64 65 3e 3c 2f 61 3e  wiki></code></a>
33e0: 3c 2f 68 33 3e 0a 0a 43 68 65 63 6b 69 6e 67 20  </h3>..Checking 
33f0: 63 6f 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20  conversion from 
3400: 73 74 61 74 65 73 20 74 6f 20 70 6f 69 6e 74 65  states to pointe
3410: 72 73 2e 0a 0a 4e 6f 74 20 72 65 2d 65 78 70 6f  rs...Not re-expo
3420: 72 74 65 64 20 66 72 6f 6d 20 74 68 65 20 3c 74  rted from the <t
3430: 74 3e 5b 2e 2f 6d 61 69 6e 2e 77 69 6b 69 7c 6d  t>[./main.wiki|m
3440: 61 69 6e 5d 3c 2f 74 74 3e 20 6d 6f 64 75 6c 65  ain]</tt> module
3450: 2e 0a 0a 3c 68 33 3e 3c 61 20 69 64 3d 22 70 6f  ...<h3><a id="po
3460: 69 6e 74 65 72 2d 5f 73 74 61 74 65 22 3e 3c 63  inter-_state"><c
3470: 6f 64 65 3e 3c 6e 6f 77 69 6b 69 3e 28 28 70 6f  ode><nowiki>((po
3480: 69 6e 74 65 72 2d 3e 73 74 61 74 65 20 5b 6e 6f  inter->state [no
3490: 6e 6e 75 6c 6c 3f 20 61 6e 79 2f 63 5d 29 20 5b  nnull? any/c]) [
34a0: 73 74 61 74 65 20 28 6f 72 2f 63 20 70 6f 69 6e  state (or/c poin
34b0: 74 65 72 3f 20 23 66 29 5d 29 20 e2 86 92 20 28  ter? #f)]) → (
34c0: 6f 72 2f 63 20 73 74 61 74 65 3f 20 23 66 29 3c  or/c state? #f)<
34d0: 2f 6e 6f 77 69 6b 69 3e 3c 2f 63 6f 64 65 3e 3c  /nowiki></code><
34e0: 2f 61 3e 3c 2f 68 33 3e 0a 0a 43 68 65 63 6b 69  /a></h3>..Checki
34f0: 6e 67 20 63 6f 6e 76 65 72 73 69 6f 6e 20 66 72  ng conversion fr
3500: 6f 6d 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73  om pointers to s
3510: 74 61 74 65 73 2e 0a 0a 4e 6f 74 20 72 65 2d 65  tates...Not re-e
3520: 78 70 6f 72 74 65 64 20 66 72 6f 6d 20 74 68 65  xported from the
3530: 20 3c 74 74 3e 5b 2e 2f 6d 61 69 6e 2e 77 69 6b   <tt>[./main.wik
3540: 69 7c 6d 61 69 6e 5d 3c 2f 74 74 3e 20 6d 6f 64  i|main]</tt> mod
3550: 75 6c 65 2e 0a                                   ule..