kopia lustrzana https://gitlab.com/sane-project/standard
				
				
				
			Initial revision
						commit
						64b58898ed
					
				|  | @ -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 | ||||||
|  | @ -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 | ||||||
|  | @ -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 | ||||||
|  | @ -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 | ||||||
|  | @ -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 | ||||||
|  | @ -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 | ||||||
|  | @ -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 | ||||||
|  | @ -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 | ||||||
|  | @ -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 | ||||||
|  | @ -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 | ||||||
|  | @ -0,0 +1,443 @@ | ||||||
|  | \chapter{Network Protocol}\label{chap:net} | ||||||
|  | 
 | ||||||
|  | The SANE interface has been designed to facilitate network access to | ||||||
|  | image acquisition devices.  In particular, most SANE implementations | ||||||
|  | are expected to support a network backend (net client) and a | ||||||
|  | corresponding network daemon (net server) that allows accessing image | ||||||
|  | acquisition devices through a network connection.  Network access is | ||||||
|  | useful in several situations: | ||||||
|  | \begin{itemize} | ||||||
|  | 
 | ||||||
|  | \item To provide controlled access to resources that are inaccessible | ||||||
|  |   to a regular user.  For example, a user may want to access a device | ||||||
|  |   on a host where she has no account on.  With the network protocol, | ||||||
|  |   it is possible to allow certain users to access scanners without | ||||||
|  |   giving them full access to the system. | ||||||
|  | 
 | ||||||
|  |   Controlling access through the network daemon can be useful even in | ||||||
|  |   the local case: for example, certain backends may require root | ||||||
|  |   privileges to access a device.  Rather than installing each frontend | ||||||
|  |   as setuid-root, a system administrator could instead install the | ||||||
|  |   SANE network daemon as setuid-root.  This enables regular users to | ||||||
|  |   access the privileged device through the SANE daemon (which, | ||||||
|  |   presumably, supports a more fine-grained access control mechanism | ||||||
|  |   than the simple setuid approach).  This has the added benefit that | ||||||
|  |   the system administrator only needs to trust the SANE daemon, not | ||||||
|  |   each and every frontend that may need access to the privileged | ||||||
|  |   device. | ||||||
|  | 
 | ||||||
|  | \item Network access provides a sense of ubiquity of the available | ||||||
|  |   image acquisition devices.  For example, in a local area network | ||||||
|  |   environment, this allows a user to log onto any machine and have | ||||||
|  |   convenient access to any resource available to any machine on the | ||||||
|  |   network (subject to permission constraints). | ||||||
|  | 
 | ||||||
|  | \item For devices that do not require physical access when used (e.g., | ||||||
|  |   video cameras), network access allows a user to control and use | ||||||
|  |   these devices without being in physical proximity.  Indeed, if such | ||||||
|  |   devices are connected to the Internet, access from any place in the | ||||||
|  |   world is possible. | ||||||
|  | 
 | ||||||
|  | \end{itemize} | ||||||
|  | 
 | ||||||
|  | The network protocol described in this chapter has been design with | ||||||
|  | the following goals in mind: | ||||||
|  | \begin{enumerate} | ||||||
|  | 
 | ||||||
|  | \item Image transmission should be efficient (have low encoding | ||||||
|  |   overhead). | ||||||
|  | 
 | ||||||
|  | \item Accessing option descriptors on the client side must be | ||||||
|  |   efficient (since this is a very common operation). | ||||||
|  | 
 | ||||||
|  | \item Other operations, such as setting or inquiring the value of an | ||||||
|  |   option are less performance critical since they typically require | ||||||
|  |   explicit user action. | ||||||
|  | 
 | ||||||
|  | \item The network protocol should be simple and easy to implement on | ||||||
|  |   any host architecture and any programming language. | ||||||
|  | 
 | ||||||
|  | \end{enumerate} | ||||||
|  | The SANE protocol can be run across any transport protocol that | ||||||
|  | provides reliable data delivery.  While SANE does not specify a | ||||||
|  | specific transport protocol, it is expected that TCP/IP will be among | ||||||
|  | the most commonly used protocols. | ||||||
|  | 
 | ||||||
