kopia lustrzana https://gitlab.com/sane-project/backends
Enabled quality calibration for the Epson 3490
rodzic
50f446e8a5
commit
49b81e26b5
|
@ -1,3 +1,8 @@
|
|||
2005-11-15 Oliver Schwartz <Oliver.Schwartz@gmx.de>
|
||||
* backend/snapscan.c backend/snapscan-options.c
|
||||
backend/snapscan-scsi.c: Enabled quality calibration for the
|
||||
Epson 3490
|
||||
|
||||
2005-11-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||
|
||||
* doc/descriptions/unsupported.desc: Added HP Scanjet 4890. Added
|
||||
|
|
|
@ -600,7 +600,6 @@ static void init_options (SnapScan_Scanner * ps)
|
|||
if ((!(ps->hconfig & HCFG_CAL_ALLOWED))
|
||||
|| (ps->pdev->model == SNAPSCANE52)
|
||||
|| (ps->pdev->model == PERFECTION1670)
|
||||
|| (ps->pdev->model == PERFECTION3490)
|
||||
|| (ps->pdev->model == PRISA5300)) {
|
||||
po[OPT_QUALITY_CAL].cap |= SANE_CAP_INACTIVE;
|
||||
ps->val[OPT_QUALITY_CAL].b = SANE_FALSE;
|
||||
|
@ -1607,6 +1606,9 @@ SANE_Status sane_control_option (SANE_Handle h,
|
|||
|
||||
/*
|
||||
* $Log$
|
||||
* Revision 1.30 2005/11/15 20:11:18 oliver-guest
|
||||
* Enabled quality calibration for the Epson 3490
|
||||
*
|
||||
* Revision 1.29 2005/10/31 21:08:47 oliver-guest
|
||||
* Distinguish between Benq 5000/5000E/5000U
|
||||
*
|
||||
|
|
|
@ -1128,24 +1128,24 @@ static SANE_Status wait_scanner_ready (SnapScan_Scanner *pss)
|
|||
#define READ_CALIBRATION 0x82
|
||||
#define READ_CALIBRATION_BLACK 0x89
|
||||
#define NUM_CALIBRATION_LINES 16
|
||||
#define NUM_CALIBRATION_LINES_2480 48
|
||||
#define NUM_CALIBRATION_LINES_2480_BLACK 128
|
||||
#define NUM_CALIBRATION_LINES_EPSON 48
|
||||
#define NUM_CALIBRATION_LINES_EPSON_BLACK 128
|
||||
|
||||
#define PIXELS_PER_LINE_2480 10200
|
||||
|
||||
static SANE_Status calibrate_2480 (SnapScan_Scanner *pss)
|
||||
static SANE_Status calibrate_epson (SnapScan_Scanner *pss)
|
||||
{
|
||||
u_char *buf, *pbuf;
|
||||
int *bins;
|
||||
static const char *me = "calibrate_2480";
|
||||
int num_bins = PIXELS_PER_LINE_2480;
|
||||
static const char *me = "calibrate_epson";
|
||||
/* pixels_per_line = 8.5 inch * resolution of one sensor */
|
||||
int pixels_per_line = pss->actual_res * 17/4;
|
||||
int num_bins = pixels_per_line;
|
||||
int i, j, k, loop_inc, tl;
|
||||
int r, g, b;
|
||||
size_t expected_read_bytes;
|
||||
size_t read_bytes;
|
||||
SANE_Status status;
|
||||
int pass;
|
||||
int cal_lines = NUM_CALIBRATION_LINES_2480;
|
||||
int cal_lines = NUM_CALIBRATION_LINES_EPSON;
|
||||
int dtc = READ_CALIBRATION;
|
||||
int bytes_per_bin = 1;
|
||||
|
||||
|
@ -1155,11 +1155,11 @@ static SANE_Status calibrate_2480 (SnapScan_Scanner *pss)
|
|||
|
||||
/* calculate number of bins depending on mode and resolution
|
||||
* colour mode requires bins for each of rgb
|
||||
* 2400 dpi doubles it because of second sensor line */
|
||||
* full resolution doubles it because of second sensor line */
|
||||
if (is_colour_mode(actual_mode(pss))) {
|
||||
num_bins *= 3;
|
||||
}
|
||||
if (pss->res > 1200) {
|
||||
if (pss->res >= (SANE_Int)pss->actual_res) {
|
||||
num_bins *= 2;
|
||||
}
|
||||
|
||||
|
@ -1171,7 +1171,7 @@ static SANE_Status calibrate_2480 (SnapScan_Scanner *pss)
|
|||
}
|
||||
|
||||
/* allocate buffer for receive data */
|
||||
expected_read_bytes = PIXELS_PER_LINE_2480 * 3 * 4;
|
||||
expected_read_bytes = pixels_per_line * 3 * 4;
|
||||
buf = (u_char *) malloc (expected_read_bytes);
|
||||
if (!buf) {
|
||||
DBG (DL_MAJOR_ERROR, "%s: out of memory allocating calibration, %ld bytes.", me, (u_long)expected_read_bytes);
|
||||
|
@ -1186,7 +1186,7 @@ static SANE_Status calibrate_2480 (SnapScan_Scanner *pss)
|
|||
if (pass == 1) {
|
||||
if (pss->source == SRC_TPO) {
|
||||
/* pass 1 is for black level calibration of transparency adaptor */
|
||||
cal_lines = NUM_CALIBRATION_LINES_2480_BLACK;
|
||||
cal_lines = NUM_CALIBRATION_LINES_EPSON_BLACK;
|
||||
dtc = READ_CALIBRATION_BLACK;
|
||||
} else
|
||||
continue;
|
||||
|
@ -1326,8 +1326,9 @@ static SANE_Status calibrate (SnapScan_Scanner *pss)
|
|||
SANE_Status status;
|
||||
int line_length = calibration_line_length(pss);
|
||||
|
||||
if (pss->pdev->model == PERFECTION2480) {
|
||||
return calibrate_2480 (pss);
|
||||
if ((pss->pdev->model == PERFECTION2480) ||
|
||||
(pss->pdev->model == PERFECTION3490)) {
|
||||
return calibrate_epson (pss);
|
||||
}
|
||||
|
||||
if ((pss->hconfig & HCFG_CAL_ALLOWED) && line_length) {
|
||||
|
@ -1482,6 +1483,9 @@ static SANE_Status download_firmware(SnapScan_Scanner * pss)
|
|||
|
||||
/*
|
||||
* $Log$
|
||||
* Revision 1.48 2005/11/15 20:11:19 oliver-guest
|
||||
* Enabled quality calibration for the Epson 3490
|
||||
*
|
||||
* Revision 1.47 2005/11/02 19:22:06 oliver-guest
|
||||
* Fixes for Benq 5000
|
||||
*
|
||||
|
|
|
@ -1645,7 +1645,9 @@ SANE_Status sane_start (SANE_Handle h)
|
|||
status = download_halftone_matrices(pss);
|
||||
CHECK_STATUS (status, me, "download_halftone_matrices");
|
||||
|
||||
if (pss->pdev->model == PERFECTION2480 && pss->val[OPT_QUALITY_CAL].b)
|
||||
if (pss->val[OPT_QUALITY_CAL].b &&
|
||||
((pss->pdev->model == PERFECTION2480) ||
|
||||
(pss->pdev->model == PERFECTION3490)))
|
||||
{
|
||||
status = calibrate(pss);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
@ -1676,7 +1678,9 @@ SANE_Status sane_start (SANE_Handle h)
|
|||
pss->bytes_per_line/pss->ms_per_line);
|
||||
|
||||
|
||||
if (pss->pdev->model != PERFECTION2480 && pss->val[OPT_QUALITY_CAL].b)
|
||||
if (pss->val[OPT_QUALITY_CAL].b &&
|
||||
((pss->pdev->model != PERFECTION2480) &&
|
||||
(pss->pdev->model != PERFECTION3490)))
|
||||
{
|
||||
status = calibrate(pss);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
@ -1916,6 +1920,9 @@ SANE_Status sane_get_select_fd (SANE_Handle h, SANE_Int * fd)
|
|||
|
||||
/*
|
||||
* $Log$
|
||||
* Revision 1.61 2005/11/15 20:11:19 oliver-guest
|
||||
* Enabled quality calibration for the Epson 3490
|
||||
*
|
||||
* Revision 1.60 2005/11/10 19:42:02 oliver-guest
|
||||
* Added deinterlacing for Epson 3490
|
||||
*
|
||||
|
|
Ładowanie…
Reference in New Issue