Bugfix for the X12USL(solved problems >600dpi), one for lineart mode with a

6400XL and one for Scanmaker 5 (crashes at sendgamma). From Karsten Festag
<karsten.festag@gmx.de>.
RELEASE_1_0_11_BRANCH
Henning Geinitz 2003-01-16 22:07:18 +00:00
rodzic 4740e6b7f1
commit af90832aee
3 zmienionych plików z 27 dodań i 9 usunięć

Wyświetl plik

@ -1,3 +1,10 @@
2003-01-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
* backend/microtek2.c backend/microtek2.h: Bugfix for the X12USL
(solved problems >600dpi), one for lineart mode with a 6400XL
and one for Scanmaker 5 (crashes at sendgamma). From Karsten Festag
<karsten.festag@gmx.de>.
2003-01-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
* sanei/sanei_usb.c: Don't call usb_clearhalt and usb_set_altinterface

Wyświetl plik

@ -1181,6 +1181,7 @@ check_inquiry(Microtek2_Device *md, SANE_String *model_string)
break;
case 0x87:
*model_string = "ScanMaker 5";
md->model_flags |= MD_NO_GAMMA;
break;
case 0x89:
*model_string = "ScanMaker 6400XL";
@ -1296,7 +1297,8 @@ check_inquiry(Microtek2_Device *md, SANE_String *model_string)
case 0xb0:
*model_string = "ScanMaker X12USL";
md->opt_backend_calib_default = SANE_TRUE;
md->model_flags |= MD_16BIT_TRANSFER;
md->model_flags |= MD_16BIT_TRANSFER
| MD_CALIB_DIVISOR_600;
break;
case 0xb3:
*model_string = "ScanMaker 3600";
@ -1851,7 +1853,6 @@ dump_attributes(Microtek2_Info *mi)
DBG(1, " Calib white stripe location%4s: %d\n",
" ", mi->calib_white);
DBG(1, " Max calib space%16s: %d\n", " ", mi->calib_space);
DBG(1, " Calib Divisor%18s: %d\n", " ", mi->calib_divisor);
DBG(1, " Number of lens%17s: %d\n", " ", mi->nlens);
DBG(1, " Max number of windows%10s: %d\n", " ", mi->nwindows);
DBG(1, " Shading transfer function%6s: 0x%02x\n", " ",mi->shtrnsferequ);
@ -3766,6 +3767,16 @@ get_calib_params(Microtek2_Scanner *ms)
md = ms->dev;
mi = &md->info[md->scan_source];
if ( md->model_flags & MD_CALIB_DIVISOR_600 )
{
if ( ms->x_resolution_dpi <= 600 )
mi->calib_divisor = 2;
else
mi->calib_divisor = 1;
}
DBG(30, "Calib Divisor: %d\n", mi->calib_divisor);
ms->x_resolution_dpi = mi->opt_resolution / mi->calib_divisor;
ms->y_resolution_dpi = mi->opt_resolution / 5; /* ignore dust particles */
@ -4393,12 +4404,14 @@ scsi_read_attributes(Microtek2_Info *pmi, char *device, u_int8_t scan_source)
/* The X6 appears to lie about the data format for a TMA */
if ( (&pmi[0])->model_code == 0x91 )
result[0] &= 0xfd;
/* calib_divisor is bit49 which isn't read yet */
/* default value for calib_divisor ... bit49?? */
mi->calib_divisor = 1;
/* 9600XL */
if ( (&pmi[0])->model_code == 0xde )
mi->calib_divisor = 2;
/* 6400XL has problems in lineart mode*/
if ( (&pmi[0])->model_code == 0x89 )
result[13] &= 0xfe; /* simulate no lineart */
#if 0
result[13] &= 0xfe; /* simulate no lineart */
#endif
@ -4421,11 +4434,7 @@ scsi_read_attributes(Microtek2_Info *pmi, char *device, u_int8_t scan_source)
RSA_DEPTH(mi->depth, result);
/* The X12USL doesn't say that it has 14bit */
if ( (&pmi[0])->model_code == 0xb0 )
{
mi->depth |= MI_HASDEPTH_14;
if ( scan_source == MD_SOURCE_FLATBED )
mi->calib_divisor = 2;
}
RSA_SCANMODE(mi->scanmode, result);
RSA_CCDPIXELS(mi->ccd_pixels, result);
RSA_LUTCAP(mi->lut_cap, result);

Wyświetl plik

@ -90,7 +90,7 @@
#define MICROTEK2_MAJOR 0
#define MICROTEK2_MINOR 95
#define MICROTEK2_BUILD "200301111723"
#define MICROTEK2_BUILD "200301152155"
#define MICROTEK2_CONFIG_FILE "microtek2.conf"
@ -939,6 +939,8 @@ typedef struct Microtek2_Device {
#define MD_NO_RIS_COMMAND 1024 /* doesn't like read_image_status */
#define MD_16BIT_TRANSFER 2048 /* transfers 10/12/14bit scans as */
/* 16bit data */
#define MD_CALIB_DIVISOR_600 4096 /* uses mi->calib_divisor=2 below
600dpi */
size_t n_control_bytes; /* for read_control_bits; the */
/* number is model dependent */