Rainer Keller writes: > Hi, > > when doing a scan from ADF with default page size it will abort with an error: > >> scanimage --mode=Color --resolution=300 --source=ADF --verbose >/tmp/foo.pnm >> >> [hp5590] Top Y (0) + pixels Y (106680) exceedes max Y 4200 >> scanimage: sane_start: Invalid argument > > After some debugging I could solve this by changing the br_x and br_y default > values from millimeters to inches. For me it seems it this is the expected > unit for these. It would be nice if someone could confirm this. > > Using the attached patch it works:
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. Also, the range_x.max and range_y.max code still convert inches to mm. >> scanimage --mode=Color --resolution=300 --source=ADF --verbose >/tmp/foo.pnm >> scanimage: scanning image of size 2550x4200 pixels at 24 bits/pixel >> scanimage: acquiring RGB frame >> scanimage: min/max graylevel value = 0/255 >> scanimage: read 32130000 bytes in total > > Regards, > > Rainer > > > From 392b0e48582338517888153a9ee4a213183c24de Mon Sep 17 00:00:00 2001 > From: Rainer Keller <[email protected]> > Date: Sat, 24 May 2014 20:15:02 +0200 > Subject: [PATCH] hp5590: br_x and br_y have to be in inches > > --- > backend/hp5590.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/backend/hp5590.c b/backend/hp5590.c > index 8db3d5e..19c7471 100644 > --- a/backend/hp5590.c > +++ b/backend/hp5590.c > @@ -859,14 +859,14 @@ sane_control_option (SANE_Handle handle, SANE_Int > option, > range_x.max = SANE_FIX(scanner->info->max_size_x * 25.4); > range_y.max = SANE_FIX(ADF_MAX_Y_INCHES * 25.4); > scanner->br_x = scanner->info->max_size_x; > - scanner->br_y = ADF_MAX_Y_INCHES * 25.4; > + scanner->br_y = ADF_MAX_Y_INCHES; > } > if (strcmp ((char *) value, (char *) > SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX) == 0) > { > scanner->source = SOURCE_ADF_DUPLEX; > range_x.max = SANE_FIX(scanner->info->max_size_x * 25.4); > range_y.max = SANE_FIX(ADF_MAX_Y_INCHES * 25.4 * 2); > - scanner->br_y = ADF_MAX_Y_INCHES * 25.4 * 2; > + scanner->br_y = ADF_MAX_Y_INCHES * 2; > scanner->br_x = scanner->info->max_size_x; > } > if (strcmp ((char *) value, (char *) > SANE_VALUE_SCAN_SOURCE_TMA_SLIDES) == 0) > @@ -874,16 +874,16 @@ sane_control_option (SANE_Handle handle, SANE_Int > option, > scanner->source = SOURCE_TMA_SLIDES; > range_x.max = SANE_FIX(TMA_MAX_X_INCHES * 25.4); > range_y.max = SANE_FIX(TMA_MAX_Y_INCHES * 25.4); > - scanner->br_x = TMA_MAX_X_INCHES * 25.4; > - scanner->br_y = TMA_MAX_Y_INCHES * 25.4; > + scanner->br_x = TMA_MAX_X_INCHES; > + scanner->br_y = TMA_MAX_Y_INCHES; > } > if (strcmp ((char *) value, (char *) > SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES) == 0) > { > scanner->source = SOURCE_TMA_NEGATIVES; > range_x.max = SANE_FIX(TMA_MAX_X_INCHES * 25.4); > range_y.max = SANE_FIX(TMA_MAX_Y_INCHES * 25.4); > - scanner->br_x = TMA_MAX_X_INCHES * 25.4; > - scanner->br_y = TMA_MAX_Y_INCHES * 25.4; > + scanner->br_x = TMA_MAX_X_INCHES; > + scanner->br_y = TMA_MAX_Y_INCHES; > } > if (info) > *info = SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS; > -- > 1.8.5.5 Hope this helps, -- Olaf Meeuwissen, LPIC-2 FLOSS Engineer -- AVASYS CORPORATION FSF Associate Member #1962 Help support software freedom http://www.fsf.org/jf?referrer=1962 -- sane-devel mailing list: [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel Unsubscribe: Send mail with subject "unsubscribe your_password" to [email protected]
