> I see. I don't like counting starting by 0 :-)
> This seems to be only relevant for SANE_TYPE_INT. What about this one:
> 
> Index: frontend/scanimage.c
> ===================================================================
> RCS file: /cvsroot/external/sane/sane-backends/frontend/scanimage.c,v
> retrieving revision 1.25
> diff -u -u -r1.25 scanimage.c
> --- scanimage.c       2002/04/27 09:40:21     1.25
> +++ scanimage.c       2002/04/27 21:03:30
> @@ -390,8 +390,13 @@
>       case SANE_CONSTRAINT_RANGE:
>         if (opt->type == SANE_TYPE_INT)
>           {
> -           printf ("%d..%d",
> -                   opt->constraint.range->min, opt->constraint.range->max);
> +           if (opt_num == window[0] || opt_num == window[1])
> +             /* width and height */
> +             printf ("%d..%d", opt->constraint.range->min,
> +                     opt->constraint.range->max + 1);
> +           else
> +             printf ("%d..%d", opt->constraint.range->min,
> +                     opt->constraint.range->max);
>             print_unit (opt->unit);
>             if (opt->size > (SANE_Int) sizeof (SANE_Word))
>               fputs (",...", stdout);
> @@ -457,7 +462,10 @@
>             break;

Looks good so far, but seems to be rather a dirty hack... also, as you
mentioned, this only works for quant=1.

>           case SANE_TYPE_INT:
> -           printf ("%d", *(SANE_Int *) val);
> +           if (opt_num == window[0] || opt_num == window[1])
> +             printf ("%d", (*(SANE_Int *) val) + 1);
> +           else
> +             printf ("%d", *(SANE_Int *) val);
>             break;
>  
>           case SANE_TYPE_FIXED:

I don't think this is right. The whole point is that the range given
by scanimage -h differs from what it will eventually accept. For 1000
CCD pixels, I can give a width of 1000 (and it will scan 1000) even
though scanimage -h says 0..999 for both left and width.

> It fixes only the range.max value and doesn't try to force 1 for
> range.min. In reality, this should be something like:
> 
> range.min = 1;
> range.max = br_x.range.max - tl_x.range.min + 1;
> 
> Correct? Can be more difficult if range.quant != 1 ...

Exactly.

  Andras

===========================================================================
Major Andras
    e-mail: and...@users.sourceforge.net
    www:    http://andras.webhop.org/
===========================================================================

Reply via email to