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: */ |