|  | \section{Data Type Encoding} | ||||||
|  | 
 | ||||||
|  | \subsection{Primitive Data Types} | ||||||
|  | 
 | ||||||
|  | The four primitive types of the SANE standard are encoded as follows: | ||||||
|  | \begin{description} | ||||||
|  | 
 | ||||||
|  | \item[\code{\defn{SANE\_Byte}}:] A byte is encoded as an 8 bit value. | ||||||
|  |   Since the transport protocol is assumed to be byte-orientd, the bit | ||||||
|  |   order is irrelevant. | ||||||
|  | 
 | ||||||
|  | \item[\code{\defn{SANE\_Word}}:] A word is encoded as 4 bytes (32 | ||||||
|  |   bits).  The bytes are ordered from most-significant to | ||||||
|  |   least-significant byte (big-endian byte-order). | ||||||
|  | 
 | ||||||
|  | \item[\code{\defn{SANE\_Char}}:] A character is currently encoded as an 8-bit | ||||||
|  |   ISO LATIN-1 value.  An extension to support wider character sets (16 or 32 | ||||||
|  |   bits) is planned for the future, but not supported at this point. | ||||||
|  | 
 | ||||||
|  | \item[\code{\defn{SANE\_String}}:] A string pointer is encoded as a | ||||||
|  |   \code{SANE\_Char} array.  The trailing NUL byte is considered part | ||||||
|  |   of the array and a \code{NULL} pointer is encoded as a zero-length | ||||||
|  |   array. | ||||||
|  |    | ||||||
|  | \item[\code{\defn{SANE\_Handle}}:] A handle is encoded like a word. | ||||||
|  |   The network backend needs to take care of converting these integer | ||||||
|  |   values to the opaque pointer values that are presented to the user | ||||||
|  |   of the network backend.  Similarly, the SANE daemon needs to take | ||||||
|  |   care of converting the opaque pointer values it receives from its | ||||||
|  |   backends into 32-bit integers suitable for use for network encoding. | ||||||
|  | 
 | ||||||
|  | \item[{\em\defn{enumeration types}}:] Enumeration types are encoded | ||||||
|  |   like words. | ||||||
|  | 
 | ||||||
|  | \end{description} | ||||||
|  | 
 | ||||||
|  | \subsection{Type Constructors} | ||||||
|  | 
 | ||||||
|  | Closely following the type constructors of the C language, the SANE network | ||||||
|  | protocol supports the following four constructors: | ||||||
|  | \begin{description} | ||||||
|  | 
 | ||||||
|  | \item[{\em\defn{pointer}}:] A pointer is encoded by a word that indicates | ||||||
|  |   whether the pointer is a NULL-pointer which is then followed by the | ||||||
|  |   value that the pointer points to (in the case of a non-NULL pointer; | ||||||
|  |   in the case of a NULL pointer, no bytes are encoded for the pointer | ||||||
|  |   value). | ||||||
|  | 
 | ||||||
|  | \item[{\em\defn{array}}:] An array is encoded by a word that indicates | ||||||
|  |   the length of the array followed by the values of the elements in | ||||||
|  |   the array.  The length may be zero in which case no bytes are | ||||||
|  |   encoded for the element values. | ||||||
|  | 
 | ||||||
|  | \item[{\em\defn{structure}}:] A structure is encoded by simply encoding the | ||||||
|  |   structure members in the order in which they appear in the | ||||||
|  |   corresponding C type declaration. | ||||||
|  | 
 | ||||||
|  | \item[{\em\defn{union}}:] A union must always be accompanied by a tag | ||||||
|  |   value that indicates which of the union members is the currently the | ||||||
|  |   active one.  For this reason, the union itself is encoded simply by | ||||||
|  |   encoding the value of the currently active member. | ||||||
|  | 
 | ||||||
|  | \end{description} | ||||||
|  | 
 | ||||||
