Fixed color scan problem.

DEVEL_2_0_BRANCH-1
Frank Zago 2002-03-07 23:57:40 +00:00
rodzic 8016aca0d8
commit 5e0caa5b45
3 zmienionych plików z 15 dodań i 11 usunięć

Wyświetl plik

@ -49,7 +49,7 @@
/*--------------------------------------------------------------------------*/
#define BUILD 7 /* 2002-03-02 */
#define BUILD 8 /* 2002-03-07 */
#define BACKEND_NAME sceptre
#define SCEPTRE_CONFIG_FILE "sceptre.conf"
@ -1556,6 +1556,8 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
if (!(dev->scanning))
{
/* Prepare the parameters for the caller. */
memset (&dev->params, 0, sizeof (SANE_Parameters));
if (dev->val[OPT_PREVIEW].w == SANE_TRUE)
{
@ -1629,9 +1631,6 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
break;
}
/* Prepare the parameters for the caller. */
memset (&dev->params, 0, sizeof (SANE_Parameters));
/* this scanner does only one pass */
dev->params.last_frame = SANE_TRUE;
dev->params.depth = dev->depth;
@ -1677,8 +1676,9 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
}
}
dev->params.bytes_per_line =
dev->params.pixels_per_line * (dev->depth / 8);
dev->params.bytes_per_line = dev->params.pixels_per_line;
if (dev->scan_mode == SCEPTRE_COLOR)
dev->params.bytes_per_line *= 3;
/* lines number rounding rules:
* 2n + [0.0 .. 2.0[ -> round to 2n
@ -1825,14 +1825,18 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
/*
* Try to read the maximum number of bytes.
*
* The windows driver reads no more than 0xffff byte, I've tried
* The windows driver reads no more than 0xffff bytes, I've tried
* some bigger values, but the scanner is losing data!!!
*/
size = data_left;
size = dev->bytes_left;
if (size > dev->buffer_size)
{
size = dev->buffer_size;
}
if (size > data_left)
{
size = data_left;
}
/* If it is a preview, read only what we have been asked
* for. Else, try to maximize the throughput.
@ -1878,7 +1882,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
/* Still got some data. Send it. */
if (size > (size_t) max_len)
size = max_len;
if (size > (size_t) dev->bytes_left)
if (size > dev->bytes_left)
size = dev->bytes_left;
memcpy (buf, dev->image + dev->image_begin, size);

Wyświetl plik

@ -10,7 +10,7 @@
;
:backend "sceptre"
:version "1.0-7" ; version of backend
:version "1.0-8" ; version of backend
:status :new ; :alpha, :beta, :stable, :new
:manpage "sane-sceptre" ; name of manpage
:url "http://www.geocities.com/harikus2000/sane" ; backend's web page

Wyświetl plik

@ -345,7 +345,7 @@ typedef struct Sceptre_Scanner
int depth; /* depth per color */
int halftone_param; /* haltone number, valid for SCEPTRE_HALFTONE */
int bytes_left; /* number of bytes promised to backend
size_t bytes_left; /* number of bytes promised to backend
* left to read. */
int color_shift; /* for color scan: number of lines to