| Server IP : 182.53.201.61 / Your IP : 216.73.217.175 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/sane-backends-1.0.20/ |
Upload File : |
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software
%%Title: sane.dvi
%%CreationDate: Thu Oct 22 11:16:06 2009
%%Pages: 47
%%PageOrder: Ascend
%%BoundingBox: 0 0 595 842
%%DocumentFonts: Times-Roman Times-Bold Courier Times-Italic CMSY10
%%+ CMR10 CMR8 CMMI10 CMTT10 CMEX10 Times-BoldItalic
%%DocumentPaperSizes: a4
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: /usr/bin/dvips sane.dvi -o sane.ps
%DVIPSParameters: dpi=600
%DVIPSSource: TeX output 2009.10.22:1116
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
%%BeginProcSet: 8r.enc 0 0
% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30
%
% @@psencodingfile@{
% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry,
% W. Schmidt, P. Lehman",
% version = "2.0",
% date = "27nov06",
% filename = "8r.enc",
% email = "tex-fonts@@tug.org",
% docstring = "This is the encoding vector for Type1 and TrueType
% fonts to be used with TeX. This file is part of the
% PSNFSS bundle, version 9"
% @}
%
% The idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol,
% MacRoman, and some extra characters from Lucida.
%
% Character code assignments were made as follows:
%
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
%
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
%
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
% These are /dotlessj /ff /ffi /ffl.
%
% (4) hyphen appears twice for compatibility with both ASCII and Windows.
%
% (5) /Euro was assigned to 128, as in Windows ANSI
%
% (6) Missing characters from MacRoman encoding incorporated as follows:
%
% PostScript MacRoman TeXBase1
% -------------- -------------- --------------
% /notequal 173 0x16
% /infinity 176 0x17
% /lessequal 178 0x18
% /greaterequal 179 0x19
% /partialdiff 182 0x1A
% /summation 183 0x1B
% /product 184 0x1C
% /pi 185 0x1D
% /integral 186 0x81
% /Omega 189 0x8D
% /radical 195 0x8E
% /approxequal 197 0x8F
% /Delta 198 0x9D
% /lozenge 215 0x9E
%
/TeXBase1Encoding [
% 0x00
/.notdef /dotaccent /fi /fl
/fraction /hungarumlaut /Lslash /lslash
/ogonek /ring /.notdef /breve
/minus /.notdef /Zcaron /zcaron
% 0x10
/caron /dotlessi /dotlessj /ff
/ffi /ffl /notequal /infinity
/lessequal /greaterequal /partialdiff /summation
/product /pi /grave /quotesingle
% 0x20
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus
/comma /hyphen /period /slash
% 0x30
/zero /one /two /three
/four /five /six /seven
/eight /nine /colon /semicolon
/less /equal /greater /question
% 0x40
/at /A /B /C
/D /E /F /G
/H /I /J /K
/L /M /N /O
% 0x50
/P /Q /R /S
/T /U /V /W
/X /Y /Z /bracketleft
/backslash /bracketright /asciicircum /underscore
% 0x60
/quoteleft /a /b /c
/d /e /f /g
/h /i /j /k
/l /m /n /o
% 0x70
/p /q /r /s
/t /u /v /w
/x /y /z /braceleft
/bar /braceright /asciitilde /.notdef
% 0x80
/Euro /integral /quotesinglbase /florin
/quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft
/OE /Omega /radical /approxequal
% 0x90
/.notdef /.notdef /.notdef /quotedblleft
/quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright
/oe /Delta /lozenge /Ydieresis
% 0xA0
/.notdef /exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot /hyphen /registered /macron
% 0xB0
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
% 0xC0
/Agrave /Aacute /Acircumflex /Atilde
/Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
% 0xE0
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
% 0xF0
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
] def
%%EndProcSet
%%BeginProcSet: texps.pro 0 0
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end
%%EndProcSet
%%BeginProcSet: special.pro 0 0
%!
TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
{userdict/md get type/dicttype eq{userdict begin md length 10 add md
maxlength ge{/md md dup length 20 add dict copy def}if end md begin
/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
save N userdict maxlength dict begin/magscale true def normalscale
currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix}N end
%%EndProcSet
%%BeginFont: CMEX10
%!PS-AdobeFont-1.1: CMEX10 1.00
%%CreationDate: 1992 Jul 23 21:22:48
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.00) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMEX10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
end readonly def
/FontName /CMEX10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 40 /braceleftBigg put
readonly def
/FontBBox{-24 -2960 1454 772}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5CF5B8CAC6A7BEB5D02276E511FFAF2AE11910
DE076F24311D94D07CACC323F360887F1EA11BDDA7927FF3325986FDB0ABDFC8
8E4B40E7988921D551EC0867EBCA44C05657F0DC913E7B3004A5F3E1337B6987
FEBC45F989C8DC6DC0AD577E903F05D0D54208A0AE7F28C734F130C133B48422
BED48639A2B74E4C08F2E710E24A99F347E0F4394CE64EACB549576E89044E52
EABE595BC964156D9D8C2BAB0F49664E951D7C1A3D1789C47F03C7051A63D5E8
DF04FAAC47351E82CAE0794AA9692C6452688A74A7A6A7AD09B8A9783C235EC1
EA2156261B8FB331827145DE315B6EC1B3D8B67B3323F761EAF4C223BB214C4C
6B062D1B281F5041D068319F4911058376D8EFBA59884BA3318C5BC95684F281
E0591BC0D1B2A4592A137FF301610019B8AC46AE6E48BC091E888E4487688350
E9AD5074EE4848271CE4ACC38D8CBC8F3DB32813DDD5B341AF9A6601281ABA38
4A978B98483A63FCC458D0E3BCE6FD830E7E09B0DB987A6B63B74638FC9F21A5
8C68479E1A85225670D79CDDE5AC0B77F5A994CA700B5F0FF1F97FC63EFDE023
8135F04A9D20C31998B12AE06676C362141AAAA395CDEF0A49E0141D335965F2
FB4198499799CECCC8AA5D255264784CD30A3E8295888EFBC2060ADDD7BAC45A
EEEECDFF7A47A88E69D84C9E572616C1AC69A34B5F0D0DE8EE4EDF9F4ADE0387
680924D8D5B73EF04EAD7F45977CA8AD73D4DD45DE1966A3B8251C0386164C35
5880DD2609C80E96D1AB861C9259748E98F6711D4E241A269ED51FF328344664
3AF9F18DCE671611DB2F5D3EA77EE734D2BED623F973E6840B8DAD1E2C3C2666
DD4DD1C1C8384F906A7BAACDF441BB0AAEA2A697E453C9A10A119BBE236F5B3D
E6C27A9B608666E509C8F9B09DB3D41BDE7375D769F4C62F1CDAB748731734B1
06284A7C45142D0FE4E88F9584D88AD8ED3FEE113073589A471C3DEE38E16CAA
77CF129F6D9B781161AA1D888FF06C9188B9C6F0A4F98986C26D4DEDA2AFA61F
6F664EBDB011C6FE6AD2F2075C7A2A8FBAF29D58A293AF049F8718E212B55168
FCFD0930E6C4C7CC6B7C807DF99AC0BDE168E9F3DF08AC5C032F159F444CFA6D
67E568DB3C1748FB2EF61B2DC6E616597A8195BFD494F6458895406B4D208114
AF3CC231C2C44E194CAA5F54BD608FFA26B603DF675E83D485D03D4F8B579783
E65BEA1B95BCACAE3E7261C3A4729B611ADB6553FC8A8F01FD6BC09D56D7BEF0
41E9E20CBB4234035CA11D909E765A9368127350185F8698246E6B1700AE3D18
CCEC2F8BA4D05106619FC814218CD877612BFFCE37E85EFF6DCFE78AB2A45900
2E1345FDA0AC100EF081E1C9E7A867E580D9B7E75C103C230C35A5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
%%BeginFont: CMTT10
%!PS-AdobeFont-1.1: CMTT10 1.00B
%%CreationDate: 1992 Apr 26 10:42:42
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.00B) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMTT10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch true def
end readonly def
/FontName /CMTT10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 65 /A put
dup 69 /E put
dup 78 /N put
dup 83 /S put
dup 87 /W put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 105 /i put
dup 111 /o put
dup 114 /r put
dup 115 /s put
dup 122 /z put
readonly def
/FontBBox{-4 -235 731 800}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
BA304FA879392EE0BCC1A6ADAB001EDF5C9D6FE45735098A304A8BD4A0AC9980
7FFE62FEAD3843EF8C45E1203E303D028897CFE1D4D0AB8BBA74CE279275A67E
81AEA417A3E49397386B7304DC9247290A5CE2408114441EDD82F9B3A8E49C4D
D9745142652BE8B82C2A9610B26EA1A71212CE97781A06B58C3DDD9179016AB6
740166FF986AE856AFDD2D8955D95B2D0C57BC179F1D9136BEFBB6F17E8DE96E
921502FB19F0C21F0A491F951D83972DECD70AA8987112F05C939A6FB073A5EA
495069A1DDF11DC589D2E91C1514C2799C5B954EB8B347918C4920C7142A2AC6
8231DD2AF57E9540C46BDA6AAC09689487F5E0EB021CADA860FD25B2E5230259
7BFF0F12D7DF5CE219716715073177028CE276FC313D6A101898D1A6BB0AD8D5
662A85EE6B921A72E46589CC08EA87EECFDF36B819B07306C44AC3FBCD134930
4B2F9EC4D5C57518E8210FC2C61DA3FD185CFA65DF3DB858BCF75E95321A7131
547E0C85406F70D2C3C67E142BC0642344A5806FBE012868A76DBB9CB27CF878
38A11705B857FC5F7F3EFA1DBEB4DA5200E2F29D25BC8614D6C29F336C5E9F60
656D2F7CC463146790A6C4DAB137A9984258F46F0921600AB525BA1C03CCA30D
F03D2BAF5E8AA0939FF8849E760494BBF70003BA53516615023DBDE205E27F0A
8DCFDD26F25590CEC8C64834FCCD3AF3A93AA02760B216ECA422F349638C74C4
B9060C46ABAE3789FADE86D20E3A3AB5940616A6AF8EAED5A70BF2A4A8E40860
4369101BD16DB8A70A7E46F92001D56CDD56837C68BD8E2AA43147DD078E42DB
FE638E4AC8D58BDA2FFD457D760BACFA908B124958C2606F28C3998D7F565D5F
5539EA278477BC1D0056FAF929178B7AACAE1D371228606B58787EBCCA903E99
F7EB4E1D1C5ECFA2D925E13BD7D67620B5D4DD42D1BD888D966E97636661BA71
EB2229A1B1EED0B0F39968A21A816466ACC0B1B80386D9FA7970D092CB8D261A
08A4EE6F0A5DF57CE8A20F5A518D532C2829A4DF057618B1B3ABD12B44977D0A
45D5D799C2CEE1F006E108E9D493DA658215649657E1D04C0D52C33C846333B7
38A93BC3635C7C4233B252DE7360E1485BAE136546289E9300C16AEF9A9F13D6
D8CD9861AA42A0EC2E291033F02CC4D153CBDE0DDB6879529AE65F474C3EBAB3
7CB10ECFFC019A71FF5228E89C9159F985A557B731F1716A740B96869D6E4332
AB4BED696A5FF5E1CA4ECAB1FD7C8F0BD0B13D23F0FC2C04EB267B4F376714C9
B7A2BE94F4E64A2754B6A2082E4217FE9991FA062B1BEF6EEC058D788BE4565F
53424C0169FCF47EF1D2031F68B0433F8C6973271461336683C1D4650487C050
EA3FE882B6D45D2B6A19469B277674757EAFE42F9BD4AE651FD7580BB7FF1BA0
AFE6267C71CA2EDC659EADDE85DBAC70294C32BE53C9D3D8A82092261521D7DA
66CEAECD2E107B00BD9E3B95A284D4B434AC709D26AD58F4310E78553FC9E5F4
661A2A464C9B18A9F48A2F48C6938F55F9F8DE798AB043E5FA5FAADE31395514
69C51D56BFBDC4E47FA113854CB511559C50626CC9FBF3203E5C51E70A5D8C88
ABBB15A8C70F711184054EB6B0F8C81758BA1CFC0C8D771A7C5A432F6382C85C
09B27F5DD4E6A27B06C503F28AF19CC7E9A39DC18279A1C9CA59B8B90D5180FB
A57D571FAAEBCF488FE0C3ED878CC3E7C5CF863549629823B20EA58063871676
B1478F98A9C9A43E962DBCA3E98F0F48B0CAE07569C48EA60C65FFC06A2008B4
8481AB4D1205ED42C458FF6261883A307859897056F44E5424443C7F9FF2599E
F0EBEE2442F377311F535A7C559908377357A9D2FAA892373B452C526572F384
FBC25E19B04A17DE99415FCAE984DE9C0CB9F7136CA1529FEC2FD92BAE245245
377765E7AB0CBEAD3D9071B59CAF313360646AB3F51AB95B5C01867C3452917F
F019F4C63ABA866AAC859E209E13E795E0411C82B56741DA73B760B629ED2070
19BB41EA91222B7358DC32EF21725AD41C4045BB95FABD52841C24DD38DC9DF4
6A54F1E76043B1F54F69D94099981125B4C667EDF08A600E15CCBAA75E5D6EF2
3A3759C58FF22D03C578C2BD0DA60A479BA24D85E39FDCE1CC129CF36B54589C
226E8B3575449AC9CFA594A9EFC99EFFAEEABB371AA21EFD25A0FFC9F46300AA
7773885F58B7F023248B164E7350AAE0092800B2B3F422BD580BAA94D6F99337
F72BF2930E59E751F3D23389D1A63521E0FE5273F0FB122B007AF92D5C024912
E957D98242D76635079970DECDFC99A7D6B907FA2667E7826A5297CC65FE6DBA
E739CD3E99FCBC4EA1A0A94287D7B59B0AAD320305B2736E8FD4C7AFB99B856C
0FA3004F441B03421E58DFFDDD68415E2AFC89F2D9BCF23B587FD4FCF8F0105D
EA44437C3A13D3A1235A37669CC8EB3FBF094EA6F70897E60EE1CAD8772592DF
D63629700526B0FC9B40A3ED89A3718DDF61A554FAC06F4722CBCC8FAABD7960
DD7D733A73E820787F5AE1F5B0526A76FE49057AFAA7D42654C95B39C9294B74
983083CD7A7D8AA14EA3C3B0EE3C61427320CF1C1DED864394E58BC4C164458E
E8EE940B097B87549325C0A516E5C48D58B3549729820AB04EBDD2AB83B9DDCD
528B0CEBE9D30B730EFA6B5D22888B79F81105A03FAD20C43893828CC3BD2C8A
A3F4072DAEC5B203AF56F9FC4301402461F3D8E543A63F2AAA8C6F786C2AEF88
665514BEBF2689CC1A67E5F3FEA8B15B41AA1D18EA7F363F973FEB0D7094A827
81A8369D7D2A6117A599CB645D2C9C9A9B6AD1851B810680D01CE32BDEC953A7
4826775E5C09BEEAB08AA9045525A852DA144E7056E21C3A6477238F4CE58FDD
85ECB106B52DDC04F68CCCF74A404F1F56FAFF361548DC56D5D3833599B8E6D6
C7F156BAFBF3B08FC3880E9892345825120DB09F8DAF82E59E1A3B769CAEE723
A36CF49FF311F1C692ABFE67041F072A10CFC1A12E2DB98EAD86C64B8A4D50D3
65BA77D198E520F65CCC0AC232551996583C744AC31C191FD42AC8BBA8BC30D2
7724A124C584539247965052325EB87505298A7D5134B8D35B4F32FA9CD5DCBF
EE5DA08E635E572D47D3FECD53D7811BB69165F4C9413F03226F0A0BAFB89932
314C52A1ADF5C1600D81D61839F59D57A65137761920CEF4ECEA8C18F839057A
8AA55C366BEB30F28961BC26FDCCBACDB5ED9FD063424C45F7E0FB23741C910E
D7183368EA7F75E49A9DCD9B92370F0AD9D550451F548F8E1912BB7C40166E9E
366D787806A3026F818B724562A8A4E2934FBE61AAA9D7996AA389E2CAC71599
AC5A6FCAAD3891A414E91A045D93E483C76E34A16B6808AC96FF86882DB095BE
919C19446D6AB96B0FCF1B4CB9C5D3719F42CA8E5C70322A529243F69D0D48F9
BCB792CC42ABCC47BBE841B1AFE81D302817D5DD890D5B3B70858192FF501786
1A7A267EA26AAC220309F1FE53E467243C11347D4FBE18B20063FEAD45C45501
01EA152F828FDE560E5DF6229F0C218B996EA170B1F59CEFC2B7960B590CF0CA
62992CA032FB00F69CF6A950A9378FCE196EEA3FBD7531369025A0B85CB7005E
39422CEEC16EB07CB064693122E82B54A9490FEF8B37AA1A25F1B3B62F998E21
C3D834E4C13B710748DDABFA0A1025AD5E32850C1FC4F51EB73898578270207C
66D0DF36A91905AEEEC2257EE68790935FDC79104F0FFEE3E6350E728F71B786
24EC38258E5B108CC1DF7ECB0A956F46CAEF065AC6F7288F3B500A96B33ACD39
0C11BD46F5BCFC579C777E7682C225DBDC510CA40C4E54FBF976DA72E19C99B1
18DD05128C2ACC386B6C238C54501A252A6E52E41BD4E5114E0E1B2162F68371
D3C491183074664D549C5392897D177C21422B062593495E1687C1AAB01A47BA
DA8743150B533325E3A4A15B29C82989A02B1F4DE99CBCFE6575CB04FBD89E26
850F4BC9BAC4AAE384A4E7FFA6D73BA02CD0171E5F80EF13D6800D99E2EB26B3
C098E7BA5D93CFBF3B0A5E13072DD81B6A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
%%BeginFont: CMMI10
%!PS-AdobeFont-1.1: CMMI10 1.100
%%CreationDate: 1996 Jul 23 07:53:57
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.100) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMMI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
end readonly def
/FontName /CMMI10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 22 /mu put
dup 58 /period put
dup 60 /less put
dup 61 /slash put
dup 62 /greater put
dup 66 /B put
dup 99 /c put
dup 100 /d put
dup 107 /k put
dup 108 /l put
dup 110 /n put
dup 113 /q put
dup 117 /u put
dup 118 /v put
dup 120 /x put
dup 121 /y put
readonly def
/FontBBox{-32 -250 1048 750}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
95601766758B4BB6C93DDBF4C7D28729C5FE8E8BB90DEC3D366F135DF1E57A19
0F82F65A402A24CC845CF40775123553166A2A4DBE5A17993512368E3C1B3F07
124CA10145B331F17E08A78A7D9EB3A2A0742C69476396B81AE64F6C3AFC2EBF
9DD021433A67C1647047ACCC7B7B920DFC21E55ED2F1CDE349CDF13E757B0E2B
41B9A056D6BA82CA51CFC765DAD7FE7690A212EF317B41DFFA3392B78489F70B
D54F28DC74544444918FAE218E46B6D162100F5AA09B1819DBC8B0B6468E79D4
58D6FC6A14AD7960A8CF1E22547189356A45B5867A6C3BC85931CE0077EF207D
95213DD37F34468DEEDEF53EAC9D779FA2C596B2CE616B5FFBEFB8A6EF1066AA
564EC0473AC29BF25310CBC4E4364FC4B25893AC349D72616A057F873CC56AF9
83084F39F8633F5105627C6C9CB0ED340FA0CEAD31457BEC2B07CA95D05E2AC8
7815D73004C44A8B2496FEA1D6C55ED66C25D03D7CF04D6E360FED58CF0BE921
CC0B9D72E28FC5D9E25ED6AD8465F4AA6F06824FAE07B1B6C438080E4A2CA5AA
D957964A9714A6382D4FE8B7D598C9707DB21A2CFF4D61E16FCC52F086FF5D24
37570913D1B602D083250DE2C4EA968742D0B886BD023A45A4F6DD569D15CEFC
9EF399A3A12CD3CA4153F45A5B66FF2FB2C3C8AD7A1EB91FE48DFB7ABEF3F820
FDADC134563C19C691B853BE60780BF940AB74C6053FCF10E5B77C9127F0F13F
85A1D99BC8B89BEF55464A59B6007EF7F4083B75B38035FF4D48F799B6E2C00C
D4DF079D1E3F65AEF99F3CCA54C0BCBAEF0A4BD7FCFBCB0C13E7A85AF872A0A2
652F8276FF3FCE12075A6B6DD56410D6C248D2FD4E84BEE0D33F59CC18D25138
CF2E20AECA187B9588485B328AC83971370CB58F6B4062B0D59571A52D34DA07
4B393C26B5F2483A4CCFECCA828F5693BC9F51AA549D2A1F0FF3EEE1A987DB99
ED347030DCED7C5BD1CD9D0817FA6C5E7A6D1535AD5D9411014422C5213D1E33
E44F5302FBD2F697865F1747A85813784D0A560E5C2100E101771CE6CA772B4C
30DC71583A54E619952C37578DFE8345D0BCA72B216C34EF3FFA6D9ED045FB2E
F263934A07D71DBDEEEC42623E589AE52415F1794E01AD37EEF1B00C7AA99D52
8BB0D503AF49E92AED350DE1B184399F2E75B1EAE1EC2EC225C8A9937651C164
B70F50D31E7770B65A9816252530025647C14111F32B178D81879D028D0132C0
33BB6A96E93989A6BB4596DD8EEC3BEDEABD9C3F00B3BF8ACC76FD4FA8AD108C
FE65ADA2574F3FD636554BAA61C71131A0B5ADD3684BEC448EBDC9A0E906BCF2
1FEB83D188E3C32FC9F4A25D9C722C6F4D0F2E8BA6B0062AA735CD21D342C453
1C409ADA3EBF1D0A28686832EC90CEE239284E4027ADAA03277DB02D79074DF0
2062F85F88DC7AC696A46016AAE455E73C1D65EBB5CC09065E3FE208FEDB16B4
2A0DD94DA33A6688517AFD09AB7C2BCA26B1B4A75C25816A9AA4D0314D81340F
3D990FEAB9203EBD127C1B4924295C57FB68A9EE331A35EEACACA3EE091A72C4
77DA3A234A3B57A361021E8943EDBD018D7F944381D7966E7BD8747A79486AE1
5D31204DD9C6E84AD44E16CF318D803D507800D21613EDDE13332630BACDDDDE
677D147E3F21CDA81E5A1FCD98DAB1DE6636CA8513E7C2F592D6CC8629327D27
BFF2C2EEAC75BB2231CC47BBD609884094DEC9BF94B67338FB3116C4CF8142CD
D053F0C77BFBC8ECAE6C029B1AE56AD5BF50B70C6989724F1460055713F8720A
9D1C8789D52BE842D68C591F527721751BE7A2D06CECA1C22F9929C2F6F83B57
C11863DED295C49A184B78505702918E8829C9CD1DB7E0441DEB20A874E11386
17972933ED59309CBB5BBB3120C80E619FE8D2339C739EAD96E5FCC2B0855CA5
0628F84B897BB822DD435E3DC74B727371E01B2A9AE927D4C36865945DE99778
67748A99B47413842FFC9522C514CD9A880FCB9A88654133D37B56762EAA0BFE
0B748AE9B4499AD422D7DF7E24AD2CAEECD8A5BD5CD7CCAAAB82BA97F88AF281
259D500F5F1AAC85AE3D8B97E8EB0E90440F69C9A3A1E984656456F9615FB198
42FC82DF7F1021A969266DCB1001DEFEF0BFB148952863F378689504FD2D69DD
7257BBEB28A3D3DD0CFAEB2349E0974F1156781445ECC6CC8EACE8C65D6C0C90
5D9625D7FB4A5471323F79E71104A987D3D682283384F3453C20D66D07240B2F
B64394F9801774AA7070167089B4F561B6B899F58AFF41BBA05E960826635BB5
1133BD7568D3C1B8AF131B9A0DBD04168D1D9698D11BCEA897F10486C7635365
865CED6C6F82DEEC6F742B08367C3AA1128CFE3B2EC60A4C84CB2EF820F121B7
0074DAD54AA80D947E21F5925FDE3CE7B9E77A2AD7C887F375ADC5FA71AC814E
215003DCF571C289D429A45FAA9B05C70C62690A5C7E1BC8BC6B047CFCC86440
BCCB101BE5F6580C3682BED0E5D716EE5A5F3BC198BDC7F628738861DDB95E1D
DE01C33EC06ED492A789C7049CAA95E9B1117B37FD288B6D534325538EFC332B
91EFF15DD0F28879A99246F8573F970400FBF483ADA6468C07E23F6B24ABBEA6
57FB3EA5A2CCE3C5C9BE566C66007F0025F661A3FD2CD2581AFCC6959F23377F
81672FD02717679EE0773F736F77F06415A32AC9C5701259DD281EF7286F595D
D22F1B40B0AD54830795626E1342FFC7BCE1CEC1A628D98E9BA949E1F8C21154
92637E040A1308779D878D7A564165B33AA62F88A9BD479BCCD12D8B052BB7F9
6BA72EB33AA683FB031930677CE35C57F64846E29DA8104267B1177FC9DB5D71
F4F4964CA95CEA8B542AF79DF9C38D21D24184F363F1FF22BAABFEB5948AE0DA
15D3EC2032A2F82A1C897B48B66C54DC4A2A7A9282E40817F8C8BB6BFBBF0D8B
3F7D7C5121CC336A75DFBE33844A8AB6ABCDD2C295FC6C855CE939288A801795
A8305C2AF094C0933C3F94AD9379A37D87561BA7B1CACC2B387D06A4AFD84DC5
625187C5E25FD88B62BF178629B79C0BF2936BD373C4BBFFA6DC50A6B063991F
5FD89C70B52FDE24927C794160101AFA1568D2F60BB5BDA1300F7EA9A4D1EDA1
33356E41B115D393B185935D1EA8B37205D6DE54439DB22993154366697F5E91
9C1799E8F0E2F6641800F63BC459F014D075A30A34E86728AF728E57C7697E3E
ACD1AD83F48402B71D6223B2B2209AD07B4614AD653B5F2DCC3D85A7CD83F8EB
C8B0B85249C6CEEA5E26D952E0EA012C563D31D5CFCB3392180313CEEFD6737D
6234019CE223AEAF05A42AB2C702A83E11318432032D352D098970A078C72781
D2A6E7866B3865C9F536CD6E3B15040F55A71F636F8682AF424050CB0F816A02
0F8BA60E45F357DA2A0B9653D67488FAC680DC5914617DBB08EE2E209B59146B
170CB772CC5E38BCC1B1EC293D79190D43C157EC7B09BEAB9A0FCB7A2366C546
AE9BD47A1B0720E52C14AE9A495AA02BD34A6EE6FF7FB7442E53AE19A722F7DE
63DBD90269D9F71D5642B1D28385C906B747352C50809DC239548D3945888A46
68F6873AF2CEC26470A178897ADE6DF5807AC0CEEC38A35652BCE5B5FAF02B76
622ABDF63F01D7A2886952B3ADF12A1C8418C2F54FFA1966A91AE20C2EC5D75A
ECC5D75E9D6ACB4F729B304E48BC47AA8A45F5BA860AEEC233F47D227D299AE4
C0E2197B65647D3EC64EC04CA5050F25F1C81745A047AAD9BEEB076A5F68F91F
783B584F1971AFD4AC5FA26E85387C9C212A8A837EE475DD68E670A1A1BF34AF
8A9D40EBFDC816C8EACA57F48222F41780D708AC6A925B2EEC8402779597A25E
47C8C74150B307E03C72AC90D49ED3943E79628DDCAEF83E67C38923690221F2
409FC5BF32F2D4F1F3E5916108D453E887CEA29698C3E260DAC5947174B962F9
A64B377472D1DC3ACD4E5B2C80C99AF5E009DB0013EB04FDB05DEFD25BB21896
2AD64CC273C7379FB8CF4AE2C4C9A100E0AB792D29632185F8636D00608EFF3D
342BBB96BC844F829F27DE6EF8652F381BDA9945281D94C2B7F6CA1F0CA7D75A
09E4E658A930A08C561375DDFEEF2A1D97EFB1BD53D63CE66198F5AE6D84C6E6
680B6982E7C3A86C4972B7C95C75C645C3859887884074CC425D69A6A5B3255E
7CA15B406382FA1537227CA5E481B690C9234AAA82B89F5F34B3DCA8CA1AABA4
7AEB28D742507799273DFB3178055F8E6419711E0AF44A8F24404FABC6779BDD
C0780FAEFE5CC4582CCC115A8ACE2986AB00BB1F10B509B94765548F4069BE65
E811F857A95DB42F3AF7FE7FC1258036FB60110CABF7B5E91550946C640814CC
19B31E74D3A5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
%%BeginFont: CMR8
%!PS-AdobeFont-1.1: CMR8 1.0
%%CreationDate: 1991 Aug 20 16:39:40
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMR8) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
end readonly def
/FontName /CMR8 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 49 /one put
dup 50 /two put
dup 51 /three put
readonly def
/FontBBox{-36 -250 1070 750}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30
4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632
BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B
041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721
3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762BFD4563ABA4F
D926227FAD2B2D4975835541EA88A9122250DB8FDF8A059573591995D990EF3C
DF93C316B57159DEB0ED1D04345E185A3A6ED52BD68CDC5B105DCA99684ABF7A
C22FE9E198559B40BDB4FE42C80ED82E9274A4B67B948166DC9D69C85A7F2F91
3B17ED4242F63E8949C311BBFE38172B1628644258DFE06C72D757395C5BD42E
C03780E517B3D633E4D30C9B8DDFB317ED5A12DE941021AA3A542114136269CE
423340BC28EF54C35CD0E77E5C8756AAF31FA952D3DC541129D186B292C0D489
E6BC46239545682818A8BAEC3AD95397EC58BA75CBA2170C6E4AF7C069AB9B67
E0A2D12C75000E1A2D17B92107E62FE9990D6F83A3582A4779749CF62F50CD77
818DCDA3AA9487774E56ECE703CDCE72932E157453971A588FE7F4522AC23422
DE1E11AF28FE2AB0B29CDC9EB8C76D2CB1F11271BD997DF00A422C7C43E5825C
0074A3AC6FA9219DE81ED9087D02B5DC4BD6E7ABB70E7B859345959DF8BF685A
203607BF2AF44CB538762B0A76EC09C4CA3D58BB289CB37D613913B6040FF739
D3DA2F07B9B811CB393904FFEA743D9E1AA85A155FD757FE19CF9BDC00130779
A3A28B22CED4D4DECDA1982D966101B5F06588D45981BA84C8B07CF11D0F581D
AEDEAE38E212689E5AE0DD8F66891563D6FDF4FEA880B95A2F7783F9E74E6012
285A4E8E4DF0423C7FC5D030AC918B0EB3B9AE6318EC0F7FC5E69E4A09A62D06
64119684BEA344B0E775C681F6F78E10A40C9C06BB8F1F45FF60686D4E6164BC
AB289CEE800D560C8CDDA2C86B98975B56CC066A10DD3A4EF3D6161699F9F7C5
083CA1EE40C9EC4DA8EBE39EB3E941
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
%%BeginFont: CMR10
%!PS-AdobeFont-1.1: CMR10 1.00B
%%CreationDate: 1992 Feb 19 19:54:52
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.00B) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMR10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
end readonly def
/FontName /CMR10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 40 /parenleft put
dup 41 /parenright put
dup 43 /plus put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 61 /equal put
readonly def
/FontBBox{-251 -250 1009 969}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3A38ED682C65299D6C
67201AC4BEC92930ED59A43AFA43F24F6ACBEA592A03841835D631F03C2C1A78
D554F14F748CFE52EE1255995118829A77F388B119B21C90975F74DE5E4A6DA9
C531C14FDA14B4AA1EC720F6CE0342AD2CFE20771E4F80ECEB0ACA2CF89E2280
6BA7F408F14F24DEEFB988141457533E4822D51A43231D49BE8B184483530CDF
6B37AE44174A99A2367CDFA06D801B1588A55CD8FBC5B1A6903110F1BC42EC5F
FCCE6840E8ADC084E63A7C5C45FE6953D18AD1C2573314AF568A69608A9B3825
8DDD825D7E8041DCDA231DFB8E6ABD97BCDCA95500E72B2A64F2F989A6D7AD7C
875D0E0E051ACBD893E30EA56145D44F2DC60EA9D0F7D62021E05D2624B00B93
92171DBF9964BBEC03013F324BD4B1E3053CEED520CD0E02D3BD8695B3C1D422
9FD5F78A6F1810C4440110E7CF77EF9E89E7CFD5C7E6C184E7BB76320ACD3E59
118F1F7381C2FBB0DFC4B2D7805435133C2526B1EBFC75F605FC422B56D69EB9
6663FECF5BD529D9E7C7EBD598A6CF8E5755258959D93624FFE199D39A3DA75E
B091FC3CE77584E9FB3C5D5D4B045BB5270B6DA4F8750D81480FF4FA476CF794
F45503B19EB32BD540B24672F7383ED0AC2FE4D6AB77570225D4900DC856DA39
76ABF6931AD5B3270E553E45AD618EEB77BDFE4480A36CD4F92D20F442A410D6
F9F7AF27DD7EB863F35EBD0252A06BF0DAF5142E7656064CEEC693C16B00486C
D2A81696E0E285BDCE9D146DB188BCC895FC2C608649FBEC19D6EDC9915FAB9D
588C34864F3D19B617B1C83F76B2CD6CFB51276675A46A0EFDCDBB57526BCE54
4990806785A2B9A86A2076B0D1FF159D3A54359FE8E3FE8BBDEC164416411F33
F45F4173C51E84A8BFD121BA9E9F251DFDD09572EF428D6B1343FA1D3582EA9F
A6CB5E534596F15A9EBEB77FFAF00FDF0D9E2B312A81D04B38A5CDED9EE7A31B
D92C3145C1C1C8FE8D006373F9ED95CBEAE966F4D7F6FBEFD2C5A36FA4773DCB
66DE0F21073C0795744567041F02861EAEDD054459F9804867C9AB81EF68D0B8
75E13145AFBF57176CA5CD5CADADBE9DAA2C52D973C9AC1B00E601AD6F855B61
5CEF71A4999B7A9ACCC66A0728D283CE5E91DD4022FA126169830AD6BB981E1B
DB796680E9FE0FD4EE146EF8D0B6B652A6E3A57FDF2047F19A9D0FA5CFED185A
0E94174FE775B753003E4AF70C2208E751DC07AC979B2179437B9382501F4240
BADA84A464DA04ED1154D254A664F7F896E10916C64E4C73C9EC34249CFE782D
14BD6190E6B32853F1D23680389CCF3A81FA1496E9CCE6CD21775DF4E92A2623
EE88DFE79B81F386F0431EDD5195B2964700488D7EEE24BD4613A2BDB6BDD270
86EABF50C25AE21F14B84E51024CD103B49AB5CDCA5A30D293D3F779932DC989
5E75A93F72880066BA35AD56C70323E294E8444F55B18A2A849CF0A1F4FBB86B
6DF37BAADC1D51475504ED97051DB01DE0CDB7807FC6529B8A1A7E2AF37863E9
7E213C8EBD5587826EC1A6748A4312134C7B8942302041C252BD8BB534070050
70268EB528A57BBE39B406DD3FFE55691A243B3713B9C4DB8593186BD8F3E17B
FA647C8C549B4D354F0EA5BBFEFD3E831648E6228DD00B89CEA7F6DF83CC1CFC
CB8B7738E2F2738B179A253ED22E0D4F4C63AFBB22F7BA2598DC87ED04FF9FC4
9DB734B5AB8D475DDCE37247D8DD123AA777654F3739CB71EA758D07B67A95F2
A32FF46437C058BF36158E48A34A730D3D92EB44C1E486C249D023921F466711
ECE40CDBFAF8CE4B0AC46D29D09CF268AD8F2741A27F13D62CA83C674C32BC39
BBFD7DD42BAD2B9DDD6BCB6A5BD9FA1C0CF0774965903FE3312EE0F959752768
C00E81F4F28BD7E773A47C5755AE5075F6457435B63E21A90DB0425A046095C9
EC283ABD6D9BE1E668FA1465BDFBF8BF6BEBA17B964FD60B6BD7EEE28E079839
55D8CD7F0D668480E7CBA2C6A47C73787083D47443E16C06AB96BDF35C9476A3
D356AAE101F9DE2341A34555B23B565B74814BE7FE83B75E06CB8C8B2190E82C
FBA8D0AAD2A9C4E6D7D6A83989878BDDE27F73AADAF87CB573C74761ACDF5AB4
5B9735E84882282127929357E9CF4B6499B576C8A79F9230E9528FA2F3A703B6
5FC71B95433958A67F2F08D286E2B3A0E5691930D2DCB7C97CAD3733C7D8C5F6
114CDB7895FB51E2B9D730007747673B8BA83614C7AE9A3103E8C7760EFD2887
3FED8D79A876CAA55F9EC99D33AAA7B62E1A3322EB8E6A67B79946CFCC3C8BF6
463B07C454165A5863008D67BF073F9E1BD0507C4512A0F8E557B08F35640998
A261DAE743A146A525248A3518F8824E952E2EDCFA845FF75879E613837A1AFD
6251CD6188C92845D67E00BE2D4D69C8DC14D17696B8246A64A49DC5F61B330F
1A7B5FE881DF896A0A69580E3299A66E23880FD0A7FDDB1B8E734898AD3373B0
B2D9482A837C7C745044793A961CCA98829790107173AD41ECF54706520B5206
D41464BD1421CB99C10FAFB1DC52D0C40C21C830C658CDFCC0DEB1E54BED772A
1FEE615D345B80DB798BC93ED0C231DE4332E2D7D2FFF85E97804A1E02375D8A
20F678B5A1FAF53C0877C901FFE8A5B56AACD1A3334FACD5965BE02123DC0525
2E6A88DC469B4FCB37FBE84FD31CC090FB6B98C5DB4AE554C784B4F6BA7E39DD
5274B6F7E905C555ADED6D8B3DB81B7B0B62F6C20E309D17ECA8AC378E1BBC01
E9AAC46C5AD4147A498AD99F170BA2063AFA07989FD0AE9DE929077887DCCEA0
0E0BDE07FA0A86C536C7B2420CD9E7562CCA5B7AC5988CCE53C3F68E53061A22
9622FF2A9595AF39F5CB8CB487A7159725D573450174038964F577A871853D3C
C6FB09D701E760B4171BC26CBF6C7524AE0CE1F3C1889597C21F8648F93B5FCF
710A9F5C6A5FC1CAB3D53CF85015086CEB41BCB1D4F6CEC7113AD867EF5FA534
67FD7DD0C47B09B9F8C30B61BD51BE497AEBD4B74E2A9C82E01ADE32A66DFF6F
F042EC8DA702164F26C4B789B2E9788E6E09C440089010C43190E114D9F5EA85
D4BA7DFC22F011DC5E1B6C7CBAC13D6D929C3E0673F4A9F4E2A970B93352A076
74D1444C61507D9505134586E5036E6772EE503C7F00B71AA345927B3A2CD7A4
9F5575C3085250C3383C0AD33300A2C087B41E66AECE3B8DB8A77B8AA6D97CF2
CA23F0DBF4485A1C0DBCECE287D95F8D70DF80B11473D70E527C1F6804950A9F
5B19411285FB45775EC9AFB05F9AADFBFD98A87C2FF38C314BA9CE41B7C4E664
E480838DD4299004329DB3E665AAC2FE5A53E295D627ED896D56876268C55981
FF3F19DFA5E6ED355B3020F9615F64273670A8EA36B0A106D37CC1051580EA3F
694DA991C9DF54A51D596A491827E6B53790343D7DF81E652ABC7D3DA38B58DE
EAE0DA56A20312F8C2803D904EE2B4389B5A680C55BB564B5C203539B5F7B445
8ED9D8CA51B789F5BE09152D1B44FBDD9594B628BEF543BDF9BB9EA182C4F4FB
98213E82636CA16D377A483023D13A3B9C658D4B9F1BE08808A67004A5EFF944
B9FEE34F193F055256BCB7CEDA4BFC3FF4668FAF9B175DD926F9774EBFE9F487
E91B8D332BEFCE996F6F1B800F3F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
%%BeginFont: CMSY10
%!PS-AdobeFont-1.1: CMSY10 1.0
%%CreationDate: 1991 Aug 15 07:20:57
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMSY10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.035 def
/isFixedPitch false def
end readonly def
/FontName /CMSY10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 0 /minus put
dup 1 /periodcentered put
dup 15 /bullet put
dup 98 /floorleft put
dup 99 /floorright put
readonly def
/FontBBox{-29 -960 1116 775}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
515DB70A8D4F6146FE068DC1E5DE8BC57033D79919697C81395D5B94C3AAAB11
52D73937B8F82D3E2E764DA1B3BE273CBB84E4B1919CC1D5586C21F6FC23BF1D
82DE5A8DFA3E8F5C25622AAB9F7A588532D13C663079C8FB84DA6BD4D2DEDB2F
84CE30D0F188EEA2785B492B7704AF51ECE436B1B191B22DFEB7894DD5457E4C
D14787B5F8630B42B3FC9C15A1B7B887063D92009BE4A5A9F8416CD9187851B8
CF244E087740953A1639BAFFB86CA7C99FBD401FB9C556F330F1E4E987E715F8
59A751BA88003F808F85A690E55812D8FBAE945A5AD24FF79D59C9876B3CCEAD
7F3CA53A1A9E2696392C43162DA3750DABE6FDDF4BA3A8FF6CE8E6E7D4E92E8E
06573D664D3184306E7B32D862275F37740FA5412409F426CB263FCED7A08908
E4793014F40F02A5A47DB329278010A51B5BE8521395E537850830738C97DCC0
3E453841525C9A98FE7BDDE2900AD614D9D9FD12953BF5DDB4A363C602A12048
FBDAB86A4892CCB9A725FCB0BD1813DE0FE3C8245C204338212305011C1DF0E4
B1CBE8F029391771E8AFE71FC30DBB778B8851579D9479BF4A743015F028B7A2
3E2CDEE4FE5948FD361F22FEBBC32B93B3581485FFA73965252FD6007288B79A
DE990172DB16D224E0B7FD4B1EF6B080A5298699CAAF9D8607C0C812994CB80F
B108628A6B9533EECEAEB93FB70A305CD7FEDE78737E9C3A77EAE67DB899EAE5
B2BDCBE463EFBDAE0C19CF14D906BFEE7E13E727869127A61632CC57E3ABAF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
TeXDict begin 39139632 55387786 1000 600 600 (sane.dvi)
@start /Fa 134[40 3[51 25 35 35 1[45 45 51 71 3[25 3[40
1[40 1[45 97[{TeXBase1Encoding ReEncodeFont}13 90.9091
/Times-BoldItalic rf /Fb 215[67 40[{}1 83.022 /CMEX10
rf /Fc 135[60 1[60 60 60 60 60 1[60 60 60 60 60 2[60
1[60 60 60 60 60 1[60 6[60 1[60 1[60 60 60 60 60 1[60
60 60 60 60 2[60 60 60 1[60 60 60 1[60 65[{
TeXBase1Encoding ReEncodeFont}37 99.6264 /Courier rf
/Fd 133[48 6[48 48 2[48 5[48 2[48 48 48 12[48 3[48 4[48
8[48 3[48 65[{}13 90.9091 /CMTT10 rf /Fe 133[33 37 1[54
37 37 21 29 25 1[37 37 37 58 21 37 1[21 37 37 25 33 37
33 37 33 11[54 46 42 50 3[54 4[25 3[46 1[50 1[54 18[19
25 42[42 2[{TeXBase1Encoding ReEncodeFont}35 74.7198
/Times-Roman rf /Ff 206[25 49[{TeXBase1Encoding ReEncodeFont}1
49.8132 /Times-Roman rf /Fg 206[33 49[{TeXBase1Encoding ReEncodeFont}1
66.4176 /Times-Roman rf /Fh 134[45 52 1[44 52 3[41 2[55
1[27 47 6[47 39 32[69 3[71 45 71 1[25 35[55 22[{}16 90.9091
/CMMI10 rf /Fi 204[35 35 35 49[{}3 66.4176 /CMR8 rf /Fj
194[71 3[45 45 45 45 45 1[45 45 45 5[71 1[35 35 40[{}12
90.9091 /CMR10 rf /Fk 156[40 40 82[45 13[25 71{}5 90.9091
/CMSY10 rf /Fl 134[40 1[61 40 45 25 35 35 1[45 45 45
66 25 40 25 25 45 45 25 40 45 40 45 45 51[30 45[{
TeXBase1Encoding ReEncodeFont}24 90.9091 /Times-Italic
rf /Fm 134[50 50 72 50 55 33 39 44 1[55 50 55 83 28 2[28
55 50 1[44 55 44 55 50 12[66 55 72 1[61 78 72 94 3[39
78 1[61 1[72 72 66 72 7[50 50 50 50 50 50 50 50 50 50
1[25 33 45[{TeXBase1Encoding ReEncodeFont}47 99.6264
/Times-Bold rf /Fn 134[60 1[86 1[66 40 47 53 66 66 60
66 100 33 66 1[33 66 60 1[53 66 53 66 60 9[120 86 1[80
66 86 1[73 93 86 2[93 1[47 2[73 80 86 86 1[86 11[60 60
60 60 60 2[30 40 45[{TeXBase1Encoding ReEncodeFont}43
119.552 /Times-Bold rf /Fo 139[57 1[76 1[96 7[96 2[76
3[86 29[124 12[86 86 86 86 86 86 49[{TeXBase1Encoding ReEncodeFont}13
172.188 /Times-Bold rf /Fp 130[55 1[55 55 55 55 55 55
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
55 55 55 1[55 1[55 55 55 55 55 55 55 55 55 55 55 55 1[55
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 1[55
55 55 55 55 55 55 1[55 55 2[55 55 55 55 55 55 55 1[55
55 55 55 2[55 55 35[{TeXBase1Encoding ReEncodeFont}80
90.9091 /Courier rf /Fq 104[91 45 1[40 40 24[40 45 45
66 45 45 25 35 30 45 45 45 45 71 25 45 25 25 45 45 30
40 45 40 45 40 30 5[56 66 66 86 66 66 56 51 61 1[51 66
66 81 56 66 35 30 66 66 51 56 66 61 61 66 5[25 25 45
45 45 45 45 45 45 45 45 45 25 23 30 23 2[30 30 30 35[51
51 2[{TeXBase1Encoding ReEncodeFont}77 90.9091 /Times-Roman
rf /Fr 133[40 45 1[66 45 51 30 35 40 51 51 45 51 76 25
51 1[25 51 45 30 40 51 40 51 45 10[66 66 61 51 2[56 71
66 4[35 3[61 66 66 61 66 6[30 1[45 45 45 45 45 45 45
45 4[23 2[30 30 40[{TeXBase1Encoding ReEncodeFont}49
90.9091 /Times-Bold rf /Fs 135[103 149 103 115 69 80
92 1[115 103 115 172 57 115 1[57 115 103 69 92 115 92
115 103 12[138 115 2[126 1[149 1[138 2[80 2[126 138 1[149
1[149 23[69 69 40[{TeXBase1Encoding ReEncodeFont}34 206.559
/Times-Bold rf /Ft 201[50 1[50 1[50 1[50 2[33 45[{
TeXBase1Encoding ReEncodeFont}5 99.6264 /Times-Roman
rf /Fu 139[48 67 57 2[86 86 4[48 3[76 86 2[76 10[124
2[96 4[124 8[105 3[124 11[86 3[86 86 1[43 46[{
TeXBase1Encoding ReEncodeFont}18 172.188 /Times-Roman
rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: A4
end
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 941 1939 a Fu(SANE)44 b(Standard)g(V)-19
b(ersion)44 b(1.05)1718 2698 y Ft(2006-04-02)p eop end
%%Page: 1 2
TeXDict begin 1 1 bop 0 845 a Fs(Contents)0 1439 y Fr(1)91
b(Pr)n(eface)3430 b(6)136 1610 y Fq(1.1)96 b(About)24
b(This)g(Document)h(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)128 b(6)345 1781 y(1.1.1)110
b(T)-7 b(ypographic)26 b(Con)l(v)o(entions)92 b(.)45
b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)128
b(6)0 2043 y Fr(2)91 b(Intr)n(oduction)3227 b(7)136 2214
y Fq(2.1)96 b(T)-6 b(erminology)30 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)128
b(7)0 2476 y Fr(3)91 b(The)23 b(SANE)e(En)l(vir)n(onment)2770
b(8)136 2647 y Fq(3.1)96 b(Attaching)26 b(to)d(a)g(SANE)e(back)o(end)81
b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)128
b(8)136 2818 y(3.2)96 b(Image)24 b(Data)g(F)o(ormat)63
b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)82 b(10)345 2989 y(3.2.1)110 b(Image)24
b(T)m(ransmission)85 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)82 b(10)0 3251 y Fr(4)91 b(The)23
b(SANE)e(A)n(pplication)i(Pr)n(ogrammer)i(Interface)g(\(API\))1639
b(13)136 3422 y Fq(4.1)96 b(V)-10 b(ersion)25 b(Control)55
b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(13)136 3593 y(4.2)96
b(Data)24 b(T)-7 b(ypes)87 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(14)345 3764 y(4.2.1)110 b(Base)24 b(T)-7 b(ypes)64
b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)82 b(14)345 3935 y(4.2.2)110 b(Boolean)25
b(T)-7 b(ype)41 b(.)k(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(15)345 4106 y(4.2.3)110
b(Inte)o(ger)25 b(T)-7 b(ype)88 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(15)345
4277 y(4.2.4)110 b(Fix)o(ed-point)26 b(T)-7 b(ype)57
b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)82 b(15)345 4448 y(4.2.5)110 b(T)-6 b(e)o(xt)46
b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(16)345 4619 y(4.2.6)110
b(Scanner)25 b(Handle)f(T)-7 b(ype)39 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(17)345 4790
y(4.2.7)110 b(Status)24 b(T)-7 b(ype)54 b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(17)345 4961 y(4.2.8)110 b(De)n(vice)24 b(Descriptor)i(T)-7
b(ype)91 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
82 b(17)345 5132 y(4.2.9)110 b(Option)25 b(Descriptor)g(T)-7
b(ype)26 b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)82 b(18)1927 5381 y(1)p eop end
%%Page: 2 3
TeXDict begin 2 2 bop 136 123 a Fq(4.3)96 b(Operations)32
b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(21)345 292
y(4.3.1)110 b Fp(sane)p 861 292 28 4 v 31 w(init)75 b
Fq(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)82 b(21)345 462 y(4.3.2)110 b Fp(sane)p
861 462 V 31 w(exit)75 b Fq(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(24)345 632
y(4.3.3)110 b Fp(sane)p 861 632 V 31 w(get)p 1057 632
V 32 w(devices)54 b Fq(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)82 b(25)345 801 y(4.3.4)110 b Fp(sane)p
861 801 V 31 w(open)75 b Fq(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(25)345 971
y(4.3.5)110 b Fp(sane)p 861 971 V 31 w(close)88 b Fq(.)45
b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)82 b(25)345 1140 y(4.3.6)110 b Fp(sane)p 861 1140
V 31 w(get)p 1057 1140 V 32 w(option)p 1419 1140 V 30
w(descriptor)74 b Fq(.)45 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(26)345 1310 y(4.3.7)110 b Fp(sane)p 861 1310 V 31 w(control)p
1277 1310 V 30 w(option)27 b Fq(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)82 b(26)345 1479 y(4.3.8)110 b Fp(sane)p
861 1479 V 31 w(get)p 1057 1479 V 32 w(parameters)25
b Fq(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(28)345 1649 y(4.3.9)110 b Fp(sane)p 861 1649 V 31 w(start)88
b Fq(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)g(.)82 b(29)345 1819 y(4.3.10)65 b Fp(sane)p
861 1819 V 31 w(read)75 b Fq(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(30)345 1988
y(4.3.11)65 b Fp(sane)p 861 1988 V 31 w(cancel)33 b Fq(.)45
b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)82 b(30)345 2158 y(4.3.12)65 b Fp(sane)p 861 2158
V 31 w(set)p 1057 2158 V 32 w(io)p 1199 2158 V 31 w(mode)78
b Fq(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(31)345 2327 y(4.3.13)65 b Fp(sane)p 861 2327 V 31 w(get)p
1057 2327 V 32 w(select)p 1419 2327 V 30 w(fd)37 b Fq(.)45
b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(31)345 2497 y(4.3.14)65 b Fp(sane)p 861 2497 V 31 w(strstatus)73
b Fq(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
82 b(32)136 2667 y(4.4)96 b(Code)24 b(Flo)n(w)k(.)45
b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(32)136 2836 y(4.5)96
b(W)-7 b(ell-Kno)n(wn)24 b(Options)63 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(33)345 3006 y(4.5.1)110 b(Option)25 b(Number)e(Count)70
b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(34)345 3175 y(4.5.2)110 b(Scan)24 b(Resolution)i(Option)87
b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(34)345 3345 y(4.5.3)110 b(Pre)n(vie)n(w)23 b(Mode)h(Option)85
b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(34)345 3514 y(4.5.4)110 b(Scan)24 b(Area)f(Options)65
b(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)82 b(34)0 3775 y Fr(5)91 b(Netw)o(ork)23 b(Pr)n(otocol)2989
b(36)136 3944 y Fq(5.1)96 b(Data)24 b(T)-7 b(ype)23 b(Encoding)j(.)45
b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)g(.)82 b(37)345 4114 y(5.1.1)110 b(Primiti)n(v)o(e)24
b(Data)f(T)-7 b(ypes)53 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)82 b(37)345 4284 y(5.1.2)110 b(T)-7
b(ype)24 b(Constructors)86 b(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(37)136 4453 y(5.2)96
b(Remote)24 b(Procedure)h(Call)f(Requests)48 b(.)d(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(38)345 4623 y(5.2.1)110
b Fp(SANE)p 861 4623 V 31 w(NET)p 1057 4623 V 32 w(INIT)82
b Fq(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)82 b(38)345 4792 y(5.2.2)110 b Fp(SANE)p 861 4792
V 31 w(NET)p 1057 4792 V 32 w(GET)p 1254 4792 V 31 w(DEVICES)62
b Fq(.)45 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(39)345 4962 y(5.2.3)110 b Fp(SANE)p 861 4962 V 31 w(NET)p
1057 4962 V 32 w(OPEN)82 b Fq(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(39)345 5132 y(5.2.4)110
b Fp(SANE)p 861 5132 V 31 w(NET)p 1057 5132 V 32 w(CLOSE)27
b Fq(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)82 b(40)1927 5381 y(2)p eop end
%%Page: 3 4
TeXDict begin 3 3 bop 345 123 a Fq(5.2.5)110 b Fp(SANE)p
861 123 28 4 v 31 w(NET)p 1057 123 V 32 w(GET)p 1254
123 V 31 w(OPTION)p 1615 123 V 30 w(DESCRIPTORS)28 b
Fq(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)82 b(40)345 294 y(5.2.6)110 b
Fp(SANE)p 861 294 V 31 w(NET)p 1057 294 V 32 w(CONTROL)p
1474 294 V 29 w(OPTION)36 b Fq(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)82 b(40)345 466 y(5.2.7)110 b Fp(SANE)p 861 466 V
31 w(NET)p 1057 466 V 32 w(GET)p 1254 466 V 31 w(PARAMETERS)34
b Fq(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(41)345
638 y(5.2.8)110 b Fp(SANE)p 861 638 V 31 w(NET)p 1057
638 V 32 w(START)27 b Fq(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)82 b(41)345 809 y(5.2.9)110 b
Fp(SANE)p 861 809 V 31 w(NET)p 1057 809 V 32 w(CANCEL)41
b Fq(.)k(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(42)345 981 y(5.2.10)65 b Fp(SANE)p 861 981 V 31 w(NET)p
1057 981 V 32 w(AUTHORIZE)80 b Fq(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)
f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)g(.)82 b(43)345 1153 y(5.2.11)65 b Fp(SANE)p
861 1153 V 31 w(NET)p 1057 1153 V 32 w(EXIT)82 b Fq(.)46
b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(43)0 1415 y Fr(6)91 b(Contact)24 b(Inf)n(ormation)2871
b(44)1927 5381 y Fq(3)p eop end
%%Page: 4 5
TeXDict begin 4 4 bop 0 846 a Fs(List)52 b(of)g(Figur)l(es)136
1349 y Fq(3.1)96 b(Example)24 b(SANE)d(Hiearchy)36 b(.)45
b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
128 b(9)136 1521 y(3.2)96 b(T)m(ransfer)25 b(order)f(of)g(image)g(data)
g(bytes)64 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(11)136 1693 y(3.3)96 b(Bit)23 b(and)h(byte)h(order)f(or)g(image)g
(data)70 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
82 b(11)136 1947 y(4.1)96 b(Code)24 b(\003o)n(w)53 b(.)45
b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(32)136 2119 y(4.2)96
b(Scan)24 b(area)g(options)61 b(.)46 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(35)1927 5381 y(4)p eop end
%%Page: 5 6
TeXDict begin 5 5 bop 0 846 a Fs(List)52 b(of)g(T)-19
b(ables)136 1349 y Fq(4.1)96 b(Status)24 b(Codes)h(.)45
b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(17)136 1521 y(4.2)96
b(Prede\002ned)25 b(De)n(vice)f(Information)i(Strings)47
b(.)f(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(18)136
1693 y(4.3)96 b(Option)25 b(V)-10 b(alue)23 b(T)-7 b(ypes)24
b(\()p Fp(SANE)p 1343 1693 28 4 v 31 w(Value)p 1649 1693
V 31 w(Type)p Fq(\))75 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82
b(20)136 1864 y(4.4)96 b(Physical)25 b(Units)f(\()p Fp(SANE)p
1151 1864 V 31 w(Unit)p Fq(\))k(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(20)136 2036 y(4.5)96
b(Option)25 b(Capabilities)62 b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(22)136
2208 y(4.6)96 b(Option)25 b(V)-10 b(alue)23 b(Constraints)57
b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)g(.)82 b(23)136 2379 y(4.7)96 b(Action)25 b(V)-10
b(alues)24 b(\()p Fp(SANE)p 1136 2379 V 31 w(Action)p
Fq(\))69 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
82 b(26)136 2551 y(4.8)96 b(Additional)26 b(Information)g(Returned)f
(When)f(Setting)g(an)g(Option)j(.)45 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)82 b(27)136 2722
y(4.9)96 b(Frame)23 b(F)o(ormat)g(\()p Fp(SANE)p 1139
2722 V 32 w(Frame)p Fq(\))52 b(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
h(.)f(.)g(.)g(.)g(.)g(.)82 b(28)1927 5381 y(5)p eop end
%%Page: 6 7
TeXDict begin 6 6 bop 0 804 a Fo(Chapter)44 b(1)0 1278
y Fs(Pr)l(eface)0 1782 y Fq(The)25 b(SANE)e(standard)28
b(is)e(being)h(de)n(v)o(eloped)g(by)f(a)f(group)i(of)f(free-softw)o
(are)i(de)n(v)o(elopers.)38 b(The)25 b(process)i(is)f(open)g(to)g(the)0
1895 y(public)e(and)e(comments)h(as)f(well)g(as)g(suggestions)k(for)c
(impro)o(v)o(ements)i(are)e(welcome.)29 b(Information)24
b(on)f(ho)n(w)e(to)h(join)h(the)0 2008 y(SANE)e(de)n(v)o(elopment)26
b(process)f(can)f(be)g(found)g(in)g(Chapter)g(6.)0 2179
y(The)32 b(SANE)f(standard)k(is)e(intended)i(to)d(streamline)j(softw)o
(are)f(de)n(v)o(elopment)h(by)e(pro)o(viding)j(a)c(standard)j
(application)0 2292 y(programming)25 b(interf)o(ace)f(to)f(access)h
(raster)g(scanner)g(hardw)o(are.)30 b(This)22 b(should)i(reduce)g(the)f
(number)h(of)e(dif)n(ferent)j(dri)n(v)o(er)0 2405 y(implementations,)i
(thereby)e(reducing)h(the)e(need)g(for)g(reimplementing)i(similar)e
(code.)0 2756 y Fn(1.1)119 b(About)31 b(This)f(Document)0
3022 y Fq(This)35 b(document)j(is)d(intended)j(for)d(de)n(v)o(elopers)j
(who)e(are)f(creating)j(either)f(an)e(application)k(that)d(requires)h
(access)g(to)0 3135 y(raster)24 b(scanner)h(hardw)o(are)f(and)f(for)g
(de)n(v)o(elopers)j(who)c(are)h(implementing)i(a)e(SANE)d(dri)n(v)o(er)
-5 b(.)29 b(It)23 b(does)h(not)f(co)o(v)o(er)g(speci\002c)0
3248 y(implementations)35 b(of)c(SANE)f(components.)55
b(Its)32 b(sole)g(purpose)i(is)d(to)h(describe)i(and)e(de\002ne)g(the)g
(SANE)d(application)0 3361 y(interf)o(ace)g(that)f(will)f(enable)i(an)o
(y)e(application)j(on)e(an)o(y)f(platform)h(to)f(interoperate)k(with)c
(an)o(y)g(SANE)e(back)o(end)k(for)f(that)0 3474 y(platform.)0
3645 y(The)c(remainder)i(of)e(this)g(document)i(is)e(or)n(ganized)j(as)
d(follo)n(ws.)32 b(Chapter)25 b(2)f(pro)o(vides)i(introductional)i
(material.)k(Chap-)0 3758 y(ter)24 b(3)f(presents)i(the)f(en)l
(vironment)j(SANE)21 b(is)i(designed)j(for)-5 b(.)29
b(Chapter)24 b(4)g(details)h(the)f(SANE)d(Application)26
b(Programmer)0 3871 y(Interf)o(ace.)67 b(Chapter)36 b(5)f(speci\002es)i
(the)e(netw)o(ork)i(protocol)h(that)d(can)h(be)g(used)g(to)f(implement)
i(the)e(SANE)e(API)h(in)i(a)0 3984 y(netw)o(ork)30 b(transparent)i(f)o
(ashion.)47 b(Finally)-6 b(,)31 b(Chapter)f(6)f(gi)n(v)o(es)h
(information)h(on)e(ho)n(w)g(to)g(join)g(the)g(SANE)e(de)n(v)o
(elopment)0 4097 y(process.)0 4405 y Fm(1.1.1)99 b(T)-7
b(ypographic)25 b(Con)l(v)o(entions)0 4638 y Fq(Changes)g(since)f(the)g
(last)g(re)n(vision)i(of)d(this)h(document)h(are)f(highlighted)j(lik)o
(e)d(this:)1927 5381 y(6)p eop end
%%Page: 7 8
TeXDict begin 7 7 bop 0 804 a Fo(Chapter)44 b(2)0 1278
y Fs(Intr)l(oduction)0 1782 y Fq(SANE)22 b(is)i(an)g(application)k
(programming)e(interf)o(ace)h(\(API\))c(that)i(pro)o(vides)h
(standardized)i(access)e(to)e(an)o(y)g(raster)i(image)0
1895 y(scanner)e(hardw)o(are.)30 b(The)22 b(standardized)27
b(interf)o(ace)e(allo)n(ws)d(to)h(write)g(just)g(one)g(dri)n(v)o(er)g
(for)g(each)g(scanner)i(de)n(vice)e(instead)0 2008 y(of)30
b(one)h(dri)n(v)o(er)f(for)h(each)g(scanner)h(and)e(application.)52
b(The)30 b(reduction)i(in)e(the)h(number)g(of)f(required)i(dri)n(v)o
(ers)f(pro)o(vides)0 2120 y(signi\002cant)24 b(sa)n(vings)h(in)d(de)n
(v)o(elopment)j(time.)j(More)23 b(importantly)-6 b(,)25
b(SANE)20 b(raises)j(the)g(le)n(v)o(el)g(at)f(which)h(applications)j
(can)0 2233 y(w)o(ork.)i(As)21 b(such,)h(it)g(will)f(enable)i
(applications)i(that)d(were)g(pre)n(viously)i(unheard)g(of)d(in)g(the)h
(UNIX)e(w)o(orld.)29 b(While)22 b(SANE)0 2346 y(is)27
b(primarily)i(tar)n(geted)h(at)d(a)g(UNIX)e(en)l(vironment,)31
b(the)d(standard)h(has)f(been)g(carefully)i(designed)f(to)f(mak)o(e)f
(it)g(possible)0 2459 y(to)c(implement)i(the)f(API)e(on)i(virtually)i
(an)o(y)d(hardw)o(are)i(or)f(operating)i(system.)0 2631
y(SANE)20 b(is)j(an)g(acron)o(ym)h(for)f(\223Scanner)h(Access)f(No)n(w)
f(Easy)-6 b(.)g(\224)28 b(Also,)23 b(the)g(hope)h(is)f(that)g(SANE)e
(is)h(sane)i(in)f(the)g(sense)h(that)0 2744 y(it)g(will)f(allo)n(w)h
(easy)h(implementation)i(of)d(the)g(API)e(while)j(accommodating)i(all)d
(features)h(required)i(by)d(today')-5 b(s)25 b(scanner)0
2857 y(hardw)o(are)31 b(and)f(applications.)51 b(Speci\002cally)-6
b(,)33 b(SANE)27 b(should)k(be)f(broad)h(enough)g(to)f(accommodate)i
(de)n(vices)f(such)f(as)0 2970 y(scanners,)25 b(digital)h(still)e(and)g
(video)g(cameras,)h(as)e(well)g(as)h(virtual)h(de)n(vices)g(lik)o(e)f
(image)g(\002le)f(\002lters.)0 3321 y Fn(2.1)119 b(T)-11
b(erminology)0 3587 y Fq(An)21 b(application)j(that)e(uses)g(the)g
(SANE)d(interf)o(ace)k(is)f(called)g(a)f(SANE)e Fl(fr)l(ontend)p
Fq(.)30 b(A)20 b(dri)n(v)o(er)i(that)g(implements)h(the)f(SANE)0
3700 y(interf)o(ace)31 b(is)d(called)i(a)f(SANE)d Fl(bac)n(k)o(end)p
Fq(.)46 b(A)28 b Fl(meta)h(bac)n(k)o(end)k Fq(pro)o(vides)e(some)d
(means)i(to)e(manage)i(one)f(or)f(more)h(other)0 3812
y(back)o(ends.)1927 5381 y(7)p eop end
%%Page: 8 9
TeXDict begin 8 8 bop 0 804 a Fo(Chapter)44 b(3)0 1278
y Fs(The)51 b(SANE)g(En)-8 b(vir)l(onment)0 1781 y Fq(SANE)27
b(is)j(de\002ned)g(as)g(a)f(C-callable)j(library)f(interf)o(ace.)50
b(Accessing)32 b(a)d(raster)i(scanner)g(de)n(vice)g(typically)h
(consists)g(of)0 1894 y(tw)o(o)c(phases:)39 b(\002rst,)29
b(v)n(arious)g(controls)h(of)e(the)h(scanner)g(need)g(to)f(be)g(setup)h
(or)f(queried.)44 b(In)28 b(the)g(second)i(phase,)g(one)e(or)0
2007 y(more)c(images)g(are)g(acquired.)0 2178 y(Since)33
b(the)f(de)n(vice)i(controls)g(are)f(widely)g(dif)n(ferent)h(from)e(de)
n(vice)i(to)e(de)n(vice,)k(SANE)30 b(pro)o(vides)k(a)e(generic)i
(interf)o(ace)0 2291 y(that)25 b(mak)o(es)g(it)f(easy)h(for)g(a)f
(frontend)j(to)d(gi)n(v)o(e)h(a)f(user)h(access)g(to)g(all)f(controls)j
(without)e(ha)n(ving)i(to)d(understand)k(each)d(and)0
2404 y(e)n(v)o(ery)g(de)n(vice)h(control.)34 b(The)24
b(design)j(principle)g(used)e(here)g(is)g(to)g(abstract)h(each)g(de)n
(vice)g(control)g(into)f(a)g(SANE)d Fl(option)p Fq(.)0
2517 y(An)28 b(option)j(is)d(a)h(self-describing)k(name/v)n(alue)e
(pair)-5 b(.)45 b(F)o(or)28 b(e)o(xample,)j(the)e(brightness)j(control)
e(of)f(a)f(camera)i(might)f(be)0 2630 y(represented)e(by)c(an)h(option)
h(called)g Fp(brightness)18 b Fq(whose)24 b(v)n(alue)g(is)g(an)f(inte)o
(ger)i(in)f(the)f(range)i(from)e(0)h(to)f(255.)0 2801
y(W)l(ith)e(self-describing)k(options,)e(a)d(back)o(end)j(need)f(not)f
(be)f(concerned)k(with)c Fl(pr)m(esentation)k Fq(issues:)30
b(the)21 b(back)o(end)h(simply)0 2914 y(pro)o(vides)i(a)e(list)h(of)f
(options)i(that)f(describe)i(all)d(the)h(controls)h(a)n(v)n(ailable)h
(in)d(the)h(de)n(vice.)29 b(Similarly)-6 b(,)23 b(there)g(are)g
(bene\002ts)g(to)0 3027 y(the)f(frontend:)31 b(it)22
b(need)h(not)f(be)g(concerned)j(with)d(the)g Fl(meaning)h
Fq(of)f(each)h(option.)30 b(It)21 b(simply)i(pro)o(vides)h(means)f(to)e
(present)0 3140 y(and)j(alter)g(the)g(options)i(de\002ned)e(by)g(the)f
(back)o(end.)0 3491 y Fn(3.1)119 b(Attaching)31 b(to)e(a)h(SANE)g(back)
o(end)0 3757 y Fq(The)d(process)i(through)g(which)e(a)g(SANE)e
(frontend)k(connects)h(to)d(a)f(back)o(end)k(is)d(platform)h
(dependent.)42 b(Se)n(v)o(eral)28 b(possi-)0 3870 y(bilities)d(e)o
(xist:)136 4115 y Fk(\017)46 b Fr(Static)25 b(linking:)31
b Fq(A)24 b(SANE)e(back)o(end)27 b(may)e(be)g(link)o(ed)h(directly)h
(into)e(a)f(frontend.)35 b(While)25 b(the)g(simplest)h(method)227
4228 y(of)d(attaching)i(to)d(a)g(back)o(end,)j(it)d(is)g(some)n(what)h
(limited)g(in)g(functionality)j(since)e(the)e(a)n(v)n(ailable)j(de)n
(vices)f(is)e(limited)227 4341 y(to)34 b(the)g(ones)g(for)g(which)g
(support)i(has)e(been)g(link)o(ed)i(in)d(when)h(the)g(frontend)i(w)o
(as)d(b)n(uilt.)60 b(But)34 b(e)n(v)o(en)f(so)h(static)227
4454 y(linking)k(can)e(be)f(quite)i(useful,)j(particularly)e(when)e
(combined)i(with)d(a)g(back)o(end)j(that)e(can)g(access)h(scanners)227
4567 y(via)30 b(a)g(netw)o(ork.)49 b(Also,)31 b(it)f(is)f(possible)k
(to)c(support)j(multiple)f(back)o(ends)i(simultaneously)g(by)d
(implementing)j(a)227 4680 y(meta)h(back)o(end)i(that)e(manages)h(se)n
(v)o(eral)f(back)o(ends)i(that)e(ha)n(v)o(e)h(been)f(compiled)h(in)f
(such)g(a)f(manner)i(that)f(the)o(y)227 4793 y(e)o(xport)29
b(unique)g(function)g(names.)41 b(F)o(or)26 b(e)o(xample,)j(a)e(back)o
(end)i(called)g Fp(be)c Fq(w)o(ould)j(normally)h(e)o(xport)f(a)f
(function)227 4906 y(called)g Fp(sane)p 694 4906 28 4
v 31 w(read\(\))p Fq(.)33 b(If)25 b(each)i(back)o(end)h(w)o(ould)f(pro)
o(vide)g(such)g(a)f(function,)i(static)f(linking)h(w)o(ould)e(f)o(ail)h
(due)227 5019 y(to)i(multiple)h(con\003icting)h(de\002nitions)f(of)f
(the)g(same)g(symbol.)45 b(This)28 b(can)h(be)g(resolv)o(ed)i(by)d(ha)n
(ving)j(back)o(end)g Fp(be)227 5132 y Fq(include)26 b(a)d(header)i
(\002le)e(that)h(has)g(lines)g(of)g(the)f(form:)1927
5381 y(8)p eop end
%%Page: 9 10
TeXDict begin 9 9 bop 427 123 a Fp(#define)52 b(sane_read)e
(be_sane_read)227 310 y Fq(W)l(ith)30 b(de\002nitions)i(of)e(this)g
(kind,)i(back)o(end)g Fp(be)c Fq(will)i(e)o(xport)h(function)h(name)d
Fp(be)p 2899 310 28 4 v 32 w(sane)p 3151 310 V 31 w(read\(\))p
Fq(.)44 b(Thus,)31 b(all)227 423 y(back)o(ends)22 b(will)c(e)o(xport)i
(unique)g(names.)28 b(As)18 b(long)h(as)g(a)g(meta)f(back)o(end)j(kno)n
(ws)e(about)h(these)g(names,)g(it)e(is)h(possible)227
536 y(to)24 b(combine)h(se)n(v)o(eral)f(back)o(ends)i(at)e(link)g(time)
f(and)h(select)h(and)f(use)g(them)f(dynamically)j(at)e(runtime.)136
724 y Fk(\017)46 b Fr(Dynamic)28 b(linking:)38 b Fq(A)27
b(simpler)i(yet)f(more)h(po)n(werful)g(w)o(ay)f(to)g(support)i
(multiple)f(back)o(ends)i(is)d(to)g(e)o(xploit)i(dy-)227
837 y(namic)e(linking)i(on)e(platforms)h(that)f(support)i(it.)41
b(In)28 b(this)g(case,)h(a)e(frontend)j(is)e(link)o(ed)h(against)g(a)e
(shared)j(library)227 950 y(that)25 b(implements)h(an)o(y)e(SANE)d
(back)o(end.)33 b(Since)24 b(each)h(dynamically)i(link)o(ed)f(back)o
(end)g(e)o(xports)f(the)g(same)f(set)g(of)227 1063 y(global)30
b(symbols)g(\(all)f(starting)i(with)e(the)g(pre\002x)g
Fp(sane)p 2057 1063 V 30 w Fq(\),)h(the)f(dynamic)h(library)g(that)f
(gets)g(loaded)i(at)d(runtime)227 1176 y(does)c(not)f(necessarily)j(ha)
n(v)o(e)e(to)f(be)g(the)g(same)g(one)g(as)g(one)h(the)f(frontend)i(got)
e(link)o(ed)i(against.)k(In)23 b(other)h(w)o(ords,)f(it)227
1288 y(is)h(possible)h(to)f(switch)g(the)g(back)o(end)h(by)f
(installing)i(the)e(appropriate)j(back)o(end)f(dynamic)e(library)-6
b(.)227 1439 y(More)23 b(importantly)-6 b(,)25 b(dynamic)e(linking)i
(mak)o(es)e(it)f(easy)h(to)g(implement)g(a)f(meta)g(back)o(end)j(that)e
(loads)h(other)f(back-)227 1552 y(ends)37 b Fl(on)e(demand)p
Fq(.)67 b(This)35 b(is)g(a)h(po)n(werful)g(mechanism)h(since)g(it)e
(allo)n(ws)h(adding)i(ne)n(w)d(back)o(ends)j(merely)e(by)227
1665 y(installing)26 b(a)e(shared)h(library)g(and)f(updating)i(a)d
(con\002guration)j(\002le.)136 1852 y Fk(\017)46 b Fr(Netw)o(ork)30
b(connection:)43 b Fq(Ar)n(guably)32 b(the)e(ultimate)h(w)o(ay)f(to)g
(attach)i(to)e(a)f(scanner)j(is)e(by)g(using)i(the)e(netw)o(ork)h(to)
227 1965 y(connect)f(to)e(a)f(back)o(end)k(on)d(a)f(remote)i(machine.)
43 b(This)27 b(mak)o(es)i(it)f(possible)i(to)d(scan)i(images)g(from)f
(an)o(y)g(host)g(in)227 2078 y(the)f(uni)n(v)o(erse,)h(as)e(long)h(as)g
(there)g(is)f(a)g(netw)o(ork)h(connection)j(to)c(that)h(host)g(and)g
(pro)o(vided)h(the)e(user)h(is)g(permitted)227 2191 y(to)d(access)h
(that)f(scanner)-5 b(.)0 2479 y
currentpoint currentpoint translate 0.64821 0.64821 scale neg exch neg exch translate
0 2479 a 0 2479 a
gsave currentpoint currentpoint translate 270 neg rotate neg exch neg exch translate
0 2479
a @beginspecial 0 @llx 0 @lly 355 @urx 722 @ury 3550
@rwi @setspecial
%%BeginDocument: figs/hierarchy.eps
%!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
%%EndDocument
@endspecial 2958 2479 a
currentpoint grestore moveto
2958 2479 a 0 2479 a
currentpoint currentpoint translate 1 0.64821 div 1 0.64821 div scale neg exch neg exch translate
0 2479
a 1267 4550 a Fq(Figure)24 b(3.1:)29 b(Example)24 b(SANE)d(Hiearchy)0
4881 y(The)27 b(abo)o(v)o(e)i(discussion)i(lists)e(just)f(a)f(fe)n(w)h
(w)o(ays)g(for)g(frontends)i(to)e(attach)h(to)f(a)g(back)o(end.)44
b(It)27 b(is)h(of)g(course)h(possible)h(to)0 4994 y(combine)d(these)g
(solutions)i(to)c(pro)o(vide)j(an)e(entire)h(hierarchy)h(of)d(SANE)f
(back)o(ends.)38 b(Such)26 b(a)g(hierarchy)h(is)f(depicted)i(in)0
5107 y(Figure)k(3.1.)50 b(The)31 b(\002gure)g(sho)n(ws)g(that)h
(machine)g(A)e(uses)h(a)g(dynamic-linking)k(based)d(meta)f(back)o(end)i
(called)f Fp(dll)d Fq(to)1927 5381 y(9)p eop end
%%Page: 10 11
TeXDict begin 10 10 bop 0 123 a Fq(access)28 b(the)f(back)o(ends)j
(called)e Fp(pnm)p Fq(,)d Fp(mustek)p Fq(,)f(and)j Fp(net)p
Fq(.)36 b(The)27 b(\002rst)f(tw)o(o)g(are)h(real)h(back)o(ends,)i
(whereas)d(the)g(last)h(one)0 236 y(is)i(a)g(meta)g(back)o(end)i(that)f
(pro)o(vides)h(netw)o(ork)f(transparent)j(access)d(to)f(remote)h
(scanners.)51 b(In)30 b(the)g(\002gure,)i(machine)f(B)0
349 y(pro)o(vides)h(non-local)h(access)f(to)e(its)g(scanners)i(through)
h(the)d(SANE)e(frontend)k(called)g Fp(saned)p Fq(.)45
b(The)30 b Fp(saned)d Fq(in)k(turn)0 462 y(has)23 b(access)h(to)e(the)h
Fp(hp)e Fq(and)i Fp(autolum)18 b Fq(back)o(ends)25 b(through)g(another)
f(instance)h(of)d(the)h Fp(dll)e Fq(back)o(end.)30 b(The)22
b Fp(autolum)0 574 y Fq(meta)k(back)o(end)j(is)e(used)g(to)f
(automatically)k(adjust)e(the)f(luminance)h(\(brightness\))i(of)d(the)f
(image)h(data)h(acquired)g(by)f(the)0 687 y(camera)d(back)o(end)i
(called)f Fp(qcam)p Fq(.)0 849 y(Note)f(that)g(a)g(meta)g(back)o(end)i
(really)f(is)f(both)h(a)e(frontend)k(and)d(a)g(back)o(end)i(at)e(the)g
(same)g(time.)30 b(It)23 b(is)h(a)g(frontend)i(from)e(the)0
962 y(vie)n(wpoint)h(of)f(the)g(back)o(ends)j(that)d(it)g(manages)h
(and)f(a)g(back)o(end)i(from)d(the)h(vie)n(wpoint)i(of)e(the)g
(frontends)i(that)f(access)g(it.)0 1075 y(The)j(name)g(\223meta)h(back)
o(end\224)h(w)o(as)e(chosen)i(primarily)g(because)g(the)e(SANE)e
(standard)31 b(describes)f(the)f(interf)o(ace)h(from)0
1188 y(the)24 b(vie)n(wpoint)h(of)e(a)g(\(real\))i(frontend.)0
1526 y Fn(3.2)119 b(Image)29 b(Data)g(F)m(ormat)0 1782
y Fq(Ar)n(guably)34 b(the)e(most)g(important)h(aspect)h(of)d(an)h
(image)g(acquisition)k(system)c(is)g(ho)n(w)f(images)i(are)f
(represented.)57 b(The)0 1895 y(SANE)34 b(approach)39
b(is)e(to)f(de\002ne)h(a)g(simple)g(yet)g(po)n(werful)h(representation)
j(that)c(is)f(suf)n(\002cient)i(for)f(v)n(ast)g(majority)h(of)0
2008 y(applications)f(and)c(de)n(vices.)59 b(While)34
b(the)f(representation)38 b(is)33 b(simple,)j(the)d(interf)o(ace)i(has)
f(been)g(de\002ned)g(carefully)h(to)0 2121 y(allo)n(w)h(e)o(xtending)i
(it)d(in)h(the)g(future)h(without)g(breaking)h(backw)o(ards)g
(compatibility)-6 b(.)68 b(Thus,)39 b(it)c(will)h(be)f(possible)j(to)0
2234 y(accommodate)26 b(future)e(applications)k(or)23
b(de)n(vices)i(that)f(were)g(not)f(anticipated)k(at)c(the)h(time)g
(this)g(standard)h(w)o(as)f(created.)0 2396 y(A)19 b(SANE)f(image)j(is)
f(a)g(rectangular)k(area.)k(The)20 b(rectangular)j(area)e(is)f(subdi)n
(vided)k(into)d(a)f(number)h(of)f(ro)n(ws)g(and)h(columns.)0
2509 y(At)30 b(the)h(intersection)i(of)e(each)g(ro)n(w)f(and)h(column)h
(is)e(a)g(quadratic)j(pix)o(el.)51 b(A)29 b(pix)o(el)i(consists)i(of)d
(one)h(or)g(more)f(sample)0 2621 y(v)n(alues.)40 b(Each)26
b(sample)i(v)n(alue)g(represents)h(one)e(channel)i(\(e.g.,)e(the)g(red)
g(channel\).)41 b(Each)27 b(sample)g(v)n(alue)h(has)f(a)g(certain)0
2734 y(bit)f(depth.)38 b(The)26 b(bit)h(depth)g(is)f(\002x)o(ed)g(for)g
(the)h(entire)g(image)g(and)g(can)f(be)g(as)h(small)f(as)g(one)h(bit.)
37 b(V)-10 b(alid)26 b(bit)h(depths)g(are)g(1,)0 2847
y(8,)h(or)f(16)g(bits)h(per)g(sample.)41 b(If)27 b(a)g(de)n(vice')-5
b(s)29 b(natural)g(bit)f(depth)g(is)g(something)h(else,)g(it)e(is)g(up)
g(to)h(the)f(dri)n(v)o(er)h(to)g(scale)g(the)0 2960 y(sample)h(v)n
(alues)g(appropriately)j(\(e.g.,)c(a)g(4)g(bit)g(sample)h(could)g(be)f
(scaled)h(by)f(a)g(f)o(actor)h(of)f(four)h(to)f(represent)i(a)d(sample)
0 3073 y(v)n(alue)d(of)g(depth)h(8\).)0 3367 y Fm(3.2.1)99
b(Image)24 b(T)-7 b(ransmission)0 3591 y Fq(The)26 b(SANE)f(API)g
(transmits)j(an)f(image)g(as)f(a)h(sequence)i(of)d(frames.)39
b(Each)27 b(frame)g(co)o(v)o(ers)g(the)g(same)g(rectangular)j(area)0
3704 y(as)36 b(the)g(entire)h(image,)j(b)n(ut)c(may)g(contain)i(only)f
(a)e(subset)j(of)e(the)g(channels)i(in)e(the)g(\002nal)g(image.)67
b(F)o(or)35 b(e)o(xample,)40 b(a)0 3817 y(red/green/blue)34
b(image)d(could)g(either)g(be)g(transmitted)h(as)e(a)g(single)h(frame)f
(that)h(contains)h(the)f(sample)g(v)n(alues)g(for)f(all)0
3929 y(three)g(channels)i(or)d(it)g(could)h(be)f(transmitted)j(as)d(a)g
(sequence)i(of)e(three)h(frames:)42 b(the)29 b(\002rst)g(frame)g
(containing)j(the)e(red)0 4042 y(channel,)25 b(the)f(second)h(the)f
(green)h(channel,)g(and)f(the)g(third)g(the)g(blue)g(channel.)0
4204 y(Conceptually)-6 b(,)34 b(each)d(frame)f(is)g(transmitted)i(a)e
(byte)h(at)f(a)f(time.)48 b(Each)30 b(byte)h(may)e(contain)j(8)e
(sample)h(v)n(alues)g(\(for)f(an)0 4317 y(image)c(bit)h(depth)g(of)f
(1\),)g(one)h(full)f(sample)h(v)n(alue)g(\(for)g(an)f(image)g(bit)g
(depth)i(of)e(8\),)g(or)g(a)f(partial)j(sample)f(v)n(alue)g(\(for)f(an)
0 4430 y(image)k(bit)g(depth)h(of)f(16)g(or)g(bigger\).)49
b(In)30 b(the)g(latter)h(case,)g(the)g(bytes)g(of)e(each)i(sample)f(v)n
(alue)h(are)f(transmitted)i(in)e(the)0 4543 y(machine')-5
b(s)33 b(nati)n(v)o(e)g(byte)f(order)-5 b(.)54 b(F)o(or)31
b(depth)i(1,)g(the)f(leftmost)h(pix)o(el)f(is)f(stored)i(in)f(the)g
(most)g(signi\002cant)h(bit,)h(and)e(the)0 4656 y(rightmost)25
b(pix)o(el)f(in)g(the)g(least)g(signi\002cant)i(bit.)1357
4872 y Fr(Back)o(end)c(Implementation)i(Note)227 5019
y Fq(A)d(netw)o(ork-based)26 b(meta)d(back)o(end)h(will)e(ha)n(v)o(e)h
(to)g(ensure)g(that)g(the)g(byte)g(order)g(in)g(image)g(data)g(is)f
(adjusted)227 5132 y(appropriately)32 b(if)c(necessary)-6
b(.)45 b(F)o(or)27 b(e)o(xample,)j(when)e(the)g(meta)g(back)o(end)i
(attaches)h(to)d(the)g(serv)o(er)h(proxy)-6 b(,)1905
5381 y(10)p eop end
%%Page: 11 12
TeXDict begin 11 11 bop 227 123 a Fq(the)28 b(proxy)g(may)f(inform)g
(the)h(back)o(end)h(of)e(the)g(serv)o(er')-5 b(s)29 b(byte)e(order)-5
b(.)41 b(The)26 b(back)o(end)j(can)f(then)f(apply)i(the)227
236 y(adjustment)d(if)d(necessary)-6 b(.)32 b(In)23 b(essence,)i(this)f
(implements)h(a)e(\223recei)n(v)o(er)n(-mak)o(es-right)q(\224)29
b(approach.)975 1410 y @beginspecial 0 @llx 0 @lly 362
@urx 182 @ury 2340 @rwi @setspecial
%%BeginDocument: figs/xfer.eps
%!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
%%EndDocument
@endspecial 1111 1606 a(Figure)24 b(3.2:)29 b(T)m(ransfer)24
b(order)h(of)e(image)h(data)g(bytes)0 1918 y(The)f(order)i(in)f(which)g
(the)g(sample)h(v)n(alues)g(in)e(a)h(frame)g(are)g(transmitted)i(is)e
(illustrated)i(in)e(Figure)g(3.2.)30 b(As)23 b(can)h(be)g(seen,)0
2031 y(the)f(v)n(alues)g(are)g(transmitted)h(ro)n(w)e(by)g(ro)n(w)g
(and)h(each)g(ro)n(w)e(is)h(transmitted)j(from)d(left-most)i(to)e
(right-most)i(column.)30 b(The)0 2144 y(left-to-right,)35
b(top-to-bottom)e(transmission)g(order)d(applies)i(when)e(the)g(image)h
(is)e(vie)n(wed)i(in)e(its)h(normal)h(orientation)0 2257
y(\(as)24 b(it)f(w)o(ould)h(be)g(displayed)i(on)d(a)h(screen,)g(for)g
(e)o(xample\).)0 2429 y(If)d(a)g(frame)h(contains)h(multiple)g
(channels,)h(then)e(the)g(channels)h(are)f(transmitted)h(in)f(an)f
(interlea)n(v)o(ed)j(f)o(ashion.)30 b(Figure)22 b(3.3)0
2542 y(illustrates)31 b(this)e(for)g(the)f(case)h(where)g(a)f(frame)h
(contains)h(a)e(complete)i(red/green/blue)j(image)28
b(with)h(a)f(bit-depth)j(of)d(8.)0 2654 y(F)o(or)f(a)g(bit)h(depth)g
(of)g(1,)g(each)g(byte)g(contains)i(8)d(sample)i(v)n(alues)g(of)e(a)g
Fl(single)i Fq(channel.)43 b(In)27 b(other)i(w)o(ords,)g(a)e(bit)h
(depth)h(1)0 2767 y(frame)24 b(is)f(transmitted)j(in)d(a)g(byte)i
(interlea)n(v)o(ed)h(f)o(ashion.)390 3444 y @beginspecial
0 @llx 0 @lly 521 @urx 93 @ury 3744 @rwi @setspecial
%%BeginDocument: figs/image-data.eps
%!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
%%EndDocument
@endspecial 1148 3640 a(Figure)e(3.3:)29 b(Bit)23 b(and)h(byte)g
(order)h(or)e(image)h(data)0 3952 y(When)30 b(transmitting)i(an)e
(image)g(frame)g(by)g(frame,)h(the)f(frontend)i(needs)f(to)e(kno)n(w)h
(what)g(part)g(of)g(the)g(image)g(a)f(frame)0 4065 y(represents)e
(\(and)d(ho)n(w)g(man)o(y)g(frames)g(it)g(should)i(e)o(xpect\).)31
b(F)o(or)23 b(that)i(purpose,)h(the)e(SANE)d(API)i(tags)i(e)n(v)o(ery)f
(frame)g(with)0 4178 y(a)f(type.)30 b(This)23 b(v)o(ersion)i(of)e(the)h
(SANE)d(standard)26 b(supports)g(the)e(follo)n(wing)h(frame)e(types:)
227 4424 y Fp(SANE)p 452 4424 28 4 v 31 w(FRAME)p 758
4424 V 31 w(GRAY)p Fr(:)44 b Fq(The)24 b(frame)i(contains)h(a)e(single)
i(channel)g(of)f(data)g(that)f(represents)k(sample)d(v)n(al-)427
4537 y(ues)i(from)g(a)f(spectral)j(band)f(that)f(co)o(v)o(ers)g(the)g
(human)h(visual)g(range.)42 b(The)28 b(image)g(consists)i(of)d(this)427
4650 y(frame)d(only)-6 b(.)227 4796 y Fp(SANE)p 452 4796
V 31 w(FRAME)p 758 4796 V 31 w(RGB)p Fr(:)44 b Fq(The)31
b(frame)h(contains)i(three)f(channels)h(of)d(data)i(that)f(represent)i
(sample)f(v)n(alues)427 4909 y(from)f(the)h(red,)h(green,)h(and)e(blue)
g(spectral)h(bands.)56 b(The)32 b(sample)h(v)n(alues)g(are)f(interlea)n
(v)o(ed)k(in)c(the)427 5022 y(order)25 b(red,)e(green,)i(and)f(blue.)29
b(The)23 b(image)h(consists)i(of)d(this)h(frame)g(only)-6
b(.)1905 5381 y(11)p eop end
%%Page: 12 13
TeXDict begin 12 12 bop 227 123 a Fp(SANE)p 452 123 28
4 v 31 w(FRAME)p 758 123 V 31 w(RED)p Fr(:)44 b Fq(The)36
b(frame)h(contains)i(one)f(channel)g(of)f(data)g(that)h(represents)h
(sample)f(v)n(alues)427 236 y(from)j(the)g(red)f(spectral)j(band.)81
b(The)40 b(complete)i(image)f(consists)h(of)f(three)g(frames:)64
b Fp(SANE)p 3592 236 V 31 w(-)427 349 y(FRAME)p 707 349
V 31 w(RED)p Fq(,)28 b Fp(SANE)p 1174 349 V 31 w(FRAME)p
1480 349 V 30 w(GREEN)p Fq(,)f(and)k Fp(SANE)p 2216 349
V 31 w(FRAME)p 2522 349 V 30 w(BLUE)p Fq(.)d(The)h(order)j(in)e(which)h
(the)427 462 y(frames)24 b(are)g(transmitted)i(chosen)f(by)f(the)g
(back)o(end.)227 608 y Fp(SANE)p 452 608 V 31 w(FRAME)p
758 608 V 31 w(GREEN)p Fr(:)43 b Fq(The)26 b(frame)g(contains)i(one)e
(channel)i(of)e(data)g(that)h(represents)h(sample)f(v)n(alues)427
721 y(from)35 b(the)g(green)h(spectral)h(band.)63 b(The)35
b(complete)h(image)f(consists)i(of)e(three)h(frames:)52
b Fp(SANE)p 3592 721 V 31 w(-)427 834 y(FRAME)p 707 834
V 31 w(RED)p Fq(,)28 b Fp(SANE)p 1174 834 V 31 w(FRAME)p
1480 834 V 30 w(GREEN)p Fq(,)f(and)k Fp(SANE)p 2216 834
V 31 w(FRAME)p 2522 834 V 30 w(BLUE)p Fq(.)d(The)h(order)j(in)e(which)h
(the)427 946 y(frames)24 b(are)g(transmitted)i(chosen)f(by)f(the)g
(back)o(end.)227 1093 y Fp(SANE)p 452 1093 V 31 w(FRAME)p
758 1093 V 31 w(BLUE)p Fr(:)44 b Fq(The)30 b(frame)i(contains)h(one)f
(channel)i(of)d(data)h(that)g(represents)i(sample)e(v)n(alues)427
1205 y(from)38 b(the)g(blue)h(spectral)h(band.)72 b(The)38
b(complete)h(image)f(consists)i(of)e(three)h(frames:)58
b Fp(SANE)p 3592 1205 V 31 w(-)427 1318 y(FRAME)p 707
1318 V 31 w(RED)p Fq(,)28 b Fp(SANE)p 1174 1318 V 31
w(FRAME)p 1480 1318 V 30 w(GREEN)p Fq(,)f(and)k Fp(SANE)p
2216 1318 V 31 w(FRAME)p 2522 1318 V 30 w(BLUE)p Fq(.)d(The)h(order)j
(in)e(which)h(the)427 1431 y(frames)24 b(are)g(transmitted)i(chosen)f
(by)f(the)g(back)o(end.)0 1678 y(In)i(frames)i(of)e(type)h
Fp(SANE)p 883 1678 V 31 w(FRAME)p 1189 1678 V 31 w(GRAY)p
Fq(,)c(when)k(the)g(bit)f(depth)i(is)e(1)h(there)g(are)g(only)g(tw)o(o)
f(sample)i(v)n(alues)f(possible,)0 1791 y(1)c(represents)k(minimum)c
(intensity)j(\(black\))g(and)e(0)f(represents)j(maximum)e(intensity)i
(\(white\).)k(F)o(or)23 b(all)g(other)i(bit)f(depth)0
1903 y(and)g(frame)f(type)h(combinations,)h(a)e(sample)h(v)n(alue)g(of)
f(0)f(represents)k(minimum)d(intensity)i(and)f(lar)n(ger)h(v)n(alues)f
(represent)0 2016 y(increasing)i(intensity)-6 b(.)0 2188
y(The)34 b(combination)j(of)d(bit)g(depth)h(1)f(and)h
Fp(SANE)p 1605 2188 V 30 w(FRAME)p 1910 2188 V 31 w(RGB)d
Fq(\(or)i Fp(SANE)p 2497 2188 V 31 w(FRAME)p 2803 2188
V 31 w(RED)p Fq(,)d Fp(SANE)p 3273 2188 V 31 w(FRAME)p
3579 2188 V 31 w(GREEN)p Fq(,)0 2301 y Fp(SANE)p 225
2301 V 31 w(FRAME)p 531 2301 V 30 w(BLUE)p Fq(\))22 b(is)h(rarely)i
(used)f(and)g(may)f(not)h(be)g(supported)i(by)e(e)n(v)o(ery)g
(frontend.)1905 5381 y(12)p eop end
%%Page: 13 14
TeXDict begin 13 13 bop 0 801 a Fo(Chapter)44 b(4)0 1271
y Fs(The)51 b(SANE)g(A)-5 b(pplication)53 b(Pr)l(ogrammer)0
1520 y(Interface)e(\(API\))0 2021 y Fq(This)27 b(Section)h(de\002nes)h
(v)o(ersion)f(1)f(of)h(the)f(SANE)e(application)31 b(programmer)e
(interf)o(ace)g(\(API\).)d(An)o(y)h(SANE)e(frontend)0
2134 y(must)e(depend)h(on)f(the)g(interf)o(ace)i(de\002ned)f(in)f(this)
g(section)i(only)-6 b(.)29 b(Con)l(v)o(ersele)o(y)-6
b(,)25 b(an)o(y)e(SANE)d(back)o(end)25 b(must)e(implement)0
2247 y(its)31 b(functionality)k(in)c(accordance)j(with)d(this)h
(speci\002cation.)54 b(The)31 b(interf)o(ace)i(as)e(documented)j(here)d
(is)g(declared)j(as)d(a)0 2359 y(C)h(callable)i(interf)o(ace)h(in)e(a)f
(\002le)g(called)i Fp(sane/sane.h)p Fq(.)51 b(This)32
b(\002le)g(should)j(normally)f(be)f(included)i(via)e(a)f(C)g(pre-)0
2472 y(processor)26 b(directi)n(v)o(e)f(of)f(the)g(form:)109
2708 y Fp(#include)51 b(<sane/sane.h>)0 3055 y Fn(4.1)119
b(V)-12 b(ersion)30 b(Contr)n(ol)0 3317 y Fq(The)22 b(SANE)d(standard)
25 b(is)d(e)o(xpected)i(to)e(e)n(v)n(olv)o(e)h(o)o(v)o(er)g(time.)28
b(Whene)n(v)o(er)23 b(a)f(change)i(to)e(the)g(SANE)e(standard)k(is)e
(made)h(that)0 3430 y(may)h(render)j(an)d(e)o(xisting)j(frontend)g(or)d
(back)o(end)j(incompatible)h(with)c(the)h(ne)n(w)f(standard,)j(the)e
(major)g(v)o(ersion)h(number)0 3543 y(must)k(be)g(increased.)51
b(Thus,)32 b(an)o(y)e(frontend/back)o(end)36 b(pair)30
b(is)g(compatible)j(pro)o(vided)f(the)e(major)h(v)o(ersion)g(number)g
(of)0 3656 y(the)h(SANE)e(standard)k(the)o(y)f(implement)g(is)f(the)g
(same.)55 b(A)31 b(frontend)j(may)e(implement)h(backw)o(ards)h
(compatiblity)h(by)0 3769 y(allo)n(wing)26 b(major)f(numbers)h(that)g
(are)f(smaller)g(than)h(the)f(e)o(xpected)i(major)e(number)h(\(pro)o
(vided)h(the)e(frontend)i(really)f(can)0 3882 y(cope)i(with)f(the)g
(older)h(v)o(ersion\).)41 b(In)27 b(contrast,)i(a)e(back)o(end)i(al)o
(w)o(ays)f(pro)o(vides)h(support)f(for)g(one)f(and)g(only)h(one)g(v)o
(ersion)0 3995 y(of)h(the)h(standard.)49 b(If)29 b(a)g(speci\002c)i
(application)h(does)f(require)g(that)f(tw)o(o)f(dif)n(ferent)i(v)o
(ersions)h(of)d(the)h(same)f(back)o(end)j(are)0 4108
y(accessible)26 b(at)e(the)f(same)h(time,)f(it)g(is)h(possible)h(to)f
(do)g(so)f(by)h(installing)i(the)e(tw)o(o)f(v)o(ersions)i(under)g(dif)n
(ferent)g(names.)0 4276 y(SANE)i(v)o(ersion)k(control)g(also)f
(includes)i(a)d(minor)h(v)o(ersion)h(number)f(and)g(a)f(b)n(uild)i(re)n
(vision.)48 b(While)30 b(control)h(of)e(these)0 4389
y(numbers)22 b(remains)f(with)f(the)g(implementor)i(of)f(a)e(back)o
(end,)k(the)e(recommended)h(use)f(is)f(as)g(follo)n(ws.)28
b(The)20 b(minor)h(v)o(ersion)0 4502 y(is)26 b(incremented)i(with)e
(each)h(of)n(\002cial)f(release)i(of)e(a)f(back)o(end.)38
b(The)26 b(b)n(uild)h(re)n(vision)h(is)e(increased)i(with)e(each)h(b)n
(uild)g(of)f(a)0 4615 y(back)o(end.)0 4783 y(The)d(SANE)e(API)h(pro)o
(vides)k(the)e(follo)n(wing)h(\002)n(v)o(e)d(macros)i(to)g(manage)g(v)o
(ersion)h(numbers.)227 5019 y Fp(SANE)p 452 5019 28 4
v 31 w(CURRENT)p 868 5019 V 30 w(MAJOR)p Fr(:)43 b Fq(The)29
b(v)n(alue)h(of)g(this)g(macro)f(is)h(the)f(number)i(of)e(the)h(SANE)d
(standard)k(that)427 5132 y(the)24 b(interf)o(ace)i(implements.)1905
5381 y(13)p eop end
%%Page: 14 15
TeXDict begin 14 14 bop 227 123 a Fp(SANE)p 452 123 28
4 v 31 w(VERSION)p 868 123 V 30 w(CODE\()p Fl(maj)p Fp(,)p
Fl(min)p Fp(,)p Fl(bld)p Fp(\))p Fr(:)44 b Fq(This)37
b(macro)g(can)h(be)f(used)g(to)g(b)n(uild)i(a)d(monotonically)427
236 y(increasing)i(v)o(ersion)e(code.)64 b(A)34 b(SANE)f(v)o(ersion)j
(code)g(consists)h(of)e(the)g(SANE)d(standard)38 b(major)427
349 y(v)o(ersion)25 b(number)f(\()p Fl(maj)p Fq(\),)f(the)h(minor)f(v)o
(ersion)i(number)f Fl(min)p Fq(,)f(and)h(the)f(b)n(uild)i(re)n(vision)g
(of)e(a)g(back)o(end)427 462 y(\()p Fl(bld)p Fq(\).)39
b(The)27 b(major)g(and)g(minor)g(v)o(ersion)h(numbers)g(must)f(be)f(in)
h(the)g(range)h(0.)14 b(.)g(.)g(255)26 b(and)h(the)g(b)n(uild)427
574 y(re)n(vision)f(must)d(be)h(in)f(the)h(range)h(0.)14
b(.)g(.)g(65535.)427 704 y(V)-10 b(ersion)29 b(codes)h(are)e(monotonic)
i(in)e(the)h(sense)g(that)f(it)g(is)g(possible)i(to)e(apply)i
(relational)g(operators)427 817 y(\(e.g.,)21 b(equality)j(or)d
(less-than)j(test\))e(directly)h(on)e(the)h(v)o(ersion)h(code)f(rather)
g(than)h(indi)n(vidually)h(on)e(the)427 930 y(three)j(components)h(of)d
(the)h(v)o(ersion)h(code.)427 1059 y(Note)34 b(that)g(the)g(major)f(v)o
(ersion)i(number)g(alone)f(determines)i(whether)e(a)f(frontend/back)o
(end)39 b(pair)427 1172 y(is)31 b(compatible.)51 b(The)30
b(minor)h(v)o(ersion)h(and)f(the)g(b)n(uild)h(re)n(vision)g(are)f(used)
g(for)g(informational)i(and)427 1285 y(b)n(ug-\002xing)26
b(purposes)g(only)-6 b(.)227 1431 y Fp(SANE)p 452 1431
V 31 w(VERSION)p 868 1431 V 30 w(MAJOR\()p Fl(vc)p Fp(\))p
Fr(:)43 b Fq(This)32 b(macro)h(returns)h(the)f(major)g(v)o(ersion)h
(number)f(component)i(of)427 1544 y(the)24 b(v)o(ersion)h(code)f
(passed)i(in)d(ar)n(gument)i Fl(vc)p Fq(.)227 1690 y
Fp(SANE)p 452 1690 V 31 w(VERSION)p 868 1690 V 30 w(MINOR\()p
Fl(vc)p Fp(\))p Fr(:)43 b Fq(This)32 b(macro)g(returns)h(the)g(minor)f
(v)o(ersion)h(number)g(component)h(of)427 1803 y(the)24
b(v)o(ersion)h(code)f(passed)i(in)d(ar)n(gument)i Fl(vc)p
Fq(.)227 1949 y Fp(SANE)p 452 1949 V 31 w(VERSION)p 868
1949 V 30 w(BUILD\()p Fl(vc)p Fp(\))p Fr(:)43 b Fq(This)18
b(macro)h(returns)g(the)g(b)n(uild)g(re)n(vision)h(component)h(of)d
(the)g(v)o(ersion)427 2062 y(code)25 b(passed)g(in)e(ar)n(gument)j
Fl(vc)p Fq(.)0 2414 y Fn(4.2)119 b(Data)30 b(T)-9 b(ypes)0
2683 y Fm(4.2.1)99 b(Base)25 b(T)-7 b(ypes)0 2916 y Fq(The)23
b(SANE)e(standard)26 b(is)d(based)i(on)f(just)g(tw)o(o)f
(SANE-speci\002c)g(base)h(types:)31 b(the)23 b(SANE)f(byte)i(and)g(w)o
(ord.)227 3162 y Fp(typedef)52 b Fl(some-scalar)n(-type)59
b Fp(SANE)p 1567 3162 V 31 w(Byte;)227 3275 y(typedef)52
b Fl(some-scalar)n(-type)59 b Fp(SANE)p 1567 3275 V 31
w(Word;)0 3521 y(SANE_Byte)18 b Fq(must)23 b(correspond)j(to)d(some)g
(scalar)h(C)d(type)j(that)f(is)g(capable)i(of)e(holding)i(v)n(alues)f
(in)e(the)i(range)g(0)e(to)h(255.)0 3634 y Fp(SANE_Word)c
Fq(must)k(be)h(capable)h(of)f(holding)h(an)o(y)f(of)f(the)h(follo)n
(wing:)136 3880 y Fk(\017)46 b Fq(the)24 b(truth)h(v)n(alues)f
Fp(SANE_FALSE)18 b Fq(and)24 b Fp(SANE_TRUE)136 4068
y Fk(\017)46 b Fq(signed)25 b(inte)o(gers)h(in)d(the)h(range)g
Fk(\000)p Fj(2)1364 4035 y Fi(31)1454 4068 y Fh(:)15
b(:)g(:)i Fj(2)1621 4035 y Fi(31)1716 4068 y Fk(\000)j
Fj(1)136 4256 y Fk(\017)46 b Fq(\002x)o(ed)23 b(point)i(v)n(alues)g(in)
e(the)h(range)h Fk(\000)p Fj(32768)15 b Fh(:)g(:)g(:)j
Fj(32767)p Fh(:)p Fj(9999)27 b Fq(with)c(a)h(resolution)i(of)d
Fj(1)p Fh(=)p Fj(65536)136 4443 y Fk(\017)46 b Fq(32)24
b(bits)g(\(for)g(bit)g(sets\))0 4690 y(Note)33 b(that)h(the)f(SANE)e
(standard)36 b(does)e(not)f(de\002ne)h(what)f(C)f(type)i
Fp(SANE_Byte)28 b Fq(and)34 b Fp(SANE_Word)28 b Fq(map)33
b(to.)58 b(F)o(or)0 4803 y(e)o(xample,)29 b(on)f(some)g(platforms,)i
(the)e(latter)h(may)f(map)f(to)h Fp(long)53 b(int)25
b Fq(whereas)k(on)f(others)h(it)e(may)h(map)f(to)h Fp(int)p
Fq(.)39 b(A)0 4915 y(portable)26 b(SANE)21 b(frontend)k(or)f(back)o
(end)i(must)d(therefore)j(not)e(depend)h(on)f(a)f(particular)j
(mapping.)1905 5381 y(14)p eop end
%%Page: 15 16
TeXDict begin 15 15 bop 0 123 a Fm(4.2.2)99 b(Boolean)25
b(T)-7 b(ype)0 356 y Fp(SANE)p 225 356 28 4 v 31 w(Bool)20
b Fq(is)j(used)h(for)g(v)n(ariables)h(that)e(can)h(tak)o(e)g(one)f(of)g
(the)h(tw)o(o)e(truth)i(v)n(alues)h Fp(SANE)p 2934 356
V 31 w(FALSE)20 b Fq(and)j Fp(SANE)p 3633 356 V 31 w(TRUE)p
Fq(.)0 469 y(The)d(former)h(v)n(alue)g(is)g(de\002ned)g(to)f(be)h(0,)f
(whereas)i(the)e(latter)i(is)e(1.)2097 436 y Fg(1)2162
469 y Fq(The)g(C)f(declarations)24 b(for)c(this)h(type)h(are)e(gi)n(v)o
(en)h(belo)n(w)-6 b(.)227 715 y Fp(#define)52 b(SANE_FALSE)322
b(0)227 828 y(#define)52 b(SANE_TRUE)377 b(1)227 941
y(typedef)52 b(SANE_Word)e(SANE_Bool;)0 1187 y Fq(Note)34
b(that)g Fp(SANE_Bool)29 b Fq(is)34 b(simply)g(an)g(alias)g(of)g
Fp(SANE_Word)p Fq(.)55 b(It)33 b(is)h(therefore)i(al)o(w)o(ays)e(le)o
(gal)g(to)g(use)g(the)g(latter)0 1300 y(type)26 b(in)g(place)g(of)g
(the)f(former)-5 b(.)36 b(Ho)n(we)n(v)o(er)l(,)25 b(for)h(clarity)-6
b(,)27 b(it)e(is)h(recommended)h(to)f(use)g Fp(SANE_Bool)20
b Fq(whene)n(v)o(er)27 b(a)e(gi)n(v)o(en)0 1413 y(v)n(ariable)g(or)f
(formal)g(ar)n(gument)h(has)f(a)f(\002x)o(ed)g(interpretation)28
b(as)23 b(a)h(boolean)h(object.)0 1721 y Fm(4.2.3)99
b(Integer)26 b(T)-7 b(ype)0 1954 y Fp(SANE)p 225 1954
V 31 w(Int)22 b Fq(is)i(used)h(for)g(v)n(ariables)h(that)f(can)g(tak)o
(e)g(inte)o(ger)h(v)n(alues)f(in)f(the)h(range)h Fk(\000)p
Fj(2)2774 1921 y Fi(32)2872 1954 y Fq(to)e Fj(2)3011
1921 y Fi(31)3107 1954 y Fk(\000)d Fj(1)p Fq(.)30 b(Its)25
b(C)e(declaration)0 2067 y(is)g(gi)n(v)o(en)h(belo)n(w)-6
b(.)227 2313 y Fp(typedef)52 b(SANE_Word)e(SANE_Int;)0
2560 y Fq(Note)22 b(that)h Fp(SANE_Int)18 b Fq(is)k(simply)h(an)f
(alias)h(of)f Fp(SANE_Word)p Fq(.)i(It)e(is)g(therefore)i(al)o(w)o(ays)
f(le)o(gal)g(to)f(use)h(the)f(latter)h(type)g(in)0 2672
y(place)k(of)g(the)f(former)-5 b(.)38 b(Ho)n(we)n(v)o(er)l(,)27
b(for)f(clarity)-6 b(,)29 b(it)d(is)g(recommended)i(to)f(use)f
Fp(SANE_Int)c Fq(whene)n(v)o(er)28 b(a)e(gi)n(v)o(en)g(v)n(ariable)0
2785 y(or)d(formal)i(ar)n(gument)g(has)f(a)f(\002x)o(ed)g
(interpretation)28 b(as)23 b(an)h(inte)o(ger)h(object.)0
3093 y Fm(4.2.4)99 b(Fixed-point)25 b(T)-7 b(ype)0 3326
y Fp(SANE)p 225 3326 V 31 w(Fixed)19 b Fq(is)i(used)i(for)f(v)n
(ariables)i(that)f(can)f(tak)o(e)h(\002x)o(ed)e(point)i(v)n(alues)g(in)
f(the)g(range)h Fk(\000)p Fj(32768)g Fq(to)f Fj(32767)p
Fh(:)p Fj(9999)j Fq(with)0 3439 y(a)e(resolution)j(of)e
Fj(1)p Fh(=)p Fj(65535)p Fq(.)31 b(The)23 b(C)f(declarations)27
b(relating)f(to)d(this)h(type)h(are)e(gi)n(v)o(en)i(belo)n(w)-6
b(.)227 3686 y Fp(#define)52 b(SANE_FIXED_SCA)o(LE)o(_S)o(HIF)o(T)103
b(16)227 3798 y(typedef)52 b(SANE_Word)e(SANE_Fixed;)0
4045 y Fq(The)20 b(macro)i Fp(SANE)p 634 4045 V 31 w(FIXED)p
940 4045 V 30 w(SCALE)p 1245 4045 V 31 w(SHIFT)17 b Fq(gi)n(v)o(es)22
b(the)f(location)i(of)e(the)g(\002x)o(ed)f(binary)j(point.)29
b(This)20 b(standard)j(de\002nes)0 4158 y(that)h(v)n(alue)g(to)g(be)f
(16,)h(which)g(yields)h(a)e(resolution)j(of)e Fj(1)p
Fh(=)p Fj(65536)p Fq(.)0 4329 y(Note)31 b(that)g Fp(SANE_Fixed)26
b Fq(is)31 b(simply)g(an)g(alias)h(of)f Fp(SANE_Word)p
Fq(.)46 b(It)30 b(is)h(therefore)i(al)o(w)o(ays)f(le)o(gal)f(to)g(use)g
(the)g(latter)0 4442 y(type)23 b(in)g(place)g(of)g(the)f(former)-5
b(.)29 b(Ho)n(we)n(v)o(er)l(,)23 b(for)f(clarity)-6 b(,)24
b(it)f(is)f(recommended)j(to)d(use)h Fp(SANE_Fixed)17
b Fq(whene)n(v)o(er)24 b(a)e(gi)n(v)o(en)0 4555 y(v)n(ariable)j(or)f
(formal)g(ar)n(gument)h(has)f(a)f(\002x)o(ed)g(interpretation)28
b(as)23 b(a)h(\002x)o(ed-point)h(object.)0 4727 y(F)o(or)36
b(con)l(v)o(enience,)44 b(SANE)34 b(also)k(de\002nes)f(tw)o(o)g(macros)
h(that)f(con)l(v)o(ert)i(\002x)o(ed-point)g(v)n(alues)f(to)f(and)g
(from)g(C)f(double)0 4840 y(\003oating)25 b(point)f(v)n(alues.)p
0 4921 1560 4 v 105 4976 a Ff(1)134 5008 y Fe(This)19
b(is)g(dif)n(ferent)g(from)g(ANSI)f(C)g(where)h(an)o(y)h(non-zero)g
(inte)o(ger)f(v)n(alue)h(represents)f(logical)g(TR)m(UE.)1905
5381 y Fq(15)p eop end
%%Page: 16 17
TeXDict begin 16 16 bop 227 123 a Fp(SANE)p 452 123 28
4 v 31 w(FIX\()p Fl(d)p Fp(\))p Fr(:)44 b Fq(Returns)34
b(the)g(lar)n(gest)h(SANE)c(\002x)o(ed-point)k(v)n(alue)f(that)g(is)f
(smaller)h(than)g(the)f(double)427 236 y(v)n(alue)d Fl(d)p
Fq(.)45 b(No)28 b(range)i(checking)h(is)e(performed.)47
b(If)29 b(the)g(v)n(alue)h(of)f Fl(d)f Fq(is)h(out)h(of)e(range,)k(the)
d(result)h(is)427 349 y(unde\002ned.)227 495 y Fp(SANE)p
452 495 V 31 w(UNFIX\()p Fl(w)p Fp(\))p Fr(:)42 b Fq(Returns)d(the)g
(nearest)g(double)h(machine)f(number)g(that)g(corresponds)i(to)d(\002x)
o(ed-)427 608 y(point)25 b(v)n(alue)f Fl(w)p Fq(.)0 854
y(SANE)j(does)j Fl(not)h Fq(require)g(that)f(the)g(follo)n(wing)h(tw)o
(o)e(e)o(xpressions)j(hold)e(true)g(\(e)n(v)o(en)g(if)f(the)h(v)n
(alues)g(of)g Fl(w)e Fq(and)i Fl(d)f Fq(are)g(in)0 967
y(range\):)227 1213 y Fp(SANE_UNFIX\(SANE)o(_FI)o(X\()o(d\))o(\))48
b(==)54 b(d)227 1326 y(SANE_FIX\(SANE_U)o(NFI)o(X\()o(w\))o(\))48
b(==)54 b(w)0 1573 y Fq(In)27 b(other)h(w)o(ords,)g(con)l(v)o(ersion)i
(between)e(\002x)o(ed)f(and)g(double)i(v)n(alues)f(may)e(be)h(lossy)-6
b(.)40 b(It)27 b(is)g(therefore)i(recommended)g(to)0
1685 y(a)n(v)n(oid)c(repeated)h(con)l(v)o(ersions)h(between)d(the)g(tw)
o(o)f(representations.)0 1993 y Fm(4.2.5)99 b(T)-9 b(ext)0
2226 y Fr(Character)25 b(T)-7 b(ype)0 2459 y Fq(T)g(ype)29
b Fp(SANE)p 433 2459 V 31 w(Char)e Fq(represents)32 b(a)d(single)i(te)o
(xt)e(character)j(or)d(symbol.)47 b(At)29 b(present,)j(this)e(type)g
(maps)f(directly)j(to)d(the)0 2572 y(underlying)j(C)d
Fp(char)d Fq(type)31 b(\(typically)h(one)d(byte\).)48
b(The)29 b(encoding)i(for)f(such)g(characters)i(is)d(currently)j(\002x)
o(ed)d(as)h(ISO)0 2685 y(LA)-10 b(TIN-1.)37 b(Future)27
b(v)o(ersions)h(of)f(this)g(standard)i(may)e(map)f(this)h(type)h(to)f
(a)f(wider)h(type)g(and)g(allo)n(w)g(multi-byte)i(encod-)0
2798 y(ings)h(to)f(support)h(internationalizatio)q(n.)50
b(As)29 b(a)f(result)i(of)f(this,)i(care)e(should)i(be)e(tak)o(en)h(to)
f(a)n(v)n(oid)h(the)f(assumption)j(that)0 2911 y Fp(sizeof\(SANE_Cha)o
(r\))o(==)o(si)o(zeo)o(f\()o(ch)o(ar)o(\))p Fq(.)227
3157 y Fp(typedef)52 b(char)g(SANE_Char;)0 3462 y Fr(String)23
b(T)-7 b(ype)0 3695 y Fq(T)g(ype)27 b Fp(SANE)p 431 3695
V 31 w(String)c Fq(represents)29 b(a)e(te)o(xt)g(string)h(as)f(a)f
(sequence)k(of)c(C)g Fp(char)e Fq(v)n(alues.)40 b(The)27
b(end)g(of)g(the)g(sequence)i(is)0 3808 y(indicated)d(by)e(a)f
Fp('\\0')e Fq(\(NUL\))h(character)-5 b(.)227 4054 y Fp(typedef)52
b(SANE_Char)1209 4070 y(*)1264 4054 y(SANE_String;)227
4167 y(typedef)g(const)g(SANE_Char)1536 4183 y(*)1591
4167 y(SANE_String_Con)o(st)o(;)0 4413 y Fq(The)29 b(type)h
Fp(SANE)p 580 4413 V 31 w(String)p 941 4413 V 30 w(Const)d
Fq(is)i(pro)o(vided)j(by)d(SANE)e(to)j(enable)h(declaring)h(strings)f
(whose)f(contents)h(is)f(un-)0 4526 y(changable.)h(Note)23
b(that)i(in)e(ANSI)f(C,)g(the)i(declaration)227 4773
y Fp(const)53 b(SANE_String)c(str;)0 5019 y Fq(declares)26
b(a)d(string)h(pointer)i(that)e(is)f(constant)j(\(not)e(a)f(string)i
(pointer)g(that)f(points)h(to)f(a)f(constant)j(v)n(alue\).)1905
5381 y(16)p eop end
%%Page: 17 18
TeXDict begin 17 17 bop 0 123 a Fm(4.2.6)99 b(Scanner)26
b(Handle)f(T)-7 b(ype)0 356 y Fq(Access)29 b(to)f(a)g(scanner)i(is)e
(pro)o(vided)i(through)g(an)e(opaque)i(type)f(called)h
Fp(SANE)p 2560 356 28 4 v 30 w(Handle)p Fq(.)40 b(The)27
b(C)g(declaration)32 b(of)c(this)0 469 y(type)c(is)g(gi)n(v)o(en)g
(belo)n(w)-6 b(.)227 715 y Fp(typedef)52 b(void)936 731
y(*)991 715 y(SANE_Handle;)0 961 y Fq(While)28 b(this)g(type)g(is)f
(declared)i(to)f(be)f(a)g(v)n(oid)h(pointer)l(,)i(an)e(application)i
(must)e(not)f(attempt)i(to)e(interpret)j(the)d(v)n(alue)h(of)g(a)0
1074 y Fp(SANE_Handle)p Fq(.)23 b(In)g(particular)l(,)k(SANE)21
b(does)j(not)g(require)h(that)f(a)f(v)n(alue)i(of)e(this)h(type)g(is)g
(a)f(le)o(gal)h(pointer)h(v)n(alue.)0 1382 y Fm(4.2.7)99
b(Status)25 b(T)-7 b(ype)0 1615 y Fq(Most)26 b(SANE)e(operations)29
b(return)e(a)f(v)n(alue)h(of)f(type)h Fp(SANE)p 1915
1615 V 31 w(Status)c Fq(to)j(indicate)i(whether)f(the)f(completion)j
(status)e(of)0 1728 y(the)32 b(operation.)57 b(If)31
b(an)h(operation)j(completes)e(successfully)-6 b(,)38
b Fp(SANE_STATUS_GO)o(OD)24 b Fq(is)32 b(returned.)56
b(In)32 b(case)g(of)g(an)0 1841 y(error)l(,)24 b(a)e(v)n(alue)h(is)f
(returned)j(that)e(indicates)h(the)f(nature)h(of)e(the)h(problem.)30
b(The)22 b(complete)h(list)g(of)g(a)n(v)n(ailable)h(status)g(codes)0
1954 y(is)f(listed)i(in)e(T)-7 b(able)23 b(4.1.)28 b(It)23
b(is)g(recommended)j(to)d(use)h(function)h Fp(sane)p
2268 1954 V 31 w(strstatus\(\))17 b Fq(to)24 b(con)l(v)o(ert)h(status)f
(codes)h(into)0 2067 y(a)e(le)o(gible)i(string.)p 385
2189 3131 4 v 383 2302 4 113 v 937 2269 a Fr(Symbol)p
1781 2302 V 602 w(Code)p 2083 2302 V 541 w(Description)p
3514 2302 V 385 2306 3131 4 v 385 2322 V 383 2435 4 113
v 435 2401 a Fp(SANE)p 660 2401 28 4 v 31 w(STATUS)p
1021 2401 V 30 w(GOOD)p 1781 2435 4 113 v 723 w Fq(0)p
2083 2435 V 100 w(Operation)g(completed)h(succesfully)-6
b(.)p 3514 2435 V 383 2548 V 435 2514 a Fp(SANE)p 660
2514 28 4 v 31 w(STATUS)p 1021 2514 V 30 w(UNSUPPORTED)p
1781 2548 4 113 v 338 w Fq(1)p 2083 2548 V 100 w(Operation)25
b(is)f(not)g(supported.)p 3514 2548 V 383 2661 V 435
2627 a Fp(SANE)p 660 2627 28 4 v 31 w(STATUS)p 1021 2627
V 30 w(CANCELLED)p 1781 2661 4 113 v 448 w Fq(2)p 2083
2661 V 100 w(Operation)h(w)o(as)e(cancelled.)p 3514 2661
V 383 2774 V 435 2740 a Fp(SANE)p 660 2740 28 4 v 31
w(STATUS)p 1021 2740 V 30 w(DEVICE)p 1381 2740 V 30 w(BUSY)p
1781 2774 4 113 v 363 w Fq(3)p 2083 2774 V 100 w(De)n(vice)h(is)f(b)n
(usy\227retry)j(later)-5 b(.)p 3514 2774 V 383 2887 V
435 2853 a Fp(SANE)p 660 2853 28 4 v 31 w(STATUS)p 1021
2853 V 30 w(INVAL)p 1781 2887 4 113 v 668 w Fq(4)p 2083
2887 V 100 w(Data)23 b(or)h(ar)n(gument)h(is)f(in)l(v)n(alid.)p
3514 2887 V 383 3000 V 435 2966 a Fp(SANE)p 660 2966
28 4 v 31 w(STATUS)p 1021 2966 V 30 w(EOF)p 1781 3000
4 113 v 778 w Fq(5)p 2083 3000 V 100 w(No)f(more)g(data)i(a)n(v)n
(ailable)g(\(end-of-\002le\).)p 3514 3000 V 383 3113
V 435 3079 a Fp(SANE)p 660 3079 28 4 v 31 w(STATUS)p
1021 3079 V 30 w(JAMMED)p 1781 3113 4 113 v 613 w Fq(6)p
2083 3113 V 100 w(Document)f(feeder)h(jammed.)p 3514
3113 V 383 3226 V 435 3192 a Fp(SANE)p 660 3192 28 4
v 31 w(STATUS)p 1021 3192 V 30 w(NO)p 1161 3192 V 31
w(DOCS)p 1781 3226 4 113 v 582 w Fq(7)p 2083 3226 V 100
w(Document)f(feeder)h(out)f(of)g(documents.)p 3514 3226
V 383 3339 V 435 3305 a Fp(SANE)p 660 3305 28 4 v 31
w(STATUS)p 1021 3305 V 30 w(COVER)p 1326 3305 V 30 w(OPEN)p
1781 3339 4 113 v 418 w Fq(8)p 2083 3339 V 100 w(Scanner)h(co)o(v)o(er)
e(is)h(open.)p 3514 3339 V 383 3451 V 435 3418 a Fp(SANE)p
660 3418 28 4 v 31 w(STATUS)p 1021 3418 V 30 w(IO)p 1161
3418 V 31 w(ERROR)p 1781 3451 4 113 v 527 w Fq(9)p 2083
3451 V 100 w(Error)g(during)h(de)n(vice)f(I/O.)p 3514
3451 V 383 3564 V 435 3530 a Fp(SANE)p 660 3530 28 4
v 31 w(STATUS)p 1021 3530 V 30 w(NO)p 1161 3530 V 31
w(MEM)p 1781 3564 4 113 v 592 w Fq(10)p 2083 3564 V 100
w(Out)f(of)h(memory)-6 b(.)p 3514 3564 V 383 3677 V 435
3643 a Fp(SANE)p 660 3643 28 4 v 31 w(STATUS)p 1021 3643
V 30 w(ACCESS)p 1381 3643 V 30 w(DENIED)p 1781 3677 4
113 v 208 w Fq(11)p 2083 3677 V 100 w(Access)24 b(to)g(resource)h(has)f
(been)h(denied.)p 3514 3677 V 385 3681 3131 4 v 1519
3834 a(T)-7 b(able)24 b(4.1:)29 b(Status)24 b(Codes)0
4264 y Fm(4.2.8)99 b(De)o(vice)24 b(Descriptor)i(T)-7
b(ype)0 4497 y Fq(Each)27 b(SANE)d(de)n(vice)k(is)f(represented)j(by)c
(a)h(structure)i(of)e(type)g Fp(SANE)p 2300 4497 28 4
v 31 w(Device)p Fq(.)35 b(The)26 b(C)g(declaration)k(of)d(this)g(type)g
(is)0 4610 y(gi)n(v)o(en)d(belo)n(w)-6 b(.)227 4856 y
Fp(typedef)52 b(struct)336 4969 y({)445 5082 y(SANE_String_Cons)o(t)c
(name;)1905 5381 y Fq(17)p eop end
%%Page: 18 19
TeXDict begin 18 18 bop 445 123 a Fp(SANE_String_Cons)o(t)48
b(vendor;)445 236 y(SANE_String_Cons)o(t)g(model;)445
349 y(SANE_String_Cons)o(t)g(type;)336 462 y(})227 574
y(SANE_Device;)0 797 y Fq(The)24 b(structure)i(pro)o(vides)g(the)f
(unique)h(name)e(of)g(the)h(scanner)h(in)e(member)g Fp(name)p
Fq(.)29 b(It)24 b(is)g(this)h(unique)g(name)g(that)g(should)0
910 y(be)h(passed)i(in)e(a)g(call)h(to)f Fp(sane)p 1019
910 28 4 v 31 w(open\(\))p Fq(.)33 b(The)26 b(format)h(of)f(this)h
(name)f(is)g(completely)i(up)f(to)f(the)h(back)o(end.)39
b(The)25 b(only)0 1023 y(constraints)30 b(are)d(that)g(the)h(name)e(is)
h(unique)i(among)e(all)g(de)n(vices)h(supported)i(by)d(the)g(back)o
(end)i(and)e(that)h(the)f(name)g(is)g(a)0 1136 y(le)o(gal)c(SANE)d(te)o
(xt)j(string.)29 b(T)-7 b(o)22 b(simplify)i(presentation)i(of)c(unique)
j(names,)e(their)g(length)h(should)g(not)f(be)g(e)o(xcessi)n(v)o(e.)30
b(It)22 b(is)0 1249 y Fl(r)m(ecommended)28 b Fq(that)d(back)o(ends)i(k)
o(eep)e(unique)g(names)g(belo)n(w)f(32)g(characters)j(in)d(length.)32
b(Ho)n(we)n(v)o(er)l(,)24 b(applications)j Fl(must)0
1362 y Fq(be)d(able)g(to)f(cope)i(with)e(arbitrary)j(length)f(unique)g
(names.)0 1526 y(The)e(remaining)i(members)f(in)g(the)g(de)n(vice)g
(structure)i(pro)o(vide)f(additional)i(information)f(on)d(the)h(de)n
(vice)h(corresponding)0 1639 y(to)31 b(the)g(unique)i(name.)52
b(Speci\002cally)-6 b(,)34 b(members)d Fp(vendor)p Fq(,)f
Fp(model)p Fq(,)f(and)j Fp(type)c Fq(are)k(single-line)i(strings)e
(that)g(gi)n(v)o(e)0 1752 y(information)g(on)e(the)g(v)o(endor)h
(\(manuf)o(acturer\),)j(model,)d(and)f(the)g(type)h(of)e(the)h(de)n
(vice.)48 b(F)o(or)29 b(consistenc)o(y')-5 b(s)33 b(sak)o(e,)f(the)0
1865 y(follo)n(wing)25 b(strings)g(should)g(be)f(used)g(when)g
(appropriate)j(\(the)d(lists)g(will)f(be)h(e)o(xpanded)h(as)f(need)g
(arises\):)p 284 1981 1563 4 v 282 2094 4 113 v 773 2060
a Fr(V)-9 b(endor)23 b(Strings)p 1845 2094 V 284 2097
1563 4 v 284 2114 V 282 2227 4 113 v 334 2193 a Fp(AGFA)697
b(Microtek)p 1845 2227 V 282 2340 V 334 2306 a(Abaton)587
b(Minolta)p 1845 2340 V 282 2453 V 334 2419 a(Acer)697
b(Mitsubishi)p 1845 2453 V 282 2566 V 334 2532 a(Apple)642
b(Mustek)p 1845 2566 V 282 2678 V 334 2645 a(Artec)g(NEC)p
1845 2678 V 282 2791 V 334 2758 a(Avision)532 b(Nikon)p
1845 2791 V 282 2904 V 334 2870 a(CANON)642 b(Plustek)p
1845 2904 V 282 3017 V 334 2983 a(Connectix)422 b(Polaroid)p
1845 3017 V 282 3130 V 334 3096 a(Epson)642 b(Relisys)p
1845 3130 V 282 3243 V 334 3209 a(Fujitsu)532 b(Ricoh)p
1845 3243 V 282 3356 V 334 3322 a(Hewlett-Packar)o(d)93
b(Sharp)p 1845 3356 V 282 3469 V 334 3435 a(IBM)752 b(Siemens)p
1845 3469 V 282 3582 V 334 3548 a(Kodak)642 b(Tamarack)p
1845 3582 V 282 3695 V 334 3661 a(Lexmark)532 b(UMAX)p
1845 3695 V 282 3808 V 334 3774 a(Logitech)477 b(Noname)p
1845 3808 V 284 3811 1563 4 v 2153 1981 1464 4 v 2151
2094 4 113 v 2639 2060 a Fr(T)-7 b(ype)23 b(Strings)p
3615 2094 V 2153 2097 1464 4 v 2153 2114 V 2151 2227
4 113 v 2203 2193 a Fp(film)53 b(scanner)p 3615 2227
V 2151 2340 V 2203 2306 a(flatbed)e(scanner)p 3615 2340
V 2151 2453 V 2203 2419 a(frame)h(grabber)p 3615 2453
V 2151 2566 V 2203 2532 a(handheld)f(scanner)p 3615 2566
V 2151 2678 V 2203 2645 a(multi-function)d(peripheral)p
3615 2678 V 2151 2791 V 2203 2758 a(sheetfed)j(scanner)p
3615 2791 V 2151 2904 V 2203 2870 a(still)h(camera)p
3615 2904 V 2151 3017 V 2203 2983 a(video)g(camera)p
3615 3017 V 2151 3130 V 2203 3096 a(virtual)f(device)p
3615 3130 V 2153 3133 1464 4 v 1053 3964 a Fq(T)-7 b(able)24
b(4.2:)29 b(Prede\002ned)24 b(De)n(vice)g(Information)i(Strings)0
4270 y(Note)k(that)g(v)o(endor)h(string)g Fp(Noname)26
b Fq(can)k(be)g(used)h(for)f(virtual)h(de)n(vices)g(that)g(ha)n(v)o(e)f
(no)g(physical)i(v)o(endor)f(associated.)0 4383 y(Also,)c(there)h(are)f
(no)g(prede\002ned)h(model)f(name)g(strings)i(since)e(those)h(are)f(v)o
(endor)h(speci\002c)g(and)f(therefore)i(completely)0
4496 y(under)c(control)g(of)e(the)h(respecti)n(v)o(e)i(back)o(ends.)0
4793 y Fm(4.2.9)99 b(Option)25 b(Descriptor)g(T)-7 b(ype)0
5019 y Fq(Option)23 b(descriptors)j(are)d(at)f(the)h(same)f(time)h(the)
f(most)h(intricate)h(and)f(po)n(werful)h(type)f(in)g(the)f(SANE)f
(standard.)30 b(Options)0 5132 y(are)h(used)g(to)f(control)j(virtually)
g(all)d(aspects)i(of)f(de)n(vice)h(operation.)52 b(Much)31
b(of)f(the)h(po)n(wer)f(of)h(the)g(SANE)d(API)h(stems)1905
5381 y(18)p eop end
%%Page: 19 20
TeXDict begin 19 19 bop 0 123 a Fq(from)22 b(the)h(f)o(act)g(that)g
(most)g(de)n(vice)h(controls)g(are)f(completely)i(described)g(by)d
(their)i(respecti)n(v)o(e)g(option)g(descriptor)-5 b(.)31
b(Thus,)0 236 y(a)21 b(frontend)i(can)e(control)i(a)e(scanner)i
(abstractly)-6 b(,)24 b(without)e(requiring)i(kno)n(wledge)f(as)e(to)g
(what)g(the)g(purpose)i(of)e(an)o(y)h(gi)n(v)o(en)0 349
y(option)27 b(is.)33 b(Con)l(v)o(ersely)-6 b(,)28 b(a)d(scanner)i(can)f
(describe)h(its)e(controls)j(without)e(requiring)i(kno)n(wledge)f(of)e
(ho)n(w)f(the)i(frontend)0 462 y(operates.)31 b(The)23
b(C)f(declaration)27 b(of)c(the)h Fp(SANE)p 1485 462
28 4 v 31 w(Option)p 1846 462 V 30 w(Descriptor)18 b
Fq(type)25 b(is)e(gi)n(v)o(en)h(belo)n(w)-6 b(.)227 708
y Fp(typedef)52 b(struct)336 821 y({)445 934 y(SANE_String_Cons)o(t)c
(name;)445 1047 y(SANE_String_Cons)o(t)g(title;)445 1160
y(SANE_String_Cons)o(t)g(desc;)445 1272 y(SANE_Value_Type)g(type;)445
1385 y(SANE_Unit)j(unit;)445 1498 y(SANE_Int)g(size;)445
1611 y(SANE_Int)g(cap;)445 1724 y(SANE_Constraint_)o(Ty)o(pe)d
(constraint_type)o(;)445 1837 y(union)555 1950 y({)664
2063 y(const)k(SANE_String_Con)o(st)1973 2079 y(*)2028
2063 y(string_list;)664 2176 y(const)g(SANE_Word)1536
2192 y(*)1591 2176 y(word_list;)664 2289 y(const)g(SANE_Range)1591
2305 y(*)1646 2289 y(range;)555 2402 y(})445 2514 y(constraint;)336
2627 y(})227 2740 y(SANE_Option_Des)o(cri)o(pt)o(or)o(;)0
3045 y Fr(Option)23 b(Name)0 3278 y Fq(Member)k Fp(name)e
Fq(is)h(a)h(string)h(that)g(uniquely)h(identi\002es)g(the)e(option.)40
b(The)27 b(name)g(must)g(be)g(unique)i(for)e(a)f(gi)n(v)o(en)i(de)n
(vice)0 3391 y(\(i.e.,)33 b(the)f(option)h(names)f(across)h(dif)n
(ferent)h(back)o(ends)g(or)e(de)n(vices)h(need)f(not)g(be)g(unique\).)
55 b(The)31 b(option)i(name)f(must)0 3504 y(consist)e(of)d(lo)n(wer)n
(-case)j(ASCII)c(letters)k(\()p Fp(a)p Fq(\226)p Fp(z)p
Fq(\),)e(digits)h(\()p Fp(0)p Fq(\226)p Fp(9)p Fq(\),)f(or)f(the)i
(dash)f(character)i(\()p Fp(-)p Fq(\))d(only)-6 b(.)43
b(The)27 b(\002rst)h(character)0 3617 y(must)c(be)f(a)g(lo)n(wer)n
(-case)j(ASCII)c(character)j(\(i.e.,)e(not)h(a)f(digit)i(or)e(a)g
(dash\).)0 3921 y Fr(Option)g(T)n(itle)0 4154 y Fq(Member)e
Fp(title)d Fq(is)j(a)g(single-line)j(string)e(that)g(can)g(be)f(used)h
(by)f(the)g(frontend)j(as)d(a)f(title)i(string.)29 b(This)21
b(should)i(typically)0 4267 y(be)h(a)f(short)h(\(one)g(or)g(tw)o(o-w)o
(ord\))h(string)f(that)g(is)g(chosen)h(based)g(on)e(the)h(function)i
(of)d(the)h(option.)0 4572 y Fr(Option)f(Description)0
4805 y Fq(Member)i Fp(desc)e Fq(is)h(a)h(\(potentially)j(v)o(ery\))e
(long)g(string)g(that)f(can)h(be)f(used)h(as)e(a)h(help)h(te)o(xt)f(to)
g(describe)i(the)e(option.)35 b(It)24 b(is)0 4918 y(the)g
(responsibility)j(of)d(the)f(frontend)j(to)e(break)g(the)g(string)h
(into)f(managable-length)j(lines.)j(Ne)n(wline)23 b(characters)j(in)e
(this)0 5030 y(string)h(should)g(be)f(interpreted)i(as)e(paragraph)i
(breaks.)1905 5381 y(19)p eop end
%%Page: 20 21
TeXDict begin 20 20 bop 0 123 a Fr(Option)23 b(V)-8 b(alue)22
b(T)-7 b(ype)0 356 y Fq(Member)23 b Fp(type)e Fq(speci\002es)j(the)f
(type)h(of)f(the)g(option)i(v)n(alue.)k(The)23 b(possible)i(v)n(alues)f
(for)f(type)h Fp(SANE)p 3217 356 28 4 v 31 w(Value)p
3523 356 V 31 w(Type)c Fq(are)0 469 y(described)26 b(in)e(T)-7
b(able)23 b(4.3.)p 115 573 3670 4 v 113 686 4 113 v 433
652 a Fr(Symbol)p 1042 686 V 368 w(Code)p 1344 686 V
1044 w(Description)p 3783 686 V 115 689 3670 4 v 115
706 V 113 819 4 113 v 165 785 a Fp(SANE)p 390 785 28
4 v 31 w(TYPE)p 641 785 V 31 w(BOOL)p 1042 819 4 113
v 207 w Fq(0)p 1344 819 V 256 w(Option)h(v)n(alue)h(is)e(of)h(type)g
Fp(SANE_Bool)p Fq(.)p 3783 819 V 113 932 V 165 898 a
Fp(SANE)p 390 898 28 4 v 31 w(TYPE)p 641 898 V 31 w(INT)p
1042 932 4 113 v 262 w Fq(1)p 1344 932 V 256 w(Option)g(v)n(alue)h(is)e
(of)h(type)g Fp(SANE_Int)p Fq(.)p 3783 932 V 113 1045
V 165 1011 a Fp(SANE)p 390 1011 28 4 v 31 w(TYPE)p 641
1011 V 31 w(FIXED)p 1042 1045 4 113 v 152 w Fq(2)p 1344
1045 V 256 w(Option)g(v)n(alue)h(is)e(of)h(type)g Fp(SANE_Fixed)p
Fq(.)p 3783 1045 V 113 1157 V 165 1124 a Fp(SANE)p 390
1124 28 4 v 31 w(TYPE)p 641 1124 V 31 w(STRING)p 1042
1157 4 113 v 97 w Fq(3)p 1344 1157 V 256 w(Option)g(v)n(alue)h(is)e(of)
h(type)g Fp(SANE_String)p Fq(.)p 3783 1157 V 113 1722
4 565 v 165 1236 a Fp(SANE)p 390 1236 28 4 v 31 w(TYPE)p
641 1236 V 31 w(BUTTON)p 1042 1722 4 565 v 97 w Fq(4)p
1344 1722 V 256 w(An)31 b(option)h(of)g(this)f(type)h(has)g(no)f(v)n
(alue.)53 b(Instead,)35 b(setting)e(an)e(option)1395
1349 y(of)j(this)h(type)g(has)g(an)f(option-speci\002c)k(side-ef)n
(fect.)63 b(F)o(or)33 b(e)o(xample,)38 b(a)1395 1462
y(b)n(utton-typed)k(option)d(could)g(be)f(used)h(by)e(a)h(back)o(end)i
(to)d(pro)o(vide)j(a)1395 1575 y(means)35 b(to)f(select)i(def)o(ault)g
(v)n(alues)f(or)g(to)f(the)h(tell)f(an)h(automatic)h(doc-)1395
1688 y(ument)24 b(feeder)h(to)e(adv)n(ance)j(to)d(the)h(ne)o(xt)g
(sheet)g(of)g(paper)-5 b(.)p 3783 1722 V 113 2399 4 678
v 165 1801 a Fp(SANE)p 390 1801 28 4 v 31 w(TYPE)p 641
1801 V 31 w(GROUP)p 1042 2399 4 678 v 152 w Fq(5)p 1344
2399 V 256 w(An)28 b(option)i(of)e(this)h(type)h(has)f(no)f(v)n(alue.)
45 b(This)28 b(type)h(is)f(used)i(to)e(group)1395 1914
y(logically)35 b(related)e(options.)56 b(A)31 b(group)i(option)h(is)d
(in)h(ef)n(fect)h(up)f(to)g(the)1395 2027 y(point)j(where)f(another)i
(group)f(option)g(is)f(encountered)j(\(or)d(up)g(to)g(the)1395
2140 y(end)d(of)f(the)g(option)i(list,)g(if)e(there)h(are)f(no)g(other)
h(group)h(options\).)50 b(F)o(or)1395 2253 y(group)27
b(options,)h(only)e(members)g Fp(title)d Fq(and)j Fp(type)d
Fq(are)i(v)n(alid)i(in)e(the)1395 2366 y(option)g(descriptor)-5
b(.)p 3783 2399 V 115 2403 3670 4 v 966 2556 a(T)e(able)24
b(4.3:)29 b(Option)24 b(V)-10 b(alue)24 b(T)-7 b(ypes)24
b(\()p Fp(SANE)p 2354 2556 28 4 v 31 w(Value)p 2660 2556
V 30 w(Type)p Fq(\))0 3020 y Fr(Option)f(V)-8 b(alue)22
b(Unit)0 3253 y Fq(Member)f Fp(unit)c Fq(speci\002es)22
b(what)e(the)h(physical)h(unit)f(of)f(the)h(option)h(v)n(alue)f(is.)27
b(The)20 b(possible)j(v)n(alues)e(for)g(type)g Fp(SANE)p
3765 3253 V 31 w(U-)0 3366 y(nit)e Fq(are)j(described)i(in)d(T)-7
b(able)22 b(4.4.)27 b(Note)22 b(that)g(the)g(speci\002ed)g(unit)g(is)g
(what)f(the)h(SANE)d(back)o(end)k(e)o(xpects.)30 b(It)21
b(is)g(entirely)0 3478 y(up)26 b(to)h(a)f(frontend)i(as)f(to)f(ho)n(w)g
(these)h(units)g(a)f(presented)j(to)e(the)f(user)-5 b(.)38
b(F)o(or)26 b(e)o(xample,)h(SANE)d(e)o(xpresses)29 b(all)d(lengths)i
(in)0 3591 y(millimeters.)37 b(A)25 b(frontend)j(is)d(generally)k(e)o
(xpected)f(to)d(pro)o(vide)j(appropriate)h(con)l(v)o(ersion)g(routines)
f(so)e(that)g(a)f(user)i(can)0 3704 y(e)o(xpress)e(quantities)h(in)e(a)
f(customary)i(unit)f(\(e.g.,)f(inches)i(or)f(centimeters\).)p
499 3827 2903 4 v 497 3940 4 113 v 953 3906 a Fr(Symbol)p
1698 3940 V 1698 3940 V 504 w(Code)p 2000 3940 V 2000
3940 V 525 w(Description)p 3400 3940 V 499 3943 2903
4 v 499 3960 V 497 4073 4 113 v 548 4039 a Fp(SANE)p
773 4039 28 4 v 31 w(UNIT)p 1024 4039 V 31 w(NONE)p 1698
4073 4 113 v 480 w Fq(0)p 2000 4073 V 256 w(V)-10 b(alue)24
b(is)f(unit-less)j(\(e.g.,)d(page)i(count\).)p 3400 4073
V 497 4186 V 548 4152 a Fp(SANE)p 773 4152 28 4 v 31
w(UNIT)p 1024 4152 V 31 w(PIXEL)p 1698 4186 4 113 v 425
w Fq(1)p 2000 4186 V 256 w(V)-10 b(alue)24 b(is)f(in)h(number)g(of)g
(pix)o(els.)p 3400 4186 V 497 4298 V 548 4265 a Fp(SANE)p
773 4265 28 4 v 31 w(UNIT)p 1024 4265 V 31 w(BIT)p 1698
4298 4 113 v 535 w Fq(2)p 2000 4298 V 256 w(V)-10 b(alue)24
b(is)f(in)h(number)g(of)g(bits.)p 3400 4298 V 497 4411
V 548 4377 a Fp(SANE)p 773 4377 28 4 v 31 w(UNIT)p 1024
4377 V 31 w(MM)p 1698 4411 4 113 v 590 w Fq(3)p 2000
4411 V 256 w(V)-10 b(alue)24 b(is)f(in)h(millimeters.)p
3400 4411 V 497 4524 V 548 4490 a Fp(SANE)p 773 4490
28 4 v 31 w(UNIT)p 1024 4490 V 31 w(DPI)p 1698 4524 4
113 v 535 w Fq(4)p 2000 4524 V 256 w(V)-10 b(alue)24
b(is)f(a)h(resolution)i(in)d(dots/inch.)p 3400 4524 V
497 4637 V 548 4603 a Fp(SANE)p 773 4603 28 4 v 31 w(UNIT)p
1024 4603 V 31 w(PERCENT)p 1698 4637 4 113 v 315 w Fq(5)p
2000 4637 V 256 w(V)-10 b(alue)24 b(is)f(a)h(percentage.)p
3400 4637 V 497 4750 V 548 4716 a Fp(SANE)p 773 4716
28 4 v 31 w(UNIT)p 1024 4716 V 31 w(MICROSECOND)p 1698
4750 4 113 v 95 w Fq(6)p 2000 4750 V 256 w(V)-10 b(alue)24
b(is)f(time)h(in)f Fh(\026)p Fq(-seconds.)p 3400 4750
V 499 4753 2903 4 v 1215 4907 a(T)-7 b(able)24 b(4.4:)29
b(Physical)24 b(Units)g(\()p Fp(SANE)p 2410 4907 28 4
v 31 w(Unit)p Fq(\))1905 5381 y(20)p eop end
%%Page: 21 22
TeXDict begin 21 21 bop 0 123 a Fr(Option)23 b(V)-8 b(alue)22
b(Size)0 354 y Fq(Member)27 b Fp(size)d Fq(speci\002es)j(the)g(size)g
(of)g(the)g(option)h(v)n(alue)f(\(in)g(bytes\).)39 b(This)26
b(member)h(has)g(a)f(slightly)i(dif)n(ferent)h(inter)n(-)0
467 y(pretation)d(depending)g(on)e(the)g(type)g(of)g(the)f(option)i(v)n
(alue:)227 707 y Fp(SANE)p 452 707 28 4 v 31 w(TYPE)p
703 707 V 31 w(STRING)p Fr(:)43 b Fq(The)27 b(size)g(is)g(the)g
(maximum)g(size)h(of)f(the)g(string.)40 b(F)o(or)26 b(the)i(purpose)h
(of)e(string)427 820 y(size)c(calcuations,)i(the)d(terminating)i
Fp(NUL)19 b Fq(character)24 b(is)e(considered)i(to)e(be)g(part)g(of)g
(the)g(string.)29 b(Note)427 933 y(that)24 b(the)g(terminating)i
Fp(NUL)21 b Fq(character)26 b(must)e(al)o(w)o(ays)g(be)g(present)h(in)e
(string)i(option)g(v)n(alues.)227 1077 y Fp(SANE)p 452
1077 V 31 w(TYPE)p 703 1077 V 31 w(INT)p Fr(,)c Fp(SANE)p
1163 1077 V 31 w(TYPE)p 1414 1077 V 31 w(FIXED)p Fr(:)43
b Fq(The)31 b(size)h(must)f(be)g(a)g(positi)n(v)o(e)i(inte)o(ger)f
(multiple)h(of)e(the)427 1190 y(size)24 b(of)g(a)f Fp(SANE_Word)p
Fq(.)h(The)f(option)i(v)n(alue)f(is)g(a)f(v)o(ector)h(of)g(length)1533
1389 y Fd(size)o Fh(=)p Fd(sizeof)p Fj(\()p Fd(SANE)p
2289 1389 V 31 w(Word)p Fj(\))o Fh(:)227 1604 y Fp(SANE)p
452 1604 V 31 w(TYPE)p 703 1604 V 31 w(BOOL)p Fr(:)44
b Fq(The)23 b(size)h(must)g(be)f(set)h(to)f Fp(sizeof\(SANE)p
2486 1604 V 28 w(Word\))p Fq(.)227 1748 y Fp(SANE)p 452
1748 V 31 w(TYPE)p 703 1748 V 31 w(BUTTON)p Fr(,)d Fp(SANE)p
1327 1748 V 31 w(TYPE)p 1578 1748 V 31 w(GROUP)p Fr(:)43
b Fq(The)23 b(option)i(size)f(is)g(ignored.)0 2050 y
Fr(Option)f(Capabilities)0 2281 y Fq(Member)h Fp(cap)d
Fq(describes)26 b(what)d(capabilities)k(the)c(option)i(posseses.)31
b(This)23 b(is)h(a)f(bitset)h(that)g(is)f(formed)h(as)g(the)f(inclusi)n
(v)o(e)0 2394 y(logical)29 b(OR)d(of)h(the)h(capabilities)j(described)f
(in)d(T)-7 b(able)28 b(4.5.)40 b(The)27 b(SANE)e(API)i(pro)o(vides)i
(the)f(follo)n(wing)h(to)e(macros)h(to)0 2507 y(test)c(certain)h
(features)h(of)d(a)g(gi)n(v)o(en)h(capability)i(bitset:)227
2747 y Fp(SANE)p 452 2747 V 31 w(OPTION)p 813 2747 V
30 w(IS)p 953 2747 V 32 w(ACTIVE\()p Fl(cap)p Fp(\))p
Fr(:)43 b Fq(This)22 b(macro)h(returns)g Fp(SANE)p 2553
2747 V 31 w(TRUE)d Fq(if)i(and)g(only)h(if)f(the)g(option)427
2860 y(with)i(the)f(capability)k(set)c Fl(cap)h Fq(is)g(currently)i
(acti)n(v)o(e.)227 3004 y Fp(SANE)p 452 3004 V 31 w(OPTION)p
813 3004 V 30 w(IS)p 953 3004 V 32 w(SETTABLE\()p Fl(cap)p
Fp(\))p Fr(:)42 b Fq(This)23 b(macro)f(returns)i Fp(SANE)p
2663 3004 V 31 w(TRUE)c Fq(if)i(and)h(only)g(if)f(the)h(op-)427
3117 y(tion)h(with)g(the)g(capability)i(set)e Fl(cap)g
Fq(is)f(softw)o(are)i(settable.)0 3489 y Fr(Option)e(V)-8
b(alue)22 b(Constraints)0 3720 y Fq(It)k(is)g(often)h(useful)g(to)f
(constrain)j(the)d(v)n(alues)i(that)e(an)h(option)g(can)g(tak)o(e.)37
b(F)o(or)25 b(e)o(xample,)j(constraints)h(can)d(be)g(used)h(by)g(a)0
3833 y(frontend)h(to)e(determine)i(ho)n(w)e(to)g(represent)i(a)e(gi)n
(v)o(en)h(option.)38 b(Member)26 b Fp(constraint)p 2921
3833 V 28 w(type)e Fq(indicates)k(what)e(con-)0 3946
y(straint)e(is)d(in)h(ef)n(fect)h(for)g(the)f(option.)30
b(The)21 b(constrained)26 b(v)n(alues)d(that)f(are)h(allo)n(wed)f(for)h
(the)f(option)i(are)e(described)j(by)d(one)0 4059 y(of)i(the)g(union)h
(members)f(of)g(member)g Fp(constraint)p Fq(.)g(The)f(possible)j(v)n
(alues)f(of)f(type)h Fp(SANE)p 3078 4059 V 31 w(Constraint)p
3659 4059 V 28 w(Type)0 4172 y Fq(and)f(the)g(interpretation)j(of)d
(the)g Fp(constraint)18 b Fq(union)25 b(is)e(described)j(in)e(T)-7
b(able)23 b(4.6.)0 4521 y Fn(4.3)119 b(Operations)0 4788
y Fm(4.3.1)99 b Fc(sane)p 545 4788 30 4 v 35 w(init)0
5019 y Fq(This)35 b(function)h(must)f(be)g(called)h(before)g(an)o(y)f
(other)g(SANE)d(function)37 b(can)e(be)g(called.)63 b(The)35
b(beha)n(vior)i(of)d(a)h(SANE)0 5132 y(back)o(end)i(is)d(unde\002ned)j
(if)d(this)h(function)i(is)e(not)g(called)g(\002rst)g(or)f(if)h(the)g
(status)h(code)f(returned)i(by)d Fp(sane)p 3561 5132
28 4 v 31 w(init)e Fq(is)1905 5381 y(21)p eop end
%%Page: 22 23
TeXDict begin 22 22 bop 36 572 3828 4 v 34 685 4 113
v 452 651 a Fr(Symbol)p 1160 685 V 466 w(Code)p 1461
685 V 1026 w(Description)p 3862 685 V 36 688 3828 4 v
36 705 V 34 931 4 226 v 86 784 a Fp(SANE)p 311 784 28
4 v 31 w(CAP)p 507 784 V 31 w(SOFT)p 758 784 V 31 w(SELECT)p
1160 931 4 226 v 254 w Fq(1)p 1461 931 V 100 w(The)20
b(option)j(v)n(alue)f(can)f(be)h(set)f(by)g(a)g(call)g(to)g
Fp(sane)p 3155 784 28 4 v 31 w(control)p 3571 784 V 30
w(opt-)1513 897 y(ion\(\))p Fq(.)p 3862 931 4 226 v 34
1495 4 565 v 86 1010 a Fp(SANE)p 311 1010 28 4 v 31 w(CAP)p
507 1010 V 31 w(HARD)p 758 1010 V 31 w(SELECT)p 1160
1495 4 565 v 254 w Fq(2)p 1461 1495 V 100 w(The)28 b(option)j(v)n(alue)
f(can)f(be)h(set)f(by)g(user)n(-interv)o(ention)34 b(\(e.g.,)c(by)f
(\003ip-)1513 1123 y(ping)35 b(a)f(switch\).)63 b(The)34
b(user)n(-interf)o(ace)39 b(should)e(prompt)e(the)g(user)g(to)1513
1236 y(e)o(x)o(ecute)25 b(the)g(appropriate)i(action)f(to)e(set)g(such)
h(an)g(option.)32 b(This)24 b(capa-)1513 1349 y(bility)33
b(is)f(mutually)i(e)o(xclusi)n(v)o(e)g(with)e(SANE)p
2990 1349 28 4 v 31 w(CAP)p 3199 1349 V 31 w(SOFT)p 3454
1349 V 31 w(SELECT)1513 1462 y(\(either)25 b(one)f(of)f(them)h(can)g
(be)f(set,)h(b)n(ut)g(not)g(both)g(simultaneously\).)p
3862 1495 4 565 v 34 2286 4 791 v 86 1574 a Fp(SANE)p
311 1574 28 4 v 31 w(CAP)p 507 1574 V 31 w(SOFT)p 758
1574 V 31 w(DETECT)p 1160 2286 4 791 v 254 w Fq(4)p 1461
2286 V 100 w(The)43 b(option)h(v)n(alue)g(can)g(be)f(detected)i(by)f
(softw)o(are.)88 b(If)43 b Fp(SANE)p 3733 1574 28 4 v
31 w(-)1513 1687 y(CAP)p 1683 1687 V 31 w(SOFT)p 1934
1687 V 31 w(SELECT)f Fq(is)j(set,)50 b(this)c(capability)i
Fl(must)e Fq(be)g(set.)93 b(If)1513 1800 y Fp(SANE)p
1738 1800 V 31 w(CAP)p 1934 1800 V 31 w(HARD)p 2185 1800
V 31 w(SELECT)27 b Fq(is)k(set,)i(this)e(capability)j(may)c(or)h(may)
1513 1913 y(not)d(be)g(set.)42 b(If)28 b(this)g(capability)j(is)d(set)g
(b)n(ut)g(neither)i Fp(SANE)p 3428 1913 V 31 w(CAP)p
3624 1913 V 31 w(SO-)1513 2026 y(FT)p 1628 2026 V 32
w(SELECT)22 b Fq(nor)27 b Fp(SANE)p 2379 2026 V 31 w(CAP)p
2575 2026 V 31 w(HARD)p 2826 2026 V 31 w(SELECT)c Fq(are,)j(then)h
(there)g(is)1513 2139 y(no)e(w)o(ay)f(to)h(control)i(the)e(option.)34
b(That)25 b(is,)g(the)g(option)h(pro)o(vides)h(read-)1513
2252 y(out)d(of)f(the)h(current)h(v)n(alue)g(only)-6
b(.)p 3862 2286 4 791 v 34 2737 4 452 v 86 2365 a Fp(SANE)p
311 2365 28 4 v 31 w(CAP)p 507 2365 V 31 w(EMULATED)p
1160 2737 4 452 v 395 w Fq(8)p 1461 2737 V 100 w(If)22
b(set,)h(this)g(capability)i(indicates)g(that)d(an)h(option)h(is)e(not)
h(directly)h(sup-)1513 2478 y(ported)36 b(by)g(the)f(de)n(vice)h(and)g
(is)f(instead)h(emulated)h(in)e(the)g(back)o(end.)1513
2591 y(A)26 b(sophisticated)31 b(frontend)f(may)c(elect)j(to)e(use)g
(its)h(o)n(wn)e(\(presumably)1513 2704 y(better\))f(emulation)g(in)f
(lieu)g(of)f(an)h(emulated)h(option.)p 3862 2737 V 34
3302 4 565 v 86 2816 a Fp(SANE)p 311 2816 28 4 v 31 w(CAP)p
507 2816 V 31 w(AUTOMATIC)p 1160 3302 4 565 v 294 w Fq(16)p
1461 3302 V 101 w(If)i(set,)i(this)g(capability)h(indicates)h(that)d
(the)g(back)o(end)i(\(or)e(the)h(de)n(vice\))1513 2929
y(is)j(capable)i(to)e(picking)i(a)e(reasonable)j(option)f(v)n(alue)f
(automatically)-6 b(.)1513 3042 y(F)o(or)24 b(such)h(options,)i(it)d
(is)h(possible)i(to)d(select)i(automatic)h(operation)g(by)1513
3155 y(calling)38 b Fp(sane)p 2021 3155 28 4 v 31 w(control)p
2437 3155 V 29 w(option\(\))32 b Fq(with)k(an)g(action)h(v)n(alue)g(of)
1513 3268 y Fp(SANE)p 1738 3268 V 31 w(ACTION)p 2099
3268 V 30 w(SET)p 2294 3268 V 31 w(AUTO)p Fq(.)p 3862
3302 4 565 v 34 3641 4 339 v 86 3381 a Fp(SANE)p 311
3381 28 4 v 31 w(CAP)p 507 3381 V 31 w(INACTIVE)p 1160
3641 4 339 v 349 w Fq(32)p 1461 3641 V 101 w(If)32 b(set,)j(this)e
(capability)i(indicates)g(that)e(the)g(option)h(is)e(not)h(currently)
1513 3494 y(acti)n(v)o(e)22 b(\(e.g.,)f(because)j(it')-5
b(s)21 b(meaningful)j(only)e(if)f(another)j(option)f(is)e(set)1513
3607 y(to)i(some)h(other)g(v)n(alue\).)p 3862 3641 V
34 4318 4 678 v 86 3720 a Fp(SANE)p 311 3720 28 4 v 31
w(CAP)p 507 3720 V 31 w(ADVANCED)p 1160 4318 4 678 v
349 w Fq(64)p 1461 4318 V 101 w(If)34 b(set,)i(this)f(capability)h
(indicates)h(that)d(the)g(option)i(should)f(be)f(con-)1513
3833 y(sidered)j(an)e(\223adv)n(anced)i(user)f(option.)-6
b(\224)65 b(A)34 b(frontend)j(typically)g(dis-)1513 3946
y(plays)31 b(such)g(options)h(in)e(a)g(less)h(conspicuous)i(w)o(ay)d
(than)h(re)o(gular)h(op-)1513 4058 y(tions)c(\(e.g.,)e(a)h(command)g
(line)g(interf)o(ace)i(may)e(list)g(such)g(options)i(last)1513
4171 y(or)e(a)f(graphical)k(interf)o(ace)f(may)e(mak)o(e)g(them)g(a)n
(v)n(ailable)j(in)c(a)h(seperate)1513 4284 y(\223adv)n(anced)f
(settings\224)g(dialog\).)p 3862 4318 V 36 4322 3828
4 v 1400 4475 a(T)-7 b(able)24 b(4.5:)29 b(Option)24
b(Capabilities)1905 5381 y(22)p eop end
%%Page: 23 24
TeXDict begin 23 23 bop 21 102 3859 4 v 19 215 4 113
v 628 181 a Fr(Symbol)p 1526 215 V 1526 215 V 657 w(Code)p
1828 215 V 1828 215 V 850 w(Description)p 3877 215 V
21 219 3859 4 v 21 235 V 19 461 4 226 v 71 314 a Fp(SANE)p
296 314 28 4 v 31 w(CONSTRAINT)p 877 314 V 28 w(NONE)p
1526 461 4 226 v 614 w Fq(0)p 1828 461 V 100 w(The)29
b(v)n(alue)g(is)g(unconstrained.)49 b(The)28 b(option)j(can)e(tak)o(e)g
(an)o(y)1879 427 y(of)24 b(the)g(v)n(alues)g(possible)i(for)e(the)g
(option')-5 b(s)25 b(type.)p 3877 461 V 19 3094 4 2634
v 71 540 a Fp(SANE)p 296 540 28 4 v 31 w(CONSTRAINT)p
877 540 V 28 w(RANGE)p 1526 3094 4 2634 v 559 w Fq(1)p
1828 3094 V 100 w(This)d(constraint)i(is)d(applicable)j(to)e(inte)o
(ger)h(and)f(\002x)o(ed-point)1879 653 y(v)n(alued)h(options)g(only)-6
b(.)29 b(It)21 b(constrains)j(the)d(option)i(v)n(alue)f(to)f(a)1879
766 y(possibly)k(quantized)g(range)e(of)f(numbers.)30
b(Option)22 b(descrip-)1879 879 y(tor)j(member)g Fp(constraint.rang)o
(e)17 b Fq(points)27 b(to)d(a)g(range)1879 992 y(of)h(the)g(type)h
Fp(SANE)p 2520 992 28 4 v 31 w(Range)p Fq(.)k(This)25
b(type)h(is)e(illustrated)k(be-)1879 1105 y(lo)n(w:)2107
1292 y Fp(typedef)51 b(struct)2216 1405 y({)2325 1518
y(SANE_Word)f(min;)2325 1631 y(SANE_Word)g(max;)2325
1744 y(SANE_Word)g(quant;)2216 1857 y(})2107 1970 y(SANE_Range;)1879
2157 y Fq(All)23 b(three)i(members)f(in)g(this)g(structure)i(are)e
(interpreted)i(ac-)1879 2270 y(cording)31 b(to)e(the)g(option)h(v)n
(alue)f(type)h(\()p Fp(SANE_TYPE_INT)1879 2383 y Fq(or)41
b Fp(SANE_TYPE_FIXED)o Fq(\).)35 b(Members)41 b Fp(min)e
Fq(and)j Fp(max)1879 2496 y Fq(specify)37 b(the)e(minimum)g(and)g
(maximum)g(v)n(alues,)k(respec-)1879 2609 y(ti)n(v)o(ely)-6
b(.)39 b(If)26 b(member)g Fp(quant)e Fq(is)i(non-zero,)j(it)d
(speci\002es)i(the)1879 2722 y(quantization)34 b(v)n(alue.)51
b(If)30 b Fh(l)h Fq(is)g(the)f(minimum)h(v)n(alue,)h
Fh(u)e Fq(the)1879 2835 y(maximum)e(v)n(alue)h(and)g
Fh(q)h Fq(the)f(\(non-zero\))i(quantization)h(of)1879
2948 y(a)25 b(range,)i(then)f(the)g(le)o(gal)g(v)n(alues)h(are)e
Fh(v)33 b Fj(=)28 b Fh(k)d Fk(\001)d Fh(q)j Fj(+)c Fh(l)27
b Fq(for)e(all)1879 3061 y(non-ne)o(gati)n(v)o(e)h(inte)o(ger)f(v)n
(alues)g(of)e Fh(k)j Fq(such)e(that)h Fh(v)j(<)p Fj(=)d
Fh(u)p Fq(.)p 3877 3094 4 2634 v 19 4224 4 1130 v 71
3173 a Fp(SANE)p 296 3173 28 4 v 31 w(CONSTRAINT)p 877
3173 V 28 w(WORD)p 1125 3173 V 31 w(LIST)p 1526 4224
4 1130 v 363 w Fq(2)p 1828 4224 V 100 w(This)d(constraint)i(is)d
(applicable)j(to)e(inte)o(ger)h(and)f(\002x)o(ed-point)1879
3286 y(v)n(alued)29 b(options)h(only)-6 b(.)43 b(It)28
b(constrains)i(the)e(option)i(v)n(alue)f(to)1879 3399
y(a)34 b(list)g(of)g(numeric)h(v)n(alues.)61 b(Option)35
b(descriptor)h(member)1879 3512 y Fp(constraint.word)p
2708 3512 28 4 v 26 w(list)22 b Fq(points)j(to)f(a)g(list)g(of)g(w)o
(ords)1879 3625 y(that)k(enumerates)h(the)e(le)o(gal)f(v)n(alues.)40
b(The)26 b(\002rst)h(element)h(in)1879 3738 y(that)33
b(list)f(is)f(an)h(inte)o(ger)h(\()p Fp(SANE_Int)p Fq(\))28
b(that)k(speci\002es)h(the)1879 3851 y(length)28 b(of)f(the)g(list)g
(\(not)h(counting)h(the)e(length)h(itself\).)40 b(The)1879
3964 y(remaining)30 b(elements)f(in)e(the)h(list)g(are)g(interpreted)j
(accord-)1879 4077 y(ing)19 b(to)g(the)g(type)g(of)f(the)h(option)h(v)n
(alue)g(\()p Fp(SANE_TYPE_INT)1879 4190 y Fq(or)k Fp(SANE_TYPE_FIXE)o
(D)p Fq(\).)p 3877 4224 4 1130 v 19 4788 4 565 v 71 4303
a Fp(SANE)p 296 4303 28 4 v 31 w(CONSTRAINT)p 877 4303
V 28 w(STRING)p 1235 4303 V 30 w(LIST)p 1526 4788 4 565
v 254 w Fq(3)p 1828 4788 V 100 w(This)31 b(constraint)i(is)e
(applicable)i(to)e(string-v)n(alued)k(options)1879 4415
y(only)-6 b(.)33 b(It)25 b(constrains)i(the)e(option)h(v)n(alue)g(to)e
(a)g(list)i(of)e(strings.)1879 4528 y(The)h(option)h(descriptor)i
(member)d Fp(constraint.str-)1879 4641 y(ing)p 2049 4641
28 4 v 32 w(list)19 b Fq(points)k(to)e(a)g Fp(NULL)e
Fq(terminated)k(list)f(of)g(strings)1879 4754 y(that)i(enumerate)i(the)
e(le)o(gal)f(v)n(alues)i(for)f(the)f(option)j(v)n(alue.)p
3877 4788 4 565 v 21 4791 3859 4 v 1296 4945 a(T)-7 b(able)23
b(4.6:)29 b(Option)24 b(V)-10 b(alue)24 b(Constraints)1905
5381 y(23)p eop end
%%Page: 24 25
TeXDict begin 24 24 bop 0 123 a Fq(dif)n(ferent)30 b(from)e
Fp(SANE)p 767 123 28 4 v 31 w(STATUS)p 1128 123 V 30
w(GOOD)p Fq(.)d(The)j(v)o(ersion)h(code)g(of)f(the)h(back)o(end)h(is)e
(returned)i(in)e(the)g(v)n(alue)h(pointed)h(to)0 236
y(by)24 b Fp(version)p 504 236 V 29 w(code)p Fq(.)j(If)d(that)g
(pointer)i(is)d Fp(NULL)p Fq(,)e(no)j(v)o(ersion)i(code)e(is)g
(returned.)31 b(Ar)n(gument)25 b Fp(authorize)19 b Fq(is)24
b(either)0 349 y(a)29 b(pointer)h(to)f(a)g(function)i(that)e(is)g(in)l
(v)n(ok)o(ed)j(when)d(the)g(back)o(end)i(requires)g(authentication)j
(for)29 b(a)f(speci\002c)i(resource)h(or)0 462 y Fp(NULL)21
b Fq(if)i(the)h(frontend)i(does)e(not)g(support)h(authentication.)227
703 y Fp(SANE_Status)50 b(sane_init)g(\(SANE_Int)1973
719 y(*)2082 703 y(version_code,)1482 816 y(SANE_Authoriza)o(tio)o(n_)o
(Ca)o(ll)o(ba)o(ck)e(authorize\);)0 1058 y Fq(The)23
b(authorization)28 b(function)d(may)f(be)f(called)i(by)f(a)f(back)o
(end)i(in)f(response)i(to)d(an)o(y)h(of)f(the)h(follo)n(wing)h(calls:)
227 1300 y Fp(sane)p 452 1300 V 31 w(open)p Fq(,)c Fp(sane)p
967 1300 V 31 w(control)p 1383 1300 V 29 w(option)p Fq(,)f
Fp(sane)p 2005 1300 V 31 w(start)0 1542 y Fq(If)25 b(a)h(back)o(end)i
(w)o(as)d(initialized)k(without)d(authorization)k(function,)e(then)f
(authorization)i(requests)f(that)e(cannot)i(be)d(han-)0
1655 y(dled)k(by)g(the)g(back)o(end)i(itself)f(will)e(f)o(ail)h
(automatically)j(and)e(the)f(user)g(may)f(be)h(pre)n(v)o(ented)i(from)d
(accessing)k(protected)0 1768 y(resources.)66 b(Back)o(ends)37
b(are)f(encouraged)i(to)d(implement)h(means)g(of)f(authentication)40
b(that)35 b(do)h(not)f(require)i(user)f(as-)0 1881 y(sistance.)64
b(E.g.,)36 b(on)f(a)f(multi-user)i(system)g(that)f(authenticates)j
(users)e(through)h(a)d(login)i(process)g(a)e(back)o(end)j(could)0
1993 y(automatically)27 b(lookup)e(the)f(apporpriate)i(passw)o(ord)g
(based)e(on)g(resource-)i(and)e(user)n(-name.)0 2164
y(The)f(authentication)28 b(function)e(type)e(has)g(the)g(follo)n(wing)
h(declaration:)227 2405 y Fp(#define)52 b(SANE_MAX_USERN)o(AM)o(E_)o
(LEN)157 b(128)227 2518 y(#define)52 b(SANE_MAX_PASSW)o(OR)o(D_)o(LEN)
157 b(128)227 2744 y(typedef)52 b(void)g(\()991 2760
y(*)1046 2744 y(SANE_Authoriza)o(ti)o(on)o(_C)o(al)o(lba)o(ck)o(\))445
2857 y(\(SANE_String_Con)o(st)c(resource,)500 2970 y(SANE_Char)i
(username[SANE_MA)o(X_)o(US)o(ER)o(NAM)o(E_)o(LE)o(N])o(,)500
3083 y(SANE_Char)g(password[SANE_MA)o(X_)o(PA)o(SS)o(WOR)o(D_)o(LE)o
(N])o(\);)0 3325 y Fq(Three)31 b(ar)n(guments)i(are)e(passed)h(to)f
(the)g(authorization)j(function:)46 b Fp(resource)26
b Fq(is)31 b(a)f(string)i(specifying)i(the)c(name)h(of)0
3438 y(the)24 b(resource)j(that)d(requires)i(authorization.)35
b(A)23 b(frontend)j(should)g(use)e(this)h(string)g(to)f(b)n(uild)i(a)d
(user)n(-prompt)k(requesting)0 3551 y(a)36 b(username)i(and)f(a)g
(passw)o(ord.)69 b(The)36 b Fp(username)c Fq(and)38 b
Fp(password)32 b Fq(ar)n(guments)39 b(are)d(\(pointers)j(to\))e(an)g
(array)g(of)0 3663 y Fp(SANE)p 225 3663 V 31 w(MAX)p
421 3663 V 31 w(USERNAME)p 892 3663 V 29 w(LEN)22 b Fq(and)i
Fp(SANE)p 1482 3663 V 31 w(MAX)p 1678 3663 V 32 w(PASSWORD)p
2150 3663 V 29 w(LEN)d Fq(characters,)26 b(respecti)n(v)o(ely)-6
b(.)33 b(The)23 b(authorization)0 3776 y(call)k(should)h(place)f(the)f
(entered)i(username)g(and)f(passw)o(ord)h(in)e(these)h(arrays.)38
b(The)26 b(returned)i(strings)g Fl(must)g Fq(be)e(ASCII-)0
3889 y(NUL)c(terminated.)0 4195 y Fm(4.3.2)99 b Fc(sane)p
545 4195 30 4 v 35 w(exit)0 4427 y Fq(This)26 b(function)i(must)e(be)g
(called)h(to)f(terminate)h(use)f(of)g(a)g(back)o(end.)38
b(The)25 b(function)j(will)e(\002rst)f(close)i(all)f(de)n(vice)h
(handles)0 4540 y(that)d(still)h(might)f(be)f(open)i(\(it)f(is)f
(recommended)j(to)e(close)h(de)n(vice)f(handles)i(e)o(xplicitly)g
(through)g(a)d(call)h(to)g Fp(sane)p 3656 4540 28 4 v
31 w(clo-)0 4652 y(se\(\))p Fq(,)k(b)n(ut)h(back)o(ends)j(are)d
(required)i(to)e(release)i(all)e(resources)j(upon)e(a)e(call)i(to)f
(this)g(function\).)48 b(After)29 b(this)h(function)0
4765 y(returns,)36 b(no)c(function)i(other)f(than)g Fp(sane)p
1396 4765 V 31 w(init\(\))28 b Fq(may)k(be)g(called)h(\(re)o(gardless)h
(of)e(the)h(status)g(v)n(alue)g(returned)h(by)0 4878
y Fp(sane)p 225 4878 V 31 w(exit\(\))p Fq(.)25 b(Ne)o(glecting)g(to)f
(call)g(this)g(function)i(may)d(result)i(in)e(some)h(resources)i(not)e
(being)g(released)i(properly)-6 b(.)227 5120 y Fp(void)53
b(sane_exit)d(\(void\);)1905 5381 y Fq(24)p eop end
%%Page: 25 26
TeXDict begin 25 25 bop 0 123 a Fm(4.3.3)99 b Fc(sane)p
545 123 30 4 v 35 w(get)p 760 123 V 35 w(devices)0 340
y Fq(This)21 b(function)i(can)e(be)g(used)h(to)f(query)h(the)g(list)f
(of)g(de)n(vices)h(that)g(are)f(a)n(v)n(ailable.)30 b(If)21
b(the)g(function)i(e)o(x)o(ecutes)g(successfully)-6 b(,)0
453 y(it)22 b(stores)h(a)e(pointer)j(to)d(a)h Fp(NULL)d
Fq(terminated)24 b(array)f(of)f(pointers)h(to)f Fp(SANE_Device)16
b Fq(structures)25 b(in)3245 469 y Fp(*)3300 453 y(device)p
3635 453 28 4 v 29 w(list)p Fq(.)0 566 y(The)i(returned)i(list)f(is)f
(guaranteed)j(to)d(remain)h(unchanged)i(and)e(v)n(alid)g(until)g(\(a\))
f(another)i(call)f(to)f(this)h(function)h(is)e(per)n(-)0
678 y(formed)f(or)e(\(b\))h(a)g(call)g(to)g Fp(sane)p
1056 678 V 31 w(exit\(\))c Fq(is)j(performed.)35 b(This)25
b(function)i(can)e(be)g(called)h(repeatedly)h(to)e(detect)h(when)0
791 y(ne)n(w)g(de)n(vices)j(become)e(a)n(v)n(ailable.)41
b(If)27 b(ar)n(gument)h Fp(local)p 1899 791 V 31 w(only)c
Fq(is)j(true,)h(only)f(local)h(de)n(vices)g(are)f(returned)i(\(de)n
(vices)0 904 y(directly)f(attached)h(to)d(the)h(machine)h(that)f(SANE)d
(is)i(running)j(on\).)37 b(If)27 b(it)f(is)g(f)o(alse,)i(the)f(de)n
(vice)g(list)g(includes)i(all)e(remote)0 1017 y(de)n(vices)e(that)f
(are)g(accessible)i(to)e(the)f(SANE)f(library)-6 b(.)227
1213 y Fp(SANE_Status)50 b(sane_get_devic)o(es)e(\(const)k(SANE_Device)
2845 1229 y(***)3064 1213 y(device_list,)1864 1326 y(SANE_Bool)e
(local_only\);)0 1522 y Fq(This)23 b(function)j(may)d(f)o(ail)h(with)g
Fp(SANE)p 1242 1522 V 31 w(STATUS)p 1603 1522 V 30 w(NO)p
1743 1522 V 31 w(MEM)e Fq(if)h(an)h(insuf)n(\002cient)h(amount)g(of)e
(memory)h(is)f(a)n(v)n(ailable.)1357 1737 y Fr(Back)o(end)f
(Implementation)i(Note)227 1880 y Fq(SANE)h(does)k(not)f(require)h
(that)f(this)h(function)g(is)f(called)h(before)g(a)e
Fp(sane)p 2646 1880 V 31 w(open\(\))d Fq(call)k(is)f(performed.)227
1993 y(A)32 b(de)n(vice)j(name)e(may)g(be)g(speci\002ed)i(e)o
(xplicitly)h(by)d(a)g(user)h(which)f(w)o(ould)h(mak)o(e)g(it)f
(unnecessary)j(and)227 2106 y(undesirable)27 b(to)d(call)g(this)g
(function)h(\002rst.)0 2391 y Fm(4.3.4)99 b Fc(sane)p
545 2391 30 4 v 35 w(open)0 2608 y Fq(This)26 b(function)h(is)f(used)h
(to)e(establish)j(a)e(connection)j(to)c(a)g(particular)k(de)n(vice.)36
b(The)26 b(name)f(of)h(the)g(de)n(vice)h(to)f(be)f(opened)0
2721 y(is)j(passed)i(in)e(ar)n(gument)i Fp(name)p Fq(.)40
b(If)28 b(the)h(call)g(completes)h(successfully)-6 b(,)33
b(a)27 b(handle)j(for)f(the)f(de)n(vice)i(is)e(returned)i(in)3768
2737 y Fp(*)3823 2721 y(h)p Fq(.)0 2834 y(As)22 b(a)h(special)h(case,)g
(specifying)i(a)c(zero-length)k(string)f(as)d(the)i(de)n(vice)g
(requests)h(opening)g(the)e(\002rst)g(a)n(v)n(ailable)i(de)n(vice)f
(\(if)0 2947 y(there)g(is)g(such)g(a)f(de)n(vice\).)227
3143 y Fp(SANE_Status)50 b(sane_open)g(\(SANE_String_Co)o(nst)e(name,)k
(SANE_Handle)3445 3159 y(*)3555 3143 y(h\);)0 3339 y
Fq(This)23 b(function)j(may)d(f)o(ail)h(with)g(one)g(of)f(the)h(follo)n
(wing)h(status)g(codes.)227 3535 y Fp(SANE)p 452 3535
28 4 v 31 w(STATUS)p 813 3535 V 30 w(DEVICE)p 1173 3535
V 30 w(BUSY)p Fr(:)44 b Fq(The)23 b(de)n(vice)i(is)e(currently)j(b)n
(usy)f(\(in)f(use)f(by)h(somebody)i(else\).)227 3668
y Fp(SANE)p 452 3668 V 31 w(STATUS)p 813 3668 V 30 w(INVAL)p
Fr(:)44 b Fq(The)23 b(de)n(vice)h(name)g(is)f(not)h(v)n(alid.)227
3800 y Fp(SANE)p 452 3800 V 31 w(STATUS)p 813 3800 V
30 w(IO)p 953 3800 V 32 w(ERROR)p Fr(:)43 b Fq(An)23
b(error)i(occured)g(while)f(communicating)i(with)e(the)f(de)n(vice.)227
3933 y Fp(SANE)p 452 3933 V 31 w(STATUS)p 813 3933 V
30 w(NO)p 953 3933 V 32 w(MEM)p Fr(:)44 b Fq(An)23 b(insuf)n(\002cent)i
(amount)g(of)e(memory)h(is)f(a)n(v)n(ailable.)227 4065
y Fp(SANE)p 452 4065 V 31 w(STATUS)p 813 4065 V 30 w(ACCESS)p
1173 4065 V 30 w(DENIED)p Fr(:)43 b Fq(Access)30 b(to)f(the)g(de)n
(vice)h(has)f(been)h(denied)h(due)e(to)g(insuf)n(\002cient)427
4178 y(or)24 b(in)l(v)n(alid)h(authentication.)0 4463
y Fm(4.3.5)99 b Fc(sane)p 545 4463 30 4 v 35 w(close)0
4680 y Fq(This)32 b(function)h(terminates)h(the)e(association)j
(between)e(the)f(de)n(vice)h(handle)g(passed)g(in)f(ar)n(gument)h
Fp(h)e Fq(and)h(the)g(de)n(vice)0 4793 y(it)h(represents.)59
b(If)33 b(the)g(de)n(vice)h(is)f(presently)j(acti)n(v)o(e,)f(a)e(call)g
(to)g Fp(sane)p 2326 4793 28 4 v 31 w(cancel\(\))c Fq(is)j(performed)j
(\002rst.)57 b(After)33 b(this)0 4906 y(function)26 b(returns,)f
(handle)g Fp(h)d Fq(must)i(not)f(be)h(used)g(an)o(ymore.)227
5120 y Fp(void)53 b(sane_close)d(\(SANE_Handle)f(h\);)1905
5381 y Fq(25)p eop end
%%Page: 26 27
TeXDict begin 26 26 bop 0 123 a Fm(4.3.6)99 b Fc(sane)p
545 123 30 4 v 35 w(get)p 760 123 V 35 w(option)p 1155
123 V 35 w(descriptor)0 356 y Fq(This)33 b(function)i(is)e(used)h(to)f
(access)i(option)f(descriptors.)61 b(The)32 b(function)k(returns)e(the)
g(option)h(descriptor)g(for)f(option)0 469 y(number)i
Fp(n)e Fq(of)h(the)h(de)n(vice)h(represented)h(by)d(handle)i
Fp(h)p Fq(.)63 b(Option)36 b(number)g(0)f(is)g(guaranteed)k(to)c(be)g
(a)g(v)n(alid)h(option.)0 582 y(Its)26 b(v)n(alue)h(is)f(an)h(inte)o
(ger)g(that)g(speci\002es)g(the)g(number)g(of)f(options)i(that)f(are)f
(a)n(v)n(ailable)j(for)d(de)n(vice)i(handle)f Fp(h)e
Fq(\(the)i(count)0 695 y(includes)22 b(option)f(0\).)28
b(If)19 b Fh(n)g Fq(is)h(not)g(a)f(v)n(alid)i(option)g(inde)o(x,)g(the)
f(function)i(returns)g Fp(NULL)p Fq(.)17 b(The)i(returned)j(option)f
(descriptor)0 807 y(is)i(guaranteed)k(to)c(remain)i(v)n(alid)f(\(and)g
(at)f(the)h(returned)i(address\))g(until)e(the)g(de)n(vice)h(is)e
(closed.)227 1079 y Fp(const)53 b(SANE_Option_De)o(sc)o(ri)o(pt)o(or)
1809 1095 y(*)445 1192 y(sane_get_option_)o(de)o(sc)o(ri)o(pto)o(r)48
b(\(SANE_Handle)h(h,)54 b(SANE_Int)d(n\);)0 1500 y Fm(4.3.7)99
b Fc(sane)p 545 1500 V 35 w(control)p 1000 1500 V 34
w(option)0 1733 y Fq(This)31 b(function)h(is)f(used)g(to)g(set)g(or)g
(inquire)h(the)f(current)h(v)n(alue)g(of)e(option)j(number)e
Fp(n)f Fq(of)g(the)h(de)n(vice)h(represented)i(by)0 1845
y(handle)26 b Fp(h)p Fq(.)k(The)24 b(manner)i(in)e(which)h(the)f
(option)i(is)f(controlled)i(is)d(speci\002ed)i(by)f(parameter)h
Fp(a)p Fq(.)k(The)24 b(possible)j(v)n(alues)e(of)0 1958
y(this)g(parameter)h(are)e(described)j(in)d(more)g(detail)h(belo)n(w)-6
b(.)31 b(The)24 b(v)n(alue)h(of)f(the)g(option)i(is)e(passed)i(through)
g(ar)n(gument)g Fp(v)p Fq(.)j(It)0 2071 y(is)21 b(a)f(pointer)j(to)e
(the)g(memory)h(that)f(holds)h(the)g(option)g(v)n(alue.)29
b(The)20 b(memory)i(area)f(pointed)i(to)e(by)g Fp(v)f
Fq(must)h(be)g(big)g(enough)0 2184 y(to)26 b(hold)g(the)g(entire)h
(option)h(v)n(alue)e(\(determined)i(by)e(member)g Fp(size)d
Fq(in)j(the)g(corresponding)k(option)d(descriptor\).)39
b(The)0 2297 y(only)23 b(e)o(xception)i(to)d(this)g(rule)h(is)f(that)h
(when)f(setting)i(the)f(v)n(alue)g(of)f(a)g(string)h(option,)h(the)e
(string)i(pointed)g(to)e(by)g(ar)n(gument)0 2410 y Fp(v)33
b Fq(may)i(be)f(shorter)j(since)e(the)g(back)o(end)i(will)d(stop)h
(reading)i(the)e(option)h(v)n(alue)f(upon)h(encountering)i(the)d
(\002rst)f Fp(NUL)0 2523 y Fq(terminator)c(in)e(the)g(string.)44
b(If)28 b(ar)n(gument)i Fp(i)c Fq(is)i(not)h Fp(NULL)p
Fq(,)c(the)j(v)n(alue)h(of)2415 2539 y Fp(*)2470 2523
y(i)d Fq(will)i(be)g(set)g(to)g(pro)o(vide)i(details)g(on)e(ho)n(w)0
2636 y(well)23 b(the)h(request)h(has)f(been)h(met.)j(The)23
b(meaning)i(of)e(this)h(ar)n(gument)i(is)d(described)j(in)e(more)f
(detail)i(belo)n(w)-6 b(.)227 2882 y Fp(SANE_Status)50
b(sane_control_o)o(pti)o(on)e(\(SANE_Handle)h(h,)k(SANE_Int)e(n,)2027
2995 y(SANE_Action)f(a,)j(void)3118 3011 y(*)3173 2995
y(v,)2027 3108 y(SANE_Int)2518 3124 y(*)2627 3108 y(i\);)0
3354 y Fq(The)21 b(w)o(ay)h(the)f(option)j(is)d(af)n(fected)i(by)f(a)f
(call)h(to)g(this)g(function)i(is)d(controlled)k(by)c(parameter)j
Fp(a)c Fq(which)i(is)f(a)g(v)n(alue)i(of)e(type)0 3467
y Fp(SANE)p 225 3467 28 4 v 31 w(Action)p Fq(.)k(The)e(possible)j(v)n
(alues)f(and)f(their)g(meaning)h(is)e(described)j(in)e(T)-7
b(able)23 b(4.7.)p 185 3590 3531 4 v 183 3703 4 113 v
628 3669 a Fr(Symbol)p 1363 3703 V 1363 3703 V 493 w(Code)p
1664 3703 V 1664 3703 V 850 w(Description)p 3714 3703
V 185 3706 3531 4 v 185 3723 V 183 3836 4 113 v 234 3802
a Fp(SANE)p 459 3802 28 4 v 31 w(ACTION)p 820 3802 V
30 w(GET)p 1015 3802 V 32 w(VALUE)p 1363 3836 4 113 v
254 w Fq(0)p 1664 3836 V 100 w(Get)g(current)i(option)g(v)n(alue.)p
3714 3836 V 183 4174 4 339 v 234 3915 a Fp(SANE)p 459
3915 28 4 v 31 w(ACTION)p 820 3915 V 30 w(SET)p 1015
3915 V 32 w(VALUE)p 1363 4174 4 339 v 254 w Fq(1)p 1664
4174 V 100 w(Set)e(option)i(v)n(alue.)31 b(The)24 b(option)h(v)n(alue)g
(passed)h(through)g(ar)n(-)1716 4028 y(gument)21 b Fp(v)d
Fq(may)i(be)g(modi\002ed)g(by)h(the)f(back)o(end)i(if)e(the)g(v)n(alue)
1716 4140 y(cannot)25 b(be)e(set)h(e)o(xactly)-6 b(.)p
3714 4174 V 183 4739 4 565 v 234 4253 a Fp(SANE)p 459
4253 28 4 v 31 w(ACTION)p 820 4253 V 30 w(SET)p 1015
4253 V 32 w(AUTO)p 1363 4739 4 565 v 309 w Fq(2)p 1664
4739 V 100 w(T)l(urn)26 b(on)h(automatic)h(mode.)38 b(Back)o(end)28
b(or)f(de)n(vice)g(will)g(au-)1716 4366 y(tomatically)39
b(select)g(an)e(appropriate)k(v)n(alue.)71 b(This)38
b(mode)1716 4479 y(remains)e(ef)n(fecti)n(v)o(e)h(until)f(o)o(v)o
(erridden)i(by)e(an)g(e)o(xplicit)h(set)1716 4592 y(v)n(alue)22
b(request.)30 b(The)22 b(v)n(alue)h(of)f(parameter)h
Fp(v)e Fq(is)h(completely)1716 4705 y(ignored)j(in)f(this)g(case)g(and)
g(may)f(be)h Fp(NULL)p Fq(.)p 3714 4739 V 185 4742 3531
4 v 1168 4896 a(T)-7 b(able)24 b(4.7:)29 b(Action)24
b(V)-10 b(alues)24 b(\()p Fp(SANE)p 2348 4896 28 4 v
31 w(Action)p Fq(\))1905 5381 y(26)p eop end
%%Page: 27 28
TeXDict begin 27 27 bop 0 123 a Fq(After)27 b(setting)h(a)e(v)n(alue)h
(via)g(an)g(action)h(v)n(alue)f(of)g Fp(SANE_ACTION_SE)o(T_)o(VA)o(LUE)
o Fq(,)20 b(additional)29 b(information)g(on)e(ho)n(w)0
236 y(well)f(the)g(request)i(has)e(been)h(met)e(is)h(returned)i(in)1620
252 y Fp(*)1675 236 y(i)c Fq(\(if)i Fp(i)f Fq(is)h(non-)p
Fp(NULL)p Fq(\).)f(The)h(returned)i(v)n(alue)e(is)g(a)g(bitset)h(that)f
(may)0 349 y(contain)f(an)o(y)f(combination)i(of)e(the)g(v)n(alues)g
(described)i(in)e(T)-7 b(able)23 b(4.8.)p 103 471 3695
4 v 101 584 4 113 v 628 550 a Fr(Symbol)p 1444 584 V
1444 584 V 575 w(Code)p 1746 584 V 1746 584 V 850 w(Description)p
3796 584 V 103 588 3695 4 v 103 604 V 101 1959 4 1355
v 153 683 a Fp(SANE)p 378 683 28 4 v 30 w(INFO)p 628
683 V 31 w(INEXACT)p 1444 1959 4 1355 v 613 w Fq(1)p
1746 1959 V 100 w(This)e(v)n(alue)g(is)f(returned)j(when)e(setting)h
(an)e(option)i(v)n(alue)g(re-)1797 796 y(sulted)31 b(in)d(a)h(v)n(alue)
g(being)h(selected)h(that)e(does)h(not)f(e)o(xactly)1797
909 y(match)f(the)f(requested)j(v)n(alue.)40 b(F)o(or)26
b(e)o(xample,)i(if)f(a)g(scanner)1797 1022 y(can)g(adjust)g(the)f
(resolution)j(in)d(increments)i(of)e(30dpi)h(only)-6
b(,)1797 1135 y(setting)34 b(the)f(resolution)i(to)d(307dpi)i(may)e
(result)i(in)e(an)g(ac-)1797 1248 y(tual)e(setting)h(of)d(300dpi.)47
b(When)30 b(this)f(happens,)j(the)d(bitset)1797 1361
y(returned)k(in)2230 1377 y Fp(*)2285 1361 y(i)28 b Fq(has)j(this)g
(member)f(set.)49 b(In)31 b(addition,)i(the)1797 1474
y(option)22 b(v)n(alue)f(is)f(modi\002ed)h(to)f(re\003ect)g(the)h
(actual)g(\(rounded\))1797 1586 y(v)n(alue)k(that)f(w)o(as)f(used)i(by)
e(the)h(back)o(end.)32 b(Note)23 b(that)h(ine)o(xact)1797
1699 y(v)n(alues)31 b(are)f(admissible)i(for)e(strings)h(as)f(well.)47
b(A)28 b(back)o(end)1797 1812 y(may)19 b(choose)i(to)d(\223round\224)j
(a)e(string)h(to)e(the)i(closest)g(matching)1797 1925
y(le)o(gal)k(string)h(for)f(a)f(constrained)k(string)d(v)n(alue.)p
3796 1959 V 101 2637 4 678 v 153 2038 a Fp(SANE)p 378
2038 28 4 v 30 w(INFO)p 628 2038 V 31 w(RELOAD)p 989
2038 V 30 w(OPTIONS)p 1444 2637 4 678 v 253 w Fq(2)p
1746 2637 V 100 w(The)f(setting)j(of)d(an)g(option)j(may)d(af)n(fect)h
(the)g(v)n(alue)g(or)g(a)n(v)n(ail-)1797 2151 y(ability)29
b(of)f(one)g(or)f(more)h Fl(other)j Fq(options.)42 b(When)28
b(this)g(hap-)1797 2264 y(pens,)37 b(the)c(SANE)e(back)o(end)k(sets)f
(this)g(member)f(in)3535 2280 y Fp(*)3590 2264 y(i)f
Fq(to)1797 2377 y(indicate)26 b(that)e(the)g(application)j(should)e
(reload)g(all)f(options.)1797 2490 y(This)36 b(member)f(may)g(be)g(set)
h(if)f(and)h(only)g(if)f(at)g(least)h(one)1797 2603 y(option)26
b(changed.)p 3796 2637 V 101 3427 4 791 v 153 2716 a
Fp(SANE)p 378 2716 28 4 v 30 w(INFO)p 628 2716 V 31 w(RELOAD)p
989 2716 V 30 w(PARAMS)p 1444 3427 4 791 v 308 w Fq(4)p
1746 3427 V 100 w(The)d(setting)h(of)f(an)g(option)h(may)e(af)n(fect)i
(the)f(parameter)h(v)n(al-)1797 2828 y(ues)j(\(see)g
Fp(sane)p 2341 2828 28 4 v 31 w(get)p 2537 2828 V 31
w(parameters\(\))p Fq(\).)32 b(If)26 b(setting)i(an)1797
2941 y(option)g(af)n(fects)g(the)f(parameter)h(v)n(alues,)g(this)f
(member)f(will)1797 3054 y(be)c(set)f(in)2116 3070 y
Fp(*)2171 3054 y(i)p Fq(.)26 b(Note)21 b(that)h(this)g(member)f(may)g
(be)g(set)h(e)n(v)o(en)f(if)1797 3167 y(the)j(parameters)g(did)g(not)f
(actually)i(change.)30 b(Ho)n(we)n(v)o(er)l(,)22 b(it)h(is)1797
3280 y(guaranteed)33 b(that)d(the)f(parameters)j(ne)n(v)o(er)e(change)h
(without)1797 3393 y(this)25 b(member)e(being)i(set.)p
3796 3427 4 791 v 103 3430 3695 4 v 702 3584 a(T)-7 b(able)24
b(4.8:)29 b(Additional)c(Information)h(Returned)f(When)f(Setting)h(an)e
(Option)0 3954 y(This)g(function)j(may)d(f)o(ail)h(with)g(one)g(of)f
(the)h(follo)n(wing)h(status)g(codes.)227 4201 y Fp(SANE)p
452 4201 28 4 v 31 w(STATUS)p 813 4201 V 30 w(UNSUPPORTED)p
Fr(:)41 b Fq(The)25 b(operation)k(is)c(not)h(supported)j(for)d(the)g
(speci\002ed)h(handle)g(and)427 4314 y(option)e(number)-5
b(.)227 4460 y Fp(SANE)p 452 4460 V 31 w(STATUS)p 813
4460 V 30 w(INVAL)p Fr(:)44 b Fq(The)23 b(option)i(v)n(alue)f(is)g(not)
f(v)n(alid.)227 4606 y Fp(SANE)p 452 4606 V 31 w(STATUS)p
813 4606 V 30 w(IO)p 953 4606 V 32 w(ERROR)p Fr(:)43
b Fq(An)23 b(error)i(occured)g(while)f(communicating)i(with)e(the)f(de)
n(vice.)227 4752 y Fp(SANE)p 452 4752 V 31 w(STATUS)p
813 4752 V 30 w(NO)p 953 4752 V 32 w(MEM)p Fr(:)44 b
Fq(An)23 b(insuf)n(\002cent)i(amount)g(of)e(memory)h(is)f(a)n(v)n
(ailable.)227 4898 y Fp(SANE)p 452 4898 V 31 w(STATUS)p
813 4898 V 30 w(ACCESS)p 1173 4898 V 30 w(DENIED)p Fr(:)43
b Fq(Access)30 b(to)f(the)h(option)h(has)e(been)h(denied)h(due)f(to)f
(insuf)n(\002cient)427 5011 y(or)24 b(in)l(v)n(alid)h(authentication.)
1905 5381 y(27)p eop end
%%Page: 28 29
TeXDict begin 28 28 bop 0 123 a Fm(4.3.8)99 b Fc(sane)p
545 123 30 4 v 35 w(get)p 760 123 V 35 w(parameters)0
356 y Fq(This)28 b(function)i(is)e(used)h(to)e(obtain)j(the)e(current)i
(scan)f(parameters.)44 b(The)27 b(returned)j(parameters)g(are)e
(guaranteed)j(to)d(be)0 469 y(accurate)d(between)f(the)f(time)g(a)f
(scan)i(has)f(been)h(started)h(\()p Fp(sane)p 2070 469
28 4 v 31 w(start\(\))19 b Fq(has)k(been)h(called\))g(and)g(the)f
(completion)i(of)0 582 y(that)30 b(request.)47 b(Outside)30
b(of)f(that)h(windo)n(w)-6 b(,)30 b(the)g(returned)h(v)n(alues)g(are)e
(best-ef)n(fort)j(estimates)e(of)g(what)f(the)g(parameters)0
695 y(will)23 b(be)g(when)g Fp(sane)p 716 695 V 31 w(start\(\))d
Fq(gets)j(in)l(v)n(ok)o(ed.)32 b(Calling)24 b(this)g(function)h(before)
g(a)e(scan)h(has)f(actually)i(started)g(allo)n(ws,)0
807 y(for)c(e)o(xample,)h(to)e(get)h(an)g(estimate)g(of)g(ho)n(w)f(big)
h(the)g(scanned)h(image)f(will)g(be.)27 b(The)21 b(parameters)h(passed)
g(to)f(this)g(function)0 920 y(are)27 b(the)g(handle)i
Fp(h)c Fq(of)i(the)g(de)n(vice)h(for)f(which)h(the)f(parameters)i
(should)f(be)f(obtained)i(and)f(a)e(pointer)j Fp(p)c
Fq(to)i(a)g(parameter)0 1033 y(structure.)k(The)23 b(parameter)i
(structure)h(is)d(described)k(in)c(more)h(detail)g(belo)n(w)-6
b(.)227 1305 y Fp(SANE_Status)50 b(sane_get_param)o(ete)o(rs)e
(\(SANE_Handle)h(h,)2027 1417 y(SANE_Parameters)2900
1433 y(*)3009 1417 y(p\);)0 1689 y Fq(The)32 b(scan)g(parameters)i(are)
f(returned)h(in)e(a)f(structure)k(of)d(type)g Fp(SANE)p
2314 1689 V 31 w(Parameters)p Fq(.)49 b(The)32 b(C)f(declaration)k(of)d
(this)0 1802 y(structure)26 b(is)d(gi)n(v)o(en)h(belo)n(w)-6
b(.)227 2048 y Fp(typedef)52 b(struct)336 2161 y({)445
2274 y(SANE_Frame)e(format;)445 2387 y(SANE_Bool)h(last_frame;)445
2500 y(SANE_Int)g(bytes_per_line;)445 2613 y(SANE_Int)g
(pixels_per_line;)445 2725 y(SANE_Int)g(lines;)445 2838
y(SANE_Int)g(depth;)336 2951 y(})227 3064 y(SANE_Parameters)o(;)0
3310 y Fq(Member)38 b Fp(format)d Fq(speci\002es)k(the)f(format)h(of)f
(the)g(ne)o(xt)h(frame)f(to)g(be)g(returned.)74 b(The)38
b(possible)i(v)n(alues)f(for)f(type)0 3423 y Fp(SANE)p
225 3423 V 31 w(Frame)24 b Fq(are)k(described)h(in)e(T)-7
b(able)28 b(4.9.)39 b(The)27 b(meaning)i(of)e(these)h(v)n(alues)h(is)e
(described)i(in)f(more)f(detail)h(in)f(Sec-)0 3536 y(tion)d(3.2.)p
574 3641 2752 4 v 572 3753 4 113 v 892 3720 a Fr(Symbol)p
1501 3753 V 1501 3753 V 368 w(Code)p 1803 3753 V 1803
3753 V 585 w(Description)p 3324 3753 V 574 3757 2752
4 v 574 3773 V 572 3886 4 113 v 624 3852 a Fp(SANE)p
849 3852 28 4 v 31 w(FRAME)p 1155 3852 V 30 w(GRAY)p
1501 3886 4 113 v 309 w Fq(0)p 1803 3886 V 100 w(Band)g(co)o(v)o(ering)
h(human)f(visual)h(range.)p 3324 3886 V 572 3999 V 624
3965 a Fp(SANE)p 849 3965 28 4 v 31 w(FRAME)p 1155 3965
V 30 w(RGB)p 1501 3999 4 113 v 364 w Fq(1)p 1803 3999
V 100 w(Pix)o(el-interlea)n(v)o(ed)i(red/green/blue)h(bands.)p
3324 3999 V 572 4112 V 624 4078 a Fp(SANE)p 849 4078
28 4 v 31 w(FRAME)p 1155 4078 V 30 w(RED)p 1501 4112
4 113 v 364 w Fq(2)p 1803 4112 V 100 w(Red)23 b(band)i(of)e(a)g
(red/green/blue)28 b(image.)p 3324 4112 V 572 4225 V
624 4191 a Fp(SANE)p 849 4191 28 4 v 31 w(FRAME)p 1155
4191 V 30 w(GREEN)p 1501 4225 4 113 v 254 w Fq(3)p 1803
4225 V 100 w(Green)c(band)g(of)g(a)f(red/green/blue)28
b(image.)p 3324 4225 V 572 4338 V 624 4304 a Fp(SANE)p
849 4304 28 4 v 31 w(FRAME)p 1155 4304 V 30 w(BLUE)p
1501 4338 4 113 v 309 w Fq(4)p 1803 4338 V 100 w(Blue)c(band)g(of)g(a)f
(red/green/blue)k(image.)p 3324 4338 V 574 4341 2752
4 v 1194 4495 a(T)-7 b(able)23 b(4.9:)29 b(Frame)23 b(F)o(ormat)g(\()p
Fp(SANE)p 2377 4495 28 4 v 31 w(Frame)p Fq(\))0 4880
y(Member)f Fp(last)p 554 4880 V 31 w(frame)d Fq(is)j(set)g(to)g
Fp(SANE)p 1395 4880 V 31 w(TRUE)e Fq(if)h(and)i(only)g(if)f(the)g
(frame)g(that)h(is)f(currently)i(being)f(acquired)i(\(or)d(the)0
4993 y(frame)k(that)h(will)f(be)g(acquired)i(ne)o(xt)f(if)e(there)i(is)
f(no)h(current)g(frame\))g(is)f(the)g(last)h(frame)f(of)g(a)g(multi)g
(frame)g(image)h(\(e.g.,)0 5106 y(the)d(current)h(frame)f(is)f(the)h
(blue)g(component)i(of)d(a)g(red,)h(green,)g(blue)h(image\).)1905
5381 y(28)p eop end
%%Page: 29 30
TeXDict begin 29 29 bop 0 123 a Fq(Member)33 b Fp(lines)d
Fq(speci\002es)35 b(ho)n(w)d(man)o(y)h(scan)h(lines)g(the)g(frame)f(is)
g(comprised)i(of.)57 b(If)33 b(this)h(v)n(alue)g(is)f(-1,)i(the)e(num-)
0 236 y(ber)e(of)h(lines)g(is)f(not)g(kno)n(wn)h(a)e(priori)j(and)e
(the)h(frontend)h(should)g(call)f Fp(sane)p 2572 236
28 4 v 31 w(read\(\))27 b Fq(until)32 b(it)f(returns)i(a)e(status)h(of)
0 349 y Fp(SANE)p 225 349 V 31 w(STATUS)p 586 349 V 30
w(EOF)p Fq(.)0 520 y(Member)24 b Fp(bytes)p 611 520 V
30 w(per)p 806 520 V 32 w(line)c Fq(speci\002es)25 b(the)f(number)h(of)
e(bytes)i(that)f(comprise)h(one)f(scan)g(line.)0 692
y(Member)g Fp(depth)c Fq(speci\002es)25 b(the)f(number)g(of)g(bits)g
(per)g(sample.)0 864 y(Member)g Fp(pixels)p 666 864 V
30 w(per)p 861 864 V 31 w(line)d Fq(speci\002es)k(the)f(number)g(of)g
(pix)o(els)g(that)g(comprise)h(one)f(scan)g(line.)0 1035
y(Assume)k Fh(B)j Fq(is)c(the)h(number)g(of)f(channels)j(in)d(the)h
(frame,)g(then)h(the)e(bit)h(depth)h Fh(d)d Fq(\(as)i(gi)n(v)o(en)g(by)
g(member)f Fp(depth)p Fq(\))e(and)0 1148 y(the)e(number)i(of)e(pix)o
(els)h(per)f(line)h Fh(n)e Fq(\(as)i(gi)n(v)o(en)f(by)h(this)f(member)h
Fp(pixels)p 2416 1148 V 30 w(per)p 2611 1148 V 31 w(line)p
Fq(\))d(are)i(related)i(to)e Fh(c)p Fq(,)g(the)g(number)0
1261 y(of)g(bytes)i(per)f(line)g(\(as)g(gi)n(v)o(en)g(by)f(member)h
Fp(bytes)p 1675 1261 V 31 w(per)p 1871 1261 V 31 w(line)p
Fq(\))d(as)j(follo)n(ws:)1270 1528 y Fh(c)i(>)p Fj(=)1502
1384 y Fb(\()1610 1471 y Fh(B)f Fk(\001)20 b(b)p Fj(\()p
Fh(n)h Fj(+)f(7\))p Fh(=)p Fj(8)p Fk(c)85 b Fq(if)23
b Fh(d)j Fj(=)f(1)1610 1584 y Fh(B)g Fk(\001)20 b Fh(n)g
Fk(\001)g Fh(d=)p Fj(8)280 b Fq(if)23 b Fh(d)j(>)f Fj(1)0
1791 y Fq(Note)j(that)g(the)g(number)g(of)g(bytes)g(per)g(line)g(can)g
(be)g(lar)n(ger)h(than)f(the)g(minimum)g(v)n(alue)g(imposed)h(by)f(the)
g(right)g(side)g(of)0 1904 y(this)c(equation.)31 b(A)22
b(frontend)k(must)e(be)f(able)h(to)g(properly)i(cope)e(with)f(such)i
(\223padded\224)h(image)e(formats.)0 2212 y Fm(4.3.9)99
b Fc(sane)p 545 2212 30 4 v 35 w(start)0 2445 y Fq(This)23
b(function)j(initiates)g(aquisition)g(of)e(an)f(image)h(from)f(the)h
(de)n(vice)h(represented)i(by)c(handle)i Fp(h)p Fq(.)227
2691 y Fp(SANE_Status)50 b(sane_start)g(\(SANE_Handle)f(h\);)0
2937 y Fq(This)23 b(function)j(may)d(f)o(ail)h(with)g(one)g(of)f(the)h
(follo)n(wing)h(status)g(codes.)227 3184 y Fp(SANE)p
452 3184 28 4 v 31 w(STATUS)p 813 3184 V 30 w(CANCELLED)p
Fr(:)42 b Fq(The)22 b(operation)j(w)o(as)d(cancelled)j(through)f(a)e
(call)h(to)g Fp(sane)p 3297 3184 V 31 w(cancel)p Fq(.)227
3330 y Fp(SANE)p 452 3330 V 31 w(STATUS)p 813 3330 V
30 w(DEVICE)p 1173 3330 V 30 w(BUSY)p Fr(:)44 b Fq(The)23
b(de)n(vice)i(is)e(b)n(usy)-6 b(.)30 b(The)23 b(operation)j(should)g
(be)d(retried)i(later)-5 b(.)227 3476 y Fp(SANE)p 452
3476 V 31 w(STATUS)p 813 3476 V 30 w(JAMMED)p Fr(:)43
b Fq(The)23 b(document)j(feeder)e(is)g(jammed.)227 3622
y Fp(SANE)p 452 3622 V 31 w(STATUS)p 813 3622 V 30 w(NO)p
953 3622 V 32 w(DOCS)p Fr(:)44 b Fq(The)23 b(document)i(feeder)g(is)e
(out)h(of)g(documents.)227 3768 y Fp(SANE)p 452 3768
V 31 w(STATUS)p 813 3768 V 30 w(COVER)p 1118 3768 V 31
w(OPEN)p Fr(:)44 b Fq(The)23 b(scanner)i(co)o(v)o(er)f(is)f(open.)227
3914 y Fp(SANE)p 452 3914 V 31 w(STATUS)p 813 3914 V
30 w(IO)p 953 3914 V 32 w(ERROR)p Fr(:)43 b Fq(An)23
b(error)i(occurred)g(while)f(communicating)i(with)e(the)g(de)n(vice.)
227 4061 y Fp(SANE)p 452 4061 V 31 w(STATUS)p 813 4061
V 30 w(NO)p 953 4061 V 32 w(MEM)p Fr(:)44 b Fq(An)23
b(insuf)n(\002cent)i(amount)g(of)e(memory)h(is)f(a)n(v)n(ailable.)227
4207 y Fp(SANE)p 452 4207 V 31 w(STATUS)p 813 4207 V
30 w(INVAL)p Fr(:)44 b Fq(The)24 b(scan)h(cannot)h(be)f(started)h(with)
e(the)h(current)h(set)f(of)f(options.)34 b(The)24 b(fron-)427
4320 y(tend)19 b(should)h(reload)g(the)f(option)h(descriptors,)i(as)c
(if)g Fp(SANE)p 2316 4320 V 31 w(INFO)p 2567 4320 V 31
w(RELOAD)p 2928 4320 V 30 w(OPTIONS)c Fq(had)19 b(been)427
4432 y(returned)27 b(from)d(a)g(call)g(to)h Fp(sane)p
1492 4432 V 30 w(control)p 1907 4432 V 30 w(option\(\))p
Fq(,)20 b(since)25 b(the)g(de)n(vice')-5 b(s)26 b(capabilities)h(may)
427 4545 y(ha)n(v)o(e)d(changed.)1905 5381 y(29)p eop
end
%%Page: 30 31
TeXDict begin 30 30 bop 0 123 a Fm(4.3.10)99 b Fc(sane)p
595 123 30 4 v 35 w(read)0 339 y Fq(This)19 b(function)j(is)e(used)g
(to)g(read)g(image)g(data)g(from)g(the)g(de)n(vice)h(represented)h(by)e
(handle)h Fp(h)p Fq(.)27 b(Ar)n(gument)20 b Fp(buf)e
Fq(is)h(a)g(pointer)0 452 y(to)27 b(a)g(memory)g(area)h(that)f(is)g(at)
g(least)h Fp(maxlen)c Fq(bytes)k(long.)41 b(The)26 b(number)i(of)f
(bytes)i(returned)g(is)e(stored)h(in)3554 468 y Fp(*)3609
452 y(len)p Fq(.)37 b(A)0 565 y(back)o(end)c(must)e(set)g(this)g(to)g
(zero)g(when)g(a)f(status)i(other)g(than)g Fp(SANE)p
2281 565 28 4 v 30 w(STATUS)p 2641 565 V 30 w(GOOD)d
Fq(is)h(returned.)53 b(When)31 b(the)g(call)0 677 y(succeeds,)26
b(the)d(number)i(of)e(bytes)i(returned)h(can)d(be)h(an)o(ywhere)h(in)e
(the)h(range)h(from)e(0)g(to)h Fp(maxlen)c Fq(bytes.)227
870 y Fp(SANE_Status)50 b(sane_read)g(\(SANE_Handle)f(h,)54
b(SANE_Byte)2845 886 y(*)2955 870 y(buf,)1482 983 y(SANE_Int)d(maxlen,)
g(SANE_Int)2900 999 y(*)3009 983 y(len\);)0 1176 y Fq(If)30
b(this)i(function)h(is)d(called)i(when)f(no)g(data)g(is)g(a)n(v)n
(ailable,)j(one)e(of)e(tw)o(o)h(things)h(may)e(happen,)k(depending)g
(on)d(the)g(I/O)0 1289 y(mode)24 b(that)g(is)f(in)h(ef)n(fect)g(for)g
(handle)h Fp(h)p Fq(.)114 1482 y(1.)45 b(If)24 b(the)h(de)n(vice)g(is)f
(in)g(blocking)i(I/O)e(mode)g(\(the)h(def)o(ault)h(mode\),)e(the)h
(call)f(blocks)i(until)f(at)f(least)h(one)g(data)f(byte)h(is)227
1595 y(a)n(v)n(ailable)h(\(or)e(until)g(some)g(error)g(occurs\).)114
1768 y(2.)45 b(If)37 b(the)h(de)n(vice)h(is)e(in)h(non-blocking)j(I/O)c
(mode,)k(the)d(call)g(returns)h(immediately)g(with)e(status)i
Fp(SANE)p 3656 1768 V 31 w(STA-)227 1881 y(TUS)p 397
1881 V 32 w(GOOD)21 b Fq(and)j(with)1003 1897 y Fp(*)1058
1881 y(len)d Fq(set)j(to)f(zero.)0 2074 y(The)g(I/O)g(mode)h(of)f
(handle)i Fp(h)e Fq(can)g(be)h(set)g(via)g(a)f(call)h(to)f
Fp(sane)p 2024 2074 V 31 w(set)p 2220 2074 V 31 w(io)p
2361 2074 V 32 w(mode\(\))p Fq(.)0 2229 y(This)g(function)j(may)d(f)o
(ail)h(with)g(one)g(of)f(the)h(follo)n(wing)h(status)g(codes.)227
2422 y Fp(SANE)p 452 2422 V 31 w(STATUS)p 813 2422 V
30 w(CANCELLED)p Fr(:)42 b Fq(The)22 b(operation)j(w)o(as)d(cancelled)j
(through)f(a)e(call)h(to)g Fp(sane)p 3297 2422 V 31 w(cancel)p
Fq(.)227 2553 y Fp(SANE)p 452 2553 V 31 w(STATUS)p 813
2553 V 30 w(EOF)p Fr(:)45 b Fq(No)22 b(more)i(data)g(is)f(a)n(v)n
(ailable)j(for)e(the)g(current)h(frame.)227 2685 y Fp(SANE)p
452 2685 V 31 w(STATUS)p 813 2685 V 30 w(JAMMED)p Fr(:)43
b Fq(The)23 b(document)j(feeder)e(is)g(jammed.)227 2816
y Fp(SANE)p 452 2816 V 31 w(STATUS)p 813 2816 V 30 w(NO)p
953 2816 V 32 w(DOCS)p Fr(:)44 b Fq(The)23 b(document)i(feeder)g(is)e
(out)h(of)g(documents.)227 2948 y Fp(SANE)p 452 2948
V 31 w(STATUS)p 813 2948 V 30 w(COVER)p 1118 2948 V 31
w(OPEN)p Fr(:)44 b Fq(The)23 b(scanner)i(co)o(v)o(er)f(is)f(open.)227
3080 y Fp(SANE)p 452 3080 V 31 w(STATUS)p 813 3080 V
30 w(IO)p 953 3080 V 32 w(ERROR)p Fr(:)43 b Fq(An)23
b(error)i(occurred)g(while)f(communicating)i(with)e(the)g(de)n(vice.)
227 3211 y Fp(SANE)p 452 3211 V 31 w(STATUS)p 813 3211
V 30 w(NO)p 953 3211 V 32 w(MEM)p Fr(:)44 b Fq(An)23
b(insuf)n(\002cent)i(amount)g(of)e(memory)h(is)f(a)n(v)n(ailable.)227
3343 y Fp(SANE)p 452 3343 V 31 w(STATUS)p 813 3343 V
30 w(ACCESS)p 1173 3343 V 30 w(DENIED)p Fr(:)43 b Fq(Access)30
b(to)f(the)g(de)n(vice)h(has)f(been)h(denied)h(due)e(to)g(insuf)n
(\002cient)427 3456 y(or)24 b(in)l(v)n(alid)h(authentication.)0
3739 y Fm(4.3.11)99 b Fc(sane)p 595 3739 30 4 v 35 w(cancel)0
3955 y Fq(This)24 b(function)i(is)d(used)i(to)e(immediately)j(or)e(as)f
(quickly)j(as)e(possible)i(cancel)f(the)f(currently)i(pending)g
(operation)g(of)e(the)0 4068 y(de)n(vice)h(represented)h(by)e(handle)h
Fp(h)p Fq(.)227 4261 y Fp(void)53 b(sane_cancel)d(\(SANE_Handle)f(h\);)
0 4454 y Fq(This)33 b(function)i(can)f(be)f(called)h(at)f(an)o(y)h
(time)f(\(as)g(long)h(as)f(handle)i Fp(h)d Fq(is)h(a)f(v)n(alid)i
(handle\))h(b)n(ut)f(usually)h(af)n(fects)f(long-)0 4567
y(running)28 b(operations)h(only)e(\(such)g(as)f(image)h(is)f
(acquisition\).)40 b(It)26 b(is)g(safe)g(to)g(call)h(this)f(function)j
(asynchronously)i(\(e.g.,)0 4680 y(from)37 b(within)g(a)f(signal)j
(handler\).)70 b(It)37 b(is)f(important)j(to)d(note)i(that)f
(completion)i(of)e(this)g(operaton)i(does)f Fl(not)h
Fq(imply)0 4793 y(that)g(the)f(currently)i(pending)g(operation)h(has)d
(been)h(cancelled.)75 b(It)37 b(only)i(guarantees)i(that)e
(cancellation)i(has)d(been)0 4906 y Fl(initiated)p Fq(.)68
b(Cancellation)39 b(completes)e(only)g(when)f(the)g(cancelled)j(call)d
(returns)i(\(typically)g(with)e(a)f(status)j(v)n(alue)e(of)0
5019 y Fp(SANE)p 225 5019 28 4 v 31 w(STATUS)p 586 5019
V 30 w(CANCELLED)p Fq(\).)17 b(Since)23 b(the)g(SANE)c(API)i(does)j
(not)e(require)i(an)o(y)f(other)g(operations)i(to)e(be)f(re-entrant,)0
5132 y(this)i(implies)h(that)f(a)f(frontend)i(must)f
Fl(not)i Fq(call)e(an)o(y)f(other)i(operation)h(until)e(the)g
(cancelled)i(operation)g(has)e(returned.)1905 5381 y(30)p
eop end
%%Page: 31 32
TeXDict begin 31 31 bop 0 123 a Fm(4.3.12)99 b Fc(sane)p
595 123 30 4 v 35 w(set)p 810 123 V 35 w(io)p 965 123
V 35 w(mode)0 346 y Fq(This)21 b(function)j(is)e(used)g(to)f(set)h(the)
g(I/O)f(mode)h(of)f(handle)i Fp(h)p Fq(.)k(The)21 b(I/O)g(mode)h(can)g
(be)f(either)i(blocking)h(or)d(non-blocking.)0 459 y(If)27
b(ar)n(gument)j Fp(m)c Fq(is)i Fp(SANE)p 850 459 28 4
v 31 w(TRUE)p Fq(,)c(the)k(mode)g(is)f(set)h(to)g(non-blocking)j(mode,)
e(otherwise)g(it')-5 b(s)28 b(set)g(to)f(blocking)j(mode.)0
572 y(This)23 b(function)j(can)e(be)g(called)g(only)h(after)f(a)f(call)
h(to)g Fp(sane)p 1917 572 V 30 w(start\(\))c Fq(has)k(been)g
(performed.)227 787 y Fp(SANE_Status)50 b(sane_set_io_mo)o(de)e
(\(SANE_Handle)h(h,)54 b(SANE_Bool)c(m\);)0 1003 y Fq(By)33
b(def)o(ault,)38 b(ne)n(wly)c(opened)h(handles)h(operate)g(in)d
(blocking)j(mode.)60 b(A)33 b(back)o(end)j(may)d(elect)i(not)f(to)g
(support)h(non-)0 1116 y(blocking)29 b(I/O)c(mode.)38
b(In)26 b(such)h(a)f(case)h(the)f(status)i(v)n(alue)f
Fp(SANE)p 2107 1116 V 31 w(STATUS)p 2468 1116 V 30 w(UNSUPPORTED)20
b Fq(is)27 b(returned.)39 b(Blocking)0 1229 y(I/O)32
b(must)g(be)h(supported)i(by)d(all)h(back)o(ends,)k(so)32
b(calling)i(this)f(function)i(with)d(ar)n(gument)i Fp(m)d
Fq(set)i(to)f Fp(SANE)p 3509 1229 V 31 w(FALSE)d Fq(is)0
1342 y(guaranteed)e(to)c(complete)i(successfully)-6 b(.)0
1504 y(This)23 b(function)j(may)d(f)o(ail)h(with)g(one)g(of)f(the)h
(follo)n(wing)h(status)g(codes:)227 1719 y Fp(SANE)p
452 1719 V 31 w(STATUS)p 813 1719 V 30 w(INVAL)p Fr(:)44
b Fq(No)22 b(image)i(acquisition)j(is)c(pending.)227
1857 y Fp(SANE)p 452 1857 V 31 w(STATUS)p 813 1857 V
30 w(UNSUPPORTED)p Fr(:)41 b Fq(The)23 b(back)o(end)j(does)e(not)g
(support)h(the)f(requested)i(I/O)d(mode.)0 2151 y Fm(4.3.13)99
b Fc(sane)p 595 2151 30 4 v 35 w(get)p 810 2151 V 35
w(select)p 1205 2151 V 34 w(fd)0 2374 y Fq(This)25 b(function)j(is)e
(used)g(to)g(obtain)h(a)e(\(platform-speci\002c\))k(\002le-descriptor)g
(for)d(handle)h Fp(h)e Fq(that)h(is)f(readable)j(if)d(and)h(only)0
2487 y(if)21 b(image)h(data)g(is)g(a)n(v)n(ailable)i(\(i.e.,)d(when)h
(a)f(call)h(to)f Fp(sane)p 1850 2487 28 4 v 31 w(read\(\))d
Fq(will)j(return)i(at)e(least)i(one)f(byte)g(of)g(data\).)29
b(If)21 b(the)h(call)0 2600 y(completes)j(successfully)-6
b(,)27 b(the)d(select)h(\002le-descriptor)i(is)c(returned)j(in)2274
2616 y Fp(*)2329 2600 y(fd)p Fq(.)227 2815 y Fp(SANE_Status)50
b(sane_get_selec)o(t_f)o(d)e(\(SANE_Handle)h(h,)54 b(SANE_Int)3282
2831 y(*)3337 2815 y(fd\);)0 3031 y Fq(This)37 b(function)j(can)e(be)f
(called)i(only)f(after)g(a)f(call)h(to)g Fp(sane)p 2056
3031 V 31 w(start\(\))33 b Fq(has)38 b(been)g(performed)h(and)f(the)g
(returned)0 3144 y(\002le-descriptor)j(is)c(guaranteed)k(to)d(remain)g
(v)n(alid)h(for)e(the)h(duration)i(of)e(the)g(current)h(image)f
(acquisition)j(\(i.e.,)g(un-)0 3257 y(til)e Fp(sane)p
339 3257 V 31 w(cancel\(\))c Fq(or)k Fp(sane)p 1179 3257
V 31 w(start\(\))d Fq(get)j(called)i(again)f(or)f(until)h
Fp(sane)p 2810 3257 V 31 w(read\(\))c Fq(returns)41 b(with)e(status)0
3370 y Fp(SANE)p 225 3370 V 31 w(STATUS)p 586 3370 V
30 w(EOF)p Fq(\).)27 b(Indeed,)k(a)e(back)o(end)i(must)e(guarantee)i
(to)e(close)h(the)f(returned)i(select)f(\002le)f(descriptor)i(at)e(the)
0 3483 y(point)24 b(when)e(the)h(ne)o(xt)g Fp(sane)p
962 3483 V 31 w(read\(\))c Fq(call)k(w)o(ould)g(return)h
Fp(SANE)p 2202 3483 V 31 w(STATUS)p 2563 3483 V 30 w(EOF)p
Fq(.)c(This)j(is)f(necessary)j(to)e(ensure)h(the)0 3596
y(application)j(can)d(detect)g(when)g(this)g(condition)i(occurs)f
(without)g(actually)g(ha)n(ving)h(to)d(call)h Fp(sane)p
3167 3596 V 31 w(read\(\))p Fq(.)0 3757 y(A)30 b(back)o(end)k(may)e
(elect)g(not)g(to)g(support)h(this)f(operation.)56 b(In)31
b(such)i(a)e(case,)j(the)e(function)i(returns)f(with)e(status)i(code)0
3870 y Fp(SANE)p 225 3870 V 31 w(STATUS)p 586 3870 V
30 w(UNSUPPORTED)p Fq(.)0 4032 y(Note)25 b(that)h(the)g(only)g
(operation)i(supported)h(by)c(the)h(returned)h(\002le-descriptor)i(is)c
(a)g(host)i(operating-system)i(dependent)0 4145 y(test)23
b(whether)h(the)e(\002le-descriptor)k(is)d(readable)h(\(e.g.,)e(this)h
(test)g(can)g(be)g(implemented)h(using)g Fp(select\(\))18
b Fq(or)23 b Fp(poll\(\))0 4258 y Fq(under)e(UNIX\).)c(If)j(an)o(y)f
(other)i(operation)h(is)d(performed)i(on)f(the)g(\002le)e(descriptor)l
(,)23 b(the)d(beha)n(vior)i(of)e(the)f(back)o(end)j(becomes)0
4371 y(unpredictable.)50 b(Once)29 b(the)g(\002le-descriptor)j(signals)
f(\223readable\224)h(status,)g(it)d(will)f(remain)i(in)f(that)h(state)g
(until)g(a)f(call)g(to)0 4484 y Fp(sane)p 225 4484 V
31 w(read\(\))19 b Fq(is)j(performed.)30 b(Since)23 b(man)o(y)f(input)i
(de)n(vices)f(are)g(v)o(ery)g(slo)n(w)-6 b(,)22 b(support)i(for)f(this)
g(operation)i(is)d(strongly)0 4597 y(encouraged)27 b(as)c(it)g(permits)
i(an)e(application)k(to)d(do)f(other)i(w)o(ork)e(while)h(image)g
(acquisition)j(is)c(in)h(progress.)0 4758 y(This)f(function)j(may)d(f)o
(ail)h(with)g(one)g(of)f(the)h(follo)n(wing)h(status)g(codes:)227
4974 y Fp(SANE)p 452 4974 V 31 w(STATUS)p 813 4974 V
30 w(INVAL)p Fr(:)44 b Fq(No)22 b(image)i(acquisition)j(is)c(pending.)
227 5112 y Fp(SANE)p 452 5112 V 31 w(STATUS)p 813 5112
V 30 w(UNSUPPORTED)p Fr(:)41 b Fq(The)23 b(back)o(end)j(does)e(not)g
(support)h(this)g(operation.)1905 5381 y(31)p eop end
%%Page: 32 33
TeXDict begin 32 32 bop 0 123 a Fm(4.3.14)99 b Fc(sane)p
595 123 30 4 v 35 w(strstatus)0 356 y Fq(This)28 b(function)i(can)f(be)
f(used)h(to)f(translate)i(a)e(SANE)e(status)j(code)g(into)g(a)f
(printable)i(string.)44 b(The)28 b(returned)i(string)g(is)e(a)0
469 y(single)c(line)g(of)f(te)o(xt)g(that)h(forms)f(a)g(complete)h
(sentence,)h(b)n(ut)f(without)g(the)f(trailing)i(period)f
(\(full-stop\).)32 b(The)22 b(function)j(is)0 582 y(guaranteed)k(to)c
(ne)n(v)o(er)h(return)h Fp(NULL)p Fq(.)22 b(The)k(returned)h(pointer)g
(is)f(v)n(alid)g(at)g(least)g(until)g(the)g(ne)o(xt)g(call)g(to)g(this)
g(function)h(is)0 695 y(performed.)227 941 y Fp(const)53
b(SANE_String_Co)o(ns)o(t)48 b(sane_strstatus)h(\(SANE_Status)g
(status\);)0 1292 y Fn(4.4)119 b(Code)31 b(Flo)o(w)0
1558 y Fq(The)21 b(code)h(\003o)n(w)d(for)j(the)f(SANE)e(API)g(is)i
(illustrated)j(in)d(Figure)h(4.1.)28 b(Functions)23 b
Fp(sane)p 2797 1558 28 4 v 31 w(init\(\))17 b Fq(and)22
b Fp(sane)p 3547 1558 V 31 w(exit\(\))0 1671 y Fq(initialize)j(and)d(e)
o(xit)g(the)h(back)o(end,)h(respecti)n(v)o(ely)-6 b(.)31
b(All)22 b(other)h(calls)g(must)f(be)g(performed)i(after)f
(initialization)j(and)d(before)0 1784 y(e)o(xiting)i(the)f(back)o(end.)
536 4453 y @beginspecial 0 @llx 0 @lly 601 @urx 542 @ury
3060 @rhi @setspecial
%%BeginDocument: figs/flow.eps
%!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
%%EndDocument
@endspecial 1549 4649 a(Figure)h(4.1:)k(Code)23 b(\003o)n(w)0
4961 y(Function)k Fp(sane)p 573 4961 V 31 w(get)p 769
4961 V 31 w(devices\(\))21 b Fq(can)26 b(be)g(called)h(an)o(y)e(time)h
(after)g Fp(sane)p 2572 4961 V 31 w(init\(\))c Fq(has)k(been)h(called.)
36 b(It)26 b(returns)0 5074 y(the)32 b(list)f(of)h(the)f(de)n(vices)i
(that)f(are)g(kno)n(wn)f(at)h(the)f(time)g(of)h(the)f(call.)53
b(This)31 b(list)h(may)f(change)i(o)o(v)o(er)f(time)f(since)h(some)1905
5381 y(32)p eop end
%%Page: 33 34
TeXDict begin 33 33 bop 0 123 a Fq(de)n(vices)24 b(may)e(be)g(turned)h
(on)f(or)g(of)n(f)h(or)f(a)f(remote)i(host)g(may)f(boot)h(or)f(shutdo)n
(wn)h(between)g(dif)n(ferent)h(calls.)30 b(It)21 b(should)j(be)0
236 y(noted)i(that)f(this)g(operation)i(may)d(be)g(relati)n(v)o(ely)j
(slo)n(w)d(since)h(it)g(requires)h(contacting)h(all)e(con\002gured)h
(de)n(vices)g(\(some)f(of)0 349 y(which)h(may)f(be)h(on)g(remote)g
(hosts\).)36 b(A)25 b(frontend)j(may)d(therefore)j(w)o(ant)e(to)f(pro)o
(vide)i(the)f(ability)h(for)f(a)f(user)i(to)e(directly)0
462 y(select)g(a)e(desired)i(de)n(vice)g(without)f(requiring)i(a)d
(call)h(to)g(this)g(function.)0 630 y(Once)e(a)g(de)n(vice)h(has)g
(been)g(chosen,)h(it)e(is)g(opened)i(using)f(a)f(call)g(to)h
Fp(sane)p 2352 630 28 4 v 30 w(open\(\))p Fq(.)i(Multiple)f(de)n(vices)
f(can)g(be)f(open)h(at)0 743 y(an)o(y)i(gi)n(v)o(en)h(time.)34
b(A)24 b(SANE)f(back)o(end)k(must)f(not)f(impose)h(arti\002cial)h
(constraints)h(on)e(ho)n(w)e(man)o(y)i(de)n(vices)g(can)g(be)f(open)0
856 y(at)e(an)o(y)h(gi)n(v)o(en)g(time.)0 1025 y(An)f(opened)i(de)n
(vice)g(can)f(be)f(setup)i(through)g(the)f(corresponding)k(de)n(vice)d
(handle)g(using)f(functions)j Fp(sane)p 3460 1025 V 30
w(get)p 3655 1025 V 32 w(opt-)0 1138 y(ion)p 170 1138
V 31 w(descriptor\(\))k Fq(and)38 b Fp(sane)p 1280 1138
V 31 w(control)p 1696 1138 V 29 w(option\(\))p Fq(.)66
b(While)37 b(setting)i(up)e(a)g(de)n(vice,)42 b(obtaining)e(option)0
1250 y(descriptors)d(and)e(setting)h(and)f(reading)h(of)e(option)i(v)n
(alues)g(can)e(be)h(mix)o(ed)f(freely)-6 b(.)62 b(It)34
b(is)g(typical)i(for)f(a)f(frontend)i(to)0 1363 y(read)g(out)f(all)h(a)
n(v)n(ailable)h(options)g(at)e(the)h(be)o(ginning)h(and)f(then)g(b)n
(uild)h(a)d(dialog)j(\(either)g(graphical)g(or)e(a)g(command-)0
1476 y(line)27 b(oriented)i(option)g(list\))e(that)g(allo)n(ws)g(to)g
(control)i(the)e(a)n(v)n(ailable)i(options.)40 b(It)27
b(should)h(be)f(noted)h(that)f(the)h(number)f(of)0 1589
y(options)c(is)d(\002x)o(ed)h(for)f(a)h(gi)n(v)o(en)g(handle.)29
b(Ho)n(we)n(v)o(er)l(,)21 b(as)g(options)h(are)f(set,)h(other)f
(options)i(may)d(become)i(acti)n(v)o(e)f(or)g(inacti)n(v)o(e.)0
1702 y(Thus,)j(after)h(setting)h(an)e(option,)h(it)f(maybe)h(necessary)
h(to)e(re-read)i(some)e(or)g(all)h(option)g(descriptors.)34
b(While)24 b(setting)i(up)0 1815 y(the)i(de)n(vice,)h(it)e(is)g(also)h
(admissible)h(to)e(call)h Fp(sane)p 1655 1815 V 31 w(get)p
1851 1815 V 31 w(parameters\(\))21 b Fq(to)28 b(get)f(an)g(estimate)i
(of)e(what)g(the)h(image)0 1928 y(parameters)e(will)d(look)h(lik)o(e)g
(once)h(image)f(acquisition)i(be)o(gins.)0 2096 y(The)36
b(de)n(vice)h(handle)h(can)e(be)g(put)h(in)f(blocking)i(or)e
(non-blocking)k(mode)c(by)h(a)e(call)i(to)f Fp(sane)p
3186 2096 V 31 w(set)p 3382 2096 V 31 w(io)p 3523 2096
V 32 w(mode\(\))p Fq(.)0 2209 y(De)n(vices)30 b(are)f(required)i(to)e
(support)i(blocking)g(mode)e(\(which)h(is)e(the)i(def)o(ault)g(mode\),)
h(b)n(ut)e(support)i(for)e(non-blocking)0 2322 y(I/O)23
b(is)g(strongly)j(encouraged)h(for)c(operating)k(systems)d(such)h(as)e
(UNIX.)0 2491 y(After)g(the)g(de)n(vice)g(is)g(setup)h(properly)-6
b(,)24 b(image)f(acquisition)j(can)d(be)g(started)h(by)f(a)f(call)h(to)
g Fp(sane)p 3077 2491 V 30 w(start\(\))p Fq(.)i(The)d(back-)0
2604 y(end)33 b(calculates)h(the)f(e)o(xact)f(image)h(parameters)h(at)e
(this)g(point.)56 b(So)31 b(future)i(calls)g(to)f Fp(sane)p
3023 2604 V 31 w(get)p 3219 2604 V 31 w(parameters\(\))0
2717 y Fq(will)h(return)i(the)f(e)o(xact)g(v)n(alues,)k(rather)c(than)h
(estimates.)60 b(Whether)35 b(the)f(physical)i(image)e(acquisition)i
(starts)f(at)f(this)0 2830 y(point)41 b(or)e(during)i(the)e(\002rst)h
(call)f(to)h Fp(sane)p 1450 2830 V 31 w(read\(\))35 b
Fq(is)40 b(unspeci\002ed)h(by)f(the)g(SANE)c(API.)i(If)h(non-blocking)
44 b(I/O)0 2943 y(and/or)30 b(a)d(select-style)32 b(interf)o(ace)e(is)e
(desired,)j(the)d(frontend)i(may)e(attempt)h(to)f(call)h
Fp(sane)p 2949 2943 V 31 w(set)p 3145 2943 V 31 w(io)p
3286 2943 V 32 w(mode\(\))c Fq(and/or)0 3055 y Fp(sane)p
225 3055 V 31 w(get)p 421 3055 V 31 w(select)p 782 3055
V 30 w(fd\(\))c Fq(at)i(this)h(point.)30 b(Either)24
b(of)f(these)h(functions)i(may)d(f)o(ail)h(if)f(the)h(back)o(end)h
(does)g(not)e(support)0 3168 y(the)h(requested)i(operation.)0
3337 y(Image)g(data)h(is)f(collected)j(by)d(repeatedly)j(calling)e
Fp(sane)p 1886 3337 V 31 w(read\(\))p Fq(.)33 b(Ev)o(entually)-6
b(,)28 b(this)f(function)h(will)e(return)h(an)f(end-)0
3450 y(of-\002le)32 b(status)h(\()p Fp(SANE)p 746 3450
V 31 w(STATUS)p 1107 3450 V 30 w(EOF)p Fq(\).)d(This)i(indicates)i(the)
e(end)g(of)g(the)g(current)h(frame.)54 b(If)32 b(the)g(frontend)i(e)o
(xpects)0 3563 y(additional)j(frames)e(\(e.g.,)i(the)d(indi)n(vidual)j
(channels)g(in)d(of)h(a)f(red/green/blue)k(image)d(or)f(multiple)i
(images\),)i(it)c(can)0 3676 y(call)24 b Fp(sane)p 379
3676 V 31 w(start\(\))c Fq(again.)30 b(Once)24 b(all)g(desired)h
(frames)f(ha)n(v)o(e)h(been)f(acquired,)i(function)g
Fp(sane)p 3238 3676 V 31 w(cancel\(\))19 b Fq(must)0
3789 y(be)33 b(called.)60 b(This)33 b(operation)i(can)f(also)g(be)f
(called)i(at)e(an)o(y)g(other)i(time)e(to)g(cancel)i(a)e(pending)i
(operation.)60 b(Note)34 b(that)0 3902 y Fp(sane)p 225
3902 V 31 w(cancel\(\))19 b Fq(must)24 b(be)f(called)i(e)n(v)o(en)f(if)
f(the)h(last)g(read)g(operation)i(returned)g Fp(SANE)p
2906 3902 V 31 w(STATUS)p 3267 3902 V 30 w(EOF)p Fq(.)0
4070 y(When)33 b(done)g(using)g(the)g(de)n(vice,)i(the)e(handle)h
(should)g(be)e(closed)i(by)e(a)g(call)h(to)f Fp(sane)p
2875 4070 V 31 w(close\(\))p Fq(.)51 b(Finally)-6 b(,)35
b(before)0 4183 y(e)o(xiting)e(the)f(application,)37
b(function)d Fp(sane)p 1443 4183 V 31 w(exit\(\))29 b
Fq(must)j(be)g(called.)55 b(It)31 b(is)h(important)i(not)e(to)g(for)n
(get)h(to)f(call)h(this)0 4296 y(function)26 b(since)e(otherwise)h
(some)f(resources)i(\(e.g.,)d(temporary)i(\002les)f(or)f(locks\))i(may)
e(remain)i(unclaimed.)0 4643 y Fn(4.5)119 b(W)-8 b(ell-Kno)o(wn)31
b(Options)0 4906 y Fq(While)c(most)f(back)o(end)j(options)f(are)f
(completely)i(self-describing,)i(there)c(are)g(a)f(cases)h(where)g(a)f
(user)h(interf)o(ace)i(might)0 5019 y(w)o(ant)24 b(to)g(special-case)k
(the)c(handling)j(of)d(certain)i(options.)32 b(F)o(or)24
b(e)o(xample,)h(the)f(scan)h(area)g(is)f(typically)i(de\002ned)f(by)g
(four)0 5132 y(options)35 b(that)e(specify)h(the)f(top-left)i(and)e
(bottom-right)j(corners)e(of)f(the)g(area.)57 b(W)l(ith)33
b(a)f(graphical)j(user)e(interf)o(ace,)k(it)1905 5381
y(33)p eop end
%%Page: 34 35
TeXDict begin 34 34 bop 0 123 a Fq(w)o(ould)25 b(be)g(tedious)i(to)d
(force)i(the)f(user)h(to)e(type)i(in)f(these)g(four)h(numbers.)34
b(Instead,)26 b(most)f(such)h(interf)o(aces)h(will)d(w)o(ant)h(to)0
236 y(present)g(to)f(the)g(user)g(a)f(pre)n(vie)n(w)i(\(lo)n
(w-resolution)i(scan\))d(of)g(the)g(scanner)h(surf)o(ace)h(and)e(let)g
(the)g(user)g(pick)g(the)g(scan)h(area)0 349 y(by)h(dragging)j(a)c
(rectangle)k(into)e(the)f(desired)i(position.)39 b(F)o(or)25
b(this)i(reason,)h(the)e(SANE)e(API)h(speci\002es)i(a)f(small)g(number)
0 462 y(of)d(option)j(names)e(that)g(ha)n(v)o(e)g(well-de\002ned)h
(meanings.)0 769 y Fm(4.5.1)99 b(Option)25 b(Number)h(Count)0
1002 y Fq(Option)e(number)h(0)e(has)h(an)f(empty)h(string)h(as)e(its)h
(name.)29 b(The)23 b(v)n(alue)h(of)g(this)g(option)h(is)e(of)g(type)i
Fp(SANE)p 3306 1002 28 4 v 30 w(TYPE)p 3556 1002 V 31
w(INT)d Fq(and)0 1115 y(it)29 b(speci\002es)i(the)e(total)h(number)g
(of)g(options)h(a)n(v)n(ailable)g(for)f(a)f(gi)n(v)o(en)g(de)n(vice)i
(\(the)f(count)g(includes)i(option)e(number)h(0\).)0
1228 y(This)23 b(means)h(that)f(there)h(are)g(tw)o(o)f(w)o(ays)g(of)g
(counting)j(the)d(number)h(of)f(options)i(a)n(v)n(ailable:)32
b(a)22 b(frontend)k(can)d(either)i(c)o(ycle)0 1341 y(through)h(all)d
(option)i(numbers)g(starting)h(at)d(one)h(until)h Fp(sane)p
1963 1341 V 31 w(get)p 2159 1341 V 31 w(option)p 2520
1341 V 30 w(descriptor\(\))17 b Fq(returns)25 b Fp(NULL)p
Fq(,)c(or)j(a)0 1454 y(frontend)i(can)e(directly)h(read)f(out)g(the)g
(v)n(alue)g(of)g(option)h(number)f(0.)0 1762 y Fm(4.5.2)99
b(Scan)26 b(Resolution)e(Option)0 1995 y Fq(Option)29
b Fp(resolution)24 b Fq(is)k(used)i(to)e(select)i(the)f(resolution)i
(at)e(which)g(an)g(image)g(should)h(be)e(acquired.)47
b(The)28 b(type)h(of)0 2108 y(this)24 b(option)h(is)f(either)g
Fp(SANE)p 947 2108 V 31 w(TYPE)p 1198 2108 V 31 w(INT)d
Fq(or)j Fp(SANE)p 1734 2108 V 31 w(TYPE)p 1985 2108 V
31 w(FIXED)p Fq(.)c(The)j(unit)h(is)g Fp(SANE)p 2966
2108 V 30 w(UNIT)p 3216 2108 V 31 w(DPI)e Fq(\(dots/inch\).)0
2280 y(This)k(option)i(is)e(not)h(mandatory)-6 b(,)28
b(b)n(ut)f(if)f(a)g(back)o(end)i(does)f(support)h(it,)f(it)f(must)g
(implement)h(it)f(in)h(a)e(manner)i(consistent)0 2392
y(with)c(the)h(abo)o(v)o(e)g(de\002nition.)0 2700 y Fm(4.5.3)99
b(Pr)n(e)o(view)25 b(Mode)g(Option)0 2933 y Fq(The)g(boolean)j(option)f
Fp(preview)22 b Fq(is)j(used)i(by)f(a)f(frontend)j(to)e(inform)g(the)g
(back)o(end)i(when)e(image)g(acquisition)j(should)0 3046
y(be)e(optimized)i(for)e(speed,)i(rather)g(than)e(quality)i(\(\223pre)n
(vie)n(w)f(mode\224\).)41 b(When)27 b(set)g(to)g Fp(SANE)p
3003 3046 V 31 w(TRUE)p Fq(,)e(pre)n(vie)n(w)i(mode)g(is)0
3159 y(in)e(ef)n(fect,)g(when)g(set)g(to)g Fp(SANE)p
1012 3159 V 31 w(FALSE)d Fq(image)j(acquisition)j(should)f(proceed)f
(in)f(normal)h(quality)g(mode.)33 b(The)25 b(setting)0
3272 y(of)c(this)h(option)h Fl(must)f(not)h Fq(af)n(fect)g(an)o(y)e
(other)i(option.)29 b(That)22 b(is,)f(as)g(f)o(ar)h(as)f(the)h(other)h
(options)g(are)f(concerned,)i(the)e(pre)n(vie)n(w)0 3385
y(mode)i(is)g(completely)i(side)e(ef)n(fect)h(free.)30
b(A)23 b(back)o(end)j(can)e(assume)h(that)f(the)g(frontend)i(will)e
(tak)o(e)g(care)h(of)e(appropriately)0 3498 y(setting)i(the)e(scan)h
(resolution)i(for)d(pre)n(vie)n(w)h(mode)f(\(through)j(option)e
Fp(resolution)p Fq(\).)g(A)e(back)o(end)j(is)e(free)h(to)f(o)o(v)o
(erride)0 3611 y(the)j Fp(resolution)21 b Fq(v)n(alue)27
b(with)e(its)h(o)n(wn)g(choice)h(for)f(pre)n(vie)n(w)h(mode,)f(b)n(ut)g
(it)g(is)g(advised)i(to)d(lea)n(v)o(e)i(this)g(choice)g(to)f(the)0
3724 y(frontend)g(where)n(v)o(er)e(possible.)0 3895 y(This)i(option)i
(is)e(not)h(mandatory)-6 b(,)28 b(b)n(ut)f(if)f(a)g(back)o(end)i(does)f
(support)h(it,)f(it)f(must)g(implement)h(it)f(in)h(a)e(manner)i
(consistent)0 4008 y(with)c(the)h(abo)o(v)o(e)g(de\002nition.)0
4316 y Fm(4.5.4)99 b(Scan)26 b(Ar)n(ea)f(Options)0 4549
y Fq(The)d(four)i(most)e(important)j(well-kno)n(wn)f(options)g(are)f
(the)g(ones)h(that)f(de\002ne)g(the)g(scan)h(area.)29
b(The)22 b(scan)i(area)f(is)f(de\002ned)0 4662 y(by)h(tw)o(o)f(points)j
(\(x/y)e(coordinate)j(pairs\))e(that)f(specify)i(the)e(top-left)i(and)e
(the)g(bottom-right)j(corners.)k(This)23 b(is)f(illustrated)0
4775 y(in)28 b(Figure)h(4.2.)44 b(Note)28 b(that)h(the)g(origin)h(of)e
(the)h(coordinate)i(system)e(is)g(at)f(the)h(top-left)h(corner)g(of)e
(the)h(scan)g(surf)o(ace)h(as)0 4888 y(seen)25 b(by)g(the)g(sensor)h
(\(which)f(typically)i(is)e(a)f(mirror)h(image)g(of)g(the)f(scan)i
(surf)o(ace)g(seen)g(by)e(the)h(user\).)33 b(F)o(or)24
b(this)h(reason,)0 5001 y(the)i(top-left)i(corner)f(is)f(the)g(corner)i
(for)e(which)g(the)g(abscissa)i(and)f(ordinate)h(v)n(alues)f(are)f
(simultaneously)k(the)c Fl(smallest)0 5114 y Fq(and)f(the)f
(bottom-right)k(corner)d(is)g(the)f(corner)i(for)f(which)f(the)h
(abscissa)h(and)f(ordinate)i(v)n(alues)e(are)g(simulatenously)j(the)
1905 5381 y(34)p eop end
%%Page: 35 36
TeXDict begin 35 35 bop 1125 1562 a @beginspecial 0 @llx
0 @lly 221 @urx 205 @ury 1836 @rhi @setspecial
%%BeginDocument: figs/area.eps
%!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
%%EndDocument
@endspecial 1416 1757 a Fq(Figure)24 b(4.2:)29 b(Scan)23
b(area)h(options)0 2134 y Fl(lar)m(g)o(est)p Fq(.)30
b(If)22 b(this)i(coordinate)h(system)f(is)f(not)g(natural)h(for)f(a)f
(gi)n(v)o(en)i(de)n(vice,)f(it)g(is)g(the)g(job)g(of)f(the)h(back)o
(end)i(to)e(perform)h(the)0 2247 y(necessary)i(con)l(v)o(ersions.)0
2419 y(The)d(names)h(of)g(the)f(four)i(options)g(that)f(de\002ne)g(the)
g(scan)g(area)g(are)g(gi)n(v)o(en)g(in)f(the)h(table)h(belo)n(w:)1200
2659 y Fr(Name)100 b(Description)1200 2772 y Fp(tl-x)107
b Fq(T)-7 b(op-left)24 b Fh(x)f Fq(coordinate)j(v)n(alue)1200
2885 y Fp(tl-y)107 b Fq(T)-7 b(op-left)24 b Fh(y)i Fq(coordinate)g(v)n
(alue)1200 2998 y Fp(br-x)107 b Fq(Bottom-right)25 b
Fh(x)e Fq(coordinate)j(v)n(alue)1200 3111 y Fp(br-y)107
b Fq(Bottom-right)25 b Fh(y)h Fq(coordinate)g(v)n(alue)0
3348 y(There)e(are)f(se)n(v)o(eral)i(rules)f(that)h(should)g(be)e
(follo)n(wed)i(by)f(front)g(and)g(back)o(ends)i(re)o(garding)f(these)g
(options:)136 3595 y Fk(\017)46 b Fq(Back)o(ends)25 b(must)f(attach)h
(a)e(unit)h(of)f(either)i(pix)o(els)g(\()p Fp(SANE)p
2091 3595 28 4 v 31 w(UNIT)p 2342 3595 V 31 w(PIXEL)p
Fq(\))20 b(or)k(millimeters)h(\()p Fp(SANE)p 3484 3595
V 31 w(UNIT)p 3735 3595 V 31 w(MM)p Fq(\))227 3708 y(to)f(these)g
(options.)31 b(The)23 b(unit)h(of)g(all)f(four)h(options)i(must)d(be)h
(identical.)136 3895 y Fk(\017)46 b Fq(Whene)n(v)o(er)25
b(meaningful,)g(a)f(back)o(end)h(should)g(attach)g(a)e(range)i(or)e(a)h
(w)o(ord-list)h(constraint)h(to)d(these)i(options.)136
4083 y Fk(\017)46 b Fq(A)29 b(frontend)k(can)d(determine)i(the)f(size)g
(of)f(the)h(scan)g(surf)o(ace)h(by)e(\002rst)g(checking)j(that)d(the)h
(options)h(ha)n(v)o(e)f(range)227 4196 y(constraints)i(associated.)51
b(If)30 b(a)g(range)h(or)f(w)o(ord-list)h(constraints)i(e)o(xist,)f
(the)f(frontend)h(can)e(tak)o(e)h(the)f(minimum)227 4309
y(and)21 b(maximum)g(v)n(alues)h(of)e(one)h(of)f(the)h(x)g(and)g(y)f
(option)i(range-constraints)k(to)20 b(determine)i(the)f(scan)h(surf)o
(ace)g(size.)136 4496 y Fk(\017)46 b Fq(A)23 b(frontend)i(must)f(w)o
(ork)g(properly)h(with)f(an)o(y)f(or)h(all)f(of)h(these)g(options)i
(missing.)1905 5381 y(35)p eop end
%%Page: 36 37
TeXDict begin 36 36 bop 0 804 a Fo(Chapter)44 b(5)0 1278
y Fs(Netw)n(ork)51 b(Pr)l(otocol)0 1782 y Fq(The)22 b(SANE)e(interf)o
(ace)k(has)f(been)g(designed)h(to)e(f)o(acilitate)j(netw)o(ork)f
(access)f(to)f(image)h(acquisition)i(de)n(vices.)30 b(In)22
b(particu-)0 1895 y(lar)l(,)f(most)e(SANE)f(implementations)23
b(are)c(e)o(xpected)j(to)e(support)h(a)e(netw)o(ork)i(back)o(end)h
(\(net)e(client\))i(and)e(a)f(corresponding)0 2008 y(netw)o(ork)k
(daemon)f(\(net)g(serv)o(er\))h(that)f(allo)n(ws)g(accessing)i(image)e
(acquisition)j(de)n(vices)e(through)h(a)d(netw)o(ork)h(connection.)0
2120 y(Netw)o(ork)i(access)h(is)e(useful)i(in)f(se)n(v)o(eral)g
(situations:)136 2367 y Fk(\017)46 b Fq(T)-7 b(o)25 b(pro)o(vide)j
(controlled)h(access)f(to)e(resources)j(that)e(are)f(inaccessible)k(to)
c(a)g(re)o(gular)h(user)-5 b(.)38 b(F)o(or)25 b(e)o(xample,)j(a)e(user)
227 2480 y(may)g(w)o(ant)f(to)h(access)g(a)g(de)n(vice)g(on)g(a)f(host)
h(where)g(she)g(has)g(no)f(account)j(on.)35 b(W)l(ith)26
b(the)f(netw)o(ork)i(protocol,)h(it)d(is)227 2593 y(possible)h(to)d
(allo)n(w)h(certain)h(users)g(to)e(access)i(scanners)h(without)e(gi)n
(ving)h(them)f(full)g(access)g(to)g(the)g(system.)227
2743 y(Controlling)34 b(access)e(through)h(the)e(netw)o(ork)h(daemon)g
(can)g(be)e(useful)j(e)n(v)o(en)e(in)g(the)g(local)h(case:)45
b(for)31 b(e)o(xample,)227 2856 y(certain)d(back)o(ends)g(may)d
(require)j(root)e(pri)n(vile)o(ges)i(to)e(access)h(a)e(de)n(vice.)37
b(Rather)27 b(than)f(installing)i(each)f(frontend)227
2969 y(as)36 b(setuid-root,)43 b(a)36 b(system)h(administrator)i(could)
e(instead)h(install)g(the)f(SANE)d(netw)o(ork)j(daemon)g(as)g(setuid-)
227 3082 y(root.)47 b(This)30 b(enables)h(re)o(gular)g(users)f(to)f
(access)i(the)f(pri)n(vile)o(ged)i(de)n(vice)e(through)i(the)d(SANE)e
(daemon)k(\(which,)227 3195 y(presumably)-6 b(,)24 b(supports)f(a)d
(more)h(\002ne-grained)i(access)f(control)h(mechanism)f(than)f(the)g
(simple)h(setuid)g(approach\).)227 3307 y(This)29 b(has)h(the)f(added)h
(bene\002t)g(that)g(the)f(system)h(administrator)i(only)e(needs)g(to)f
(trust)h(the)f(SANE)e(daemon,)k(not)227 3420 y(each)25
b(and)f(e)n(v)o(ery)g(frontend)h(that)f(may)g(need)g(access)h(to)e(the)
h(pri)n(vile)o(ged)i(de)n(vice.)136 3608 y Fk(\017)46
b Fq(Netw)o(ork)24 b(access)g(pro)o(vides)h(a)d(sense)i(of)f(ubiquity)j
(of)c(the)i(a)n(v)n(ailable)h(image)e(acquisition)j(de)n(vices.)31
b(F)o(or)22 b(e)o(xample,)227 3721 y(in)k(a)f(local)h(area)g(netw)o
(ork)h(en)l(vironment,)h(this)e(allo)n(ws)g(a)f(user)h(to)g(log)g(onto)
g(an)o(y)f(machine)i(and)f(ha)n(v)o(e)g(con)l(v)o(enient)227
3834 y(access)f(to)f(an)o(y)f(resource)j(a)n(v)n(ailable)g(to)d(an)o(y)
h(machine)h(on)e(the)h(netw)o(ork)h(\(subject)g(to)f(permission)h
(constraints\).)136 4021 y Fk(\017)46 b Fq(F)o(or)19
b(de)n(vices)h(that)g(do)f(not)h(require)h(physical)f(access)h(when)e
(used)h(\(e.g.,)g(video)g(cameras\),)h(netw)o(ork)f(access)h(allo)n(ws)
227 4134 y(a)28 b(user)h(to)f(control)h(and)g(use)f(these)h(de)n(vices)
h(without)f(being)g(in)f(physical)i(proximity)-6 b(.)44
b(Indeed,)31 b(if)d(such)h(de)n(vices)227 4247 y(are)24
b(connected)i(to)e(the)g(Internet,)h(access)g(from)e(an)o(y)h(place)g
(in)g(the)g(w)o(orld)f(is)h(possible.)0 4494 y(The)f(netw)o(ork)i
(protocol)h(described)g(in)d(this)h(chapter)h(has)f(been)h(design)g
(with)e(the)h(follo)n(wing)h(goals)g(in)e(mind:)114 4740
y(1.)45 b(Image)24 b(transmission)j(should)e(be)e(ef)n(\002cient)i
(\(ha)n(v)o(e)f(lo)n(w)f(encoding)j(o)o(v)o(erhead\).)114
4928 y(2.)45 b(Accessing)28 b(option)f(descriptors)i(on)d(the)g(client)
h(side)f(must)g(be)g(ef)n(\002cient)g(\(since)h(this)g(is)e(a)h(v)o
(ery)g(common)g(opera-)227 5041 y(tion\).)1905 5381 y(36)p
eop end
%%Page: 37 38
TeXDict begin 37 37 bop 114 123 a Fq(3.)45 b(Other)22
b(operations,)i(such)e(as)f(setting)h(or)f(inquiring)j(the)d(v)n(alue)h
(of)f(an)g(option)i(are)e(less)h(performance)h(critical)g(since)227
236 y(the)o(y)h(typically)i(require)f(e)o(xplicit)g(user)g(action.)114
423 y(4.)45 b(The)37 b(netw)o(ork)h(protocol)i(should)f(be)e(simple)h
(and)f(easy)h(to)f(implement)i(on)e(an)o(y)g(host)h(architecture)i(and)
e(an)o(y)227 536 y(programming)26 b(language.)0 783 y(The)32
b(SANE)e(protocol)k(can)f(be)f(run)h(across)h(an)o(y)e(transport)j
(protocol)g(that)e(pro)o(vides)h(reliable)g(data)f(deli)n(v)o(ery)-6
b(.)57 b(While)0 896 y(SANE)30 b(does)k(not)f(specify)i(a)d(speci\002c)
i(transport)h(protocol,)i(it)32 b(is)h(e)o(xpected)h(that)g(TCP/IP)d
(will)h(be)h(among)g(the)g(most)0 1008 y(commonly)25
b(used)f(protocols.)0 1360 y Fn(5.1)119 b(Data)30 b(T)-9
b(ype)30 b(Encoding)0 1629 y Fm(5.1.1)99 b(Primiti)o(v)o(e)24
b(Data)h(T)-7 b(ypes)0 1862 y Fq(The)23 b(four)h(primiti)n(v)o(e)h
(types)f(of)g(the)g(SANE)d(standard)k(are)f(encoded)i(as)d(follo)n(ws:)
0 2108 y Fp(SANE)p 225 2108 28 4 v 31 w(Byte)p Fr(:)44
b Fq(A)17 b(byte)j(is)e(encoded)j(as)e(an)f(8)h(bit)f(v)n(alue.)28
b(Since)19 b(the)g(transport)i(protocol)g(is)e(assumed)h(to)e(be)h
(byte-orientd,)227 2221 y(the)24 b(bit)g(order)g(is)g(irrele)n(v)n
(ant.)0 2409 y Fp(SANE)p 225 2409 V 31 w(Word)p Fr(:)44
b Fq(A)22 b(w)o(ord)i(is)f(encoded)j(as)d(4)h(bytes)g(\(32)g(bits\).)30
b(The)23 b(bytes)h(are)g(ordered)i(from)d(most-signi\002cant)k(to)c
(least-)227 2522 y(signi\002cant)j(byte)e(\(big-endian)j(byte-order\).)
0 2709 y Fp(SANE)p 225 2709 V 31 w(Char)p Fr(:)44 b Fq(A)29
b(character)j(is)e(currently)i(encoded)g(as)e(an)g(8-bit)h(ISO)e(LA)-10
b(TIN-1)29 b(v)n(alue.)49 b(An)29 b(e)o(xtension)j(to)e(support)227
2822 y(wider)24 b(character)i(sets)e(\(16)g(or)f(32)h(bits\))g(is)g
(planned)h(for)f(the)g(future,)g(b)n(ut)g(not)g(supported)j(at)c(this)h
(point.)0 3010 y Fp(SANE)p 225 3010 V 31 w(String)p Fr(:)43
b Fq(A)25 b(string)i(pointer)h(is)d(encoded)j(as)e(a)g
Fp(SANE)p 2065 3010 V 30 w(Char)e Fq(array)-6 b(.)37
b(The)25 b(trailing)j(NUL)c(byte)i(is)g(considered)227
3123 y(part)e(of)g(the)g(array)g(and)g(a)f Fp(NULL)e
Fq(pointer)k(is)f(encoded)h(as)f(a)f(zero-length)k(array)-6
b(.)0 3310 y Fp(SANE)p 225 3310 V 31 w(Handle)p Fr(:)43
b Fq(A)26 b(handle)j(is)e(encoded)i(lik)o(e)f(a)f(w)o(ord.)40
b(The)27 b(netw)o(ork)i(back)o(end)g(needs)g(to)e(tak)o(e)h(care)g(of)f
(con)l(v)o(erting)227 3423 y(these)22 b(inte)o(ger)g(v)n(alues)f(to)g
(the)g(opaque)h(pointer)g(v)n(alues)g(that)f(are)g(presented)i(to)d
(the)h(user)g(of)g(the)g(netw)o(ork)g(back)o(end.)227
3536 y(Similarly)-6 b(,)32 b(the)e(SANE)d(daemon)k(needs)g(to)f(tak)o
(e)g(care)h(of)e(con)l(v)o(erting)k(the)d(opaque)i(pointer)f(v)n(alues)
g(it)f(recei)n(v)o(es)227 3649 y(from)24 b(its)f(back)o(ends)j(into)f
(32-bit)g(inte)o(gers)g(suitable)g(for)f(use)g(for)g(netw)o(ork)g
(encoding.)0 3837 y Fa(enumeration)g(types)p Fr(:)47
b Fq(Enumeration)26 b(types)e(are)g(encoded)i(lik)o(e)e(w)o(ords.)0
4145 y Fm(5.1.2)99 b(T)-7 b(ype)25 b(Constructors)0 4378
y Fq(Closely)f(follo)n(wing)g(the)f(type)g(constructors)j(of)d(the)g(C)
e(language,)k(the)e(SANE)d(netw)o(ork)k(protocol)h(supports)g(the)e
(follo)n(w-)0 4490 y(ing)h(four)g(constructors:)0 4737
y Fa(pointer)p Fr(:)47 b Fq(A)21 b(pointer)j(is)e(encoded)i(by)e(a)g(w)
o(ord)g(that)h(indicates)h(whether)f(the)f(pointer)i(is)e(a)g
(NULL-pointer)g(which)h(is)e(then)227 4850 y(follo)n(wed)28
b(by)g(the)f(v)n(alue)h(that)f(the)h(pointer)g(points)h(to)e(\(in)g
(the)g(case)h(of)f(a)g(non-NULL)f(pointer;)31 b(in)c(the)g(case)h(of)f
(a)227 4963 y(NULL)21 b(pointer)l(,)26 b(no)d(bytes)i(are)f(encoded)h
(for)f(the)g(pointer)h(v)n(alue\).)1905 5381 y(37)p eop
end
%%Page: 38 39
TeXDict begin 38 38 bop 0 123 a Fa(array)p Fr(:)48 b
Fq(An)28 b(array)i(is)e(encoded)j(by)e(a)g(w)o(ord)f(that)i(indicates)h
(the)e(length)h(of)f(the)g(array)h(follo)n(wed)g(by)f(the)g(v)n(alues)h
(of)f(the)227 236 y(elements)j(in)e(the)g(array)-6 b(.)50
b(The)29 b(length)j(may)e(be)g(zero)g(in)g(which)h(case)g(no)f(bytes)h
(are)f(encoded)j(for)d(the)g(element)227 349 y(v)n(alues.)0
536 y Fa(structure)p Fr(:)47 b Fq(A)32 b(structure)j(is)e(encoded)i(by)
e(simply)h(encoding)h(the)f(structure)h(members)e(in)g(the)h(order)g
(in)e(which)i(the)o(y)227 649 y(appear)25 b(in)f(the)g(corresponding)j
(C)c(type)h(declaration.)0 837 y Fa(union)p Fr(:)45 b
Fq(A)25 b(union)i(must)f(al)o(w)o(ays)h(be)f(accompanied)j(by)e(a)e
(tag)i(v)n(alue)g(that)f(indicates)j(which)d(of)g(the)g(union)i
(members)e(is)227 950 y(the)e(currently)j(the)d(acti)n(v)o(e)g(one.)30
b(F)o(or)23 b(this)i(reason,)g(the)f(union)h(itself)g(is)e(encoded)j
(simply)f(by)f(encoding)i(the)e(v)n(alue)227 1063 y(of)g(the)g
(currently)h(acti)n(v)o(e)g(member)-5 b(.)0 1309 y(Note)25
b(that)h(for)f(type)h(constructors,)j(the)d(pointer)l(,)i(element,)e
(or)f(member)h(v)n(alues)g(themselv)o(es)h(may)e(ha)n(v)o(e)h(a)f
(constructed)0 1422 y(type.)k(Thus,)21 b(the)g(abo)o(v)o(e)h(rules)g
(should)h(be)e(applied)i(recursi)n(v)o(ely)g(until)f(a)f(sequence)j(of)
d(primiti)n(v)o(e)h(types)g(has)f(been)h(found.)0 1594
y(Also)h(SANE)f(had)i(no)f(need)i(for)e(encoding)j(of)e(circular)h
(structures.)31 b(This)24 b(greatly)h(simpli\002es)f(the)g(netw)o(ork)h
(protocol.)0 1945 y Fn(5.2)119 b(Remote)30 b(Pr)n(ocedur)n(e)g(Call)h
(Requests)0 2211 y Fq(The)24 b(SANE)e(netw)o(ork)j(protocol)i(is)d(a)g
(client/serv)o(er)n(-style)30 b(remote)25 b(procedure)i(call)d(\(RPC\))
f(protocol.)34 b(This)24 b(means)h(that)0 2323 y(all)f(acti)n(vity)h
(is)f(initiated)h(by)f(the)g(client)h(side)f(\(the)h(netw)o(ork)f(back)
o(end\)\227a)j(serv)o(er)d(is)g(restricted)i(to)e(answering)h(requests)
0 2436 y(sent)f(by)g(the)g(client.)0 2608 y(The)c(data)i(transferred)i
(from)d(the)g(client)h(to)f(the)g(serv)o(er)h(is)f(comprised)i(of)d
(the)i(RPC)d(code)i(\(as)g(a)g Fp(SANE)p 3262 2608 28
4 v 31 w(WORD)p Fq(\),)d(follo)n(wed)0 2721 y(by)25 b(ar)n(guments)i
(de\002ned)e(in)g(the)g Fr(r)n(equest)g Fq(column)g(belo)n(w)-6
b(.)32 b(The)24 b(format)i(of)e(the)h(serv)o(er')-5 b(s)26
b(answer)g(is)e(gi)n(v)o(en)h(in)g(the)g Fr(r)n(eply)0
2834 y Fq(column.)0 3142 y Fm(5.2.1)99 b Fc(SANE)p 545
3142 30 4 v 35 w(NET)p 760 3142 V 35 w(INIT)0 3375 y
Fq(RPC)22 b(Code:)29 b(0)0 3546 y(This)20 b(RPC)f(establishes)k(a)d
(connection)j(to)e(a)e(particular)k(SANE)18 b(netw)o(ork)k(daemon.)28
b(It)20 b(must)h(be)f(the)h(\002rst)f(call)g(in)h(a)f(SANE)0
3659 y(netw)o(ork)25 b(session.)30 b(The)23 b(parameter)j(and)e(reply)g
(ar)n(guments)i(for)e(this)g(call)g(are)f(sho)n(wn)h(in)g(the)g(table)g
(belo)n(w:)744 3900 y Fr(r)n(equest:)941 b(r)n(eply:)744
4013 y Fp(SANE)p 969 4013 28 4 v 31 w(Word)52 b(version)p
1657 4013 V 30 w(code)98 b(SANE)p 2225 4013 V 31 w(Word)52
b(status)744 4126 y(SANE)p 969 4126 V 31 w(String)g(user)p
1602 4126 V 30 w(name)153 b(SANE)p 2225 4126 V 31 w(Word)52
b(version)p 2913 4126 V 30 w(code)0 4363 y Fq(The)32
b Fp(version)p 563 4363 V 30 w(code)e Fq(ar)n(gument)35
b(in)d(the)i(request)g(is)f(the)g(SANE)d(v)o(ersion-code)36
b(of)d(the)g(netw)o(ork)h(back)o(end)h(that)e(is)0 4476
y(contacting)d(the)d(netw)o(ork)i(daemon)f(\(see)f(Section)h(4.1\).)39
b(The)27 b(\223b)n(uild-re)n(vision\224)32 b(in)27 b(the)g(v)o(ersion)i
(code)f(is)f(used)g(to)g(hold)0 4589 y(the)c(netw)o(ork)h(protocol)h(v)
o(ersion.)30 b(The)23 b(SANE)d(netw)o(ork)k(daemon)g(recei)n(ving)h
(such)f(a)e(request)j(must)e(mak)o(e)g(sure)g(that)h(the)0
4702 y(netw)o(ork)30 b(protocol)h(v)o(ersion)f(corresponds)i(to)d(a)f
(supported)j(v)o(ersion)f(since)g(otherwise)g(the)f(encoding)i(of)e
(the)g(netw)o(ork)0 4815 y(stream)c(may)e(be)i(incompatible)i(\(e)n(v)o
(en)d(though)i(the)e(SANE)e(interf)o(ace)k(itself)f(may)f(be)g
(compatible\).)33 b(The)24 b Fp(user)p 3656 4815 V 31
w(name)0 4928 y Fq(ar)n(gument)35 b(is)e(the)g(name)g(of)g(the)g(user)h
(on)f(whose)g(behalf)i(this)e(call)h(is)f(being)h(performed.)59
b(If)33 b(the)g(netw)o(ork)h(back)o(end)0 5041 y(cannot)26
b(determine)g(a)e(user)n(-name,)j(it)d(passes)i(a)e Fp(NULL)e
Fq(pointer)k(for)f(this)g(ar)n(gument.)33 b(No)24 b(trust)h(should)h
(be)f(placed)h(in)e(the)1905 5381 y(38)p eop end
%%Page: 39 40
TeXDict begin 39 39 bop 0 123 a Fq(authenticity)30 b(of)c(this)i(user)n
(-name.)39 b(The)26 b(intent)i(of)f(this)g(string)h(is)e(to)g(pro)o
(vide)i(more)f(con)l(v)o(enience)j(to)d(the)f(user)-5
b(.)39 b(E.g.,)25 b(it)0 236 y(could)g(be)e(used)i(as)e(the)h(def)o
(ault-user)j(name)d(in)f(subsequent)k(authentication)h(calls.)0
407 y(In)35 b(the)h(reply)-6 b(,)40 b Fp(status)32 b
Fq(indicates)37 b(the)f(completion)i(status.)66 b(If)35
b(the)h(v)n(alue)g(is)g(an)o(ything)h(other)g(than)f
Fp(SANE)p 3656 407 28 4 v 31 w(STA-)0 520 y(TUS)p 170
520 V 31 w(GOOD)p Fq(,)25 b(the)j(remainder)h(of)e(the)h(reply)h(has)f
(unde\002ned)h(v)n(alues.)2235 487 y Fg(1)2314 520 y
Fq(The)e Fp(version)p 2872 520 V 29 w(code)e Fq(ar)n(gument)30
b(returns)f(the)0 633 y(SANE)22 b(v)o(ersion-code)27
b(that)e(the)f(netw)o(ork)i(daemon)f(supports.)33 b(See)24
b(the)g(comments)h(in)f(the)h(pre)n(vious)h(paragraph)h(on)d(the)0
746 y(meaning)h(of)e(the)h(b)n(uild-re)n(vision)k(in)23
b(this)h(v)o(ersion)h(code.)0 1054 y Fm(5.2.2)99 b Fc(SANE)p
545 1054 30 4 v 35 w(NET)p 760 1054 V 35 w(GET)p 975
1054 V 35 w(DEVICES)0 1287 y Fq(RPC)22 b(Code:)29 b(1)0
1459 y(This)23 b(RPC)f(is)h(used)i(to)e(obtain)i(the)f(list)g(of)f(de)n
(vices)i(accessible)i(by)c(the)h(SANE)d(daemon.)1055
1699 y Fr(r)n(equest:)101 b(r)n(eply:)1055 1812 y Fp(void)196
b(SANE)p 1696 1812 28 4 v 31 w(Word)52 b(status)1471
1925 y(SANE)p 1696 1925 V 31 w(Device)2103 1941 y(***)2268
1925 y(device)p 2603 1925 V 29 w(list)0 2162 y Fq(There)24
b(are)f(no)h(ar)n(guments)i(in)d(the)h(request)h(for)f(this)g(call.)0
2334 y(In)35 b(the)h(reply)-6 b(,)40 b Fp(status)32 b
Fq(indicates)37 b(the)f(completion)i(status.)66 b(If)35
b(the)h(v)n(alue)g(is)g(an)o(ything)h(other)g(than)f
Fp(SANE)p 3656 2334 V 31 w(STA-)0 2447 y(TUS)p 170 2447
V 31 w(GOOD)p Fq(,)23 b(the)k(remainder)g(of)f(the)g(reply)h(has)f
(unde\002ned)i(v)n(alues.)37 b(The)25 b Fp(device)p 2760
2447 V 30 w(list)f Fq(ar)n(gument)j(is)f(a)g(pointer)h(to)0
2560 y(a)c Fp(NULL)p Fq(-terminated)h(array)h(of)e Fp(SANE)p
1256 2560 V 31 w(Device)d Fq(pointers.)0 2868 y Fm(5.2.3)99
b Fc(SANE)p 545 2868 30 4 v 35 w(NET)p 760 2868 V 35
w(OPEN)0 3101 y Fq(RPC)22 b(Code:)29 b(2)0 3272 y(This)23
b(RPC)f(is)h(used)i(to)e(open)i(a)e(connection)j(to)e(a)f(remote)h
(SANE)d(de)n(vice.)760 3513 y Fr(r)n(equest:)996 b(r)n(eply:)760
3626 y Fp(SANE)p 985 3626 28 4 v 31 w(String)52 b(device)p
1728 3626 V 30 w(name)98 b(SANE)p 2296 3626 V 31 w(Word)52
b(status)2071 3739 y(SANE)p 2296 3739 V 31 w(Word)g(handle)2071
3852 y(SANE)p 2296 3852 V 31 w(String)f(resource)0 4089
y Fq(The)23 b Fp(device)p 499 4089 V 30 w(name)e Fq(ar)n(gument)k
(speci\002es)g(the)f(name)g(of)f(the)h(de)n(vice)h(to)e(open.)0
4261 y(In)35 b(the)h(reply)-6 b(,)40 b Fp(status)32 b
Fq(indicates)37 b(the)f(completion)i(status.)66 b(If)35
b(the)h(v)n(alue)g(is)g(an)o(ything)h(other)g(than)f
Fp(SANE)p 3656 4261 V 31 w(STA-)0 4374 y(TUS)p 170 4374
V 31 w(GOOD)p Fq(,)26 b(the)j(remainder)i(of)e(the)g(reply)g(has)g
(unde\002ned)i(v)n(alues.)46 b(The)28 b Fp(handle)d Fq(ar)n(gument)31
b(speci\002es)f(the)f(de)n(vice)0 4487 y(handle)d(that)g(uniquely)h
(identi\002es)f(the)f(connection.)36 b(The)24 b Fp(resource)c
Fq(ar)n(gument)27 b(is)d(used)i(to)f(request)h(authentication.)0
4600 y(If)h(it)h(has)g(a)f(non-)p Fp(NULL)g Fq(v)n(alue,)i(the)f(netw)o
(ork)h(back)o(end)h(should)g(authenticate)h(the)d(speci\002ed)h
(resource)h(and)e(then)g(retry)0 4712 y(this)c(operation)i(\(see)e
(Section)h(5.2.10)f(for)f(details)j(on)d(ho)n(w)g(to)h(authorize)i(a)d
(resource\).)p 0 4794 1560 4 v 105 4849 a Ff(1)134 4881
y Fe(The)c(sane)h(netw)o(ork)g(daemon)g(should)g(be)f(careful)g(not)g
(to)g(leak)g(information)h(in)f(the)g(unde\002ned)h(portion)f(of)g(the)
g(reply)-5 b(.)1905 5381 y Fq(39)p eop end
%%Page: 40 41
TeXDict begin 40 40 bop 0 123 a Fm(5.2.4)99 b Fc(SANE)p
545 123 30 4 v 35 w(NET)p 760 123 V 35 w(CLOSE)0 351
y Fq(RPC)22 b(Code:)29 b(3)0 517 y(This)23 b(RPC)f(is)h(used)i(to)e
(close)i(a)e(connection)j(to)e(a)f(remote)h(SANE)d(de)n(vice.)1077
722 y Fr(r)n(equest:)635 b(r)n(eply:)1077 835 y Fp(SANE)p
1302 835 28 4 v 30 w(Word)53 b(handle)97 b(SANE)p 2252
835 V 31 w(Word)53 b(dummy)0 1056 y Fq(The)23 b Fp(handle)d
Fq(ar)n(gument)26 b(identi\002es)f(the)e(connection)k(that)d(should)h
(be)f(closed.)0 1222 y(In)j(the)g(reply)-6 b(,)28 b(the)f
Fp(dummy)d Fq(ar)n(gument)29 b(is)e(unused.)40 b(Its)27
b(purpose)i(is)d(to)h(ensure)h(proper)h(synchronization)i(\(without)e
(it,)e(a)0 1335 y(net)d(client)h(w)o(ould)f(not)g(be)f(able)h(to)g
(determine)h(when)f(the)f(RPC)f(has)i(completed\).)0
1636 y Fm(5.2.5)99 b Fc(SANE)p 545 1636 30 4 v 35 w(NET)p
760 1636 V 35 w(GET)p 975 1636 V 35 w(OPTION)p 1370 1636
V 35 w(DESCRIPTORS)0 1863 y Fq(RPC)22 b(Code:)29 b(4)0
2030 y(This)23 b(RPC)f(is)h(used)i(to)e(obtain)i Fl(all)f
Fq(the)g(option)h(descriptors)h(for)e(a)f(remote)h(SANE)e(de)n(vice.)
706 2253 y Fr(r)n(equest:)635 b(r)n(eply:)706 2366 y
Fp(SANE)p 931 2366 28 4 v 31 w(Word)52 b(handle)97 b(Option)p
1991 2366 V 30 w(Descriptor)p 2571 2366 V 28 w(Array)53
b(odesc)0 2587 y Fq(The)23 b Fp(handle)d Fq(ar)n(gument)26
b(identi\002es)f(the)e(remote)i(de)n(vice)f(whose)g(option)h
(descriptors)i(should)e(be)f(obtained.)0 2754 y(In)29
b(the)h(reply)-6 b(,)32 b(the)d Fp(odesc)e Fq(ar)n(gument)k(is)e(used)h
(to)f(return)i(the)f(array)g(of)f(option)i(descriptors.)50
b(The)29 b(option)h(descriptor)0 2866 y(array)24 b(has)g(the)g(follo)n
(wing)h(structure:)227 3096 y Fp(struct)52 b(Option_Descript)o(or)o(_A)
o(rra)o(y)336 3209 y({)445 3322 y(SANE_Word)f(num_options;)445
3435 y(SANE_Option_Desc)o(ri)o(pt)o(or)1700 3451 y(**)1810
3435 y(desc;)336 3548 y(};)0 3848 y Fm(5.2.6)99 b Fc(SANE)p
545 3848 30 4 v 35 w(NET)p 760 3848 V 35 w(CONTROL)p
1215 3848 V 34 w(OPTION)0 4076 y Fq(RPC)22 b(Code:)29
b(5)0 4242 y(This)23 b(RPC)f(is)h(used)i(to)e(control)i(\(inquire,)h
(set,)d(or)h(set)f(to)h(automatic\))h(a)e(speci\002c)i(option)g(of)e(a)
g(remote)i(SANE)c(de)n(vice.)815 4466 y Fr(r)n(equest:)832
b(r)n(eply:)815 4579 y Fp(SANE)p 1040 4579 28 4 v 31
w(Word)52 b(handle)294 b(SANE)p 2187 4579 V 31 w(Status)51
b(status)815 4692 y(SANE)p 1040 4692 V 31 w(Word)h(option)294
b(SANE)p 2187 4692 V 31 w(Word)52 b(info)815 4805 y(SANE)p
1040 4805 V 31 w(Word)g(action)294 b(SANE)p 2187 4805
V 31 w(Word)52 b(value)p 2765 4805 V 31 w(type)815 4917
y(SANE)p 1040 4917 V 31 w(Word)g(value)p 1618 4917 V
31 w(type)98 b(SANE)p 2187 4917 V 31 w(Word)52 b(value)p
2765 4917 V 31 w(size)815 5030 y(SANE)p 1040 5030 V 31
w(Word)g(value)p 1618 5030 V 31 w(size)98 b(void)2234
5046 y(*)2289 5030 y(value)815 5143 y(void)1087 5159
y(*)1142 5143 y(value)545 b(SANE)p 2187 5143 V 31 w(String)2594
5159 y(*)2649 5143 y(resource)1905 5381 y Fq(40)p eop
end
%%Page: 41 42
TeXDict begin 41 41 bop 0 123 a Fq(The)21 b Fp(handle)e
Fq(ar)n(gument)k(identi\002es)h(the)e(remote)g(de)n(vice)h(whose)f
(option)i(should)f(be)f(controlled.)31 b(Ar)n(gument)23
b Fp(option)0 236 y Fq(is)33 b(the)g(number)h(\(inde)o(x\))h(of)e(the)g
(option)h(that)g(should)h(be)e(controlled.)60 b(Ar)n(gument)34
b Fp(action)c Fq(speci\002es)k(what)f(action)0 349 y(should)40
b(be)f(tak)o(en)g(\(get,)k(set,)f(or)d(set)g(automatic\).)75
b(Ar)n(gument)40 b Fp(value)p 2430 349 28 4 v 30 w(type)c
Fq(speci\002es)k(the)f(type)g(of)g(the)g(option)0 462
y(v)n(alue)34 b(\(must)f(be)g(one)g(of)g Fp(SANE)p 1080
462 V 31 w(TYPE)p 1331 462 V 31 w(BOOL)p Fq(,)d Fp(SANE)p
1855 462 V 31 w(TYPE)p 2106 462 V 31 w(INT)p Fq(,)h Fp(SANE)p
2576 462 V 30 w(TYPE)p 2826 462 V 31 w(FIXED)p Fq(,)f
Fp(SANE)p 3405 462 V 31 w(TYPE)p 3656 462 V 31 w(STR-)0
574 y(ING)p Fq(,)24 b Fp(SANE)p 437 574 V 31 w(TYPE)p
688 574 V 31 w(BUTTON)p Fq(\).)f(Ar)n(gument)28 b Fp(value)p
1793 574 V 31 w(size)c Fq(speci\002es)k(the)f(size)g(of)g(the)g(option)
h(v)n(alue)g(in)f(number)g(of)0 687 y(bytes)f(\(see)f(Section)g(4.2.9)g
(for)g(the)f(precise)j(meaning)f(of)e(this)h(v)n(alue\).)33
b(Finally)-6 b(,)26 b(ar)n(gument)g Fp(value)c Fq(is)i(a)g(pointer)i
(to)f(the)0 800 y(option)g(v)n(alue.)31 b(It)24 b(must)g(be)g(a)f
(writeable)j(area)e(that)g(is)g(at)g(least)h Fp(value)p
2291 800 V 30 w(size)c Fq(bytes)k(lar)n(ge.)32 b(\(Note)24
b(that)g(this)h(area)f(must)0 913 y(be)i(writable)h(e)n(v)o(en)f(if)g
(the)g(action)h(is)f(to)f(set)h(the)h(option)g(v)n(alue.)37
b(This)25 b(is)h(because)i(the)e(back)o(end)i(may)e(not)g(be)g(able)g
(to)g(set)0 1026 y(the)g(e)o(xact)f(option)i(v)n(alue,)f(in)g(which)f
(case)h(the)g(option)h(v)n(alue)f(is)f(used)h(to)f(return)i(the)e(ne)o
(xt)h(best)g(v)n(alue)g(that)f(the)h(back)o(end)0 1139
y(has)e(chosen.\))0 1311 y(In)f(the)g(reply)-6 b(,)24
b(ar)n(gument)g Fp(resource)19 b Fq(is)k(set)g(to)f(the)h(name)g(of)g
(the)g(resource)i(that)f(must)e(be)h(authorized)j(before)e(this)g(call)
0 1424 y(can)h(be)f(retried.)33 b(If)24 b(this)h(v)n(alue)h(is)e(non-)p
Fp(NULL)p Fq(,)f(all)i(other)g(ar)n(guments)i(ha)n(v)o(e)e(unde\002ned)
h(v)n(alues)g(\(see)f(Section)g(5.2.10)g(for)0 1536 y(details)31
b(on)g(ho)n(w)e(to)h(authorize)i(a)e(resource\).)50 b(Ar)n(gument)31
b Fp(status)c Fq(indicates)32 b(the)e(completion)i(status.)49
b(If)30 b(the)g(v)n(alue)0 1649 y(is)d(an)o(ything)i(other)f(than)g
Fp(SANE)p 1051 1649 V 31 w(STATUS)p 1412 1649 V 30 w(GOOD)p
Fq(,)d(the)i(remainder)i(of)e(the)h(reply)g(has)f(unde\002ned)i(v)n
(alues.)41 b(The)27 b Fp(info)0 1762 y Fq(ar)n(gument)21
b(returns)g(the)f(information)i(on)d(ho)n(w)g(well)g(the)g(back)o(end)j
(w)o(as)d(able)h(to)f(satisfy)i(the)e(request.)29 b(F)o(or)19
b(details,)i(see)f(the)0 1875 y(description)32 b(of)c(the)h
(corresponding)j(ar)n(gument)e(in)f(Section)g(4.3.7.)43
b(Ar)n(guments)30 b Fp(value)p 2946 1875 V 31 w(type)c
Fq(and)i Fp(value)p 3656 1875 V 31 w(size)0 1988 y Fq(ha)n(v)o(e)c(the)
f(same)h(v)n(alues)g(as)f(the)h(ar)n(guments)i(by)d(the)h(same)f(name)g
(in)g(corresponding)28 b(request.)i(The)23 b(v)n(alues)i(are)e
(repeated)0 2101 y(here)j(to)f(ensure)i(that)f(both)g(the)f(request)i
(and)f(the)f(reply)i(are)e(self-contained)30 b(\(i.e.,)25
b(the)o(y)g(can)h(be)f(encoded)i(and)f(decoded)0 2214
y(independently\).)45 b(Ar)n(gument)28 b Fp(value)c Fq(is)j(holds)i
(the)f(v)n(alue)g(of)f(the)g(option)i(that)f(has)g(become)g(ef)n(fecti)
n(v)o(e)h(as)e(a)g(result)h(of)0 2327 y(this)c(RPC.)0
2635 y Fm(5.2.7)99 b Fc(SANE)p 545 2635 30 4 v 35 w(NET)p
760 2635 V 35 w(GET)p 975 2635 V 35 w(PARAMETERS)0 2868
y Fq(RPC)22 b(Code:)29 b(6)0 3039 y(This)23 b(RPC)f(is)h(used)i(to)e
(obtain)i(the)f(scan)g(parameters)i(of)d(a)g(remote)h(SANE)e(de)n
(vice.)886 3280 y Fr(r)n(equest:)635 b(r)n(eply:)886
3393 y Fp(SANE)p 1111 3393 28 4 v 31 w(Word)52 b(handle)97
b(SANE)p 2061 3393 V 31 w(Status)52 b(status)1836 3506
y(SANE)p 2061 3506 V 31 w(Parameters)e(params)0 3743
y Fq(The)33 b Fp(handle)d Fq(ar)n(gument)35 b(identi\002es)g(the)f
(connection)i(to)e(the)f(remote)h(de)n(vice)h(whose)f(scan)g
(parameters)h(should)g(be)0 3856 y(returned.)0 4028 y(In)g(the)h(reply)
-6 b(,)40 b Fp(status)32 b Fq(indicates)37 b(the)f(completion)i
(status.)66 b(If)35 b(the)h(v)n(alue)g(is)g(an)o(ything)h(other)g(than)
f Fp(SANE)p 3656 4028 V 31 w(STA-)0 4141 y(TUS)p 170
4141 V 31 w(GOOD)p Fq(,)25 b(the)j(remainder)h(of)e(the)h(reply)h(has)f
(unde\002ned)h(v)n(alues.)42 b(The)27 b(ar)n(gument)i
Fp(params)24 b Fq(is)j(used)i(to)e(return)i(the)0 4254
y(scan)24 b(parameters.)0 4561 y Fm(5.2.8)99 b Fc(SANE)p
545 4561 30 4 v 35 w(NET)p 760 4561 V 35 w(START)0 4794
y Fq(RPC)22 b(Code:)29 b(7)0 4966 y(This)23 b(RPC)f(is)h(used)i(to)e
(start)h(image)g(acquisition)j(\(scanning\).)1905 5381
y(41)p eop end
%%Page: 42 43
TeXDict begin 42 42 bop 940 111 a Fr(r)n(equest:)636
b(r)n(eply:)940 223 y Fp(SANE)p 1165 223 28 4 v 31 w(Word)53
b(handle)97 b(SANE)p 2116 223 V 31 w(Status)51 b(status)1891
336 y(SANE)p 2116 336 V 31 w(Word)h(port)1891 449 y(SANE)p
2116 449 V 31 w(Word)g(byte)p 2639 449 V 31 w(order)1891
562 y(SANE)p 2116 562 V 31 w(String)f(resource)0 800
y Fq(The)35 b Fp(handle)d Fq(ar)n(gument)37 b(identi\002es)f(the)g
(connection)i(to)e(the)f(remote)h(de)n(vice)g(from)g(which)f(the)h
(image)f(should)i(be)0 913 y(acquired.)0 1084 y(In)23
b(the)g(reply)-6 b(,)24 b(ar)n(gument)g Fp(resource)19
b Fq(is)k(set)g(to)f(the)h(name)g(of)g(the)g(resource)i(that)f(must)e
(be)h(authorized)j(before)e(this)g(call)0 1197 y(can)h(be)f(retried.)33
b(If)24 b(this)h(v)n(alue)h(is)e(non-)p Fp(NULL)p Fq(,)f(all)i(other)g
(ar)n(guments)i(ha)n(v)o(e)e(unde\002ned)h(v)n(alues)g(\(see)f(Section)
g(5.2.10)g(for)0 1310 y(details)h(on)e(ho)n(w)g(to)g(authorize)j(a)d
(resource\).)33 b(Ar)n(gument,)26 b Fp(status)20 b Fq(indicates)27
b(the)e(completion)h(status.)33 b(If)24 b(the)g(v)n(alue)h(is)0
1423 y(an)o(ything)i(other)f(than)f Fp(SANE)p 957 1423
V 31 w(STATUS)p 1318 1423 V 30 w(GOOD)p Fq(,)d(the)j(remainder)h(of)f
(the)g(reply)h(has)f(unde\002ned)h(v)n(alues.)34 b(The)24
b(ar)n(gument)0 1536 y Fp(port)32 b Fq(returns)k(the)f(port)g(number)h
(from)e(which)h(the)g(image)g(data)g(will)g(be)f(a)n(v)n(ailable.)64
b(T)-7 b(o)34 b(read)h(the)g(image)g(data,)j(a)0 1649
y(netw)o(ork)28 b(client)g(must)f(connect)i(to)e(the)g(remote)h(host)f
(at)g(the)g(indicated)j(port)d(number)-5 b(.)40 b(Through)28
b(this)f(port,)i(the)e(image)0 1762 y(data)f(is)e(transmitted)k(as)d(a)
f(sequence)k(of)d(data)g(records.)35 b(Each)25 b(record)h(starts)h
(with)d(the)i(data)f(length)i(in)e(bytes.)34 b(The)25
b(data)0 1875 y(length)d(is)f(transmitted)i(as)e(a)g(sequence)i(of)e
(four)g(bytes.)29 b(These)21 b(bytes)i(should)f(be)f(interpreted)j(as)d
(an)g(unsigned)i(inte)o(ger)f(in)0 1988 y(big-endian)28
b(format.)33 b(The)25 b(four)g(length)i(bytes)f(are)f(follo)n(wed)h(by)
f(the)g(number)h(of)f(data)g(bytes)h(indicated)i(by)d(the)g(length.)0
2101 y(Except)c(for)g(byte-order)l(,)j(the)c(data)h(is)g(in)f(the)h
(same)f(format)h(as)f(de\002ned)i(for)e Fp(sane)p 2620
2101 V 31 w(read\(\))p Fq(.)k(Since)d(some)f(records)i(may)0
2213 y(contain)29 b(no)f(data)g(at)f(all,)h(a)f(length)i(v)n(alue)f(of)
g(zero)g(is)f(perfectly)j(v)n(alid.)41 b(The)27 b(special)i(length)g(v)
n(alue)f(of)g Fp(0xffffffff)0 2326 y Fq(is)c(used)i(to)f(indicate)h
(the)f(end)g(of)g(the)g(data)g(stream.)33 b(That)24 b(is,)h(after)g
(recei)n(ving)i(a)d(record)i(length)g(of)f Fp(0xffffffff)p
Fq(,)19 b(the)0 2439 y(netw)o(ork)25 b(client)f(should)i(close)e(the)g
(data)g(connection)j(and)d(stop)g(reading)h(data.)0 2611
y(Ar)n(gument)35 b Fp(byte)p 625 2611 V 31 w(order)c
Fq(speci\002es)36 b(the)e(byte-order)j(of)e(the)f(image)h(data.)61
b(A)33 b(v)n(alue)i(of)f(0x1234)i(indicates)h(little-)0
2724 y(endian)26 b(format,)f(a)f(v)n(alue)i(of)e(0x4321)j(indicates)g
(big-endian)h(format.)k(All)24 b(other)i(v)n(alues)g(are)e(presently)j
(unde\002ned)g(and)0 2837 y(reserv)o(ed)g(for)f(future)h(enhancements)i
(of)c(this)h(protocol.)37 b(The)25 b(intent)i(is)e(that)h(a)g(netw)o
(ork)g(serv)o(er)h(sends)f(data)h(in)e(its)h(o)n(wn)0
2950 y(byte-order)k(and)d(the)g(client)i(is)d(responsible)31
b(for)c(adjusting)i(the)f(byte-order)l(,)i(if)d(necessary)-6
b(.)42 b(This)26 b(approach)k(causes)e(no)0 3063 y(unnecessary)k(o)o(v)
o(erheads)e(in)e(the)h(case)f(where)h(the)f(serv)o(er)i(and)e(client)i
(byte-order)h(match)d(and)h(puts)g(the)g(e)o(xtra)f(b)n(urden)0
3175 y(on)f(the)h(client)g(side)g(when)g(there)g(is)f(a)g(byte-order)j
(mismatch.)41 b(Putting)28 b(the)g(b)n(urden)h(on)e(the)h(client-side)i
(impro)o(v)o(es)e(the)0 3288 y(scalability)e(properties)h(of)c(this)h
(protocol.)0 3596 y Fm(5.2.9)99 b Fc(SANE)p 545 3596
30 4 v 35 w(NET)p 760 3596 V 35 w(CANCEL)0 3829 y Fq(RPC)22
b(Code:)29 b(8)0 4001 y(This)23 b(RPC)f(is)h(used)i(to)e(cancel)i(the)f
(current)h(operation)h(of)e(a)f(remote)h(SANE)d(de)n(vice.)1077
4241 y Fr(r)n(equest:)635 b(r)n(eply:)1077 4354 y Fp(SANE)p
1302 4354 28 4 v 30 w(Word)53 b(handle)97 b(SANE)p 2252
4354 V 31 w(Word)53 b(dummy)0 4592 y Fq(The)23 b Fp(handle)d
Fq(ar)n(gument)26 b(identi\002es)f(the)e(connection)k(whose)d
(operation)i(should)f(be)f(cancelled.)0 4763 y(In)j(the)g(reply)-6
b(,)28 b(the)f Fp(dummy)d Fq(ar)n(gument)29 b(is)e(unused.)40
b(Its)27 b(purpose)i(is)d(to)h(ensure)h(proper)h(synchronization)i
(\(without)e(it,)e(a)0 4876 y(net)d(client)h(w)o(ould)f(not)g(be)f
(able)h(to)g(determine)h(when)f(the)f(RPC)f(has)i(completed\).)1905
5381 y(42)p eop end
%%Page: 43 44
TeXDict begin 43 43 bop 0 123 a Fm(5.2.10)99 b Fc(SANE)p
595 123 30 4 v 35 w(NET)p 810 123 V 35 w(AUTHORIZE)0
356 y Fq(RPC)22 b(Code:)29 b(9)0 527 y(This)23 b(RPC)f(is)h(used)i(to)e
(pass)h(authorization)k(data)c(from)f(the)h(net)g(client)h(to)e(the)h
(net)g(serv)o(er)-5 b(.)967 768 y Fr(r)n(equest:)854
b(r)n(eply:)967 881 y Fp(SANE)p 1192 881 28 4 v 31 w(String)52
b(resource)96 b(SANE)p 2361 881 V 31 w(Word)53 b(dummy)967
994 y(SANE)p 1192 994 V 31 w(String)f(username)967 1107
y(SANE)p 1192 1107 V 31 w(String)g(password)0 1344 y
Fq(The)23 b Fp(resource)c Fq(ar)n(gument)26 b(speci\002es)e(the)g(name)
g(of)f(the)h(resource)i(to)d(be)h(authorized.)31 b(This)24
b(ar)n(gument)h(should)g(be)f(set)0 1457 y(to)d(the)h(string)h
(returned)g(in)f(the)f Fp(resource)c Fq(ar)n(gument)24
b(of)d(the)h(RPC)d(reply)j(that)g(required)i(this)e(authorization)j
(call.)k(The)0 1570 y Fp(username)17 b Fq(and)22 b Fp(password)17
b Fq(are)22 b(the)g(name)f(of)h(the)f(user)i(that)f(is)f(accessing)j
(the)e(resource)h(and)f(the)g(passw)o(ord)h(for)f(the)0
1683 y(speci\002ed)j(resource/user)i(pair)-5 b(.)0 1855
y(Since)28 b(the)h(passw)o(ord)h(is)e(not)g(encrypted)j(during)f(netw)o
(ork)f(transmission,)j(it)c(is)g(recommended)j(to)d(use)g(the)h(follo)n
(wing)0 1968 y(e)o(xtension:)0 2139 y(If)j(the)g(serv)o(er)h(adds)g
(the)f(string)h(`)p Fp($MD5$)p Fq(')d(to)i(the)g(resource-name)k(follo)
n(wed)d(by)f(a)f(random)i(string)h(not)e(longer)h(then)0
2252 y(128)24 b(bytes,)f(the)h(client)g(may)f(answer)g(with)g(the)g
(MD5)f(digest)j(of)e(the)g(concatenation)k(of)c(the)g(passw)o(ord)i
(and)e(the)g(random)0 2365 y(string.)31 b(T)-7 b(o)22
b(dif)n(ferentiate)27 b(between)e(the)f(MD5)f(digest)i(and)g(a)e
(strange)i(passw)o(ord)h(the)e(client)h(prepends)h(the)e(MD5)f(digest)0
2478 y(with)g(the)h(string)h(`)p Fp($MD5$)p Fq('.)0 2649
y(In)20 b(the)h(reply)-6 b(,)22 b Fp(dummy)17 b Fq(is)k(completely)h
(unused.)30 b(Note)20 b(that)h(there)g(is)g(no)f(direct)i(f)o(ailure)g
(indication.)30 b(This)20 b(is)h(unnecessary)0 2762 y(since)h(a)f(net)g
(client)h(will)f(retry)h(the)f(RPC)e(that)j(resulted)h(in)e(the)h
(authorization)j(request)d(until)g(that)g(call)g(succeeds)h(\(or)e
(until)0 2875 y(the)27 b(request)h(is)e(cancelled\).)39
b(The)26 b(RPC)e(that)j(resulted)i(in)d(the)g(authorization)k(request)f
(continues)f(after)f(the)g(reply)g(from)0 2988 y(the)d(client)h(and)f
(may)f(f)o(ail)h(with)f Fp(SANE)p 1244 2988 V 31 w(STATUS)p
1605 2988 V 30 w(ACCESS)p 1965 2988 V 30 w(DENIED)p Fq(.)0
3296 y Fm(5.2.11)99 b Fc(SANE)p 595 3296 30 4 v 35 w(NET)p
810 3296 V 35 w(EXIT)0 3529 y Fq(RPC)22 b(Code:)29 b(10)0
3701 y(This)f(RPC)f(is)i(used)g(to)g(disconnect)i(a)e(net)g(client)g
(from)g(a)f(net)h(serv)o(er)-5 b(.)45 b(There)29 b(are)g(no)g(request)h
(or)f(reply)g(ar)n(guments)i(in)0 3814 y(this)23 b(call.)29
b(As)21 b(a)h(result)i(of)e(this)h(call,)g(the)g(connection)i(between)f
(the)e(client)i(and)f(the)f(serv)o(er)i(that)f(w)o(as)f(established)j
(by)e(the)0 3927 y Fp(SANE)p 225 3927 28 4 v 31 w(NET)p
421 3927 V 31 w(INIT)e Fq(call)j(will)f(be)h(closed.)1905
5381 y(43)p eop end
%%Page: 44 45
TeXDict begin 44 44 bop 0 804 a Fo(Chapter)44 b(6)0 1278
y Fs(Contact)51 b(Inf)-5 b(ormation)0 1782 y Fq(The)25
b(SANE)e(standard)28 b(is)d(discussed)j(and)f(e)n(v)n(olv)o(ed)g(via)e
(a)h(mailing)g(list.)35 b(An)o(ybody)27 b(with)e(email)h(access)h(to)e
(the)h(Internet)0 1895 y(can)e(automatically)j(join)d(and)g(lea)n(v)o
(e)g(the)g(discussion)i(group)f(by)f(sending)h(mail)f(to)f(the)h(follo)
n(wing)h(address.)227 2141 y Fp(sane-devel-requ)o(est)o(@l)o(is)o(ts)o
(.a)o(lio)o(th)o(.d)o(eb)o(ia)o(n.o)o(rg)0 2387 y Fq(T)-7
b(o)22 b(subscribe,)k(send)f(a)e(mail)g(with)g(the)h(body)h(\223)p
Fp(subscribe)51 b(sane-devel)p Fq(\224)18 b(to)24 b(the)f(abo)o(v)o(e)i
(address.)0 2559 y(A)e(complete)j(list)e(of)g(commands)i(supported)h
(can)d(be)h(obtained)h(by)e(sending)j(a)c(mail)i(with)f(a)f(subject)j
(of)e(\223)p Fp(help)p Fq(\224)f(to)h(the)0 2672 y(abo)o(v)o(e)g
(address.)31 b(The)23 b(mailing)h(list)g(is)g(archi)n(v)o(ed)h(and)f(a)
n(v)n(ailable)h(through)h(the)e(SANE)d(home)j(page)g(at)f(URL:)227
2918 y Fp(http://www.sane)o(-pr)o(oj)o(ec)o(t.)o(or)o(g/)1905
5381 y Fq(44)p eop end
%%Page: 45 46
TeXDict begin 45 45 bop 0 586 a Fs(Index)0 1012 y Fq(array)-6
b(,)24 b(36)0 1208 y(br)n(-x,)g(33)0 1321 y(br)n(-y)-6
b(,)24 b(33)0 1517 y(code)g(\003o)n(w)-6 b(,)22 b(30)0
1713 y(de)n(vice-name,)k(16)0 1825 y(domain,)e(22)0 2021
y(enumeration)i(types,)f(35)0 2217 y(image)f(data)g(format,)g(8)0
2413 y(mailing)h(list,)e(42)0 2609 y(netw)o(ork)i(authorization,)i(41)0
2722 y(NUL,)21 b(14)0 2918 y(option)k(count,)g(32)0 3031
y(Option)p 256 3031 28 4 v 34 w(Descriptor)p 671 3031
V 36 w(Array)-6 b(,)23 b(38)0 3227 y(passw)o(ord,)i(22)0
3340 y(pointer)l(,)g(35)0 3453 y(pre)n(vie)n(w)f(mode,)f(32)0
3649 y(resolution)j(option,)f(32)0 3845 y(SANE)p 244
3845 V 31 w(Action,)f(24)0 3957 y(SANE)p 244 3957 V 31
w(A)l(CTION)p 616 3957 V 32 w(GET)p 826 3957 V 31 w(V)-12
b(ALUE,)20 b(24)0 4070 y(SANE)p 244 4070 V 31 w(A)l(CTION)p
616 4070 V 32 w(SET)p 811 4070 V 31 w(A)-5 b(UT)n(O,)21
b(24)0 4183 y(SANE)p 244 4183 V 31 w(A)l(CTION)p 616
4183 V 32 w(SET)p 811 4183 V 31 w(V)-12 b(ALUE,)20 b(24)0
4296 y(SANE)p 244 4296 V 31 w(Authorization)p 776 4296
V 37 w(Callback,)k(22)0 4409 y(SANE)p 244 4409 V 31 w(Bool,)f(13)0
4522 y(SANE)p 244 4522 V 31 w(Byte,)g(12,)h(35)0 4635
y(sane)p 165 4635 V 34 w(cancel,)h(28)0 4748 y(SANE)p
244 4748 V 31 w(CAP)p 453 4748 V 32 w(AD)l(V)-12 b(ANCED,)19
b(20)0 4861 y(SANE)p 244 4861 V 31 w(CAP)p 453 4861 V
32 w(A)-5 b(UT)n(OMA)-10 b(TIC,)20 b(20)0 4974 y(SANE)p
244 4974 V 31 w(CAP)p 453 4974 V 32 w(EMULA)-10 b(TED,)19
b(20)0 5087 y(SANE)p 244 5087 V 31 w(CAP)p 453 5087 V
32 w(HARD)p 744 5087 V 31 w(SELECT)-7 b(,)20 b(20)1992
1012 y(SANE)p 2236 1012 V 31 w(CAP)p 2445 1012 V 31 w(IN)m(A)l(CTIVE,)h
(20)1992 1125 y(SANE)p 2236 1125 V 31 w(CAP)p 2445 1125
V 31 w(SOFT)p 2700 1125 V 31 w(DETECT)-7 b(,)20 b(20)1992
1238 y(SANE)p 2236 1238 V 31 w(CAP)p 2445 1238 V 31 w(SOFT)p
2700 1238 V 31 w(SELECT)-7 b(,)20 b(20)1992 1351 y(SANE)p
2236 1351 V 31 w(Char)l(,)j(14,)h(35)1992 1463 y(sane)p
2157 1463 V 34 w(close,)g(23)1992 1576 y(SANE)p 2236
1576 V 31 w(CONSTRAINT)p 2846 1576 V 29 w(NONE,)d(21)1992
1689 y(SANE)p 2236 1689 V 31 w(CONSTRAINT)p 2846 1689
V 29 w(RANGE,)g(21)1992 1802 y(SANE)p 2236 1802 V 31
w(CONSTRAINT)p 2846 1802 V 29 w(STRING)p 3205 1802 V
31 w(LIST)-7 b(,)22 b(21)1992 1915 y(SANE)p 2236 1915
V 31 w(Constraint)p 2643 1915 V 35 w(T)-7 b(ype,)23 b(19)1992
2028 y(SANE)p 2236 2028 V 31 w(CONSTRAINT)p 2846 2028
V 29 w(W)o(ORD)p 3153 2028 V 32 w(LIST)-7 b(,)21 b(21)1992
2141 y(sane)p 2157 2141 V 34 w(control)p 2446 2141 V
35 w(option,)k(24)1992 2254 y(SANE)p 2236 2254 V 31 w(CURRENT)p
2694 2254 V 30 w(MAJOR,)c(11)1992 2367 y(SANE)p 2236
2367 V 31 w(De)n(vice,)i(15)1992 2480 y(sane)p 2157 2480
V 34 w(e)o(xit,)g(22)1992 2593 y(SANE)p 2236 2593 V 31
w(F)-7 b(ALSE,)20 b(13)1992 2705 y(SANE)p 2236 2705 V
31 w(FIX,)i(14)1992 2818 y(SANE)p 2236 2818 V 31 w(Fix)o(ed,)h(13)1992
2931 y(SANE)p 2236 2931 V 31 w(FIXED)p 2536 2931 V 31
w(SCALE)p 2857 2931 V 31 w(SHIFT)-7 b(,)21 b(13)1992
3044 y(SANE)p 2236 3044 V 31 w(Frame,)h(26)1992 3157
y(SANE)p 2236 3157 V 31 w(FRAME)p 2582 3157 V 31 w(BLUE,)e(10,)k(26)
1992 3270 y(SANE)p 2236 3270 V 31 w(FRAME)p 2582 3270
V 31 w(GRA)-10 b(Y)e(,)21 b(9,)i(26)1992 3383 y(SANE)p
2236 3383 V 31 w(FRAME)p 2582 3383 V 31 w(GREEN,)d(10,)j(26)1992
3496 y(SANE)p 2236 3496 V 31 w(FRAME)p 2582 3496 V 31
w(RED,)e(10,)i(26)1992 3609 y(SANE)p 2236 3609 V 31 w(FRAME)p
2582 3609 V 31 w(RGB,)e(9,)i(26)1992 3722 y(sane)p 2157
3722 V 34 w(get)p 2301 3722 V 34 w(de)n(vices,)h(23)1992
3835 y(sane)p 2157 3835 V 34 w(get)p 2301 3835 V 34 w(option)p
2565 3835 V 35 w(descriptor)l(,)i(24)1992 3948 y(sane)p
2157 3948 V 34 w(get)p 2301 3948 V 34 w(parameters,)f(26)1992
4060 y(sane)p 2157 4060 V 34 w(get)p 2301 4060 V 34 w(select)p
2540 4060 V 34 w(fd,)f(29)1992 4173 y(SANE)p 2236 4173
V 31 w(Handle,)g(15,)f(35)1992 4286 y(SANE)p 2236 4286
V 31 w(INFO)p 2480 4286 V 31 w(INEXA)l(CT)-7 b(,)21 b(25)1992
4399 y(SANE)p 2236 4399 V 31 w(INFO)p 2480 4399 V 31
w(RELO)m(AD)p 2879 4399 V 31 w(OPTIONS,)f(25,)j(27)1992
4512 y(SANE)p 2236 4512 V 31 w(INFO)p 2480 4512 V 31
w(RELO)m(AD)p 2879 4512 V 31 w(P)-8 b(ARAMS,)20 b(25)1992
4625 y(sane)p 2157 4625 V 34 w(init,)k(22)1992 4738 y(SANE)p
2236 4738 V 31 w(Int,)f(13)1992 4851 y(SANE)p 2236 4851
V 31 w(NET)p 2445 4851 V 31 w(A)-5 b(UTHORIZE,)20 b(41)1992
4964 y(SANE)p 2236 4964 V 31 w(NET)p 2445 4964 V 31 w(CANCEL,)g(40)1992
5077 y(SANE)p 2236 5077 V 31 w(NET)p 2445 5077 V 31 w(CLOSE,)g(38)1905
5381 y(45)p eop end
%%Page: 46 47
TeXDict begin 46 46 bop 0 123 a Fq(SANE)p 244 123 28
4 v 31 w(NET)p 453 123 V 32 w(CONTR)l(OL)p 913 123 V
30 w(OPTION,)21 b(38)0 236 y(SANE)p 244 236 V 31 w(NET)p
453 236 V 32 w(EXIT)-7 b(,)21 b(41)0 349 y(SANE)p 244
349 V 31 w(NET)p 453 349 V 32 w(GET)p 663 349 V 31 w(DEVICES,)f(37)0
462 y(SANE)p 244 462 V 31 w(NET)p 453 462 V 32 w(GET)p
663 462 V 31 w(OPTION)p 1029 462 V 31 w(DESCRIPT)n(ORS,)f(38)0
574 y(SANE)p 244 574 V 31 w(NET)p 453 574 V 32 w(GET)p
663 574 V 31 w(P)-8 b(ARAMETERS,)18 b(39)0 687 y(SANE)p
244 687 V 31 w(NET)p 453 687 V 32 w(INIT)-7 b(,)22 b(36)0
800 y(SANE)p 244 800 V 31 w(NET)p 453 800 V 32 w(OPEN,)e(37)0
913 y(SANE)p 244 913 V 31 w(NET)p 453 913 V 32 w(ST)-8
b(AR)j(T)e(,)19 b(39)0 1026 y(sane)p 165 1026 V 34 w(open,)24
b(23)0 1139 y(SANE)p 244 1139 V 31 w(Option)p 526 1139
V 34 w(Descriptor)l(,)i(17)0 1252 y(SANE)p 244 1252 V
31 w(OPTION)p 610 1252 V 31 w(IS)p 722 1252 V 33 w(A)l(CTIVE,)21
b(19)0 1365 y(SANE)p 244 1365 V 31 w(OPTION)p 610 1365
V 31 w(IS)p 722 1365 V 33 w(SETT)-8 b(ABLE,)18 b(19)0
1478 y(SANE)p 244 1478 V 31 w(P)o(arameters,)24 b(26)0
1591 y(SANE)p 244 1591 V 31 w(Range,)g(21)0 1704 y(sane)p
165 1704 V 34 w(read,)g(28)0 1817 y(sane)p 165 1817 V
34 w(set)p 299 1817 V 34 w(io)p 403 1817 V 33 w(mode,)g(29)0
1929 y(sane)p 165 1929 V 34 w(start,)g(27)0 2042 y(SANE)p
244 2042 V 31 w(Status,)g(15)0 2155 y(SANE)p 244 2155
V 31 w(ST)-8 b(A)e(TUS)p 603 2155 V 30 w(A)l(CCESS)p
975 2155 V 30 w(DENIED,)21 b(15)0 2268 y(SANE)p 244 2268
V 31 w(ST)-8 b(A)e(TUS)p 603 2268 V 30 w(CANCELLED,)19
b(15)0 2381 y(SANE)p 244 2381 V 31 w(ST)-8 b(A)e(TUS)p
603 2381 V 30 w(CO)-5 b(VER)p 938 2381 V 31 w(OPEN,)21
b(15)0 2494 y(SANE)p 244 2494 V 31 w(ST)-8 b(A)e(TUS)p
603 2494 V 30 w(DEVICE)p 968 2494 V 31 w(B)o(USY)e(,)21
b(15)0 2607 y(SANE)p 244 2607 V 31 w(ST)-8 b(A)e(TUS)p
603 2607 V 30 w(EOF)j(,)21 b(15)0 2720 y(SANE)p 244 2720
V 31 w(ST)-8 b(A)e(TUS)p 603 2720 V 30 w(GOOD,)21 b(15,)i(22)0
2833 y(SANE)p 244 2833 V 31 w(ST)-8 b(A)e(TUS)p 603 2833
V 30 w(INV)e(AL,)21 b(15)0 2946 y(SANE)p 244 2946 V 31
w(ST)-8 b(A)e(TUS)p 603 2946 V 30 w(IO)p 729 2946 V 32
w(ERR)l(OR,)21 b(15)0 3059 y(SANE)p 244 3059 V 31 w(ST)-8
b(A)e(TUS)p 603 3059 V 30 w(J)-5 b(AMMED,)21 b(15)0 3171
y(SANE)p 244 3171 V 31 w(ST)-8 b(A)e(TUS)p 603 3171 V
30 w(NO)p 765 3171 V 32 w(DOCS,)21 b(15)0 3284 y(SANE)p
244 3284 V 31 w(ST)-8 b(A)e(TUS)p 603 3284 V 30 w(NO)p
765 3284 V 32 w(MEM,)21 b(15)0 3397 y(SANE)p 244 3397
V 31 w(ST)-8 b(A)e(TUS)p 603 3397 V 30 w(UNSUPPOR)-5
b(TED,)17 b(15)0 3510 y(SANE)p 244 3510 V 31 w(String,)24
b(14,)f(35)0 3623 y(SANE)p 244 3623 V 31 w(String)p 496
3623 V 34 w(Const,)h(14)0 3736 y(sane)p 165 3736 V 34
w(strstatus,)i(30)0 3849 y(SANE)p 244 3849 V 31 w(TR)l(UE,)21
b(13)0 3962 y(SANE)p 244 3962 V 31 w(TYPE)p 504 3962
V 31 w(BOOL,)g(18)0 4075 y(SANE)p 244 4075 V 31 w(TYPE)p
504 4075 V 31 w(B)o(UTT)n(ON,)g(18)0 4188 y(SANE)p 244
4188 V 31 w(TYPE)p 504 4188 V 31 w(FIXED,)g(18)0 4301
y(SANE)p 244 4301 V 31 w(TYPE)p 504 4301 V 31 w(GR)l(OUP)-10
b(,)21 b(18)0 4413 y(SANE)p 244 4413 V 31 w(TYPE)p 504
4413 V 31 w(INT)-7 b(,)22 b(18)0 4526 y(SANE)p 244 4526
V 31 w(TYPE)p 504 4526 V 31 w(STRING,)f(18)0 4639 y(SANE)p
244 4639 V 31 w(Unit,)i(18)0 4752 y(SANE)p 244 4752 V
31 w(UNFIX,)e(14)0 4865 y(SANE)p 244 4865 V 31 w(UNIT)p
493 4865 V 32 w(BIT)-7 b(,)22 b(18)0 4978 y(SANE)p 244
4978 V 31 w(UNIT)p 493 4978 V 32 w(DPI,)g(18)0 5091 y(SANE)p
244 5091 V 31 w(UNIT)p 493 5091 V 32 w(MICR)l(OSECOND,)d(18)1992
123 y(SANE)p 2236 123 V 31 w(UNIT)p 2485 123 V 31 w(MM,)k(18)1992
236 y(SANE)p 2236 236 V 31 w(UNIT)p 2485 236 V 31 w(NONE,)e(18)1992
349 y(SANE)p 2236 349 V 31 w(UNIT)p 2485 349 V 31 w(PERCENT)-7
b(,)20 b(18)1992 462 y(SANE)p 2236 462 V 31 w(UNIT)p
2485 462 V 31 w(PIXEL,)h(18)1992 574 y(SANE)p 2236 574
V 31 w(V)-10 b(alue)p 2473 574 V 33 w(T)j(ype,)23 b(18)1992
687 y(SANE)p 2236 687 V 31 w(VERSION)p 2663 687 V 30
w(CODE,)e(12)1992 800 y(SANE)p 2236 800 V 31 w(VERSION)p
2663 800 V 30 w(MAJOR,)h(12)1992 913 y(SANE)p 2236 913
V 31 w(W)-7 b(ord,)23 b(12,)g(35)1992 1026 y(scan)h(area)g(options,)h
(32)1992 1139 y(scan)f(resolution,)i(32)1992 1252 y(structure,)f(36)
1992 1448 y(tl-x,)e(33)1992 1561 y(tl-y)-6 b(,)23 b(33)1992
1674 y(T)-7 b(ype)23 b(Strings,)h(16)1992 1870 y(union,)g(36)1992
1983 y(username,)g(22)1992 2178 y(V)-10 b(endor)24 b(Strings,)g(16)1992
2374 y(well-kno)n(wn)g(options,)h(31)1905 5381 y(46)p
eop end
%%Trailer
userdict /end-hook known{end-hook}if
%%EOF