www.pudn.com > scanner_4a.zip > SAMPLE.H
// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
// ³File Name : SAMPLE.H ³
// ³Description: Header file for SAMPLE.C ³
// ³Compiler : Microsoft C/C++ ³
// ³Author : Daohong Kan, Tsinghua Unis. Group ³
// ³MODIFIED BY: Sean JI, Tsinghua Unisplendour ³
// ³Date : Jan-23-1996 ³
// ³Version : 1.0 ³
// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
// Definition of SPI(Scanner Programming Interface) Parameter Block Structure
// and Error Codes
typedef unsigned char BYTE;
typedef unsigned int WORD;
// These parameters are used in front of the PDB by all SPI function
struct CommonParam
{
WORD func_code; // WR: Driver function call
WORD error_code; // RD: Returned error code
WORD category; // Reserved
};
// The PDB structure for GetSPIInfo function
struct SPI_Info
{
struct CommonParam Comm; // Common Parameters
WORD SPI_major_ver; // RD: SPI major version number
WORD SPI_minor_ver; // RD: SPI minor version number
WORD Drv_major_ver; // RD: Driver major version number
WORD Drv_minor_ver; // RD: Driver minor version number
WORD OS_id; // RD: Operating system ID: 01H MS-DOS,
// RD: 02H MS Windows, 04H OS/2, 08H Unix
WORD resvd_SPIInfo; // Reserved
char company_id[80]; // RD: Company identification
};
// The PDB structure for GetDevInfo function
struct Dev_Info
{
struct CommonParam Comm; // Common Parameters
WORD BUF_SEG; // RD: Memory base address
WORD BUF_space; // RD: Memory buffer size
char attention[96]; // RD: Description message:
// BYTE 0-56 reserved:
// BYTE 36-42:Vendor ID
// BYTE 44-45:Model ID
// BYTE 57: bit6=1 1pass scanner
// BYTE 58-62 reserved
// BYTE 63: bit2=1 ADF installed
// bit3=1 ADF & paper ready
// bit6=0 Flatbed scanner
// 1 SlideKit installed
// BYTE 64-95 reserved
char card_id[20]; // RD: Interface card model
};
// The PDB structure for SetParameters function
struct SetDevParam
{
struct CommonParam Comm; // Common Parameters
WORD length_unit; // reserved
WORD paper_length; // reserved
WORD frame_unit; // WR: 0->inch, 1->pixel
WORD frame[4]; // WR: Scanning frame coordinates:
// left-top(x1, y1)->(frame[0], frame[1])
// right-bottom(x2, y2)->(frame[2], frame[3])
WORD background_f_code; // WR: 'T'->single bit mode
// 'H'->half tone
// otherwise multi-bit mode
WORD background_unit; // reserved, set to 0
WORD background_win_no; // reserved, set to 0
WORD background[16]; // reserved, set to 0
WORD contrast; // WR: [-127, +127] for 1pass scanner
WORD brightness; // WR: [-127, +127] for 1pass scanner
WORD model; // WR: 600 for UNISCAN 4A
// 800 for UNISCAN 4B
// 1200 for UNISCAN 4C
WORD resolution; // WR: [72, 600] for UNISCAN 4A
// [72, 800] for UNISCAN 4B
// [72, 1200] for UNISCAN 4C
WORD velocity; // WR: [0, 4], fast->slow
WORD filter; // WR: 0->gray or B/W, 1->color
WORD grain_built_in; // WR: 0->select one built in code
WORD grain; // WR: [00, 0bH] if grain_built_in=0
// else 2, 3, 4, 5, 6, 8
// grain is only for half tone
BYTE grain_code[64]; // WR: reserved if grain_built_in=0
WORD gamma; // WR: Gamma correction, for color image
// 0-20H: select on built in gamma table
// 27H : select user defined gamma table
WORD gammasize; // WR:
BYTE gammacode[256]; // WR: User defined gamma table
WORD shadow; // reserved
WORD hilight; // reserved
WORD scansource; // WR: bit0=0 from flatbed scanner
// =1 from ADF
// bit1=0 backtracking disabled
// =1 backtracking enabled
// bit2=0 from flatbed scanner
// =1 from transparency
// bit7=0 don't care bit1
// 1 bit1 is effective
WORD contrast_r; // WR: for red color plane
WORD brightness_r; // can be ignored
WORD gamma_r;
WORD gammasize_r;
BYTE gammacode_r[256];
WORD shadow_r;
WORD hilight_r;
WORD contrast_g; // WR: for green color plane
WORD brightness_g; // can be ignored
WORD gamma_g;
WORD gammasize_g;
BYTE gammacode_g[256];
WORD shadow_g;
WORD hilight_g;
WORD contrast_b; // WR: for blue color plane
WORD brightness_b; // can be ignored
WORD gamma_b;
WORD gammasize_b;
BYTE gammacode_b[256];
WORD shadow_b;
WORD hilight_b;
WORD LD_DPI; // RD: reserved, can be ignored
BYTE R_LD; // RD:
BYTE G_LD; // RD:
BYTE B_LD; // RD:
};
// The PDB structure for GetImageStatus function
struct GetImageStatus
{
struct CommonParam Comm; // Common Parameters
WORD line_width; // RD: width in bytes of one scan line
WORD line_no; // RD: count of total scan lines remained
};
// The PDB structure for StartScan function
struct ScanParam
{
struct CommonParam Comm; // Common Parameters
WORD scan_control; // WR: 0 for UNISCAN faltbed scanner
WORD scan_bytes; // WR: width in bytes desired to get
WORD scan_lines; // WR: scan lines desired to get
WORD txf_lines; // RD: image lines transfered
WORD processed_lines; // reserved, set 0
WORD current_buf; // reserved, set 0
WORD current_line; // reserved, set 0
WORD scan_status; // reserved, set 0
WORD number_of_buf; // WR: buffer number in buffer list
long buf_list_ptr; // WR: image buffer list pointer
};
// Buffer List Entry Format
struct PB_buffer_list_def
{
long buf_size; // WR: each buffer size
WORD buf_line; // WR: each buffer image lines
long buf_address; // WR: buffer address
WORD ems_handler; // reserved
WORD ems_page; // reserved
};
typedef struct PB_buffer_list_def PB_buffer_list;
extern int SCNOpen(void);
extern int SCNCall(char far *);
extern int SCNClose(void);
int SCN_INIT();
int SCN_SETPARAM(int);
int SCN_START();
int SCN_ABORT();
int show_image();