kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			
		
			
				
	
	
		
			264 wiersze
		
	
	
		
			7.0 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			264 wiersze
		
	
	
		
			7.0 KiB
		
	
	
	
		
			C
		
	
	
/* sane - Scanner Access Now Easy.
 | 
						|
 | 
						|
   Copyright (C) 2005 Mustek.
 | 
						|
   Originally maintained by Mustek
 | 
						|
   Author:Jack Roy 2005.5.24
 | 
						|
 | 
						|
   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, 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.
 | 
						|
 | 
						|
   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 the Mustek BearPaw 2448 TA Pro 
 | 
						|
   and similar USB2 scanners. */
 | 
						|
 | 
						|
#ifndef MUSTEK_USB2_HIGH_H
 | 
						|
#define MUSTEK_USB2_HIGH_H
 | 
						|
 | 
						|
/* const use in structures*/
 | 
						|
 | 
						|
/*scan mode*/
 | 
						|
typedef unsigned short SCANMODE, *LPSCANMODE;
 | 
						|
#define SM_TEXT		0x00
 | 
						|
#define SM_GRAY		0x01
 | 
						|
#define SM_RGB24	0x02
 | 
						|
#define SM_GRAY10	0x03
 | 
						|
#define SM_RGB30	0x04
 | 
						|
#define SM_GRAY12	0x05
 | 
						|
#define SM_RGB36	0x06
 | 
						|
#define SM_GRAY14	0x07
 | 
						|
#define SM_RGB42	0x08
 | 
						|
#define SM_GRAY16	0x09
 | 
						|
#define SM_RGB48	0x0a
 | 
						|
 | 
						|
/*pixel flavor*/
 | 
						|
typedef SANE_Byte PIXELFLAVOR, *LPPIXELFLAVOR;
 | 
						|
#define PF_BlackIs0 0x00
 | 
						|
#define PF_WhiteIs0 0x01
 | 
						|
 | 
						|
/*scan source*/
 | 
						|
typedef SANE_Byte SCANSOURCE, *LPSCANSOURCE;
 | 
						|
#define SS_Reflective	0x00
 | 
						|
#define SS_Positive		0x01
 | 
						|
#define SS_Negative		0x02
 | 
						|
#define SS_ADF			0x03
 | 
						|
 | 
						|
/*RGB order*/
 | 
						|
typedef unsigned short RGBORDER, *LPRGBORDER;
 | 
						|
#define RO_RGB 0x00
 | 
						|
#define RO_BGR 0x01
 | 
						|
 | 
						|
/* structures use in parameters of export function*/
 | 
						|
 | 
						|
typedef struct tagGAMMAINFO
 | 
						|
{
 | 
						|
  SCANMODE smScanMode;
 | 
						|
  unsigned short wInputGammaBits;
 | 
						|
  unsigned short wOutputGammaBits;
 | 
						|
} GAMMAINFO, *LPGAMMAINFO;
 | 
						|
 | 
						|
typedef struct tagGETPARAMETERS
 | 
						|
{
 | 
						|
  unsigned short wSourceXDPI;
 | 
						|
  unsigned short wSourceYDPI;
 | 
						|
  unsigned int dwLineByteWidth;
 | 
						|
  unsigned int dwLength;
 | 
						|
} GETPARAMETERS, *LPGETPARAMETERS;
 | 
						|
 | 
						|
typedef struct tagFRAME
 | 
						|
{
 | 
						|
  unsigned short x1;
 | 
						|
  unsigned short y1;
 | 
						|
  unsigned short x2;
 | 
						|
  unsigned short y2;
 | 
						|
} FRAME, *LPFRAME;
 | 
						|
 | 
						|
