summaryrefslogtreecommitdiff
path: root/backend/avision.h
diff options
context:
space:
mode:
Diffstat (limited to 'backend/avision.h')
-rw-r--r--backend/avision.h64
1 files changed, 60 insertions, 4 deletions
diff --git a/backend/avision.h b/backend/avision.h
index 58552c0..9017bf2 100644
--- a/backend/avision.h
+++ b/backend/avision.h
@@ -81,6 +81,12 @@ typedef struct Avision_Connection {
} Avision_Connection;
+/* structure for ADF offsets in mm */
+typedef struct mm_offset {
+ double top;
+ double bottom;
+} mm_offset;
+
typedef struct Avision_HWEntry {
const char* scsi_mfg;
const char* scsi_model;
@@ -184,9 +190,6 @@ typedef struct Avision_HWEntry {
/* does the scanner contain a Cancel button? */
#define AV_CANCEL_BUTTON ((uint64_t)1<<28)
- /* is the rear image offset? */
- #define AV_REAR_OFFSET ((uint64_t)1<<29)
-
/* some devices do not need a START_SCAN, even hang with it */
#define AV_NO_START_SCAN ((uint64_t)1<<30)
@@ -204,9 +207,46 @@ typedef struct Avision_HWEntry {
/* For scanners which need to have their firmware read to properly function. */
#define AV_FIRMWARE ((uint64_t)1<<35)
+ /* at least Kodak i1120 claims no calibration needed but windows driver does it anyways */
+ #define AV_FORCE_CALIB ((uint64_t)1<<36)
+
+ /* at least Kodak i1120 does not have an explicit "quality-scan" mode */
+ #define AV_NO_QSCAN_MODE ((uint64_t)1<<37)
+
+ /* at least Kodak i1120 optical DPI is used for overscan calculation */
+ #define AV_OVERSCAN_OPTDPI ((uint64_t)1<<38)
+
+ /* some scanners support fast feed-out of the sheet when cancelling a running scan */
+ #define AV_FASTFEED_ON_CANCEL ((uint64_t)1<<39)
+
+ /* at least Kodak i1120 does not have an explicit "quality-calibration" mode */
+ #define AV_NO_QCALIB_MODE ((uint64_t)1<<40)
+
+ /* Kodak i1120 needs gamma = 1.0 to give decent results */
+ #define AV_GAMMA_10 ((uint64_t)1<<41)
+
+ /* Kodak i1120 has a different gamma table format (like a uint16/double array) */
+ #define AV_GAMMA_UINT16 ((uint64_t)1<<42)
+
+ /* Kodak i1120 has single-sheet and multi-sheet scan modes. This option sets
+ bitset3[7] which enables multi-sheet scan by default so there is no pause
+ of 1s between two sheets in ADF scan mode. This also fixes some offsets
+ when scanning multiple sheets. */
+ #define AV_MULTI_SHEET_SCAN ((uint64_t)1<<43)
+
/* maybe more ...*/
uint64_t feature_type;
+ /* ADF offsets in mm */
+ struct {
+ float first; /* offset difference first sheet */
+ mm_offset front; /* front-only */
+ struct {
+ mm_offset front;
+ mm_offset rear;
+ } duplex;
+ } offset;
+
} Avision_HWEntry;
typedef enum {
@@ -301,6 +341,13 @@ enum Avision_Option
NUM_OPTIONS /* must come last */
};
+/* structure for ADF offsets in pixels of HW res */
+typedef struct hwpx_offset {
+ int top;
+ int bottom;
+} hwpx_offset;
+
+
typedef struct Avision_Dimensions
{
/* in dpi */
@@ -315,7 +362,11 @@ typedef struct Avision_Dimensions
/* in pixels */
int line_difference;
- int rear_offset; /* in pixels of HW res */
+
+ struct {
+ hwpx_offset front;
+ hwpx_offset rear;
+ } offset;
/* interlaced duplex scan */
SANE_Bool interlaced_duplex;
@@ -407,6 +458,8 @@ typedef struct Avision_Device
int inquiry_bits_per_channel;
int inquiry_no_gray_modes;
+ SANE_Bool adf_offset_compensation;
+
int scsi_buffer_size; /* nice to have SCSI buffer size */
int read_stripe_size; /* stripes to be read at-a-time */
@@ -451,6 +504,7 @@ typedef struct Avision_Scanner
/* Internal data for duplex scans */
char duplex_rear_fname [PATH_MAX];
+ char duplex_offtmp_fname [PATH_MAX];
SANE_Bool duplex_rear_valid;
color_mode c_mode;
@@ -670,6 +724,8 @@ typedef struct command_set_window_window
uint8_t line_width_msb;
uint8_t line_count_msb;
uint8_t background_lines;
+
+ uint8_t single_sheet_scan; /* from Kodak SVT tool */
} normal;
struct {