NAME

Graphics::SANE - Perl extension for the Sane scanner access library.

SYNOPSIS

use Graphics::SANE;

# initialize the Sane library
$version_info = Graphics::SANE::init;

# get a list of devices
@devices = Graphics::SANE::device_list;

# open a scanner
$handle = Graphics::SANE::open($scanner_name);

# retrieve the number of defined options
$cnt = $handle->get_option_value(0);

# get option descriptors and values, set new values
for $i (1..$cnt-1) {
   $optdesc = $handle->get_option_descriptor($i);
   $value = $handle->get_option_value($i);
   $status = $handle->set_option_value($i,$newvalue);
}

# start scanning
$handle->start;

# get data format information
$p = $handle->get_parameters;

# read data and write to a file
open $fh,">","filename";
while ($b = $handle->read($p->{bytes_per_line})) {
   print $fh $b;
}
print $Graphics::SANE::errstr
    unless $Graphics::SANE::err == Graphics::SANE::SANE_STATUS_EOF;
close $fh;

# finish reading data
$handle->cancel;

# close the scanner
$handle->close();

# finish using the Sane library
Graphics::SANE::exit;

DESCRIPTION

The Sane module provides access to the Sane scanner access library.

EXPORT

None by default.

Exportable constants

SANE_STATUS_ACCESS_DENIED
SANE_STATUS_CANCELLED
SANE_STATUS_COVER_OPEN
SANE_STATUS_DEVICE_BUSY
SANE_STATUS_EOF
SANE_STATUS_GOOD
SANE_STATUS_INVAL
SANE_STATUS_IO_ERROR
SANE_STATUS_JAMMED
SANE_STATUS_NO_DOCS
SANE_STATUS_NO_MEM
SANE_STATUS_UNSUPPORTED

methods

init

The init routine initializes the Sane library and returns backend version information. It returns a hashref containing the attributes "major", "minor", and "build".

exit

This routine frees up resources in the Sane library.

get_devices

Returns a list of hashrefs describing available scanner devices. Each hashref contains the attributes "name", "vendor", "model" and "type". The "name" attribute can be passed to open to access the device.

open("name")

Accepts a device name and returns a handle. The handle is an object blessed into the Graphics::SANE::Handle package.

Graphics::SANE::Handle methods

These methods are valid for Graphics::SANE::Handle objects.

get_option_description(index)

Accepts an option index and returns a descriptor for the option. The descriptor is a hashref containing the following attributes.

index

The option's index.

name

The name of the option. This may be blank.

title

The title of the option. This can be used as a prompt or as a label for a control in a graphical interface.

desc

A description for the option.

unit

Describes the unit for the option. This is one of "none", "pixel", "bit", "mm", "dpi", "percent", or "microsecond".

type

Describes the data type of the option. This is one of "bool", "int", "fixed", "string", "button", or "group".

size

The size of the option's value.

soft_select

A boolean indicating that the option is software selectable.

hard_select

A boolean indicating that the option is selectable by a hardware control.

emulated

A boolean indicating that the backend emulates this setting.

automatic

A boolean indicating that the option has been set to automatic.

inactive

A boolean indicating that the option is inactive due to other settings.

advanced

A boolean indicating that the item should be considered an advanced control.

constraint

A string describing how the option's value is constrained. May be "none", "range", "word_list", or "string_list".

min

The minimum value of the control. This attribute only appears if the constraint is "range".

max

The maximum value of the control. This attribute only appears if the constraint is "range".

quant

The unit of increment between min and max. This attribute only appears if the constraint type is "range".

word_list

A list of valid numeric values for the option. This attribute only appears if the constraint is "word_list".

string_list

A list of valid string values for the option. This attribute only appears if the constraint is "string_list".

get_option_value(index)

Accepts an index and returns the value for the option with that index.

set_option_value(index,value)

Accepts an index and a value. Sets the value of the option with that index. The returned value will be a hashref containing three booleans. If "INEXACT" is true, it means the backend could not use the supplied value exactly and an approximate value was used. If "RELOAD_OPTIONS" is true, some other options may have changed their active states and should be requeried. If "RELOAD_PARAMS" is true, the values that would be returned by get_params may have changed.

start

Begins the scan operation.

get_parameters

Returns a hashref containing information about the graphics image that would be returned by the backend. The hash contains the following values:

format

Describes the image format. This will be one of "gray", "rgb", "red", "green", or "blue".

last_frame

This will be set true if the current frame of data being read will be the last.

lines

Returns the number of lines of graphics information in the image.

depth

Returns the bit depth of the image.

pixels_per_line

Returns the number of pixels in a line of image data.

bytes_per_line

Returns the number of bytes in a line of image data.

read(int)

Accepts the number of bytes to read. Reads up to the requested length in bytes from the device and returns the data read.

cancel

Tells the backend that the application is finished reading data from the device.

close

Closes the device.

ERRORS

All of the routines check the status returned by the Sane library routine. If the call is successful, the routine will return the information described above or a true value. If an error occurs, the routine will store the status code in the package variable $Graphics::SANE::err and will store the string translation of the code in $Graphics::SANE::errstr.

SEE ALSO

Sane information is available at the Sane project's website http://www.sane-project.org/.

AUTHOR

Thomas Pfau, <pfau@nbpfaus.net>

COPYRIGHT AND LICENSE

Copyright (C) 2008 by Thomas Pfau

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 271:

'=item' outside of any '=over'

Around line 339:

You forgot a '=back' before '=head1'