Artifact 4720a46d21991df75a9a93b9ae6912c7116b5c9a:


0000: 3b 3b 20 2d 2a 2d 20 6d 6f 64 65 3a 20 53 63 68  ;; -*- mode: Sch
0010: 65 6d 65 3b 20 74 61 62 2d 77 69 64 74 68 3a 20  eme; tab-width: 
0020: 32 3b 20 2d 2a 2d 20 3b 3b 0a 0a 28 72 65 71 75  2; -*- ;;..(requ
0030: 69 72 65 2d 6c 69 62 72 61 72 79 20 6c 6f 6c 65  ire-library lole
0040: 76 65 6c 20 64 61 74 61 2d 73 74 72 75 63 74 75  vel data-structu
0050: 72 65 73 20 73 72 66 69 2d 31 20 73 72 66 69 2d  res srfi-1 srfi-
0060: 34 20 73 72 66 69 2d 31 33 29 0a 0a 28 6d 6f 64  4 srfi-13)..(mod
0070: 75 6c 65 20 63 61 6e 76 61 73 2d 64 72 61 77 2d  ule canvas-draw-
0080: 62 61 73 65 0a 09 28 63 61 6e 76 61 73 3f 20 63  base..(canvas? c
0090: 61 6e 76 61 73 2d 3e 70 6f 69 6e 74 65 72 20 70  anvas->pointer p
00a0: 6f 69 6e 74 65 72 2d 3e 63 61 6e 76 61 73 0a 09  ointer->canvas..
00b0: 20 63 6f 6e 74 65 78 74 3f 20 63 6f 6e 74 65 78   context? contex
00c0: 74 2d 3e 70 6f 69 6e 74 65 72 20 70 6f 69 6e 74  t->pointer point
00d0: 65 72 2d 3e 63 6f 6e 74 65 78 74 0a 09 20 73 74  er->context.. st
00e0: 61 74 65 3f 20 73 74 61 74 65 2d 3e 70 6f 69 6e  ate? state->poin
00f0: 74 65 72 20 70 6f 69 6e 74 65 72 2d 3e 73 74 61  ter pointer->sta
0100: 74 65 0a 09 20 63 6f 6e 74 65 78 74 2d 63 61 70  te.. context-cap
0110: 61 62 69 6c 69 74 69 65 73 0a 09 20 75 73 65 2d  abilities.. use-
0120: 63 6f 6e 74 65 78 74 2b 20 6d 61 6b 65 2d 63 61  context+ make-ca
0130: 6e 76 61 73 20 63 61 6c 6c 2d 77 69 74 68 2d 63  nvas call-with-c
0140: 61 6e 76 61 73 0a 09 20 63 61 6e 76 61 73 2d 63  anvas.. canvas-c
0150: 6f 6e 74 65 78 74 0a 09 20 63 61 6e 76 61 73 2d  ontext.. canvas-
0160: 73 69 6d 75 6c 61 74 65 21 0a 09 20 63 61 6e 76  simulate!.. canv
0170: 61 73 2d 61 74 74 72 69 62 75 74 65 20 63 61 6e  as-attribute can
0180: 76 61 73 2d 61 74 74 72 69 62 75 74 65 2d 73 65  vas-attribute-se
0190: 74 21 0a 09 20 63 61 6e 76 61 73 2d 73 74 61 74  t!.. canvas-stat
01a0: 65 20 63 61 6e 76 61 73 2d 73 74 61 74 65 2d 73  e canvas-state-s
01b0: 65 74 21 0a 09 20 63 61 6e 76 61 73 2d 63 6c 65  et!.. canvas-cle
01c0: 61 72 21 20 63 61 6e 76 61 73 2d 66 6c 75 73 68  ar! canvas-flush
01d0: 0a 09 20 63 61 6e 76 61 73 2d 73 69 7a 65 0a 09  .. canvas-size..
01e0: 20 63 61 6e 76 61 73 2d 6d 6d 2d 3e 70 78 20 63   canvas-mm->px c
01f0: 61 6e 76 61 73 2d 70 78 2d 3e 6d 6d 0a 09 20 63  anvas-px->mm.. c
0200: 61 6e 76 61 73 2d 6f 72 69 67 69 6e 20 63 61 6e  anvas-origin can
0210: 76 61 73 2d 6f 72 69 67 69 6e 2d 73 65 74 21 0a  vas-origin-set!.
0220: 09 20 63 61 6e 76 61 73 2d 74 72 61 6e 73 66 6f  . canvas-transfo
0230: 72 6d 20 63 61 6e 76 61 73 2d 74 72 61 6e 73 66  rm canvas-transf
0240: 6f 72 6d 2d 73 65 74 21 0a 09 20 63 61 6e 76 61  orm-set!.. canva
0250: 73 2d 74 72 61 6e 73 66 6f 72 6d 2d 63 6f 6d 70  s-transform-comp
0260: 6f 73 65 21 0a 09 20 63 61 6e 76 61 73 2d 74 72  ose!.. canvas-tr
0270: 61 6e 73 66 6f 72 6d 2d 74 72 61 6e 73 6c 61 74  ansform-translat
0280: 65 21 0a 09 20 63 61 6e 76 61 73 2d 74 72 61 6e  e!.. canvas-tran
0290: 73 66 6f 72 6d 2d 73 63 61 6c 65 21 0a 09 20 63  sform-scale!.. c
02a0: 61 6e 76 61 73 2d 74 72 61 6e 73 66 6f 72 6d 2d  anvas-transform-
02b0: 72 6f 74 61 74 65 21 0a 09 20 63 61 6e 76 61 73  rotate!.. canvas
02c0: 2d 66 6f 72 65 67 72 6f 75 6e 64 20 63 61 6e 76  -foreground canv
02d0: 61 73 2d 66 6f 72 65 67 72 6f 75 6e 64 2d 73 65  as-foreground-se
02e0: 74 21 0a 09 20 63 61 6e 76 61 73 2d 62 61 63 6b  t!.. canvas-back
02f0: 67 72 6f 75 6e 64 20 63 61 6e 76 61 73 2d 62 61  ground canvas-ba
0300: 63 6b 67 72 6f 75 6e 64 2d 73 65 74 21 0a 09 20  ckground-set!.. 
0310: 63 61 6e 76 61 73 2d 77 72 69 74 65 2d 6d 6f 64  canvas-write-mod
0320: 65 20 63 61 6e 76 61 73 2d 77 72 69 74 65 2d 6d  e canvas-write-m
0330: 6f 64 65 2d 73 65 74 21 0a 09 20 63 61 6e 76 61  ode-set!.. canva
0340: 73 2d 63 6c 69 70 2d 6d 6f 64 65 20 63 61 6e 76  s-clip-mode canv
0350: 61 73 2d 63 6c 69 70 2d 6d 6f 64 65 2d 73 65 74  as-clip-mode-set
0360: 21 0a 09 20 63 61 6e 76 61 73 2d 63 6c 69 70 2d  !.. canvas-clip-
0370: 61 72 65 61 20 63 61 6e 76 61 73 2d 63 6c 69 70  area canvas-clip
0380: 2d 61 72 65 61 2d 73 65 74 21 29 0a 09 28 69 6d  -area-set!)..(im
0390: 70 6f 72 74 0a 09 09 73 63 68 65 6d 65 20 63 68  port...scheme ch
03a0: 69 63 6b 65 6e 20 66 6f 72 65 69 67 6e 0a 09 09  icken foreign...
03b0: 6c 6f 6c 65 76 65 6c 20 64 61 74 61 2d 73 74 72  lolevel data-str
03c0: 75 63 74 75 72 65 73 20 73 72 66 69 2d 31 20 73  uctures srfi-1 s
03d0: 72 66 69 2d 34 20 73 72 66 69 2d 31 33 29 0a 09  rfi-4 srfi-13)..
03e0: 28 69 6e 63 6c 75 64 65 20 22 63 61 6e 76 61 73  (include "canvas
03f0: 2d 64 72 61 77 2d 62 61 73 65 2e 73 63 6d 22 29  -draw-base.scm")
0400: 29 0a 0a 28 6d 6f 64 75 6c 65 20 63 61 6e 76 61  )..(module canva
0410: 73 2d 64 72 61 77 2d 70 72 69 6d 69 74 69 76 65  s-draw-primitive
0420: 73 0a 09 28 63 61 6e 76 61 73 2d 70 69 78 65 6c  s..(canvas-pixel
0430: 21 0a 09 20 63 61 6e 76 61 73 2d 6d 61 72 6b 21  !.. canvas-mark!
0440: 0a 09 20 63 61 6e 76 61 73 2d 6d 61 72 6b 2d 74  .. canvas-mark-t
0450: 79 70 65 20 63 61 6e 76 61 73 2d 6d 61 72 6b 2d  ype canvas-mark-
0460: 74 79 70 65 2d 73 65 74 21 0a 09 20 63 61 6e 76  type-set!.. canv
0470: 61 73 2d 6d 61 72 6b 2d 73 69 7a 65 20 63 61 6e  as-mark-size can
0480: 76 61 73 2d 6d 61 72 6b 2d 73 69 7a 65 2d 73 65  vas-mark-size-se
0490: 74 21 0a 09 20 63 61 6e 76 61 73 2d 6c 69 6e 65  t!.. canvas-line
04a0: 21 20 63 61 6e 76 61 73 2d 72 65 63 74 61 6e 67  ! canvas-rectang
04b0: 6c 65 21 20 63 61 6e 76 61 73 2d 61 72 63 21 0a  le! canvas-arc!.
04c0: 09 20 63 61 6e 76 61 73 2d 6c 69 6e 65 2d 73 74  . canvas-line-st
04d0: 79 6c 65 20 63 61 6e 76 61 73 2d 6c 69 6e 65 2d  yle canvas-line-
04e0: 73 74 79 6c 65 2d 73 65 74 21 0a 09 20 63 61 6e  style-set!.. can
04f0: 76 61 73 2d 6c 69 6e 65 2d 77 69 64 74 68 20 63  vas-line-width c
0500: 61 6e 76 61 73 2d 6c 69 6e 65 2d 77 69 64 74 68  anvas-line-width
0510: 2d 73 65 74 21 0a 09 20 63 61 6e 76 61 73 2d 6c  -set!.. canvas-l
0520: 69 6e 65 2d 6a 6f 69 6e 20 63 61 6e 76 61 73 2d  ine-join canvas-
0530: 6c 69 6e 65 2d 6a 6f 69 6e 2d 73 65 74 21 0a 09  line-join-set!..
0540: 20 63 61 6e 76 61 73 2d 6c 69 6e 65 2d 63 61 70   canvas-line-cap
0550: 20 63 61 6e 76 61 73 2d 6c 69 6e 65 2d 63 61 70   canvas-line-cap
0560: 2d 73 65 74 21 0a 09 20 63 61 6e 76 61 73 2d 62  -set!.. canvas-b
0570: 6f 78 21 20 63 61 6e 76 61 73 2d 73 65 63 74 6f  ox! canvas-secto
0580: 72 21 20 63 61 6e 76 61 73 2d 63 68 6f 72 64 21  r! canvas-chord!
0590: 0a 09 20 63 61 6e 76 61 73 2d 62 61 63 6b 67 72  .. canvas-backgr
05a0: 6f 75 6e 64 2d 6f 70 61 63 69 74 79 20 63 61 6e  ound-opacity can
05b0: 76 61 73 2d 62 61 63 6b 67 72 6f 75 6e 64 2d 6f  vas-background-o
05c0: 70 61 63 69 74 79 2d 73 65 74 21 0a 09 20 63 61  pacity-set!.. ca
05d0: 6e 76 61 73 2d 66 69 6c 6c 2d 6d 6f 64 65 20 63  nvas-fill-mode c
05e0: 61 6e 76 61 73 2d 66 69 6c 6c 2d 6d 6f 64 65 2d  anvas-fill-mode-
05f0: 73 65 74 21 0a 09 20 63 61 6e 76 61 73 2d 69 6e  set!.. canvas-in
0600: 74 65 72 69 6f 72 2d 73 74 79 6c 65 20 63 61 6e  terior-style can
0610: 76 61 73 2d 69 6e 74 65 72 69 6f 72 2d 73 74 79  vas-interior-sty
0620: 6c 65 2d 73 65 74 21 0a 09 20 63 61 6e 76 61 73  le-set!.. canvas
0630: 2d 74 65 78 74 21 0a 09 20 63 61 6e 76 61 73 2d  -text!.. canvas-
0640: 66 6f 6e 74 20 63 61 6e 76 61 73 2d 66 6f 6e 74  font canvas-font
0650: 2d 73 65 74 21 0a 09 20 63 61 6e 76 61 73 2d 74  -set!.. canvas-t
0660: 65 78 74 2d 61 6c 69 67 6e 6d 65 6e 74 20 63 61  ext-alignment ca
0670: 6e 76 61 73 2d 74 65 78 74 2d 61 6c 69 67 6e 6d  nvas-text-alignm
0680: 65 6e 74 2d 73 65 74 21 0a 09 20 63 61 6e 76 61  ent-set!.. canva
0690: 73 2d 74 65 78 74 2d 6f 72 69 65 6e 74 61 74 69  s-text-orientati
06a0: 6f 6e 20 63 61 6e 76 61 73 2d 74 65 78 74 2d 6f  on canvas-text-o
06b0: 72 69 65 6e 74 61 74 69 6f 6e 2d 73 65 74 21 0a  rientation-set!.
06c0: 09 20 63 61 6e 76 61 73 2d 66 6f 6e 74 2d 64 69  . canvas-font-di
06d0: 6d 65 6e 73 69 6f 6e 73 20 63 61 6e 76 61 73 2d  mensions canvas-
06e0: 74 65 78 74 2d 73 69 7a 65 20 63 61 6e 76 61 73  text-size canvas
06f0: 2d 74 65 78 74 2d 62 6f 78 0a 09 20 63 61 6c 6c  -text-box.. call
0700: 2d 77 69 74 68 2d 63 61 6e 76 61 73 2d 69 6e 2d  -with-canvas-in-
0710: 6d 6f 64 65 20 63 61 6e 76 61 73 2d 70 61 74 68  mode canvas-path
0720: 2d 73 65 74 21 0a 09 20 63 61 6e 76 61 73 2d 76  -set!.. canvas-v
0730: 65 72 74 65 78 21 29 0a 09 28 69 6d 70 6f 72 74  ertex!)..(import
0740: 20 73 63 68 65 6d 65 20 63 68 69 63 6b 65 6e 20   scheme chicken 
0750: 66 6f 72 65 69 67 6e 20 64 61 74 61 2d 73 74 72  foreign data-str
0760: 75 63 74 75 72 65 73 20 73 72 66 69 2d 34 20 63  uctures srfi-4 c
0770: 61 6e 76 61 73 2d 64 72 61 77 2d 62 61 73 65 29  anvas-draw-base)
0780: 0a 09 28 69 6e 63 6c 75 64 65 20 22 63 61 6e 76  ..(include "canv
0790: 61 73 2d 64 72 61 77 2d 70 72 69 6d 69 74 69 76  as-draw-primitiv
07a0: 65 73 2e 73 63 6d 22 29 29 0a 0a 28 6d 6f 64 75  es.scm"))..(modu
07b0: 6c 65 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 70  le canvas-draw-p
07c0: 6c 61 79 0a 09 28 63 61 6e 76 61 73 2d 70 6c 61  lay..(canvas-pla
07d0: 79 21 29 0a 09 28 69 6d 70 6f 72 74 20 73 63 68  y!)..(import sch
07e0: 65 6d 65 20 63 68 69 63 6b 65 6e 20 66 6f 72 65  eme chicken fore
07f0: 69 67 6e 20 63 61 6e 76 61 73 2d 64 72 61 77 2d  ign canvas-draw-
0800: 62 61 73 65 29 0a 09 28 69 6e 63 6c 75 64 65 20  base)..(include 
0810: 22 63 61 6e 76 61 73 2d 64 72 61 77 2d 70 6c 61  "canvas-draw-pla
0820: 79 2e 73 63 6d 22 29 29 0a 0a 28 6d 6f 64 75 6c  y.scm"))..(modul
0830: 65 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 70 69  e canvas-draw-pi
0840: 63 74 75 72 65 0a 09 28 63 6f 6e 74 65 78 74 3a  cture..(context:
0850: 70 69 63 74 75 72 65 29 0a 09 28 69 6d 70 6f 72  picture)..(impor
0860: 74 20 73 63 68 65 6d 65 20 63 68 69 63 6b 65 6e  t scheme chicken
0870: 20 66 6f 72 65 69 67 6e 20 63 61 6e 76 61 73 2d   foreign canvas-
0880: 64 72 61 77 2d 62 61 73 65 29 0a 09 28 69 6e 63  draw-base)..(inc
0890: 6c 75 64 65 20 22 63 61 6e 76 61 73 2d 64 72 61  lude "canvas-dra
08a0: 77 2d 70 69 63 74 75 72 65 2e 73 63 6d 22 29 29  w-picture.scm"))
08b0: 0a 0a 28 6d 6f 64 75 6c 65 20 63 61 6e 76 61 73  ..(module canvas
08c0: 2d 64 72 61 77 2d 63 6c 69 65 6e 74 0a 09 28 63  -draw-client..(c
08d0: 6f 6e 74 65 78 74 3a 69 6d 61 67 65 20 63 6f 6e  ontext:image con
08e0: 74 65 78 74 3a 64 6f 75 62 6c 65 2d 62 75 66 66  text:double-buff
08f0: 65 72 0a 09 20 63 61 6e 76 61 73 2d 69 6d 61 67  er.. canvas-imag
0900: 65 2f 72 67 62 20 63 61 6e 76 61 73 2d 69 6d 61  e/rgb canvas-ima
0910: 67 65 2d 70 75 74 2f 72 67 62 21 20 63 61 6e 76  ge-put/rgb! canv
0920: 61 73 2d 69 6d 61 67 65 2d 70 75 74 2f 72 67 62  as-image-put/rgb
0930: 61 21 29 0a 09 28 69 6d 70 6f 72 74 20 73 63 68  a!)..(import sch
0940: 65 6d 65 20 63 68 69 63 6b 65 6e 20 66 6f 72 65  eme chicken fore
0950: 69 67 6e 20 63 61 6e 76 61 73 2d 64 72 61 77 2d  ign canvas-draw-
0960: 62 61 73 65 29 0a 09 28 69 6e 63 6c 75 64 65 20  base)..(include 
0970: 22 63 61 6e 76 61 73 2d 64 72 61 77 2d 63 6c 69  "canvas-draw-cli
0980: 65 6e 74 2e 73 63 6d 22 29 29 0a 0a 28 6d 6f 64  ent.scm"))..(mod
0990: 75 6c 65 20 63 61 6e 76 61 73 2d 64 72 61 77 2d  ule canvas-draw-
09a0: 70 73 0a 09 28 63 6f 6e 74 65 78 74 3a 70 73 29  ps..(context:ps)
09b0: 0a 09 28 69 6d 70 6f 72 74 20 73 63 68 65 6d 65  ..(import scheme
09c0: 20 63 68 69 63 6b 65 6e 20 66 6f 72 65 69 67 6e   chicken foreign
09d0: 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 62 61 73   canvas-draw-bas
09e0: 65 29 0a 09 28 69 6e 63 6c 75 64 65 20 22 63 61  e)..(include "ca
09f0: 6e 76 61 73 2d 64 72 61 77 2d 70 73 2e 73 63 6d  nvas-draw-ps.scm
0a00: 22 29 29 0a 0a 28 6d 6f 64 75 6c 65 20 63 61 6e  "))..(module can
0a10: 76 61 73 2d 64 72 61 77 2d 73 76 67 0a 09 28 63  vas-draw-svg..(c
0a20: 6f 6e 74 65 78 74 3a 73 76 67 29 0a 09 28 69 6d  ontext:svg)..(im
0a30: 70 6f 72 74 20 73 63 68 65 6d 65 20 63 68 69 63  port scheme chic
0a40: 6b 65 6e 20 66 6f 72 65 69 67 6e 20 63 61 6e 76  ken foreign canv
0a50: 61 73 2d 64 72 61 77 2d 62 61 73 65 29 0a 09 28  as-draw-base)..(
0a60: 69 6e 63 6c 75 64 65 20 22 63 61 6e 76 61 73 2d  include "canvas-
0a70: 64 72 61 77 2d 73 76 67 2e 73 63 6d 22 29 29 0a  draw-svg.scm")).
0a80: 0a 28 6d 6f 64 75 6c 65 20 63 61 6e 76 61 73 2d  .(module canvas-
0a90: 64 72 61 77 2d 6d 65 74 61 66 69 6c 65 0a 09 28  draw-metafile..(
0aa0: 63 6f 6e 74 65 78 74 3a 6d 65 74 61 66 69 6c 65  context:metafile
0ab0: 29 0a 09 28 69 6d 70 6f 72 74 20 73 63 68 65 6d  )..(import schem
0ac0: 65 20 63 68 69 63 6b 65 6e 20 66 6f 72 65 69 67  e chicken foreig
0ad0: 6e 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 62 61  n canvas-draw-ba
0ae0: 73 65 29 0a 09 28 69 6e 63 6c 75 64 65 20 22 63  se)..(include "c
0af0: 61 6e 76 61 73 2d 64 72 61 77 2d 6d 65 74 61 66  anvas-draw-metaf
0b00: 69 6c 65 2e 73 63 6d 22 29 29 0a 0a 28 6d 6f 64  ile.scm"))..(mod
0b10: 75 6c 65 20 63 61 6e 76 61 73 2d 64 72 61 77 2d  ule canvas-draw-
0b20: 63 67 6d 0a 09 28 63 6f 6e 74 65 78 74 3a 63 67  cgm..(context:cg
0b30: 6d 29 0a 09 28 69 6d 70 6f 72 74 20 73 63 68 65  m)..(import sche
0b40: 6d 65 20 63 68 69 63 6b 65 6e 20 66 6f 72 65 69  me chicken forei
0b50: 67 6e 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 62  gn canvas-draw-b
0b60: 61 73 65 29 0a 09 28 69 6e 63 6c 75 64 65 20 22  ase)..(include "
0b70: 63 61 6e 76 61 73 2d 64 72 61 77 2d 63 67 6d 2e  canvas-draw-cgm.
0b80: 73 63 6d 22 29 29 0a 0a 28 6d 6f 64 75 6c 65 20  scm"))..(module 
0b90: 63 61 6e 76 61 73 2d 64 72 61 77 2d 64 67 6e 0a  canvas-draw-dgn.
0ba0: 09 28 63 6f 6e 74 65 78 74 3a 64 67 6e 29 0a 09  .(context:dgn)..
0bb0: 28 69 6d 70 6f 72 74 20 73 63 68 65 6d 65 20 63  (import scheme c
0bc0: 68 69 63 6b 65 6e 20 66 6f 72 65 69 67 6e 20 63  hicken foreign c
0bd0: 61 6e 76 61 73 2d 64 72 61 77 2d 62 61 73 65 29  anvas-draw-base)
0be0: 0a 09 28 69 6e 63 6c 75 64 65 20 22 63 61 6e 76  ..(include "canv
0bf0: 61 73 2d 64 72 61 77 2d 64 67 6e 2e 73 63 6d 22  as-draw-dgn.scm"
0c00: 29 29 0a 0a 28 6d 6f 64 75 6c 65 20 63 61 6e 76  ))..(module canv
0c10: 61 73 2d 64 72 61 77 2d 64 78 66 0a 09 28 63 6f  as-draw-dxf..(co
0c20: 6e 74 65 78 74 3a 64 78 66 29 0a 09 28 69 6d 70  ntext:dxf)..(imp
0c30: 6f 72 74 20 73 63 68 65 6d 65 20 63 68 69 63 6b  ort scheme chick
0c40: 65 6e 20 66 6f 72 65 69 67 6e 20 63 61 6e 76 61  en foreign canva
0c50: 73 2d 64 72 61 77 2d 62 61 73 65 29 0a 09 28 69  s-draw-base)..(i
0c60: 6e 63 6c 75 64 65 20 22 63 61 6e 76 61 73 2d 64  nclude "canvas-d
0c70: 72 61 77 2d 64 78 66 2e 73 63 6d 22 29 29 0a 0a  raw-dxf.scm"))..
0c80: 28 6d 6f 64 75 6c 65 20 63 61 6e 76 61 73 2d 64  (module canvas-d
0c90: 72 61 77 2d 65 6d 66 0a 09 28 63 6f 6e 74 65 78  raw-emf..(contex
0ca0: 74 3a 65 6d 66 29 0a 09 28 69 6d 70 6f 72 74 20  t:emf)..(import 
0cb0: 73 63 68 65 6d 65 20 63 68 69 63 6b 65 6e 20 66  scheme chicken f
0cc0: 6f 72 65 69 67 6e 20 63 61 6e 76 61 73 2d 64 72  oreign canvas-dr
0cd0: 61 77 2d 62 61 73 65 29 0a 09 28 69 6e 63 6c 75  aw-base)..(inclu
0ce0: 64 65 20 22 63 61 6e 76 61 73 2d 64 72 61 77 2d  de "canvas-draw-
0cf0: 65 6d 66 2e 73 63 6d 22 29 29 0a 0a 28 6d 6f 64  emf.scm"))..(mod
0d00: 75 6c 65 20 63 61 6e 76 61 73 2d 64 72 61 77 2d  ule canvas-draw-
0d10: 77 6d 66 0a 09 28 63 6f 6e 74 65 78 74 3a 77 6d  wmf..(context:wm
0d20: 66 29 0a 09 28 69 6d 70 6f 72 74 20 73 63 68 65  f)..(import sche
0d30: 6d 65 20 63 68 69 63 6b 65 6e 20 66 6f 72 65 69  me chicken forei
0d40: 67 6e 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 62  gn canvas-draw-b
0d50: 61 73 65 29 0a 09 28 69 6e 63 6c 75 64 65 20 22  ase)..(include "
0d60: 63 61 6e 76 61 73 2d 64 72 61 77 2d 77 6d 66 2e  canvas-draw-wmf.
0d70: 73 63 6d 22 29 29 0a 0a 28 63 6f 6e 64 2d 65 78  scm"))..(cond-ex
0d80: 70 61 6e 64 0a 20 5b 64 69 73 61 62 6c 65 2d 63  pand. [disable-c
0d90: 61 6e 76 61 73 2d 64 72 61 77 2d 69 75 70 5d 0a  anvas-draw-iup].
0da0: 20 5b 65 6c 73 65 0a 09 28 6d 6f 64 75 6c 65 20   [else..(module 
0db0: 63 61 6e 76 61 73 2d 64 72 61 77 2d 69 75 70 0a  canvas-draw-iup.
0dc0: 09 09 28 63 6f 6e 74 65 78 74 3a 69 75 70 20 6d  ..(context:iup m
0dd0: 61 6b 65 2d 63 61 6e 76 61 73 2d 61 63 74 69 6f  ake-canvas-actio
0de0: 6e 20 6d 61 6b 65 2d 63 65 6c 6c 73 2d 64 72 61  n make-cells-dra
0df0: 77 2d 63 62 29 0a 09 09 28 69 6d 70 6f 72 74 20  w-cb)...(import 
0e00: 73 63 68 65 6d 65 20 63 68 69 63 6b 65 6e 20 66  scheme chicken f
0e10: 6f 72 65 69 67 6e 20 63 61 6e 76 61 73 2d 64 72  oreign canvas-dr
0e20: 61 77 2d 62 61 73 65 29 0a 09 09 28 69 6e 63 6c  aw-base)...(incl
0e30: 75 64 65 20 22 63 61 6e 76 61 73 2d 64 72 61 77  ude "canvas-draw
0e40: 2d 69 75 70 2e 73 63 6d 22 29 29 5d 29 0a 0a 28  -iup.scm"))])..(
0e50: 63 6f 6e 64 2d 65 78 70 61 6e 64 0a 20 5b 64 69  cond-expand. [di
0e60: 73 61 62 6c 65 2d 63 61 6e 76 61 73 2d 64 72 61  sable-canvas-dra
0e70: 77 2d 67 6c 5d 0a 20 5b 65 6c 73 65 0a 09 28 6d  w-gl]. [else..(m
0e80: 6f 64 75 6c 65 20 63 61 6e 76 61 73 2d 64 72 61  odule canvas-dra
0e90: 77 2d 67 6c 0a 09 09 28 63 6f 6e 74 65 78 74 3a  w-gl...(context:
0ea0: 67 6c 29 0a 09 09 28 69 6d 70 6f 72 74 20 73 63  gl)...(import sc
0eb0: 68 65 6d 65 20 63 68 69 63 6b 65 6e 20 66 6f 72  heme chicken for
0ec0: 65 69 67 6e 20 63 61 6e 76 61 73 2d 64 72 61 77  eign canvas-draw
0ed0: 2d 62 61 73 65 29 0a 09 09 28 69 6e 63 6c 75 64  -base)...(includ
0ee0: 65 20 22 63 61 6e 76 61 73 2d 64 72 61 77 2d 67  e "canvas-draw-g
0ef0: 6c 2e 73 63 6d 22 29 29 5d 29 0a 0a 28 63 6f 6e  l.scm"))])..(con
0f00: 64 2d 65 78 70 61 6e 64 0a 20 5b 64 69 73 61 62  d-expand. [disab
0f10: 6c 65 2d 63 61 6e 76 61 73 2d 64 72 61 77 2d 6e  le-canvas-draw-n
0f20: 61 74 69 76 65 5d 0a 20 5b 65 6c 73 65 0a 09 28  ative]. [else..(
0f30: 6d 6f 64 75 6c 65 20 63 61 6e 76 61 73 2d 64 72  module canvas-dr
0f40: 61 77 2d 6e 61 74 69 76 65 0a 09 09 28 63 6f 6e  aw-native...(con
0f50: 74 65 78 74 3a 6e 61 74 69 76 65 2d 77 69 6e 64  text:native-wind
0f60: 6f 77 0a 09 09 20 73 63 72 65 65 6e 2d 73 69 7a  ow... screen-siz
0f70: 65 29 0a 09 09 28 69 6d 70 6f 72 74 20 73 63 68  e)...(import sch
0f80: 65 6d 65 20 63 68 69 63 6b 65 6e 20 66 6f 72 65  eme chicken fore
0f90: 69 67 6e 20 63 61 6e 76 61 73 2d 64 72 61 77 2d  ign canvas-draw-
0fa0: 62 61 73 65 29 0a 09 09 28 69 6e 63 6c 75 64 65  base)...(include
0fb0: 20 22 63 61 6e 76 61 73 2d 64 72 61 77 2d 6e 61   "canvas-draw-na
0fc0: 74 69 76 65 2e 73 63 6d 22 29 29 0a 09 28 6d 6f  tive.scm"))..(mo
0fd0: 64 75 6c 65 20 63 61 6e 76 61 73 2d 64 72 61 77  dule canvas-draw
0fe0: 2d 73 65 72 76 65 72 0a 09 09 28 63 6f 6e 74 65  -server...(conte
0ff0: 78 74 3a 69 6d 61 67 65 20 63 6f 6e 74 65 78 74  xt:image context
1000: 3a 64 6f 75 62 6c 65 2d 62 75 66 66 65 72 29 0a  :double-buffer).
1010: 09 09 28 69 6d 70 6f 72 74 20 73 63 68 65 6d 65  ..(import scheme
1020: 20 63 68 69 63 6b 65 6e 20 66 6f 72 65 69 67 6e   chicken foreign
1030: 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 62 61 73   canvas-draw-bas
1040: 65 29 0a 09 09 28 69 6e 63 6c 75 64 65 20 22 63  e)...(include "c
1050: 61 6e 76 61 73 2d 64 72 61 77 2d 73 65 72 76 65  anvas-draw-serve
1060: 72 2e 73 63 6d 22 29 29 0a 09 28 6d 6f 64 75 6c  r.scm"))..(modul
1070: 65 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 63 6c  e canvas-draw-cl
1080: 69 70 62 6f 61 72 64 0a 09 09 28 63 6f 6e 74 65  ipboard...(conte
1090: 78 74 3a 63 6c 69 70 62 6f 61 72 64 29 0a 09 09  xt:clipboard)...
10a0: 28 69 6d 70 6f 72 74 20 73 63 68 65 6d 65 20 63  (import scheme c
10b0: 68 69 63 6b 65 6e 20 66 6f 72 65 69 67 6e 20 63  hicken foreign c
10c0: 61 6e 76 61 73 2d 64 72 61 77 2d 62 61 73 65 29  anvas-draw-base)
10d0: 0a 09 09 28 69 6e 63 6c 75 64 65 20 22 63 61 6e  ...(include "can
10e0: 76 61 73 2d 64 72 61 77 2d 63 6c 69 70 62 6f 61  vas-draw-clipboa
10f0: 72 64 2e 73 63 6d 22 29 29 0a 09 28 6d 6f 64 75  rd.scm"))..(modu
1100: 6c 65 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 70  le canvas-draw-p
1110: 72 69 6e 74 65 72 0a 09 09 28 63 6f 6e 74 65 78  rinter...(contex
1120: 74 3a 70 72 69 6e 74 65 72 29 0a 09 09 28 69 6d  t:printer)...(im
1130: 70 6f 72 74 20 73 63 68 65 6d 65 20 63 68 69 63  port scheme chic
1140: 6b 65 6e 20 66 6f 72 65 69 67 6e 20 63 61 6e 76  ken foreign canv
1150: 61 73 2d 64 72 61 77 2d 62 61 73 65 29 0a 09 09  as-draw-base)...
1160: 28 69 6e 63 6c 75 64 65 20 22 63 61 6e 76 61 73  (include "canvas
1170: 2d 64 72 61 77 2d 70 72 69 6e 74 65 72 2e 73 63  -draw-printer.sc
1180: 6d 22 29 29 5d 29 0a 0a 28 63 6f 6e 64 2d 65 78  m"))])..(cond-ex
1190: 70 61 6e 64 0a 20 5b 64 69 73 61 62 6c 65 2d 63  pand. [disable-c
11a0: 61 6e 76 61 73 2d 64 72 61 77 2d 70 64 66 5d 0a  anvas-draw-pdf].
11b0: 20 5b 65 6c 73 65 0a 09 28 6d 6f 64 75 6c 65 20   [else..(module 
11c0: 63 61 6e 76 61 73 2d 64 72 61 77 2d 70 64 66 0a  canvas-draw-pdf.
11d0: 09 09 28 63 6f 6e 74 65 78 74 3a 70 64 66 29 0a  ..(context:pdf).
11e0: 09 09 28 69 6d 70 6f 72 74 20 73 63 68 65 6d 65  ..(import scheme
11f0: 20 63 68 69 63 6b 65 6e 20 66 6f 72 65 69 67 6e   chicken foreign
1200: 20 63 61 6e 76 61 73 2d 64 72 61 77 2d 62 61 73   canvas-draw-bas
1210: 65 29 0a 09 09 28 69 6e 63 6c 75 64 65 20 22 63  e)...(include "c
1220: 61 6e 76 61 73 2d 64 72 61 77 2d 70 64 66 2e 73  anvas-draw-pdf.s
1230: 63 6d 22 29 29 5d 29 0a 0a 28 63 6f 6e 64 2d 65  cm"))])..(cond-e
1240: 78 70 61 6e 64 0a 20 5b 65 6e 61 62 6c 65 2d 63  xpand. [enable-c
1250: 61 6e 76 61 73 2d 64 72 61 77 2d 64 65 62 75 67  anvas-draw-debug
1260: 0a 09 28 6d 6f 64 75 6c 65 20 63 61 6e 76 61 73  ..(module canvas
1270: 2d 64 72 61 77 2d 64 65 62 75 67 0a 09 09 28 63  -draw-debug...(c
1280: 6f 6e 74 65 78 74 3a 64 65 62 75 67 29 0a 09 09  ontext:debug)...
1290: 28 69 6d 70 6f 72 74 20 73 63 68 65 6d 65 20 63  (import scheme c
12a0: 68 69 63 6b 65 6e 20 66 6f 72 65 69 67 6e 20 63  hicken foreign c
12b0: 61 6e 76 61 73 2d 64 72 61 77 2d 62 61 73 65 29  anvas-draw-base)
12c0: 0a 09 09 28 69 6e 63 6c 75 64 65 20 22 63 61 6e  ...(include "can
12d0: 76 61 73 2d 64 72 61 77 2d 64 65 62 75 67 2e 73  vas-draw-debug.s
12e0: 63 6d 22 29 29 5d 0a 20 5b 65 6c 73 65 5d 29 0a  cm"))]. [else]).
12f0: 0a 28 6d 6f 64 75 6c 65 20 63 61 6e 76 61 73 2d  .(module canvas-
1300: 64 72 61 77 0a 09 28 29 0a 09 28 69 6d 70 6f 72  draw..()..(impor
1310: 74 20 73 63 68 65 6d 65 20 63 68 69 63 6b 65 6e  t scheme chicken
1320: 29 0a 09 28 72 65 65 78 70 6f 72 74 0a 09 09 28  )..(reexport...(
1330: 65 78 63 65 70 74 20 63 61 6e 76 61 73 2d 64 72  except canvas-dr
1340: 61 77 2d 62 61 73 65 0a 09 09 20 20 20 20 20 20  aw-base...      
1350: 20 20 63 61 6e 76 61 73 2d 3e 70 6f 69 6e 74 65    canvas->pointe
1360: 72 20 70 6f 69 6e 74 65 72 2d 3e 63 61 6e 76 61  r pointer->canva
1370: 73 0a 09 09 20 20 20 20 20 20 20 20 63 6f 6e 74  s...        cont
1380: 65 78 74 2d 3e 70 6f 69 6e 74 65 72 20 70 6f 69  ext->pointer poi
1390: 6e 74 65 72 2d 3e 63 6f 6e 74 65 78 74 0a 09 09  nter->context...
13a0: 20 20 20 20 20 20 20 20 73 74 61 74 65 2d 3e 70          state->p
13b0: 6f 69 6e 74 65 72 20 70 6f 69 6e 74 65 72 2d 3e  ointer pointer->
13c0: 73 74 61 74 65 29 0a 09 09 63 61 6e 76 61 73 2d  state)...canvas-
13d0: 64 72 61 77 2d 70 72 69 6d 69 74 69 76 65 73 0a  draw-primitives.
13e0: 09 09 63 61 6e 76 61 73 2d 64 72 61 77 2d 70 6c  ..canvas-draw-pl
13f0: 61 79 29 29 0a                                   ay)).