typedef struct tagSETPARAMETERS
 | 
						|
{
 | 
						|
  FRAME fmArea;
 | 
						|
  unsigned short wTargetDPI;
 | 
						|
  SCANMODE smScanMode;
 | 
						|
  unsigned short wLinearThreshold;	/*threshold for Line art mode */
 | 
						|
  PIXELFLAVOR pfPixelFlavor;
 | 
						|
  SCANSOURCE ssScanSource;
 | 
						|
  unsigned short * pGammaTable;
 | 
						|
} SETPARAMETERS, *LPSETPARAMETERS;
 | 
						|
 | 
						|
typedef struct tagIMAGEROWS
 | 
						|
{
 | 
						|
  RGBORDER roRgbOrder;
 | 
						|
  unsigned short wWantedLineNum;
 | 
						|
  unsigned short wXferedLineNum;
 | 
						|
  SANE_Byte * pBuffer;
 | 
						|
} IMAGEROWS, *LPIMAGEROWS;
 | 
						|
 | 
						|
 | 
						|
/*Macro define*/
 | 
						|
 | 
						|
#define R_GAIN							0
 | 
						|
#define G_GAIN                          0
 | 
						|
#define B_GAIN                          0
 | 
						|
#define R_OFFSET                        0
 | 
						|
#define G_OFFSET                        0
 | 
						|
#define B_OFFSET                        0
 | 
						|
#define R_DIRECTION                     0
 | 
						|
#define G_DIRECTION                     0
 | 
						|
#define B_DIRECTION                     0
 | 
						|
 | 
						|
/* use for adjust AD's offset*/
 | 
						|
 | 
						|
/* for Reflective*/
 | 
						|
#define REFL_DARK_MAX_LEVEL             20
 | 
						|
#define REFL_DARK_MIN_LEVEL             10
 | 
						|
#define REFL_WHITE_MAX_LEVEL			220
 | 
						|
#define REFL_WHITE_MIN_LEVEL			210
 | 
						|
#define REFL_MAX_LEVEL_RANGE            210
 | 
						|
#define REFL_MIN_LEVEL_RANGE            190
 | 
						|
 | 
						|
/*for Transparent*/
 | 
						|
#define TRAN_DARK_MAX_LEVEL             20
 | 
						|
#define TRAN_DARK_MIN_LEVEL             10
 | 
						|
#define TRAN_WHITE_MAX_LEVEL            220
 | 
						|
#define TRAN_WHITE_MIN_LEVEL            210
 | 
						|
#define TRAN_MAX_LEVEL_RANGE            210
 | 
						|
#define TRAN_MIN_LEVEL_RANGE            190
 | 
						|
 | 
						|
 | 
						|
/* in 600 dpi*/
 | 
						|
#define FIND_LEFT_TOP_WIDTH_IN_DIP          512
 | 
						|
#define FIND_LEFT_TOP_HEIGHT_IN_DIP         180
 | 
						|
#define FIND_LEFT_TOP_CALIBRATE_RESOLUTION  600
 | 
						|
 | 
						|
#define TA_FIND_LEFT_TOP_WIDTH_IN_DIP       2668
 | 
						|
#define TA_FIND_LEFT_TOP_HEIGHT_IN_DIP      300
 | 
						|
 | 
						|
#define TA_MOTOR_BACK_STEP_AFTER_FIND_BOUNDARY             150
 | 
						|
#define TA_MOTOR_FORWARD_STEP_AFTER_READ_WHITE_DATA        1100
 | 
						|
 | 
						|
/*must be 8x*/
 | 
						|
#define LINE_CALIBRATION__16BITS_HEIGHT				40
 | 
						|
 | 
						|
/* the length from block bar to start Calibration position*/
 | 
						|
#define BEFORE_SCANNING_MOTOR_FORWARD_PIXEL 40
 | 
						|
 | 
						|
#define PRE_MOVE_MOTOR_LENGTH_IN_DPI    1450
 | 
						|
 | 
						|
/* if the motor is 1/8 step, setup MOTOR_STEP_MULTI as 8
 | 
						|
 if the motor is 1/4 step, setup MOTOR_STEP_MULTI as 4
 | 
						|
 if the motor is full step, setup MOTOR_STEP_MULTI as 1
 | 
						|
#define MOTOR_EIGHTH_STEP*/
 | 
						|
