1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
# include <bitmap.h>
/************************************************************************/
/* Types of scanners. */
/************************************************************************/
# define SCANtyHPSCL 0
# define SCANtySCSI 1
/************************************************************************/
/* Description of a scanner data format. */
/************************************************************************/
typedef struct ScannerDataFormat
{
int sdfFormat;
int sdfBitsPerPixel;
char * sdfDescription;
int sdfPreviewFormat;
} ScannerDataFormat;
/************************************************************************/
/* Description of the 'mode' of a scanner. */
/************************************************************************/
typedef struct ScannerMode
{
int smDataFormat; /* Index in ScannerDefinition */
int smXResolution;
int smYResolution;
int smContrast;
int smIntensity;
int smX;
int smY;
int smWide;
int smHigh;
} ScannerMode;
/************************************************************************/
/* */
/* Description of a scanner. */
/* */
/************************************************************************/
typedef struct ScannerDefinition
{
int sdKind; /* SCSI,HPSCL &c */
int (*sdConfigure)( int fd,
int target,
struct ScannerDefinition * sd );
/* E.G. Determine size. */
int sdDevice; /* like file descriptor */
int sdTarget; /* like scsi target. */
char sdDeviceName[100];
int sdMetricUnit; /* mm, inch etc. */
int sdDevicePerMetric; /* device units/metric unit. */
int sdXMinimumResolution; /* X Minimum resolution. */
int sdXMaximumResolution; /* X Maximum resolution. */
int sdXOpticalResolution; /* X Optical resolution. */
int sdXDefaultResolution; /* X Default resolution. */
int sdYMinimumResolution; /* Y Minimum resolution. */
int sdYMaximumResolution; /* Y Maximum resolution. */
int sdYOpticalResolution; /* Y Optical resolution. */
int sdYDefaultResolution; /* Y Default resolution. */
int sdMinimumContrast; /* Minimum contrast. */
int sdMaximumContrast; /* Maximum contrast. */
int sdDefaultContrast; /* Default contrast. */
int sdMinimumIntensity; /* Minimum intensity. */
int sdMaximumIntensity; /* Maximum intensity. */
int sdDefaultIntensity; /* Default intensity. */
int sdHorizontalSize; /* Horizontal Device geometry! */
int sdVerticalSize; /* Vertical Device geometry! */
ScannerDataFormat *
sdDataFormats; /* Data Formats supported. */
int sdNumberOfDataFormats; /* Number of Data Formats. */
int sdDefaultDataFormat; /* Default data format. */
char sdDescription[40]; /* Description for external use */
ScannerMode sdCurrentMode; /* Current Data Format &c. */
ScannerMode sdApplicationMode; /* Scratch for application. */
} ScannerDefinition;
/************************************************************************/
/* Scan commands. */
/************************************************************************/
extern int scanResetScanner( int fd, const ScannerDefinition * sd );
extern int scanLightSourceTest( int fd, const ScannerDefinition * sd,
int on_off );
extern int scanFindScanners( ScannerDefinition * sd );
extern int scanOpenScanner( const ScannerDefinition * sd );
extern int scanCloseScanner( int fd, const ScannerDefinition * sd );
extern void scanSetDefaults( const ScannerDefinition * sd,
ScannerMode * sm );
extern int scanSetDataFormat( int fd, ScannerDefinition * sd,
int dataFormat );
extern int scanSetXResolution( int fd, ScannerDefinition * sd,
int xResolution );
extern int scanSetYResolution( int fd, ScannerDefinition * sd,
int yResolution );
extern int scanSetContrast( int fd, ScannerDefinition * sd,
int contrast );
extern int scanSetIntensity( int fd, ScannerDefinition * sd,
int intensity );
extern int scanDescribeBitmap( BitmapDescription * bd,
const ScannerDefinition * sd,
int fd );
extern int scanScanWindow( int fd,
const ScannerDefinition * sd,
const BitmapDescription * bd,
unsigned char * buffer );
extern unsigned char * scanScanRectangle( int fd,
int x,
int y,
int wide,
int high,
BitmapDescription * bd,
ScannerDefinition * sd,
ScannerMode * sm );
|