|  | Note that for type constructors, the pointer, element, or member | ||||||
|  | values themselves may have a constructed type.  Thus, the above rules | ||||||
|  | should be applied recursively until a sequence of primitive types has | ||||||
|  | been found. | ||||||
|  | 
 | ||||||
|  | Also SANE had no need for encoding of circular structures.  This | ||||||
|  | greatly simplifies the network protocol. | ||||||
|  | 
 | ||||||
|  | \section{Remote Procedure Call Requests} | ||||||
|  | 
 | ||||||
|  | The SANE network protocol is a client/server-style remote procedure | ||||||
|  | call (RPC) protocol.  This means that all activity is initiated by the | ||||||
|  | client side (the network backend)---a server is restricted to | ||||||
|  | answering request by the client. | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_INIT}}} | ||||||
|  | 
 | ||||||
|  | This RPC establishes a connection to a particular SANE network daemon. | ||||||
|  | It must be the first call in a SANE network session.  The parameter | ||||||
|  | and reply arguments for this call are shown in the table below: | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{SANE\_Word version\_code} & \code{SANE\_Word status} \\ | ||||||
|  |   \code{SANE\_String user\_name}   & \code{SANE\_Word version\_code} \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | The \code{version\_code} argument in the request is the SANE | ||||||
|  | version-code of the network backend that is contacting the network | ||||||
|  | daemon (see Section~\ref{sec:saneversioncode}).  The | ||||||
|  | ``build-revision'' in the version code is used to hold the network | ||||||
|  | protocol version.  The SANE network daemon receiving such a request | ||||||
|  | must make sure that the network protocol version corresponds to a | ||||||
|  | supported version since otherwise the encoding of the network stream | ||||||
|  | may be incompatible (even though the SANE interface itself may be | ||||||
|  | compatible).  The \code{user\_name} argument is the name of the user | ||||||
|  | on whose behalf this call is being performed.  If the network backend | ||||||
|  | cannot determine a user-name, it passes a \code{NULL} pointer for this | ||||||
|  | argument.  No trust should be placed in the authenticity of this | ||||||
|  | user-name.  The intent of this string is to provide more convenience | ||||||
|  | to the user.  E.g., it could be used as the default-user name in | ||||||
|  | subsequent authentication calls. | ||||||
|  | 
 | ||||||
|  | In the reply, \code{status} indicates the completion status.  If the | ||||||
|  | value is anything other than \code{SANE\_STA\-TUS\_SUCCESS}, the | ||||||
|  | remainder of the reply has undefined values.\footnote{The sane network | ||||||
|  |   daemon should be careful not to leak information in the undefined | ||||||
|  |   portion of the reply.} The \code{version\_code} argument returns the | ||||||
|  | SANE version-code that the network daemon supports.  See the comments | ||||||
|  | in the previous paragraph on the meaning of the build-revision in this | ||||||
|  | version code. | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_GET\_DEVICES}}} | ||||||
|  | 
 | ||||||
|  | This RPC is used to obtain the list of devices accessible by the SANE | ||||||
|  | daemon. | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{void} & \code{SANE\_Word status} \\ | ||||||
|  |               & \code{SANE\_Device ***device\_list} \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | There are no arguments in the request for this call. | ||||||
|  | 
 | ||||||
|  | In the reply, \code{status} indicates the completion status.  If the | ||||||
|  | value is anything other than \code{SANE\_STA\-TUS\_SUCCESS}, the | ||||||
|  | remainder of the reply has undefined values.  The \code{device\_list} | ||||||
|  | argument is a pointer to a \code{NULL}-terminated array of | ||||||
|  | \code{SANE\_Device} pointers. | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_OPEN}}} | ||||||
|  | 
 | ||||||
|  | This RPC is used to open a connection to a remote SANE device. | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{SANE\_String device\_name} & \code{SANE\_Word status} \\ | ||||||
|  |                                    & \code{SANE\_Word handle} \\ | ||||||
|  |                                    & \code{SANE\_String resource} \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | The \code{device\_name} argument specifies the name of the device to | ||||||
|  | open. | ||||||
|  | 
 | ||||||
