bugfixes: option RIF is available for the 3091 and 3092,

set availability of options THRESHOLD und VARIANCE
merge-requests/1/head
Oliver Schirrmeister 2003-02-20 14:48:55 +00:00
rodzic d74d4231ce
commit b7fbc8a3aa
3 zmienionych plików z 55 dodań i 19 usunięć

Wyświetl plik

@ -1,3 +1,7 @@
2003-02-20 Oliver Schirrmeister <oschirr@abm.de>
* make option RIF available for 3091 and 3092, bugfix
* set availability of options THRESHOLD und VARIANCE
2003-02-20 Oliver Schirrmeister <oschirr@abm.de>
* patch from <ron@roncemer.com>:
fi4220 support

Wyświetl plik

@ -81,6 +81,10 @@
- fi-4220C support (ron@roncemer.com)
- USB support for scanners which send SCSI commands over usb
(ron@roncemer.com)
V 1.5, 20-Feb-2003 OS (oschirr@abm.de)
- set availability of options THRESHOLD und VARIANCE
correctly
- option RIF is available for 3091 und 3092
SANE FLOW DIAGRAM
@ -189,7 +193,7 @@ static SANE_String_Const dropout_color_list[] =
};
static const SANE_Range default_threshold_range = { 0, 255, 1 };
static const SANE_Range default_threshold_range = { 1, 255, 1 };
static const SANE_Range default_brightness_range = { 0, 255, 1 };
static const SANE_Range default_contrast_range = { 0, 255, 1 };
@ -817,7 +821,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
return SANE_STATUS_GOOD;
case OPT_RIF:
*(SANE_Bool *) val = scanner->rif;
*(SANE_Bool *) val = scanner->reverse;
return SANE_STATUS_GOOD;
case OPT_BRIGHTNESS:
@ -856,7 +860,14 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
return SANE_STATUS_GOOD;
case OPT_OUTLINE_EXTRACTION:
*(SANE_Bool *) val = scanner->outline;
if (scanner->outline == 0x80)
{
*(SANE_Bool *) val = 1;
}
else
{
*(SANE_Bool *) val = 0;
}
return SANE_STATUS_GOOD;
case OPT_EMPHASIS:
@ -1458,11 +1469,18 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
return SANE_STATUS_GOOD;
case OPT_RIF:
scanner->rif = *(SANE_Bool *) val;
scanner->reverse = *(SANE_Bool *) val;
return SANE_STATUS_GOOD;
case OPT_OUTLINE_EXTRACTION:
scanner->outline = *(SANE_Bool *) val;
if ((*(SANE_Bool *) val))
{
scanner->outline = 0x80;
}
else
{
scanner->outline = 0x00;
}
return SANE_STATUS_GOOD;
case OPT_COMPRESSION:
@ -1595,14 +1613,10 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
scanner->opt[OPT_SMOOTHING_MODE].cap = SANE_CAP_INACTIVE;
scanner->opt[OPT_GRADATION].cap = SANE_CAP_INACTIVE;
scanner->opt[OPT_THRESHOLD_CURVE].cap = SANE_CAP_INACTIVE;
scanner->opt[OPT_VARIANCE_RATE].cap = SANE_CAP_SOFT_DETECT
| SANE_CAP_SOFT_SELECT;
scanner->noise_removal = 0;
*info |= SANE_INFO_RELOAD_PARAMS;
}
else
{
scanner->opt[OPT_VARIANCE_RATE].cap = SANE_CAP_INACTIVE;
scanner->opt[OPT_NOISE_REMOVAL].cap = SANE_CAP_SOFT_DETECT
| SANE_CAP_SOFT_SELECT;
scanner->opt[OPT_BACKGROUND].cap = SANE_CAP_SOFT_DETECT
@ -1617,6 +1631,27 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
| SANE_CAP_SOFT_SELECT;
}
switch (scanner->dtc_selection)
{
case WD_dtc_selection_DYNAMIC:
scanner->opt[OPT_THRESHOLD].cap = SANE_CAP_INACTIVE;
scanner->opt[OPT_VARIANCE_RATE].cap = SANE_CAP_INACTIVE;
break;
case WD_dtc_selection_SIMPLIFIED:
scanner->opt[OPT_VARIANCE_RATE].cap = SANE_CAP_SOFT_DETECT
| SANE_CAP_SOFT_SELECT;
scanner->opt[OPT_THRESHOLD].cap = SANE_CAP_INACTIVE;
break;
case WD_dtc_selection_DEFAULT:
default:
scanner->opt[OPT_THRESHOLD].cap = SANE_CAP_SOFT_DETECT
| SANE_CAP_SOFT_SELECT;
scanner->opt[OPT_VARIANCE_RATE].cap = SANE_CAP_INACTIVE;
}
*info |= SANE_INFO_RELOAD_OPTIONS;
return SANE_STATUS_GOOD;
@ -3844,6 +3879,7 @@ identifyScanner (struct fujitsu *s)
s->has_adf = SANE_TRUE;
s->has_fb = SANE_FALSE;
s->has_contrast = SANE_FALSE;
s->has_reverse = SANE_TRUE;
s->color_raster_offset = get_IN_raster (s->buffer);
s->duplex_raster_offset = get_IN_frontback (s->buffer);
s->duplex_present =
@ -4139,6 +4175,7 @@ identifyScanner (struct fujitsu *s)
s->has_white_level_follow =
get_IN_ipc_white_level_follow (s->buffer);
s->has_subwindow = get_IN_ipc_subwindow (s->buffer);
s->has_reverse = get_IN_ipc_bw_reverse(s->buffer);
/*
* get threshold, brightness and contrast ranges.
@ -4537,14 +4574,7 @@ setWindowParam (struct fujitsu *s)
set_WD_bitsperpixel (buffer,
(s->color_mode == MODE_COLOR) ? 8 : s->scanner_depth);
if (s->model == MODEL_3092)
{
set_WD_rif (buffer, SANE_TRUE);
}
else
{
set_WD_rif (buffer, s->reverse);
}
set_WD_rif (buffer, s->reverse);
set_WD_brightness (buffer, s->brightness);
set_WD_threshold (buffer, s->threshold);
@ -5275,8 +5305,10 @@ init_options (struct fujitsu *scanner)
scanner->opt[OPT_RIF].desc = "reverse image format";
scanner->opt[OPT_RIF].type = SANE_TYPE_BOOL;
scanner->opt[OPT_RIF].unit = SANE_UNIT_NONE;
if (scanner->ipc_present)
if (scanner->has_reverse)
scanner->opt[OPT_RIF].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
else
opt->cap = SANE_CAP_INACTIVE;
scanner->opt[OPT_AUTOSEP].name = "autoseparation";
scanner->opt[OPT_AUTOSEP].title = "automatic separation";

Wyświetl plik

@ -150,6 +150,7 @@ struct fujitsu
int has_emphasis; /* ............ */
int has_autosep; /* ............ */
int has_mirroring; /* ............ */
int has_reverse;
int has_white_level_follow; /* ............ */
int has_subwindow; /* ............ */
int has_dropout_color; /* */
@ -304,7 +305,6 @@ struct fujitsu
int threshold;
int contrast;
int rif;
int bitorder;
int compress_type;
int compress_arg;