genesys: Allow supported resolutions to vary depending on scan method

merge-requests/217/head
Povilas Kanapickas 2019-10-13 18:30:27 +03:00
rodzic 24230aea7d
commit a5fe12a37f
9 zmienionych plików z 544 dodań i 208 usunięć

Wyświetl plik

@ -49,6 +49,33 @@
namespace genesys {
const MethodResolutions& Genesys_Model::get_resolution_settings(ScanMethod method) const
{
for (const auto& res_for_method : resolutions) {
for (auto res_method : res_for_method.methods) {
if (res_method == method) {
return res_for_method;
}
}
}
throw SaneException("Could not find resolution settings for method %d",
static_cast<unsigned>(method));
}
std::vector<unsigned> Genesys_Model::get_resolutions(ScanMethod method) const
{
auto settings = get_resolution_settings(method);
std::vector<unsigned> ret;
std::copy(settings.resolutions_x.begin(), settings.resolutions_x.end(), std::back_inserter(ret));
std::copy(settings.resolutions_y.begin(), settings.resolutions_y.end(), std::back_inserter(ret));
// sort in decreasing order
std::sort(ret.begin(), ret.end(), std::greater<unsigned>());
ret.erase(std::unique(ret.begin(), ret.end()), ret.end());
return ret;
}
Genesys_Device::~Genesys_Device()
{
clear();

Wyświetl plik

@ -94,6 +94,23 @@ private:
SANE_Fixed value_ = 0;
};
struct MethodResolutions
{
std::vector<ScanMethod> methods;
std::vector<unsigned> resolutions_x;
std::vector<unsigned> resolutions_y;
unsigned get_min_resolution_x() const
{
return *std::min_element(resolutions_x.begin(), resolutions_x.end());
}
unsigned get_min_resolution_y() const
{
return *std::min_element(resolutions_y.begin(), resolutions_y.end());
}
};
/** @brief structure to describe a scanner model
* This structure describes a model. It is composed of information on the
* sensor, the motor, scanner geometry and flags to drive operation.
@ -109,10 +126,8 @@ struct Genesys_Model
AsicType asic_type = AsicType::UNKNOWN;
// possible x resolutions
std::vector<unsigned> xdpi_values;
// possible y resolutions
std::vector<unsigned> ydpi_values;
// possible x and y resolutions for each method supported by the scanner
std::vector<MethodResolutions> resolutions;
// possible depths in gray mode
std::vector<unsigned> bpp_gray_values;
@ -205,17 +220,9 @@ struct Genesys_Model
// how many lines are used to search start position
SANE_Int search_lines = 0;
std::vector<unsigned> get_resolutions() const
{
std::vector<unsigned> ret;
std::copy(xdpi_values.begin(), xdpi_values.end(), std::back_inserter(ret));
std::copy(ydpi_values.begin(), ydpi_values.end(), std::back_inserter(ret));
// sort in decreasing order
const MethodResolutions& get_resolution_settings(ScanMethod method) const;
std::sort(ret.begin(), ret.end(), std::greater<unsigned>());
ret.erase(std::unique(ret.begin(), ret.end()), ret.end());
return ret;
}
std::vector<unsigned> get_resolutions(ScanMethod method) const;
};
/**

Wyświetl plik

@ -91,6 +91,10 @@ namespace {
StaticInit<std::list<Genesys_Device>> s_devices;
} // namespace
#define STR_FLATBED SANE_I18N("Flatbed")
#define STR_TRANSPARENCY_ADAPTER SANE_I18N("Transparency Adapter")
#define STR_TRANSPARENCY_ADAPTER_INFRARED SANE_I18N("Transparency Adapter Infrared")
static SANE_String_Const mode_list[] = {
SANE_VALUE_SCAN_MODE_COLOR,
SANE_VALUE_SCAN_MODE_GRAY,
@ -114,19 +118,6 @@ static SANE_String_Const cis_color_filter_list[] = {
nullptr
};
static SANE_String_Const source_list[] = {
SANE_I18N (STR_FLATBED),
SANE_I18N (STR_TRANSPARENCY_ADAPTER),
nullptr
};
static const char* source_list_infrared[] = {
SANE_I18N(STR_FLATBED),
SANE_I18N(STR_TRANSPARENCY_ADAPTER),
SANE_I18N(STR_TRANSPARENCY_ADAPTER_INFRARED),
nullptr
};
static SANE_Range swdespeck_range = {
1,
9,
@ -3374,6 +3365,18 @@ max_string_size (const SANE_String_Const strings[])
return max_size;
}
static std::size_t max_string_size(const std::vector<const char*>& strings)
{
std::size_t max_size = 0;
for (const auto& s : strings) {
if (!s) {
continue;
}
max_size = std::max(max_size, std::strlen(s));
}
return max_size;
}
static unsigned pick_resolution(const std::vector<unsigned>& resolutions, unsigned resolution,
const char* direction)
{
@ -3400,6 +3403,28 @@ static unsigned pick_resolution(const std::vector<unsigned>& resolutions, unsign
return best_res;
}
static const char* scan_method_to_option_string(ScanMethod method)
{
switch (method) {
case ScanMethod::FLATBED: return STR_FLATBED;
case ScanMethod::TRANSPARENCY: return STR_TRANSPARENCY_ADAPTER;
case ScanMethod::TRANSPARENCY_INFRARED: return STR_TRANSPARENCY_ADAPTER_INFRARED;
}
throw SaneException("Unknown scan method %d", static_cast<unsigned>(method));
}
static ScanMethod option_string_to_scan_method(const std::string& str)
{
if (str == STR_FLATBED) {
return ScanMethod::FLATBED;
} else if (str == STR_TRANSPARENCY_ADAPTER) {
return ScanMethod::TRANSPARENCY;
} else if (str == STR_TRANSPARENCY_ADAPTER_INFRARED) {
return ScanMethod::TRANSPARENCY_INFRARED;
}
throw SaneException("Unknown scan method option %s", str.c_str());
}
static void calc_parameters(Genesys_Scanner* s)
{
DBG_HELPER(dbg);
@ -3424,6 +3449,9 @@ static void calc_parameters(Genesys_Scanner* s)
s->params.depth = s->bit_depth;
}
s->dev->settings.scan_method = s->scan_method;
const auto& resolutions = s->dev->model->get_resolution_settings(s->dev->settings.scan_method);
s->dev->settings.depth = s->bit_depth;
/* interpolation */
@ -3442,8 +3470,8 @@ static void calc_parameters(Genesys_Scanner* s)
}
s->dev->settings.yres = s->resolution;
s->dev->settings.xres = pick_resolution(s->dev->model->xdpi_values, s->dev->settings.xres, "X");
s->dev->settings.yres = pick_resolution(s->dev->model->ydpi_values, s->dev->settings.yres, "Y");
s->dev->settings.xres = pick_resolution(resolutions.resolutions_x, s->dev->settings.xres, "X");
s->dev->settings.yres = pick_resolution(resolutions.resolutions_y, s->dev->settings.yres, "Y");
s->params.lines = static_cast<unsigned>(((br_y - tl_y) * s->dev->settings.yres) /
MM_PER_INCH);
@ -3518,14 +3546,6 @@ static void calc_parameters(Genesys_Scanner* s)
s->dev->settings.scan_mode = ScanColorMode::LINEART;
}
if (s->source == STR_FLATBED) {
s->dev->settings.scan_method = ScanMethod::FLATBED;
} else if (s->source == STR_TRANSPARENCY_ADAPTER) {
s->dev->settings.scan_method = ScanMethod::TRANSPARENCY;
} else if (s->source == STR_TRANSPARENCY_ADAPTER_INFRARED) {
s->dev->settings.scan_method = ScanMethod::TRANSPARENCY_INFRARED;
}
s->dev->settings.lines = s->params.lines;
s->dev->settings.pixels = pixels_per_line;
s->dev->settings.requested_pixels = pixels_per_line * xres_factor;
@ -3739,6 +3759,44 @@ static std::string calibration_filename(Genesys_Device *currdev)
return ret;
}
static void set_resolution_option_values(Genesys_Scanner& s, bool reset_resolution_value)
{
auto resolutions = s.dev->model->get_resolutions(s.scan_method);
s.opt_resolution_values.resize(resolutions.size() + 1, 0);
s.opt_resolution_values[0] = resolutions.size();
std::copy(resolutions.begin(), resolutions.end(), s.opt_resolution_values.begin() + 1);
s.opt[OPT_RESOLUTION].constraint.word_list = s.opt_resolution_values.data();
if (reset_resolution_value) {
s.resolution = *std::min_element(resolutions.begin(), resolutions.end());
}
}
static void set_xy_range_option_values(Genesys_Scanner& s)
{
if (s.scan_method == ScanMethod::FLATBED)
{
s.opt_x_range = create_range(static_cast<float>(s.dev->model->x_size));
s.opt_y_range = create_range(static_cast<float>(s.dev->model->y_size));
}
else
{
s.opt_x_range = create_range(static_cast<float>(s.dev->model->x_size_ta));
s.opt_y_range = create_range(static_cast<float>(s.dev->model->y_size_ta));
}
s.opt[OPT_TL_X].constraint.range = &s.opt_x_range;
s.opt[OPT_TL_Y].constraint.range = &s.opt_y_range;
s.opt[OPT_BR_X].constraint.range = &s.opt_x_range;
s.opt[OPT_BR_Y].constraint.range = &s.opt_y_range;
s.pos_top_left_x = 0;
s.pos_top_left_y = 0;
s.pos_bottom_right_x = s.opt_x_range.max;
s.pos_bottom_right_y = s.opt_y_range.max;
}
static void init_options(Genesys_Scanner* s)
{
@ -3779,26 +3837,25 @@ static void init_options(Genesys_Scanner* s)
s->mode = SANE_VALUE_SCAN_MODE_GRAY;
/* scan source */
s->opt_source_values.clear();
for (const auto& resolution_setting : model->resolutions) {
for (auto method : resolution_setting.methods) {
s->opt_source_values.push_back(scan_method_to_option_string(method));
}
}
s->opt_source_values.push_back(nullptr);
s->opt[OPT_SOURCE].name = SANE_NAME_SCAN_SOURCE;
s->opt[OPT_SOURCE].title = SANE_TITLE_SCAN_SOURCE;
s->opt[OPT_SOURCE].desc = SANE_DESC_SCAN_SOURCE;
s->opt[OPT_SOURCE].type = SANE_TYPE_STRING;
s->opt[OPT_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
s->opt[OPT_SOURCE].size = max_string_size (source_list);
s->opt[OPT_SOURCE].constraint.string_list = source_list;
s->source = STR_FLATBED;
if (model->flags & GENESYS_FLAG_HAS_UTA)
{
ENABLE (OPT_SOURCE);
if (model->flags & GENESYS_FLAG_HAS_UTA_INFRARED) {
s->opt[OPT_SOURCE].size = max_string_size(source_list_infrared);
s->opt[OPT_SOURCE].constraint.string_list = source_list_infrared;
}
}
else
{
DISABLE (OPT_SOURCE);
s->opt[OPT_SOURCE].size = max_string_size(s->opt_source_values);
s->opt[OPT_SOURCE].constraint.string_list = s->opt_source_values.data();
if (s->opt_source_values.size() < 2) {
throw SaneException("No scan methods specified for scanner");
}
s->scan_method = model->default_method;
/* preview */
s->opt[OPT_PREVIEW].name = SANE_NAME_PREVIEW;
@ -3821,22 +3878,13 @@ static void init_options(Genesys_Scanner* s)
s->bit_depth = model->bpp_gray_values[0];
// resolution
auto resolutions = model->get_resolutions();
unsigned min_dpi = *std::min_element(resolutions.begin(), resolutions.end());
s->opt_resolution_values.resize(resolutions.size() + 1, 0);
s->opt_resolution_values[0] = resolutions.size();
std::copy(resolutions.begin(), resolutions.end(), s->opt_resolution_values.begin() + 1);
s->opt[OPT_RESOLUTION].name = SANE_NAME_SCAN_RESOLUTION;
s->opt[OPT_RESOLUTION].title = SANE_TITLE_SCAN_RESOLUTION;
s->opt[OPT_RESOLUTION].desc = SANE_DESC_SCAN_RESOLUTION;
s->opt[OPT_RESOLUTION].type = SANE_TYPE_INT;
s->opt[OPT_RESOLUTION].unit = SANE_UNIT_DPI;
s->opt[OPT_RESOLUTION].constraint_type = SANE_CONSTRAINT_WORD_LIST;
s->opt[OPT_RESOLUTION].constraint.word_list = s->opt_resolution_values.data();
s->resolution = min_dpi;
set_resolution_option_values(*s, true);
/* "Geometry" group: */
s->opt[OPT_GEOMETRY_GROUP].name = SANE_NAME_GEOMETRY;
@ -3850,45 +3898,36 @@ static void init_options(Genesys_Scanner* s)
s->opt_x_range = create_range(static_cast<float>(model->x_size));
s->opt_y_range = create_range(static_cast<float>(model->y_size));
/* top-left x */
// scan area
s->opt[OPT_TL_X].name = SANE_NAME_SCAN_TL_X;
s->opt[OPT_TL_X].title = SANE_TITLE_SCAN_TL_X;
s->opt[OPT_TL_X].desc = SANE_DESC_SCAN_TL_X;
s->opt[OPT_TL_X].type = SANE_TYPE_FIXED;
s->opt[OPT_TL_X].unit = SANE_UNIT_MM;
s->opt[OPT_TL_X].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_TL_X].constraint.range = &s->opt_x_range;
s->pos_top_left_x = 0;
/* top-left y */
s->opt[OPT_TL_Y].name = SANE_NAME_SCAN_TL_Y;
s->opt[OPT_TL_Y].title = SANE_TITLE_SCAN_TL_Y;
s->opt[OPT_TL_Y].desc = SANE_DESC_SCAN_TL_Y;
s->opt[OPT_TL_Y].type = SANE_TYPE_FIXED;
s->opt[OPT_TL_Y].unit = SANE_UNIT_MM;
s->opt[OPT_TL_Y].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_TL_Y].constraint.range = &s->opt_y_range;
s->pos_top_left_y = 0;
/* bottom-right x */
s->opt[OPT_BR_X].name = SANE_NAME_SCAN_BR_X;
s->opt[OPT_BR_X].title = SANE_TITLE_SCAN_BR_X;
s->opt[OPT_BR_X].desc = SANE_DESC_SCAN_BR_X;
s->opt[OPT_BR_X].type = SANE_TYPE_FIXED;
s->opt[OPT_BR_X].unit = SANE_UNIT_MM;
s->opt[OPT_BR_X].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_BR_X].constraint.range = &s->opt_x_range;
s->pos_bottom_right_x = s->opt_x_range.max;
/* bottom-right y */
s->opt[OPT_BR_Y].name = SANE_NAME_SCAN_BR_Y;
s->opt[OPT_BR_Y].title = SANE_TITLE_SCAN_BR_Y;
s->opt[OPT_BR_Y].desc = SANE_DESC_SCAN_BR_Y;
s->opt[OPT_BR_Y].type = SANE_TYPE_FIXED;
s->opt[OPT_BR_Y].unit = SANE_UNIT_MM;
s->opt[OPT_BR_Y].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_BR_Y].constraint.range = &s->opt_y_range;
s->pos_bottom_right_y = s->opt_y_range.max;
set_xy_range_option_values(*s);
/* "Enhancement" group: */
s->opt[OPT_ENHANCEMENT_GROUP].name = SANE_NAME_ENHANCEMENT;
@ -5084,7 +5123,7 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
std::strcpy(reinterpret_cast<char*>(val), s->calibration_file.c_str());
break;
case OPT_SOURCE:
std::strcpy(reinterpret_cast<char*>(val), s->source.c_str());
std::strcpy(reinterpret_cast<char*>(val), scan_method_to_option_string(s->scan_method));
break;
/* word array options */
@ -5344,32 +5383,18 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
calc_parameters(s);
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
case OPT_SOURCE:
if (s->source != reinterpret_cast<const char*>(val)) {
s->source = reinterpret_cast<const char*>(val);
case OPT_SOURCE: {
auto scan_method = option_string_to_scan_method(reinterpret_cast<const char*>(val));
if (s->scan_method != scan_method) {
s->scan_method = scan_method;
// change geometry constraint to the new source value
if (s->source == STR_FLATBED)
{
s->opt_x_range = create_range(static_cast<float>(s->dev->model->x_size));
s->opt_y_range = create_range(static_cast<float>(s->dev->model->y_size));
}
else
{
s->opt_x_range = create_range(static_cast<float>(s->dev->model->x_size_ta));
s->opt_y_range = create_range(static_cast<float>(s->dev->model->y_size_ta));
}
set_xy_range_option_values(*s);
set_resolution_option_values(*s, false);
// s->opt[*].constraint.range already reference correct pointers to s->opt_{x,y}_range
s->pos_top_left_x = 0;
s->pos_top_left_y = 0;
s->pos_bottom_right_x = s->opt_x_range.max;
s->pos_bottom_right_y = s->opt_y_range.max;
/* signals reload */
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
}
break;
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
}
break;
}
case OPT_MODE:
s->mode = reinterpret_cast<const char*>(val);

