kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Allow supported resolutions to vary depending on scan method
rodzic
24230aea7d
commit
a5fe12a37f
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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; */
|
||||
|
|
|
@ -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; */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 };
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue