1 /* sane - Scanner Access Now Easy.
2 
3    This file (C) 1997 Ingo Schneider
4 
5    This file is part of the SANE package.
6 
7    SANE is free software; you can redistribute it and/or modify it under
8    the terms of the GNU General Public License as published by the Free
9    Software Foundation; either version 2 of the License, or (at your
10    option) any later version.
11 
12    SANE is distributed in the hope that it will be useful, but WITHOUT
13    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15    for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with sane; see the file COPYING.
19    If not, see <https://www.gnu.org/licenses/>.  */
20 #ifndef s9036_h
21 #define s9036_h
22 
23 enum S9036_Option
24   {
25     OPT_NUM_OPTS = 0,
26 
27     OPT_MODE_GROUP,
28     OPT_DEPTH,
29     OPT_RESOLUTION,
30 
31     OPT_GEOMETRY_GROUP,
32     OPT_TL_X,			/* top-left x */
33     OPT_TL_Y,			/* top-left y */
34     OPT_BR_X,			/* bottom-right x */
35     OPT_BR_Y,			/* bottom-right y */
36 
37     OPT_ENHANCEMENT_GROUP,
38     OPT_BRIGHTNESS,
39     OPT_CONTRAST,
40     OPT_BRIGHT_ADJUST,
41     OPT_CONTR_ADJUST,
42 
43     /* must come last: */
44     NUM_OPTIONS
45   };
46 
47 typedef struct S9036_Device
48   {
49     struct S9036_Device *next;
50     SANE_Device sane;
51     SANE_Handle handle;
52   }
53 S9036_Device;
54 
55 typedef struct S9036_Scanner
56   {
57     /* all the state needed to define a scan request: */
58 
59     SANE_Option_Descriptor opt[NUM_OPTIONS];
60     SANE_Word val[NUM_OPTIONS];
61 
62     /* Parsed option values and variables that are valid only during
63        actual scanning: */
64     SANE_Bool scanning;
65     SANE_Parameters params;
66 
67     size_t bufsize;		/* about SCSI_MAX_REQUEST_SIZE */
68     SANE_Byte *buffer;		/* buffer of size 'bufsize' */
69     SANE_Byte *bufstart;	/* Start of data for next read */
70     size_t in_buffer;		/* bytes already in buffer */
71 
72     int lines_in_scanner;	/* Lines in scanner memory */
73     int lines_read;		/* Total lines read for now */
74 
75     int fd;			/* SCSI filedescriptor */
76 
77     /* scanner dependent/low-level state: */
78     S9036_Device *hw;
79 
80   }
81 S9036_Scanner;
82 
83 #endif /* s9036_h */
84