Wyświetl plik

@ -74,10 +74,6 @@
/* Maximum time for lamp warm-up */
#define WARMUP_TIME 65
#define STR_FLATBED "Flatbed"
#define STR_TRANSPARENCY_ADAPTER "Transparency Adapter"
#define STR_TRANSPARENCY_ADAPTER_INFRARED "Transparency Adapter Infrared"
#ifndef SANE_I18N
#define SANE_I18N(text) text
#endif
@ -211,6 +207,7 @@ struct Genesys_Scanner
std::vector<SANE_Word> opt_resolution_values;
SANE_Range opt_x_range = {};
SANE_Range opt_y_range = {};
std::vector<const char*> opt_source_values;
// Option values
SANE_Word bit_depth = 0;
@ -237,7 +234,10 @@ struct Genesys_Scanner
SANE_Word pos_bottom_right_y = 0;
SANE_Word pos_bottom_right_x = 0;
std::string mode, source, color_filter;
std::string mode, color_filter;
// the value of the source option
ScanMethod scan_method = ScanMethod::FLATBED;
std::string calibration_file;
// Button states

Wyświetl plik

@ -3942,8 +3942,8 @@ void CommandSetGl841::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
gl841_stop_action(dev);
// set up for a gray scan at lowest dpi
unsigned dpi = *std::min_element(dev->model->xdpi_values.begin(),
dev->model->xdpi_values.end());
const auto& resolution_settings = dev->model->get_resolution_settings(dev->settings.scan_method);
unsigned dpi = resolution_settings.get_min_resolution_x();
channels = 1;
/* shading calibation is done with dev->motor.base_ydpi */