#ifdef MOTOR_EIGHTH_STEP
 | 
						|
#define MOTOR_STEP_MULTI                8
 | 
						|
#define GPIO_95_Config                  0x68
 | 
						|
#else
 | 
						|
#define MOTOR_STEP_MULTI                4
 | 
						|
 | 
						|
#define GPIO_95_Config                  0x60
 | 
						|
#endif
 | 
						|
 | 
						|
#define TRAN_START_POS					4550
 | 
						|
 | 
						|
/* in 300dpi*/
 | 
						|
#define MAX_SCANNING_WIDTH               2550	/*just for A4 */
 | 
						|
#define MAX_SCANNING_HEIGHT              3540	/*just for A4 */
 | 
						|
 | 
						|
#define INIFILENAME                         "./msam.ini"
 | 
						|
 | 
						|
/*enable gamma*/
 | 
						|
#define ENABLE_GAMMA
 | 
						|
 | 
						|
/*save debug image*/
 | 
						|
/*#define DEBUG_SAVE_IMAGE*/
 | 
						|
 | 
						|
/*type define*/
 | 
						|
typedef unsigned char SCANTYPE;
 | 
						|
#define ST_Reflective	0x00
 | 
						|
#define ST_Transparent	0x01
 | 
						|
 | 
						|
typedef enum tagCOLORMODE
 | 
						|
{
 | 
						|
  CM_RGB48 = 0,
 | 
						|
  CM_RGB42 = 1,
 | 
						|
  CM_RGB36 = 2,
 | 
						|
  CM_RGB30 = 3,
 | 
						|
  CM_RGB24 = 4,
 | 
						|
  CM_GRAY16 = 5,
 | 
						|
  CM_GRAY14 = 6,
 | 
						|
  CM_GRAY12 = 7,
 | 
						|
  CM_GRAY10 = 8,
 | 
						|
  CM_GRAY8 = 9,
 | 
						|
  CM_TEXT = 10,
 | 
						|
  CM_RGB48ext = 11,
 | 
						|
  CM_RGB42ext = 12,
 | 
						|
  CM_RGB36ext = 13,
 | 
						|
  CM_RGB30ext = 14,
 | 
						|
  CM_RGB24ext = 15,
 | 
						|
  CM_GRAY16ext = 16,
 | 
						|
  CM_GRAY14ext = 17,
 | 
						|
  CM_GRAY12ext = 18,
 | 
						|
  CM_GRAY10ext = 19,
 | 
						|
  CM_GRAY8ext = 20,
 | 
						|
  CM_TEXText = 21
 | 
						|
} COLORMODE, *PCOLORMODE;
 | 
						|
 | 
						|
typedef struct tagTARGETIMAGE
 | 
						|
{
 | 
						|
  SANE_Bool isOptimalSpeed;
 | 
						|
  COLORMODE cmColorMode;
 | 
						|
  unsigned short wDpi;
 | 
						|
  unsigned short wX;
 | 
						|
  unsigned short wY;
 | 
						|
  unsigned short wWidth;
 | 
						|
  unsigned short wHeight;
 | 
						|
  SANE_Byte bScanSource;
 | 
						|
} TARGETIMAGE, *PTARGETIMAGE;
 | 
						|
 | 
						|
typedef struct tagSUGGESTSETTING
 | 
						|
{
 | 
						|
  COLORMODE cmScanMode;
 | 
						|
  unsigned short wXDpi;
 | 
						|
  unsigned short wYDpi;
 | 
						|
  unsigned short wX;
 | 
						|
  unsigned short wY;
 | 
						|
  unsigned short wWidth;
 | 
						|
  unsigned short wHeight;
 | 
						|
  unsigned int dwBytesPerRow;
 | 
						|
} SUGGESTSETTING, *PSUGGESTSETTING;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#endif
 |