scanimage.c: add default: blocks to switch statements so recent gcc will shutup

fujitsu.[ch]: update to backend v1.0.52:
- remove unused jpeg function
- reactivate look-up-table based brightness and contrast options
- change range of hardware brightness/contrast to match LUT versions
- call send_lut() from sane_control_option instead of sane_start
merge-requests/1/head
m. allan noah 2007-07-31 18:07:53 +00:00
rodzic 2db8ec7d98
commit c8e8f2c41a
4 zmienionych plików z 59 dodań i 84 usunięć

Wyświetl plik

@ -1,3 +1,11 @@
2007-07-26 m. allan noah <kitno455 a t gmail d o t com>
* frontend/scanimage.c: add default: blocks to FRAME switch code
* backend/fujitsu.[ch]: update to version 1.0.52:
- remove unused jpeg function
- reactivate look-up-table based brightness and contrast options
- change range of hardware brightness/contrast to match LUT versions
- call send_lut() from sane_control_option instead of sane_start
2007-07-31 Julien Blache <jb@jblache.org>
* doc/descriptions/epson.desc: add the Epson Stylys DX-5050
(04b8:082b).

Wyświetl plik

@ -262,6 +262,11 @@
- combined calcDerivedValues with sane_get_params
V 1.0.51 2007-07-26, MAN
- fix bug in jpeg output support
V 1.0.52 2007-07-27, MAN
- remove unused jpeg function
- reactivate look-up-table based brightness and contrast options
- change range of hardware brightness/contrast to match LUT versions
- call send_lut() from sane_control_option instead of sane_start
SANE FLOW DIAGRAM
@ -322,7 +327,7 @@
#include "fujitsu.h"
#define DEBUG 1
#define BUILD 51
#define BUILD 52
/* values for SANE_DEBUG_FUJITSU env var:
- errors 5
@ -2029,20 +2034,13 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->constraint.range = &s->brightness_range;
s->brightness_range.quant=1;
/* scanner has brightness built-in */
/* value ranges from 0-255 (usually) */
if (s->brightness_steps){
s->brightness_range.min=0;
s->brightness_range.max=s->brightness_steps;
/* some have hardware brightness (always 0 to 255?) */
/* some use LUT or GT (-127 to +127)*/
if (s->brightness_steps || s->num_download_gamma){
s->brightness_range.min=-127;
s->brightness_range.max=127;
opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
}
/* scanner has brightness via LUT or GT */
/* value ranges from -100 to +100 */
/*else if (s->num_download_gamma){
s->brightness_range.min=-100;
s->brightness_range.max=100;
opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
}*/
else{
opt->cap = SANE_CAP_INACTIVE;
}
@ -2059,20 +2057,13 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->constraint.range = &s->contrast_range;
s->contrast_range.quant=1;
/* scanner has contrast built-in */
/* value ranges from 0-255 (usually) */
if (s->contrast_steps) {
s->contrast_range.min=0;
s->contrast_range.max=s->contrast_steps;
/* some have hardware contrast (always 0 to 255?) */
/* some use LUT or GT (-127 to +127)*/
if (s->contrast_steps || s->num_download_gamma){
s->contrast_range.min=-127;
s->contrast_range.max=127;
opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
}
/* scanner has contrast via LUT or GT */
/* value ranges from -100 to +100 */
/*else if (s->num_download_gamma){
s->contrast_range.min=-100;
s->contrast_range.max=100;
opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
}*/
}
else {
opt->cap = SANE_CAP_INACTIVE;
}
@ -3224,10 +3215,22 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
/* Enhancement Group */
case OPT_BRIGHTNESS:
s->brightness = val_c;
/* send lut if scanner has no hardware brightness */
if(!s->brightness_steps && s->num_download_gamma && s->adbits){
return send_lut(s);
}
return SANE_STATUS_GOOD;
case OPT_CONTRAST:
s->contrast = val_c;
/* send lut if scanner has no hardware contrast */
if(!s->contrast_steps && s->num_download_gamma && s->adbits){
return send_lut(s);
}
return SANE_STATUS_GOOD;
case OPT_GAMMA:
@ -3498,7 +3501,7 @@ get_hardware_status (struct fujitsu *s)
/* instead of internal brightness/contrast/gamma
most scanners use a 256x256 or 1024x256 LUT
default is linear table of slope 1 or 1/4 resp.
brightness and contrast inputs are -100 to +100
brightness and contrast inputs are -127 to +127
contrast rotates slope of line around central input val
@ -3530,12 +3533,12 @@ send_lut (struct fujitsu *s)
DBG (10, "send_lut: start\n");
/* contrast is converted to a slope [0,90] degrees:
* first [-100,100] to [0,200] then to [0,1]
* first [-127,127] to [0,254] then to [0,1]
* then multiply by PI/2 to convert to radians
* then take the tangent to get slope (T.O.A)
* then multiply by the normal linear slope
* because the table may not be square, i.e. 1024x256*/
slope = tan(((double)s->contrast+100)/200 * M_PI/2) * 256/bytes;
slope = tan(((double)s->contrast+127)/254 * M_PI/2) * 256/bytes;
/* contrast slope must stay centered, so figure
* out vertical offset at central input value */
@ -3546,7 +3549,8 @@ send_lut (struct fujitsu *s)
* to slide the contrast curve entirely off the table */
b = ((double)s->brightness/127) * (256 - offset);
DBG (15, "send_lut: %d %f %d %f %f\n", s->brightness, b, s->contrast, slope, offset);
DBG (15, "send_lut: %d %f %d %f %f\n", s->brightness, b,
s->contrast, slope, offset);
set_S_xfer_datatype (sendB.cmd, S_datatype_lut_data);
set_S_xfer_length (sendB.cmd, S_lut_data_offset+bytes);
@ -3573,12 +3577,12 @@ send_lut (struct fujitsu *s)
hexdump(15,"LUT:",send_lutC+S_lut_data_offset,bytes);
DBG (10,"send_lut: skipping\n");
/*ret = do_cmd (
ret = do_cmd (
s, 1, 0,
sendB.cmd, sendB.size,
send_lutC, S_lut_data_offset+bytes,
NULL, NULL
);*/
);
DBG (10, "send_lut: finish\n");
@ -4088,16 +4092,6 @@ sane_start (SANE_Handle handle)
return ret;
}
/* send lut if scanner has no contrast option */
if(!s->contrast_steps && s->adbits){
ret = send_lut(s);
if (ret != SANE_STATUS_GOOD) {
DBG (5, "sane_start: ERROR: cannot send lut\n");
do_cancel(s);
return ret;
}
}
/* store the number of front bytes */
if ( s->source != SOURCE_ADF_BACK ){
s->bytes_tot[SIDE_FRONT] = s->params.bytes_per_line * s->params.lines;
@ -4398,14 +4392,20 @@ set_window (struct fujitsu *s)
set_WD_brightness (window_descriptor_blockB.cmd, 0);
if(s->brightness_steps){
set_WD_brightness (window_descriptor_blockB.cmd, s->brightness);
/*convert our common -127 to +127 range into HW's range
*FIXME: this code assumes hardware range of 0-255 */
set_WD_brightness (window_descriptor_blockB.cmd, s->brightness+128);
}
set_WD_threshold (window_descriptor_blockB.cmd, s->threshold);
set_WD_contrast (window_descriptor_blockB.cmd, 0);
if(s->contrast_steps){
set_WD_contrast (window_descriptor_blockB.cmd, s->contrast);
/*convert our common -127 to +127 range into HW's range
*FIXME: this code assumes hardware range of 0-255 */
set_WD_contrast (window_descriptor_blockB.cmd, s->contrast+128);
}
set_WD_composition (window_descriptor_blockB.cmd, s->mode);
@ -5107,45 +5107,6 @@ read_from_scanner(struct fujitsu *s, int side)
return ret;
}
static SANE_Status
copy_JPEG(struct fujitsu *s, unsigned char * buf, int len, int side)
{
SANE_Status ret=SANE_STATUS_GOOD;
int i,j=0;
int end=0;
DBG (10, "copy_JPEG: start\n");
for(i=0;i<len;i++){
/* copy byte */
s->buffers[side][ s->bytes_rx[side]+i ] = buf[i];
j = i+1;
/* look for EOI marker */
/* FIXME: what if ff and d9 are in different passes? */
if(buf[i] == 0xff && j < len && buf[j] == 0xd9){
DBG (10, "copy_JPEG: found end\n");
s->buffers[side][ s->bytes_rx[side]+j ] = buf[j];
j++;
end=1;
break;
}
}
s->bytes_rx[side] += j;
/* we did not read to end of buf, must have found EOI */
/* override the total, so that sane_read will return EOF */
if(end){
s->bytes_tot[side] = s->bytes_rx[side];
}
DBG (10, "copy_JPEG: finish\n");
return ret;
}
static SANE_Status
copy_3091(struct fujitsu *s, unsigned char * buf, int len, int side)
{

Wyświetl plik

@ -588,6 +588,7 @@ int get_current_side (struct fujitsu *s);
int get_page_width (struct fujitsu *s);
int get_page_height (struct fujitsu *s);
static SANE_Status send_lut (struct fujitsu *s);
static int set_window (struct fujitsu *s);
static SANE_Status get_pixelsize (struct fujitsu *s, int*, int*, int*, int*);
@ -598,7 +599,6 @@ static SANE_Status read_from_JPEGduplex(struct fujitsu *s);
static SANE_Status read_from_3091duplex(struct fujitsu *s);
static SANE_Status read_from_scanner(struct fujitsu *s, int side);
static SANE_Status copy_JPEG(struct fujitsu *s, unsigned char * buf, int len, int side);
static SANE_Status copy_3091(struct fujitsu *s, unsigned char * buf, int len, int side);
static SANE_Status copy_buffer(struct fujitsu *s, unsigned char * buf, int len, int side);

Wyświetl plik

@ -1216,6 +1216,9 @@ scan_it (void)
parm.lines, parm.depth);
}
break;
default:
break;
}
if (must_buffer)
@ -1328,6 +1331,9 @@ scan_it (void)
}
offset += len;
break;
default:
break;
}
}
else /* ! must_buffer */