kopia lustrzana https://gitlab.com/sane-project/backends
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
rodzic
4740e6b7f1
commit
af90832aee
|
@ -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>
|
2003-01-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||||
|
|
||||||
* sanei/sanei_usb.c: Don't call usb_clearhalt and usb_set_altinterface
|
* sanei/sanei_usb.c: Don't call usb_clearhalt and usb_set_altinterface
|
||||||
|
|
|
@ -1181,6 +1181,7 @@ check_inquiry(Microtek2_Device *md, SANE_String *model_string)
|
||||||
break;
|
break;
|
||||||
case 0x87:
|
case 0x87:
|
||||||
*model_string = "ScanMaker 5";
|
*model_string = "ScanMaker 5";
|
||||||
|
md->model_flags |= MD_NO_GAMMA;
|
||||||
break;
|
break;
|
||||||
case 0x89:
|
case 0x89:
|
||||||
*model_string = "ScanMaker 6400XL";
|
*model_string = "ScanMaker 6400XL";
|
||||||
|
@ -1296,7 +1297,8 @@ check_inquiry(Microtek2_Device *md, SANE_String *model_string)
|
||||||
case 0xb0:
|
case 0xb0:
|
||||||
*model_string = "ScanMaker X12USL";
|
*model_string = "ScanMaker X12USL";
|
||||||
md->opt_backend_calib_default = SANE_TRUE;
|
md->opt_backend_calib_default = SANE_TRUE;
|
||||||
md->model_flags |= MD_16BIT_TRANSFER;
|
md->model_flags |= MD_16BIT_TRANSFER
|
||||||
|
| MD_CALIB_DIVISOR_600;
|
||||||
break;
|
break;
|
||||||
case 0xb3:
|
case 0xb3:
|
||||||
*model_string = "ScanMaker 3600";
|
*model_string = "ScanMaker 3600";
|
||||||
|
@ -1851,7 +1853,6 @@ dump_attributes(Microtek2_Info *mi)
|
||||||
DBG(1, " Calib white stripe location%4s: %d\n",
|
DBG(1, " Calib white stripe location%4s: %d\n",
|
||||||
" ", mi->calib_white);
|
" ", mi->calib_white);
|
||||||
DBG(1, " Max calib space%16s: %d\n", " ", mi->calib_space);
|
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, " Number of lens%17s: %d\n", " ", mi->nlens);
|
||||||
DBG(1, " Max number of windows%10s: %d\n", " ", mi->nwindows);
|
DBG(1, " Max number of windows%10s: %d\n", " ", mi->nwindows);
|
||||||
DBG(1, " Shading transfer function%6s: 0x%02x\n", " ",mi->shtrnsferequ);
|
DBG(1, " Shading transfer function%6s: 0x%02x\n", " ",mi->shtrnsferequ);
|
||||||
|
@ -3766,6 +3767,16 @@ get_calib_params(Microtek2_Scanner *ms)
|
||||||
|
|
||||||
md = ms->dev;
|
md = ms->dev;
|
||||||
mi = &md->info[md->scan_source];
|
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->x_resolution_dpi = mi->opt_resolution / mi->calib_divisor;
|
||||||
ms->y_resolution_dpi = mi->opt_resolution / 5; /* ignore dust particles */
|
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 */
|
/* The X6 appears to lie about the data format for a TMA */
|
||||||
if ( (&pmi[0])->model_code == 0x91 )
|
if ( (&pmi[0])->model_code == 0x91 )
|
||||||
result[0] &= 0xfd;
|
result[0] &= 0xfd;
|
||||||
/* calib_divisor is bit49 which isn't read yet */
|
/* default value for calib_divisor ... bit49?? */
|
||||||
mi->calib_divisor = 1;
|
mi->calib_divisor = 1;
|
||||||
/* 9600XL */
|
/* 9600XL */
|
||||||
if ( (&pmi[0])->model_code == 0xde )
|
if ( (&pmi[0])->model_code == 0xde )
|
||||||
mi->calib_divisor = 2;
|
mi->calib_divisor = 2;
|
||||||
|
/* 6400XL has problems in lineart mode*/
|
||||||
|
if ( (&pmi[0])->model_code == 0x89 )
|
||||||
|
result[13] &= 0xfe; /* simulate no lineart */
|
||||||
#if 0
|
#if 0
|
||||||
result[13] &= 0xfe; /* simulate no lineart */
|
result[13] &= 0xfe; /* simulate no lineart */
|
||||||
#endif
|
#endif
|
||||||
|
@ -4421,11 +4434,7 @@ scsi_read_attributes(Microtek2_Info *pmi, char *device, u_int8_t scan_source)
|
||||||
RSA_DEPTH(mi->depth, result);
|
RSA_DEPTH(mi->depth, result);
|
||||||
/* The X12USL doesn't say that it has 14bit */
|
/* The X12USL doesn't say that it has 14bit */
|
||||||
if ( (&pmi[0])->model_code == 0xb0 )
|
if ( (&pmi[0])->model_code == 0xb0 )
|
||||||
{
|
|
||||||
mi->depth |= MI_HASDEPTH_14;
|
mi->depth |= MI_HASDEPTH_14;
|
||||||
if ( scan_source == MD_SOURCE_FLATBED )
|
|
||||||
mi->calib_divisor = 2;
|
|
||||||
}
|
|
||||||
RSA_SCANMODE(mi->scanmode, result);
|
RSA_SCANMODE(mi->scanmode, result);
|
||||||
RSA_CCDPIXELS(mi->ccd_pixels, result);
|
RSA_CCDPIXELS(mi->ccd_pixels, result);
|
||||||
RSA_LUTCAP(mi->lut_cap, result);
|
RSA_LUTCAP(mi->lut_cap, result);
|
||||||
|
|
|
@ -90,7 +90,7 @@
|
||||||
|
|
||||||
#define MICROTEK2_MAJOR 0
|
#define MICROTEK2_MAJOR 0
|
||||||
#define MICROTEK2_MINOR 95
|
#define MICROTEK2_MINOR 95
|
||||||
#define MICROTEK2_BUILD "200301111723"
|
#define MICROTEK2_BUILD "200301152155"
|
||||||
#define MICROTEK2_CONFIG_FILE "microtek2.conf"
|
#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_NO_RIS_COMMAND 1024 /* doesn't like read_image_status */
|
||||||
#define MD_16BIT_TRANSFER 2048 /* transfers 10/12/14bit scans as */
|
#define MD_16BIT_TRANSFER 2048 /* transfers 10/12/14bit scans as */
|
||||||
/* 16bit data */
|
/* 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 */
|
size_t n_control_bytes; /* for read_control_bits; the */
|
||||||
/* number is model dependent */
|
/* number is model dependent */
|
||||||
|
|
Ładowanie…
Reference in New Issue