genesys: Fix initialization of shading data when scanning in gray mode

merge-requests/340/head
Povilas Kanapickas 2020-02-16 10:41:13 +02:00
rodzic 6ab142155c
commit 9bb7ed64b6
1 zmienionych plików z 2 dodań i 14 usunięć

Wyświetl plik

@ -500,37 +500,25 @@ static void genesys_send_offset_and_shading(Genesys_Device* dev, const Genesys_S
dev->interface->write_buffer(0x3c, start_address, data, size); dev->interface->write_buffer(0x3c, start_address, data, size);
} }
// ?
void sanei_genesys_init_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, void sanei_genesys_init_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor,
int pixels_per_line) int pixels_per_line)
{ {
DBG_HELPER_ARGS(dbg, "pixels_per_line: %d", pixels_per_line); DBG_HELPER_ARGS(dbg, "pixels_per_line: %d", pixels_per_line);
int channels;
int i;
if (dev->cmd_set->has_send_shading_data()) { if (dev->cmd_set->has_send_shading_data()) {
return; return;
} }
DBG(DBG_proc, "%s (pixels_per_line = %d)\n", __func__, pixels_per_line); DBG(DBG_proc, "%s (pixels_per_line = %d)\n", __func__, pixels_per_line);
// BUG: GRAY shouldn't probably be in the if condition below. Discovered when refactoring unsigned channels = dev->settings.get_channels();
if (dev->settings.scan_mode == ScanColorMode::GRAY ||
dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
{
channels = 3;
} else {
channels = 1;
}
// 16 bit black, 16 bit white // 16 bit black, 16 bit white
std::vector<uint8_t> shading_data(pixels_per_line * 4 * channels, 0); std::vector<uint8_t> shading_data(pixels_per_line * 4 * channels, 0);
uint8_t* shading_data_ptr = shading_data.data(); uint8_t* shading_data_ptr = shading_data.data();
for (i = 0; i < pixels_per_line * channels; i++) for (unsigned i = 0; i < pixels_per_line * channels; i++) {
{
*shading_data_ptr++ = 0x00; /* dark lo */ *shading_data_ptr++ = 0x00; /* dark lo */
*shading_data_ptr++ = 0x00; /* dark hi */ *shading_data_ptr++ = 0x00; /* dark hi */
*shading_data_ptr++ = 0x00; /* white lo */ *shading_data_ptr++ = 0x00; /* white lo */