summaryrefslogtreecommitdiff
path: root/doc/figs
diff options
context:
space:
mode:
Diffstat (limited to 'doc/figs')
-rw-r--r--doc/figs/area.eps126
-rw-r--r--doc/figs/area.fig36
-rw-r--r--doc/figs/flow.eps161
-rw-r--r--doc/figs/flow.fig40
-rw-r--r--doc/figs/hierarchy.eps209
-rw-r--r--doc/figs/hierarchy.fig79
-rw-r--r--doc/figs/image-data.eps178
-rw-r--r--doc/figs/image-data.fig63
-rw-r--r--doc/figs/xfer.eps117
-rw-r--r--doc/figs/xfer.fig32
10 files changed, 1041 insertions, 0 deletions
diff --git a/doc/figs/area.eps b/doc/figs/area.eps
new file mode 100644
index 0000000..3613fa3
--- /dev/null
+++ b/doc/figs/area.eps
@@ -0,0 +1,126 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: area.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 1
+%%CreationDate: Wed Dec 4 19:19:37 1996
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 221 205
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {} def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-59.0 231.0 translate
+1 -1 scale
+
+/clp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+% Polyline
+n 1725 1725 m 3375 1725 l 3375 2775 l 1725 2775 l clp gs col7 0.90 shd ef gr
+/Helvetica findfont 180.00 scalefont setfont
+2550 2302 m
+gs 1 -1 sc (scan area) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+7.500 slw
+% Polyline
+n 1200 525 m 1200 3825 l gs col7 0.80 shd ef gr gs col-1 s gr
+n 1230.00 3681.00 m 1200.00 3825.00 l 1170.00 3681.00 l 1200.50 3705.50 l 1230.00 3681.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+% Polyline
+n 1050 675 m 4650 675 l gs col7 0.80 shd ef gr gs col-1 s gr
+n 4506.00 645.00 m 4650.00 675.00 l 4506.00 705.00 l 4530.50 675.50 l 4506.00 645.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+3375 3150 m
+gs 1 -1 sc (bottom-right) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+1725 1500 m
+gs 1 -1 sc (top-left) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+2700 1050 m
+gs 1 -1 sc (scan surface) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+1050 3600 m
+gs 1 -1 sc (y) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+4425 525 m
+gs 1 -1 sc (x) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+1080 585 m
+gs 1 -1 sc (0) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+% Polyline
+n 1725 1650 m 1725 1800 l gs col-1 s gr
+% Polyline
+n 1650 1725 m 1800 1725 l gs col-1 s gr
+% Polyline
+n 3375 2700 m 3375 2850 l gs col-1 s gr
+% Polyline
+n 3300 2775 m 3450 2775 l gs col-1 s gr
+15.000 slw
+% Polyline
+n 1200 675 m 4275 675 l 4275 3375 l 1200 3375 l clp gs col-1 s gr
+$F2psEnd
+restore
diff --git a/doc/figs/area.fig b/doc/figs/area.fig
new file mode 100644
index 0000000..d0e62e4
--- /dev/null
+++ b/doc/figs/area.fig
@@ -0,0 +1,36 @@
+#FIG 3.1
+Portrait
+Center
+Inches
+1200 2
+6 1650 1650 1800 1800
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 1725 1650 1725 1800
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 1650 1725 1800 1725
+-6
+6 3300 2700 3450 2850
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3375 2700 3375 2850
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3300 2775 3450 2775
+-6
+6 1725 1725 3375 2775
+2 2 0 0 7 7 10 0 18 0.000 0 0 -1 0 0 5
+ 1725 1725 3375 1725 3375 2775 1725 2775 1725 1725
+4 1 -1 10 0 16 12 0.0000 4 105 840 2550 2302 scan area\001
+-6
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 1200 675 4275 675 4275 3375 1200 3375 1200 675
+2 1 0 1 -1 7 10 0 16 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 1200 525 1200 3825
+2 1 0 1 -1 7 10 0 16 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 1050 675 4650 675
+4 1 -1 10 0 16 12 0.0000 4 180 1020 3375 3150 bottom-right\001
+4 1 -1 10 0 16 12 0.0000 4 180 615 1725 1500 top-left\001
+4 1 -1 10 0 16 12 0.0000 4 135 1080 2700 1050 scan surface\001
+4 1 -1 10 0 16 12 0.0000 4 150 105 1050 3600 y\001
+4 1 -1 10 0 16 12 0.0000 4 105 90 4425 525 x\001
+4 1 -1 10 0 16 12 0.0000 4 135 105 1080 585 0\001
diff --git a/doc/figs/flow.eps b/doc/figs/flow.eps
new file mode 100644
index 0000000..55fd7d1
--- /dev/null
+++ b/doc/figs/flow.eps
@@ -0,0 +1,161 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: flow.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 1
+%%CreationDate: Tue Dec 3 22:09:10 1996
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 601 542
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {} def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-161.0 577.0 translate
+1 -1 scale
+
+/clp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+7.500 slw
+% Polyline
+n 2700 600 m 10200 600 l 10200 9600 l 2700 9600 l clp gs col7 0.95 shd ef gr gs col-1 s gr
+% Polyline
+n 3300 2400 m 10200 2400 l 10200 8925 l 3300 8925 l clp gs col7 0.90 shd ef gr gs col-1 s gr
+% Polyline
+n 3900 2925 m 10200 2925 l 10200 4650 l 3900 4650 l clp gs col7 0.85 shd ef gr gs col-1 s gr
+% Polyline
+n 3900 4800 m 10200 4800 l 10200 8250 l 3900 8250 l clp gs col7 0.85 shd ef gr gs col-1 s gr
+% Polyline
+n 10350 3000 m 10425 3075 l 10425 4500 l 10350 4575 l gs col-1 s gr
+% Polyline
+n 10350 4875 m 10425 4950 l 10425 8100 l 10350 8175 l gs col-1 s gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+10575 6600 m
+gs 1 -1 sc (image acquisition) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+10575 3825 m
+gs 1 -1 sc (device setup) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4200 7515 m
+gs 1 -1 sc (- go back to) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5775 7515 m
+gs 1 -1 sc (sane_start\(\)) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+7275 7515 m
+gs 1 -1 sc (if more frames desired) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4200 3300 m
+gs 1 -1 sc (- use:) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+4200 5100 m
+gs 1 -1 sc (- sane_start\(\)) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4500 4500 m
+gs 1 -1 sc (repeatedly to configure device as desired) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5400 4080 m
+gs 1 -1 sc (sane_control_option\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5400 3600 m
+gs 1 -1 sc (sane_get_option_descriptor\(\)) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4200 5700 m
+gs 1 -1 sc (- use:) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4500 6900 m
+gs 1 -1 sc (repeatedly until read returns EOF) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5400 6000 m
+gs 1 -1 sc (sane_get_parameters\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5400 6450 m
+gs 1 -1 sc (sane_read\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+4200 8100 m
+gs 1 -1 sc (- sane_cancel\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+3000 1200 m
+gs 1 -1 sc (- sane_init\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+3000 9300 m
+gs 1 -1 sc (- sane_exit\(\)) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+3600 1800 m
+gs 1 -1 sc (- pick desired device, possibly by using) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+3600 2700 m
+gs 1 -1 sc (- sane_open\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+3600 8700 m
+gs 1 -1 sc (- sane_close\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+4800 2175 m
+gs 1 -1 sc (sane_get_devices\(\)) col-1 show gr
+$F2psEnd
+restore
diff --git a/doc/figs/flow.fig b/doc/figs/flow.fig
new file mode 100644
index 0000000..3abcc0b
--- /dev/null
+++ b/doc/figs/flow.fig
@@ -0,0 +1,40 @@
+#FIG 3.1
+Portrait
+Center
+Inches
+1200 2
+6 4200 7305 9945 7575
+4 0 -1 0 0 17 18 0.0000 4 270 1500 4200 7515 - go back to\001
+4 0 -1 0 0 16 18 0.0000 4 270 1440 5775 7515 sane_start()\001
+4 0 -1 0 0 17 18 0.0000 4 210 2670 7275 7515 if more frames desired\001
+-6
+2 2 0 1 -1 7 10 0 19 0.000 0 0 -1 0 0 5
+ 2700 600 10200 600 10200 9600 2700 9600 2700 600
+2 2 0 1 -1 7 8 0 18 0.000 0 0 -1 0 0 5
+ 3300 2400 10200 2400 10200 8925 3300 8925 3300 2400
+2 2 0 1 -1 7 8 0 17 0.000 0 0 -1 0 0 5
+ 3900 2925 10200 2925 10200 4650 3900 4650 3900 2925
+2 2 0 1 -1 7 8 0 17 0.000 0 0 -1 0 0 5
+ 3900 4800 10200 4800 10200 8250 3900 8250 3900 4800
+2 1 0 1 -1 7 8 0 -1 0.000 0 0 -1 0 0 4
+ 10350 3000 10425 3075 10425 4500 10350 4575
+2 1 0 1 -1 7 8 0 -1 0.000 0 0 -1 0 0 4
+ 10350 4875 10425 4950 10425 8100 10350 8175
+4 0 -1 0 0 17 18 0.0000 4 150 735 4200 3300 - use:\001
+4 0 -1 0 0 16 18 0.0000 4 270 1680 4200 5100 - sane_start()\001
+4 0 -1 0 0 17 18 0.0000 4 270 4950 4500 4500 repeatedly to configure device as desired\001
+4 0 -1 0 0 16 18 0.0000 4 270 2715 5400 4080 sane_control_option()\001
+4 0 -1 0 0 16 18 0.0000 4 270 3660 5400 3600 sane_get_option_descriptor()\001
+4 0 -1 0 0 17 18 0.0000 4 150 735 4200 5700 - use:\001
+4 0 -1 0 0 17 18 0.0000 4 270 4080 4500 6900 repeatedly until read returns EOF\001
+4 0 -1 0 0 16 18 0.0000 4 270 2805 5400 6000 sane_get_parameters()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1440 5400 6450 sane_read()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1935 4200 8100 - sane_cancel()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1500 3000 1200 - sane_init()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1590 3000 9300 - sane_exit()\001
+4 0 -1 0 0 17 18 0.0000 4 270 4845 3600 1800 - pick desired device, possibly by using\001
+4 0 -1 0 0 16 18 0.0000 4 270 1770 3600 2700 - sane_open()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1800 3600 8700 - sane_close()\001
+4 0 -1 0 0 16 18 0.0000 4 270 2415 4800 2175 sane_get_devices()\001
+4 0 -1 8 0 17 18 0.0000 4 270 2070 10575 6600 image acquisition\001
+4 0 -1 8 0 17 18 0.0000 4 270 1500 10575 3825 device setup\001
diff --git a/doc/figs/hierarchy.eps b/doc/figs/hierarchy.eps
new file mode 100644
index 0000000..978b3ab
--- /dev/null
+++ b/doc/figs/hierarchy.eps
@@ -0,0 +1,209 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: hierarchy.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 2
+%%CreationDate: Thu Jan 30 22:02:12 1997
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%Magnification: 1.00
+%%Orientation: Landscape
+%%BoundingBox: 0 0 355 722
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-17.0 -17.0 translate
+ 90 rotate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+n 0 612 m 0 0 l 792 0 l 792 612 l cp clip
+ 0.06000 0.06000 sc
+% Polyline
+n 5700 3825 m 300 3825 l 300 300 l 5700 300 l cp gs 0.90 setgray ef gr
+% Polyline
+n 12300 5550 m 7200 5550 l 7200 300 l 12300 300 l cp gs 0.90 setgray ef gr
+15.000 slw
+% Polyline
+n 10650 4785 m 12150 4785 l 12150 5385 l 10650 5385 l cp gs col-1 s gr
+/Helvetica ff 270.00 scf sf
+11399 5182 m
+gs 1 -1 sc (qcam) dup sw pop 2 div neg 0 rm col-1 sh gr
+% Polyline
+n 7350 4785 m 8850 4785 l 8850 5385 l 7350 5385 l cp gs col-1 s gr
+/Helvetica ff 270.00 scf sf
+8099 5182 m
+gs 1 -1 sc (hp) dup sw pop 2 div neg 0 rm col-1 sh gr
+% Polyline
+n 2250 1185 m 3750 1185 l 3750 1785 l 2250 1785 l cp gs col-1 s gr
+% Polyline
+n 450 2985 m 1950 2985 l 1950 3585 l 450 3585 l cp gs col-1 s gr
+% Polyline
+n 2250 2985 m 3750 2985 l 3750 3585 l 2250 3585 l cp gs col-1 s gr
+% Polyline
+n 4050 2985 m 5550 2985 l 5550 3585 l 4050 3585 l cp gs col-1 s gr
+% Polyline
+n 8850 1185 m 10350 1185 l 10350 1785 l 8850 1785 l cp gs col-1 s gr
+7.500 slw
+% Polyline
+n 2700 1800 m 1200 3000 l gs col-1 s gr
+% Polyline
+n 3000 1800 m 3000 3000 l gs col-1 s gr
+% Polyline
+n 3300 1800 m 4800 3000 l gs col-1 s gr
+% Polyline
+n 9600 1800 m 9600 2100 l gs col-1 s gr
+% Polyline
+n 9450 2700 m 8100 4800 l gs col-1 s gr
+% Polyline
+n 11400 4200 m 11400 4800 l gs col-1 s gr
+% Polyline
+n 1200 3600 m 1200 4200 l gs col-1 s gr
+% Polyline
+n 3000 3600 m 3000 4125 l gs col-1 s gr
+% Polyline
+n 7875 5400 m 7350 5850 l gs col-1 s gr
+% Polyline
+n 8250 5400 m 8775 5850 l gs col-1 s gr
+% Polyline
+n 11475 5400 m 11475 5850 l gs col-1 s gr
+15.000 slw
+% Polyline
+n 8850 2100 m 10350 2100 l 10350 2700 l 8850 2700 l cp gs col-1 s gr
+% Polyline
+n 10650 3600 m 12150 3600 l 12150 4200 l 10650 4200 l cp gs col-1 s gr
+7.500 slw
+% Polyline
+n 9750 2700 m 11400 3600 l gs col-1 s gr
+% Interp Spline
+gs n 4800 3600 m
+ 4390.2 4024.4 4259.0 4249.4 4275 4500 curveto
+ 4300.2 4894.5 4554.6 5418.2 5025 5475 curveto
+ 5575.9 5541.5 5962.1 4914.2 6150 4575 curveto
+ 6573.5 3810.6 5758.1 2145.7 6525 1350 curveto
+ 7224.0 624.7 8573.7 446.9 9450 900 curveto
+ 9524.5 938.5 9562.0 1013.5 9600 1200 curveto
+ gs col-1 s gr
+ gr
+
+/Helvetica ff 270.00 scf sf
+1199 3382 m
+gs 1 -1 sc (pnm) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+2999 3382 m
+gs 1 -1 sc (mustek) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+1200 4425 m
+gs 1 -1 sc (pnm files) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+3000 4380 m
+gs 1 -1 sc (scanner) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+7350 6165 m
+gs 1 -1 sc (scanner 1) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+8925 6165 m
+gs 1 -1 sc (scanner 2) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+11475 6135 m
+gs 1 -1 sc (video camera) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+3000 600 m
+gs 1 -1 sc (machine A) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+9600 630 m
+gs 1 -1 sc (machine B) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+4725 5850 m
+gs 1 -1 sc (network connection) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+2999 1582 m
+gs 1 -1 sc (dll) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+4799 3382 m
+gs 1 -1 sc (net) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+9599 1582 m
+gs 1 -1 sc (saned) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+9599 2482 m
+gs 1 -1 sc (dll) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+11399 3982 m
+gs 1 -1 sc (autolum) dup sw pop 2 div neg 0 rm col-1 sh gr
+$F2psEnd
+rs
diff --git a/doc/figs/hierarchy.fig b/doc/figs/hierarchy.fig
new file mode 100644
index 0000000..5545b8d
--- /dev/null
+++ b/doc/figs/hierarchy.fig
@@ -0,0 +1,79 @@
+#FIG 3.1
+Landscape
+Center
+Inches
+1200 2
+6 10500 4500 12300 5400
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 10650 4785 12150 4785 12150 5385 10650 5385 10650 4785
+4 1 -1 0 0 16 18 0.0000 4 210 660 11399 5182 qcam\001
+-6
+6 7200 4500 9000 5400
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7350 4785 8850 4785 8850 5385 7350 5385 7350 4785
+4 1 -1 0 0 16 18 0.0000 4 270 315 8099 5182 hp\001
+-6
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2250 1185 3750 1185 3750 1785 2250 1785 2250 1185
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 450 2985 1950 2985 1950 3585 450 3585 450 2985
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2250 2985 3750 2985 3750 3585 2250 3585 2250 2985
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 4050 2985 5550 2985 5550 3585 4050 3585 4050 2985
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 8850 1185 10350 1185 10350 1785 8850 1785 8850 1185
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 1800 1200 3000
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3000 1800 3000 3000
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3300 1800 4800 3000
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 9600 1800 9600 2100
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 9450 2700 8100 4800
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 11400 4200 11400 4800
+2 2 0 0 0 0 10 0 2 0.000 0 0 -1 0 0 5
+ 5700 3825 300 3825 300 300 5700 300 5700 3825
+2 2 0 0 0 0 10 0 2 0.000 0 0 -1 0 0 5
+ 12300 5550 7200 5550 7200 300 12300 300 12300 5550
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 1200 3600 1200 4200
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3000 3600 3000 4125
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 7875 5400 7350 5850
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 8250 5400 8775 5850
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 11475 5400 11475 5850
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 8850 2100 10350 2100 10350 2700 8850 2700 8850 2100
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 10650 3600 12150 3600 12150 4200 10650 4200 10650 3600
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 9750 2700 11400 3600
+3 2 0 1 -1 7 0 0 -1 0.000 0 0 0 7
+ 4800 3600 4275 4500 5025 5475 6150 4575 6525 1350 9450 900
+ 9600 1200
+ 0.00 0.00 4390.23 4024.37 4258.98 4249.38 4300.21 4894.51
+ 4554.60 5418.20 5575.94 5541.53 5962.09 4914.18 6573.46 3810.63
+ 5758.15 2145.68 7223.99 624.74 8573.68 446.85 9524.49 938.52
+ 9561.99 1013.52 0.00 0.00
+4 1 -1 0 0 16 18 0.0000 4 210 525 1199 3382 pnm\001
+4 1 -1 0 0 16 18 0.0000 4 210 870 2999 3382 mustek\001
+4 1 -1 0 0 17 14 0.0000 4 210 855 1200 4425 pnm files\001
+4 1 -1 0 0 17 14 0.0000 4 120 765 3000 4380 scanner\001
+4 1 -1 0 0 17 14 0.0000 4 150 945 7350 6165 scanner 1\001
+4 1 -1 0 0 17 14 0.0000 4 150 945 8925 6165 scanner 2\001
+4 1 -1 0 0 17 14 0.0000 4 165 1290 11475 6135 video camera\001
+4 1 -1 0 0 17 14 0.0000 4 165 1035 3000 600 machine A\001
+4 1 -1 0 0 17 14 0.0000 4 165 1020 9600 630 machine B\001
+4 1 -1 0 0 17 14 0.0000 4 165 1860 4725 5850 network connection\001
+4 1 -1 0 0 16 18 0.0000 4 210 285 2999 1582 dll\001
+4 1 -1 0 0 16 18 0.0000 4 195 390 4799 3382 net\001
+4 1 -1 0 0 16 18 0.0000 4 210 735 9599 1582 saned\001
+4 1 -1 0 0 16 18 0.0000 4 210 285 9599 2482 dll\001
+4 1 -1 0 0 16 18 0.0000 4 210 960 11399 3982 autolum\001
diff --git a/doc/figs/image-data.eps b/doc/figs/image-data.eps
new file mode 100644
index 0000000..13e6b8a
--- /dev/null
+++ b/doc/figs/image-data.eps
@@ -0,0 +1,178 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: image-data.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 1
+%%CreationDate: Fri Nov 22 08:53:36 1996
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 521 93
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {} def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-88.0 120.0 translate
+1 -1 scale
+
+/clp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+7.500 slw
+% Polyline
+n 1800 1200 m 3150 1200 l 3150 1350 l 1800 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+1875 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+% Polyline
+n 3150 1200 m 4500 1200 l 4500 1350 l 3150 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+3225 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+% Polyline
+n 4500 1200 m 5850 1200 l 5850 1350 l 4500 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+4575 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+15.000 slw
+% Polyline
+n 1800 1200 m 5850 1200 l 5850 1350 l 1800 1350 l clp gs col-1 s gr
+7.500 slw
+% Polyline
+n 1800 900 m 1950 825 l 3750 825 l 3825 750 l 3900 825 l 5700 825 l
+ 5850 900 l gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+2475 1575 m
+gs 1 -1 sc (r) col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3825 1575 m
+gs 1 -1 sc (g) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+5175 1575 m
+gs 1 -1 sc (b) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3825 600 m
+gs 1 -1 sc (pixel 0) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+% Polyline
+n 5850 1200 m 7200 1200 l 7200 1350 l 5850 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+5925 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+% Polyline
+n 7200 1200 m 8550 1200 l 8550 1350 l 7200 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+7275 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+% Polyline
+n 8550 1200 m 9900 1200 l 9900 1350 l 8550 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+8625 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+15.000 slw
+% Polyline
+n 5850 1200 m 9900 1200 l 9900 1350 l 5850 1350 l clp gs col-1 s gr
+7.500 slw
+% Polyline
+n 5850 900 m 6000 825 l 7800 825 l 7875 750 l 7950 825 l 9750 825 l
+ 9900 900 l gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+6525 1575 m
+gs 1 -1 sc (r) col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+7875 1575 m
+gs 1 -1 sc (g) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+9225 1575 m
+gs 1 -1 sc (b) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+7875 600 m
+gs 1 -1 sc (pixel 1) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+9225 1950 m
+gs 1 -1 sc (byte 5) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+7875 1950 m
+gs 1 -1 sc (byte 4) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+6525 1950 m
+gs 1 -1 sc (byte 3) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+5175 1950 m
+gs 1 -1 sc (byte 2) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3825 1950 m
+gs 1 -1 sc (byte1) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+2475 1950 m
+gs 1 -1 sc (byte0) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+10050 1275 m
+gs 1 -1 sc (....) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+1725 1125 m
+gs 1 -1 sc (bit:) dup stringwidth pop neg 0 rmoveto col-1 show gr
+$F2psEnd
+restore
diff --git a/doc/figs/image-data.fig b/doc/figs/image-data.fig
new file mode 100644
index 0000000..d52a90e
--- /dev/null
+++ b/doc/figs/image-data.fig
@@ -0,0 +1,63 @@
+#FIG 3.1
+Portrait
+Center
+Inches
+1200 2
+6 1725 450 5925 1650
+6 1800 975 3150 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 1800 1200 3150 1200 3150 1350 1800 1350 1800 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 1875 1125 7 6 5 4 3 2 1 0\001
+-6
+6 3150 975 4500 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 3150 1200 4500 1200 4500 1350 3150 1350 3150 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 3225 1125 7 6 5 4 3 2 1 0\001
+-6
+6 4500 975 5850 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 4500 1200 5850 1200 5850 1350 4500 1350 4500 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 4575 1125 7 6 5 4 3 2 1 0\001
+-6
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 1800 1200 5850 1200 5850 1350 1800 1350 1800 1200
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 7
+ 1800 900 1950 825 3750 825 3825 750 3900 825 5700 825
+ 5850 900
+4 0 -1 0 0 16 12 0.0000 4 105 60 2475 1575 r\001
+4 1 -1 0 0 16 12 0.0000 4 150 105 3825 1575 g\001
+4 1 -1 0 0 16 12 0.0000 4 135 105 5175 1575 b\001
+4 1 -1 0 0 16 12 0.0000 4 180 555 3825 600 pixel 0\001
+-6
+6 5850 975 7200 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 5850 1200 7200 1200 7200 1350 5850 1350 5850 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 5925 1125 7 6 5 4 3 2 1 0\001
+-6
+6 7200 975 8550 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7200 1200 8550 1200 8550 1350 7200 1350 7200 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 7275 1125 7 6 5 4 3 2 1 0\001
+-6
+6 8550 975 9900 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 8550 1200 9900 1200 9900 1350 8550 1350 8550 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 8625 1125 7 6 5 4 3 2 1 0\001
+-6
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 5850 1200 9900 1200 9900 1350 5850 1350 5850 1200
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 7
+ 5850 900 6000 825 7800 825 7875 750 7950 825 9750 825
+ 9900 900
+4 0 -1 0 0 16 12 0.0000 4 105 60 6525 1575 r\001
+4 1 -1 0 0 16 12 0.0000 4 150 105 7875 1575 g\001
+4 1 -1 0 0 16 12 0.0000 4 135 105 9225 1575 b\001
+4 1 -1 0 0 16 12 0.0000 4 180 555 7875 600 pixel 1\001
+4 1 -1 0 0 16 12 0.0000 4 180 525 9225 1950 byte 5\001
+4 1 -1 0 0 16 12 0.0000 4 180 525 7875 1950 byte 4\001
+4 1 -1 0 0 16 12 0.0000 4 180 525 6525 1950 byte 3\001
+4 1 -1 0 0 16 12 0.0000 4 180 525 5175 1950 byte 2\001
+4 1 -1 0 0 16 12 0.0000 4 180 465 3825 1950 byte1\001
+4 1 -1 0 0 16 12 0.0000 4 180 465 2475 1950 byte0\001
+4 1 -1 0 0 16 12 0.0000 4 15 180 10050 1275 ....\001
+4 2 -1 0 0 16 12 0.0000 4 135 240 1725 1125 bit:\001
diff --git a/doc/figs/xfer.eps b/doc/figs/xfer.eps
new file mode 100644
index 0000000..04abf91
--- /dev/null
+++ b/doc/figs/xfer.eps
@@ -0,0 +1,117 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: xfer.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 1
+%%CreationDate: Fri Nov 22 08:53:30 1996
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 362 182
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {} def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-134.0 370.0 translate
+1 -1 scale
+
+/clp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+15.000 slw
+% Polyline
+n 2400 3300 m 8100 3300 l gs col-1 s gr
+n 7812.00 3240.00 m 8100.00 3300.00 l 7812.00 3360.00 l 7860.50 3300.50 l 7812.00 3240.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+7.500 slw
+% Polyline
+n 8100 3375 m 2400 3675 l gs col-1 s gr
+15.000 slw
+n 2690.76 3719.78 m 2400.00 3675.00 l 2684.45 3599.95 l 2640.17 3662.89 l 2690.76 3719.78 l clp gs 0.00 setgray ef gr gs col-1 s gr
+% Polyline
+n 2400 3750 m 8100 3750 l gs col-1 s gr
+n 7812.00 3690.00 m 8100.00 3750.00 l 7812.00 3810.00 l 7860.50 3750.50 l 7812.00 3690.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+7.500 slw
+% Polyline
+n 8100 3825 m 2400 4125 l gs col-1 s gr
+15.000 slw
+n 2690.76 4169.78 m 2400.00 4125.00 l 2684.45 4049.95 l 2640.17 4112.89 l 2690.76 4169.78 l clp gs 0.00 setgray ef gr gs col-1 s gr
+7.500 slw
+% Polyline
+n 2250 3150 m 8250 3150 l 8250 6150 l 2250 6150 l clp gs col-1 s gr
+15.000 slw
+% Polyline
+n 2400 4200 m 8100 4200 l gs col-1 s gr
+n 7812.00 4140.00 m 8100.00 4200.00 l 7812.00 4260.00 l 7860.50 4200.50 l 7812.00 4140.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+7.500 slw
+% Polyline
+n 8100 4275 m 2400 4575 l gs col-1 s gr
+15.000 slw
+n 2690.76 4619.78 m 2400.00 4575.00 l 2684.45 4499.95 l 2640.17 4562.89 l 2690.76 4619.78 l clp gs 0.00 setgray ef gr gs col-1 s gr
+% Polyline
+n 2400 4650 m 8100 4650 l gs col-1 s gr
+n 7812.00 4590.00 m 8100.00 4650.00 l 7812.00 4710.00 l 7860.50 4650.50 l 7812.00 4590.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+$F2psEnd
+restore
diff --git a/doc/figs/xfer.fig b/doc/figs/xfer.fig
new file mode 100644
index 0000000..c4d8921
--- /dev/null
+++ b/doc/figs/xfer.fig
@@ -0,0 +1,32 @@
+#FIG 3.1
+Portrait
+Center
+Inches
+1200 2
+6 2325 3150 8175 3750
+2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 2400 3300 8100 3300
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 8100 3375 2400 3675
+-6
+6 2325 3600 8175 4200
+2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 2400 3750 8100 3750
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 8100 3825 2400 4125
+-6
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2250 3150 8250 3150 8250 6150 2250 6150 2250 3150
+2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 2400 4200 8100 4200
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 8100 4275 2400 4575
+2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 2400 4650 8100 4650