|  | In the reply, \code{status} indicates the completion status.  If the | ||||||
|  | value is anything other than \code{SANE\_STA\-TUS\_SUCCESS}, the | ||||||
|  | remainder of the reply has undefined values.  The \code{handle} | ||||||
|  | argument specifies the device handle that uniquely identifies the | ||||||
|  | connection.  The \code{resource} argument is used to request | ||||||
|  | authentication.  If it has a non-\code{NULL} value, the network | ||||||
|  | backend should authenticate the specified resource and then retry this | ||||||
|  | operation (see Section~\ref{sec:authorization} for details on how to | ||||||
|  | authorize a resource). | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_CLOSE}}} | ||||||
|  | 
 | ||||||
|  | This RPC is used to close a connection to a remote SANE device. | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{SANE\_Word handle} & \code{SANE\_Word dummy} \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | The \code{handle} argument identifies the connection that should be | ||||||
|  | closed. | ||||||
|  | 
 | ||||||
|  | In the reply, the \code{dummy} argument is unused.  Its purpose is to | ||||||
|  | ensure proper synchronization (without it, a net client would not be | ||||||
|  | able to determine when the RPC has completed). | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_GET\_OPTION\_DESCRIPTORS}}} | ||||||
|  | 
 | ||||||
|  | This RPC is used to obtain {\em all\/} the option descriptors for a | ||||||
|  | remote SANE device. | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{SANE\_Word handle} & \code{Option\_Descriptor\_Array odesc} \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | The \code{handle} argument identifies the remote device whose option | ||||||
|  | descriptors should be obtained. | ||||||
|  | 
 | ||||||
|  | In the reply, the \code{odesc} argument is used to return the array of | ||||||
|  | option descriptors.  The option descriptor array has the following | ||||||
|  | structure: | ||||||
|  | \begin{quote}\index{Option\_Descriptor\_Array} | ||||||
|  | \begin{verbatim} | ||||||
|  | struct Option_Descriptor_Array | ||||||
|  |   { | ||||||
|  |     SANE_Word num_options; | ||||||
|  |     SANE_Option_Descriptor **desc; | ||||||
|  |   }; | ||||||
|  | \end{verbatim} | ||||||
|  | \end{quote} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_CONTROL\_OPTION}}} | ||||||
|  | 
 | ||||||
|  | This RPC is used to control (inquire, set, or set to automatic) a | ||||||
|  | specific option of a remote SANE device. | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{SANE\_Word handle}      & \code{SANE\_Status status} \\ | ||||||
|  |   \code{SANE\_Word option}      & \code{SANE\_Word info} \\ | ||||||
|  |   \code{SANE\_Word action}      & \code{SANE\_Word value\_type} \\ | ||||||
|  |   \code{SANE\_Word value\_type} & \code{SANE\_Word value\_size} \\ | ||||||
|  |   \code{SANE\_Word value\_size} & \code{void *value} \\ | ||||||
|  |   \code{void *value}            & \code{SANE\_String *resource} \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | The \code{handle} argument identifies the remote device whose option | ||||||
|  | should be controlled.  Argument \code{option} is the number (index) of | ||||||
|  | the option that should be controlled.  Argument \code{action} | ||||||
|  | specifies what action should be taken (get, set, or set automatic). | ||||||
|  | Argument \code{value\_type} specifies the type of the option value | ||||||
|  | (must be one of \code{SANE\_TYPE\_BOOL}, \code{SANE\_TYPE\_INT}, | ||||||
|  | \code{SANE\_TYPE\_FIXED}, \code{SANE\_TYPE\_STR\-ING}, | ||||||
|  | \code{SANE\_TYPE\_BUTTON}).  Argument \code{value\_size} specifies | ||||||
|  | the size of the option value in number of bytes (see | ||||||
|  | Section~\ref{sec:valuesize} for the precise meaning of this value). | ||||||
|  | Finally, argument \code{value} is a pointer to the option value.  It | ||||||
|  | must be a writeable area that is at least \code{value\_size} bytes | ||||||
|  | large. (Note that this area must be writable even if the action is to | ||||||
|  | set the option value.  This is because the backend may not be able to | ||||||
|  | set the exact option value, in which case the option value is used to | ||||||
|  | return the next best value that the backend has chosen.) | ||||||
|  | 
 | ||||||
