[sane-devel] hp5590: Scan aborts when using default page size
olaf.meeuwissen at avasys.jp
Thu May 29 23:25:29 UTC 2014
Rainer Keller writes:
>> The SANE API only provides for SANE_UNIT_MM for lengths. Just looking
>> at your patch, the *original* code seems to be correct. The real bug is
>> somewhere else in the hp5590 backend.
> Ok, thanks for the hint.
> Given that all lengths are in millimeters, isn't multiplying mm with dpi wrong
> then? In this backend there are some places where this happens:
> e.g. backend/hp5590.c:1053
> scanner->tl_x * scanner->dpi,
> scanner->tl_y * scanner->dpi,
> (scanner->br_x - scanner->tl_x) * scanner->dpi,
> (scanner->br_y - scanner->tl_y) * scanner->dpi,
OK, so I had a look at hp5590.c rather than just your patch. Looks like
your patch was good after all.
I'd rashly assumed that the backend kept the values of scanner->tl_x and
friends in the same units as the SANE API spec provides. Turns out that
that is *not* the case. It keeps these in inches throughout the code so
the calculation you quote above are fine. The backend's SANE options
convert from and to SANE_UNIT_MM (in sane_control_option) when accessing
these values so the backend user only sees SANE_UNIT_MM values.
The range_x and range_y values are part of the SANE option and have to
be defined in SANE_UNIT_MM. This discrepancy threw me off, and did the
same with however implemented the ADF support apparently ;-|
Hope this helps (and sorry for the confusion),
Olaf Meeuwissen, LPIC-2 FLOSS Engineer -- AVASYS CORPORATION
FSF Associate Member #1962 Help support software freedom
More information about the sane-devel