From e34814aef85d11fe09d0fd86745fc1717d86d9ae Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 27 Jul 2019 05:12:29 +0300 Subject: [PATCH] genesys: Remove duplicate fields out of settings struct --- backend/genesys.cc | 12 +++++------ backend/genesys_gl124.cc | 8 +------- backend/genesys_gl646.cc | 42 ++++++++++++++------------------------ backend/genesys_gl646.h | 5 ++++- backend/genesys_gl841.cc | 8 +------- backend/genesys_gl843.cc | 23 ++++++++------------- backend/genesys_gl846.cc | 10 ++------- backend/genesys_gl847.cc | 10 ++------- backend/genesys_low.cc | 9 +++----- backend/genesys_settings.h | 12 ----------- 10 files changed, 41 insertions(+), 98 deletions(-) diff --git a/backend/genesys.cc b/backend/genesys.cc index 8e98fb1f8..5742fab94 100644 --- a/backend/genesys.cc +++ b/backend/genesys.cc @@ -3503,9 +3503,8 @@ static void genesys_fill_line_interp_buffer(Genesys_Device* dev, uint8_t* work_b while (count < size) { /* line counter */ - /* dev->line_interp holds the number of lines scanned for one line of data sent */ - if(((dev->line_count/dev->current_setup.channels) % dev->line_interp)==0) - { + // dev->line_interp holds the number of lines scanned for one line of data sent + if (((dev->line_count / dev->current_setup.params.channels) % dev->line_interp) == 0) { /* copy pixel when line matches */ work_buffer_dst[count] = dev->oe_buffer.get_read_pos()[dev->cur]; count++; @@ -3726,9 +3725,8 @@ static void genesys_read_ordered_data(Genesys_Device* dev, SANE_Byte* destinatio debug_dump(DBG_info, dev->current_setup); /* prepare conversion */ - /* current settings */ - channels = dev->current_setup.channels; - depth = dev->current_setup.depth; + channels = dev->current_setup.params.channels; + depth = dev->current_setup.params.depth; src_pixels = dev->current_setup.pixels; @@ -4153,7 +4151,7 @@ static void calc_parameters(Genesys_Scanner* s) if (s->dev->settings.xres >= 1200 && ( s->dev->model->asic_type == GENESYS_GL124 || s->dev->model->asic_type == GENESYS_GL847 - || s->dev->current_setup.xres < s->dev->current_setup.yres + || s->dev->current_setup.xres < s->dev->current_setup.params.yres ) ) { diff --git a/backend/genesys_gl124.cc b/backend/genesys_gl124.cc index 459456aea..16474905b 100644 --- a/backend/genesys_gl124.cc +++ b/backend/genesys_gl124.cc @@ -1318,11 +1318,8 @@ static void gl124_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens dev->current_setup.pixels = (used_pixels * used_res) / optical_res; DBG(DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels); dev->current_setup.lines = lincnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = exposure_time; dev->current_setup.xres = used_res; - dev->current_setup.yres = params.yres; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -1440,11 +1437,8 @@ gl124_calculate_current_setup (Genesys_Device * dev, const Genesys_Sensor& senso dev->current_setup.pixels = (used_pixels * used_res) / optical_res; DBG (DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels); dev->current_setup.lines = lincnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = exposure_time; dev->current_setup.xres = used_res; - dev->current_setup.yres = params.yres; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -2180,7 +2174,7 @@ static void gl124_send_shading_data(Genesys_Device* dev, const Genesys_Sensor& s { dev->binary=fopen("binary.pnm","wb"); lines = dev->reg.get24(REG_LINCNT); - channels=dev->current_setup.channels; + channels = dev->current_setup.params.channels; if(dev->binary!=NULL) { fprintf(dev->binary,"P5\n%d %d\n%d\n",(endpixel-strpixel)/factor*channels*dev->segnb,lines/channels,255); diff --git a/backend/genesys_gl646.cc b/backend/genesys_gl646.cc index 0107410fd..fc9fcc593 100644 --- a/backend/genesys_gl646.cc +++ b/backend/genesys_gl646.cc @@ -947,11 +947,8 @@ static void gl646_setup_registers(Genesys_Device* dev, dev->current_setup.pixels = ((endx - startx) * sensor_mst->xdpi) / sensor.optical_res; dev->current_setup.lines = linecnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = sensor_mst->exposure; dev->current_setup.xres = sensor_mst->xdpi; - dev->current_setup.yres = motor->ydpi; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -1734,17 +1731,13 @@ static void gl646_detect_document_end(Genesys_Device* dev) sanei_genesys_read_valid_words(dev, &bytes_left); /* we add the number of lines needed to read the last part of the document in */ - lines = - (SANE_UNFIX (dev->model->y_offset) * dev->current_setup.yres) / - MM_PER_INCH; + lines = (SANE_UNFIX(dev->model->y_offset) * dev->current_setup.params.yres) / MM_PER_INCH; DBG(DBG_io, "%s: adding %d line to flush\n", __func__, lines); bytes_left += lines * dev->wpl; - if (dev->current_setup.depth > 8) - { + if (dev->current_setup.params.depth > 8) { bytes_left = 2 * bytes_left; } - if (dev->current_setup.channels > 1) - { + if (dev->current_setup.params.channels > 1) { bytes_left = 3 * bytes_left; } if (bytes_left < dev->read_bytes_left) @@ -2256,7 +2249,7 @@ static void gl646_init_regs_for_shading(Genesys_Device* dev, const Genesys_Senso /* used when sending shading calibration data */ dev->calib_pixels = settings.pixels; - dev->calib_channels = dev->current_setup.channels; + dev->calib_channels = dev->current_setup.params.channels; if (dev->model->is_cis == SANE_FALSE) { dev->calib_channels = 3; @@ -3857,31 +3850,26 @@ gl646_is_compatible_calibration (Genesys_Device * dev, const Genesys_Sensor& sen */ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS) { - dev->current_setup.channels = 3; - } - else - { - dev->current_setup.channels = 1; + dev->current_setup.params.channels = 3; + } else { + dev->current_setup.params.channels = 1; } dev->current_setup.xres = dev->settings.xres; - DBG(DBG_io, "%s: requested=(%d,%f), tested=(%d,%f)\n", __func__, dev->current_setup.channels, - dev->current_setup.xres, cache->used_setup.channels, cache->used_setup.xres); + DBG(DBG_io, "%s: requested=(%d,%f), tested=(%d,%f)\n", __func__, + dev->current_setup.params.channels, dev->current_setup.xres, + cache->used_setup.params.channels, cache->used_setup.xres); /* a calibration cache is compatible if color mode and x dpi match the user * requested scan. In the case of CIS scanners, dpi isn't a criteria */ if (dev->model->is_cis == SANE_FALSE) { - compatible = - ((dev->current_setup.channels == cache->used_setup.channels) - && (((int) dev->current_setup.xres) == - ((int) cache->used_setup.xres))); - } - else - { - compatible = - (dev->current_setup.channels == cache->used_setup.channels); + compatible = (dev->current_setup.params.channels == cache->used_setup.params.channels) && + (((int) dev->current_setup.xres) == ((int) cache->used_setup.xres)); + } else { + compatible = dev->current_setup.params.channels == cache->used_setup.params.channels; } + if (dev->current_setup.params.scan_method != cache->used_setup.params.scan_method) { DBG(DBG_io, "%s: current method=%d, used=%d\n", __func__, diff --git a/backend/genesys_gl646.h b/backend/genesys_gl646.h index cabf7002b..1525757b9 100644 --- a/backend/genesys_gl646.h +++ b/backend/genesys_gl646.h @@ -269,7 +269,10 @@ typedef struct unsigned channels; /* settings */ - SANE_Int ydpi; /* real motor dpi, may be different from the resolution */ + + // real motor dpi, may be different from the resolution. For the currently known motors it's the + // same + SANE_Int ydpi; SANE_Int steptype; /* 0=full, 1=half, 2=quarter */ SANE_Bool fastmod; /* fast scanning 0/1 */ SANE_Bool fastfed; /* fast fed slope tables */ diff --git a/backend/genesys_gl841.cc b/backend/genesys_gl841.cc index 4afc13a33..de7f5d5c9 100644 --- a/backend/genesys_gl841.cc +++ b/backend/genesys_gl841.cc @@ -2041,11 +2041,8 @@ dummy \ scanned lines dev->current_setup.params = params; dev->current_setup.pixels = (used_pixels * used_res)/optical_res; dev->current_setup.lines = lincnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = exposure_time; dev->current_setup.xres = used_res; - dev->current_setup.yres = params.yres; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -2254,11 +2251,8 @@ dummy \ scanned lines dev->current_setup.params = params; dev->current_setup.pixels = (used_pixels * used_res)/optical_res; dev->current_setup.lines = lincnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = exposure_time; dev->current_setup.xres = used_res; - dev->current_setup.yres = params.yres; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -4580,7 +4574,7 @@ static void gl841_send_shading_data(Genesys_Device* dev, const Genesys_Sensor& s { dev->binary=fopen("binary.pnm","wb"); lines = dev->reg.get24(REG_LINCNT); - channels=dev->current_setup.channels; + channels = dev->current_setup.params.channels; if(dev->binary!=NULL) { fprintf(dev->binary,"P5\n%d %d\n%d\n",(endpixel-strpixel)/factor*channels,lines/channels,255); diff --git a/backend/genesys_gl843.cc b/backend/genesys_gl843.cc index 1e0ab66ea..2a16ae111 100644 --- a/backend/genesys_gl843.cc +++ b/backend/genesys_gl843.cc @@ -1453,11 +1453,8 @@ static void gl843_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens dev->current_setup.pixels = session.output_pixels; DBG(DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels); dev->current_setup.lines = session.output_line_count; - dev->current_setup.depth = session.params.depth; - dev->current_setup.channels = session.params.channels; dev->current_setup.exposure_time = exposure; dev->current_setup.xres = session.output_resolution; - dev->current_setup.yres = session.params.yres; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines; @@ -1600,11 +1597,8 @@ gl843_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor dev->current_setup.pixels = (used_pixels * used_res) / optical_res; DBG(DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels); dev->current_setup.lines = lincnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = exposure; dev->current_setup.xres = used_res; - dev->current_setup.yres = params.yres; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -1740,7 +1734,7 @@ static void gl843_detect_document_end(Genesys_Device* dev) DBG_HELPER(dbg); SANE_Bool paper_loaded; unsigned int scancnt = 0; - int flines, channels, depth, bytes_remain, sublines, + int flines, bytes_remain, sublines, bytes_to_flush, lines, sub_bytes, tmp, read_bytes_left; gl843_get_paper_sensor(dev, &paper_loaded); @@ -1751,8 +1745,8 @@ static void gl843_detect_document_end(Genesys_Device* dev) DBG(DBG_info, "%s: no more document\n", __func__); dev->document = SANE_FALSE; - channels = dev->current_setup.channels; - depth = dev->current_setup.depth; + unsigned channels = dev->current_setup.params.channels; + unsigned depth = dev->current_setup.params.depth; read_bytes_left = (int) dev->read_bytes_left; DBG(DBG_io, "%s: read_bytes_left=%d\n", __func__, read_bytes_left); @@ -1775,12 +1769,11 @@ static void gl843_detect_document_end(Genesys_Device* dev) DBG(DBG_io, "%s: %d scanned but not read lines\n", __func__, flines); - /* adjust number of bytes to read - * we need to read the final bytes which are word per line * number of last lines - * to have doc leaving feeder */ - lines = - (SANE_UNFIX (dev->model->post_scan) * dev->current_setup.yres) / - MM_PER_INCH + flines; + // Adjust number of bytes to read. We need to read the final bytes which are word per + // line times number of last lines to have doc leaving feeder + lines = (SANE_UNFIX(dev->model->post_scan) * dev->current_setup.params.yres) / MM_PER_INCH + + flines; + DBG(DBG_io, "%s: adding %d line to flush\n", __func__, lines); /* number of bytes to read from scanner to get document out of it after diff --git a/backend/genesys_gl846.cc b/backend/genesys_gl846.cc index 6f86eb75f..25c72eadc 100644 --- a/backend/genesys_gl846.cc +++ b/backend/genesys_gl846.cc @@ -1171,11 +1171,8 @@ static void gl846_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens dev->current_setup.params = params; dev->current_setup.pixels = (used_pixels * used_res) / optical_res; dev->current_setup.lines = lincnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = exposure_time; dev->current_setup.xres = used_res; - dev->current_setup.yres = params.yres; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -1310,11 +1307,8 @@ gl846_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor dev->current_setup.params = params; dev->current_setup.pixels = (used_pixels * used_res) / optical_res; dev->current_setup.lines = lincnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = exposure_time; dev->current_setup.xres = used_res; - dev->current_setup.yres = params.yres; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -1914,7 +1908,7 @@ static void gl846_send_shading_data(Genesys_Device* dev, const Genesys_Sensor& s DBG_HELPER_ARGS(dbg, "writing %d bytes of shading data", size); uint32_t addr, length, i, x, factor, pixels; uint32_t dpiset, dpihw, strpixel, endpixel; - uint32_t lines, channels; + uint32_t lines; uint8_t val,*ptr,*src; /* shading data is plit in 3 (up to 5 with IR) areas @@ -1939,7 +1933,7 @@ static void gl846_send_shading_data(Genesys_Device* dev, const Genesys_Sensor& s { dev->binary=fopen("binary.pnm","wb"); lines = dev->reg.get24(REG_LINCNT); - channels=dev->current_setup.channels; + unsigned channels = dev->current_setup.params.channels; if(dev->binary!=NULL) { fprintf(dev->binary,"P5\n%d %d\n%d\n",(endpixel-strpixel)/factor*channels,lines/channels,255); diff --git a/backend/genesys_gl847.cc b/backend/genesys_gl847.cc index af15ac0bd..49e2cfc7b 100644 --- a/backend/genesys_gl847.cc +++ b/backend/genesys_gl847.cc @@ -1188,11 +1188,8 @@ static void gl847_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens dev->current_setup.params = params; dev->current_setup.pixels = (used_pixels * used_res) / optical_res; dev->current_setup.lines = lincnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = exposure_time; dev->current_setup.xres = used_res; - dev->current_setup.yres = params.yres; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -1328,11 +1325,8 @@ gl847_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor dev->current_setup.params = params; dev->current_setup.pixels = (used_pixels * used_res) / optical_res; dev->current_setup.lines = lincnt; - dev->current_setup.depth = params.depth; - dev->current_setup.channels = params.channels; dev->current_setup.exposure_time = exposure_time; dev->current_setup.xres = used_res; - dev->current_setup.yres = params.yres; dev->current_setup.ccd_size_divisor = ccd_size_divisor; dev->current_setup.stagger = stagger; dev->current_setup.max_shift = max_shift + stagger; @@ -1969,7 +1963,7 @@ static void gl847_send_shading_data(Genesys_Device* dev, const Genesys_Sensor& s DBG_HELPER_ARGS(dbg, "writing %d bytes of shading data", size); uint32_t addr, length, i, x, factor, pixels; uint32_t dpiset, dpihw, strpixel, endpixel; - uint32_t lines, channels; + uint32_t lines; uint8_t val,*ptr,*src; /* shading data is plit in 3 (up to 5 with IR) areas @@ -1994,7 +1988,7 @@ static void gl847_send_shading_data(Genesys_Device* dev, const Genesys_Sensor& s { dev->binary=fopen("binary.pnm","wb"); lines = dev->reg.get24(REG_LINCNT); - channels=dev->current_setup.channels; + unsigned channels = dev->current_setup.params.channels; if(dev->binary!=NULL) { fprintf(dev->binary,"P5\n%d %d\n%d\n",(endpixel-strpixel)/factor*channels,lines/channels,255); diff --git a/backend/genesys_low.cc b/backend/genesys_low.cc index bf7f1f0ee..e4fd2ba30 100644 --- a/backend/genesys_low.cc +++ b/backend/genesys_low.cc @@ -1711,22 +1711,19 @@ void debug_dump(unsigned level, const Genesys_Current_Setup& setup) DBG(level, "current_setup:\n" "Pixels: %d\n" "Lines: %d\n" - "Depth: %d\n" - "Channels: %d\n" "exposure_time: %d\n" - "Resolution X/Y: %g %g\n" + "Resolution X/Y: %g\n" "ccd_size_divisor: %d\n" "stagger: %d\n" "max_shift: %d\n", setup.pixels, setup.lines, - setup.depth, - setup.channels, setup.exposure_time, - setup.xres, setup.yres, + setup.xres, setup.ccd_size_divisor, setup.stagger, setup.max_shift); + debug_dump(level, setup.params); } void debug_dump(unsigned level, const Genesys_Register_Set& regs) diff --git a/backend/genesys_settings.h b/backend/genesys_settings.h index daa541539..85323f7d7 100644 --- a/backend/genesys_settings.h +++ b/backend/genesys_settings.h @@ -230,17 +230,11 @@ struct Genesys_Current_Setup int pixels = 0; // line count expected from scanner int lines = 0; - // depth expected from scanner - int depth = 0; - // channel count expected from scanner - int channels = 0; // used exposure time int exposure_time = 0; // used xres float xres = 0; - // used yres - float yres = 0; // half ccd mode unsigned ccd_size_divisor = 1; SANE_Int stagger = 0; @@ -252,11 +246,8 @@ struct Genesys_Current_Setup return params == other.params && pixels == other.pixels && lines == other.lines && - depth == other.depth && - channels == other.channels && exposure_time == other.exposure_time && xres == other.xres && - yres == other.yres && ccd_size_divisor == other.ccd_size_divisor && stagger == other.stagger && max_shift == other.max_shift; @@ -270,11 +261,8 @@ void serialize(Stream& str, Genesys_Current_Setup& x) serialize_newline(str); serialize(str, x.pixels); serialize(str, x.lines); - serialize(str, x.depth); - serialize(str, x.channels); serialize(str, x.exposure_time); serialize(str, x.xres); - serialize(str, x.yres); serialize(str, x.ccd_size_divisor); serialize(str, x.stagger); serialize(str, x.max_shift);