From 9d7aa61544a749d76c8435f8b8f68165416600bd Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 22 Feb 2020 10:48:26 +0200 Subject: [PATCH 1/2] genesys: Define the width of the sensor in mm instead of pixels --- backend/genesys/device.h | 3 ++ backend/genesys/genesys.cpp | 11 ++-- backend/genesys/gl124.cpp | 23 +++------ backend/genesys/gl646.cpp | 20 ++++---- backend/genesys/gl841.cpp | 42 +++++---------- backend/genesys/gl843.cpp | 32 ++++-------- backend/genesys/gl846.cpp | 21 +++----- backend/genesys/gl847.cpp | 20 +++----- backend/genesys/sensor.cpp | 1 - backend/genesys/sensor.h | 4 -- backend/genesys/tables_model.cpp | 51 +++++++++++++++++++ backend/genesys/tables_sensor.cpp | 41 --------------- .../backend/genesys/tests_calibration.cpp | 1 - 13 files changed, 116 insertions(+), 154 deletions(-) diff --git a/backend/genesys/device.h b/backend/genesys/device.h index 15df2567e..182c6ddf4 100644 --- a/backend/genesys/device.h +++ b/backend/genesys/device.h @@ -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; diff --git a/backend/genesys/genesys.cpp b/backend/genesys/genesys.cpp index 83502b4c6..435be169e 100644 --- a/backend/genesys/genesys.cpp +++ b/backend/genesys/genesys.cpp @@ -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((dev->model->x_size * dev->settings.xres) / MM_PER_INCH); - } - else - { - pixels_per_line = sensor.sensor_pixels; + } else { + pixels_per_line = static_cast((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) diff --git a/backend/genesys/gl124.cpp b/backend/genesys/gl124.cpp index f8bf6a952..6b54b3896 100644 --- a/backend/genesys/gl124.cpp +++ b/backend/genesys/gl124.cpp @@ -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; diff --git a/backend/genesys/gl646.cpp b/backend/genesys/gl646.cpp index 6d25991ad..36ee15991 100644 --- a/backend/genesys/gl646.cpp +++ b/backend/genesys/gl646.cpp @@ -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((distance * settings.xres) / MM_PER_INCH); settings.depth = 8; diff --git a/backend/genesys/gl841.cpp b/backend/genesys/gl841.cpp index ca52ecf57..fa3f7b78a 100644 --- a/backend/genesys/gl841.cpp +++ b/backend/genesys/gl841.cpp @@ -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((lines * dpi) / MM_PER_INCH); - pixels = (sensor.sensor_pixels * dpi) / sensor.optical_res; - /* 20 cm max length for calibration sheet */ length = static_cast(((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; diff --git a/backend/genesys/gl843.cpp b/backend/genesys/gl843.cpp index b9899c9dc..04105ed03 100644 --- a/backend/genesys/gl843.cpp +++ b/backend/genesys/gl843.cpp @@ -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(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(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); diff --git a/backend/genesys/gl846.cpp b/backend/genesys/gl846.cpp index 5278ed1db..a013d218b 100644 --- a/backend/genesys/gl846.cpp +++ b/backend/genesys/gl846.cpp @@ -924,8 +924,6 @@ void CommandSetGl846::init_regs_for_shading(Genesys_Device* dev, const Genesys_S unsigned calib_lines = static_cast(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(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(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; diff --git a/backend/genesys/gl847.cpp b/backend/genesys/gl847.cpp index cbf34b3c5..dd8f267f4 100644 --- a/backend/genesys/gl847.cpp +++ b/backend/genesys/gl847.cpp @@ -930,15 +930,13 @@ void CommandSetGl847::init_regs_for_shading(Genesys_Device* dev, const Genesys_S unsigned calib_lines = static_cast(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(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; diff --git a/backend/genesys/sensor.cpp b/backend/genesys/sensor.cpp index 777112b3e..f471a7282 100644 --- a/backend/genesys/sensor.cpp +++ b/backend/genesys/sensor.cpp @@ -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' diff --git a/backend/genesys/sensor.h b/backend/genesys/sensor.h index 30993bdff..8359fb7cd 100644 --- a/backend/genesys/sensor.h +++ b/backend/genesys/sensor.h @@ -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); diff --git a/backend/genesys/tables_model.cpp b/backend/genesys/tables_model.cpp index 7189f5292..293478aac 100644 --- a/backend/genesys/tables_model.cpp +++ b/backend/genesys/tables_model.cpp @@ -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 = 10800.0 * MM_PER_INCH / 1200; 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 = 10400.0 * MM_PER_INCH / 1200; 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 = 5376.0 * MM_PER_INCH / 600; 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 = 5360.1 * MM_PER_INCH / 600; 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 = 5360.1 * MM_PER_INCH / 600; 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 = 5360.1 * MM_PER_INCH / 600; 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 = 5700.0 * MM_PER_INCH / 600; 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 = 28400.0 * MM_PER_INCH / 3200; 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 = 11372 * MM_PER_INCH / 1200; 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 = 5136.1 * MM_PER_INCH / 600; 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 = 5168.0 * MM_PER_INCH / 600; 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 = 5104.0 * MM_PER_INCH / 600; 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 = 5168.0 * MM_PER_INCH / 600; 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 = 5168.0 * MM_PER_INCH / 600; 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 = 5136.0 * MM_PER_INCH / 600; 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 = 5188.0 * MM_PER_INCH / 600; 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 = 5136.1 * MM_PER_INCH / 600; 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 = 10400.0 * MM_PER_INCH / 1200; 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 = 10240.0 * MM_PER_INCH / 1200; 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 = 5368.0 * MM_PER_INCH / 600; 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 = 10872.1 * MM_PER_INCH / 1200; 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 = 5200.0 * MM_PER_INCH / 600; 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 = 10872.1 * MM_PER_INCH / 1200; 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 = 5416.0 * MM_PER_INCH / 600; 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 = 10800.0 * MM_PER_INCH / 1200; 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 = 10872.1 * MM_PER_INCH / 1200; 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 = 10240.1 * MM_PER_INCH / 600; 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 = 2496.0 * MM_PER_INCH / 600; 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 = 5200.0 * MM_PER_INCH / 600; 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 = 5200.0 * MM_PER_INCH / 600; 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 = 5200.0 * MM_PER_INCH / 600; 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 = 5200.0 * MM_PER_INCH / 600; 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 = 5200.0 * MM_PER_INCH / 600; 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 = 5020.0 * MM_PER_INCH / 600; 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 = 10240.0 * MM_PER_INCH / 600; 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 = 10240.0 * MM_PER_INCH / 600; 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 = 10872.1 * MM_PER_INCH / 1200; 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 = 10872.1 * MM_PER_INCH / 1200; 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 = 5200.0 * MM_PER_INCH / 600; 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 = 10100.0 * MM_PER_INCH / 1200; 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 = 10200.0 * MM_PER_INCH / 7200; 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 = 10200.0 * MM_PER_INCH / 7200; 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 = 10200.0 * MM_PER_INCH / 7200; 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 = 42720.0 * MM_PER_INCH / 2400; 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 = 10200.0 * MM_PER_INCH / 1200; 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 = 10800.0 * MM_PER_INCH / 1200; 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"); diff --git a/backend/genesys/tables_sensor.cpp b/backend/genesys/tables_sensor.cpp index 834153135..bef1d8106 100644 --- a/backend/genesys/tables_sensor.cpp +++ b/backend/genesys/tables_sensor.cpp @@ -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 diff --git a/testsuite/backend/genesys/tests_calibration.cpp b/testsuite/backend/genesys/tests_calibration.cpp index 82417ee9f..b953c29a7 100644 --- a/testsuite/backend/genesys/tests_calibration.cpp +++ b/testsuite/backend/genesys/tests_calibration.cpp @@ -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 }; From 37297fdad3aa5746bd9bfabe79a2934ae9e5e397 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 22 Feb 2020 10:48:27 +0200 Subject: [PATCH 2/2] genesys: Simplify definitions of x_size_calib_mm --- backend/genesys/tables_model.cpp | 92 ++++++++++++++++---------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/backend/genesys/tables_model.cpp b/backend/genesys/tables_model.cpp index 293478aac..4748e1da0 100644 --- a/backend/genesys/tables_model.cpp +++ b/backend/genesys/tables_model.cpp @@ -123,7 +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 = 10800.0 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 228.6; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -174,7 +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 = 10400.0 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 220.13334; model.x_offset_calib_black = 0.0; model.post_scan = 0.0; @@ -230,7 +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 = 5376.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 227.584; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -281,7 +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 = 5360.1 * MM_PER_INCH / 600; + model.x_size_calib_mm = 226.9067; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -332,7 +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 = 5360.1 * MM_PER_INCH / 600; + model.x_size_calib_mm = 226.9067; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -383,7 +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 = 5360.1 * MM_PER_INCH / 600; + model.x_size_calib_mm = 226.9067; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -439,7 +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 = 5700.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 241.3; model.x_offset_ta = 115.0; model.y_offset_ta = 60.0; @@ -512,7 +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 = 28400.0 * MM_PER_INCH / 3200; + model.x_size_calib_mm = 225.425; model.x_offset_ta = 75.0; model.y_offset_ta = 45.00; @@ -579,7 +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 = 11372 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 240.70734; model.x_offset_ta = 94.0; model.y_offset_ta = 26.0; @@ -642,7 +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 = 5136.1 * MM_PER_INCH / 600; + model.x_size_calib_mm = 217.4241; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -699,7 +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 = 5168.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 218.7787; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -754,7 +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 = 5104.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 216.0694; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -809,7 +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 = 5168.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 218.7787; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -867,7 +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 = 5168.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 218.7787; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -923,7 +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 = 5136.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 217.4241; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -980,7 +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 = 5188.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 219.6254; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1037,7 +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 = 5136.1 * MM_PER_INCH / 600; + model.x_size_calib_mm = 217.4241; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1095,7 +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 = 10400.0 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 220.13334; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1150,7 +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 = 10240.0 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 216.7467; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1205,7 +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 = 5368.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 227.2454; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1258,7 +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 = 10872.1 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 230.1241; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1311,7 +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 = 5200.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 220.1334; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1364,7 +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 = 10872.1 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 230.1241; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1416,7 +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 = 5416.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 229.2774; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1465,7 +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 = 10800.0 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 228.6; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1517,7 +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 = 10872.1 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 230.1241; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -1573,7 +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 = 10240.1 * MM_PER_INCH / 600; + 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 @@ -1624,7 +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 = 2496.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 105.664; model.post_scan = 17.5; model.eject_feed = 0.0; @@ -1675,7 +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 = 5200.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 220.1334; model.post_scan = 16.0; model.eject_feed = 0.0; @@ -1726,7 +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 = 5200.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 220.1334; model.post_scan = 16.0; model.eject_feed = 0.0; @@ -1779,7 +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 = 5200.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 220.1334; model.post_scan = 16.0; model.eject_feed = 0.0; @@ -1830,7 +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 = 5200.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 220.1334; model.post_scan = 16.0; model.eject_feed = 0.0; @@ -1883,7 +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 = 5200.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 220.1334; model.post_scan = 16.0; model.eject_feed = 0.0; @@ -1933,7 +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 = 5020.0 * MM_PER_INCH / 600; + 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 @@ -1986,7 +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 = 10240.0 * MM_PER_INCH / 600; + 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 @@ -2038,7 +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 = 10240.0 * MM_PER_INCH / 600; + 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 @@ -2092,7 +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 = 10872.1 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 230.1241; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -2148,7 +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 = 10872.1 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 230.1241; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -2204,7 +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 = 5200.0 * MM_PER_INCH / 600; + model.x_size_calib_mm = 220.1334; model.post_scan = 16.0; model.eject_feed = 0.0; @@ -2256,7 +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 = 10100.0 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 213.7834; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -2310,7 +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 = 10200.0 * MM_PER_INCH / 7200; + model.x_size_calib_mm = 35.9834; model.x_offset_ta = 0.0; model.y_offset_ta = 29.0; @@ -2376,7 +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 = 10200.0 * MM_PER_INCH / 7200; + model.x_size_calib_mm = 35.9834; model.x_offset_ta = 0.0; model.y_offset_ta = 29.0; @@ -2446,7 +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 = 10200.0 * MM_PER_INCH / 7200; + model.x_size_calib_mm = 35.9834; model.y_offset_sensor_to_ta = 0.0; model.y_offset_calib_black_ta = 6.5; @@ -2505,7 +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 = 42720.0 * MM_PER_INCH / 2400; + model.x_size_calib_mm = 452.12; model.post_scan = 0; model.eject_feed = 0; @@ -2561,7 +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 = 10200.0 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 215.9; model.post_scan = 0.0; model.eject_feed = 0.0; @@ -2612,7 +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 = 10800.0 * MM_PER_INCH / 1200; + model.x_size_calib_mm = 228.6; model.post_scan = 0.0; model.eject_feed = 0.0;