Patches to sane.py and _sanemodule.c (was: Re: [Image-SIG] Sane: Problems in setting color mode)

abel deuring a.deuring@satzbau-gmbh.de
Sun, 29 Sep 2002 17:54:32 +0200


This is a multi-part message in MIME format.
--------------010007090307030301080302
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

abel deuring wrote:

> Anyway, attached are patches to sane.py and _sanemodule.c which fix some 
>  problems of the current Sane interface:
> 
> - RGB scans (1 pass and 3 pass) are now working again
> - a backend may now return padding bytes at the end of a scan line
> - somewhat better Sane error handling
> - sane.py now reloads the option paramters, if a call to
>   sane_control_option returns SANE_INFO_RELOAD_OPTIONS.
> 
> These issues are still unresolved;
> 
> - support for 1 bit and 16 bit scan data
> - handscanner support. I am not sure, if it is worth the effort to
>   support handscanners. But sane.snap and/or sane.start should at least
>   return an error, if "hand scanner behaviour" (i.e.,
>   sane_get_parameters sets the number of scan lines to -1) can be
>   detected.
> - array options (e.g. gamma tables) are not supported.


so, here is another version of _sanemodule.c. It supports 1/8/16 bit 
scans and 3 pass RGB scans.

Abel

--------------010007090307030301080302
Content-Type: application/x-gunzip;
 name="_sanemodule.c.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="_sanemodule.c.gz"

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
--------------010007090307030301080302--