kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Add a way to specify output pixel offset
rodzic
94f130cdfa
commit
e920d1bbce
|
@ -994,6 +994,7 @@ void compute_session(const Genesys_Device* dev, ScanSession& s, const Genesys_Se
|
||||||
// after all adjustments on the optical pixels have been made, compute the number of pixels
|
// after all adjustments on the optical pixels have been made, compute the number of pixels
|
||||||
// to retrieve from the chip
|
// to retrieve from the chip
|
||||||
s.output_pixels = (s.optical_pixels * s.output_resolution) / s.optical_resolution;
|
s.output_pixels = (s.optical_pixels * s.output_resolution) / s.optical_resolution;
|
||||||
|
s.output_startx = s.params.startx + sensor.output_pixel_offset;
|
||||||
|
|
||||||
s.num_staggered_lines = 0;
|
s.num_staggered_lines = 0;
|
||||||
if (!has_flag(s.params.flags, ScanFlag::IGNORE_STAGGER_OFFSET))
|
if (!has_flag(s.params.flags, ScanFlag::IGNORE_STAGGER_OFFSET))
|
||||||
|
|
|
@ -130,6 +130,7 @@ std::ostream& operator<<(std::ostream& out, const Genesys_Sensor& sensor)
|
||||||
<< " ccd_size_divisor: " << sensor.ccd_size_divisor << '\n'
|
<< " ccd_size_divisor: " << sensor.ccd_size_divisor << '\n'
|
||||||
<< " shading_factor: " << sensor.shading_factor << '\n'
|
<< " shading_factor: " << sensor.shading_factor << '\n'
|
||||||
<< " pixel_count_ratio: " << sensor.pixel_count_ratio << '\n'
|
<< " pixel_count_ratio: " << sensor.pixel_count_ratio << '\n'
|
||||||
|
<< " output_pixel_offset: " << sensor.output_pixel_offset << '\n'
|
||||||
<< " black_pixels: " << sensor.black_pixels << '\n'
|
<< " black_pixels: " << sensor.black_pixels << '\n'
|
||||||
<< " dummy_pixel: " << sensor.dummy_pixel << '\n'
|
<< " dummy_pixel: " << sensor.dummy_pixel << '\n'
|
||||||
<< " ccd_start_xoffset: " << sensor.ccd_start_xoffset << '\n'
|
<< " ccd_start_xoffset: " << sensor.ccd_start_xoffset << '\n'
|
||||||
|
|
|
@ -290,6 +290,9 @@ struct Genesys_Sensor {
|
||||||
// the scanner.
|
// the scanner.
|
||||||
Ratio pixel_count_ratio = Ratio{1, 1};
|
Ratio pixel_count_ratio = Ratio{1, 1};
|
||||||
|
|
||||||
|
// The offset in pixels in terms of scan resolution that needs to be applied to scan position.
|
||||||
|
unsigned output_pixel_offset = 0;
|
||||||
|
|
||||||
int black_pixels = 0;
|
int black_pixels = 0;
|
||||||
// value of the dummy register
|
// value of the dummy register
|
||||||
int dummy_pixel = 0;
|
int dummy_pixel = 0;
|
||||||
|
@ -365,6 +368,7 @@ struct Genesys_Sensor {
|
||||||
ccd_size_divisor == other.ccd_size_divisor &&
|
ccd_size_divisor == other.ccd_size_divisor &&
|
||||||
shading_factor == other.shading_factor &&
|
shading_factor == other.shading_factor &&
|
||||||
pixel_count_ratio == other.pixel_count_ratio &&
|
pixel_count_ratio == other.pixel_count_ratio &&
|
||||||
|
output_pixel_offset == other.output_pixel_offset &&
|
||||||
black_pixels == other.black_pixels &&
|
black_pixels == other.black_pixels &&
|
||||||
dummy_pixel == other.dummy_pixel &&
|
dummy_pixel == other.dummy_pixel &&
|
||||||
ccd_start_xoffset == other.ccd_start_xoffset &&
|
ccd_start_xoffset == other.ccd_start_xoffset &&
|
||||||
|
@ -393,6 +397,7 @@ void serialize(Stream& str, Genesys_Sensor& x)
|
||||||
serialize(str, x.shading_resolution);
|
serialize(str, x.shading_resolution);
|
||||||
serialize(str, x.ccd_size_divisor);
|
serialize(str, x.ccd_size_divisor);
|
||||||
serialize(str, x.shading_factor);
|
serialize(str, x.shading_factor);
|
||||||
|
serialize(str, x.output_pixel_offset);
|
||||||
serialize(str, x.pixel_count_ratio);
|
serialize(str, x.pixel_count_ratio);
|
||||||
serialize(str, x.black_pixels);
|
serialize(str, x.black_pixels);
|
||||||
serialize(str, x.dummy_pixel);
|
serialize(str, x.dummy_pixel);
|
||||||
|
|
|
@ -103,6 +103,7 @@ bool ScanSession::operator==(const ScanSession& other) const
|
||||||
optical_pixels_raw == other.optical_pixels_raw &&
|
optical_pixels_raw == other.optical_pixels_raw &&
|
||||||
optical_line_count == other.optical_line_count &&
|
optical_line_count == other.optical_line_count &&
|
||||||
output_resolution == other.output_resolution &&
|
output_resolution == other.output_resolution &&
|
||||||
|
output_startx == other.output_startx &&
|
||||||
output_pixels == other.output_pixels &&
|
output_pixels == other.output_pixels &&
|
||||||
output_channel_bytes == other.output_channel_bytes &&
|
output_channel_bytes == other.output_channel_bytes &&
|
||||||
output_line_bytes == other.output_line_bytes &&
|
output_line_bytes == other.output_line_bytes &&
|
||||||
|
@ -141,6 +142,7 @@ std::ostream& operator<<(std::ostream& out, const ScanSession& session)
|
||||||
<< " optical_pixels_raw: " << session.optical_pixels_raw << '\n'
|
<< " optical_pixels_raw: " << session.optical_pixels_raw << '\n'
|
||||||
<< " optical_line_count: " << session.optical_line_count << '\n'
|
<< " optical_line_count: " << session.optical_line_count << '\n'
|
||||||
<< " output_resolution: " << session.output_resolution << '\n'
|
<< " output_resolution: " << session.output_resolution << '\n'
|
||||||
|
<< " output_startx: " << session.output_startx << '\n'
|
||||||
<< " output_pixels: " << session.output_pixels << '\n'
|
<< " output_pixels: " << session.output_pixels << '\n'
|
||||||
<< " output_line_bytes: " << session.output_line_bytes << '\n'
|
<< " output_line_bytes: " << session.output_line_bytes << '\n'
|
||||||
<< " output_line_bytes_raw: " << session.output_line_bytes_raw << '\n'
|
<< " output_line_bytes_raw: " << session.output_line_bytes_raw << '\n'
|
||||||
|
|
|
@ -233,6 +233,9 @@ struct ScanSession {
|
||||||
// gl843-only
|
// gl843-only
|
||||||
unsigned output_resolution = 0;
|
unsigned output_resolution = 0;
|
||||||
|
|
||||||
|
// the offset in pixels from the beginning of output data
|
||||||
|
unsigned output_startx = 0;
|
||||||
|
|
||||||
// the number of pixels in output data (after desegmentation)
|
// the number of pixels in output data (after desegmentation)
|
||||||
unsigned output_pixels = 0;
|
unsigned output_pixels = 0;
|
||||||
|
|
||||||
|
@ -346,6 +349,7 @@ void serialize(Stream& str, ScanSession& x)
|
||||||
serialize(str, x.optical_pixels_raw);
|
serialize(str, x.optical_pixels_raw);
|
||||||
serialize(str, x.optical_line_count);
|
serialize(str, x.optical_line_count);
|
||||||
serialize(str, x.output_resolution);
|
serialize(str, x.output_resolution);
|
||||||
|
serialize(str, x.output_startx);
|
||||||
serialize(str, x.output_pixels);
|
serialize(str, x.output_pixels);
|
||||||
serialize(str, x.output_channel_bytes);
|
serialize(str, x.output_channel_bytes);
|
||||||
serialize(str, x.output_line_bytes);
|
serialize(str, x.output_line_bytes);
|
||||||
|
|
Ładowanie…
Reference in New Issue