|  | In the reply, argument \code{resource} is set to the name of the | ||||||
|  | resource that must be authorized before this call can be retried.  If | ||||||
|  | this value is non-\code{NULL}, all other arguments have undefined | ||||||
|  | values (see Section~\ref{sec:authorization} for details on how to | ||||||
|  | authorize a resource).  Argument \code{status} indicates the | ||||||
|  | completion status.  If the value is anything other than | ||||||
|  | \code{SANE\_STA\-TUS\_SUCCESS}, the remainder of the reply has undefined | ||||||
|  | values.  The \code{info} argument returns the information on how well | ||||||
|  | the backend was able to satisfy the request.  For details, see the | ||||||
|  | description of the corresponding argument in | ||||||
|  | Section~\ref{sec:control}.  Arguments \code{value\_type} and | ||||||
|  | \code{value\_size} have the same values as the arguments by the same | ||||||
|  | name in corresponding request.  The values are repeated here to ensure | ||||||
|  | that both the request and the reply are self-contained (i.e., they can | ||||||
|  | be encoded and decoded independently).  Argument \code{value} is holds | ||||||
|  | the value of the option that has become effective as a result of this | ||||||
|  | RPC. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_GET\_PARAMETERS}}} | ||||||
|  | 
 | ||||||
|  | This RPC is used to obtain the scan parameters of a remote SANE | ||||||
|  | device. | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{SANE\_Word handle} & \code{SANE\_Status status} \\ | ||||||
|  |                            & \code{SANE\_Parameters params} \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | The \code{handle} argument identifies the connection to the remote | ||||||
|  | device whose scan parameters should be returned. | ||||||
|  | 
 | ||||||
|  | In the reply, \code{status} indicates the completion status.  If the | ||||||
|  | value is anything other than \code{SANE\_STA\-TUS\_SUC\-CESS}, the | ||||||
|  | remainder of the reply has undefined values.  The argument | ||||||
|  | \code{params} is used to return the scan parameters. | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_START}}} | ||||||
|  | 
 | ||||||
|  | This RPC is used to start image acquisition (scanning). | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{SANE\_Word handle} & \code{SANE\_Status status} \\ | ||||||
|  |                            & \code{SANE\_Word port} \\ | ||||||
|  |                            & \code{SANE\_Word byte\_order} \\ | ||||||
|  |                            & \code{SANE\_String resource} \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | The \code{handle} argument identifies the connection to the remote | ||||||
|  | device from which the image should be acquired. | ||||||
|  | 
 | ||||||
|  | In the reply, argument \code{resource} is set to the name of the | ||||||
|  | resource that must be authorized before this call can be retried.  If | ||||||
|  | this value is non-\code{NULL}, all other arguments have undefined | ||||||
|  | values (see Section~\ref{sec:authorization} for details on how to | ||||||
|  | authorize a resource).  Argument, \code{status} indicates the | ||||||
|  | completion status.  If the value is anything other than | ||||||
|  | \code{SANE\_STA\-TUS\_SUCCESS}, the remainder of the reply has | ||||||
|  | undefined values.  The argument \code{port} returns the port number | ||||||
|  | from which the image data will be available.  To read the image data, | ||||||
|  | a network client must connect to the remote host at the indicated port | ||||||
|  | number.  Through this port, the image data is transmitted as a | ||||||
|  | sequence of data records.  Each record starts with the data length in | ||||||
|  | bytes.  The data length is transmitted as a sequence of four bytes. | ||||||
|  | These bytes should be interpreted as an unsigned integer in big-endian | ||||||
|  | format.  The four length bytes are followed by the number of data | ||||||
|  | bytes indicated by the length.  Except for byte-order, the data is in | ||||||
|  | the same format as defined for \code{sane\_read()}.  Since some | ||||||
|  | records may contain no data at all, a length value of zero is | ||||||
|  | perfectly valid.  The special length value of \code{0xffffffff} is | ||||||
|  | used to indicate the end of the data stream.  That is, after receiving | ||||||
|  | a record length of \code{0xffffffff}, the network client should close | ||||||
|  | the data connection and stop reading data. | ||||||
|  | 
 | ||||||
