kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Use sensor functionality instead of compute_ccd_size_divisor()
rodzic
a6a785e28d
commit
e0efbd37b8
|
@ -145,21 +145,6 @@ static void gl124_homsnr_gpio(Genesys_Device* dev)
|
||||||
dev->write_register(REG32, val);
|
dev->write_register(REG32, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**@brief compute half ccd mode
|
|
||||||
* Compute half CCD mode flag. Half CCD is on when dpiset it twice
|
|
||||||
* the actual scanning resolution. Used for fast scans.
|
|
||||||
* @param model pointer to device model
|
|
||||||
* @param xres required horizontal resolution
|
|
||||||
*/
|
|
||||||
static unsigned compute_ccd_size_divisor(const Genesys_Sensor& sensor, int xres)
|
|
||||||
{
|
|
||||||
// we have 2 domains for ccd: xres below or above half ccd max dpi
|
|
||||||
if (xres <= 300 && sensor.ccd_size_divisor > 1) {
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @brief set all registers to default values .
|
/** @brief set all registers to default values .
|
||||||
* This function is called only once at the beginning and
|
* This function is called only once at the beginning and
|
||||||
* fills register startup values for registers reused across scans.
|
* fills register startup values for registers reused across scans.
|
||||||
|
@ -1107,7 +1092,7 @@ static void gl124_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
|
||||||
|
|
||||||
debug_dump(DBG_info, session.params);
|
debug_dump(DBG_info, session.params);
|
||||||
|
|
||||||
unsigned ccd_size_divisor = compute_ccd_size_divisor(sensor, session.params.xres);
|
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(session.params.xres);
|
||||||
|
|
||||||
unsigned optical_res = sensor.optical_res / ccd_size_divisor;
|
unsigned optical_res = sensor.optical_res / ccd_size_divisor;
|
||||||
DBG (DBG_info, "%s: optical_res=%d\n", __func__, optical_res);
|
DBG (DBG_info, "%s: optical_res=%d\n", __func__, optical_res);
|
||||||
|
@ -1306,7 +1291,7 @@ gl124_calculate_current_setup (Genesys_Device * dev, const Genesys_Sensor& senso
|
||||||
session.params.color_filter = dev->settings.color_filter;
|
session.params.color_filter = dev->settings.color_filter;
|
||||||
session.params.flags = 0;
|
session.params.flags = 0;
|
||||||
|
|
||||||
unsigned ccd_size_divisor = compute_ccd_size_divisor(sensor, session.params.xres);
|
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(session.params.xres);
|
||||||
|
|
||||||
DBG(DBG_info, "%s ", __func__);
|
DBG(DBG_info, "%s ", __func__);
|
||||||
debug_dump(DBG_info, session.params);
|
debug_dump(DBG_info, session.params);
|
||||||
|
@ -1914,7 +1899,7 @@ static void gl124_init_regs_for_shading(Genesys_Device* dev, const Genesys_Senso
|
||||||
}
|
}
|
||||||
resolution=dpihw;
|
resolution=dpihw;
|
||||||
|
|
||||||
unsigned ccd_size_divisor = compute_ccd_size_divisor(sensor, dev->settings.xres);
|
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(dev->settings.xres);
|
||||||
|
|
||||||
resolution /= ccd_size_divisor;
|
resolution /= ccd_size_divisor;
|
||||||
dev->calib_lines /= ccd_size_divisor; // reducing just because we reduced the resolution
|
dev->calib_lines /= ccd_size_divisor; // reducing just because we reduced the resolution
|
||||||
|
@ -2011,7 +1996,7 @@ static void gl124_init_regs_for_scan(Genesys_Device* dev, const Genesys_Sensor&
|
||||||
/* start */
|
/* start */
|
||||||
start = SANE_UNFIX (dev->model->x_offset);
|
start = SANE_UNFIX (dev->model->x_offset);
|
||||||
start += dev->settings.tl_x;
|
start += dev->settings.tl_x;
|
||||||
start /= compute_ccd_size_divisor(sensor, dev->settings.xres);
|
start /= sensor.get_ccd_size_divisor_for_dpi(dev->settings.xres);
|
||||||
start = (start * sensor.optical_res) / MM_PER_INCH;
|
start = (start * sensor.optical_res) / MM_PER_INCH;
|
||||||
|
|
||||||
flags = 0;
|
flags = 0;
|
||||||
|
@ -2239,7 +2224,7 @@ static SensorExposure gl124_led_calibration(Genesys_Device* dev, const Genesys_S
|
||||||
depth=16;
|
depth=16;
|
||||||
dpihw = sensor.get_register_hwdpi(dev->settings.xres);
|
dpihw = sensor.get_register_hwdpi(dev->settings.xres);
|
||||||
resolution = dpihw;
|
resolution = dpihw;
|
||||||
unsigned ccd_size_divisor = compute_ccd_size_divisor(sensor, dev->settings.xres);
|
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(dev->settings.xres);
|
||||||
resolution /= ccd_size_divisor;
|
resolution /= ccd_size_divisor;
|
||||||
|
|
||||||
const auto& sensor_profile = get_sensor_profile(sensor, dpihw, ccd_size_divisor);
|
const auto& sensor_profile = get_sensor_profile(sensor, dpihw, ccd_size_divisor);
|
||||||
|
|
|
@ -90,6 +90,15 @@ inline unsigned get_ccd_size_divisor_exact(const Genesys_Sensor& sensor, unsigne
|
||||||
return sensor.ccd_size_divisor;
|
return sensor.ccd_size_divisor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline unsigned get_ccd_size_divisor_gl124(const Genesys_Sensor& sensor, unsigned xres)
|
||||||
|
{
|
||||||
|
// we have 2 domains for ccd: xres below or above half ccd max dpi
|
||||||
|
if (xres <= 300 && sensor.ccd_size_divisor > 1) {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
inline unsigned default_get_hwdpi_divisor_for_dpi(const Genesys_Sensor& sensor, unsigned xres)
|
inline unsigned default_get_hwdpi_divisor_for_dpi(const Genesys_Sensor& sensor, unsigned xres)
|
||||||
{
|
{
|
||||||
return sensor.optical_res / default_get_logical_hwdpi(sensor, xres);
|
return sensor.optical_res / default_get_logical_hwdpi(sensor, xres);
|
||||||
|
@ -2845,7 +2854,7 @@ void genesys_init_sensor_tables()
|
||||||
sensor.get_logical_hwdpi_fun = default_get_logical_hwdpi;
|
sensor.get_logical_hwdpi_fun = default_get_logical_hwdpi;
|
||||||
sensor.get_register_hwdpi_fun = default_get_logical_hwdpi;
|
sensor.get_register_hwdpi_fun = default_get_logical_hwdpi;
|
||||||
sensor.get_hwdpi_divisor_fun = default_get_hwdpi_divisor_for_dpi;
|
sensor.get_hwdpi_divisor_fun = default_get_hwdpi_divisor_for_dpi;
|
||||||
sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi;
|
sensor.get_ccd_size_divisor_fun = get_ccd_size_divisor_gl124;
|
||||||
|
|
||||||
profile = SensorProfile();
|
profile = SensorProfile();
|
||||||
profile.dpi = 600;
|
profile.dpi = 600;
|
||||||
|
@ -2981,7 +2990,7 @@ void genesys_init_sensor_tables()
|
||||||
sensor.get_logical_hwdpi_fun = default_get_logical_hwdpi;
|
sensor.get_logical_hwdpi_fun = default_get_logical_hwdpi;
|
||||||
sensor.get_register_hwdpi_fun = default_get_logical_hwdpi;
|
sensor.get_register_hwdpi_fun = default_get_logical_hwdpi;
|
||||||
sensor.get_hwdpi_divisor_fun = default_get_hwdpi_divisor_for_dpi;
|
sensor.get_hwdpi_divisor_fun = default_get_hwdpi_divisor_for_dpi;
|
||||||
sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi;
|
sensor.get_ccd_size_divisor_fun = get_ccd_size_divisor_gl124;
|
||||||
|
|
||||||
profile = SensorProfile();
|
profile = SensorProfile();
|
||||||
profile.dpi = 600;
|
profile.dpi = 600;
|
||||||
|
@ -3116,7 +3125,7 @@ void genesys_init_sensor_tables()
|
||||||
sensor.get_logical_hwdpi_fun = default_get_logical_hwdpi;
|
sensor.get_logical_hwdpi_fun = default_get_logical_hwdpi;
|
||||||
sensor.get_register_hwdpi_fun = default_get_logical_hwdpi;
|
sensor.get_register_hwdpi_fun = default_get_logical_hwdpi;
|
||||||
sensor.get_hwdpi_divisor_fun = default_get_hwdpi_divisor_for_dpi;
|
sensor.get_hwdpi_divisor_fun = default_get_hwdpi_divisor_for_dpi;
|
||||||
sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi;
|
sensor.get_ccd_size_divisor_fun = get_ccd_size_divisor_gl124;
|
||||||
|
|
||||||
profile = SensorProfile();
|
profile = SensorProfile();
|
||||||
profile.dpi = 600;
|
profile.dpi = 600;
|
||||||
|
@ -3251,7 +3260,7 @@ void genesys_init_sensor_tables()
|
||||||
sensor.get_logical_hwdpi_fun = default_get_logical_hwdpi;
|
sensor.get_logical_hwdpi_fun = default_get_logical_hwdpi;
|
||||||
sensor.get_register_hwdpi_fun = default_get_logical_hwdpi;
|
sensor.get_register_hwdpi_fun = default_get_logical_hwdpi;
|
||||||
sensor.get_hwdpi_divisor_fun = default_get_hwdpi_divisor_for_dpi;
|
sensor.get_hwdpi_divisor_fun = default_get_hwdpi_divisor_for_dpi;
|
||||||
sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi;
|
sensor.get_ccd_size_divisor_fun = get_ccd_size_divisor_gl124;
|
||||||
|
|
||||||
profile = SensorProfile();
|
profile = SensorProfile();
|
||||||
profile.dpi = 600;
|
profile.dpi = 600;
|
||||||
|
|
Ładowanie…
Reference in New Issue