kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			odd/even handling step2
- shading coefficients are too short and truncate picture - need to compute startx - SHDAREA should be doablemerge-requests/1/head
							rodzic
							
								
									304d84d5e1
								
							
						
					
					
						commit
						a78b0edee7
					
				|  | @ -3972,8 +3972,7 @@ genesys_flatbed_calibration (Genesys_Device * dev) | |||
| 	} | ||||
|     } | ||||
| 
 | ||||
|   pixels_per_line = (SANE_UNFIX (dev->model->x_size) * dev->settings.xres) / | ||||
|     MM_PER_INCH; | ||||
|   pixels_per_line = (SANE_UNFIX (dev->model->x_size) * dev->settings.xres) / MM_PER_INCH; | ||||
| 
 | ||||
|   /* send default shading data */ | ||||
|   status = sanei_genesys_init_shading_data (dev, pixels_per_line); | ||||
|  | @ -4983,7 +4982,7 @@ genesys_fill_read_buffer (Genesys_Device * dev) | |||
| #ifdef SANE_DEBUG_LOG_RAW_DATA | ||||
| 	  if (rawfile != NULL) | ||||
| 	    { | ||||
| 	      fwrite (dev->oe_buffer.buffer, dev->oe_buffer.size, 1, rawfile); | ||||
| 	      fwrite (dev->oe_buffer.buffer, dev->oe_buffer.avail, 1, rawfile); | ||||
| 	    } | ||||
| #endif | ||||
| 	} | ||||
|  | @ -5030,7 +5029,7 @@ genesys_fill_read_buffer (Genesys_Device * dev) | |||
| #ifdef SANE_DEBUG_LOG_RAW_DATA | ||||
| 	      if (rawfile != NULL) | ||||
| 		{ | ||||
| 		  fwrite (dev->oe_buffer.buffer, dev->oe_buffer.size, 1, rawfile); | ||||
| 		  fwrite (dev->oe_buffer.buffer, dev->oe_buffer.avail, 1, rawfile); | ||||
| 		} | ||||
| #endif | ||||
| 	    } | ||||
|  | @ -5165,6 +5164,7 @@ genesys_read_ordered_data (Genesys_Device * dev, SANE_Byte * destination, | |||
|       rawfile = fopen ("raw.pnm", "wb"); | ||||
|       if (rawfile != NULL) | ||||
| 	{ | ||||
|           if (!(dev->model->flags & GENESYS_FLAG_ODD_EVEN_CIS)) | ||||
| 	  fprintf (rawfile, | ||||
| 		   "P%c\n%d %d\n%d\n", | ||||
| 		   dev->current_setup.channels == 1 ? | ||||
|  | @ -5172,6 +5172,14 @@ genesys_read_ordered_data (Genesys_Device * dev, SANE_Byte * destination, | |||
| 		   dev->current_setup.pixels, | ||||
| 		   dev->current_setup.lines, | ||||
| 		   (1 << dev->current_setup.depth) - 1); | ||||
|           else | ||||
|             { | ||||
| 	  fprintf (rawfile, | ||||
| 		   "P5\n%d %d\n%d\n", | ||||
| 		   dev->sensor.sensor_pixels*3, | ||||
| 		   dev->current_setup.lines, | ||||
| 		   (1 << dev->current_setup.depth) - 1); | ||||
|             } | ||||
| 	} | ||||
|     } | ||||
| #endif | ||||
|  |  | |||
|  | @ -432,7 +432,7 @@ static Genesys_Sensor Sensor[] = { | |||
|    87,		/* black pixels */ | ||||
|    16,		/* dummy pixels */ | ||||
|    0,		 | ||||
|    10272, | ||||
|    10272, /* 10272 */ | ||||
|    210, | ||||
|    200, | ||||
|    {0x00, 0x00, 0x00, 0x00}, | ||||
|  | @ -935,7 +935,7 @@ static Genesys_Model canon_lide_100_model = { | |||
|   {16, 8, 0},			/* possible depths in gray mode */ | ||||
|   {16, 8, 0},			/* possible depths in color mode */ | ||||
| 
 | ||||
|   SANE_FIX (6.95),		/* Start of scan area in mm (x) */ | ||||
|   SANE_FIX (6.0),		/* Start of scan area in mm (x) 6.95 */ | ||||
|   SANE_FIX (30.0),		/* Start of scan area in mm (y) */ | ||||
|   SANE_FIX (216.07),		/* Size of scan area in mm (x) */ | ||||
|   SANE_FIX (299.0),		/* Size of scan area in mm (y) */ | ||||
|  |  | |||
|  | @ -1428,7 +1428,14 @@ gl847_init_optical_regs_scan (Genesys_Device * dev, | |||
|        exposure_time, | ||||
|        used_res, start, pixels, channels, depth, half_ccd, flags); | ||||
| 
 | ||||
|   used_pixels = dev->sensor.sensor_pixels; | ||||
|   if(pixels<dev->sensor.sensor_pixels) | ||||
|     { | ||||
|       used_pixels = dev->sensor.sensor_pixels; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       used_pixels = pixels; | ||||
|     } | ||||
|   end = start + used_pixels; | ||||
| 
 | ||||
|   status = gl847_set_fe (dev, AFE_SET); | ||||
|  | @ -1451,7 +1458,9 @@ gl847_init_optical_regs_scan (Genesys_Device * dev, | |||
|       (dev->model->flags & GENESYS_FLAG_NO_CALIBRATION)) | ||||
|     r->value &= ~REG01_DVDSET; | ||||
|   else | ||||
|     r->value |= REG01_DVDSET; | ||||
|     { | ||||
|       r->value |= REG01_DVDSET | REG01_SHDAREA; | ||||
|     } | ||||
| 
 | ||||
|   /* average looks better than deletion, and we are already set up to 
 | ||||
|      use one of the average enabled resolutions */ | ||||
|  | @ -1561,11 +1570,12 @@ gl847_init_optical_regs_scan (Genesys_Device * dev, | |||
|   dev->bpl = words_per_line; | ||||
|   dev->cur=0; | ||||
|   dev->len=pixels/2; | ||||
|   dev->dist=0; | ||||
|   dev->dist=used_pixels/2; | ||||
|   dev->dist=10272/2; /* XXX STEF XXX */ | ||||
|   dev->skip=0; | ||||
| 
 | ||||
|   RIE (sanei_genesys_buffer_free (&(dev->oe_buffer))); | ||||
|   RIE (sanei_genesys_buffer_alloc (&(dev->oe_buffer), ((used_pixels*channels*10)/dev->bpl)*dev->bpl)); | ||||
|   RIE (sanei_genesys_buffer_alloc (&(dev->oe_buffer), (dev->bpl))); | ||||
| 
 | ||||
|   words_per_line *= channels; | ||||
| 
 | ||||
|  | @ -1760,13 +1770,13 @@ independent of our calculated values: | |||
|   /* compute scan parameters values */ | ||||
|   /* pixels are allways given at half or full CCD optical resolution */ | ||||
|   /* use detected left margin  and fixed value */ | ||||
| /* start */ | ||||
|   /* start */ | ||||
|   /* add x coordinates */ | ||||
|   start = | ||||
|     ((dev->sensor.CCD_start_xoffset + startx) * used_res) / | ||||
|     dev->sensor.optical_res; | ||||
| 
 | ||||
| /* needs to be aligned for used_res */ | ||||
|   /* needs to be aligned for used_res */ | ||||
|   start = (start * optical_res) / used_res; | ||||
| 
 | ||||
|   start += dev->sensor.dummy_pixel + 1; | ||||
|  | @ -1775,7 +1785,7 @@ independent of our calculated values: | |||
|     start |= 1; | ||||
| 
 | ||||
|   /* compute correct pixels number */ | ||||
| /* pixels */ | ||||
|   /* pixels */ | ||||
|   used_pixels = (pixels * optical_res) / xres; | ||||
| 
 | ||||
|   /* round up pixels number if needed */ | ||||
|  | @ -3316,16 +3326,17 @@ gl847_init_regs_for_shading (Genesys_Device * dev) | |||
|   memcpy (dev->calib_reg, dev->reg, | ||||
| 	  GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set)); | ||||
| 
 | ||||
|   dev->calib_pixels = dev->sensor.sensor_pixels; | ||||
| 
 | ||||
|   status = gl847_init_scan_regs (dev, | ||||
| 				 dev->calib_reg, | ||||
| 				 dev->settings.xres, | ||||
| 				 dev->motor.base_ydpi, | ||||
| 				 0, | ||||
| 				 0, | ||||
| 				 (dev->sensor.sensor_pixels * | ||||
| 				  dev->settings.xres) / | ||||
| 				 dev->sensor.optical_res, | ||||
| 				 dev->model->shading_lines, 16, | ||||
| 				 dev->calib_pixels, | ||||
| 				 dev->model->shading_lines, | ||||
|                                  16, | ||||
| 				 dev->calib_channels, | ||||
| 				 dev->settings.color_filter, | ||||
| 				 SCAN_FLAG_DISABLE_SHADING | | ||||
|  | @ -3335,7 +3346,6 @@ gl847_init_regs_for_shading (Genesys_Device * dev) | |||
| 				 SCAN_FLAG_IGNORE_LINE_DISTANCE | | ||||
| 				 SCAN_FLAG_USE_OPTICAL_RES); | ||||
| 
 | ||||
|   dev->calib_pixels = dev->current_setup.pixels; | ||||
| 
 | ||||
|   if (status != SANE_STATUS_GOOD) | ||||
|     { | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Stphane Voltz
						Stphane Voltz