kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Remove duplicate fields out of settings struct
rodzic
808cc5737d
commit
e34814aef8
|
@ -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
|
||||
)
|
||||
)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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__,
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
Ładowanie…
Reference in New Issue