SnapScan backend version 1.4.11

DEVEL_2_0_BRANCH-1
Oliver Schwartz 2002-04-23 22:37:54 +00:00
rodzic 356237e1fa
commit ab6cf03059
4 zmienionych plików z 166 dodań i 163 usunięć

Wyświetl plik

@ -49,6 +49,67 @@
/* $Id$
SANE SnapScan backend */
/* ranges */
static const SANE_Range x_range_fb =
{
SANE_FIX (0.0), SANE_FIX (216.0), 0
}; /* mm */
static const SANE_Range y_range_fb =
{
SANE_FIX (0.0), SANE_FIX (297.0), 0
}; /* mm */
static const SANE_Range x_range_tpo_default =
{
SANE_FIX (0.0), SANE_FIX (129.0), 0
}; /* mm */
static const SANE_Range y_range_tpo_default =
{
SANE_FIX (0.0), SANE_FIX (180.0), 0
}; /* mm */
static const SANE_Range x_range_tpo_1236 =
{
SANE_FIX (0.0), SANE_FIX (203.0), 0
}; /* mm */
static const SANE_Range y_range_tpo_1236 =
{
SANE_FIX (0.0), SANE_FIX (254.0), 0
}; /* mm */
static SANE_Range x_range_tpo;
static SANE_Range y_range_tpo;
static const SANE_Range gamma_range =
{
SANE_FIX (0.0), SANE_FIX (4.0), 0
};
static const SANE_Range gamma_vrange =
{
0, 255, 1
};
static const SANE_Range lpr_range =
{
1, 50, 1
};
static const SANE_Range brightness_range =
{
-400 << SANE_FIXED_SCALE_SHIFT,
400 << SANE_FIXED_SCALE_SHIFT,
1 << SANE_FIXED_SCALE_SHIFT
};
static const SANE_Range contrast_range =
{
-100 << SANE_FIXED_SCALE_SHIFT,
400 << SANE_FIXED_SCALE_SHIFT,
1 << SANE_FIXED_SCALE_SHIFT
};
static const SANE_Range positive_percent_range =
{
0 << SANE_FIXED_SCALE_SHIFT,
100 << SANE_FIXED_SCALE_SHIFT,
1 << SANE_FIXED_SCALE_SHIFT
};
/* init_options -- initialize the option set for a scanner; expects the
scanner structure's hardware configuration byte (hconfig) to be valid.
@ -213,7 +274,7 @@ static void init_options (SnapScan_Scanner * ps)
if (ps->hconfig & HCFG_TPO)
{
source_list[i++] = src_tpo;
po[OPT_SOURCE].cap ^= SANE_CAP_INACTIVE;
po[OPT_SOURCE].cap &= ~SANE_CAP_INACTIVE;
}
source_list[i] = 0;
po[OPT_SOURCE].size = max_string_size(source_list);
@ -553,7 +614,7 @@ static void init_options (SnapScan_Scanner * ps)
"Send an Inquiry command to the scanner and dump out some of "
"the current settings.");
po[OPT_INQUIRY].type = SANE_TYPE_BUTTON;
po[OPT_INQUIRY].cap = SANE_CAP_ADVANCED;
po[OPT_INQUIRY].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
po[OPT_INQUIRY].constraint_type = SANE_CONSTRAINT_NONE;
po[OPT_SELF_TEST].name = "do-self-test";
@ -561,7 +622,7 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_SELF_TEST].desc = SANE_I18N(
"Send a Self Test command to the scanner and report the result.");
po[OPT_SELF_TEST].type = SANE_TYPE_BUTTON;
po[OPT_SELF_TEST].cap = SANE_CAP_ADVANCED;
po[OPT_SELF_TEST].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
po[OPT_SELF_TEST].constraint_type = SANE_CONSTRAINT_NONE;
po[OPT_REQ_SENSE].name = "do-req-sense";
@ -570,7 +631,7 @@ static void init_options (SnapScan_Scanner * ps)
"Send a Request Sense command to the scanner, and print out the sense "
"report.");
po[OPT_REQ_SENSE].type = SANE_TYPE_BUTTON;
po[OPT_REQ_SENSE].cap = SANE_CAP_ADVANCED;
po[OPT_REQ_SENSE].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
po[OPT_REQ_SENSE].constraint_type = SANE_CONSTRAINT_NONE;
po[OPT_REL_UNIT].name = "do-rel-unit";
@ -579,7 +640,7 @@ static void init_options (SnapScan_Scanner * ps)
"Send a Release Unit command to the scanner. This is the same as "
"a cancel command.");
po[OPT_REL_UNIT].type = SANE_TYPE_BUTTON;
po[OPT_REL_UNIT].cap = SANE_CAP_ADVANCED;
po[OPT_REL_UNIT].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
po[OPT_REL_UNIT].constraint_type = SANE_CONSTRAINT_NONE;
}
@ -990,9 +1051,9 @@ SANE_Status sane_control_option (SANE_Handle h,
}
/* Adjust actual range values to new max values */
if (pss->brx > pss->pdev->x_range.max)
pss->brx = pss->pdev->x_range.max - pdev->x_range.quant;
pss->brx = pss->pdev->x_range.max;
if (pss->bry > pss->pdev->y_range.max)
pss->bry = pss->pdev->y_range.max - pdev->y_range.quant;
pss->bry = pss->pdev->y_range.max;
pss->predef_window = pdw_none;
if (pss->source_s)
free (pss->source_s);
@ -1003,48 +1064,48 @@ SANE_Status sane_control_option (SANE_Handle h,
case OPT_TLX:
pss->tlx = *(SANE_Fixed *) v;
pss->predef_window = pdw_none;
if (fabs(pss->tlx - pdev->x_range.max) < pdev->x_range.quant) {
pss->tlx -= pdev->x_range.quant;
if (pss->tlx > pdev->x_range.max) {
pss->tlx = pdev->x_range.max;
}
if (pss->brx < pss->tlx) {
pss->brx = pss->tlx + pdev->x_range.quant;
pss->brx = pss->tlx;
}
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
break;
case OPT_TLY:
pss->tly = *(SANE_Fixed *) v;
if (fabs(pss->tly - pdev->y_range.max) < pdev->y_range.quant) {
pss->tly -= pdev->y_range.quant;
}
pss->predef_window = pdw_none;
if (pss->tly > pdev->y_range.max){
pss->tly = pdev->y_range.max;
}
if (pss->bry < pss->tly) {
pss->bry = pss->tly + pdev->y_range.quant;
pss->bry = pss->tly;
}
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
break;
case OPT_BRX:
pss->brx = *(SANE_Fixed *) v;
if (fabs(pss->brx - pdev->x_range.min) < pdev->x_range.quant) {
pss->brx += pdev->x_range.quant;
pss->predef_window = pdw_none;
if (pss->brx < pdev->x_range.min) {
pss->brx = pdev->x_range.min;
}
if (pss->brx < pss->tlx) {
pss->tlx = pss->brx - pdev->x_range.quant;
pss->tlx = pss->brx;
}
pss->predef_window = pdw_none;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
break;
case OPT_BRY:
pss->bry = *(SANE_Fixed *) v;
if (fabs(pss->bry - pdev->y_range.min) < pdev->y_range.quant) {
pss->bry += pdev->y_range.quant;
pss->predef_window = pdw_none;
if (pss->bry < pdev->y_range.min) {
pss->bry = pdev->y_range.min;
}
if (pss->bry < pss->tly) {
pss->tly = pss->bry - pdev->y_range.quant;
pss->tly = pss->bry;
}
pss->predef_window = pdw_none;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
break;
@ -1445,8 +1506,8 @@ SANE_Status sane_control_option (SANE_Handle h,
/*
* $Log$
* Revision 1.1 2002/03/24 12:32:26 oliverschwartz
* Snapscan backend version 1.4.9
* Revision 1.2 2002/04/23 22:37:51 oliverschwartz
* SnapScan backend version 1.4.11
*
* Revision 1.1 2002/03/24 12:07:15 oliverschwartz
* Moved option functions from snapscan.c to snapscan-options.c

Wyświetl plik

@ -545,7 +545,7 @@ static SANE_Status inquiry (SnapScan_Scanner *pss)
"%s: effective buffer size = %lu bytes, %lu lines\n",
me,
(u_long) pss->buf_sz,
(u_long) (pss->buf_sz ? pss->buf_sz / pss->lines : 0));
(u_long) (pss->lines ? pss->buf_sz / pss->lines : 0));
DBG (DL_DATA_TRACE,
"%s: expected total scan data: %lu bytes\n",
me,
@ -772,30 +772,23 @@ static SANE_Status set_window (SnapScan_Scanner *pss)
(int) (pss->actual_res*IN_PER_MM*SANE_UNFIX(pss->brx));
int bryp =
(int) (pss->actual_res*IN_PER_MM*SANE_UNFIX(pss->bry));
int tmp;
/* we don't guard against brx < tlx and bry < tly in the options */
if (brxp < tlxp)
{
tmp = tlxp;
tlxp = brxp;
brxp = tmp;
/* Check for brx > tlx and bry > tly */
if (brxp <= tlxp) {
tlxp = MAX (0, brxp - 75);
}
if (bryp <= tlyp) {
tlyp = MAX (0, bryp - 75);
}
if (bryp < tlyp)
{
tmp = tlyp;
tlyp = bryp;
bryp = tmp;
}
u_int_to_u_char4p (tlxp, pc + SET_WINDOW_P_TLX);
u_int_to_u_char4p (tlyp, pc + SET_WINDOW_P_TLY);
u_int_to_u_char4p (MAX (((unsigned) (brxp - tlxp)), 75),
pc + SET_WINDOW_P_WIDTH);
u_int_to_u_char4p (MAX (((unsigned) (bryp - tlyp)), 75),
pc + SET_WINDOW_P_LENGTH);
DBG (DL_CALL_TRACE, "%s Width: %d\n", me, brxp-tlxp);
DBG (DL_CALL_TRACE, "%s Length: %d\n", me, bryp-tlyp);
DBG (DL_INFO, "%s Width: %d\n", me, brxp-tlxp);
DBG (DL_INFO, "%s Length: %d\n", me, bryp-tlyp);
}
pc[SET_WINDOW_P_BRIGHTNESS] = 128;
pc[SET_WINDOW_P_THRESHOLD] =
@ -809,7 +802,7 @@ static SANE_Status set_window (SnapScan_Scanner *pss)
mode = pss->preview_mode;
bpp = pss->pdev->depths[mode];
DBG (DL_CALL_TRACE, "%s Mode: %d\n", me, mode);
DBG (DL_MINOR_INFO, "%s Mode: %d\n", me, mode);
switch (mode)
{
case MD_COLOUR:
@ -835,7 +828,7 @@ static SANE_Status set_window (SnapScan_Scanner *pss)
}
pc[SET_WINDOW_P_BITS_PER_PIX] = bpp;
DBG (DL_DATA_TRACE, "%s: bits-per-pixel set to %d\n", me, (int) bpp);
DBG (DL_INFO, "%s: bits-per-pixel set to %d\n", me, (int) bpp);
}
/* the RIF bit is the high bit of the padding type */
pc[SET_WINDOW_P_PADDING_TYPE] = 0x00 /*| (pss->negative ? 0x00 : 0x80) */ ;
@ -871,12 +864,11 @@ static SANE_Status set_window (SnapScan_Scanner *pss)
source |= 0x08;
}
pc[SET_WINDOW_P_OPERATION_MODE] = source;
DBG (DL_DATA_TRACE, "%s: operation mode set to %d\n", me, (int) source);
DBG (DL_MINOR_INFO, "%s: operation mode set to %d\n", me, (int) source);
pc[SET_WINDOW_P_RED_UNDER_COLOR] = 0xff; /* defaults */
pc[SET_WINDOW_P_BLUE_UNDER_COLOR] = 0xff;
pc[SET_WINDOW_P_GREEN_UNDER_COLOR] = 0xff;
DBG (DL_CALL_TRACE, "%s\n", me);
status = snapscan_cmd (pss->pdev->bus, pss->fd, pss->cmd,
SET_WINDOW_TOTAL_LEN, NULL, NULL);
CHECK_STATUS (status, me, "snapscan_cmd");
@ -1046,7 +1038,7 @@ static SANE_Status calibrate (SnapScan_Scanner *pss)
SANE_Status status;
int line_length = calibration_line_length(pss);
if (pss->hconfig & HCFG_CAL_ALLOWED) {
if ((pss->hconfig & HCFG_CAL_ALLOWED) && line_length) {
int num_lines = pss->phys_buf_sz / line_length;
if (num_lines > NUM_CALIBRATION_LINES)
{
@ -1177,8 +1169,11 @@ static SANE_Status download_firmware(SnapScan_Scanner * pss)
/*
* $Log$
* Revision 1.14 2002/04/10 21:45:52 oliverschwartz
* Removed illegal character / removed declaration of bqelements
* Revision 1.15 2002/04/23 22:37:52 oliverschwartz
* SnapScan backend version 1.4.11
*
* Revision 1.29 2002/04/10 21:46:48 oliverschwartz
* Removed illegal character
*
* Revision 1.28 2002/04/10 21:01:02 oliverschwartz
* Disable send_diagnostic() for 1236s

Wyświetl plik

@ -4,9 +4,9 @@
Emmanuel Blot, Mikko Tyolajarvi, David Mosberger-Tang, Wolfgang Goeller,
Petter Reinholdtsen, Gary Plewa, Sebastien Sable, Mikael Magnusson,
Oliver Schwartz and Kevin Charter
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@ -21,7 +21,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
@ -34,11 +34,11 @@
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
@ -78,7 +78,7 @@
#define EXPECTED_MAJOR 1
#define MINOR_VERSION 4
#define BUILD 9
#define BUILD 11
#include "snapscan.h"
@ -98,13 +98,13 @@
#include "../include/sane/sanei_config.h"
/* debug levels */
#define DL_INFO 1
#define DL_MINOR_INFO 2
#define DL_INFO 10
#define DL_MINOR_INFO 15
#define DL_MAJOR_ERROR 1
#define DL_MINOR_ERROR 2
#define DL_DATA_TRACE 5
#define DL_CALL_TRACE 10
#define DL_VERBOSE 30
#define DL_DATA_TRACE 50
#define DL_CALL_TRACE 30
#define DL_VERBOSE 20
#define CHECK_STATUS(s,caller,cmd) \
if ((s) != SANE_STATUS_GOOD) { DBG(DL_MAJOR_ERROR, "%s: %s command failed: %s\n", caller, (cmd), sane_strstatus(s)); return s; }
@ -149,66 +149,6 @@ if ((s) != SANE_STATUS_GOOD) { DBG(DL_MAJOR_ERROR, "%s: %s command failed: %s\n"
static SANE_Int def_rgb_lpr = 4;
static SANE_Int def_gs_lpr = 12;
/* ranges */
static const SANE_Range x_range_fb =
{
SANE_FIX (0.0), SANE_FIX (216.0), 0
}; /* mm */
static const SANE_Range y_range_fb =
{
SANE_FIX (0.0), SANE_FIX (297.0), 0
}; /* mm */
static const SANE_Range x_range_tpo_default =
{
SANE_FIX (0.0), SANE_FIX (129.0), 0
}; /* mm */
static const SANE_Range y_range_tpo_default =
{
SANE_FIX (0.0), SANE_FIX (180.0), 0
}; /* mm */
static const SANE_Range x_range_tpo_1236 =
{
SANE_FIX (0.0), SANE_FIX (203.0), 0
}; /* mm */
static const SANE_Range y_range_tpo_1236 =
{
SANE_FIX (0.0), SANE_FIX (254.0), 0
}; /* mm */
static SANE_Range x_range_tpo;
static SANE_Range y_range_tpo;
static const SANE_Range gamma_range =
{
SANE_FIX (0.0), SANE_FIX (4.0), 0
};
static const SANE_Range gamma_vrange =
{
0, 255, 1
};
static const SANE_Range lpr_range =
{
1, 50, 1
};
static const SANE_Range brightness_range =
{
-400 << SANE_FIXED_SCALE_SHIFT,
400 << SANE_FIXED_SCALE_SHIFT,
1 << SANE_FIXED_SCALE_SHIFT
};
static const SANE_Range contrast_range =
{
-100 << SANE_FIXED_SCALE_SHIFT,
400 << SANE_FIXED_SCALE_SHIFT,
1 << SANE_FIXED_SCALE_SHIFT
};
static const SANE_Range positive_percent_range =
{
0 << SANE_FIXED_SCALE_SHIFT,
100 << SANE_FIXED_SCALE_SHIFT,
1 << SANE_FIXED_SCALE_SHIFT
};
/* predefined preview mode name */
static char md_auto[] = "Auto";
@ -812,16 +752,19 @@ SANE_Status sane_init (SANE_Int *version_code,
}
}
}
if (strncasecmp(dev_name, OPTIONS_KW, strlen(OPTIONS_KW)) == 0)
else if (strncasecmp(dev_name, OPTIONS_KW, strlen(OPTIONS_KW)) == 0)
continue; /* ignore options lines */
if (strncmp(dev_name, "usb", 3) == 0) {
else if (strncmp(dev_name, "usb", 3) == 0) {
sanei_usb_attach_matching_devices (dev_name, add_usb_device);
} else if (strncmp(dev_name, "scsi", 4) == 0) {
}
else if (strncmp(dev_name, "scsi", 4) == 0) {
sanei_config_attach_matching_devices (dev_name, add_scsi_device);
} else if (strstr (dev_name, "usb")) {
}
else if (strstr (dev_name, "usb")) {
add_usb_device(dev_name);
} else {
}
else {
add_scsi_device(dev_name);
}
}
@ -1814,8 +1757,11 @@ SANE_Status sane_get_select_fd (SANE_Handle h, SANE_Int * fd)
/*
* $Log$
* Revision 1.20 2002/03/24 16:42:04 oliverschwartz
* Fix segfault in snapscan.c
* Revision 1.21 2002/04/23 22:37:53 oliverschwartz
* SnapScan backend version 1.4.11
*
* Revision 1.42 2002/04/10 21:00:09 oliverschwartz
* Check for NULL pointer before deleting device list
*
* Revision 1.41 2002/03/24 12:12:36 oliverschwartz
* - Moved option functions to snapscan-options.c

Wyświetl plik

@ -92,7 +92,7 @@ typedef enum
PRISA620S, /* Acer ScanPrisa 620 - 600 DPI */
PRISA640, /* Acer ScanPrisa 640 - 600 DPI */
PRISA4300, /* Acer ScanPrisa 3300/4300 - 600 DPI */
PRISA4300_2, /* Acer ScanPrisa 3300/4300 - 600 DPI */
PRISA4300_2, /* Acer ScanPrisa 3300/4300 - 600 DPI, 42 bit*/
PRISA1240, /* Acer ScanPrisa 1240 - 1200 DPI */
PRISA5300 /* Acer ScanPrisa 5300 - 1200 DPI */
} SnapScan_Model;
@ -120,7 +120,7 @@ static struct SnapScan_Driver_desc drivers[] =
{PRISA620S, "Acer620"},
{PRISA640, "Acer640"},
{PRISA4300, "Acer4300"},
{PRISA4300_2, "Acer4300-2"},
{PRISA4300, "Acer4300 (42 bit)"},
{PRISA1240, "Acer1240"},
{PRISA5300, "Acer5300"}
};
@ -202,46 +202,46 @@ static struct SnapScan_USB_Model_desc usb_scanners[] =
typedef enum
{
OPT_COUNT = 0, /* option count */
OPT_COUNT = 0, /* option count */
OPT_MODE_GROUP, /* scan mode group */
OPT_SCANRES, /* scan resolution */
OPT_PREVIEW, /* preview mode toggle */
OPT_MODE, /* scan mode */
OPT_PREVIEW_MODE, /* preview mode */
OPT_SCANRES, /* scan resolution */
OPT_PREVIEW, /* preview mode toggle */
OPT_MODE, /* scan mode */
OPT_PREVIEW_MODE, /* preview mode */
OPT_SOURCE, /* scan source (flatbed / TPO) */
OPT_GEOMETRY_GROUP, /* geometry group */
OPT_TLX, /* top left x */
OPT_TLY, /* top left y */
OPT_BRX, /* bottom right x */
OPT_BRY, /* bottom right y */
OPT_PREDEF_WINDOW, /* predefined window configuration */
OPT_ENHANCEMENT_GROUP, /* enhancement group */
OPT_QUALITY_CAL, /* quality calibration */
OPT_HALFTONE, /* halftone flag */
OPT_HALFTONE_PATTERN, /* halftone matrix */
OPT_CUSTOM_GAMMA, /* use custom gamma tables */
OPT_GAMMA_BIND,
OPT_GAMMA_GS, /* gamma correction (greyscale) */
OPT_GAMMA_R, /* gamma correction (red) */
OPT_GAMMA_G, /* gamma correction (green) */
OPT_GAMMA_B, /* gamma correction (blue) */
OPT_GAMMA_VECTOR_GS, /* gamma correction vector (greyscale) */
OPT_TLX, /* top left x */
OPT_TLY, /* top left y */
OPT_BRX, /* bottom right x */
OPT_BRY, /* bottom right y */
OPT_PREDEF_WINDOW, /* predefined window configuration */
OPT_ENHANCEMENT_GROUP, /* enhancement group */
OPT_QUALITY_CAL, /* quality calibration */
OPT_HALFTONE, /* halftone flag */
OPT_HALFTONE_PATTERN, /* halftone matrix */
OPT_CUSTOM_GAMMA, /* use custom gamma tables */
OPT_GAMMA_BIND, /* use same gamma value for all colors */
OPT_GAMMA_GS, /* gamma correction (greyscale) */
OPT_GAMMA_R, /* gamma correction (red) */
OPT_GAMMA_G, /* gamma correction (green) */
OPT_GAMMA_B, /* gamma correction (blue) */
OPT_GAMMA_VECTOR_GS, /* gamma correction vector (greyscale) */
OPT_GAMMA_VECTOR_R, /* gamma correction vector (red) */
OPT_GAMMA_VECTOR_G, /* gamma correction vector (green) */
OPT_GAMMA_VECTOR_B, /* gamma correction vector (blue) */
OPT_NEGATIVE, /* swap black and white */
OPT_THRESHOLD, /* threshold for line art */
OPT_NEGATIVE, /* swap black and white */
OPT_THRESHOLD, /* threshold for line art */
OPT_BRIGHTNESS, /* brightness */
OPT_CONTRAST, /* contrast */
OPT_CONTRAST, /* contrast */
OPT_ADVANCED_GROUP, /* advanced group */
OPT_RGB_LPR, /* lines per scsi read (RGB) */
OPT_RGB_LPR, /* lines per scsi read (RGB) */
OPT_GS_LPR, /* lines per scsi read (GS) */
OPT_SCSI_CMDS, /* a group */
OPT_INQUIRY, /* inquiry command (button) */
OPT_SELF_TEST, /* self test command (button) */
OPT_REQ_SENSE, /* request sense command (button) */
OPT_REL_UNIT, /* release unit command (button) */
NUM_OPTS /* dummy (gives number of options) */
OPT_SCSI_CMDS, /* a group */
OPT_INQUIRY, /* inquiry command (button) */
OPT_SELF_TEST, /* self test command (button) */
OPT_REQ_SENSE, /* request sense command (button) */
OPT_REL_UNIT, /* release unit command (button) */
NUM_OPTS /* dummy (gives number of options) */
} SnapScan_Options;
typedef union
@ -255,17 +255,18 @@ Option_Value;
typedef enum
{
MD_COLOUR = 0, /* full colour */
MD_COLOUR = 0, /* full colour */
MD_BILEVELCOLOUR, /* 1-bit per channel colour */
MD_GREYSCALE, /* grey scale */
MD_LINEART, /* black and white */
MD_LINEART, /* black and white */
MD_NUM_MODES
} SnapScan_Mode;
typedef enum
{
SRC_FLATBED = 0, /* Flatbed (normal) */
SRC_TPO /* Transparency unit */
SRC_TPO, /* Transparency unit */
SRC_ADF
} SnapScan_Source;
typedef enum
@ -366,8 +367,8 @@ struct snapscan_scanner
/*
* $Log$
* Revision 1.13 2002/03/24 12:32:38 oliverschwartz
* Snapscan backend version 1.4.9
* Revision 1.14 2002/04/23 22:37:54 oliverschwartz
* SnapScan backend version 1.4.11
*
* Revision 1.29 2002/03/24 12:14:34 oliverschwartz
* Add Snapcan_Driver_desc