diff --git a/backend/genesys.cc b/backend/genesys.cc index f895dee63..cfd08fa44 100644 --- a/backend/genesys.cc +++ b/backend/genesys.cc @@ -1668,7 +1668,7 @@ static void genesys_shading_calibration_impl(Genesys_Device* dev, const Genesys_ dev->cmd_set->end_scan(dev, &dev->calib_reg, SANE_TRUE); - if (dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I) { + if (dev->model->flags & GENESYS_FLAG_16BIT_DATA_INVERTED) { for (std::size_t i = 0; i < size / 2; ++i) { auto value = calibration_data[i]; value = ((value >> 8) & 0xff) | ((value << 8) & 0xff00); diff --git a/backend/genesys_low.cc b/backend/genesys_low.cc index d82cb0b33..8289ef853 100644 --- a/backend/genesys_low.cc +++ b/backend/genesys_low.cc @@ -851,7 +851,7 @@ Image read_unshuffled_image_from_scanner(Genesys_Device* dev, const ScanSession& ImagePipelineStack pipeline; pipeline.push_first_node(image); - if (dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I && session.params.depth == 16) { + if ((dev->model->flags & GENESYS_FLAG_16BIT_DATA_INVERTED) && session.params.depth == 16) { dev->pipeline.push_node(); } @@ -1715,7 +1715,7 @@ void build_image_pipeline(Genesys_Device* dev, const ScanSession& session) "_0_before_swap.pnm"); } - if (dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I && depth == 16) { + if ((dev->model->flags & GENESYS_FLAG_16BIT_DATA_INVERTED) && depth == 16) { dev->pipeline.push_node(); } diff --git a/backend/genesys_low.h b/backend/genesys_low.h index 6eeda4a92..fab5ab4ea 100644 --- a/backend/genesys_low.h +++ b/backend/genesys_low.h @@ -138,6 +138,7 @@ #define GENESYS_FLAG_HAS_UTA_INFRARED (1 << 20) // scanner calibration is handled on the host side #define GENESYS_FLAG_CALIBRATION_HOST_SIDE (1 << 21) +#define GENESYS_FLAG_16BIT_DATA_INVERTED (1 << 22) #define GENESYS_HAS_NO_BUTTONS 0 /**< scanner has no supported button */ #define GENESYS_HAS_SCAN_SW (1 << 0) /**< scanner has SCAN button */ diff --git a/backend/genesys_tables_model.cc b/backend/genesys_tables_model.cc index f77722939..fe2f19744 100644 --- a/backend/genesys_tables_model.cc +++ b/backend/genesys_tables_model.cc @@ -2380,7 +2380,8 @@ void genesys_init_usb_device_tables() GENESYS_FLAG_OFFSET_CALIBRATION | GENESYS_HAS_NO_BUTTONS | GENESYS_FLAG_SHADING_REPARK | - GENESYS_FLAG_CALIBRATION_HOST_SIDE; + GENESYS_FLAG_CALIBRATION_HOST_SIDE | + GENESYS_FLAG_16BIT_DATA_INVERTED; model.shading_lines = 7; model.shading_ta_lines = 50;