kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Added transparency button option
This is introduced primarily for the ScanJet G4010 which has "Scan Film"
buttons.
(cherry picked from commit 8347191b5f
)
release-1.1.x
rodzic
b83f7d3cad
commit
944183c379
|
@ -5003,6 +5003,18 @@ static void init_options(Genesys_Scanner* s)
|
||||||
else
|
else
|
||||||
s->opt[OPT_EXTRA_SW].cap = SANE_CAP_INACTIVE;
|
s->opt[OPT_EXTRA_SW].cap = SANE_CAP_INACTIVE;
|
||||||
|
|
||||||
|
// transparency/scan_film button
|
||||||
|
s->opt[OPT_TRANSP_SW].name = "transparency";
|
||||||
|
s->opt[OPT_TRANSP_SW].title = SANE_I18N ("Transparency button");
|
||||||
|
s->opt[OPT_TRANSP_SW].desc = SANE_I18N ("Transparency button");
|
||||||
|
s->opt[OPT_TRANSP_SW].type = SANE_TYPE_BOOL;
|
||||||
|
s->opt[OPT_TRANSP_SW].unit = SANE_UNIT_NONE;
|
||||||
|
if (model->buttons & GENESYS_HAS_TRANSP_SW) {
|
||||||
|
s->opt[OPT_TRANSP_SW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||||
|
} else {
|
||||||
|
s->opt[OPT_TRANSP_SW].cap = SANE_CAP_INACTIVE;
|
||||||
|
}
|
||||||
|
|
||||||
/* calibration needed */
|
/* calibration needed */
|
||||||
s->opt[OPT_NEED_CALIBRATION_SW].name = "need-calibration";
|
s->opt[OPT_NEED_CALIBRATION_SW].name = "need-calibration";
|
||||||
s->opt[OPT_NEED_CALIBRATION_SW].title = SANE_I18N ("Needs calibration");
|
s->opt[OPT_NEED_CALIBRATION_SW].title = SANE_I18N ("Needs calibration");
|
||||||
|
@ -5821,6 +5833,7 @@ static void get_option_value(Genesys_Scanner* s, int option, void* val)
|
||||||
case OPT_OCR_SW:
|
case OPT_OCR_SW:
|
||||||
case OPT_POWER_SW:
|
case OPT_POWER_SW:
|
||||||
case OPT_EXTRA_SW:
|
case OPT_EXTRA_SW:
|
||||||
|
case OPT_TRANSP_SW:
|
||||||
s->dev->cmd_set->update_hardware_sensors(s);
|
s->dev->cmd_set->update_hardware_sensors(s);
|
||||||
*reinterpret_cast<SANE_Bool*>(val) = s->buttons[genesys_option_to_button(option)].read();
|
*reinterpret_cast<SANE_Bool*>(val) = s->buttons[genesys_option_to_button(option)].read();
|
||||||
break;
|
break;
|
||||||
|
@ -6456,6 +6469,7 @@ GenesysButtonName genesys_option_to_button(int option)
|
||||||
case OPT_OCR_SW: return BUTTON_OCR_SW;
|
case OPT_OCR_SW: return BUTTON_OCR_SW;
|
||||||
case OPT_POWER_SW: return BUTTON_POWER_SW;
|
case OPT_POWER_SW: return BUTTON_POWER_SW;
|
||||||
case OPT_EXTRA_SW: return BUTTON_EXTRA_SW;
|
case OPT_EXTRA_SW: return BUTTON_EXTRA_SW;
|
||||||
|
case OPT_TRANSP_SW: return BUTTON_TRANSP_SW;
|
||||||
default: throw std::runtime_error("Unknown option to convert to button index");
|
default: throw std::runtime_error("Unknown option to convert to button index");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,6 +124,7 @@ enum Genesys_Option
|
||||||
OPT_OCR_SW,
|
OPT_OCR_SW,
|
||||||
OPT_POWER_SW,
|
OPT_POWER_SW,
|
||||||
OPT_EXTRA_SW,
|
OPT_EXTRA_SW,
|
||||||
|
OPT_TRANSP_SW,
|
||||||
OPT_NEED_CALIBRATION_SW,
|
OPT_NEED_CALIBRATION_SW,
|
||||||
OPT_BUTTON_GROUP,
|
OPT_BUTTON_GROUP,
|
||||||
OPT_CALIBRATE,
|
OPT_CALIBRATE,
|
||||||
|
@ -144,6 +145,7 @@ enum GenesysButtonName : unsigned {
|
||||||
BUTTON_OCR_SW,
|
BUTTON_OCR_SW,
|
||||||
BUTTON_POWER_SW,
|
BUTTON_POWER_SW,
|
||||||
BUTTON_EXTRA_SW,
|
BUTTON_EXTRA_SW,
|
||||||
|
BUTTON_TRANSP_SW,
|
||||||
NUM_BUTTONS
|
NUM_BUTTONS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1697,7 +1697,7 @@ void CommandSetGl843::update_hardware_sensors(Genesys_Scanner* s) const
|
||||||
case GpioId::G4010:
|
case GpioId::G4010:
|
||||||
s->buttons[BUTTON_FILE_SW].write((val & 0x01) == 0);
|
s->buttons[BUTTON_FILE_SW].write((val & 0x01) == 0);
|
||||||
s->buttons[BUTTON_COPY_SW].write((val & 0x04) == 0);
|
s->buttons[BUTTON_COPY_SW].write((val & 0x04) == 0);
|
||||||
s->buttons[BUTTON_EXTRA_SW].write((val & 0x40) == 0); // transparency
|
s->buttons[BUTTON_TRANSP_SW].write((val & 0x40) == 0);
|
||||||
s->buttons[BUTTON_SCAN_SW].write((val & 0x08) == 0);
|
s->buttons[BUTTON_SCAN_SW].write((val & 0x08) == 0);
|
||||||
break;
|
break;
|
||||||
case GpioId::CANON_4400F:
|
case GpioId::CANON_4400F:
|
||||||
|
|
|
@ -116,6 +116,7 @@
|
||||||
#define GENESYS_HAS_POWER_SW (1 << 6) /**< scanner has power button */
|
#define GENESYS_HAS_POWER_SW (1 << 6) /**< scanner has power button */
|
||||||
#define GENESYS_HAS_CALIBRATE (1 << 7) /**< scanner has 'calibrate' software button to start calibration */
|
#define GENESYS_HAS_CALIBRATE (1 << 7) /**< scanner has 'calibrate' software button to start calibration */
|
||||||
#define GENESYS_HAS_EXTRA_SW (1 << 8) /**< scanner has extra function button */
|
#define GENESYS_HAS_EXTRA_SW (1 << 8) /**< scanner has extra function button */
|
||||||
|
#define GENESYS_HAS_TRANSP_SW (1 << 9) /**< scanner has TRANSPARCY/SCAN_FILM button */
|
||||||
|
|
||||||
/* USB control message values */
|
/* USB control message values */
|
||||||
#define REQUEST_TYPE_IN (USB_TYPE_VENDOR | USB_DIR_IN)
|
#define REQUEST_TYPE_IN (USB_TYPE_VENDOR | USB_DIR_IN)
|
||||||
|
|
|
@ -347,7 +347,7 @@ void genesys_init_usb_device_tables()
|
||||||
model.flags = ModelFlag::WARMUP |
|
model.flags = ModelFlag::WARMUP |
|
||||||
ModelFlag::DARK_CALIBRATION |
|
ModelFlag::DARK_CALIBRATION |
|
||||||
ModelFlag::CUSTOM_GAMMA;
|
ModelFlag::CUSTOM_GAMMA;
|
||||||
model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EXTRA_SW;
|
model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_TRANSP_SW;
|
||||||
model.search_lines = 100;
|
model.search_lines = 100;
|
||||||
|
|
||||||
s_usb_devices->emplace_back(0x03f0, 0x4505, model);
|
s_usb_devices->emplace_back(0x03f0, 0x4505, model);
|
||||||
|
|
Ładowanie…
Reference in New Issue