modified color filter option to enable true gray for cis GL841 scanners

merge-requests/1/head
Stphane Voltz 2010-01-12 06:17:09 +01:00
rodzic 54e8a24da6
commit 7724df7c8b
3 zmienionych plików z 43 dodań i 11 usunięć

Wyświetl plik

@ -102,6 +102,14 @@ static SANE_String_Const color_filter_list[] = {
0
};
static SANE_String_Const cis_color_filter_list[] = {
SANE_I18N ("None"),
SANE_I18N ("Red"),
SANE_I18N ("Green"),
SANE_I18N ("Blue"),
0
};
static SANE_String_Const source_list[] = {
SANE_I18N ("Flatbed"),
SANE_I18N ("Transparency Adapter"),
@ -5149,6 +5157,9 @@ calc_parameters (Genesys_Scanner * s)
else
s->dev->settings.color_filter = 1;
if (strcmp (color_filter, "None") == 0)
s->dev->settings.true_gray = 1;
return status;
}
@ -5442,9 +5453,18 @@ init_options (Genesys_Scanner * s)
("When using gray or lineart this option selects the used color.");
s->opt[OPT_COLOR_FILTER].type = SANE_TYPE_STRING;
s->opt[OPT_COLOR_FILTER].constraint_type = SANE_CONSTRAINT_STRING_LIST;
s->opt[OPT_COLOR_FILTER].size = max_string_size (color_filter_list);
s->opt[OPT_COLOR_FILTER].constraint.string_list = color_filter_list;
s->val[OPT_COLOR_FILTER].s = strdup ("Green");
if(!model->is_cis)
{
s->opt[OPT_COLOR_FILTER].size = max_string_size (color_filter_list);
s->opt[OPT_COLOR_FILTER].constraint.string_list = color_filter_list;
s->val[OPT_COLOR_FILTER].s = strdup (s->opt[OPT_COLOR_FILTER].constraint.string_list[1]);
}
else
{
s->opt[OPT_COLOR_FILTER].size = max_string_size (cis_color_filter_list);
s->opt[OPT_COLOR_FILTER].constraint.string_list = cis_color_filter_list;
s->val[OPT_COLOR_FILTER].s = strdup (s->opt[OPT_COLOR_FILTER].constraint.string_list[0]);
}
/* for GL646 cis scanners we're using true gray so ther is no filter */
if (model->asic_type == GENESYS_GL646 && model->is_cis)

Wyświetl plik

@ -2578,8 +2578,6 @@ gl841_init_optical_regs_scan(Genesys_Device * dev,
}
r->value &= ~(REG04_FILTER | REG04_AFEMOD);
/* we could make the color filter used an advanced option of the
backend */
if (channels == 1) {
switch (color_filter) {
case 0:
@ -4609,6 +4607,7 @@ static SANE_Status
gl841_init_regs_for_scan (Genesys_Device * dev)
{
int channels;
int flags;
int depth;
float move;
int move_dpi;
@ -4678,6 +4677,17 @@ gl841_init_regs_for_scan (Genesys_Device * dev)
start = (start * dev->sensor.optical_res) / MM_PER_INCH;
flags=0;
/* we aneable true gray for cis scanners only, and just when doing
* scan since color calibration is OK for this mode
*/
flags = 0;
if(dev->model->is_cis && dev->settings.true_gray)
{
flags |= OPTICAL_FLAG_ENABLE_LEDADD;
}
status = gl841_init_scan_regs (dev,
dev->reg,
dev->settings.xres,
@ -4689,7 +4699,7 @@ gl841_init_regs_for_scan (Genesys_Device * dev)
depth,
channels,
dev->settings.color_filter,
OPTICAL_FLAG_ENABLE_LEDADD);
flags);
if (status != SANE_STATUS_GOOD)
return status;

Wyświetl plik

@ -481,21 +481,23 @@ typedef struct
{
int scan_method; /* todo: change >=2: Transparency, 0x88: negative film */
int scan_mode; /* todo: change 0,1 = lineart, halftone; 2 = gray, 3 = 3pass color, 4=single pass color */
int xres; /* dpi */
int yres; /* dpi */
int xres; /**> horizontal dpi */
int yres; /**> vertical dpi */
double tl_x; /* x start on scan table in mm */
double tl_y; /* y start on scan table in mm */
unsigned int lines; /* number of lines at scan resolution */
unsigned int pixels; /* number of pixels at scan resolution */
unsigned int lines; /**> number of lines at scan resolution */
unsigned int pixels; /**> number of pixels at scan resolution */
unsigned int depth;/* bit depth of the scan */
/* todo : remove these fields ? */
int exposure_time;
unsigned int color_filter; /* todo: check, may be make it an advanced option */
unsigned int color_filter;
int true_gray; /**> true if scan is true gray, false if monochrome scan */
/* BW threshold */
int threshold;