|  | Argument \code{byte\_order} specifies the byte-order of the image | ||||||
|  | data.  A value of 0x1234 indicates little-endian format, a value of | ||||||
|  | 0x4321 indicates big-endian format.  All other values are presently | ||||||
|  | undefined and reserved for future enhancements of this protocol.  The | ||||||
|  | intent is that a network server sends data in its own byte-order and | ||||||
|  | the client is responsible for adjusting the byte-order, if necessary. | ||||||
|  | This approach causes no unnecessary overheads in the case where the | ||||||
|  | server and client byte-order match and puts the extra burden on the | ||||||
|  | client side when there is a byte-order mismatch.  Putting the burden | ||||||
|  | on the client-side improves the scalability properties of this | ||||||
|  | protocol. | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_CANCEL}}} | ||||||
|  | 
 | ||||||
|  | This RPC is used to cancel the current operation of a remote SANE | ||||||
|  | device. | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{SANE\_Word handle} & \code{SANE\_Word dummy} \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | The \code{handle} argument identifies the connection whose operation | ||||||
|  | should be cancelled. | ||||||
|  | 
 | ||||||
|  | In the reply, the \code{dummy} argument is unused.  Its purpose is to | ||||||
|  | ensure proper synchronization (without it, a net client would not be | ||||||
|  | able to determine when the RPC has completed). | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_AUTHORIZE}}}\label{sec:authorization} | ||||||
|  | \index{network authorization} | ||||||
|  | 
 | ||||||
|  | This RPC is used to pass authorization data from the net client to the | ||||||
|  | net server. | ||||||
|  | \begin{center} | ||||||
|  | \begin{tabular}{ll} | ||||||
|  |   {\bf request:} & {\bf reply:} \\ | ||||||
|  |   \code{SANE\_String resource} & \code{SANE\_Word dummy} \\ | ||||||
|  |   \code{SANE\_String username} & \\ | ||||||
|  |   \code{SANE\_String password} & \\ | ||||||
|  | \end{tabular} | ||||||
|  | \end{center} | ||||||
|  | The \code{resource} argument specifies the name of the resource to be | ||||||
|  | authorized.  This argument should be set to the string returned in the | ||||||
|  | \code{resource} argument of the RPC reply that required this | ||||||
|  | authorization call.  The \code{username} and \code{password} are the | ||||||
|  | name of the user that is accessing the resource and the password for | ||||||
|  | the specified resource/user pair.\footnote{The username and password | ||||||
|  |   should be encrypted before network transmission but currently they | ||||||
|  |   are always in plain text.} | ||||||
|  | 
 | ||||||
|  | In the reply, \code{dummy} is completely unused.  Note that there is | ||||||
|  | no direct failure indication.  This is unnecessary since a net client | ||||||
|  | will retry the RPC that resulted in the authorization request until | ||||||
|  | that call succeeds (or until the request is cancelled). | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | \subsection{\code{\defn{SANE\_NET\_EXIT}}} | ||||||
|  | 
 | ||||||
|  | This RPC is used to disconnect a net client from a net server.  There | ||||||
|  | are no request or reply arguments in this call.  As a result of this | ||||||
|  | call, the connection between the client and the server that was | ||||||
|  | established by the \code{SANE\_NET\_INIT} call will be closed. | ||||||
|  | 
 | ||||||
|  | % Local Variables:  | ||||||
|  | % mode: latex | ||||||
|  | % TeX-master: "sane.tex" | ||||||
|  | % End:  | ||||||
										
											
												Plik diff jest za duży
												Load Diff
											
										
									
								
							
		Ładowanie…
	
		Reference in New Issue
	
	 Petter Reinholdtsen
						Petter Reinholdtsen