kopia lustrzana https://gitlab.com/sane-project/backends
Added option to display short resolution list to support displays (e.g.
Sony Vaio PictureBook) that cannot show the complete list.RELEASE_1_0_11_BRANCH
rodzic
76524496d9
commit
e9f5b82656
|
@ -1,3 +1,7 @@
|
||||||
|
2002-12-28 Karl Heinz Kremer <khk@khk.net>
|
||||||
|
|
||||||
|
* Added option to display short resolution list to.
|
||||||
|
|
||||||
2002-12-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
2002-12-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||||
|
|
||||||
* doc/sane-scsi.man: The "scsi ..." way of specifying devices is not
|
* doc/sane-scsi.man: The "scsi ..." way of specifying devices is not
|
||||||
|
|
|
@ -12,12 +12,12 @@
|
||||||
Copyright (C) 1998-1999 Kling & Hautzinger GmbH
|
Copyright (C) 1998-1999 Kling & Hautzinger GmbH
|
||||||
Copyright (C) 1999 Norihiko Sawa <sawa@yb3.so-net.ne.jp>
|
Copyright (C) 1999 Norihiko Sawa <sawa@yb3.so-net.ne.jp>
|
||||||
Copyright (C) 2000 Mike Porter <mike@udel.edu> (mjp)
|
Copyright (C) 2000 Mike Porter <mike@udel.edu> (mjp)
|
||||||
Copyright (C) 1999-2001 Karl Heinz Kremer <khk@khk.net>
|
Copyright (C) 1999-2002 Karl Heinz Kremer <khk@khk.net>
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SANE_EPSON_VERSION "SANE Epson Backend v0.2.31 - 2002-11-23"
|
#define SANE_EPSON_VERSION "SANE Epson Backend v0.2.32 - 2002-12-28"
|
||||||
#define SANE_EPSON_BUILD 231
|
#define SANE_EPSON_BUILD 232
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This file is part of the SANE package.
|
This file is part of the SANE package.
|
||||||
|
@ -59,6 +59,8 @@
|
||||||
If you do not wish that, delete this exception notice. */
|
If you do not wish that, delete this exception notice. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
2002-12-28 Added advanced option to display only short resolution list for
|
||||||
|
displays that can not show the complete list.
|
||||||
2002-11-23 Fixed problem with dropout color.
|
2002-11-23 Fixed problem with dropout color.
|
||||||
2002-11-03 Full libusb support.
|
2002-11-03 Full libusb support.
|
||||||
2002-10-05 Fixed problem with incorrect response to sane_get_parameters()
|
2002-10-05 Fixed problem with incorrect response to sane_get_parameters()
|
||||||
|
@ -812,6 +814,7 @@ static void close_scanner( Epson_Scanner * s);
|
||||||
static SANE_Status open_scanner( Epson_Scanner * s);
|
static SANE_Status open_scanner( Epson_Scanner * s);
|
||||||
SANE_Status sane_auto_eject ( Epson_Scanner * s);
|
SANE_Status sane_auto_eject ( Epson_Scanner * s);
|
||||||
static SANE_Status attach_one_usb(SANE_String_Const devname);
|
static SANE_Status attach_one_usb(SANE_String_Const devname);
|
||||||
|
static void filter_resolution_list(Epson_Scanner * s);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
|
@ -2765,6 +2768,13 @@ static SANE_Status init_options ( Epson_Scanner * s) {
|
||||||
s->opt[ OPT_AAS].cap |= SANE_CAP_INACTIVE;
|
s->opt[ OPT_AAS].cap |= SANE_CAP_INACTIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* limit resolution list */
|
||||||
|
s->opt[OPT_LIMIT_RESOLUTION].name = "short-resolution";
|
||||||
|
s->opt[OPT_LIMIT_RESOLUTION].title = SANE_I18N("Short resolution list");
|
||||||
|
s->opt[OPT_LIMIT_RESOLUTION].desc = SANE_I18N("Display short resolution list");
|
||||||
|
s->opt[OPT_LIMIT_RESOLUTION].type = SANE_TYPE_BOOL;
|
||||||
|
s->val[OPT_LIMIT_RESOLUTION].w = SANE_FALSE;
|
||||||
|
|
||||||
|
|
||||||
/* zoom */
|
/* zoom */
|
||||||
s->opt[ OPT_ZOOM].name = "zoom";
|
s->opt[ OPT_ZOOM].name = "zoom";
|
||||||
|
@ -3254,9 +3264,9 @@ static SANE_Status getvalue( SANE_Handle handle,
|
||||||
case OPT_ZOOM:
|
case OPT_ZOOM:
|
||||||
case OPT_BIT_DEPTH:
|
case OPT_BIT_DEPTH:
|
||||||
case OPT_WAIT_FOR_BUTTON:
|
case OPT_WAIT_FOR_BUTTON:
|
||||||
|
case OPT_LIMIT_RESOLUTION:
|
||||||
*((SANE_Word *) value) = sval->w;
|
*((SANE_Word *) value) = sval->w;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OPT_MODE:
|
case OPT_MODE:
|
||||||
case OPT_HALFTONE:
|
case OPT_HALFTONE:
|
||||||
case OPT_DROPOUT:
|
case OPT_DROPOUT:
|
||||||
|
@ -3623,6 +3633,12 @@ static SANE_Status setvalue( SANE_Handle handle,
|
||||||
sval->w = *(( SANE_Word *) value);
|
sval->w = *(( SANE_Word *) value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OPT_LIMIT_RESOLUTION:
|
||||||
|
sval->w = *(( SANE_Word *) value);
|
||||||
|
filter_resolution_list(s);
|
||||||
|
reload = SANE_TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
case OPT_QUICK_FORMAT:
|
case OPT_QUICK_FORMAT:
|
||||||
sval->w = optindex;
|
sval->w = optindex;
|
||||||
|
|
||||||
|
@ -5329,6 +5345,9 @@ get_identity_information(SANE_Handle handle)
|
||||||
*(s->hw->resolution_list) = s->hw->res_list_size;
|
*(s->hw->resolution_list) = s->hw->res_list_size;
|
||||||
memcpy(&(s->hw->resolution_list[1]), s->hw->res_list, s->hw->res_list_size * sizeof(SANE_Word));
|
memcpy(&(s->hw->resolution_list[1]), s->hw->res_list, s->hw->res_list_size * sizeof(SANE_Word));
|
||||||
|
|
||||||
|
/* filter the resolution list */
|
||||||
|
filter_resolution_list(s);
|
||||||
|
|
||||||
return SANE_STATUS_GOOD;
|
return SANE_STATUS_GOOD;
|
||||||
|
|
||||||
} /* request identity */
|
} /* request identity */
|
||||||
|
@ -5509,6 +5528,66 @@ request_push_button_status(SANE_Handle handle, SANE_Bool *theButtonStatus)
|
||||||
return (SANE_STATUS_GOOD);
|
return (SANE_STATUS_GOOD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void filter_resolution_list(Epson_Scanner * s)
|
||||||
|
{
|
||||||
|
/* re-create the list */
|
||||||
|
|
||||||
|
if (s->val[OPT_LIMIT_RESOLUTION].w == SANE_TRUE)
|
||||||
|
{
|
||||||
|
/* copy the short list */
|
||||||
|
|
||||||
|
/* filter out all values that are not 300 or 400 dpi based */
|
||||||
|
int i;
|
||||||
|
|
||||||
|
int new_size = 0;
|
||||||
|
SANE_Bool is_correct_resolution = SANE_FALSE;
|
||||||
|
|
||||||
|
for (i=1; i <= s->hw->res_list_size; i++)
|
||||||
|
{
|
||||||
|
SANE_Word res;
|
||||||
|
res = s->hw->res_list[i];
|
||||||
|
if ( (res < 100) ||
|
||||||
|
(0 == (res % 300)) ||
|
||||||
|
(0 == (res % 400)) )
|
||||||
|
{
|
||||||
|
/* add the value */
|
||||||
|
new_size++;
|
||||||
|
|
||||||
|
s->hw->resolution_list[new_size] = s->hw->res_list[i];
|
||||||
|
|
||||||
|
/* check for a valid current resolution */
|
||||||
|
if (res == s->val[OPT_RESOLUTION].w)
|
||||||
|
{
|
||||||
|
is_correct_resolution = SANE_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s->hw->resolution_list[0] = new_size;
|
||||||
|
|
||||||
|
if (is_correct_resolution == SANE_FALSE)
|
||||||
|
{
|
||||||
|
for (i=1; i<= new_size; i++)
|
||||||
|
{
|
||||||
|
if (s->val[OPT_RESOLUTION].w < s->hw->resolution_list[i])
|
||||||
|
{
|
||||||
|
s->val[OPT_RESOLUTION].w = s->hw->resolution_list[i];
|
||||||
|
i = new_size+1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// copy the full list
|
||||||
|
s->hw->resolution_list[0] = s->hw->res_list_size;
|
||||||
|
memcpy(&(s->hw->resolution_list[1]), s->hw->res_list,
|
||||||
|
s->hw->res_list_size * sizeof(SANE_Word));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**********************************************************************************/
|
/**********************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -134,6 +134,7 @@ enum
|
||||||
, OPT_MIRROR
|
, OPT_MIRROR
|
||||||
, OPT_SPEED
|
, OPT_SPEED
|
||||||
, OPT_AAS
|
, OPT_AAS
|
||||||
|
, OPT_LIMIT_RESOLUTION
|
||||||
, OPT_ZOOM
|
, OPT_ZOOM
|
||||||
/* , OPT_GAMMA_VECTOR */
|
/* , OPT_GAMMA_VECTOR */
|
||||||
, OPT_GAMMA_VECTOR_R
|
, OPT_GAMMA_VECTOR_R
|
||||||
|
|
Ładowanie…
Reference in New Issue