kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			
		
			
				
	
	
		
			155 wiersze
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			155 wiersze
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
| /* sane - Scanner Access Now Easy.
 | |
| 
 | |
|    Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
 | |
| 
 | |
|    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.
 | |
| */
 | |
| 
 | |
| #ifndef GT68XX_MID_H
 | |
| #define GT68XX_MID_H
 | |
| 
 | |
| /** @file
 | |
|  * @brief Image data unpacking.
 | |
|  */
 | |
| 
 | |
| #include "gt68xx_low.h"
 | |
| #include "../include/sane/sane.h"
 | |
| 
 | |
| typedef struct GT68xx_Delay_Buffer GT68xx_Delay_Buffer;
 | |
| typedef struct GT68xx_Line_Reader GT68xx_Line_Reader;
 | |
| 
 | |
| struct GT68xx_Delay_Buffer
 | |
| {
 | |
|   SANE_Int line_count;
 | |
|   SANE_Int read_index;
 | |
|   SANE_Int write_index;
 | |
|   unsigned int **lines;
 | |
|   SANE_Byte *mem_block;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Object for reading image data line by line, with line distance correction.
 | |
|  *
 | |
|  * This object handles reading the image data from the scanner line by line and
 | |
|  * converting it to internal format.  Internally each image sample is
 | |
|  * represented as <code>unsigned int</code> value, scaled to 16-bit range
 | |
|  * (0-65535).  For color images the data for each primary color is stored as
 | |
|  * separate lines.
 | |
|  */
 | |
| struct GT68xx_Line_Reader
 | |
| {
 | |
|   GT68xx_Device *dev;			/**< Low-level interface object */
 | |
|   GT68xx_Scan_Parameters params;	/**< Scan parameters */
 | |
| 
 | |
| #if 0
 | |
|   /** Number of bytes in the returned scanlines */
 | |
|   SANE_Int bytes_per_line;
 | |
| 
 | |
|   /** Number of bytes per pixel in the returned scanlines */
 | |
|   SANE_Int bytes_per_pixel;
 | |
| #endif
 | |
| 
 | |
|   /** Number of pixels in the returned scanlines */
 | |
|   SANE_Int pixels_per_line;
 | |
| 
 | |
|   SANE_Byte *pixel_buffer;
 | |
| 
 | |
|   GT68xx_Delay_Buffer r_delay;
 | |
|   GT68xx_Delay_Buffer g_delay;
 | |
|   GT68xx_Delay_Buffer b_delay;
 | |
|   SANE_Bool delays_initialized;
 | |
| 
 | |
|     SANE_Status (*read) (GT68xx_Line_Reader * reader,
 | |
| 			 unsigned int **buffer_pointers_return);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Create a new GT68xx_Line_Reader object.
 | |
|  *
 | |
|  * @param dev           The low-level scanner interface object.
 | |
|  * @param params        Scan parameters prepared by gt68xx_device_setup_scan().
 | |
|  * @param final_scan    SANE_TRUE for the final scan, SANE_FALSE for
 | |
|  *                      calibration scans.
 | |
|  * @param reader_return Location for the returned object.
 | |
|  *
 | |
|  * @return
 | |
|  * - SANE_STATUS_GOOD   - on success
 | |
|  * - SANE_STATUS_NO_MEM - cannot allocate memory for object or buffers
 | |
|  * - other error values - failure of some internal functions
 | |
|  */
 | |
| static SANE_Status
 | |
| gt68xx_line_reader_new (GT68xx_Device * dev,
 | |
| 			GT68xx_Scan_Parameters * params,
 | |
| 			SANE_Bool final_scan,
 | |
| 			GT68xx_Line_Reader ** reader_return);
 | |
| 
 | |
| /**
 | |
|  * Destroy the GT68xx_Line_Reader object.
 | |
|  *
 | |
|  * @param reader  The GT68xx_Line_Reader object to destroy.
 | |
|  */
 | |
| static SANE_Status gt68xx_line_reader_free (GT68xx_Line_Reader * reader);
 | |
| 
 | |
| /**
 | |
|  * Read a scanline from the GT68xx_Line_Reader object.
 | |
|  *
 | |
|  * @param reader      The GT68xx_Line_Reader object.
 | |
|  * @param buffer_pointers_return Array of pointers to image lines (1 or 3
 | |
|  * elements)
 | |
|  *
 | |
|  * This function reads a full scanline from the device, unpacks it to internal
 | |
|  * buffers and returns pointer to these buffers in @a
 | |
|  * buffer_pointers_return[i].  For monochrome scan, only @a
 | |
|  * buffer_pointers_return[0] is filled; for color scan, elements 0, 1, 2 are
 | |
|  * filled with pointers to red, green, and blue data.  The returned pointers
 | |
|  * are valid until the next call to gt68xx_line_reader_read(), or until @a
 | |
|  * reader is destroyed.
 | |
|  *
 | |
|  * @return
 | |
|  * - SANE_STATUS_GOOD  - read completed successfully
 | |
|  * - other error value - an error occured
 | |
|  */
 | |
| static SANE_Status
 | |
| gt68xx_line_reader_read (GT68xx_Line_Reader * reader,
 | |
| 			 unsigned int **buffer_pointers_return);
 | |
| 
 | |
| #endif /* not GT68XX_MID_H */
 | |
| 
 | |
| /* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
 |