diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2020-03-30 21:30:45 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2020-03-30 21:30:45 +0200 |
commit | ee770c2346eb37e0dcb8b6cf3eaacf3d8efd6bbc (patch) | |
tree | 58f05092be1a17a939e861f8cadcda1b6ca2ecef /backend/microtek.c | |
parent | 0da9e21872802cfc6e975b1ebaf9efb9e5934d84 (diff) | |
parent | fef76e17ed4c607ea73b81279f9ef1d7121be900 (diff) |
Merge branch 'release/experimental/1.0.29-1_experimental1'experimental/1.0.29-1_experimental1
Diffstat (limited to 'backend/microtek.c')
-rw-r--r-- | backend/microtek.c | 495 |
1 files changed, 248 insertions, 247 deletions
diff --git a/backend/microtek.c b/backend/microtek.c index ff82df4..c3b87ec 100644 --- a/backend/microtek.c +++ b/backend/microtek.c @@ -1,7 +1,7 @@ /*************************************************************************** * SANE - Scanner Access Now Easy. - microtek.c + microtek.c This file Copyright 2002 Matthew Marjanovic @@ -151,7 +151,7 @@ static SANE_Range brightness_range = {-100, 100, 1}; /*static SANE_Range exposure_range = {-18, 21, 3};*/ /*static SANE_Range contrast_range = {-42, 49, 7};*/ static SANE_Range u8_range = {0, 255, 1}; -static SANE_Range analog_gamma_range = +static SANE_Range analog_gamma_range = { SANE_FIX(0.1), SANE_FIX(4.0), SANE_FIX(0) }; @@ -235,7 +235,7 @@ ring_alloc (size_t initial_size, size_t bpl, size_t ppl) rb->green_extra = 0; rb->blue_extra = 0; rb->complete_count = 0; - + return rb; } @@ -260,7 +260,7 @@ ring_expand (ring_buffer *rb, size_t amount) DBG(23, "ring_expand: old, new, inc size: %lu, %lu, %lu\n", (u_long)oldsize, (u_long)rb->size, (u_long)amount); DBG(23, "ring_expand: old tr: %lu tg: %lu tb: %lu hc: %lu\n", - (u_long)rb->tail_red, (u_long)rb->tail_green, + (u_long)rb->tail_red, (u_long)rb->tail_green, (u_long)rb->tail_blue, (u_long)rb->head_complete); /* if necessary, move data and fix up them pointers */ /* (will break subtly if ring is filled with G or B bytes, @@ -276,20 +276,20 @@ ring_expand (ring_buffer *rb, size_t amount) oldsize - rb->head_complete); if ((rb->tail_red > rb->head_complete) || ((rb->tail_red == rb->head_complete) && - !(rb->complete_count) && !(rb->red_extra))) + !(rb->complete_count) && !(rb->red_extra))) rb->tail_red += amount; if ((rb->tail_green > rb->head_complete) || ((rb->tail_green == rb->head_complete) && - !(rb->complete_count) && !(rb->green_extra))) + !(rb->complete_count) && !(rb->green_extra))) rb->tail_green += amount; if ((rb->tail_blue > rb->head_complete) || ((rb->tail_blue == rb->head_complete) && - !(rb->complete_count) && !(rb->blue_extra))) + !(rb->complete_count) && !(rb->blue_extra))) rb->tail_blue += amount; rb->head_complete += amount; } DBG(23, "ring_expand: new tr: %lu tg: %lu tb: %lu hc: %lu\n", - (u_long)rb->tail_red, (u_long)rb->tail_green, + (u_long)rb->tail_red, (u_long)rb->tail_green, (u_long)rb->tail_blue, (u_long)rb->head_complete); return SANE_STATUS_GOOD; } @@ -320,13 +320,13 @@ ring_free (ring_buffer *rb) /* typically misinterpreted/munged by the low-level scsi driver) */ /********************************************************************/ static SANE_Status -sense_handler (int scsi_fd, u_char *sense, void *arg) +sense_handler (int scsi_fd, u_char *sense, void *arg) { int *sense_flags = (int *)arg; SANE_Status stat; DBG(10, "SENSE! fd = %d\n", scsi_fd); - DBG(10, "sense = %02x %02x %02x %02x.\n", + DBG(10, "sense = %02x %02x %02x %02x.\n", sense[0], sense[1], sense[2], sense[3]); switch(sense[0]) { case 0x00: @@ -340,7 +340,7 @@ sense_handler (int scsi_fd, u_char *sense, void *arg) DBG(10, "sense: ERR_SCSICMD\n"); stat = SANE_STATUS_IO_ERROR; } - } + } if (sense[1] & 0x02) { DBG(10, "sense: ERR_TOOMANY\n"); stat = SANE_STATUS_IO_ERROR; @@ -394,7 +394,7 @@ wait_ready(Microtek_Scanner *ms) int retry = 0; DBG(23, ".wait_ready %d...\n", ms->sfd); - while ((status = sanei_scsi_cmd(ms->sfd, comm, 6, 0, 0)) + while ((status = sanei_scsi_cmd(ms->sfd, comm, 6, 0, 0)) != SANE_STATUS_GOOD) { DBG(23, "wait_ready failed (%d)\n", retry); if (retry > 5) return SANE_STATUS_IO_ERROR; /* XXXXXXXX */ @@ -403,7 +403,7 @@ wait_ready(Microtek_Scanner *ms) } return SANE_STATUS_GOOD; } - + /********************************************************************/ /* send scan region coordinates */ @@ -432,7 +432,7 @@ scanning_frame(Microtek_Scanner *ms) ms->x1, ms->y1, ms->x2, ms->y2); DBG(23, ".scanning_frame: out- %d,%d %d,%d\n", x1, y1, x2, y2); data = comm + 6; - data[0] = + data[0] = ((ms->unit_type == MS_UNIT_PIXELS) ? 0x08 : 0 ) | ((ms->mode == MS_MODE_HALFTONE) ? 0x01 : 0 ); data[1] = x1 & 0xFF; @@ -444,7 +444,7 @@ scanning_frame(Microtek_Scanner *ms) data[7] = y2 & 0xFF; data[8] = (y2 >> 8) & 0xFF; if (DBG_LEVEL >= 192) { - int i; + int i; #if 0 fprintf(stderr, "SF: "); for (i=0;i<6+0x09;i++) fprintf(stderr, "%2x ", comm[i]); @@ -468,8 +468,8 @@ mode_select(Microtek_Scanner *ms) uint8_t *data, comm[19] = { 0x15, 0, 0, 0, 0, 0 }; DBG(23, ".mode_select %d...\n", ms->sfd); - data = comm + 6; - data[0] = + data = comm + 6; + data[0] = 0x81 | ((ms->unit_type == MS_UNIT_18INCH) ? 0 : 0x08) | ((ms->res_type == MS_RES_5PER) ? 0 : 0x02); @@ -488,8 +488,8 @@ mode_select(Microtek_Scanner *ms) comm[4] = (ms->midtone_support) ? 0x0B : 0x0A; if (DBG_LEVEL >= 192) { - int i; -#if 0 + int i; +#if 0 fprintf(stderr, "MSL: "); for (i=0;i<6+comm[4];i++) fprintf(stderr, "%2x ", comm[i]); fprintf(stderr, "\n"); @@ -518,8 +518,8 @@ mode_select_1(Microtek_Scanner *ms) data[3] = ((ms->allow_calibrate) ? 0 : 0x02); /* | 0x01; */ if (DBG_LEVEL >= 192) { - int i; -#if 0 + int i; +#if 0 fprintf(stderr, "MSL1: "); for (i=0;i<6+0x0A;i++) fprintf(stderr, "%2x ", comm[i]); fprintf(stderr, "\n"); @@ -532,7 +532,7 @@ mode_select_1(Microtek_Scanner *ms) } - + /********************************************************************/ /* record mode_sense results in the mode_sense buffer */ /* (this is to tell if something catastrophic has happened */ @@ -556,7 +556,7 @@ save_mode_sense(Microtek_Scanner *ms) for (i=0; i<10; i++) ms->mode_sense_cache[i] = data[i]; if (DBG_LEVEL >= 192) { - unsigned int i; + unsigned int i; #if 0 fprintf(stderr, "SMS: "); for (i=0;i<lenp;i++) fprintf(stderr, "%2x ", data[i]); @@ -569,8 +569,8 @@ save_mode_sense(Microtek_Scanner *ms) return status; } - - + + /********************************************************************/ /* read mode_sense and compare to what we saved before */ /********************************************************************/ @@ -590,20 +590,20 @@ compare_mode_sense(Microtek_Scanner *ms, int *match) status = sanei_scsi_cmd(ms->sfd, comm, 6, data, &lenp); *match = 1; - for (i=0; i<10; i++) + for (i=0; i<10; i++) *match = *match && (ms->mode_sense_cache[i] == data[i]); if (DBG_LEVEL >= 192) { - unsigned int i; + unsigned int i; #if 0 fprintf(stderr, "CMS: "); - for (i=0;i<lenp;i++) fprintf(stderr, "%2x(%2x) ", + for (i=0;i<lenp;i++) fprintf(stderr, "%2x(%2x) ", data[i], ms->mode_sense_cache[i]); fprintf(stderr, "\n"); #endif MDBG_INIT("CMS: "); - for (i=0;i<lenp;i++) MDBG_ADD("%2x(%2x) ", + for (i=0;i<lenp;i++) MDBG_ADD("%2x(%2x) ", data[i], ms->mode_sense_cache[i]); MDBG_FINISH(192); @@ -611,10 +611,10 @@ compare_mode_sense(Microtek_Scanner *ms, int *match) return status; } - + /********************************************************************/ /* send mode_sense_1, and upset every scsi driver known to mankind */ -/********************************************************************/ +/********************************************************************/ #if 0 static SANE_Status mode_sense_1(Microtek_Scanner *ms) @@ -628,7 +628,7 @@ mode_sense_1(Microtek_Scanner *ms) data[2] = ms->bright_g; data[3] = ms->bright_b; if (DBG_LEVEL >= 192) { - int i; + int i; fprintf(stderr, "MS1: "); for (i=0;i<6+0x1E;i++) fprintf(stderr, "%2x ", comm[i]); fprintf(stderr, "\n"); @@ -639,23 +639,23 @@ mode_sense_1(Microtek_Scanner *ms) -/********************************************************************/ +/********************************************************************/ /* send "accessory" command */ -/********************************************************************/ +/********************************************************************/ static SANE_Status accessory(Microtek_Scanner *ms) { uint8_t comm[6] = { 0x10, 0, 0, 0, 0, 0 }; DBG(23, ".accessory...\n"); - comm[4] = + comm[4] = ((ms->useADF) ? 0x41 : 0x40) | ((ms->prescan) ? 0x18 : 0x10) | ((ms->transparency) ? 0x24 : 0x20) | ((ms->allowbacktrack) ? 0x82 : 0x80); if (DBG_LEVEL >= 192) { - int i; + int i; #if 0 fprintf(stderr, "AC: "); for (i=0;i<6;i++) fprintf(stderr, "%2x ", comm[i]); @@ -670,16 +670,16 @@ accessory(Microtek_Scanner *ms) -/********************************************************************/ +/********************************************************************/ /* start the scanner a-scannin' */ -/********************************************************************/ +/********************************************************************/ static SANE_Status start_scan(Microtek_Scanner *ms) { uint8_t comm[6] = { 0x1B, 0, 0, 0, 0, 0 }; DBG(23, ".start_scan...\n"); - comm[4] = + comm[4] = 0x01 | /* "start" */ ((ms->expandedresolution) ? 0x80 : 0) | ((ms->multibit) ? 0x40 : 0) | @@ -691,7 +691,7 @@ start_scan(Microtek_Scanner *ms) ((ms->filter == MS_FILT_BLUE) ? 0x18 : 0) ; if (DBG_LEVEL >= 192) { - int i; + int i; #if 0 fprintf(stderr, "SS: "); for (i=0;i<6;i++) fprintf(stderr, "%2x ", comm[i]); @@ -706,9 +706,9 @@ start_scan(Microtek_Scanner *ms) -/********************************************************************/ +/********************************************************************/ /* stop the scanner a-scannin' */ -/********************************************************************/ +/********************************************************************/ static SANE_Status stop_scan(Microtek_Scanner *ms) { @@ -716,8 +716,8 @@ stop_scan(Microtek_Scanner *ms) DBG(23, ".stop_scan...\n"); if (DBG_LEVEL >= 192) { - int i; -#if 0 + int i; +#if 0 fprintf(stderr, "SPS:"); for (i=0;i<6;i++) fprintf(stderr, "%2x ", comm[i]); fprintf(stderr, "\n"); @@ -729,11 +729,11 @@ stop_scan(Microtek_Scanner *ms) return sanei_scsi_cmd(ms->sfd, comm, 6, 0, 0); } - -/********************************************************************/ + +/********************************************************************/ /* get scan status */ -/********************************************************************/ +/********************************************************************/ static SANE_Status get_scan_status(Microtek_Scanner *ms, SANE_Int *busy, @@ -758,8 +758,8 @@ get_scan_status(Microtek_Scanner *ms, *busy = data[0]; *bytes_per_line = (data[1]) + (data[2] << 8); *lines = (data[3]) + (data[4] << 8) + (data[5] << 16); - - DBG(20, "get_scan_status(%lu): %d, %d, %d -> #%d\n", + + DBG(20, "get_scan_status(%lu): %d, %d, %d -> #%d\n", (u_long) lenp, *busy, *bytes_per_line, *lines, retry); DBG(20, "> %2x %2x %2x %2x %2x %2x\n", data[0], data[1], data[2], data[3], data[4], data[5]); @@ -770,20 +770,20 @@ get_scan_status(Microtek_Scanner *ms, sleep(M_GSS_WAIT * retry); } } while ((*busy != 0) && (retry < 4)); - + if (*busy == 0) return status; else return SANE_STATUS_IO_ERROR; } -/********************************************************************/ +/********************************************************************/ /* get scanlines from scanner */ -/********************************************************************/ +/********************************************************************/ static SANE_Status read_scan_data(Microtek_Scanner *ms, int lines, - uint8_t *buffer, + uint8_t *buffer, size_t *bufsize) { uint8_t comm[6] = { 0x08, 0, 0, 0, 0, 0 }; @@ -792,15 +792,15 @@ read_scan_data(Microtek_Scanner *ms, comm[2] = (lines >> 16) & 0xFF; comm[3] = (lines >> 8) & 0xFF; comm[4] = (lines) & 0xFF; - + return sanei_scsi_cmd(ms->sfd, comm, 6, buffer, bufsize); } - - -/********************************************************************/ + + +/********************************************************************/ /* download color LUT to scanner (if it takes one) */ -/********************************************************************/ +/********************************************************************/ static SANE_Status download_gamma(Microtek_Scanner *ms) { @@ -824,7 +824,7 @@ download_gamma(Microtek_Scanner *ms) } max_entry = (1 << bit_depth) - 1; - + DBG(23, ".download_gamma: %d entries of %d bytes, max %d\n", ms->gamma_entries, ms->gamma_entry_size, max_entry); commsize = 10 + (ms->gamma_entries * ms->gamma_entry_size); @@ -835,7 +835,7 @@ download_gamma(Microtek_Scanner *ms) return SANE_STATUS_NO_MEM; } data = comm + 10; - + comm[0] = 0x55; comm[1] = 0; comm[2] = 0x27; @@ -873,9 +873,9 @@ download_gamma(Microtek_Scanner *ms) do { SANE_Int *pl_lut; switch (pl) { - case 1: pl_lut = ms->red_lut; break; - case 2: pl_lut = ms->green_lut; break; - case 3: pl_lut = ms->blue_lut; break; + case 1: pl_lut = ms->red_lut; break; + case 2: pl_lut = ms->green_lut; break; + case 3: pl_lut = ms->blue_lut; break; default: DBG(23, ".download_gamma: uh, exceeded pl bound!\n"); free(comm); @@ -906,7 +906,7 @@ download_gamma(Microtek_Scanner *ms) if (ms->val[OPT_GAMMA_BIND].w == SANE_TRUE) { double gamma = SANE_UNFIX(ms->val[OPT_ANALOG_GAMMA].w); for (i=0; i<ms->gamma_entries; i++) { - int val = (max_entry * + int val = (max_entry * pow((double) i / ((double) ms->gamma_entries - 1.0), 1.0 / gamma)); switch (ms->gamma_entry_size) { @@ -931,7 +931,7 @@ download_gamma(Microtek_Scanner *ms) default: gamma = 1.0; break; /* should never happen */ } for (i=0; i<ms->gamma_entries; i++) { - int val = (max_entry * + int val = (max_entry * pow((double) i / ((double) ms->gamma_entries - 1.0), 1.0 / gamma)); switch (ms->gamma_entry_size) { @@ -949,15 +949,15 @@ download_gamma(Microtek_Scanner *ms) pl++; } while ((pl < 4) && (status == SANE_STATUS_GOOD)); } - } else { + } else { /***** No custom Gamma *****/ DBG(23, ".download_gamma: by default\n"); for (i=0; i<ms->gamma_entries; i++) { /* int val = (((double) max_entry * (double) i / ((double) ms->gamma_entries - 1.0)) + 0.5); ROUNDING????*/ - int val = + int val = (double) max_entry * (double) i / - ((double) ms->gamma_entries - 1.0); + ((double) ms->gamma_entries - 1.0); switch (ms->gamma_entry_size) { case 1: data[i] = (uint8_t) val; @@ -975,9 +975,9 @@ download_gamma(Microtek_Scanner *ms) } -/********************************************************************/ +/********************************************************************/ /* magic command to start calibration */ -/********************************************************************/ +/********************************************************************/ static SANE_Status start_calibration(Microtek_Scanner *ms) { @@ -985,7 +985,7 @@ start_calibration(Microtek_Scanner *ms) DBG(23, ".start_calibrate...\n"); if (DBG_LEVEL >= 192) { - int i; + int i; #if 0 fprintf(stderr, "STCal:"); for (i=0;i<8;i++) fprintf(stderr, "%2x ", comm[i]); @@ -995,14 +995,14 @@ start_calibration(Microtek_Scanner *ms) for (i=0;i<8;i++) MDBG_ADD("%2x ", comm[i]); MDBG_FINISH(192); } - return sanei_scsi_cmd(ms->sfd, comm, 8, 0, 0); + return sanei_scsi_cmd(ms->sfd, comm, 8, 0, 0); } - -/********************************************************************/ + +/********************************************************************/ /* magic command to download calibration values */ -/********************************************************************/ +/********************************************************************/ static SANE_Status download_calibration(Microtek_Scanner *ms, uint8_t *comm, uint8_t letter, int linewidth) @@ -1042,7 +1042,7 @@ download_calibration(Microtek_Scanner *ms, uint8_t *comm, /********************************************************************/ /* Initialize the options registry */ /********************************************************************/ -static SANE_Status +static SANE_Status init_options(Microtek_Scanner *ms) { int i; @@ -1136,7 +1136,7 @@ init_options(Microtek_Scanner *ms) sod[OPT_NEGATIVE].title = SANE_TITLE_NEGATIVE; sod[OPT_NEGATIVE].desc = SANE_DESC_NEGATIVE; sod[OPT_NEGATIVE].type = SANE_TYPE_BOOL; - sod[OPT_NEGATIVE].cap |= + sod[OPT_NEGATIVE].cap |= (ms->dev->info.modes & MI_MODES_NEGATIVE) ? 0 : SANE_CAP_INACTIVE; val[OPT_NEGATIVE].w = SANE_FALSE; @@ -1171,7 +1171,7 @@ init_options(Microtek_Scanner *ms) source_list[i] = NULL; sod[OPT_SOURCE].constraint.string_list = source_list; sod[OPT_SOURCE].size = max_string_size(source_list); - if (i < 2) + if (i < 2) sod[OPT_SOURCE].cap |= SANE_CAP_INACTIVE; val[OPT_SOURCE].s = strdup(source_list[0]); } @@ -1179,7 +1179,7 @@ init_options(Microtek_Scanner *ms) sod[OPT_PREVIEW].name = SANE_NAME_PREVIEW; sod[OPT_PREVIEW].title = SANE_TITLE_PREVIEW; sod[OPT_PREVIEW].desc = SANE_DESC_PREVIEW; - sod[OPT_PREVIEW].type = SANE_TYPE_BOOL; + sod[OPT_PREVIEW].type = SANE_TYPE_BOOL; sod[OPT_PREVIEW].unit = SANE_UNIT_NONE; sod[OPT_PREVIEW].size = sizeof(SANE_Word); val[OPT_PREVIEW].w = SANE_FALSE; @@ -1224,10 +1224,10 @@ init_options(Microtek_Scanner *ms) sod[OPT_BR_Y].unit = SANE_UNIT_MM; sod[OPT_BR_Y].size = sizeof(SANE_Word); sod[OPT_BR_Y].constraint_type = SANE_CONSTRAINT_RANGE; - - sod[OPT_TL_X].constraint.range = + + sod[OPT_TL_X].constraint.range = sod[OPT_BR_X].constraint.range = &(ms->dev->info.doc_x_range); - sod[OPT_TL_Y].constraint.range = + sod[OPT_TL_Y].constraint.range = sod[OPT_BR_Y].constraint.range = &(ms->dev->info.doc_y_range); /* set default scan region to be maximum size */ @@ -1262,7 +1262,7 @@ init_options(Microtek_Scanner *ms) sod[OPT_BRIGHTNESS].type = SANE_TYPE_INT; sod[OPT_BRIGHTNESS].unit = SANE_UNIT_PERCENT; sod[OPT_BRIGHTNESS].size = sizeof(SANE_Word); - sod[OPT_BRIGHTNESS].cap |= + sod[OPT_BRIGHTNESS].cap |= ((ms->dev->info.extra_cap & MI_EXCAP_OFF_CTL) ? 0: SANE_CAP_INACTIVE); sod[OPT_BRIGHTNESS].constraint_type = SANE_CONSTRAINT_RANGE; sod[OPT_BRIGHTNESS].constraint.range = &brightness_range; @@ -1308,8 +1308,8 @@ init_options(Microtek_Scanner *ms) } else { sod[OPT_HIGHLIGHT].cap |= SANE_CAP_INACTIVE; sod[OPT_SHADOW].cap |= SANE_CAP_INACTIVE; - } - + } + sod[OPT_MIDTONE].name = "midtone"; sod[OPT_MIDTONE].title = "Midtone Level"; sod[OPT_MIDTONE].desc = "Midtone Level"; @@ -1465,7 +1465,7 @@ init_options(Microtek_Scanner *ms) if (!(ms->do_real_calib)) { sod[OPT_CALIB_ONCE].cap |= SANE_CAP_INACTIVE; val[OPT_CALIB_ONCE].w = SANE_FALSE; - } else + } else val[OPT_CALIB_ONCE].w = SANE_TRUE; /* @@ -1499,7 +1499,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) 0x32,0x2e,0x33,0x30,0x53,0x43,0x53,0x49,0x20,0x46,0x2f,0x57,0x56,0x33,0x2e,0x31, 0x20,0x43,0x54,0x4c,0x35,0x33,0x38,0x30,0x03,0x4f,0x8c,0xc5,0x00,0xee,0x5b,0x43, 0x01,0x01,0x02,0x00,0x00,0x03,0x00,0x01,0x00,0x4a,0x01,0x04,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff }; #endif DBG(15, "parse_inquiry...\n"); @@ -1511,14 +1511,14 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) mi->model_name[16] = 0; mi->revision_num[4] = 0; mi->vendor_string[20] = 0; - + mi->device_type = (SANE_Byte)(result[0] & 0x1f); mi->SCSI_firmware_ver_major = (SANE_Byte)((result[1] & 0xf0) >> 4); mi->SCSI_firmware_ver_minor = (SANE_Byte)(result[1] & 0x0f); mi->scanner_firmware_ver_major = (SANE_Byte)((result[2] & 0xf0) >> 4); mi->scanner_firmware_ver_minor = (SANE_Byte)(result[2] & 0x0f); mi->response_data_format = (SANE_Byte)(result[3]); - + mi->res_step = (SANE_Byte)(result[56] & 0x03); mi->modes = (SANE_Byte)(result[57]); mi->pattern_count = (SANE_Int)(result[58] & 0x7f); @@ -1526,7 +1526,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) mi->feed_type = (SANE_Byte)(result[59] & 0x0F); mi->compress_type = (SANE_Byte)(result[59] & 0x30); mi->unit_type = (SANE_Byte)(result[59] & 0xC0); - + mi->doc_size_code = (SANE_Byte)result[60]; /* we'll compute the max sizes after we know base resolution... */ @@ -1536,7 +1536,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) mi->cont_settings = (SANE_Int)(result[72]); mi->min_contrast = -42; mi->max_contrast = (mi->cont_settings * 7) - 49; - + mi->exp_settings = (SANE_Int)(result[61] & 0x0f); if ((SANE_Int)(result[73])) mi->exp_settings = (SANE_Int)(result[73]); @@ -1548,7 +1548,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) mi->max_contrast = 49; if (mi->contrast_vals) mi->max_contrast = (mi->contrast_vals * 7) - 49; - + mi->exposure_vals = (SANE_Int)(result[73]); mi->min_exposure = -18; mi->max_exposure = 21; @@ -1606,7 +1606,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) mi->max_x = 8.5 * mi->base_resolution - 1; mi->max_y = 14.0 * mi->base_resolution - 1; break; - case 0x01: + case 0x01: mi->max_x = 8.5 * mi->base_resolution - 1; mi->max_y = 11.0 * mi->base_resolution - 1; break; @@ -1625,15 +1625,15 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) case 0x05: mi->max_x = 8.3 * mi->base_resolution - 1; mi->max_y = 14.0 * mi->base_resolution - 1; - break; + break; case 0x06: mi->max_x = 8.3 * mi->base_resolution - 1; mi->max_y = 13.5 * mi->base_resolution - 1; - break; + break; case 0x07: mi->max_x = 8.0 * mi->base_resolution - 1; mi->max_y = 14.0 * mi->base_resolution - 1; - break; + break; case 0x80: /* Slide format, size is mm */ mi->max_x = (35.0 / MM_PER_INCH) * mi->base_resolution - 1; @@ -1666,9 +1666,9 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) mi->doc_y_range.max = SANE_FIX((float)mi->max_y / base_res_dpmm); mi->doc_y_range.quant = SANE_FIX(0); } - - mi->source_options = (SANE_Byte)(result[63]); - + + mi->source_options = (SANE_Byte)(result[63]); + mi->expanded_resolution = (result[64] & 0x01); /* my E6 reports exp-res capability incorrectly */ if ((mi->model_code == 0x66) || (mi->model_code == 0x63)) { @@ -1685,27 +1685,27 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) mi->enhance_cap = (result[65] & 0x03); - /* + /* switch (result[66] & 0x0F) { case 0x00: mi->max_lookup_size = 0; break; case 0x01: mi->max_lookup_size = 256; break; case 0x03: mi->max_lookup_size = 1024; break; case 0x05: mi->max_lookup_size = 4096; break; case 0x09: mi->max_lookup_size = 65536; break; - default: + default: mi->max_lookup_size = 0; DBG(15, "parse_inquiry: Unknown gamma LUT size! 0x%x\n", result[66]); } */ - + /* This is not how the vague documentation specifies this register. We're going to take it literally here -- i.e. if the bit is set, the scanner supports the value, otherwise it doesn't. (The docs say all lower values are always supported. This is - not the case for the StudioScan IIsi, at least, which only + not the case for the StudioScan IIsi, at least, which only specifies 0x02==1024-byte table, and only supports that, too.) - + All-in-all, it doesn't matter, since we take the largest allowed LUT size anyway. */ @@ -1717,7 +1717,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) mi->max_lookup_size = 1024; else if (result[66] & 0x01) mi->max_lookup_size = 256; - else + else mi->max_lookup_size = 0; /* my E6 reports incorrectly */ @@ -1748,13 +1748,13 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) DBG(15, "parse_inquiry: Unknown gamma max val! 0x%x\n", result[66]); } - + mi->fast_color_preview = (SANE_Byte)(result[67] & 0x01); mi->xfer_format_select = (SANE_Byte)(result[68] & 0x01); mi->color_sequence = (SANE_Byte)(result[69] & 0x7f); mi->does_3pass = (SANE_Byte)(!(result[69] & 0x80)); mi->does_mode1 = (SANE_Byte)(result[71] & 0x01); - + mi->bit_formats = (SANE_Byte)(result[74] & 0x0F); mi->extra_cap = (SANE_Byte)(result[75] & 0x07); @@ -1780,7 +1780,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result) /********************************************************************/ /* Dump all we know about scanner to stderr */ /********************************************************************/ -static SANE_Status +static SANE_Status dump_inquiry(Microtek_Info *mi, unsigned char *result) { int i; @@ -1802,12 +1802,12 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result) mi->vendor_id, mi->model_name); DBG(1, "Vendor Specific String: '%s'\n", mi->vendor_string); DBG(1, "Firmware Rev: '%s'\n", mi->revision_num); - DBG(1, + DBG(1, "SCSI F/W version: %1d.%1d Scanner F/W version: %1d.%1d\n", mi->SCSI_firmware_ver_major, mi->SCSI_firmware_ver_minor, mi->scanner_firmware_ver_major, mi->scanner_firmware_ver_minor); DBG(1, "Response data format: 0x%02x\n", mi->response_data_format); - + DBG(1, "===== Imaging Capabilities...\n"); DBG(1, "Modes: %s%s%s%s%s%s%s\n", (mi->modes & MI_MODES_LINEART) ? "Lineart " : "", @@ -1817,7 +1817,7 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result) (mi->modes & MI_MODES_TRANSMSV) ? "(X-msv) " : "", (mi->modes & MI_MODES_ONEPASS) ? "(OnePass) " : "", (mi->modes & MI_MODES_NEGATIVE) ? "(Negative) " : ""); - DBG(1, + DBG(1, "Resolution Step Sizes: %s%s Expanded Resolution Support? %s%s\n", (mi->res_step & MI_RESSTEP_1PER) ? "1% " : "", (mi->res_step & MI_RESSTEP_5PER) ? "5%" : "", @@ -1849,11 +1849,11 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result) DBG(1, "Digital brightness/offset? %s\n", (mi->extra_cap & MI_EXCAP_OFF_CTL) ? "yes" : "no"); /* - fprintf(stderr, + fprintf(stderr, "Gamma Table Size: %d entries of %d bytes (max. value: %d)\n", mi->max_lookup_size, mi->gamma_size, mi->max_gamma_val); */ - DBG(1, + DBG(1, "Gamma Table Size: %d entries of %d bytes (max. depth: %d)\n", mi->max_lookup_size, mi->gamma_size, mi->max_gamma_bit_depth); @@ -1861,7 +1861,7 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result) DBG(1, "Feed type: %s%s ADF support? %s\n", (mi->feed_type & MI_FEED_FLATBED) ? "flatbed " : "", (mi->feed_type & MI_FEED_EDGEFEED) ? "edge-feed " : "", - (mi->feed_type & MI_FEED_AUTOSUPP) ? "yes" : "no"); + (mi->feed_type & MI_FEED_AUTOSUPP) ? "yes" : "no"); DBG(1, "Document Feeder Support? %s Feeder Backtracking? %s\n", (mi->source_options & MI_SRC_FEED_SUPP) ? "yes" : "no ", (mi->source_options & MI_SRC_FEED_BT) ? "yes" : "no "); @@ -1882,15 +1882,15 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result) (mi->xfer_format_select) ? "yes" : "no"); MDBG_INIT("Color Transfer Sequence: "); switch (mi->color_sequence) { - case MI_COLSEQ_PLANE: + case MI_COLSEQ_PLANE: MDBG_ADD("plane-by-plane (3-pass)"); break; - case MI_COLSEQ_PIXEL: + case MI_COLSEQ_PIXEL: MDBG_ADD("pixel-by-pixel RGB"); break; case MI_COLSEQ_RGB: MDBG_ADD("line-by-line, R-G-B sequence"); break; case MI_COLSEQ_NONRGB: MDBG_ADD("line-by-line, non-sequential with headers"); break; - case MI_COLSEQ_2PIXEL: + case MI_COLSEQ_2PIXEL: MDBG_ADD("2pixel-by-2pixel RRGGBB"); break; default: MDBG_ADD("UNKNOWN CODE (0x%02x)", mi->color_sequence); @@ -1905,7 +1905,7 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result) (mi->extra_cap & MI_EXCAP_DIS_LNTBL) ? "yes" : "no"); DBG(1, "Can Disable Start-of-Scan Recalibration? %s\n", (mi->extra_cap & MI_EXCAP_DIS_RECAL) ? "yes" : "no"); - + DBG(1, "Internal expanded expansion? %s\n", mi->does_expansion ? "yes" : "no"); /* @@ -1922,7 +1922,7 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result) /********************************************************************/ /* Dump all we know about some unknown scanner to stderr */ /********************************************************************/ -static SANE_Status +static SANE_Status dump_suspect_inquiry(unsigned char *result) { int i; @@ -1953,7 +1953,7 @@ dump_suspect_inquiry(unsigned char *result) strncpy(revision_num, (char *)&result[32], 4); vendor_id[8] = 0; model_name[16] = 0; - revision_num[5] = 0; + revision_num[5] = 0; device_type = (SANE_Byte)(result[0] & 0x1f); SCSI_firmware_ver_major = (SANE_Byte)((result[1] & 0xf0) >> 4); SCSI_firmware_ver_minor = (SANE_Byte)(result[1] & 0x0f); @@ -1969,7 +1969,7 @@ dump_suspect_inquiry(unsigned char *result) DBG(1, "Vendor Name: '%s' Model Name: '%s'\n", vendor_id, model_name); DBG(1, "Firmware Rev: '%s'\n", revision_num); - DBG(1, + DBG(1, "SCSI F/W version: %1d.%1d Scanner F/W version: %1d.%1d\n", SCSI_firmware_ver_major, SCSI_firmware_ver_minor, scanner_firmware_ver_major, scanner_firmware_ver_minor); @@ -2035,7 +2035,7 @@ id_microtek(uint8_t *result, char **model_string) case 0x5f : *model_string = "ScanMaker E3"; break; case 0x62 : - if (!(strncmp("Polaroid", (char *)&(result[8]), 8))) + if (!(strncmp("Polaroid", (char *)&(result[8]), 8))) *model_string = "Polaroid SprintScan 35/LE"; else *model_string = "ScanMaker 35t+"; @@ -2123,7 +2123,7 @@ id_microtek(uint8_t *result, char **model_string) /********************************************************************/ /* Try to attach a device as a Microtek scanner */ /********************************************************************/ -static SANE_Status +static SANE_Status attach_scanner(const char *devicename, Microtek_Device **devp) { Microtek_Device *dev; @@ -2165,7 +2165,7 @@ attach_scanner(const char *devicename, Microtek_Device **devp) if (DBG_LEVEL >= 5) dump_suspect_inquiry(result); return SANE_STATUS_INVAL; } - + dev=malloc(sizeof(*dev)); if (!dev) return SANE_STATUS_NO_MEM; memset(dev, 0, sizeof(*dev)); @@ -2217,7 +2217,7 @@ static SANE_Status end_scan(Microtek_Scanner *s, SANE_Status ostat) /* stop the scanner */ if (s->scan_started) { status = stop_scan(s); - if (status != SANE_STATUS_GOOD) + if (status != SANE_STATUS_GOOD) DBG(23, "end_scan: OY! on stop_scan\n"); s->scan_started = SANE_FALSE; } @@ -2285,7 +2285,7 @@ static void sort_values(int *result, uint8_t *scanline[], int pix) /********************************************************************/ -static void calc_calibration(uint8_t *caldata, uint8_t *scanline[], +static void calc_calibration(uint8_t *caldata, uint8_t *scanline[], int pixels) { int i,j; @@ -2303,14 +2303,14 @@ static void calc_calibration(uint8_t *caldata, uint8_t *scanline[], q3 = sorted[STRIPS * 3 / 4]; /* third quartile */ bot = q1 - 3 * (q3 - q1) / 2; /* quick'n'easy bounds */ top = q3 + 3 * (q3 - q1) / 2; - + for (j=0; j<STRIPS; j++) { if ((sorted[j] >= bot) && (sorted[j] <= top)) { sum += sorted[j]; count++; } } - if (count) + if (count) caldata[i] = (sum + (count / 2)) / count; else { DBG(23, "zero: i=%d b/t=%d/%d ", i, bot, top); @@ -2343,9 +2343,9 @@ static SANE_Status do_real_calibrate(Microtek_Scanner *s) uint8_t letter; int i, spot; int nmax, ntoget, nleft; - + DBG(10, "do_real_calibrate...\n"); - + /* tell scanner to read it's little chart */ if ((status = start_calibration(s)) != SANE_STATUS_GOOD) return status; if ((status = get_scan_status(s, &busy, &linewidth, &lines)) @@ -2372,7 +2372,7 @@ static SANE_Status do_real_calibrate(Microtek_Scanner *s) buffsize = ntoget * 3 * linewidth; DBG(23, "...nleft %d toget %d size %lu spot %d input+spot %p\n", nleft, ntoget, (u_long) buffsize, spot, input+spot); - if ((statusA = read_scan_data(s, ntoget, input+spot, &buffsize)) + if ((statusA = read_scan_data(s, ntoget, input+spot, &buffsize)) != SANE_STATUS_GOOD) { DBG(23, "...read scan failed\n"); break; @@ -2409,7 +2409,7 @@ static SANE_Status do_real_calibrate(Microtek_Scanner *s) switch (letter) { case 'R': letter = 'G'; break; case 'G': letter = 'B'; break; - case 'B': + case 'B': default: letter = 'X'; break; } } @@ -2431,9 +2431,9 @@ static SANE_Status do_precalibrate(SANE_Handle handle) Microtek_Scanner *s = handle; SANE_Status status, statusA; SANE_Int busy, linewidth, lines; - + DBG(10, "do_precalibrate...\n"); - + if ((status = wait_ready(s)) != SANE_STATUS_GOOD) return status; { SANE_Int y1 = s->y1; @@ -2441,7 +2441,7 @@ static SANE_Status do_precalibrate(SANE_Handle handle) /* some small range, but large enough to cause the scanner to think it'll scan *something*... */ s->y1 = 0; - s->y2 = + s->y2 = (s->resolution > s->dev->info.base_resolution) ? 4 : 4 * s->dev->info.base_resolution / s->resolution; status = scanning_frame(s); @@ -2450,7 +2450,7 @@ static SANE_Status do_precalibrate(SANE_Handle handle) if (status != SANE_STATUS_GOOD) return status; } - if (s->dev->info.source_options & + if (s->dev->info.source_options & (MI_SRC_FEED_BT | MI_SRC_HAS_TRANS | MI_SRC_FEED_SUPP | MI_SRC_HAS_FEED)) { /* ZZZZZZZZZZZ */ if ((status = accessory(s)) != SANE_STATUS_GOOD) return status; @@ -2465,10 +2465,10 @@ static SANE_Status do_precalibrate(SANE_Handle handle) s->allow_calibrate = allow_calibrate; if (status != SANE_STATUS_GOOD) return status; } - + if ((status = wait_ready(s)) != SANE_STATUS_GOOD) return status; if ((status = start_scan(s)) != SANE_STATUS_GOOD) return status; - if ((statusA = get_scan_status(s, &busy, + if ((statusA = get_scan_status(s, &busy, &linewidth, &lines)) != SANE_STATUS_GOOD) { DBG(10, "do_precalibrate: get_scan_status fails\n"); } @@ -2492,7 +2492,7 @@ static SANE_Status finagle_precal(SANE_Handle handle) int match; /* try to check if scanner has been reset */ - /* if so, calibrate it + /* if so, calibrate it (either for real, or via a fake scan, with calibration */ /* (but only bother if you *could* disable calibration) */ DBG(23, "finagle_precal...\n"); @@ -2523,7 +2523,7 @@ static SANE_Status finagle_precal(SANE_Handle handle) } else s->precal_record = MS_PRECAL_GRAY; } else - DBG(23, "finagle_precal: no precalibrate necessary.\n"); + DBG(23, "finagle_precal: no precalibrate necessary.\n"); } return SANE_STATUS_GOOD; } @@ -2544,7 +2544,7 @@ set_pass_parameters (SANE_Handle handle) switch (s->this_pass) { case 1: s->filter = MS_FILT_RED; - s->params.format = SANE_FRAME_RED; + s->params.format = SANE_FRAME_RED; s->params.last_frame = SANE_FALSE; break; case 2: @@ -2552,7 +2552,7 @@ set_pass_parameters (SANE_Handle handle) s->params.format = SANE_FRAME_GREEN; s->params.last_frame = SANE_FALSE; break; - case 3: + case 3: s->filter = MS_FILT_BLUE; s->params.format = SANE_FRAME_BLUE; s->params.last_frame = SANE_TRUE; @@ -2588,7 +2588,7 @@ static SANE_Status pack_flat_data(Microtek_Scanner *s, size_t nlines) size_t nbytes = nlines * rb->bpl; size_t start = (rb->head_complete + rb->complete_count) % rb->size; - size_t max_xfer = + size_t max_xfer = (start < rb->head_complete) ? (rb->head_complete - start) : (rb->size - start + rb->head_complete); @@ -2616,14 +2616,14 @@ static SANE_Status pack_flat_data(Microtek_Scanner *s, size_t nlines) size_t i; double x1, x2, n1, n2; for (i = 0, x1 = 0.0, x2 = s->exp_aspect, n1 = 0.0, n2 = floor(x2); - i < rb->bpl; + i < rb->bpl; i++) { byte = 0; - for (bit=0; - bit < 8; + for (bit=0; + bit < 8; bit++, x1 = x2, n1 = n2, x2 += s->exp_aspect, n2 = floor(x2)) { /* #define getbit(byte, index) (((byte)>>(index))&1) */ - byte |= + byte |= (( (x2 == n2) ? (((sb[(int)n1 / 8])>>(7 - ((int)n1) % 8))&1) : @@ -2638,13 +2638,13 @@ static SANE_Status pack_flat_data(Microtek_Scanner *s, size_t nlines) sb += s->pixel_bpl; } } else { /* multibit scan (8 is assumed!) */ - for (line=0; line<nlines; line++) { + for (line=0; line<nlines; line++) { double x1, x2, n1, n2; int i; for (i = 0, x1 = 0.0, x2 = s->exp_aspect, n1 = 0.0, n2 = floor(x2); - i < s->dest_ppl; + i < s->dest_ppl; i++, x1 = x2, n1 = n2, x2 += s->exp_aspect, n2 = floor(x2)) { - db[pos] = + db[pos] = (x2 == n2) ? sb[(int)n1] : (int)(((double)sb[(int)n1] * (n2 - x1) + @@ -2683,12 +2683,12 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines) size_t completed; size_t spot; SANE_Byte id; - + { size_t ar, ag, ab; /* allowed additions */ size_t dr, dg, db; /* additions which will occur */ SANE_Status status; - + dr = dg = db = nlines * rb->bpl; ar = rb->size - (rb->complete_count + rb->red_extra * 3); ag = rb->size - (rb->complete_count + rb->green_extra * 3); @@ -2700,7 +2700,7 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines) if ((dr > ar) || (dg > ag) || (db > ab)) { - size_t increase = 0; + size_t increase = 0; if (dr > ar) increase = (dr - ar); if (dg > ag) increase = MAX(increase, (dg - ag)); if (db > ab) increase = MAX(increase, (db - ab)); @@ -2725,9 +2725,9 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines) int i; double x1, x2, n1, n2; for (i = 0, x1 = 0.0, x2 = s->exp_aspect, n1 = 0.0, n2 = floor(x2); - i < s->dest_ppl; + i < s->dest_ppl; i++, x1 = x2, n1 = n2, x2 += s->exp_aspect, n2 = floor(x2)) { - db[spot] = + db[spot] = (x2 == n2) ? sb[(int)n1] : (int)(((double)sb[(int)n1] * (n2 - x1) + @@ -2756,9 +2756,9 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines) rb->red_extra -= completed; rb->green_extra -= completed; rb->blue_extra -= completed; - + DBG(18, "pack_seq: extra r: %lu g: %lu b: %lu\n", - (u_long)rb->red_extra, + (u_long)rb->red_extra, (u_long)rb->green_extra, (u_long)rb->blue_extra); DBG(18, "pack_seq: completed: %lu complete: %lu\n", @@ -2767,21 +2767,21 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines) return SANE_STATUS_GOOD; } - + /********************************************************************/ /* Process non-sequential R,G, and B scan-lines */ /********************************************************************/ static SANE_Status pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines) { - ring_buffer *rb = s->rb; + ring_buffer *rb = s->rb; unsigned int seg; /* , i;*/ SANE_Byte *db; SANE_Byte *sb = s->scsi_buffer; size_t completed; size_t spot; SANE_Byte id; - + /* prescan to decide if ring should be expanded */ { size_t ar, ag, ab; /* allowed additions */ @@ -2790,7 +2790,7 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines) SANE_Byte *pt; for (dr = dg = db = 0, seg = 0, pt = s->scsi_buffer + 1; - seg < nlines * 3; + seg < nlines * 3; seg++, pt += s->ppl + 2) { switch (*pt) { case 'R': dr += rb->bpl; break; @@ -2809,7 +2809,7 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines) if ((dr > ar) || (dg > ag) || (db > ab)) { - size_t increase = 0; + size_t increase = 0; if (dr > ar) increase = (dr - ar); if (dg > ag) increase = MAX(increase, (dg - ag)); if (db > ab) increase = MAX(increase, (db - ab)); @@ -2838,9 +2838,9 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines) int i; double x1, x2, n1, n2; for (i = 0, x1 = 0.0, x2 = s->exp_aspect, n1 = 0.0, n2 = floor(x2); - i < s->dest_ppl; + i < s->dest_ppl; i++, x1 = x2, n1 = n2, x2 += s->exp_aspect, n2 = floor(x2)) { - db[spot] = + db[spot] = (x2 == n2) ? sb[(int)n1] : (int)(((double)sb[(int)n1] * (n2 - x1) + @@ -2868,9 +2868,9 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines) rb->red_extra -= completed; rb->green_extra -= completed; rb->blue_extra -= completed; - + DBG(18, "pack_goofy: extra r: %lu g: %lu b: %lu\n", - (u_long)rb->red_extra, + (u_long)rb->red_extra, (u_long)rb->green_extra, (u_long)rb->blue_extra); DBG(18, "pack_goofy: completed: %lu complete: %lu\n", @@ -2878,7 +2878,7 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines) return SANE_STATUS_GOOD; } - + /********************************************************************/ @@ -2891,14 +2891,14 @@ pack_seq2r2g2b_data(Microtek_Scanner *s, size_t nlines) SANE_Status status; ring_buffer *rb = s->rb; size_t nbytes = nlines * rb->bpl; - + size_t start = (rb->head_complete + rb->complete_count) % rb->size; - size_t max_xfer = + size_t max_xfer = (start < rb->head_complete) ? (rb->head_complete - start) : (rb->size - start + rb->head_complete); size_t length = MIN(nbytes, max_xfer); - + if (nbytes > max_xfer) { DBG(23, "pack_2r2g2b: must expand ring, %lu + %lu\n", (u_long)rb->size, (u_long)(nbytes - max_xfer)); @@ -2908,7 +2908,7 @@ pack_seq2r2g2b_data(Microtek_Scanner *s, size_t nlines) { unsigned int line; int p; - size_t pos = start; + size_t pos = start; SANE_Byte *sb = s->scsi_buffer; SANE_Byte *db = rb->base; @@ -2968,11 +2968,11 @@ read_from_scanner (Microtek_Scanner *s, int *nlines) DBG(18, "read_from_scanner: no gss/no unscanned\n"); remaining = 0; } - + *nlines = MIN(remaining, s->max_scsi_lines); DBG(18, "sane_read: max_scsi: %d, rem: %d, nlines: %d\n", s->max_scsi_lines, remaining, *nlines); - + /* grab them bytes! (only if the scanner still has bytes to give...) */ if (*nlines > 0) { buffsize = *nlines * (s->pixel_bpl + s->header_bpl);/* == "* linewidth" */ @@ -3002,7 +3002,7 @@ pack_into_ring(Microtek_Scanner *s, int nlines) switch (s->line_format) { case MS_LNFMT_FLAT: status = pack_flat_data(s, nlines); break; - case MS_LNFMT_SEQ_RGB: + case MS_LNFMT_SEQ_RGB: status = pack_seqrgb_data(s, nlines); break; case MS_LNFMT_GOOFY_RGB: status = pack_goofyrgb_data(s, nlines); break; @@ -3081,13 +3081,13 @@ sane_init(SANE_Int *version_code, SANE_Auth_Callback authorize) DBG(23, "sane_init: config-> %s\n", dev_name); if (dev_name[0] == '#') continue; /* ignore comments */ if (!(strncmp("noprecal", dev_name, 8))) { - DBG(23, + DBG(23, "sane_init: Clever Precalibration will be forcibly disabled...\n"); inhibit_clever_precal = SANE_TRUE; continue; } if (!(strncmp("norealcal", dev_name, 9))) { - DBG(23, + DBG(23, "sane_init: Real calibration will be forcibly disabled...\n"); inhibit_real_calib = SANE_TRUE; continue; @@ -3106,7 +3106,7 @@ sane_init(SANE_Int *version_code, SANE_Auth_Callback authorize) /* sane_get_devices */ /********************************************************************/ SANE_Status -sane_get_devices(const SANE_Device ***device_list, +sane_get_devices(const SANE_Device ***device_list, SANE_Bool local_only) { Microtek_Device *dev; @@ -3168,14 +3168,14 @@ sane_open(SANE_String_Const devicename, /* initialize scanner dependent stuff */ DBG(23, "sane_open: initialize scanner dependent stuff...\n"); /* ZZZZZZZZZZZZZZ */ - scanner->unit_type = + scanner->unit_type = (dev->info.unit_type & MI_UNIT_PIXELS) ? MS_UNIT_PIXELS : MS_UNIT_18INCH; scanner->res_type = (dev->info.res_step & MI_RESSTEP_1PER) ? MS_RES_1PER : MS_RES_5PER; - scanner->midtone_support = + scanner->midtone_support = (dev->info.enhance_cap & MI_ENH_CAP_MIDTONE) ? SANE_TRUE : SANE_FALSE; - scanner->paper_length = - (scanner->unit_type == MS_UNIT_PIXELS) ? + scanner->paper_length = + (scanner->unit_type == MS_UNIT_PIXELS) ? dev->info.max_y : (SANE_Int)((double)dev->info.max_y * 8.0 / (double)dev->info.base_resolution); @@ -3202,7 +3202,7 @@ sane_open(SANE_String_Const devicename, scanner->do_clever_precal = SANE_TRUE; } else { DBG(23, "sane_open: All calibration routines disabled.\n"); - scanner->allow_calibrate = SANE_TRUE; + scanner->allow_calibrate = SANE_TRUE; scanner->do_real_calib = SANE_FALSE; scanner->do_clever_precal = SANE_FALSE; } @@ -3227,7 +3227,7 @@ sane_open(SANE_String_Const devicename, scanner->gray_lut = calloc(scanner->gamma_entries, sizeof(scanner->gray_lut[0])); - scanner->red_lut = calloc(scanner->gamma_entries, + scanner->red_lut = calloc(scanner->gamma_entries, sizeof(scanner->red_lut[0])); scanner->green_lut = calloc(scanner->gamma_entries, sizeof(scanner->green_lut[0])); @@ -3246,7 +3246,7 @@ sane_open(SANE_String_Const devicename, free(scanner->blue_lut); } for (j=0; j<scanner->gamma_entries; j += scanner->gamma_entry_size) { - v = (SANE_Int) + v = (SANE_Int) ((double) j * (double) max_entry / ((double) scanner->gamma_entries - 1.0) + 0.5); scanner->gray_lut[j] = v; @@ -3278,7 +3278,7 @@ sane_open(SANE_String_Const devicename, /* clear out that clever cache, so it doesn't match anything */ { int j; - for (j=0; j<10; j++) + for (j=0; j<10; j++) scanner->mode_sense_cache[j] = 0; scanner->precal_record = MS_PRECAL_NONE; } @@ -3347,7 +3347,7 @@ sane_get_option_descriptor (SANE_Handle handle, /********************************************************************/ /* sane_control_option */ /********************************************************************/ -SANE_Status +SANE_Status sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action, @@ -3429,12 +3429,12 @@ sane_control_option (SANE_Handle handle, return SANE_STATUS_INVAL; } break; - + case SANE_ACTION_SET_VALUE: { status = sanei_constrain_value(sod + option, value, info); if (status != SANE_STATUS_GOOD) return status; - + switch (option) { /* set word options... */ case OPT_TL_X: @@ -3444,6 +3444,7 @@ sane_control_option (SANE_Handle handle, case OPT_RESOLUTION: if (info) *info |= SANE_INFO_RELOAD_PARAMS; + // fall through case OPT_SPEED: case OPT_PREVIEW: case OPT_BACKTRACK: @@ -3457,12 +3458,12 @@ sane_control_option (SANE_Handle handle, case OPT_ANALOG_GAMMA_B: val[option].w = *(SANE_Word *)value; return SANE_STATUS_GOOD; - + case OPT_HIGHLIGHT: case OPT_SHADOW: case OPT_MIDTONE: val[option].w = *(SANE_Word *)value; - /* we need to (silently) make sure shadow <= midtone <= highlight */ + /* we need to (silently) make sure shadow <= midtone <= highlight */ if (scanner->midtone_support) { if (val[OPT_SHADOW].w > val[OPT_MIDTONE].w) { if (option == OPT_SHADOW) @@ -3514,7 +3515,7 @@ sane_control_option (SANE_Handle handle, val[option].w = *(SANE_Word *) value; } else if (option == OPT_CUSTOM_GAMMA) { if (val[option].s) { - if (strcmp(value, val[option].s)) + if (strcmp(value, val[option].s)) if (info) *info |= SANE_INFO_RELOAD_OPTIONS; free(val[option].s); } @@ -3526,7 +3527,7 @@ sane_control_option (SANE_Handle handle, sod[OPT_GAMMA_VECTOR_R].cap |= SANE_CAP_INACTIVE; sod[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE; sod[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE; - } + } if ( !(strcmp(val[OPT_CUSTOM_GAMMA].s, M_NONE)) || !(strcmp(val[OPT_CUSTOM_GAMMA].s, M_TABLE)) ) { sod[OPT_ANALOG_GAMMA].cap |= SANE_CAP_INACTIVE; @@ -3565,12 +3566,12 @@ sane_control_option (SANE_Handle handle, else if (!(strcmp(val[OPT_MODE].s, M_COLOR))) sod[OPT_GAMMA_BIND].cap &= ~SANE_CAP_INACTIVE; return SANE_STATUS_GOOD; - - case OPT_MODE: + + case OPT_MODE: if (val[option].s) { if (strcmp(val[option].s, value)) - if (info) + if (info) *info |= SANE_INFO_RELOAD_OPTIONS | SANE_INFO_RELOAD_PARAMS; free(val[option].s); } @@ -3586,7 +3587,7 @@ sane_control_option (SANE_Handle handle, { SANE_Bool Trueness = SANE_TRUE; SANE_Status status; - status = sane_control_option(handle, + status = sane_control_option(handle, OPT_GAMMA_BIND, SANE_ACTION_SET_VALUE, &Trueness, @@ -3619,7 +3620,7 @@ sane_control_option (SANE_Handle handle, } } break; - + case SANE_ACTION_SET_AUTO: return SANE_STATUS_UNSUPPORTED; /* We are DUMB. */ } @@ -3662,7 +3663,7 @@ sane_get_parameters (SANE_Handle handle, s->threepasscolor = SANE_TRUE; s->onepasscolor = SANE_FALSE; s->color_seq = s->dev->info.color_sequence; - } + } } else { /* not color! */ DBG(23, "sane_get_parameters: non-color\n"); s->threepasscolor = SANE_FALSE; @@ -3673,18 +3674,18 @@ sane_get_parameters (SANE_Handle handle, s->transparency = !(strcmp(s->val[OPT_SOURCE].s, M_TRANS)); s->useADF = !(strcmp(s->val[OPT_SOURCE].s, M_AUTOFEED)); /* disallow exp. res. during preview scan XXXXXXXXXXX */ - /*s->expandedresolution = + /*s->expandedresolution = (s->val[OPT_EXP_RES].w) && !(s->val[OPT_PREVIEW].w);*/ s->expandedresolution = (s->val[OPT_EXP_RES].w); s->doexpansion = (s->expandedresolution && !(s->dev->info.does_expansion)); if (s->res_type == MS_RES_1PER) { s->resolution = (SANE_Int)(SANE_UNFIX(s->val[OPT_RESOLUTION].w)); - s->resolution_code = - 0xFF & ((s->resolution * 100) / + s->resolution_code = + 0xFF & ((s->resolution * 100) / s->dev->info.base_resolution / (s->expandedresolution ? 2 : 1)); - DBG(23, "sane_get_parameters: res_code = %d (%2x)\n", + DBG(23, "sane_get_parameters: res_code = %d (%2x)\n", s->resolution_code, s->resolution_code); } else { DBG(23, "sane_get_parameters: 5 percent!!!\n"); @@ -3725,18 +3726,18 @@ sane_get_parameters (SANE_Handle handle, s->pattern = ((i < s->dev->info.pattern_count) ? i : 0); } else s->pattern = 0; - + { /* need to 'round' things properly! XXXXXXXX */ SANE_Int widthpix; double dots_per_mm = s->resolution / MM_PER_INCH; - double units_per_mm = - (s->unit_type == MS_UNIT_18INCH) ? + double units_per_mm = + (s->unit_type == MS_UNIT_18INCH) ? (8.0 / MM_PER_INCH) : /* 1/8 inches */ (s->dev->info.base_resolution / MM_PER_INCH); /* pixels */ - + DBG(23, "sane_get_parameters: dots_per_mm: %f\n", dots_per_mm); DBG(23, "sane_get_parameters: units_per_mm: %f\n", units_per_mm); @@ -3755,22 +3756,22 @@ sane_get_parameters (SANE_Handle handle, /* these are just an estimate... (but *should* be completely accurate) * real values come from scanner after sane_start. */ - if (s->unit_type == MS_UNIT_18INCH) { + if (s->unit_type == MS_UNIT_18INCH) { /* who *knows* what happens */ - widthpix = + widthpix = (SANE_Int)((double)(s->x2 - s->x1 + 1) / 8.0 * (double)s->resolution); - s->params.lines = + s->params.lines = (SANE_Int)((double)(s->y2 - s->y1 + 1) / 8.0 * (double)s->resolution); } else { /* calculate pixels per scanline returned by scanner... */ /* scanner (E6 at least) always seems to return an -even- number of -bytes- */ - if (s->resolution <= s->dev->info.base_resolution) + if (s->resolution <= s->dev->info.base_resolution) widthpix = (SANE_Int)((double)(s->x2 - s->x1 + 1) * - (double)(s->resolution) / + (double)(s->resolution) / (double)(s->dev->info.base_resolution)); else widthpix = (s->x2 - s->x1 + 1); @@ -3784,14 +3785,14 @@ sane_get_parameters (SANE_Handle handle, } DBG(23, "WIDTHPIX: before exp: %d\n", widthpix); /* ok, now fix up expanded-mode conversions */ - if (s->resolution > s->dev->info.base_resolution) + if (s->resolution > s->dev->info.base_resolution) widthpix = (SANE_Int) ((double)widthpix * (double)s->resolution / (double)s->dev->info.base_resolution); s->params.pixels_per_line = widthpix; - s->params.lines = + s->params.lines = (SANE_Int)((double)(s->y2 - s->y1 + 1) * - (double)(s->resolution) / + (double)(s->resolution) / (double)(s->dev->info.base_resolution)); } } @@ -3822,13 +3823,13 @@ sane_get_parameters (SANE_Handle handle, } else { /* a three-pass color scan */ s->params.depth = s->bits_per_color; /* this will be correctly set in sane_start */ - s->params.format = SANE_FRAME_RED; + s->params.format = SANE_FRAME_RED; s->params.bytes_per_line = s->params.pixels_per_line; } break; } - DBG(23, "sane_get_parameters: lines: %d ppl: %d bpl: %d\n", + DBG(23, "sane_get_parameters: lines: %d ppl: %d bpl: %d\n", s->params.lines, s->params.pixels_per_line, s->params.bytes_per_line); /* also fixed in sane_start for multi-pass scans */ @@ -3852,7 +3853,7 @@ sane_start_guts (SANE_Handle handle) Microtek_Scanner *s = handle; SANE_Status status; SANE_Int busy, linewidth; - + DBG(10, "sane_start...\n"); if (s->sfd != -1) { @@ -3863,10 +3864,10 @@ sane_start_guts (SANE_Handle handle) if ((status = sane_get_parameters(s, 0)) != SANE_STATUS_GOOD) return end_scan(s, status); set_pass_parameters(s); - + s->scanning = SANE_TRUE; s->cancel = SANE_FALSE; - + status = sanei_scsi_open(s->dev->sane.name, &(s->sfd), sense_handler, @@ -3877,50 +3878,50 @@ sane_start_guts (SANE_Handle handle) s->sfd = -1; return end_scan(s, status); } - + if ((status = wait_ready(s)) != SANE_STATUS_GOOD) return end_scan(s, status); - if ((status = finagle_precal(s)) != SANE_STATUS_GOOD) + if ((status = finagle_precal(s)) != SANE_STATUS_GOOD) return end_scan(s, status); if ((status = scanning_frame(s)) != SANE_STATUS_GOOD) return end_scan(s, status); - if (s->dev->info.source_options & + if (s->dev->info.source_options & (MI_SRC_FEED_BT | MI_SRC_HAS_TRANS | MI_SRC_FEED_SUPP | MI_SRC_HAS_FEED)) { /* ZZZZZZZZZZZ */ if ((status = accessory(s)) != SANE_STATUS_GOOD) return end_scan(s, status); /* if SWslct ???? XXXXXXXXXXXXXXX */ } - if ((status = download_gamma(s)) != SANE_STATUS_GOOD) + if ((status = download_gamma(s)) != SANE_STATUS_GOOD) return end_scan(s, status); - if ((status = mode_select(s)) != SANE_STATUS_GOOD) + if ((status = mode_select(s)) != SANE_STATUS_GOOD) return end_scan(s, status); if (s->dev->info.does_mode1) { - if ((status = mode_select_1(s)) != SANE_STATUS_GOOD) + if ((status = mode_select_1(s)) != SANE_STATUS_GOOD) return end_scan(s, status); } if ((s->do_clever_precal) || (s->do_real_calib)) { - if ((status = save_mode_sense(s)) != SANE_STATUS_GOOD) + if ((status = save_mode_sense(s)) != SANE_STATUS_GOOD) return end_scan(s, status); - } + } if ((status = wait_ready(s)) != SANE_STATUS_GOOD) return end_scan(s, status); s->scan_started = SANE_TRUE; if ((status = start_scan(s)) != SANE_STATUS_GOOD) return end_scan(s, status); - if ((status = get_scan_status(s, &busy, + if ((status = get_scan_status(s, &busy, &linewidth, &(s->unscanned_lines))) != SANE_STATUS_GOOD) { DBG(10, "sane_start: get_scan_status fails\n"); return end_scan(s, status); } /* check for a bizarre linecount */ - if ((s->unscanned_lines < 0) || - (s->unscanned_lines > + if ((s->unscanned_lines < 0) || + (s->unscanned_lines > (s->params.lines * 2 * (s->expandedresolution ? 2 : 1)))) { DBG(10, "sane_start: get_scan_status returns weird line count %d\n", s->unscanned_lines); return end_scan(s, SANE_STATUS_DEVICE_BUSY); } - - + + /* figure out image format parameters */ switch (s->mode) { case MS_MODE_LINEART: @@ -3990,16 +3991,16 @@ sane_start_guts (SANE_Handle handle) DBG(10, "sane_start: Unknown scan mode: %d\n", s->mode); return end_scan(s, SANE_STATUS_INVAL); } - + if ((s->doexpansion) && (s->resolution > s->dev->info.base_resolution)) { s->dest_ppl = (int) ((double)s->ppl * (double)s->resolution / (double)s->dev->info.base_resolution); - /*+ 0.5 XXXXXX */ + /*+ 0.5 XXXXXX */ s->exp_aspect = (double)s->ppl / (double)s->dest_ppl; s->dest_pixel_bpl = (int) ceil((double)s->pixel_bpl / s->exp_aspect); - /*s->exp_aspect = + /*s->exp_aspect = (double) s->dev->info.base_resolution / (double) s->resolution;*/ /* s->dest_pixel_bpl = s->pixel_bpl / s->exp_aspect; s->dest_ppl = s->ppl / s->exp_aspect;*/ @@ -4012,27 +4013,27 @@ sane_start_guts (SANE_Handle handle) s->dest_pixel_bpl = s->pixel_bpl; s->dest_ppl = s->ppl; } - + s->params.lines = s->unscanned_lines; - s->params.pixels_per_line = s->dest_ppl; - s->params.bytes_per_line = s->dest_pixel_bpl; - + s->params.pixels_per_line = s->dest_ppl; + s->params.bytes_per_line = s->dest_pixel_bpl; + /* calculate maximum line capacity of SCSI buffer */ s->max_scsi_lines = SCSI_BUFF_SIZE / (s->pixel_bpl + s->header_bpl); if (s->max_scsi_lines < 1) { DBG(10, "sane_start: SCSI buffer smaller that one scan line!\n"); return end_scan(s, SANE_STATUS_NO_MEM); } - + s->scsi_buffer = (uint8_t *) malloc(SCSI_BUFF_SIZE * sizeof(uint8_t)); if (s->scsi_buffer == NULL) return SANE_STATUS_NO_MEM; - + /* what's a good initial size for this? */ s->rb = ring_alloc(s->max_scsi_lines * s->dest_pixel_bpl, s->dest_pixel_bpl, s->dest_ppl); - + s->undelivered_bytes = s->unscanned_lines * s->dest_pixel_bpl; - + DBG(23, "Scan Param:\n"); DBG(23, "pix bpl: %d hdr bpl: %d ppl: %d\n", s->pixel_bpl, s->header_bpl, s->ppl); @@ -4040,7 +4041,7 @@ sane_start_guts (SANE_Handle handle) s->undelivered_bytes, s->unscanned_lines, s->planes); DBG(23, "dest bpl: %d dest ppl: %d aspect: %f\n", s->dest_pixel_bpl, s->dest_ppl, s->exp_aspect); - + return SANE_STATUS_GOOD; } @@ -4062,7 +4063,7 @@ sane_start (SANE_Handle handle) /********************************************************************/ /* sane_read */ /********************************************************************/ -static SANE_Status +static SANE_Status sane_read_guts (SANE_Handle handle, SANE_Byte *dest_buffer, SANE_Int dest_length, SANE_Int *ret_length) { @@ -4072,7 +4073,7 @@ sane_read_guts (SANE_Handle handle, SANE_Byte *dest_buffer, ring_buffer *rb = s->rb; DBG(10, "sane_read...\n"); - + *ret_length = 0; /* default: no data */ /* we have been cancelled... */ if (s->cancel) return end_scan(s, SANE_STATUS_CANCELLED); @@ -4102,7 +4103,7 @@ sane_read_guts (SANE_Handle handle, SANE_Byte *dest_buffer, } -SANE_Status +SANE_Status sane_read (SANE_Handle handle, SANE_Byte *dest_buffer, SANE_Int dest_length, SANE_Int *ret_length) { |