kopia lustrzana https://gitlab.com/sane-project/backends
Merge branch 'genesys-default-scan-method' into 'master'
genesys: Add a way to specify default scan method See merge request sane-project/backends!173merge-requests/175/head
commit
c59f9a037b
|
@ -192,16 +192,31 @@ const Genesys_Sensor& sanei_genesys_find_sensor_any(Genesys_Device* dev)
|
|||
throw std::runtime_error("Given device does not have sensor defined");
|
||||
}
|
||||
|
||||
const Genesys_Sensor& sanei_genesys_find_sensor(Genesys_Device* dev, int dpi, unsigned channels,
|
||||
ScanMethod scan_method)
|
||||
Genesys_Sensor* find_sensor_impl(Genesys_Device* dev, unsigned dpi, unsigned channels,
|
||||
ScanMethod scan_method)
|
||||
{
|
||||
for (const auto& sensor : *s_sensors) {
|
||||
for (auto& sensor : *s_sensors) {
|
||||
if (dev->model->ccd_type == sensor.sensor_id && sensor.resolutions.matches(dpi) &&
|
||||
sensor.matches_channel_count(channels) && sensor.method == scan_method)
|
||||
{
|
||||
return sensor;
|
||||
return &sensor;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool sanei_genesys_has_sensor(Genesys_Device* dev, unsigned dpi, unsigned channels,
|
||||
ScanMethod scan_method)
|
||||
{
|
||||
return find_sensor_impl(dev, dpi, channels, scan_method) != nullptr;
|
||||
}
|
||||
|
||||
const Genesys_Sensor& sanei_genesys_find_sensor(Genesys_Device* dev, int dpi, unsigned channels,
|
||||
ScanMethod scan_method)
|
||||
{
|
||||
const auto* sensor = find_sensor_impl(dev, dpi, channels, scan_method);
|
||||
if (sensor)
|
||||
return *sensor;
|
||||
throw std::runtime_error("Given device does not have sensor defined");
|
||||
}
|
||||
|
||||
|
@ -209,13 +224,9 @@ Genesys_Sensor& sanei_genesys_find_sensor_for_write(Genesys_Device* dev, int dpi
|
|||
unsigned channels,
|
||||
ScanMethod scan_method)
|
||||
{
|
||||
for (auto& sensor : *s_sensors) {
|
||||
if (dev->model->ccd_type == sensor.sensor_id && sensor.resolutions.matches(dpi) &&
|
||||
sensor.matches_channel_count(channels) && sensor.method == scan_method)
|
||||
{
|
||||
return sensor;
|
||||
}
|
||||
}
|
||||
auto* sensor = find_sensor_impl(dev, dpi, channels, scan_method);
|
||||
if (sensor)
|
||||
return *sensor;
|
||||
throw std::runtime_error("Given device does not have sensor defined");
|
||||
}
|
||||
|
||||
|
@ -276,8 +287,8 @@ sanei_genesys_init_structs (Genesys_Device * dev)
|
|||
}
|
||||
|
||||
if (!motor_ok || !gpo_ok || !fe_ok) {
|
||||
DBG(DBG_error0, "%s: bad description(s) for fe/gpo/motor=%d/%d/%d\n", __func__,
|
||||
dev->model->ccd_type, dev->model->gpo_type, dev->model->motor_type);
|
||||
throw SaneException("bad description(s) for fe/gpo/motor=%d/%d/%d\n",
|
||||
dev->model->ccd_type, dev->model->gpo_type, dev->model->motor_type);
|
||||
}
|
||||
|
||||
/* set up initial line distance shift */
|
||||
|
@ -5696,9 +5707,14 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
|||
unsigned option_size = 0;
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
|
||||
const Genesys_Sensor& sensor = sanei_genesys_find_sensor(s->dev, s->dev->settings.xres,
|
||||
s->dev->settings.get_channels(),
|
||||
s->dev->settings.scan_method);
|
||||
const Genesys_Sensor* sensor = nullptr;
|
||||
if (sanei_genesys_has_sensor(s->dev, s->dev->settings.xres, s->dev->settings.get_channels(),
|
||||
s->dev->settings.scan_method))
|
||||
{
|
||||
sensor = &sanei_genesys_find_sensor(s->dev, s->dev->settings.xres,
|
||||
s->dev->settings.get_channels(),
|
||||
s->dev->settings.scan_method);
|
||||
}
|
||||
|
||||
switch (option)
|
||||
{
|
||||
|
@ -5793,13 +5809,16 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
|||
|
||||
/* word array options */
|
||||
case OPT_GAMMA_VECTOR:
|
||||
if (!sensor)
|
||||
throw SaneException("Unsupported scanner mode selected");
|
||||
|
||||
table = (SANE_Word *) val;
|
||||
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 (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 {
|
||||
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_GREEN);
|
||||
gamma_table = get_gamma_table(s->dev, *sensor, GENESYS_GREEN);
|
||||
}
|
||||
option_size = s->opt[option].size / sizeof (SANE_Word);
|
||||
if (gamma_table.size() != option_size) {
|
||||
|
@ -5810,8 +5829,11 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
|||
}
|
||||
break;
|
||||
case OPT_GAMMA_VECTOR_R:
|
||||
if (!sensor)
|
||||
throw SaneException("Unsupported scanner mode selected");
|
||||
|
||||
table = (SANE_Word *) val;
|
||||
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_RED);
|
||||
gamma_table = get_gamma_table(s->dev, *sensor, GENESYS_RED);
|
||||
option_size = s->opt[option].size / sizeof (SANE_Word);
|
||||
if (gamma_table.size() != option_size) {
|
||||
throw std::runtime_error("The size of the gamma tables does not match");
|
||||
|
@ -5821,8 +5843,11 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
|||
}
|
||||
break;
|
||||
case OPT_GAMMA_VECTOR_G:
|
||||
if (!sensor)
|
||||
throw SaneException("Unsupported scanner mode selected");
|
||||
|
||||
table = (SANE_Word *) val;
|
||||
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_GREEN);
|
||||
gamma_table = get_gamma_table(s->dev, *sensor, GENESYS_GREEN);
|
||||
option_size = s->opt[option].size / sizeof (SANE_Word);
|
||||
if (gamma_table.size() != option_size) {
|
||||
throw std::runtime_error("The size of the gamma tables does not match");
|
||||
|
@ -5832,8 +5857,11 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
|||
}
|
||||
break;
|
||||
case OPT_GAMMA_VECTOR_B:
|
||||
if (!sensor)
|
||||
throw SaneException("Unsupported scanner mode selected");
|
||||
|
||||
table = (SANE_Word *) val;
|
||||
gamma_table = get_gamma_table(s->dev, sensor, GENESYS_BLUE);
|
||||
gamma_table = get_gamma_table(s->dev, *sensor, GENESYS_BLUE);
|
||||
option_size = s->opt[option].size / sizeof (SANE_Word);
|
||||
if (gamma_table.size() != option_size) {
|
||||
throw std::runtime_error("The size of the gamma tables does not match");
|
||||
|
@ -5855,12 +5883,15 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
|||
*(SANE_Bool *) val = s->buttons[genesys_option_to_button(option)].read();
|
||||
break;
|
||||
case OPT_NEED_CALIBRATION_SW:
|
||||
if (!sensor)
|
||||
throw SaneException("Unsupported scanner mode selected");
|
||||
|
||||
/* scanner needs calibration for current mode unless a matching
|
||||
* calibration cache is found */
|
||||
*(SANE_Bool *) val = SANE_TRUE;
|
||||
for (auto& cache : s->dev->calibration_cache)
|
||||
{
|
||||
if (s->dev->cmd_set->is_compatible_calibration(s->dev, sensor, &cache, SANE_FALSE)) {
|
||||
if (s->dev->cmd_set->is_compatible_calibration(s->dev, *sensor, &cache, SANE_FALSE)) {
|
||||
*(SANE_Bool *) val = SANE_FALSE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,6 +99,9 @@ struct Genesys_Model
|
|||
// possible depths in color mode
|
||||
std::vector<unsigned> bpp_color_values;
|
||||
|
||||
// the default scanning method. This is used when moving the head for example
|
||||
ScanMethod default_method = ScanMethod::FLATBED;
|
||||
|
||||
// All offsets below are with respect to the sensor home position
|
||||
|
||||
// Start of scan area in mm
|
||||
|
|
|
@ -1503,7 +1503,7 @@ static void gl124_feed(Genesys_Device* dev, unsigned int steps, int reverse)
|
|||
local_reg = dev->reg;
|
||||
|
||||
resolution=sanei_genesys_get_lowest_ydpi(dev);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, dev->model->default_method);
|
||||
|
||||
ScanSession session;
|
||||
session.params.xres = resolution;
|
||||
|
@ -1637,7 +1637,9 @@ static void gl124_search_start_position(Genesys_Device* dev)
|
|||
/* update regs to copy ASIC internal state */
|
||||
dev->reg = local_reg;
|
||||
|
||||
for (auto& sensor_update : sanei_genesys_find_sensors_all_for_write(dev, ScanMethod::FLATBED)) {
|
||||
for (auto& sensor_update :
|
||||
sanei_genesys_find_sensors_all_for_write(dev, dev->model->default_method))
|
||||
{
|
||||
sanei_genesys_search_reference_point(dev, sensor_update, data.data(), 0, dpi, pixels,
|
||||
dev->model->search_lines);
|
||||
}
|
||||
|
|
|
@ -1812,8 +1812,8 @@ static void gl646_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
|
|||
throw SaneException(SANE_STATUS_DEVICE_BUSY, "motor is still on: device busy");
|
||||
}
|
||||
|
||||
/* setup for a backward scan of 65535 steps, with no actual data reading */
|
||||
settings.scan_method = ScanMethod::FLATBED;
|
||||
// setup for a backward scan of 65535 steps, with no actual data reading
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
|
||||
settings.xres = get_lowest_resolution(dev->model->ccd_type, 1);
|
||||
settings.yres = settings.xres;
|
||||
|
@ -1829,7 +1829,8 @@ static void gl646_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
|
|||
settings.threshold = 0;
|
||||
settings.dynamic_lineart = SANE_FALSE;
|
||||
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, settings.xres, 3, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, settings.xres, 3,
|
||||
dev->model->default_method);
|
||||
|
||||
setup_for_scan(dev, sensor, &dev->reg, settings, SANE_TRUE, SANE_TRUE, SANE_TRUE);
|
||||
|
||||
|
@ -1903,10 +1904,11 @@ static void gl646_search_start_position(Genesys_Device* dev)
|
|||
|
||||
// FIXME: the current approach of doing search only for one resolution does not work on scanners
|
||||
// whith employ different sensors with potentially different settings.
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 1, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 1,
|
||||
dev->model->default_method);
|
||||
|
||||
/* fill settings for a gray level scan */
|
||||
settings.scan_method = ScanMethod::FLATBED;
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.scan_mode = ScanColorMode::GRAY;
|
||||
settings.xres = resolution;
|
||||
settings.yres = resolution;
|
||||
|
@ -1950,7 +1952,9 @@ static void gl646_search_start_position(Genesys_Device* dev)
|
|||
}
|
||||
|
||||
// now search reference points on the data
|
||||
for (auto& sensor_update : sanei_genesys_find_sensors_all_for_write(dev, ScanMethod::FLATBED)) {
|
||||
for (auto& sensor_update :
|
||||
sanei_genesys_find_sensors_all_for_write(dev, dev->model->default_method))
|
||||
{
|
||||
sanei_genesys_search_reference_point(dev, sensor_update, data.data(), 0,
|
||||
resolution, settings.pixels, settings.lines);
|
||||
}
|
||||
|
@ -2267,7 +2271,7 @@ static SensorExposure gl646_led_calibration(Genesys_Device* dev, const Genesys_S
|
|||
resolution = get_closest_resolution(dev->model->ccd_type, sensor.optical_res, channels);
|
||||
|
||||
/* offset calibration is always done in color mode */
|
||||
settings.scan_method = ScanMethod::FLATBED;
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.xres = resolution;
|
||||
settings.yres = resolution;
|
||||
settings.tl_x = 0;
|
||||
|
@ -2436,7 +2440,7 @@ static void ad_fe_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
|
|||
black_pixels = (calib_sensor.black_pixels * resolution) / calib_sensor.optical_res;
|
||||
DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
|
||||
|
||||
settings.scan_method = ScanMethod::FLATBED;
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
|
||||
settings.xres = resolution;
|
||||
settings.yres = resolution;
|
||||
|
@ -2546,7 +2550,7 @@ static void gl646_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
|
|||
|
||||
DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
|
||||
|
||||
settings.scan_method = ScanMethod::FLATBED;
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
|
||||
settings.xres = resolution;
|
||||
settings.yres = resolution;
|
||||
|
@ -2677,7 +2681,7 @@ static void ad_fe_coarse_gain_calibration(Genesys_Device* dev, const Genesys_Sen
|
|||
|
||||
settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
|
||||
|
||||
settings.scan_method = ScanMethod::FLATBED;
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.xres = resolution;
|
||||
settings.yres = resolution;
|
||||
settings.tl_x = 0;
|
||||
|
@ -2933,7 +2937,7 @@ static void gl646_init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor
|
|||
dev->settings.scan_method);
|
||||
|
||||
/* set up for a half width 2 lines gray scan without moving */
|
||||
settings.scan_method = ScanMethod::FLATBED;
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.scan_mode = ScanColorMode::GRAY;
|
||||
settings.xres = resolution;
|
||||
settings.yres = resolution;
|
||||
|
@ -2986,7 +2990,7 @@ static void gl646_repark_head(Genesys_Device* dev)
|
|||
Genesys_Settings settings;
|
||||
unsigned int expected, steps;
|
||||
|
||||
settings.scan_method = ScanMethod::FLATBED;
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
|
||||
settings.xres = get_closest_resolution(dev->model->ccd_type, 75, 1);
|
||||
settings.yres = settings.xres;
|
||||
|
@ -3002,7 +3006,8 @@ static void gl646_repark_head(Genesys_Device* dev)
|
|||
settings.threshold = 0;
|
||||
settings.dynamic_lineart = SANE_FALSE;
|
||||
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, settings.xres, 3, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, settings.xres, 3,
|
||||
dev->model->default_method);
|
||||
|
||||
setup_for_scan(dev, sensor, &dev->reg, settings, SANE_FALSE, SANE_FALSE, SANE_FALSE);
|
||||
|
||||
|
@ -3387,10 +3392,10 @@ static void simple_move(Genesys_Device* dev, SANE_Int distance)
|
|||
|
||||
int resolution = get_lowest_resolution(dev->model->ccd_type, 3);
|
||||
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, dev->model->default_method);
|
||||
|
||||
/* TODO give a no AGOHOME flag */
|
||||
settings.scan_method = ScanMethod::TRANSPARENCY;
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
|
||||
settings.xres = resolution;
|
||||
settings.yres = resolution;
|
||||
|
@ -3687,7 +3692,7 @@ static void gl646_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
|
|||
const auto& calib_sensor = sanei_genesys_find_sensor(dev, res, 1, ScanMethod::FLATBED);
|
||||
|
||||
/* we set up for a lowest available resolution color grey scan, full width */
|
||||
settings.scan_method = ScanMethod::FLATBED;
|
||||
settings.scan_method = dev->model->default_method;
|
||||
settings.scan_mode = ScanColorMode::GRAY;
|
||||
settings.xres = res;
|
||||
settings.yres = res;
|
||||
|
|
|
@ -2692,7 +2692,7 @@ static void gl841_search_start_position(Genesys_Device* dev)
|
|||
|
||||
// FIXME: the current approach of doing search only for one resolution does not work on scanners
|
||||
// whith employ different sensors with potentially different settings.
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, dpi, 1, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, dpi, 1, dev->model->default_method);
|
||||
|
||||
ScanSession session;
|
||||
session.params.xres = dpi;
|
||||
|
@ -2741,7 +2741,9 @@ static void gl841_search_start_position(Genesys_Device* dev)
|
|||
/* update regs to copy ASIC internal state */
|
||||
dev->reg = local_reg;
|
||||
|
||||
for (auto& sensor_update : sanei_genesys_find_sensors_all_for_write(dev, ScanMethod::FLATBED)) {
|
||||
for (auto& sensor_update :
|
||||
sanei_genesys_find_sensors_all_for_write(dev, dev->model->default_method))
|
||||
{
|
||||
sanei_genesys_search_reference_point(dev, sensor_update, data.data(), 0, dpi, pixels,
|
||||
dev->model->search_lines);
|
||||
}
|
||||
|
|
|
@ -2009,7 +2009,7 @@ static void gl843_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
|
|||
local_reg = dev->reg;
|
||||
resolution=sanei_genesys_get_lowest_ydpi(dev);
|
||||
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 1, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 1, dev->model->default_method);
|
||||
|
||||
ScanSession session;
|
||||
session.params.xres = resolution;
|
||||
|
@ -2104,7 +2104,7 @@ static void gl843_search_start_position(Genesys_Device* dev)
|
|||
|
||||
// FIXME: the current approach of doing search only for one resolution does not work on scanners
|
||||
// whith employ different sensors with potentially different settings.
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, dpi, 1, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, dpi, 1, dev->model->default_method);
|
||||
|
||||
ScanSession session;
|
||||
session.params.xres = dpi;
|
||||
|
@ -2155,7 +2155,9 @@ static void gl843_search_start_position(Genesys_Device* dev)
|
|||
/* update regs to copy ASIC internal state */
|
||||
dev->reg = local_reg;
|
||||
|
||||
for (auto& sensor_update : sanei_genesys_find_sensors_all_for_write(dev, ScanMethod::FLATBED)) {
|
||||
for (auto& sensor_update :
|
||||
sanei_genesys_find_sensors_all_for_write(dev, dev->model->default_method))
|
||||
{
|
||||
sanei_genesys_search_reference_point(dev, sensor_update, data.data(), 0, dpi, pixels,
|
||||
dev->model->search_lines);
|
||||
}
|
||||
|
@ -2221,7 +2223,7 @@ static void gl843_feed(Genesys_Device* dev, unsigned int steps)
|
|||
|
||||
resolution=sanei_genesys_get_lowest_ydpi(dev);
|
||||
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, dev->model->default_method);
|
||||
|
||||
ScanSession session;
|
||||
session.params.xres = resolution;
|
||||
|
|
|
@ -1280,7 +1280,7 @@ static void gl846_search_start_position(Genesys_Device* dev)
|
|||
|
||||
// FIXME: the current approach of doing search only for one resolution does not work on scanners
|
||||
// whith employ different sensors with potentially different settings.
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, dpi, 1, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, dpi, 1, dev->model->default_method);
|
||||
|
||||
ScanSession session;
|
||||
session.params.xres = dpi;
|
||||
|
@ -1330,7 +1330,9 @@ static void gl846_search_start_position(Genesys_Device* dev)
|
|||
|
||||
// TODO: find out where sanei_genesys_search_reference_point stores information,
|
||||
// and use that correctly
|
||||
for (auto& sensor_update : sanei_genesys_find_sensors_all_for_write(dev, ScanMethod::FLATBED)) {
|
||||
for (auto& sensor_update :
|
||||
sanei_genesys_find_sensors_all_for_write(dev, dev->model->default_method))
|
||||
{
|
||||
sanei_genesys_search_reference_point(dev, sensor_update, data.data(), 0, dpi, pixels,
|
||||
dev->model->search_lines);
|
||||
}
|
||||
|
@ -1386,7 +1388,7 @@ static void gl846_feed(Genesys_Device* dev, unsigned int steps)
|
|||
local_reg = dev->reg;
|
||||
|
||||
resolution=sanei_genesys_get_lowest_ydpi(dev);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, dev->model->default_method);
|
||||
|
||||
ScanSession session;
|
||||
session.params.xres = resolution;
|
||||
|
|
|
@ -1331,7 +1331,7 @@ static void gl847_search_start_position(Genesys_Device* dev)
|
|||
|
||||
// FIXME: the current approach of doing search only for one resolution does not work on scanners
|
||||
// whith employ different sensors with potentially different settings.
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, dpi, 1, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, dpi, 1, dev->model->default_method);
|
||||
|
||||
ScanSession session;
|
||||
session.params.xres = dpi;
|
||||
|
@ -1381,7 +1381,9 @@ static void gl847_search_start_position(Genesys_Device* dev)
|
|||
|
||||
// TODO: find out where sanei_genesys_search_reference_point stores information,
|
||||
// and use that correctly
|
||||
for (auto& sensor_update : sanei_genesys_find_sensors_all_for_write(dev, ScanMethod::FLATBED)) {
|
||||
for (auto& sensor_update :
|
||||
sanei_genesys_find_sensors_all_for_write(dev, dev->model->default_method))
|
||||
{
|
||||
sanei_genesys_search_reference_point(dev, sensor_update, data.data(), 0, dpi, pixels,
|
||||
dev->model->search_lines);
|
||||
}
|
||||
|
@ -1436,7 +1438,7 @@ static void gl847_feed(Genesys_Device* dev, unsigned int steps)
|
|||
local_reg = dev->reg;
|
||||
|
||||
resolution=sanei_genesys_get_lowest_ydpi(dev);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, ScanMethod::FLATBED);
|
||||
const auto& sensor = sanei_genesys_find_sensor(dev, resolution, 3, dev->model->default_method);
|
||||
|
||||
ScanSession session;
|
||||
session.params.xres = resolution;
|
||||
|
|
|
@ -428,6 +428,8 @@ extern void sanei_genesys_init_structs (Genesys_Device * dev);
|
|||
const Genesys_Sensor& sanei_genesys_find_sensor_any(Genesys_Device* dev);
|
||||
const Genesys_Sensor& sanei_genesys_find_sensor(Genesys_Device* dev, int dpi, unsigned channels,
|
||||
ScanMethod scan_method);
|
||||
bool sanei_genesys_has_sensor(Genesys_Device* dev, unsigned dpi, unsigned channels,
|
||||
ScanMethod scan_method);
|
||||
Genesys_Sensor& sanei_genesys_find_sensor_for_write(Genesys_Device* dev, int dpi, unsigned channels,
|
||||
ScanMethod scan_method);
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue