Merge branch 'genesys-sensor-width' into 'master'

genesys: Define sensor width in mm

See merge request sane-project/backends!343
merge-requests/340/head
Povilas Kanapickas 2020-02-22 14:10:46 +00:00
commit 881b17c65f
13 zmienionych plików z 116 dodań i 154 usunięć

Wyświetl plik

@ -150,6 +150,9 @@ struct Genesys_Model
// The size of the scan area that is used to acquire dark/white shading data in mm
float y_size_calib_dark_white_mm = 0;
// The width of the scan area that is used to acquire shading data
float x_size_calib_mm = 0;
// Start of black mark in mm
float x_offset_calib_black = 0;

Wyświetl plik

@ -2620,10 +2620,9 @@ static void genesys_flatbed_calibration(Genesys_Device* dev, Genesys_Sensor& sen
if (!has_flag(dev->model->flags, ModelFlag::SIS_SENSOR)) {
pixels_per_line = static_cast<std::uint32_t>((dev->model->x_size * dev->settings.xres) /
MM_PER_INCH);
}
else
{
pixels_per_line = sensor.sensor_pixels;
} else {
pixels_per_line = static_cast<std::uint32_t>((dev->model->x_size_calib_mm * dev->settings.xres)
/ MM_PER_INCH);
}
// send default shading data
@ -2762,7 +2761,7 @@ static void genesys_sheetfed_calibration(Genesys_Device* dev, Genesys_Sensor& se
* with black point in white shading, build an average black
* pixel and use it to fill the dark_average
* dev->calib_pixels
(sensor.sensor_pixels * dev->settings.xres) / sensor.optical_res,
(sensor.x_size_calib_mm * dev->settings.xres) / MM_PER_INCH,
dev->calib_lines,
*/
}
@ -4318,7 +4317,7 @@ static void probe_genesys_devices()
of Genesys_Calibration_Cache as is.
*/
static const char* CALIBRATION_IDENT = "sane_genesys";
static const int CALIBRATION_VERSION = 26;
static const int CALIBRATION_VERSION = 27;
bool read_calibration(std::istream& str, Genesys_Device::Calibration& calibration,
const std::string& path)

Wyświetl plik

@ -1152,7 +1152,6 @@ void CommandSetGl124::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels,
dev->settings.scan_method);
unsigned factor = calib_sensor.optical_res / resolution;
/* distance to move to reach white target at high resolution */
unsigned move=0;
@ -1167,7 +1166,7 @@ void CommandSetGl124::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
session.params.yres = resolution;
session.params.startx = 0;
session.params.starty = move;
session.params.pixels = calib_sensor.sensor_pixels / factor;
session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
session.params.lines = calib_lines;
session.params.depth = 16;
session.params.channels = channels;
@ -1377,13 +1376,11 @@ static void move_to_calibration_area(Genesys_Device* dev, const Genesys_Sensor&
(void) sensor;
DBG_HELPER(dbg);
int pixels;
unsigned resolution = 600;
unsigned channels = 3;
const auto& move_sensor = sanei_genesys_find_sensor(dev, resolution, channels,
dev->settings.scan_method);
pixels = (move_sensor.sensor_pixels * 600) / move_sensor.optical_res;
/* initial calibration reg values */
regs = dev->reg;
@ -1393,7 +1390,7 @@ static void move_to_calibration_area(Genesys_Device* dev, const Genesys_Sensor&
session.params.yres = resolution;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = pixels;
session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
session.params.lines = 1;
session.params.depth = 8;
session.params.channels = channels;
@ -1440,7 +1437,6 @@ SensorExposure CommandSetGl124::led_calibration(Genesys_Device* dev, const Genes
Genesys_Register_Set& regs) const
{
DBG_HELPER(dbg);
int num_pixels;
int resolution;
int dpihw;
int i;
@ -1460,7 +1456,6 @@ SensorExposure CommandSetGl124::led_calibration(Genesys_Device* dev, const Genes
const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels,
dev->settings.scan_method);
num_pixels = (calib_sensor.sensor_pixels * resolution) / calib_sensor.optical_res;
/* initial calibration reg values */
regs = dev->reg;
@ -1470,7 +1465,7 @@ SensorExposure CommandSetGl124::led_calibration(Genesys_Device* dev, const Genes
session.params.yres = resolution;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = num_pixels;
session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;;
session.params.lines = 1;
session.params.depth = 16;
session.params.channels = channels;
@ -1610,7 +1605,7 @@ void CommandSetGl124::offset_calibration(Genesys_Device* dev, const Genesys_Sens
unsigned channels;
int pass = 0, avg;
int topavg, bottomavg, lines;
int top, bottom, black_pixels, pixels;
int top, bottom, black_pixels;
// no gain nor offset for TI AFE
uint8_t reg0a = dev->interface->read_register(REG_0x0A);
@ -1621,7 +1616,7 @@ void CommandSetGl124::offset_calibration(Genesys_Device* dev, const Genesys_Sens
/* offset calibration is always done in color mode */
channels = 3;
lines=1;
pixels = (sensor.sensor_pixels * sensor.optical_res) / sensor.optical_res;
unsigned pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH;
black_pixels = (sensor.black_pixels * sensor.optical_res) / sensor.optical_res;
DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
@ -1754,7 +1749,6 @@ void CommandSetGl124::coarse_gain_calibration(Genesys_Device* dev, const Genesys
Genesys_Register_Set& regs, int dpi) const
{
DBG_HELPER_ARGS(dbg, "dpi = %d", dpi);
int pixels;
float gain[3],coeff;
int code, lines;
@ -1774,14 +1768,13 @@ void CommandSetGl124::coarse_gain_calibration(Genesys_Device* dev, const Genesys
coeff = 1.0f;
}
lines=10;
pixels = (sensor.sensor_pixels * sensor.optical_res) / sensor.optical_res;
ScanSession session;
session.params.xres = sensor.optical_res;
session.params.yres = sensor.optical_res;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = pixels;
session.params.pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH;;
session.params.lines = lines;
session.params.depth = 8;
session.params.channels = channels;
@ -1888,9 +1881,9 @@ void CommandSetGl124::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se
ScanSession session;
session.params.xres = sensor.optical_res;
session.params.yres = dev->motor.base_ydpi;
session.params.startx = sensor.sensor_pixels / 4;
session.params.startx = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH / 4;
session.params.starty = 0;
session.params.pixels = sensor.sensor_pixels / 2;
session.params.pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH / 2;
session.params.lines = 1;
session.params.depth = 8;
session.params.channels = *channels;

Wyświetl plik

@ -1679,7 +1679,7 @@ void CommandSetGl646::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
settings.yres = settings.xres;
settings.tl_x = 0;
settings.tl_y = 0;
settings.pixels = (calib_sensor.sensor_pixels * settings.xres) / calib_sensor.optical_res;
settings.pixels = dev->model->x_size_calib_mm * settings.xres / MM_PER_INCH;
settings.requested_pixels = settings.pixels;
unsigned calib_lines =
@ -1911,7 +1911,7 @@ SensorExposure CommandSetGl646::led_calibration(Genesys_Device* dev, const Genes
settings.yres = resolution;
settings.tl_x = 0;
settings.tl_y = 0;
settings.pixels = (sensor.sensor_pixels * resolution) / sensor.optical_res;
settings.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
settings.requested_pixels = settings.pixels;
settings.lines = 1;
settings.depth = 16;
@ -2085,7 +2085,7 @@ static void ad_fe_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
settings.yres = resolution;
settings.tl_x = 0;
settings.tl_y = 0;
settings.pixels = (calib_sensor.sensor_pixels * resolution) / calib_sensor.optical_res;
settings.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
settings.requested_pixels = settings.pixels;
settings.lines = CALIBRATION_LINES;
settings.depth = 8;
@ -2196,7 +2196,7 @@ void CommandSetGl646::offset_calibration(Genesys_Device* dev, const Genesys_Sens
settings.yres = resolution;
settings.tl_x = 0;
settings.tl_y = 0;
settings.pixels = (calib_sensor.sensor_pixels * resolution) / calib_sensor.optical_res;
settings.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
settings.requested_pixels = settings.pixels;
settings.lines = CALIBRATION_LINES;
settings.depth = 8;
@ -2332,7 +2332,7 @@ static void ad_fe_coarse_gain_calibration(Genesys_Device* dev, const Genesys_Sen
settings.yres = resolution;
settings.tl_x = 0;
settings.tl_y = 0;
settings.pixels = (calib_sensor.sensor_pixels * resolution) / calib_sensor.optical_res;
settings.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
settings.requested_pixels = settings.pixels;
settings.lines = CALIBRATION_LINES;
settings.depth = 8;
@ -2439,7 +2439,7 @@ void CommandSetGl646::coarse_gain_calibration(Genesys_Device* dev, const Genesys
if (settings.scan_method == ScanMethod::FLATBED)
{
settings.tl_x = 0;
settings.pixels = (calib_sensor.sensor_pixels * resolution) / calib_sensor.optical_res;
settings.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
}
else
{
@ -2588,7 +2588,7 @@ void CommandSetGl646::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se
settings.yres = resolution;
settings.tl_x = 0;
settings.tl_y = 0;
settings.pixels = (local_sensor.sensor_pixels * resolution) / local_sensor.optical_res;
settings.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
settings.requested_pixels = settings.pixels;
settings.lines = 2;
settings.depth = 8;
@ -2710,7 +2710,9 @@ void CommandSetGl646::init(Genesys_Device* dev) const
gl646_init_regs (dev);
// Init shading data
sanei_genesys_init_shading_data(dev, sensor, sensor.sensor_pixels);
sanei_genesys_init_shading_data(dev, sensor,
dev->model->x_size_calib_mm * sensor.optical_res /
MM_PER_INCH);
dev->initial_regs = dev->reg;
}
@ -2990,7 +2992,7 @@ static void simple_move(Genesys_Device* dev, SANE_Int distance)
settings.yres = resolution;
settings.tl_y = 0;
settings.tl_x = 0;
settings.pixels = (sensor.sensor_pixels * settings.xres) / sensor.optical_res;
settings.pixels = dev->model->x_size_calib_mm * settings.xres / MM_PER_INCH;
settings.requested_pixels = settings.pixels;
settings.lines = static_cast<unsigned>((distance * settings.xres) / MM_PER_INCH);
settings.depth = 8;

Wyświetl plik

@ -410,14 +410,15 @@ gl841_init_registers (Genesys_Device * dev)
dev->reg.find_reg(0x05).value = 0x00; /* disable gamma, 24 clocks/pixel */
unsigned dpihw = 0;
if (sensor.sensor_pixels < 0x1500) {
unsigned sensor_pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH;
if (sensor_pixels < 0x1500) {
dpihw = 600;
} else if (sensor.sensor_pixels < 0x2a80) {
} else if (sensor_pixels < 0x2a80) {
dpihw = 1200;
} else if (sensor.sensor_pixels < 0x5400) {
} else if (sensor_pixels < 0x5400) {
dpihw = 2400;
} else {
throw SaneException("Cannot handle sensor pixel count %d", sensor.sensor_pixels);
throw SaneException("Cannot handle sensor pixel count %d", sensor_pixels);
}
sanei_genesys_set_dpihw(dev->reg, sensor, dpihw);
@ -2305,7 +2306,6 @@ void CommandSetGl841::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
unsigned channels = 3;
unsigned resolution = sensor.get_logical_hwdpi(dev->settings.xres);
unsigned factor = sensor.optical_res / resolution;
const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels,
dev->settings.scan_method);
@ -2319,7 +2319,7 @@ void CommandSetGl841::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
session.params.yres = resolution;
session.params.startx = 0;
session.params.starty = starty;
session.params.pixels = calib_sensor.sensor_pixels / factor;
session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
session.params.lines = calib_lines;
session.params.depth = 16;
session.params.channels = channels;
@ -2374,7 +2374,6 @@ SensorExposure CommandSetGl841::led_calibration(Genesys_Device* dev, const Genes
Genesys_Register_Set& regs) const
{
DBG_HELPER(dbg);
int num_pixels;
int i;
int avg[3], avga, avge;
int turn;
@ -2395,19 +2394,16 @@ SensorExposure CommandSetGl841::led_calibration(Genesys_Device* dev, const Genes
unsigned channels = 3;
unsigned resolution = sensor.get_logical_hwdpi(dev->settings.xres);
unsigned factor = sensor.optical_res / resolution;
const auto& calib_sensor_base = sanei_genesys_find_sensor(dev, resolution, channels,
dev->settings.scan_method);
num_pixels = calib_sensor_base.sensor_pixels / factor;
ScanSession session;
session.params.xres = resolution;
session.params.yres = dev->settings.yres;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = num_pixels;
session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
session.params.lines = 1;
session.params.depth = 16;
session.params.channels = channels;
@ -2577,7 +2573,6 @@ static void ad_fe_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
Genesys_Register_Set& regs)
{
DBG_HELPER(dbg);
int num_pixels;
int average;
int turn;
int top;
@ -2590,13 +2585,11 @@ static void ad_fe_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
}
unsigned resolution = sensor.get_logical_hwdpi(dev->settings.xres);
unsigned factor = sensor.optical_res / resolution;
const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, 3,
dev->settings.scan_method);
num_pixels = calib_sensor.sensor_pixels / factor;
unsigned num_pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
ScanSession session;
session.params.xres = resolution;
session.params.yres = dev->settings.yres;
@ -2700,7 +2693,6 @@ void CommandSetGl841::offset_calibration(Genesys_Device* dev, const Genesys_Sens
Genesys_Register_Set& regs) const
{
DBG_HELPER(dbg);
int num_pixels;
int off[3],offh[3],offl[3],off1[3],off2[3];
int min1[3],min2[3];
unsigned cmin[3],cmax[3];
@ -2717,19 +2709,16 @@ void CommandSetGl841::offset_calibration(Genesys_Device* dev, const Genesys_Sens
unsigned channels = 3;
unsigned resolution = sensor.get_logical_hwdpi(dev->settings.xres);
unsigned factor = sensor.optical_res / resolution;
const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels,
dev->settings.scan_method);
num_pixels = calib_sensor.sensor_pixels / factor;
ScanSession session;
session.params.xres = resolution;
session.params.yres = dev->settings.yres;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = num_pixels;
session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
session.params.lines = 1;
session.params.depth = 16;
session.params.channels = channels;
@ -3043,7 +3032,6 @@ void CommandSetGl841::coarse_gain_calibration(Genesys_Device* dev, const Genesys
Genesys_Register_Set& regs, int dpi) const
{
DBG_HELPER_ARGS(dbg, "dpi=%d", dpi);
int num_pixels;
float gain[3];
int lines=1;
@ -3058,12 +3046,11 @@ void CommandSetGl841::coarse_gain_calibration(Genesys_Device* dev, const Genesys
unsigned channels = 3;
unsigned resolution = sensor.get_logical_hwdpi(dev->settings.xres);
unsigned factor = sensor.optical_res / resolution;
const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels,
dev->settings.scan_method);
num_pixels = calib_sensor.sensor_pixels / factor;
unsigned num_pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
ScanSession session;
session.params.xres = resolution;
@ -3298,7 +3285,8 @@ void CommandSetGl841::init(Genesys_Device* dev) const
dev->cmd_set->move_back_home(dev, true);
// Init shading data
sanei_genesys_init_shading_data(dev, sensor, sensor.sensor_pixels);
unsigned sensor_pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH;
sanei_genesys_init_shading_data(dev, sensor, sensor_pixels);
/* ensure head is correctly parked, and check lock */
if (has_flag(dev->model->flags, ModelFlag::REPARK)) {
@ -3414,7 +3402,7 @@ void CommandSetGl841::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
bool black) const
{
DBG_HELPER_ARGS(dbg, "%s %s", black ? "black" : "white", forward ? "forward" : "reverse");
unsigned int pixels, lines, channels;
unsigned lines, channels;
Genesys_Register_Set local_reg;
unsigned int pass, count, found, length;
char title[80];
@ -3443,8 +3431,6 @@ void CommandSetGl841::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
lines = 10; // TODO: use dev->model->search_lines
lines = static_cast<unsigned>((lines * dpi) / MM_PER_INCH);
pixels = (sensor.sensor_pixels * dpi) / sensor.optical_res;
/* 20 cm max length for calibration sheet */
length = static_cast<unsigned>(((200 * dpi) / MM_PER_INCH) / lines);
@ -3457,7 +3443,7 @@ void CommandSetGl841::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
session.params.yres = dpi;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = pixels;
session.params.pixels = dev->model->x_size_calib_mm * dpi / MM_PER_INCH;
session.params.lines = lines;
session.params.depth = 8;
session.params.channels = channels;

Wyświetl plik

@ -1576,7 +1576,7 @@ void CommandSetGl843::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
Genesys_Register_Set& regs) const
{
DBG_HELPER(dbg);
int move, resolution, dpihw, factor;
int move;
float calib_size_mm = 0;
if (dev->settings.scan_method == ScanMethod::TRANSPARENCY ||
@ -1587,9 +1587,7 @@ void CommandSetGl843::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
calib_size_mm = dev->model->y_size_calib_mm;
}
dpihw = sensor.get_logical_hwdpi(dev->settings.xres);
factor=sensor.optical_res/dpihw;
resolution=dpihw;
unsigned resolution = sensor.get_logical_hwdpi(dev->settings.xres);
unsigned channels = 3;
const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels,
@ -1611,7 +1609,7 @@ void CommandSetGl843::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
calib_pixels = static_cast<std::size_t>(size);
} else {
calib_pixels_offset = 0;
calib_pixels = calib_sensor.sensor_pixels / factor;
calib_pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
}
ScanFlag flags = ScanFlag::DISABLE_SHADING |
@ -1703,7 +1701,6 @@ SensorExposure CommandSetGl843::led_calibration(Genesys_Device* dev, const Genes
Genesys_Register_Set& regs) const
{
DBG_HELPER(dbg);
int num_pixels;
int avg[3], avga, avge;
int turn;
uint16_t expr, expg, expb;
@ -1715,17 +1712,15 @@ SensorExposure CommandSetGl843::led_calibration(Genesys_Device* dev, const Genes
auto calib_sensor = sanei_genesys_find_sensor(dev, sensor.optical_res, channels,
dev->settings.scan_method);
num_pixels = (calib_sensor.sensor_pixels * calib_sensor.optical_res) / calib_sensor.optical_res;
/* initial calibration reg values */
regs = dev->reg;
ScanSession session;
session.params.xres = calib_sensor.sensor_pixels;
session.params.xres = calib_sensor.optical_res;
session.params.yres = dev->motor.base_ydpi;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = num_pixels;
session.params.pixels = dev->model->x_size_calib_mm * calib_sensor.optical_res / MM_PER_INCH;
session.params.lines = 1;
session.params.depth = 16;
session.params.channels = channels;
@ -1914,7 +1909,7 @@ void CommandSetGl843::offset_calibration(Genesys_Device* dev, const Genesys_Sens
const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels,
dev->settings.scan_method);
int target_pixels = calib_sensor.sensor_pixels / factor;
int target_pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
int start_pixel = 0;
black_pixels = calib_sensor.black_pixels / factor;
@ -2122,7 +2117,7 @@ void CommandSetGl843::coarse_gain_calibration(Genesys_Device* dev, const Genesys
Genesys_Register_Set& regs, int dpi) const
{
DBG_HELPER_ARGS(dbg, "dpi = %d", dpi);
int factor, dpihw;
int dpihw;
float coeff;
int lines;
int resolution;
@ -2131,7 +2126,6 @@ void CommandSetGl843::coarse_gain_calibration(Genesys_Device* dev, const Genesys
return;
dpihw = sensor.get_logical_hwdpi(dpi);
factor=sensor.optical_res/dpihw;
// coarse gain calibration is always done in color mode
unsigned channels = 3;
@ -2153,7 +2147,6 @@ void CommandSetGl843::coarse_gain_calibration(Genesys_Device* dev, const Genesys
}
resolution=dpihw;
lines=10;
int target_pixels = sensor.sensor_pixels / factor;
ScanFlag flags = ScanFlag::DISABLE_SHADING |
ScanFlag::DISABLE_GAMMA |
@ -2175,7 +2168,7 @@ void CommandSetGl843::coarse_gain_calibration(Genesys_Device* dev, const Genesys
session.params.yres = resolution;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = target_pixels;
session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
session.params.lines = lines;
session.params.depth = 8;
session.params.channels = channels;
@ -2267,10 +2260,8 @@ void CommandSetGl843::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se
int* total_size) const
{
DBG_HELPER(dbg);
int num_pixels;
int dpihw;
int resolution;
int factor;
/* setup scan */
*channels=3;
@ -2280,8 +2271,7 @@ void CommandSetGl843::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se
const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, *channels,
dev->settings.scan_method);
factor = calib_sensor.optical_res/dpihw;
num_pixels = calib_sensor.sensor_pixels/(factor*2);
unsigned num_pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH / 2;
*total_size = num_pixels * 3 * 1;
*reg = dev->reg;
@ -2501,7 +2491,7 @@ void CommandSetGl843::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
bool forward, bool black) const
{
DBG_HELPER_ARGS(dbg, "%s %s", black ? "black" : "white", forward ? "forward" : "reverse");
unsigned int pixels, channels;
unsigned channels;
Genesys_Register_Set local_reg;
int dpi;
unsigned int pass, count, found, x, y;
@ -2520,7 +2510,7 @@ void CommandSetGl843::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
/* lines = (10 * dpi) / MM_PER_INCH; */
/* shading calibation is done with dev->motor.base_ydpi */
unsigned lines = static_cast<unsigned>(dev->model->y_size_calib_mm * dpi / MM_PER_INCH);
pixels = (calib_sensor.sensor_pixels * dpi) / calib_sensor.optical_res;
unsigned pixels = dev->model->x_size_calib_mm * dpi / MM_PER_INCH;
dev->set_head_pos_zero(ScanHeadId::PRIMARY);

Wyświetl plik

@ -924,8 +924,6 @@ void CommandSetGl846::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
unsigned calib_lines =
static_cast<unsigned>(dev->model->y_size_calib_mm * resolution / MM_PER_INCH);
unsigned calib_pixels = (calib_sensor.sensor_pixels * resolution) /
calib_sensor.optical_res;
/* this is aworkaround insufficent distance for slope
* motor acceleration TODO special motor slope for shading */
@ -939,7 +937,7 @@ void CommandSetGl846::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
session.params.yres = resolution;
session.params.startx = 0;
session.params.starty = static_cast<unsigned>(move);
session.params.pixels = calib_pixels;
session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;
session.params.lines = calib_lines;
session.params.depth = 16;
session.params.channels = channels;
@ -1125,7 +1123,6 @@ SensorExposure CommandSetGl846::led_calibration(Genesys_Device* dev, const Genes
Genesys_Register_Set& regs) const
{
DBG_HELPER(dbg);
int num_pixels;
int used_res;
int i;
int avg[3], top[3], bottom[3];
@ -1146,7 +1143,6 @@ SensorExposure CommandSetGl846::led_calibration(Genesys_Device* dev, const Genes
used_res = sensor.get_register_hwdpi(dev->settings.xres);
const auto& calib_sensor = sanei_genesys_find_sensor(dev, used_res, channels,
dev->settings.scan_method);
num_pixels = (calib_sensor.sensor_pixels * used_res) / calib_sensor.optical_res;
/* initial calibration reg values */
regs = dev->reg;
@ -1156,7 +1152,7 @@ SensorExposure CommandSetGl846::led_calibration(Genesys_Device* dev, const Genes
session.params.yres = used_res;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = num_pixels;
session.params.pixels = dev->model->x_size_calib_mm * used_res / MM_PER_INCH;
session.params.lines = 1;
session.params.depth = 16;
session.params.channels = channels;
@ -1455,7 +1451,7 @@ void CommandSetGl846::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
bool black) const
{
DBG_HELPER_ARGS(dbg, "%s %s", black ? "black" : "white", forward ? "forward" : "reverse");
unsigned int pixels, channels;
unsigned channels;
Genesys_Register_Set local_reg;
unsigned int pass, count, found;
char title[80];
@ -1472,7 +1468,6 @@ void CommandSetGl846::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
/* lines = (10 * dpi) / MM_PER_INCH; */
/* shading calibation is done with dev->motor.base_ydpi */
unsigned lines = static_cast<unsigned>(dev->model->y_size_calib_mm * dpi / MM_PER_INCH);
pixels = (sensor.sensor_pixels * dpi) / sensor.optical_res;
dev->set_head_pos_zero(ScanHeadId::PRIMARY);
@ -1483,7 +1478,7 @@ void CommandSetGl846::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
session.params.yres = dpi;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = pixels;
session.params.pixels = dev->model->x_size_calib_mm * dpi / MM_PER_INCH;
session.params.lines = lines;
session.params.depth = 8;
session.params.channels = channels;
@ -1674,7 +1669,7 @@ void CommandSetGl846::offset_calibration(Genesys_Device* dev, const Genesys_Sens
unsigned channels;
int pass = 0, avg;
int topavg, bottomavg, lines;
int top, bottom, black_pixels, pixels;
int top, bottom, black_pixels;
// no gain nor offset for AKM AFE
uint8_t reg04 = dev->interface->read_register(REG_0x04);
@ -1685,7 +1680,7 @@ void CommandSetGl846::offset_calibration(Genesys_Device* dev, const Genesys_Sens
/* offset calibration is always done in color mode */
channels = 3;
lines=1;
pixels = (sensor.sensor_pixels * sensor.optical_res) / sensor.optical_res;
unsigned pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH;
black_pixels = (sensor.black_pixels * sensor.optical_res) / sensor.optical_res;
DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
@ -1806,7 +1801,6 @@ void CommandSetGl846::coarse_gain_calibration(Genesys_Device* dev, const Genesys
Genesys_Register_Set& regs, int dpi) const
{
DBG_HELPER(dbg);
int pixels;
float gain[3],coeff;
int code, lines;
@ -1831,14 +1825,13 @@ void CommandSetGl846::coarse_gain_calibration(Genesys_Device* dev, const Genesys
coeff=1.0;
}
lines=10;
pixels = (sensor.sensor_pixels * sensor.optical_res) / sensor.optical_res;
ScanSession session;
session.params.xres = sensor.optical_res;
session.params.yres = sensor.optical_res;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = pixels;
session.params.pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH;
session.params.lines = lines;
session.params.depth = 8;
session.params.channels = channels;

Wyświetl plik

@ -930,15 +930,13 @@ void CommandSetGl847::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
unsigned calib_lines =
static_cast<unsigned>(dev->model->y_size_calib_mm * resolution / MM_PER_INCH);
unsigned calib_pixels = (calib_sensor.sensor_pixels * resolution) /
calib_sensor.optical_res;
ScanSession session;
session.params.xres = resolution;
session.params.yres = resolution;
session.params.startx = 0;
session.params.starty = 20;
session.params.pixels = calib_pixels;
session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH;;
session.params.lines = calib_lines;
session.params.depth = 16;
session.params.channels = channels;
@ -1124,7 +1122,6 @@ SensorExposure CommandSetGl847::led_calibration(Genesys_Device* dev, const Genes
Genesys_Register_Set& regs) const
{
DBG_HELPER(dbg);
int num_pixels;
int used_res;
int i;
int avg[3], top[3], bottom[3];
@ -1145,7 +1142,6 @@ SensorExposure CommandSetGl847::led_calibration(Genesys_Device* dev, const Genes
used_res = sensor.get_register_hwdpi(dev->settings.xres);
const auto& calib_sensor = sanei_genesys_find_sensor(dev, used_res, channels,
dev->settings.scan_method);
num_pixels = (calib_sensor.sensor_pixels * used_res) / calib_sensor.optical_res;
/* initial calibration reg values */
regs = dev->reg;
@ -1155,7 +1151,7 @@ SensorExposure CommandSetGl847::led_calibration(Genesys_Device* dev, const Genes
session.params.yres = used_res;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = num_pixels;
session.params.pixels = dev->model->x_size_calib_mm * used_res / MM_PER_INCH;
session.params.lines = 1;
session.params.depth = 16;
session.params.channels = channels;
@ -1491,7 +1487,6 @@ void CommandSetGl847::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
bool black) const
{
DBG_HELPER_ARGS(dbg, "%s %s", black ? "black" : "white", forward ? "forward" : "reverse");
unsigned int pixels;
Genesys_Register_Set local_reg;
unsigned int pass, count, found;
char title[80];
@ -1505,7 +1500,6 @@ void CommandSetGl847::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
unsigned channels = 1;
unsigned lines = static_cast<unsigned>(dev->model->y_size_calib_mm * dpi / MM_PER_INCH);
pixels = (sensor.sensor_pixels * dpi) / sensor.optical_res;
dev->set_head_pos_zero(ScanHeadId::PRIMARY);
local_reg = dev->reg;
@ -1515,7 +1509,7 @@ void CommandSetGl847::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
session.params.yres = dpi;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = pixels;
session.params.pixels = dev->model->x_size_calib_mm * dpi / MM_PER_INCH;
session.params.lines = lines;
session.params.depth = 8;
session.params.channels = channels;
@ -1706,7 +1700,7 @@ void CommandSetGl847::offset_calibration(Genesys_Device* dev, const Genesys_Sens
unsigned channels;
int pass = 0, avg;
int topavg, bottomavg, lines;
int top, bottom, black_pixels, pixels;
int top, bottom, black_pixels;
// no gain nor offset for AKM AFE
uint8_t reg04 = dev->interface->read_register(REG_0x04);
@ -1717,7 +1711,7 @@ void CommandSetGl847::offset_calibration(Genesys_Device* dev, const Genesys_Sens
/* offset calibration is always done in color mode */
channels = 3;
lines=1;
pixels= (sensor.sensor_pixels * sensor.optical_res) / sensor.optical_res;
unsigned pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH;
black_pixels = (sensor.black_pixels * sensor.optical_res) / sensor.optical_res;
DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
@ -1837,7 +1831,6 @@ void CommandSetGl847::coarse_gain_calibration(Genesys_Device* dev, const Genesys
Genesys_Register_Set& regs, int dpi) const
{
DBG_HELPER_ARGS(dbg, "dpi = %d", dpi);
int pixels;
float gain[3],coeff;
int code, lines;
@ -1860,14 +1853,13 @@ void CommandSetGl847::coarse_gain_calibration(Genesys_Device* dev, const Genesys
coeff=1.0;
}
lines=10;
pixels = (sensor.sensor_pixels * sensor.optical_res) / sensor.optical_res;
ScanSession session;
session.params.xres = sensor.optical_res;
session.params.yres = sensor.optical_res;
session.params.startx = 0;
session.params.starty = 0;
session.params.pixels = pixels;
session.params.pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH;
session.params.lines = lines;
session.params.depth = 8;
session.params.channels = channels;

Wyświetl plik

@ -148,7 +148,6 @@ std::ostream& operator<<(std::ostream& out, const Genesys_Sensor& sensor)
<< " black_pixels: " << sensor.black_pixels << '\n'
<< " dummy_pixel: " << sensor.dummy_pixel << '\n'
<< " ccd_start_xoffset: " << sensor.ccd_start_xoffset << '\n'
<< " sensor_pixels: " << sensor.sensor_pixels << '\n'
<< " fau_gain_white_ref: " << sensor.fau_gain_white_ref << '\n'
<< " gain_white_ref: " << sensor.gain_white_ref << '\n'
<< " exposure: " << format_indent_braced_list(4, sensor.exposure) << '\n'

Wyświetl plik

@ -374,8 +374,6 @@ struct Genesys_Sensor {
int dummy_pixel = 0;
// last pixel of CCD margin at optical resolution
int ccd_start_xoffset = 0;
// total pixels used by the sensor
int sensor_pixels = 0;
// TA CCD target code (reference gain)
int fau_gain_white_ref = 0;
// CCD target code (reference gain)
@ -455,7 +453,6 @@ struct Genesys_Sensor {
black_pixels == other.black_pixels &&
dummy_pixel == other.dummy_pixel &&
ccd_start_xoffset == other.ccd_start_xoffset &&
sensor_pixels == other.sensor_pixels &&
fau_gain_white_ref == other.fau_gain_white_ref &&
gain_white_ref == other.gain_white_ref &&
exposure == other.exposure &&
@ -482,7 +479,6 @@ void serialize(Stream& str, Genesys_Sensor& x)
serialize(str, x.black_pixels);
serialize(str, x.dummy_pixel);
serialize(str, x.ccd_start_xoffset);
serialize(str, x.sensor_pixels);
serialize(str, x.fau_gain_white_ref);
serialize(str, x.gain_white_ref);
serialize_newline(str);

Wyświetl plik

@ -123,6 +123,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 1.0;
model.x_size_calib_mm = 228.6;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -173,6 +174,7 @@ void genesys_init_usb_device_tables()
model.y_size_calib_mm = 3.0;
model.y_offset_calib_dark_white_mm = 1.0;
model.y_size_calib_dark_white_mm = 6.0;
model.x_size_calib_mm = 220.13334;
model.x_offset_calib_black = 0.0;
model.post_scan = 0.0;
@ -228,6 +230,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 9.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 227.584;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -278,6 +281,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 226.9067;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -328,6 +332,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 3.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 226.9067;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -378,6 +383,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 226.9067;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -433,6 +439,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 2.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 241.3;
model.x_offset_ta = 115.0;
model.y_offset_ta = 60.0;
@ -505,6 +512,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 3.0;
model.x_offset_calib_black = 10.0;
model.x_size_calib_mm = 225.425;
model.x_offset_ta = 75.0;
model.y_offset_ta = 45.00;
@ -571,6 +579,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 8.0;
model.x_size_calib_mm = 240.70734;
model.x_offset_ta = 94.0;
model.y_offset_ta = 26.0;
@ -633,6 +642,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 1.0;
model.y_size_calib_mm = 3.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 217.4241;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -689,6 +699,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 3.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 218.7787;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -743,6 +754,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 1.0;
model.y_size_calib_mm = 3.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 216.0694;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -797,6 +809,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 3.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 218.7787;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -854,6 +867,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 3.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 218.7787;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -909,6 +923,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 3.0;
model.y_size_calib_mm = 3.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 217.4241;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -965,6 +980,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 1.0;
model.y_size_calib_mm = 3.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 219.6254;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1021,6 +1037,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 3.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 217.4241;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1078,6 +1095,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_dark_white_mm = 1.0;
model.y_size_calib_dark_white_mm = 6.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 220.13334;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1132,6 +1150,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_dark_white_mm = 1.0;
model.y_size_calib_dark_white_mm = 6.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 216.7467;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1186,6 +1205,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 1.0;
model.x_size_calib_mm = 227.2454;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1238,6 +1258,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 2.0; // FIXME: check if white area is really so small
model.x_offset_calib_black = 1.0;
model.x_size_calib_mm = 230.1241;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1290,6 +1311,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 220.1334;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1342,6 +1364,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 1.0;
model.x_size_calib_mm = 230.1241;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1393,6 +1416,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 1.0;
model.x_size_calib_mm = 229.2774;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1441,6 +1465,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 1.0;
model.x_size_calib_mm = 228.6;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1492,6 +1517,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.00;
model.y_size_calib_mm = 3.0; // FIXME: the y_offset is most likely incorrect
model.x_offset_calib_black = 0.00;
model.x_size_calib_mm = 230.1241;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -1547,6 +1573,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 433.4934;
model.post_scan = 26.5;
// this is larger than needed -- accounts for second sensor head, which is a calibration item
@ -1597,6 +1624,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 105.664;
model.post_scan = 17.5;
model.eject_feed = 0.0;
@ -1647,6 +1675,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 220.1334;
model.post_scan = 16.0;
model.eject_feed = 0.0;
@ -1697,6 +1726,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 220.1334;
model.post_scan = 16.0;
model.eject_feed = 0.0;
@ -1749,6 +1779,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 220.1334;
model.post_scan = 16.0;
model.eject_feed = 0.0;
@ -1799,6 +1830,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 220.1334;
model.post_scan = 16.0;
model.eject_feed = 0.0;
@ -1851,6 +1883,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 220.1334;
model.post_scan = 16.0;
model.eject_feed = 0.0;
@ -1900,6 +1933,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 212.5134;
model.post_scan = 26.5;
// this is larger than needed -- accounts for second sensor head, which is a calibration item
@ -1952,6 +1986,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 433.4934;
model.post_scan = 26.5;
// this is larger than needed -- accounts for second sensor head, which is a calibration item
@ -2003,6 +2038,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 433.4934;
model.post_scan = 26.5;
// this is larger than needed -- accounts for second sensor head, which is a calibration item
@ -2056,6 +2092,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.00;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.00;
model.x_size_calib_mm = 230.1241;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -2111,6 +2148,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.00;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.00;
model.x_size_calib_mm = 230.1241;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -2166,6 +2204,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 220.1334;
model.post_scan = 16.0;
model.eject_feed = 0.0;
@ -2217,6 +2256,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 213.7834;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -2270,6 +2310,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 0.0;
model.x_offset_calib_black = 6.5;
model.x_size_calib_mm = 35.9834;
model.x_offset_ta = 0.0;
model.y_offset_ta = 29.0;
@ -2335,6 +2376,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 0.0;
model.x_offset_calib_black = 6.5;
model.x_size_calib_mm = 35.9834;
model.x_offset_ta = 0.0;
model.y_offset_ta = 29.0;
@ -2404,6 +2446,7 @@ void genesys_init_usb_device_tables()
model.y_offset_ta = 29.0;
model.x_size_ta = 36.0;
model.y_size_ta = 24.0;
model.x_size_calib_mm = 35.9834;
model.y_offset_sensor_to_ta = 0.0;
model.y_offset_calib_black_ta = 6.5;
@ -2462,6 +2505,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.y_size_calib_mm = 4.0; // FIXME: y_offset is liely incorrect
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 452.12;
model.post_scan = 0;
model.eject_feed = 0;
@ -2517,6 +2561,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 9.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 215.9;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -2567,6 +2612,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 9.0;
model.y_size_calib_mm = 4.0;
model.x_offset_calib_black = 0.0;
model.x_size_calib_mm = 228.6;
model.post_scan = 0.0;
model.eject_feed = 0.0;
@ -2596,6 +2642,11 @@ void verify_usb_device_tables()
{
for (const auto& device : *s_usb_devices) {
const auto& model = device.model;
if (model.x_size_calib_mm == 0.0f) {
throw SaneException("Calibration width can't be zero");
}
if (model.has_method(ScanMethod::FLATBED)) {
if (model.y_size_calib_mm == 0.0f) {
throw SaneException("Calibration size can't be zero");

Wyświetl plik

@ -123,7 +123,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 48;
sensor.dummy_pixel = 64;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10800;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 230;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -168,7 +167,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 48;
sensor.dummy_pixel = 85;
sensor.ccd_start_xoffset = 152;
sensor.sensor_pixels = 5416;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 230;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -213,7 +211,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 48;
sensor.dummy_pixel = 64;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10800;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 230;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -259,7 +256,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 48;
sensor.dummy_pixel = 16;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10872;
sensor.fau_gain_white_ref = 190;
sensor.gain_white_ref = 190;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -577,7 +573,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 48;
sensor.dummy_pixel = 15;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10872;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -810,7 +805,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 48;
sensor.dummy_pixel = 20;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 5368;
sensor.fau_gain_white_ref = 180;
sensor.gain_white_ref = 180;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -988,7 +982,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 87;
sensor.dummy_pixel = 87;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10400;
sensor.fau_gain_white_ref = 0;
sensor.gain_white_ref = 0;
sensor.exposure = { 0x0400, 0x0400, 0x0400 };
@ -1033,7 +1026,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 5;
sensor.dummy_pixel = 38;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 5200;
sensor.fau_gain_white_ref = 200;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x1450, 0x0c80, 0x0a28 };
@ -1135,7 +1127,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 48;
sensor.dummy_pixel = 16;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10872;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0, 0, 0 };
@ -1395,7 +1386,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 27;
sensor.dummy_pixel = 27;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 2496;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x1100, 0x1100, 0x1100 };
@ -1440,7 +1430,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 27;
sensor.dummy_pixel = 27;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 5200;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x1100, 0x1100, 0x1100 };
@ -1485,7 +1474,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 28;
sensor.dummy_pixel = 28;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 5200;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x1544, 0x1544, 0x1544 };
@ -1530,7 +1518,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 27;
sensor.dummy_pixel = 27;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10240;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x1100, 0x1100, 0x1100 };
@ -1575,7 +1562,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 27;
sensor.dummy_pixel = 27;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 5020;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x1100, 0x1100, 0x1100 };
@ -1620,7 +1606,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 87*4;
sensor.dummy_pixel = 16*4;
sensor.ccd_start_xoffset = 320*8;
sensor.sensor_pixels = 5136*8;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -1724,8 +1709,6 @@ void genesys_init_sensor_tables()
sensor.dummy_pixel = 16*8;
// 384 at 600 dpi
sensor.ccd_start_xoffset = 384*8;
// 8x5570 segments, 5187+1 for rounding
sensor.sensor_pixels = 5188*8;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.gamma = { 1.0f, 1.0f, 1.0f };
@ -1825,7 +1808,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 87*4;
sensor.dummy_pixel = 16*4;
sensor.ccd_start_xoffset = 320*4;
sensor.sensor_pixels = 5136*4;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x01c1, 0x0126, 0x00e5 };
@ -1915,7 +1897,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 38;
sensor.dummy_pixel = 38;
sensor.ccd_start_xoffset = 152;
sensor.sensor_pixels = 5376;
sensor.fau_gain_white_ref = 160;
sensor.gain_white_ref = 160;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -1962,7 +1943,6 @@ void genesys_init_sensor_tables()
// 31 at 600 dpi dummy_pixels 58 at 1200
sensor.dummy_pixel = 58;
sensor.ccd_start_xoffset = 152;
sensor.sensor_pixels = 5360*8;
sensor.fau_gain_white_ref = 160;
sensor.gain_white_ref = 160;
sensor.exposure = { 0x2c09, 0x22b8, 0x10f0 };
@ -2143,7 +2123,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 100;
sensor.dummy_pixel = 58;
sensor.ccd_start_xoffset = 152;
sensor.sensor_pixels = 5360*8;
sensor.fau_gain_white_ref = 160;
sensor.gain_white_ref = 160;
sensor.exposure = { 0x2c09, 0x22b8, 0x10f0 };
@ -2256,8 +2235,6 @@ void genesys_init_sensor_tables()
// 31 at 600 dpi, 58 at 1200 dpi
sensor.dummy_pixel = 20;
sensor.ccd_start_xoffset = 152;
// 5360 max at 600 dpi
sensor.sensor_pixels = 5700 * 8;
sensor.fau_gain_white_ref = 160;
sensor.gain_white_ref = 160;
sensor.exposure = { 0x9c40, 0x9c40, 0x9c40 };
@ -2355,7 +2332,6 @@ void genesys_init_sensor_tables()
// 31 at 600 dpi, 58 at 1200 dpi
sensor.dummy_pixel = 20;
sensor.ccd_start_xoffset = 152;
sensor.sensor_pixels = 28400;
sensor.fau_gain_white_ref = 160;
sensor.gain_white_ref = 160;
sensor.exposure = { 0x9c40, 0x9c40, 0x9c40 };
@ -2512,8 +2488,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 31;
sensor.dummy_pixel = 20;
sensor.ccd_start_xoffset = 0; // not used at the moment
// 11372 pixels at 1200 dpi
sensor.sensor_pixels = 11372*4;
sensor.fau_gain_white_ref = 160;
sensor.gain_white_ref = 160;
sensor.exposure = { 0x9c40, 0x9c40, 0x9c40 };
@ -2621,7 +2595,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 96;
sensor.dummy_pixel = 26;
sensor.ccd_start_xoffset = 128;
sensor.sensor_pixels = 42720;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 230;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -2659,7 +2632,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 87;
sensor.dummy_pixel = 16;
sensor.ccd_start_xoffset = 303;
sensor.sensor_pixels = 5168*4;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -2783,8 +2755,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 87;
sensor.dummy_pixel = 16;
sensor.ccd_start_xoffset = 303;
// SEGCNT at 600 DPI by number of segments
sensor.sensor_pixels = 5104*4;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -2891,7 +2861,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 87;
sensor.dummy_pixel = 16;
sensor.ccd_start_xoffset = 303;
sensor.sensor_pixels = 5168*4;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -3002,7 +2971,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 87;
sensor.dummy_pixel = 16;
sensor.ccd_start_xoffset = 303;
sensor.sensor_pixels = 5168*4;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -3113,7 +3081,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 87;
sensor.dummy_pixel = 87;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10100;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 230;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -3159,7 +3126,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 88; // TODO
sensor.dummy_pixel = 20;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10200; // TODO
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 230;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -3250,7 +3216,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 88; // TODO
sensor.dummy_pixel = 20;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10200; // TODO
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 230;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -3326,7 +3291,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 88; // TODO
sensor.dummy_pixel = 20;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10200; // TODO
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 230;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -3412,7 +3376,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 31;
sensor.dummy_pixel = 31;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10800;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };
@ -3440,7 +3403,6 @@ void genesys_init_sensor_tables()
sensor.black_pixels = 31;
sensor.dummy_pixel = 31;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10200;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 200;
sensor.exposure = { 0, 0, 0 };
@ -3469,9 +3431,6 @@ void genesys_init_sensor_tables()
sensor.dummy_pixel = 6;
// tuned to give 3*8 multiple startx coordinate during shading calibration
sensor.ccd_start_xoffset = 34; // 14=>3, 20=>2
// 10400, too wide=>10288 in shading data 10240~
// 10208 too short for shading, max shading data = 10240 pixels, endpix-startpix=10208
sensor.sensor_pixels = 10240;
sensor.fau_gain_white_ref = 150;
sensor.gain_white_ref = 150;
// maps to 0x70-0x73 for GL841

Wyświetl plik

@ -70,7 +70,6 @@ Genesys_Calibration_Cache create_fake_calibration_entry()
sensor.black_pixels = 48;
sensor.dummy_pixel = 64;
sensor.ccd_start_xoffset = 0;
sensor.sensor_pixels = 10800;
sensor.fau_gain_white_ref = 210;
sensor.gain_white_ref = 230;
sensor.exposure = { 0x0000, 0x0000, 0x0000 };