Wyświetl plik

@ -1885,8 +1885,8 @@ void CommandSetGl846::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
gl846_stop_action(dev);
// set up for a gray scan at lowest dpi
unsigned dpi = *std::min_element(dev->model->xdpi_values.begin(),
dev->model->xdpi_values.end());
const auto& resolution_settings = dev->model->get_resolution_settings(dev->settings.scan_method);
unsigned dpi = resolution_settings.get_min_resolution_x();
channels = 1;
/* 10 MM */
/* lines = (10 * dpi) / MM_PER_INCH; */

Wyświetl plik

@ -1962,8 +1962,8 @@ void CommandSetGl847::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
gl847_stop_action(dev);
// set up for a gray scan at lowest dpi
unsigned dpi = *std::min_element(dev->model->xdpi_values.begin(),
dev->model->xdpi_values.end());
const auto& resolution_settings = dev->model->get_resolution_settings(dev->settings.scan_method);
unsigned dpi = resolution_settings.get_min_resolution_x();
channels = 1;
/* 10 MM */
/* lines = (10 * dpi) / MM_PER_INCH; */

Wyświetl plik

@ -2238,7 +2238,8 @@ Motor_Profile *profile;
*/
int sanei_genesys_get_lowest_ydpi(Genesys_Device *dev)
{
return *std::min_element(dev->model->ydpi_values.begin(), dev->model->ydpi_values.end());
const auto& resolution_settings = dev->model->get_resolution_settings(dev->settings.scan_method);
return resolution_settings.get_min_resolution_y();
}
/** @brief returns the lowest possible dpi for the device
@ -2248,10 +2249,9 @@ int sanei_genesys_get_lowest_ydpi(Genesys_Device *dev)
*/
int sanei_genesys_get_lowest_dpi(Genesys_Device *dev)
{
return std::min(*std::min_element(dev->model->xdpi_values.begin(),
dev->model->xdpi_values.end()),
*std::min_element(dev->model->ydpi_values.begin(),
dev->model->ydpi_values.end()));
const auto& resolution_settings = dev->model->get_resolution_settings(dev->settings.scan_method);
return std::min(resolution_settings.get_min_resolution_x(),
resolution_settings.get_min_resolution_y());
}
/** @brief check is a cache entry may be used

Wyświetl plik

@ -71,8 +71,13 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::UMAX_ASTRA_4500;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 300, 150, 75 };
model.ydpi_values = { 2400, 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 300, 150, 75 },
{ 2400, 1200, 600, 300, 150, 75 }
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -123,8 +128,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_50;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 1200, 600, 400, 300, 240, 200, 150, 75 };
model.ydpi_values = { 2400, 1200, 600, 400, 300, 240, 200, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 400, 300, 240, 200, 150, 75 },
{ 2400, 1200, 600, 400, 300, 240, 200, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -181,8 +192,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::PANASONIC_KV_SS080;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 600, /* 500, 400,*/ 300, 200, 150, 100, 75 };
model.ydpi_values = { 1200, 600, /* 500, 400, */ 300, 200, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, /* 500, 400,*/ 300, 200, 150, 100, 75 },
{ 1200, 600, /* 500, 400, */ 300, 200, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -235,8 +252,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::HP_SCANJET_4850C;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.ydpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 2400, 1200, 600, 400, 300, 200, 150, 100 },
{ 2400, 1200, 600, 400, 300, 200, 150, 100 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -290,8 +313,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::HP_SCANJET_G4010;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.ydpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 2400, 1200, 600, 400, 300, 200, 150, 100 },
{ 2400, 1200, 600, 400, 300, 200, 150, 100 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -345,8 +374,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::HP_SCANJET_G4050;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.ydpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 2400, 1200, 600, 400, 300, 200, 150, 100 },
{ 2400, 1200, 600, 400, 300, 200, 150, 100 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -401,8 +436,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_4400F;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.ydpi_values = { 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 },
{ 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -459,8 +500,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_8400F;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.ydpi_values = { 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 };
model.resolutions = {
{
{ ScanMethod::FLATBED, ScanMethod::TRANSPARENCY, ScanMethod::TRANSPARENCY_INFRARED },
{ 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 },
{ 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -519,8 +566,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_8600F;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 4800, 2400, 1200, 600, 400, 300 }; // TODO: resolutions for non-XPA mode
model.ydpi_values = { 4800, 2400, 1200, 600, 400, 300 }; // TODO: resolutions for non-XPA mode
model.resolutions = {
{
{ ScanMethod::FLATBED, ScanMethod::TRANSPARENCY, ScanMethod::TRANSPARENCY_INFRARED },
{ 4800, 2400, 1200, 600, 400, 300 }, // TODO: resolutions for non-XPA mode
{ 4800, 2400, 1200, 600, 400, 300 }, // TODO: resolutions for non-XPA mode
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -579,8 +632,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_100;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 };
model.ydpi_values = { 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 },
{ 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -639,8 +698,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_110;
model.asic_type = AsicType::GL124;
model.xdpi_values = { 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 };
model.ydpi_values = { 4800, 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 },
{ 4800, 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -697,8 +762,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_120;
model.asic_type = AsicType::GL124;
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 150, 100, 75 };
model.ydpi_values = { 4800, 2400, 1200, 600, 300, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 4800, 2400, 1200, 600, 300, 150, 100, 75 },
{ 4800, 2400, 1200, 600, 300, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -754,8 +825,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_210;
model.asic_type = AsicType::GL124;
model.xdpi_values = { 4800, 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 };
model.ydpi_values = { 4800, 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 4800, 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 },
{ 4800, 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -814,8 +891,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_220;
model.asic_type = AsicType::GL124; // or a compatible one
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 150, 100, 75 };
model.ydpi_values = { 4800, 2400, 1200, 600, 300, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 4800, 2400, 1200, 600, 300, 150, 100, 75 },
{ 4800, 2400, 1200, 600, 300, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -873,8 +956,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_5600F;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 1200, 600, 400, 300, 200, 150, 100, 75 };
model.ydpi_values = { 1200, 600, 400, 300, 200, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 400, 300, 200, 150, 100, 75 },
{ 1200, 600, 400, 300, 200, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -933,8 +1022,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_700F;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 };
model.ydpi_values = { 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 },
{ 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -992,8 +1087,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_200;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 };
model.ydpi_values = { 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 },
{ 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1051,8 +1152,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_60;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 1200, 600, 300, 150, 75 };
model.ydpi_values = { 2400, 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 300, 150, 75 },
{ 2400, 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1109,8 +1216,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_LIDE_80;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 1200, 600, 400, 300, 240, 150, 100, 75 };
model.ydpi_values = { 2400, 1200, 600, 400, 300, 240, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 400, 300, 240, 150, 100, 75 },
{ 2400, 1200, 600, 400, 300, 240, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
model.x_offset = 0.42;
@ -1166,10 +1279,15 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::HP_SCANJET_2300C;
model.asic_type = AsicType::GL646;
// FIXME: the scanner supports 1200 ydpi, but we never scanned at this resolution so for now
// it's not supported
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { /* 1200, */600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
// FIXME: the scanner supports 1200 ydpi, but we never scanned at this resolution so for now
// it's not supported
{ 600, 300, 150, 75 },
{ /* 1200, */600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1225,8 +1343,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::HP_SCANJET_2400C;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 300, 150, 100, 50 };
model.ydpi_values = { 1200, 600, 300, 150, 100, 50 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 300, 150, 100, 50 },
{ 1200, 600, 300, 150, 100, 50 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1282,8 +1406,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::VISIONEER_STROBE_XP200;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 600, 300, 200, 100, 75 };
model.ydpi_values = { 600, 300, 200, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 200, 100, 75 },
{ 600, 300, 200, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1338,8 +1468,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::HP_SCANJET_3670C;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 300, 150, 100, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 300, 150, 100, 75 },
{ 1200, 600, 300, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1395,8 +1531,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::PLUSTEK_OPTICPRO_ST12;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1446,8 +1588,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::PLUSTEK_OPTICPRO_ST24;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 300, 150, 75 };
model.ydpi_values = { 2400, 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 300, 150, 75 },
{ 2400, 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1501,8 +1649,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::MEDION_MD5345;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 400, 300, 200, 150, 100, 75, 50 };
model.ydpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100, 75, 50 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 400, 300, 200, 150, 100, 75, 50 },
{ 2400, 1200, 600, 400, 300, 200, 150, 100, 75, 50 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1561,8 +1715,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::VISIONEER_STROBE_XP300;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1615,8 +1775,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::SYSCAN_DOCKETPORT_665;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1669,8 +1835,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::VISIONEER_ROADWARRIOR;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1723,8 +1895,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::SYSCAN_DOCKETPORT_465;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1778,8 +1956,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::VISIONEER_STROBE_XP100_REVISION3;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1832,8 +2016,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::PENTAX_DSMOBILE_600;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1888,8 +2078,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::SYSCAN_DOCKETPORT_467;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1941,8 +2137,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::SYSCAN_DOCKETPORT_685;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -1997,8 +2199,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::SYSCAN_DOCKETPORT_485;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -2052,8 +2260,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::DCT_DOCKETPORT_487;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -2108,8 +2322,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::VISIONEER_7100;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 400, 300, 200, 150, 100, 75, 50 };
model.ydpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100, 75, 50 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 400, 300, 200, 150, 100, 75, 50 },
{ 2400, 1200, 600, 400, 300, 200, 150, 100, 75, 50 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -2168,8 +2388,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::XEROX_2400;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 400, 300, 200, 150, 100, 75, 50 };
model.ydpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100, 75, 50 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 400, 300, 200, 150, 100, 75, 50 },
{ 2400, 1200, 600, 400, 300, 200, 150, 100, 75, 50 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -2228,8 +2454,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::XEROX_TRAVELSCANNER_100;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 600, 300, 150, 75 },
{ 1200, 600, 300, 150, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -2282,8 +2514,15 @@ void genesys_init_usb_device_tables()
model.model = "OpticBook 3600";
model.model_id = ModelId::PLUSTEK_OPTICPRO_3600;
model.asic_type = AsicType::GL841;
model.xdpi_values = { /*1200,*/ 600, 400, 300, 200, 150, 100, 75 };
model.ydpi_values = { /*2400,*/ 1200, 600, 400, 300, 200, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ /*1200,*/ 600, 400, 300, 200, 150, 100, 75 },
{ /*2400,*/ 1200, 600, 400, 300, 200, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -2337,8 +2576,15 @@ void genesys_init_usb_device_tables()
model.model = "OpticFilm 7200i";
model.model_id = ModelId::PLUSTEK_OPTICFILM_7200I;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 7200, 3600, 1800, 900 };
model.ydpi_values = { 7200, 3600, 1800, 900 };
model.resolutions = {
{
{ ScanMethod::TRANSPARENCY, ScanMethod::TRANSPARENCY_INFRARED },
{ 7200, 3600, 1800, 900 },
{ 7200, 3600, 1800, 900 },
}
};
model.bpp_gray_values = { 16 };
model.bpp_color_values = { 16 };
model.default_method = ScanMethod::TRANSPARENCY;
@ -2397,8 +2643,15 @@ void genesys_init_usb_device_tables()
model.model = "OpticFilm 7300";
model.model_id = ModelId::PLUSTEK_OPTICFILM_7300;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 7200, 3600, 1800, 900 };
model.ydpi_values = { 7200, 3600, 1800, 900 };
model.resolutions = {
{
{ ScanMethod::TRANSPARENCY },
{ 7200, 3600, 1800, 900 },
{ 7200, 3600, 1800, 900 },
}
};
model.bpp_gray_values = { 16 };
model.bpp_color_values = { 16 };
model.default_method = ScanMethod::TRANSPARENCY;
@ -2455,8 +2708,15 @@ void genesys_init_usb_device_tables()
model.model = "OpticFilm 7500i";
model.model_id = ModelId::PLUSTEK_OPTICFILM_7500I;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 7200, 3600, 1800, 900 };
model.ydpi_values = { 7200, 3600, 1800, 900 };
model.resolutions = {
{
{ ScanMethod::TRANSPARENCY, ScanMethod::TRANSPARENCY_INFRARED },
{ 7200, 3600, 1800, 900 },
{ 7200, 3600, 1800, 900 },
}
};
model.bpp_gray_values = { 16 };
model.bpp_color_values = { 16 };
model.default_method = ScanMethod::TRANSPARENCY;
@ -2515,8 +2775,13 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::HP_SCANJET_N6310;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100, 75 };
model.ydpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 2400, 1200, 600, 400, 300, 200, 150, 100, 75 },
{ 2400, 1200, 600, 400, 300, 200, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -2575,8 +2840,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::PLUSTEK_OPTICBOOK_3800;
model.asic_type = AsicType::GL845;
model.xdpi_values = { 1200, 600, 300, 150, 100, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 300, 150, 100, 75 },
{ 1200, 600, 300, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
@ -2629,8 +2900,14 @@ void genesys_init_usb_device_tables()
model.model_id = ModelId::CANON_IMAGE_FORMULA_101;
model.asic_type = AsicType::GL846;
model.xdpi_values = { 1200, 600, 300, 150, 100, 75 };
model.ydpi_values = { 1200, 600, 300, 150, 100, 75 };
model.resolutions = {
{
{ ScanMethod::FLATBED },
{ 1200, 600, 300, 150, 100, 75 },
{ 1200, 600, 300, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };