kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			
		
			
				
	
	
		
			590 wiersze
		
	
	
		
			16 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			590 wiersze
		
	
	
		
			16 KiB
		
	
	
	
		
			C
		
	
	
/* sane - Scanner Access Now Easy.
 | 
						|
 | 
						|
   Copyright (C) 2000 Mustek.
 | 
						|
   Originally maintained by Tom Wang <tom.wang@mustek.com.tw>
 | 
						|
 | 
						|
   Copyright (C) 2001, 2002 by Henning Meier-Geinitz.
 | 
						|
 | 
						|
   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
 | 
						|
   License, or (at your option) any later version.
 | 
						|
 | 
						|
   This program is distributed in the hope that it will be useful, but
 | 
						|
   WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
   General Public License for more details.
 | 
						|
 | 
						|
   You should have received a copy of the GNU General Public License
 | 
						|
   along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
						|
 | 
						|
   As a special exception, the authors of SANE give permission for
 | 
						|
   additional uses of the libraries contained in this release of SANE.
 | 
						|
 | 
						|
   The exception is that, if you link a SANE library with other files
 | 
						|
   to produce an executable, this does not by itself cause the
 | 
						|
   resulting executable to be covered by the GNU General Public
 | 
						|
   License.  Your use of that executable is in no way restricted on
 | 
						|
   account of linking the SANE library code into it.
 | 
						|
 | 
						|
   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.
 | 
						|
 | 
						|
   This file implements a SANE backend for Mustek 1200UB and similar
 | 
						|
   USB flatbed scanners.  */
 | 
						|
 | 
						|
#ifndef mustek_usb_high_h
 | 
						|
#define mustek_usb_high_h
 | 
						|
#include "mustek_usb_mid.h"
 | 
						|
 | 
						|
/* ---------------------------------- macros ------------------------------ */
 | 
						|
 | 
						|
#define I8O8RGB 0
 | 
						|
#define I8O8MONO 1
 | 
						|
#define I4O1MONO 2
 | 
						|
 | 
						|
/* ---------------------------------- types ------------------------------- */
 | 
						|
 | 
						|
struct Mustek_Usb_Device;
 | 
						|
 | 
						|
typedef SANE_Status (*Powerdelay_Function) (ma1017 *, SANE_Byte);
 | 
						|
 | 
						|
typedef SANE_Status
 | 
						|
  (*Getline_Function) (struct Mustek_Usb_Device * dev, SANE_Byte *,
 | 
						|
		       SANE_Bool is_order_invert);
 | 
						|
 | 
						|
typedef SANE_Status (*Backtrack_Function) (struct Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
typedef enum Colormode
 | 
						|
{
 | 
						|
  RGB48 = 0,
 | 
						|
  RGB42 = 1,
 | 
						|
  RGB36 = 2,
 | 
						|
  RGB30 = 3,
 | 
						|
  RGB24 = 4,
 | 
						|
  GRAY16 = 5,
 | 
						|
  GRAY14 = 6,
 | 
						|
  GRAY12 = 7,
 | 
						|
  GRAY10 = 8,
 | 
						|
  GRAY8 = 9,
 | 
						|
  TEXT = 10,
 | 
						|
  RGB48EXT = 11,
 | 
						|
  RGB42EXT = 12,
 | 
						|
  RGB36EXT = 13,
 | 
						|
  RGB30EXT = 14,
 | 
						|
  RGB24EXT = 15,
 | 
						|
  GRAY16EXT = 16,
 | 
						|
  GRAY14EXT = 17,
 | 
						|
  GRAY12EXT = 18,
 | 
						|
  GRAY10EXT = 19,
 | 
						|
  GRAY8EXT = 20,
 | 
						|
  TEXTEXT = 21
 | 
						|
}
 | 
						|
Colormode;
 | 
						|
 | 
						|
typedef enum Signal_State
 | 
						|
{
 | 
						|
  SS_UNKNOWN = 0,
 | 
						|
  SS_BRIGHTER = 1,
 | 
						|
  SS_DARKER = 2,
 | 
						|
  SS_EQUAL = 3
 | 
						|
}
 | 
						|
Signal_State;
 | 
						|
 | 
						|
typedef struct Calibrator
 | 
						|
{
 | 
						|
  /* Calibration Data */
 | 
						|
  SANE_Bool is_prepared;
 | 
						|
  SANE_Word *k_white;
 | 
						|
  SANE_Word *k_dark;
 | 
						|
  /* Working Buffer */
 | 
						|
  double *white_line;
 | 
						|
  double *dark_line;
 | 
						|
  SANE_Int *white_buffer;
 | 
						|
  /* Necessary Parameters */
 | 
						|
  SANE_Word k_white_level;
 | 
						|
  SANE_Word k_dark_level;
 | 
						|
  SANE_Word major_average;
 | 
						|
  SANE_Word minor_average;
 | 
						|
  SANE_Word filter;
 | 
						|
  SANE_Word white_needed;
 | 
						|
  SANE_Word dark_needed;
 | 
						|
  SANE_Word max_width;
 | 
						|
  SANE_Word width;
 | 
						|
  SANE_Word threshold;
 | 
						|
  SANE_Word *gamma_table;
 | 
						|
  SANE_Byte calibrator_type;
 | 
						|
}
 | 
						|
Calibrator;
 | 
						|
 | 
						|
enum Mustek_Usb_Modes
 | 
						|
{
 | 
						|
  MUSTEK_USB_MODE_LINEART = 0,
 | 
						|
  MUSTEK_USB_MODE_GRAY,
 | 
						|
  MUSTEK_USB_MODE_COLOR
 | 
						|
};
 | 
						|
 | 
						|
enum Mustek_Usb_Option
 | 
						|
{
 | 
						|
  OPT_NUM_OPTS = 0,
 | 
						|
 | 
						|
  OPT_MODE_GROUP,
 | 
						|
  OPT_MODE,
 | 
						|
  OPT_RESOLUTION,
 | 
						|
  OPT_PREVIEW,
 | 
						|
 | 
						|
  OPT_GEOMETRY_GROUP,		/* 5 */
 | 
						|
  OPT_TL_X,			/* top-left x */
 | 
						|
  OPT_TL_Y,			/* top-left y */
 | 
						|
  OPT_BR_X,			/* bottom-right x */
 | 
						|
  OPT_BR_Y,			/* bottom-right y */
 | 
						|
 | 
						|
  OPT_ENHANCEMENT_GROUP,	/* 10 */
 | 
						|
  OPT_THRESHOLD,
 | 
						|
  OPT_CUSTOM_GAMMA,
 | 
						|
  OPT_GAMMA_VECTOR,
 | 
						|
  OPT_GAMMA_VECTOR_R,
 | 
						|
  OPT_GAMMA_VECTOR_G,
 | 
						|
  OPT_GAMMA_VECTOR_B,
 | 
						|
 | 
						|
  /* must come last: */
 | 
						|
  NUM_OPTIONS
 | 
						|
};
 | 
						|
 | 
						|
typedef struct Mustek_Usb_Device
 | 
						|
{
 | 
						|
  struct Mustek_Usb_Device *next;
 | 
						|
  SANE_String name;
 | 
						|
  SANE_Device sane;
 | 
						|
  SANE_Range dpi_range;
 | 
						|
  SANE_Range x_range;
 | 
						|
  SANE_Range y_range;
 | 
						|
  /* max width & max height in 300 dpi */
 | 
						|
  SANE_Int max_width;
 | 
						|
  SANE_Int max_height;
 | 
						|
 | 
						|
  ma1017 *chip;			/* registers of the scanner controller chip */
 | 
						|
 | 
						|
  Colormode scan_mode;
 | 
						|
  SANE_Word x_dpi;
 | 
						|
  SANE_Word y_dpi;
 | 
						|
  SANE_Word x;
 | 
						|
  SANE_Word y;
 | 
						|
  SANE_Word width;
 | 
						|
  SANE_Word height;
 | 
						|
  SANE_Word bytes_per_row;
 | 
						|
  SANE_Word bpp;
 | 
						|
 | 
						|
  SANE_Byte *scan_buffer;
 | 
						|
  SANE_Byte *scan_buffer_start;
 | 
						|
  size_t scan_buffer_len;
 | 
						|
 | 
						|
  SANE_Byte *temp_buffer;
 | 
						|
  SANE_Byte *temp_buffer_start;
 | 
						|
  size_t temp_buffer_len;
 | 
						|
 | 
						|
  SANE_Word line_switch;
 | 
						|
  SANE_Word line_offset;
 | 
						|
 | 
						|
  SANE_Bool is_cis_detected;
 | 
						|
 | 
						|
  SANE_Word init_bytes_per_strip;
 | 
						|
  SANE_Word adjust_length_300;
 | 
						|
  SANE_Word adjust_length_600;
 | 
						|
  SANE_Word init_min_expose_time;
 | 
						|
  SANE_Word init_skips_per_row_300;
 | 
						|
  SANE_Word init_skips_per_row_600;
 | 
						|
  SANE_Word init_j_lines;
 | 
						|
  SANE_Word init_k_lines;
 | 
						|
  SANE_Word init_k_filter;
 | 
						|
  SANE_Int init_k_loops;
 | 
						|
  SANE_Word init_pixel_rate_lines;
 | 
						|
  SANE_Word init_pixel_rate_filts;
 | 
						|
  SANE_Word init_powerdelay_lines;
 | 
						|
  SANE_Word init_home_lines;
 | 
						|
  SANE_Word init_dark_lines;
 | 
						|
  SANE_Word init_k_level;
 | 
						|
  SANE_Byte init_max_power_delay;
 | 
						|
  SANE_Byte init_min_power_delay;
 | 
						|
  SANE_Byte init_adjust_way;
 | 
						|
  double init_green_black_factor;
 | 
						|
  double init_blue_black_factor;
 | 
						|
  double init_red_black_factor;
 | 
						|
  double init_gray_black_factor;
 | 
						|
  double init_green_factor;
 | 
						|
  double init_blue_factor;
 | 
						|
  double init_red_factor;
 | 
						|
  double init_gray_factor;
 | 
						|
 | 
						|
  SANE_Int init_red_rgb_600_pga;
 | 
						|
  SANE_Int init_green_rgb_600_pga;
 | 
						|
  SANE_Int init_blue_rgb_600_pga;
 | 
						|
  SANE_Int init_mono_600_pga;
 | 
						|
  SANE_Int init_red_rgb_300_pga;
 | 
						|
  SANE_Int init_green_rgb_300_pga;
 | 
						|
  SANE_Int init_blue_rgb_300_pga;
 | 
						|
  SANE_Int init_mono_300_pga;
 | 
						|
  SANE_Word init_expose_time;
 | 
						|
  SANE_Byte init_red_rgb_600_power_delay;
 | 
						|
  SANE_Byte init_green_rgb_600_power_delay;
 | 
						|
  SANE_Byte init_blue_rgb_600_power_delay;
 | 
						|
  SANE_Byte init_red_mono_600_power_delay;
 | 
						|
  SANE_Byte init_green_mono_600_power_delay;
 | 
						|
  SANE_Byte init_blue_mono_600_power_delay;
 | 
						|
  SANE_Byte init_red_rgb_300_power_delay;
 | 
						|
  SANE_Byte init_green_rgb_300_power_delay;
 | 
						|
  SANE_Byte init_blue_rgb_300_power_delay;
 | 
						|
  SANE_Byte init_red_mono_300_power_delay;
 | 
						|
  SANE_Byte init_green_mono_300_power_delay;
 | 
						|
  SANE_Byte init_blue_mono_300_power_delay;
 | 
						|
  SANE_Byte init_threshold;
 | 
						|
 | 
						|
  SANE_Byte init_top_ref;
 | 
						|
  SANE_Byte init_front_end;
 | 
						|
  SANE_Byte init_red_offset;
 | 
						|
  SANE_Byte init_green_offset;
 | 
						|
  SANE_Byte init_blue_offset;
 | 
						|
 | 
						|
  SANE_Int init_rgb_24_back_track;
 | 
						|
  SANE_Int init_mono_8_back_track;
 | 
						|
 | 
						|
  SANE_Bool is_open;
 | 
						|
  SANE_Bool is_prepared;
 | 
						|
  SANE_Word expose_time;
 | 
						|
  SANE_Word dummy;
 | 
						|
  SANE_Word bytes_per_strip;
 | 
						|
  SANE_Byte *image_buffer;
 | 
						|
  SANE_Byte *red;
 | 
						|
  SANE_Byte *green;
 | 
						|
  SANE_Byte *blue;
 | 
						|
  Getline_Function get_line;
 | 
						|
  Backtrack_Function backtrack;
 | 
						|
  SANE_Bool is_adjusted_rgb_600_power_delay;
 | 
						|
  SANE_Bool is_adjusted_mono_600_power_delay;
 | 
						|
  SANE_Bool is_adjusted_rgb_300_power_delay;
 | 
						|
  SANE_Bool is_adjusted_mono_300_power_delay;
 | 
						|
  SANE_Bool is_evaluate_pixel_rate;
 | 
						|
  SANE_Int red_rgb_600_pga;
 | 
						|
  SANE_Int green_rgb_600_pga;
 | 
						|
  SANE_Int blue_rgb_600_pga;
 | 
						|
  SANE_Int mono_600_pga;
 | 
						|
  SANE_Byte red_rgb_600_power_delay;
 | 
						|
  SANE_Byte green_rgb_600_power_delay;
 | 
						|
  SANE_Byte blue_rgb_600_power_delay;
 | 
						|
  SANE_Byte red_mono_600_power_delay;
 | 
						|
  SANE_Byte green_mono_600_power_delay;
 | 
						|
  SANE_Byte blue_mono_600_power_delay;
 | 
						|
  SANE_Int red_rgb_300_pga;
 | 
						|
  SANE_Int green_rgb_300_pga;
 | 
						|
  SANE_Int blue_rgb_300_pga;
 | 
						|
  SANE_Int mono_300_pga;
 | 
						|
  SANE_Byte red_rgb_300_power_delay;
 | 
						|
  SANE_Byte green_rgb_300_power_delay;
 | 
						|
  SANE_Byte blue_rgb_300_power_delay;
 | 
						|
  SANE_Byte red_mono_300_power_delay;
 | 
						|
  SANE_Byte green_mono_300_power_delay;
 | 
						|
  SANE_Byte blue_mono_300_power_delay;
 | 
						|
  SANE_Word pixel_rate;
 | 
						|
  SANE_Byte threshold;
 | 
						|
  SANE_Word *gamma_table;
 | 
						|
  SANE_Word skips_per_row;
 | 
						|
 | 
						|
  /* CCD */
 | 
						|
  SANE_Bool is_adjusted_mono_600_offset;
 | 
						|
  SANE_Bool is_adjusted_mono_600_exposure;
 | 
						|
  SANE_Word mono_600_exposure;
 | 
						|
 | 
						|
  Calibrator *red_calibrator;
 | 
						|
  Calibrator *green_calibrator;
 | 
						|
  Calibrator *blue_calibrator;
 | 
						|
  Calibrator *mono_calibrator;
 | 
						|
 | 
						|
  SANE_Char device_name[256];
 | 
						|
 | 
						|
  SANE_Bool is_sensor_detected;
 | 
						|
}
 | 
						|
Mustek_Usb_Device;
 | 
						|
 | 
						|
typedef struct Mustek_Usb_Scanner
 | 
						|
{
 | 
						|
  /* all the state needed to define a scan request: */
 | 
						|
  struct Mustek_Usb_Scanner *next;
 | 
						|
 | 
						|
  SANE_Option_Descriptor opt[NUM_OPTIONS];
 | 
						|
  Option_Value val[NUM_OPTIONS];
 | 
						|
 | 
						|
  SANE_Int channels;
 | 
						|
 | 
						|
  /* scan window in inches: top left x+y and width+height */
 | 
						|
  double tl_x;
 | 
						|
  double tl_y;
 | 
						|
  double width;
 | 
						|
  double height;
 | 
						|
  /* scan window in dots (at current resolution):
 | 
						|
     top left x+y and width+height */
 | 
						|
  SANE_Int tl_x_dots;
 | 
						|
  SANE_Int tl_y_dots;
 | 
						|
  SANE_Int width_dots;
 | 
						|
  SANE_Int height_dots;
 | 
						|
 | 
						|
  SANE_Word bpp;
 | 
						|
 | 
						|
  SANE_Bool scanning;
 | 
						|
  SANE_Parameters params;
 | 
						|
  SANE_Word read_rows;
 | 
						|
  SANE_Word red_gamma_table[256];
 | 
						|
  SANE_Word green_gamma_table[256];
 | 
						|
  SANE_Word blue_gamma_table[256];
 | 
						|
  SANE_Word gray_gamma_table[256];
 | 
						|
  SANE_Word linear_gamma_table[256];
 | 
						|
  SANE_Word *red_table;
 | 
						|
  SANE_Word *green_table;
 | 
						|
  SANE_Word *blue_table;
 | 
						|
  SANE_Word *gray_table;
 | 
						|
  SANE_Word total_bytes;
 | 
						|
  SANE_Word total_lines;
 | 
						|
  /* scanner dependent/low-level state: */
 | 
						|
  Mustek_Usb_Device *hw;
 | 
						|
}
 | 
						|
Mustek_Usb_Scanner;
 | 
						|
 | 
						|
 | 
						|
/* ------------------- calibration function declarations ------------------ */
 | 
						|
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_init (Calibrator * cal, SANE_Byte type, SANE_Word target_white,
 | 
						|
		   SANE_Word target_dark);
 | 
						|
 | 
						|
static SANE_Status usb_high_cal_exit (Calibrator * cal);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_embed_gamma (Calibrator * cal, SANE_Word * gamma_table);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_prepare (Calibrator * cal, SANE_Word max_width);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_setup (Calibrator * cal, SANE_Word major_average,
 | 
						|
		    SANE_Word minor_average, SANE_Word filter,
 | 
						|
		    SANE_Word width, SANE_Word * white_needed,
 | 
						|
		    SANE_Word * dark_needed);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_evaluate_white (Calibrator * cal, double factor);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_evaluate_dark (Calibrator * cal, double factor);
 | 
						|
 | 
						|
static SANE_Status usb_high_cal_evaluate_calibrator (Calibrator * cal);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_fill_in_white (Calibrator * cal, SANE_Word major,
 | 
						|
			    SANE_Word minor, void *white_pattern);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_fill_in_dark (Calibrator * cal, SANE_Word major,
 | 
						|
			   SANE_Word minor, void *dark_pattern);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_calibrate (Calibrator * cal, void *src, void *target);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_i8o8_fill_in_white (Calibrator * cal, SANE_Word major,
 | 
						|
				 SANE_Word minor, void *white_pattern);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_i8o8_fill_in_dark (Calibrator * cal, SANE_Word major,
 | 
						|
				SANE_Word minor, void *dark_pattern);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_i8o8_mono_calibrate (Calibrator * cal, void *src, void *target);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_i8o8_rgb_calibrate (Calibrator * cal, void *src, void *target);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_i4o1_fill_in_white (Calibrator * cal, SANE_Word major,
 | 
						|
				 SANE_Word minor, void *white_pattern);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_i4o1_fill_in_dark (Calibrator * cal, SANE_Word major,
 | 
						|
				SANE_Word minor, void *dark_pattern);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_cal_i4o1_calibrate (Calibrator * cal, void *src, void *target);
 | 
						|
 | 
						|
/* -------------------- scanning function declarations -------------------- */
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_init (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_exit (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_prepare (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_clearup (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_turn_power (Mustek_Usb_Device * dev, SANE_Bool is_on);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_back_home (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_set_threshold (Mustek_Usb_Device * dev, SANE_Byte threshold);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_embed_gamma (Mustek_Usb_Device * dev, SANE_Word * gamma_table);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_reset (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_suggest_parameters (Mustek_Usb_Device * dev, SANE_Word dpi,
 | 
						|
				  SANE_Word x, SANE_Word y, SANE_Word width,
 | 
						|
				  SANE_Word height, Colormode color_mode);
 | 
						|
static SANE_Status usb_high_scan_detect_sensor (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_setup_scan (Mustek_Usb_Device * dev, Colormode color_mode,
 | 
						|
			  SANE_Word x_dpi, SANE_Word y_dpi,
 | 
						|
			  SANE_Bool is_invert, SANE_Word x, SANE_Word y,
 | 
						|
			  SANE_Word width);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_get_rows (Mustek_Usb_Device * dev, SANE_Byte * block,
 | 
						|
			SANE_Word rows, SANE_Bool is_order_invert);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_stop_scan (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_step_forward (Mustek_Usb_Device * dev, SANE_Int step_count);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_safe_forward (Mustek_Usb_Device * dev, SANE_Int step_count);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_init_asic (Mustek_Usb_Device * dev, Sensor_Type sensor);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_wait_carriage_home (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_hardware_calibration (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_line_calibration (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_prepare_scan (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Word
 | 
						|
usb_high_scan_calculate_max_rgb_600_expose (Mustek_Usb_Device * dev,
 | 
						|
					    SANE_Byte * ideal_red_pd,
 | 
						|
					    SANE_Byte * ideal_green_pd,
 | 
						|
					    SANE_Byte * ideal_blue_pd);
 | 
						|
 | 
						|
static SANE_Word
 | 
						|
usb_high_scan_calculate_max_mono_600_expose (Mustek_Usb_Device * dev,
 | 
						|
					     SANE_Byte * ideal_red_pd,
 | 
						|
					     SANE_Byte * ideal_green_pd,
 | 
						|
					     SANE_Byte * ideal_blue_pd);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_prepare_rgb_signal_600_dpi (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_prepare_mono_signal_600_dpi (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Word
 | 
						|
usb_high_scan_calculate_max_rgb_300_expose (Mustek_Usb_Device * dev,
 | 
						|
					    SANE_Byte * ideal_red_pd,
 | 
						|
					    SANE_Byte * ideal_green_pd,
 | 
						|
					    SANE_Byte * ideal_blue_pd);
 | 
						|
 | 
						|
static SANE_Word
 | 
						|
usb_high_scan_calculate_max_mono_300_expose (Mustek_Usb_Device * dev,
 | 
						|
					     SANE_Byte * ideal_red_pd,
 | 
						|
					     SANE_Byte * ideal_green_pd,
 | 
						|
					     SANE_Byte * ideal_blue_pd);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_prepare_rgb_signal_300_dpi (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_prepare_mono_signal_300_dpi (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_evaluate_max_level (Mustek_Usb_Device * dev,
 | 
						|
				  SANE_Word sample_lines,
 | 
						|
				  SANE_Int sample_length,
 | 
						|
				  SANE_Byte * ret_max_level);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_bssc_power_delay (Mustek_Usb_Device * dev,
 | 
						|
				Powerdelay_Function set_power_delay,
 | 
						|
				Signal_State * signal_state,
 | 
						|
				SANE_Byte * target, SANE_Byte max,
 | 
						|
				SANE_Byte min, SANE_Byte threshold,
 | 
						|
				SANE_Int length);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_adjust_rgb_600_power_delay (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_adjust_mono_600_power_delay (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_adjust_mono_600_exposure (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
#if 0
 | 
						|
/* CCD */
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_adjust_mono_600_offset (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_adjust_mono_600_pga (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_adjust_mono_600_skips_per_row (Mustek_Usb_Device * dev);
 | 
						|
#endif
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_adjust_rgb_300_power_delay (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_adjust_mono_300_power_delay (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_evaluate_pixel_rate (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_calibration_rgb_24 (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_calibration_mono_8 (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_prepare_rgb_24 (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_prepare_mono_8 (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_get_rgb_24_bit_line (Mustek_Usb_Device * dev,
 | 
						|
				   SANE_Byte * line,
 | 
						|
				   SANE_Bool is_order_invert);
 | 
						|
 | 
						|
static SANE_Status
 | 
						|
usb_high_scan_get_mono_8_bit_line (Mustek_Usb_Device * dev,
 | 
						|
				   SANE_Byte * line,
 | 
						|
				   SANE_Bool is_order_invert);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_backtrack_rgb_24 (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
static SANE_Status usb_high_scan_backtrack_mono_8 (Mustek_Usb_Device * dev);
 | 
						|
 | 
						|
#endif /* mustek_usb_high_h */
 |