diff options
Diffstat (limited to 'backend/canon_dr.h')
-rw-r--r-- | backend/canon_dr.h | 81 |
1 files changed, 80 insertions, 1 deletions
diff --git a/backend/canon_dr.h b/backend/canon_dr.h index 7afbb90..e84b5b7 100644 --- a/backend/canon_dr.h +++ b/backend/canon_dr.h @@ -51,6 +51,22 @@ enum scanner_Option OPT_SIDE, OPT_HW_CROP, + /*imprinter option group*/ + OPT_IMPRINT_GROUP, + OPT_PRE_IMPRINT_SPECSTRING, + OPT_PRE_IMPRINT_H_OFFSET, + OPT_PRE_IMPRINT_V_OFFSET, + OPT_PRE_IMPRINT_FONT_SIZE, + OPT_PRE_IMPRINT_FONT_ROT, + OPT_PRE_IMPRINT_SPACING, + OPT_POST_IMPRINT_SPECSTRING, + OPT_POST_IMPRINT_H_OFFSET, + OPT_POST_IMPRINT_V_OFFSET, + OPT_POST_IMPRINT_FONT_SIZE, + OPT_POST_IMPRINT_FONT_ROT, + OPT_POST_IMPRINT_SPACING, + OPT_POST_IMPRINT_ADDON_MODE, + /*sensor group*/ OPT_SENSOR_GROUP, OPT_START, @@ -60,6 +76,8 @@ enum scanner_Option OPT_COUNTONLY, OPT_BYPASSMODE, OPT_COUNTER, + OPT_ROLLERCOUNTER, + OPT_TOTALCOUNTER, OPT_ADF_LOADED, OPT_CARD_LOADED, @@ -106,6 +124,32 @@ struct img_params }; +struct imprint_params +{ + /* ------------------------------------------------------------------------------ */ + /* allowed values for post imprinter (in mm units): */ + /* 21, 35, 47, 59, 72, 99, 114, 143, 155, 167, 196, 211, 239, 251, 263, 275, 289 */ + /* allowed values for pre imprinter (in mm units): */ + /* 14, 28, 41, 53, 65, 106 */ + int h_offset; + /* --------------------------------------- */ + /* allowed values: 0 to 500 (in mm units) */ + int v_offset; + + int font_size; + int font_rot; + int spacing; + +#define IMPRINT_SPECSTRING_LEN 64 + /* ---------------------------------- */ + /* special tokens: */ + /* \TIME time in HH:MM:SS */ + /* \DMY date in DD/MM/YYYY */ + /* \YMD date in YYYY/MM/DD */ + /* [[0-9]+] scan page count */ + char specstring[IMPRINT_SPECSTRING_LEN]; +}; + struct scanner { /* --------------------------------------------------------------------- */ @@ -204,9 +248,12 @@ struct scanner int has_ssm2; /* newer scanners user this similar command */ int has_ssm_pay_head_len; /* newer scanners put the length twice in ssm */ int has_hwcrop; + int has_pre_imprinter; + int has_post_imprinter; int can_read_sensors; int can_read_panel; int can_write_panel; + int can_read_lifecycle_counters; int rgb_format; /* meaning unknown */ int padding; /* meaning unknown */ @@ -317,13 +364,34 @@ struct scanner unsigned char lut[256]; /* --------------------------------------------------------------------- */ - /* values used by the software enhancement code (deskew, crop, etc) */ + /* values used by the software enhancement code (deskew, crop, etc) */ SANE_Status deskew_stat; int deskew_vals[2]; double deskew_slope; int crop_vals[4]; + /* imprinter params */ + struct imprint_params pre_imprint; + struct imprint_params post_imprint; + enum { + /*Black-on-White*/ + ADDON_BoW = 0, + /*White-on-Black*/ + ADDON_WoB, + /*Black-on-Image*/ + ADDON_BoI, + ADDON_DISABLED + } post_imprint_addon_mode; + + /* imprinter param constraints */ + SANE_Int pre_imprinter_h_offset_list[7]; + SANE_Int post_imprinter_h_offset_list[18]; + SANE_Range imprinter_v_offset_range; + SANE_String_Const imprint_font_size_list[3]; + SANE_Int imprinter_font_angle_list[5]; + SANE_String_Const imprint_addon_mode_list[5]; + /* this is defined in sane spec as a struct containing: SANE_Frame format; SANE_Bool last_frame; @@ -379,6 +447,8 @@ struct scanner int panel_counter; int sensor_adf_loaded; int sensor_card_loaded; + int roller_counter; + int total_counter; /* values which are used to track the frontend's access to sensors */ char panel_read[OPT_COUNTER - OPT_START + 1]; @@ -541,7 +611,9 @@ static SANE_Status sense_handler (int scsi_fd, u_char * result, void *arg); static SANE_Status init_inquire (struct scanner *s); static SANE_Status init_vpd (struct scanner *s); static SANE_Status init_model (struct scanner *s); +static SANE_Status init_imprinters (struct scanner *s); static SANE_Status init_panel (struct scanner *s); +static SANE_Status init_counters (struct scanner *s); static SANE_Status init_user (struct scanner *s); static SANE_Status init_options (struct scanner *s); @@ -589,6 +661,7 @@ static SANE_Status update_params (struct scanner *s, int calib); static SANE_Status update_i_params (struct scanner *s); static SANE_Status clean_params (struct scanner *s); +static SANE_Status read_counters(struct scanner *s); static SANE_Status read_sensors(struct scanner *s, SANE_Int option); static SANE_Status read_panel(struct scanner *s, SANE_Int option); static SANE_Status send_panel(struct scanner *s); @@ -632,6 +705,12 @@ static SANE_Status calibrate_fine_dest_hw(struct scanner *s); static SANE_Status write_AFE (struct scanner *s); static SANE_Status calibration_scan (struct scanner *s, int); +static SANE_Status send_imprint_positioning(struct scanner* s, int is_postimprint, int enabled); +static SANE_Status send_imprint_specstring(struct scanner* s, int is_postimprint); +static SANE_Status send_imprint_date_and_time(struct scanner* s); +static SANE_Status load_imprinting_settings(struct scanner *s); +static SANE_Status detect_imprinter(struct scanner *s, SANE_Int option); + static void hexdump (int level, char *comment, unsigned char *p, int l); static void default_globals (void); |