# Contents

1`` Preface
| 1.1`` About This Document
|  | 1.1.1`` Typographic Conventions
2`` Introduction
| 2.1`` Terminology
3`` The SANE Environment
| 3.1`` Attaching to a SANE backend
| 3.2`` Image Data Format
|  | 3.2.1`` Pixel oriented frames
|  | 3.2.2`` Arbitrary data frames
4`` The SANE Application Programmer Interface (API)
| 4.1`` Version Control
| 4.2`` Data Types
|  | 4.2.1`` Base Types
|  | 4.2.2`` Boolean Type
|  | 4.2.3`` Integer Type
|  | 4.2.4`` Fixed-point Type
|  | 4.2.5`` Text
|  |  | 4.2.5.1`` Character Type
|  |  | 4.2.5.2`` String Type
|  | 4.2.6`` Scanner Handle Type
|  | 4.2.7`` Status Type
|  | 4.2.8`` Device Descriptor Type
|  | 4.2.9`` Option Descriptor Type
|  |  | 4.2.9.1`` Option Name
|  |  | 4.2.9.2`` Option Title
|  |  | 4.2.9.3`` Option Description
|  |  | 4.2.9.4`` Option Value Type
|  |  | 4.2.9.5`` Option Value Unit
|  |  | 4.2.9.6`` Option Value Size
|  |  | 4.2.9.7`` Option Capabilities
|  |  | 4.2.9.8`` Option Value Constraints
|  | 4.2.10`` Internationalization
|  |  | 4.2.10.1`` How is a text marked for translation
|  |  | 4.2.10.2`` Which texts shall be marked for translation?
|  |  | 4.2.10.3`` File formats and translation functions
| 4.3`` Operations
|  | 4.3.1`` `sane_init`
|  | 4.3.2`` `sane_exit`
|  | 4.3.3`` `sane_get_devices`
|  | 4.3.4`` `sane_open`
|  | 4.3.5`` `sane_close`
|  | 4.3.6`` `sane_get_option_descriptor`
|  | 4.3.7`` `sane_control_option`
|  | 4.3.8`` `sane_get_parameters`
|  | 4.3.9`` `sane_start`
|  | 4.3.10`` `sane_read`
|  | 4.3.11`` `sane_cancel`
|  | 4.3.12`` `sane_set_io_mode`
|  | 4.3.13`` `sane_get_select_fd`
|  | 4.3.14`` `sane_strstatus`
| 4.4`` Code Flow
| 4.5`` Well-Known Options
|  | 4.5.1`` Option Number Count
|  | 4.5.2`` Scan Resolution Options
|  | 4.5.3`` Preview Mode Option
|  | 4.5.4`` Scan Area Options
|  | 4.5.5`` Depth Option
|  | 4.5.6`` Scan Mode Options
|  | 4.5.7`` Scan Source Options
|  | 4.5.8`` Threshold Option
|  | 4.5.9`` Gamma Table Options
|  | 4.5.10`` Analog Gamma
|  | 4.5.11`` Shadow Option
|  | 4.5.12`` Highlight Option
|  | 4.5.13`` Lamp Options
|  | 4.5.14`` Scanner Button Options
|  | 4.5.15`` Batch Scan Options
5`` Network Protocol
| 5.1`` Data Type Encoding
|  | 5.1.1`` Primitive Data Types
|  | 5.1.2`` Type Constructors
| 5.2`` Remote Procedure Call Requests
|  | 5.2.1`` `SANE_NET_INIT`
|  | 5.2.2`` `SANE_NET_GET_DEVICES`
|  | 5.2.3`` `SANE_NET_OPEN`
|  | 5.2.4`` `SANE_NET_CLOSE`
|  | 5.2.5`` `SANE_NET_GET_OPTION_DESCRIPTORS`
|  | 5.2.6`` `SANE_NET_CONTROL_OPTION`
|  | 5.2.7`` `SANE_NET_GET_PARAMETERS`
|  | 5.2.8`` `SANE_NET_START`
|  | 5.2.9`` `SANE_NET_CANCEL`
|  | 5.2.10`` `SANE_NET_AUTHORIZE`
|  | 5.2.11`` `SANE_NET_EXIT`
6`` Contact Information

# List of Figures

1 | Example SANE Hiearchy
2 | Transfer order of image data bytes
3 | Bit and byte order of image data
4 | Code flow
5 | Scan area options

# List of Tables

1 | Status Codes
2 | Predefined Device Information Strings
3 | Option Value Types (`SANE_Value_Type`)
4 | Physical Units (`SANE_Unit`)
5 | Option Capabilities
6 | Option Value Constraints
7 | Action Values (`SANE_Action`)
8 | Additional Information Returned When Setting an Option
9 | Frame Format (`SANE_Frame`)