kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Extract string options out of options list
rodzic
3301e0fbea
commit
a7a2e0abd6
|
@ -4851,14 +4851,10 @@ max_string_size (const SANE_String_Const strings[])
|
||||||
static SANE_Status
|
static SANE_Status
|
||||||
calc_parameters (Genesys_Scanner * s)
|
calc_parameters (Genesys_Scanner * s)
|
||||||
{
|
{
|
||||||
SANE_String mode, source, color_filter;
|
|
||||||
SANE_Status status = SANE_STATUS_GOOD;
|
SANE_Status status = SANE_STATUS_GOOD;
|
||||||
SANE_Int depth = 0, resolution = 0;
|
SANE_Int depth = 0, resolution = 0;
|
||||||
double tl_x = 0, tl_y = 0, br_x = 0, br_y = 0;
|
double tl_x = 0, tl_y = 0, br_x = 0, br_y = 0;
|
||||||
|
|
||||||
mode = s->val[OPT_MODE].s;
|
|
||||||
source = s->val[OPT_SOURCE].s;
|
|
||||||
color_filter = s->val[OPT_COLOR_FILTER].s;
|
|
||||||
depth = s->val[OPT_BIT_DEPTH].w;
|
depth = s->val[OPT_BIT_DEPTH].w;
|
||||||
resolution = s->val[OPT_RESOLUTION].w;
|
resolution = s->val[OPT_RESOLUTION].w;
|
||||||
tl_x = SANE_UNFIX(s->pos_top_left_x);
|
tl_x = SANE_UNFIX(s->pos_top_left_x);
|
||||||
|
@ -4868,16 +4864,18 @@ calc_parameters (Genesys_Scanner * s)
|
||||||
|
|
||||||
s->params.last_frame = SANE_TRUE; /* only single pass scanning supported */
|
s->params.last_frame = SANE_TRUE; /* only single pass scanning supported */
|
||||||
|
|
||||||
if (strcmp (mode, SANE_VALUE_SCAN_MODE_GRAY) == 0
|
if (s->mode == SANE_VALUE_SCAN_MODE_GRAY || s->mode == SANE_VALUE_SCAN_MODE_LINEART) {
|
||||||
|| strcmp (mode, SANE_VALUE_SCAN_MODE_LINEART) == 0)
|
|
||||||
s->params.format = SANE_FRAME_GRAY;
|
s->params.format = SANE_FRAME_GRAY;
|
||||||
else /* Color */
|
} else {
|
||||||
s->params.format = SANE_FRAME_RGB;
|
s->params.format = SANE_FRAME_RGB;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp (mode, SANE_VALUE_SCAN_MODE_LINEART) == 0)
|
if (s->mode == SANE_VALUE_SCAN_MODE_LINEART) {
|
||||||
s->params.depth = 1;
|
s->params.depth = 1;
|
||||||
else
|
} else {
|
||||||
s->params.depth = depth;
|
s->params.depth = depth;
|
||||||
|
}
|
||||||
|
|
||||||
s->dev->settings.depth = depth;
|
s->dev->settings.depth = depth;
|
||||||
|
|
||||||
/* interpolation */
|
/* interpolation */
|
||||||
|
@ -4940,23 +4938,25 @@ calc_parameters (Genesys_Scanner * s)
|
||||||
s->params.pixels_per_line = 8 * s->params.bytes_per_line;
|
s->params.pixels_per_line = 8 * s->params.bytes_per_line;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->params.format == SANE_FRAME_RGB)
|
if (s->params.format == SANE_FRAME_RGB) {
|
||||||
s->params.bytes_per_line *= 3;
|
s->params.bytes_per_line *= 3;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp (mode, SANE_VALUE_SCAN_MODE_COLOR) == 0)
|
if (s->mode == SANE_VALUE_SCAN_MODE_COLOR) {
|
||||||
s->dev->settings.scan_mode = SCAN_MODE_COLOR;
|
s->dev->settings.scan_mode = SCAN_MODE_COLOR;
|
||||||
else if (strcmp (mode, SANE_VALUE_SCAN_MODE_GRAY) == 0)
|
} else if (s->mode == SANE_VALUE_SCAN_MODE_GRAY) {
|
||||||
s->dev->settings.scan_mode = SCAN_MODE_GRAY;
|
s->dev->settings.scan_mode = SCAN_MODE_GRAY;
|
||||||
else if (strcmp (mode, SANE_TITLE_HALFTONE) == 0)
|
} else if (s->mode == SANE_TITLE_HALFTONE) {
|
||||||
s->dev->settings.scan_mode = SCAN_MODE_HALFTONE;
|
s->dev->settings.scan_mode = SCAN_MODE_HALFTONE;
|
||||||
else /* Lineart */
|
} else { /* Lineart */
|
||||||
s->dev->settings.scan_mode = SCAN_MODE_LINEART;
|
s->dev->settings.scan_mode = SCAN_MODE_LINEART;
|
||||||
|
}
|
||||||
|
|
||||||
/* TODO: change and check */
|
if (s->source == FLATBED) {
|
||||||
if (strcmp (source, FLATBED) == 0)
|
|
||||||
s->dev->settings.scan_method = SCAN_METHOD_FLATBED;
|
s->dev->settings.scan_method = SCAN_METHOD_FLATBED;
|
||||||
else /* transparency */
|
} else { /* transparency */
|
||||||
s->dev->settings.scan_method = SCAN_METHOD_TRANSPARENCY;
|
s->dev->settings.scan_method = SCAN_METHOD_TRANSPARENCY;
|
||||||
|
}
|
||||||
|
|
||||||
s->dev->settings.lines = s->params.lines;
|
s->dev->settings.lines = s->params.lines;
|
||||||
s->dev->settings.pixels = s->params.pixels_per_line;
|
s->dev->settings.pixels = s->params.pixels_per_line;
|
||||||
|
@ -4966,21 +4966,23 @@ calc_parameters (Genesys_Scanner * s)
|
||||||
/* threshold setting */
|
/* threshold setting */
|
||||||
s->dev->settings.threshold = 2.55 * (SANE_UNFIX (s->val[OPT_THRESHOLD].w));
|
s->dev->settings.threshold = 2.55 * (SANE_UNFIX (s->val[OPT_THRESHOLD].w));
|
||||||
|
|
||||||
/* color filter */
|
// color filter
|
||||||
if (strcmp (color_filter, "Red") == 0)
|
if (s->color_filter == "Red") {
|
||||||
s->dev->settings.color_filter = 0;
|
s->dev->settings.color_filter = 0;
|
||||||
else if (strcmp (color_filter, "Green") == 0)
|
} else if (s->color_filter == "Green") {
|
||||||
s->dev->settings.color_filter = 1;
|
s->dev->settings.color_filter = 1;
|
||||||
else if (strcmp (color_filter, "Blue") == 0)
|
} else if (s->color_filter == "Blue") {
|
||||||
s->dev->settings.color_filter = 2;
|
s->dev->settings.color_filter = 2;
|
||||||
else
|
} else {
|
||||||
s->dev->settings.color_filter = 3;
|
s->dev->settings.color_filter = 3;
|
||||||
|
}
|
||||||
|
|
||||||
/* true gray */
|
// true gray
|
||||||
if (strcmp (color_filter, "None") == 0)
|
if (s->color_filter == "None") {
|
||||||
s->dev->settings.true_gray = 1;
|
s->dev->settings.true_gray = 1;
|
||||||
else
|
} else {
|
||||||
s->dev->settings.true_gray = 0;
|
s->dev->settings.true_gray = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* dynamic lineart */
|
/* dynamic lineart */
|
||||||
s->dev->settings.dynamic_lineart = SANE_FALSE;
|
s->dev->settings.dynamic_lineart = SANE_FALSE;
|
||||||
|
@ -5254,7 +5256,7 @@ init_options (Genesys_Scanner * s)
|
||||||
s->opt[OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
s->opt[OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
||||||
s->opt[OPT_MODE].size = max_string_size (mode_list);
|
s->opt[OPT_MODE].size = max_string_size (mode_list);
|
||||||
s->opt[OPT_MODE].constraint.string_list = mode_list;
|
s->opt[OPT_MODE].constraint.string_list = mode_list;
|
||||||
s->val[OPT_MODE].s = strdup (SANE_VALUE_SCAN_MODE_GRAY);
|
s->mode = SANE_VALUE_SCAN_MODE_GRAY;
|
||||||
|
|
||||||
/* scan source */
|
/* scan source */
|
||||||
s->opt[OPT_SOURCE].name = SANE_NAME_SCAN_SOURCE;
|
s->opt[OPT_SOURCE].name = SANE_NAME_SCAN_SOURCE;
|
||||||
|
@ -5264,7 +5266,7 @@ init_options (Genesys_Scanner * s)
|
||||||
s->opt[OPT_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
s->opt[OPT_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
||||||
s->opt[OPT_SOURCE].size = max_string_size (source_list);
|
s->opt[OPT_SOURCE].size = max_string_size (source_list);
|
||||||
s->opt[OPT_SOURCE].constraint.string_list = source_list;
|
s->opt[OPT_SOURCE].constraint.string_list = source_list;
|
||||||
s->val[OPT_SOURCE].s = strdup (FLATBED);
|
s->source = FLATBED;
|
||||||
if (model->flags & GENESYS_FLAG_HAS_UTA)
|
if (model->flags & GENESYS_FLAG_HAS_UTA)
|
||||||
{
|
{
|
||||||
ENABLE (OPT_SOURCE);
|
ENABLE (OPT_SOURCE);
|
||||||
|
@ -5587,14 +5589,14 @@ init_options (Genesys_Scanner * s)
|
||||||
{
|
{
|
||||||
s->opt[OPT_COLOR_FILTER].size = max_string_size (color_filter_list);
|
s->opt[OPT_COLOR_FILTER].size = max_string_size (color_filter_list);
|
||||||
s->opt[OPT_COLOR_FILTER].constraint.string_list = color_filter_list;
|
s->opt[OPT_COLOR_FILTER].constraint.string_list = color_filter_list;
|
||||||
s->val[OPT_COLOR_FILTER].s = strdup (s->opt[OPT_COLOR_FILTER].constraint.string_list[1]);
|
s->color_filter = s->opt[OPT_COLOR_FILTER].constraint.string_list[1];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
s->opt[OPT_COLOR_FILTER].size = max_string_size (cis_color_filter_list);
|
s->opt[OPT_COLOR_FILTER].size = max_string_size (cis_color_filter_list);
|
||||||
s->opt[OPT_COLOR_FILTER].constraint.string_list = cis_color_filter_list;
|
s->opt[OPT_COLOR_FILTER].constraint.string_list = cis_color_filter_list;
|
||||||
/* default to "None" ie true gray */
|
/* default to "None" ie true gray */
|
||||||
s->val[OPT_COLOR_FILTER].s = strdup (s->opt[OPT_COLOR_FILTER].constraint.string_list[3]);
|
s->color_filter = s->opt[OPT_COLOR_FILTER].constraint.string_list[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* no support for color filter for cis+gl646 scanners */
|
/* no support for color filter for cis+gl646 scanners */
|
||||||
|
@ -5612,7 +5614,7 @@ init_options (Genesys_Scanner * s)
|
||||||
s->opt[OPT_CALIBRATION_FILE].size = PATH_MAX;
|
s->opt[OPT_CALIBRATION_FILE].size = PATH_MAX;
|
||||||
s->opt[OPT_CALIBRATION_FILE].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED;
|
s->opt[OPT_CALIBRATION_FILE].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED;
|
||||||
s->opt[OPT_CALIBRATION_FILE].constraint_type = SANE_CONSTRAINT_NONE;
|
s->opt[OPT_CALIBRATION_FILE].constraint_type = SANE_CONSTRAINT_NONE;
|
||||||
s->val[OPT_CALIBRATION_FILE].s = NULL;
|
s->calibration_file.clear();
|
||||||
/* disable option if ran as root */
|
/* disable option if ran as root */
|
||||||
#ifdef HAVE_GETUID
|
#ifdef HAVE_GETUID
|
||||||
if(geteuid()==0)
|
if(geteuid()==0)
|
||||||
|
@ -6473,7 +6475,7 @@ sane_open_impl(SANE_String_Const devicename, SANE_Handle * handle)
|
||||||
if (s->dev->force_calibration == 0)
|
if (s->dev->force_calibration == 0)
|
||||||
{
|
{
|
||||||
tmpstr=calibration_filename(s->dev);
|
tmpstr=calibration_filename(s->dev);
|
||||||
s->val[OPT_CALIBRATION_FILE].s = strdup (tmpstr);
|
s->calibration_file = tmpstr;
|
||||||
s->dev->calib_file = tmpstr;
|
s->dev->calib_file = tmpstr;
|
||||||
DBG(DBG_info, "%s: Calibration filename set to:\n", __func__);
|
DBG(DBG_info, "%s: Calibration filename set to:\n", __func__);
|
||||||
DBG(DBG_info, "%s: >%s<\n", __func__, s->dev->calib_file.c_str());
|
DBG(DBG_info, "%s: >%s<\n", __func__, s->dev->calib_file.c_str());
|
||||||
|
@ -6555,9 +6557,6 @@ sane_close_impl(SANE_Handle handle)
|
||||||
|
|
||||||
/* for an handful of bytes .. */
|
/* for an handful of bytes .. */
|
||||||
free ((void *)(size_t)s->opt[OPT_RESOLUTION].constraint.word_list);
|
free ((void *)(size_t)s->opt[OPT_RESOLUTION].constraint.word_list);
|
||||||
free (s->val[OPT_SOURCE].s);
|
|
||||||
free (s->val[OPT_MODE].s);
|
|
||||||
free (s->val[OPT_COLOR_FILTER].s);
|
|
||||||
free ((void *)(size_t)s->opt[OPT_TL_X].constraint.range);
|
free ((void *)(size_t)s->opt[OPT_TL_X].constraint.range);
|
||||||
free ((void *)(size_t)s->opt[OPT_TL_Y].constraint.range);
|
free ((void *)(size_t)s->opt[OPT_TL_Y].constraint.range);
|
||||||
|
|
||||||
|
@ -6668,18 +6667,24 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
||||||
|
|
||||||
/* string options: */
|
/* string options: */
|
||||||
case OPT_MODE:
|
case OPT_MODE:
|
||||||
|
std::strcpy(reinterpret_cast<char*>(val), s->mode.c_str());
|
||||||
|
break;
|
||||||
case OPT_COLOR_FILTER:
|
case OPT_COLOR_FILTER:
|
||||||
|
std::strcpy(reinterpret_cast<char*>(val), s->color_filter.c_str());
|
||||||
|
break;
|
||||||
case OPT_CALIBRATION_FILE:
|
case OPT_CALIBRATION_FILE:
|
||||||
|
std::strcpy(reinterpret_cast<char*>(val), s->calibration_file.c_str());
|
||||||
|
break;
|
||||||
case OPT_SOURCE:
|
case OPT_SOURCE:
|
||||||
strcpy((char*) val, s->val[option].s);
|
std::strcpy(reinterpret_cast<char*>(val), s->source.c_str());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* word array options */
|
/* word array options */
|
||||||
case OPT_GAMMA_VECTOR:
|
case OPT_GAMMA_VECTOR:
|
||||||
table = (SANE_Word *) val;
|
table = (SANE_Word *) val;
|
||||||
if (strcmp (s->val[OPT_COLOR_FILTER].s, "Red") == 0) {
|
if (s->color_filter == "Red") {
|
||||||
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_RED);
|
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_RED);
|
||||||
} else if (strcmp (s->val[OPT_COLOR_FILTER].s, "Blue") == 0) {
|
} else if (s->color_filter == "Blue") {
|
||||||
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_BLUE);
|
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_BLUE);
|
||||||
} else {
|
} else {
|
||||||
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_GREEN);
|
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_GREEN);
|
||||||
|
@ -6759,7 +6764,7 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
||||||
/** @brief set calibration file value
|
/** @brief set calibration file value
|
||||||
* Set calibration file value. Load new cache values from file if it exists,
|
* Set calibration file value. Load new cache values from file if it exists,
|
||||||
* else creates the file*/
|
* else creates the file*/
|
||||||
static SANE_Status set_calibration_value (Genesys_Scanner * s, int option, void *val)
|
static SANE_Status set_calibration_value(Genesys_Scanner* s, const char* val)
|
||||||
{
|
{
|
||||||
SANE_Status status=SANE_STATUS_GOOD;
|
SANE_Status status=SANE_STATUS_GOOD;
|
||||||
Genesys_Device *dev=s->dev;
|
Genesys_Device *dev=s->dev;
|
||||||
|
@ -6768,7 +6773,7 @@ static SANE_Status set_calibration_value (Genesys_Scanner * s, int option, void
|
||||||
|
|
||||||
/* try to load file */
|
/* try to load file */
|
||||||
std::string prev_calib_file = dev->calib_file;
|
std::string prev_calib_file = dev->calib_file;
|
||||||
dev->calib_file = (char*) val;
|
dev->calib_file = val;
|
||||||
status=sanei_genesys_read_calibration (dev);
|
status=sanei_genesys_read_calibration (dev);
|
||||||
|
|
||||||
/* file exists but is invalid, so fall back to previous cache file
|
/* file exists but is invalid, so fall back to previous cache file
|
||||||
|
@ -6780,11 +6785,8 @@ static SANE_Status set_calibration_value (Genesys_Scanner * s, int option, void
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* now we can set file name value */
|
s->calibration_file = val;
|
||||||
if (s->val[option].s)
|
dev->calib_file = val;
|
||||||
free (s->val[option].s);
|
|
||||||
s->val[option].s = strdup((char*) val);
|
|
||||||
dev->calib_file = (char*) val;
|
|
||||||
DBG(DBG_info, "%s: Calibration filename set to:\n", __func__);
|
DBG(DBG_info, "%s: Calibration filename set to:\n", __func__);
|
||||||
DBG(DBG_info, "%s: >%s<\n", __func__, s->dev->calib_file.c_str());
|
DBG(DBG_info, "%s: >%s<\n", __func__, s->dev->calib_file.c_str());
|
||||||
|
|
||||||
|
@ -6888,14 +6890,11 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
|
||||||
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
|
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
|
||||||
break;
|
break;
|
||||||
case OPT_SOURCE:
|
case OPT_SOURCE:
|
||||||
if (strcmp (s->val[option].s, (char*) val) != 0)
|
if (s->source != reinterpret_cast<const char*>(val)) {
|
||||||
{ /* something changed */
|
s->source = reinterpret_cast<const char*>(val);
|
||||||
if (s->val[option].s)
|
|
||||||
free (s->val[option].s);
|
|
||||||
s->val[option].s = strdup((char*) val);
|
|
||||||
|
|
||||||
/* change geometry constraint to the new source value */
|
// change geometry constraint to the new source value
|
||||||
if (strcmp (s->val[option].s, FLATBED) == 0)
|
if (s->source == FLATBED)
|
||||||
{
|
{
|
||||||
x_range=create_range(s->dev->model->x_size);
|
x_range=create_range(s->dev->model->x_size);
|
||||||
y_range=create_range(s->dev->model->y_size);
|
y_range=create_range(s->dev->model->y_size);
|
||||||
|
@ -6927,11 +6926,9 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case OPT_MODE:
|
case OPT_MODE:
|
||||||
if (s->val[option].s)
|
s->mode = reinterpret_cast<const char*>(val);
|
||||||
free (s->val[option].s);
|
|
||||||
s->val[option].s = strdup((char*) val);
|
|
||||||
|
|
||||||
if (strcmp (s->val[option].s, SANE_VALUE_SCAN_MODE_LINEART) == 0)
|
if (s->mode == SANE_VALUE_SCAN_MODE_LINEART)
|
||||||
{
|
{
|
||||||
ENABLE (OPT_THRESHOLD);
|
ENABLE (OPT_THRESHOLD);
|
||||||
ENABLE (OPT_THRESHOLD_CURVE);
|
ENABLE (OPT_THRESHOLD_CURVE);
|
||||||
|
@ -6947,7 +6944,7 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
|
||||||
DISABLE (OPT_THRESHOLD);
|
DISABLE (OPT_THRESHOLD);
|
||||||
DISABLE (OPT_THRESHOLD_CURVE);
|
DISABLE (OPT_THRESHOLD_CURVE);
|
||||||
DISABLE (OPT_DISABLE_DYNAMIC_LINEART);
|
DISABLE (OPT_DISABLE_DYNAMIC_LINEART);
|
||||||
if (strcmp (s->val[option].s, SANE_VALUE_SCAN_MODE_GRAY) == 0)
|
if (s->mode == SANE_VALUE_SCAN_MODE_GRAY)
|
||||||
{
|
{
|
||||||
if (s->dev->model->asic_type != GENESYS_GL646 || !s->dev->model->is_cis)
|
if (s->dev->model->asic_type != GENESYS_GL646 || !s->dev->model->is_cis)
|
||||||
{
|
{
|
||||||
|
@ -6970,7 +6967,7 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
|
||||||
/* if custom gamma, toggle gamma table options according to the mode */
|
/* if custom gamma, toggle gamma table options according to the mode */
|
||||||
if (s->val[OPT_CUSTOM_GAMMA].b == SANE_TRUE)
|
if (s->val[OPT_CUSTOM_GAMMA].b == SANE_TRUE)
|
||||||
{
|
{
|
||||||
if (strcmp (s->val[option].s, SANE_VALUE_SCAN_MODE_COLOR) == 0)
|
if (s->mode == SANE_VALUE_SCAN_MODE_COLOR)
|
||||||
{
|
{
|
||||||
DISABLE (OPT_GAMMA_VECTOR);
|
DISABLE (OPT_GAMMA_VECTOR);
|
||||||
ENABLE (OPT_GAMMA_VECTOR_R);
|
ENABLE (OPT_GAMMA_VECTOR_R);
|
||||||
|
@ -6989,14 +6986,12 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
|
||||||
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
|
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
|
||||||
break;
|
break;
|
||||||
case OPT_COLOR_FILTER:
|
case OPT_COLOR_FILTER:
|
||||||
if (s->val[option].s)
|
s->color_filter = reinterpret_cast<const char*>(val);
|
||||||
free (s->val[option].s);
|
|
||||||
s->val[option].s = strdup((char*) val);
|
|
||||||
RIE (calc_parameters (s));
|
RIE (calc_parameters (s));
|
||||||
break;
|
break;
|
||||||
case OPT_CALIBRATION_FILE:
|
case OPT_CALIBRATION_FILE:
|
||||||
if (s->dev->force_calibration == 0)
|
if (s->dev->force_calibration == 0)
|
||||||
RIE(set_calibration_value (s, option, val));
|
RIE(set_calibration_value(s, reinterpret_cast<const char*>(val)));
|
||||||
break;
|
break;
|
||||||
case OPT_LAMP_OFF_TIME:
|
case OPT_LAMP_OFF_TIME:
|
||||||
case OPT_EXPIRATION_TIME:
|
case OPT_EXPIRATION_TIME:
|
||||||
|
@ -7014,7 +7009,7 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
|
||||||
|
|
||||||
if (s->val[OPT_CUSTOM_GAMMA].b == SANE_TRUE)
|
if (s->val[OPT_CUSTOM_GAMMA].b == SANE_TRUE)
|
||||||
{
|
{
|
||||||
if (strcmp (s->val[OPT_MODE].s, SANE_VALUE_SCAN_MODE_COLOR) == 0)
|
if (s->mode == SANE_VALUE_SCAN_MODE_COLOR)
|
||||||
{
|
{
|
||||||
DISABLE (OPT_GAMMA_VECTOR);
|
DISABLE (OPT_GAMMA_VECTOR);
|
||||||
ENABLE (OPT_GAMMA_VECTOR_R);
|
ENABLE (OPT_GAMMA_VECTOR_R);
|
||||||
|
|
|
@ -212,6 +212,9 @@ struct Genesys_Scanner
|
||||||
SANE_Word pos_bottom_right_y = 0;
|
SANE_Word pos_bottom_right_y = 0;
|
||||||
SANE_Word pos_bottom_right_x = 0;
|
SANE_Word pos_bottom_right_x = 0;
|
||||||
|
|
||||||
|
std::string mode, source, color_filter;
|
||||||
|
|
||||||
|
std::string calibration_file;
|
||||||
// Button states
|
// Button states
|
||||||
GenesysButton buttons[NUM_BUTTONS];
|
GenesysButton buttons[NUM_BUTTONS];
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue