• Home
  • Raw
  • Download

Lines Matching +full:2001 +full:- +full:08 +full:- +full:14

1 /* sane - Scanner Access Now Easy.
3 Copyright (C) 1997-2005, 2013 Franck Schnefra, Michel Roelofs,
4 Emmanuel Blot, Mikko Tyolajarvi, David Mosberger-Tang, Wolfgang Goeller,
112 /*----- internal scanner operations -----*/
122 #define HCFG_SRA 0x02 /* scanline row average (high-speed colour) */
156 if (pss->preview == SANE_TRUE) in actual_mode()
157 return pss->preview_mode; in actual_mode()
158 return pss->mode; in actual_mode()
171 switch (pss->pdev->model) in calibration_line_length()
181 pos_factor = pss->actual_res / 2; in calibration_line_length()
188 pos_factor = pss->actual_res; in calibration_line_length()
200 /*----- global data structures and access utilities -----*/
213 #include "snapscan-scsi.c"
214 #include "snapscan-sources.c"
215 #include "snapscan-usb.c"
216 #include "snapscan-options.c"
223 ps->gamma_length = 1 << ps->bpp; in alloc_gamma_tables()
226 ps->gamma_length); in alloc_gamma_tables()
228 ps->gamma_tables = in alloc_gamma_tables()
229 (SANE_Int *) malloc(4 * ps->gamma_length * sizeof(SANE_Int)); in alloc_gamma_tables()
231 if (!ps->gamma_tables) in alloc_gamma_tables()
236 ps->gamma_table_gs = &ps->gamma_tables[0 * ps->gamma_length]; in alloc_gamma_tables()
237 ps->gamma_table_r = &ps->gamma_tables[1 * ps->gamma_length]; in alloc_gamma_tables()
238 ps->gamma_table_g = &ps->gamma_tables[2 * ps->gamma_length]; in alloc_gamma_tables()
239 ps->gamma_table_b = &ps->gamma_tables[3 * ps->gamma_length]; in alloc_gamma_tables()
248 gamma = (u_char*) malloc(ps->gamma_length * sizeof(u_char) * 2); in init_gamma()
256 gamma_n (SANE_UNFIX(ps->gamma_gs), ps->bright, ps->contrast, gamma, ps->bpp, 1); in init_gamma()
257 gamma_to_sane (ps->gamma_length, gamma, ps->gamma_table_gs); in init_gamma()
259 gamma_n (SANE_UNFIX(ps->gamma_r), ps->bright, ps->contrast, gamma, ps->bpp, 1); in init_gamma()
260 gamma_to_sane (ps->gamma_length, gamma, ps->gamma_table_r); in init_gamma()
262 gamma_n (SANE_UNFIX(ps->gamma_g), ps->bright, ps->contrast, gamma, ps->bpp, 1); in init_gamma()
263 gamma_to_sane (ps->gamma_length, gamma, ps->gamma_table_g); in init_gamma()
265 gamma_n (SANE_UNFIX(ps->gamma_b), ps->bright, ps->contrast, gamma, ps->bpp, 1); in init_gamma()
266 gamma_to_sane (ps->gamma_length, gamma, ps->gamma_table_b); in init_gamma()
296 int max = length - 1; in gamma_n()
302 double val = (i - mid) * (1.0 + contrast / 100.0) in gamma_n()
347 /* dispersed-dot dither matrices; this is discussed in Foley, Van Dam,
349 2nd ed. (Addison-Wesley), pp 570-571.
351 The function mfDn computes the nth dispersed-dot dither matrix Dn
375 for ( ; NULL != current; current = current->pnext) in device_already_in_list()
377 if (0 == strcmp (name, current->dev.name)) in device_already_in_list()
477 (*pd)->dev.name = strdup (name); in snapscani_init_device_structure()
479 (*pd)->dev.vendor = strdup ("Acer"); in snapscani_init_device_structure()
481 (*pd)->dev.vendor = strdup (vendor); in snapscani_init_device_structure()
483 (*pd)->dev.model = strdup (model); in snapscani_init_device_structure()
486 (*pd)->dev.type = strdup (SNAPSCAN_FS_TYPE); in snapscani_init_device_structure()
490 (*pd)->dev.type = strdup (SNAPSCAN_TYPE); in snapscani_init_device_structure()
492 (*pd)->bus = bus_type; in snapscani_init_device_structure()
493 (*pd)->model = model_num; in snapscani_init_device_structure()
495 if (!(*pd)->dev.name || !(*pd)->dev.vendor || !(*pd)->dev.model || !(*pd)->dev.type) in snapscani_init_device_structure()
503 (*pd)->x_range.min = x_range_fb.min; in snapscani_init_device_structure()
504 (*pd)->x_range.quant = x_range_fb.quant; in snapscani_init_device_structure()
505 (*pd)->x_range.max = x_range_fb.max; in snapscani_init_device_structure()
506 (*pd)->y_range.min = y_range_fb.min; in snapscani_init_device_structure()
507 (*pd)->y_range.quant = y_range_fb.quant; in snapscani_init_device_structure()
508 (*pd)->y_range.max = y_range_fb.max; in snapscani_init_device_structure()
509 (*pd)->firmware_filename = NULL; in snapscani_init_device_structure()
511 (*pd)->pnext = first_device; in snapscani_init_device_structure()
623 inquiry-command. in add_usb_device()
676 for (psd = first_device; psd; psd = psd->pnext) in find_device()
678 if (strcmp (psd->dev.name, name) == 0) in find_device()
684 /*----- functions in the scanner interface -----*/
785 if (psd->pnext != NULL) { in free_device_list()
786 free_device_list(psd->pnext); in free_device_list()
831 for (i = 0, pdev = first_device; pdev; i++, pdev = pdev->pnext) in sane_get_devices()
832 (*device_list)[i] = &(pdev->dev); in sane_get_devices()
859 name = first_device->dev.name; in sane_open()
888 pss->devname = strdup (name); in sane_open()
889 if (!pss->devname) in sane_open()
897 pss->pdev = psd; in sane_open()
898 pss->opens = 0; in sane_open()
899 pss->sense_str = NULL; in sane_open()
900 pss->as_str = NULL; in sane_open()
901 pss->phys_buf_sz = DEFAULT_SCANNER_BUF_SZ; in sane_open()
902 if ((pss->pdev->model == PERFECTION2480) || (pss->pdev->model == PERFECTION3490)) in sane_open()
903 pss->phys_buf_sz *= 2; in sane_open()
904 if (psd->bus == SCSI) { in sane_open()
905 pss->phys_buf_sz = sanei_scsi_max_request_size; in sane_open()
909 me, (u_long) pss->phys_buf_sz); in sane_open()
910 pss->buf = (u_char *) malloc(pss->phys_buf_sz); in sane_open()
911 if (!pss->buf) { in sane_open()
974 if (pss->pdev->bus == USB) in sane_open()
976 …if (sanei_usb_get_vendor_product(pss->fd, &pss->usb_vendor, &pss->usb_product) != SANE_STATUS_GOOD) in sane_open()
978 pss->usb_vendor = 0; in sane_open()
979 pss->usb_product = 0; in sane_open()
982 if (pss->hwst & 0x02) in sane_open()
992 status = mini_inquiry (pss->pdev->bus, pss->fd, vendor, model); in sane_open()
1000 pss->pdev->model = snapscani_get_model_id(model, pss->fd, pss->pdev->bus); in sane_open()
1002 if (pss->pdev->model == UNKNOWN) { in sane_open()
1038 pss->state = ST_IDLE; in sane_open()
1047 switch (pss->state) in sane_close()
1058 free (pss->gamma_tables); in sane_close()
1059 free (pss->buf); in sane_close()
1075 p->last_frame = SANE_TRUE; /* we always do only one frame */ in sane_get_parameters()
1077 if ((pss->state == ST_SCAN_INIT) || (pss->state == ST_SCANNING)) in sane_get_parameters()
1081 if (pss->psrc != NULL) in sane_get_parameters()
1085 p->pixels_per_line = pss->psrc->pixelsPerLine(pss->psrc); in sane_get_parameters()
1086 p->bytes_per_line = pss->psrc->bytesPerLine(pss->psrc); in sane_get_parameters()
1087 /* p->lines = pss->psrc->remaining(pss->psrc)/p->bytes_per_line; */ in sane_get_parameters()
1088 p->lines = pss->lines; in sane_get_parameters()
1094 p->pixels_per_line = pss->pixels_per_line; in sane_get_parameters()
1095 p->bytes_per_line = pss->bytes_per_line; in sane_get_parameters()
1096 p->lines = pss->lines; in sane_get_parameters()
1098 p->bytes_per_line = p->pixels_per_line*3; in sane_get_parameters()
1110 width = SANE_UNFIX (pss->brx - pss->tlx); in sane_get_parameters()
1111 height = SANE_UNFIX (pss->bry - pss->tly); in sane_get_parameters()
1112 dpi = pss->res; in sane_get_parameters()
1114 p->pixels_per_line = width * dots_per_mm; in sane_get_parameters()
1115 p->lines = height * dots_per_mm; in sane_get_parameters()
1120 p->bytes_per_line = 3 * p->pixels_per_line * ((pss->bpp_scan+7)/8); in sane_get_parameters()
1123 p->bytes_per_line = (p->pixels_per_line + 7) / 8; in sane_get_parameters()
1127 p->bytes_per_line = p->pixels_per_line * ((pss->bpp_scan+7)/8); in sane_get_parameters()
1131 p->format = (is_colour_mode(mode)) ? SANE_FRAME_RGB : SANE_FRAME_GRAY; in sane_get_parameters()
1133 p->depth = 1; in sane_get_parameters()
1134 else if (pss->pdev->model == SCANWIT2720S) in sane_get_parameters()
1135 p->depth = 16; in sane_get_parameters()
1136 else if (pss->preview) in sane_get_parameters()
1137 p->depth = 8; in sane_get_parameters()
1139 p->depth = pss->val[OPT_BIT_DEPTH].w; in sane_get_parameters()
1141 DBG (DL_DATA_TRACE, "%s: depth = %ld\n", me, (long) p->depth); in sane_get_parameters()
1142 DBG (DL_DATA_TRACE, "%s: lines = %ld\n", me, (long) p->lines); in sane_get_parameters()
1146 (long) p->pixels_per_line); in sane_get_parameters()
1150 (long) p->bytes_per_line); in sane_get_parameters()
1175 while ((pss->preadersrc->remaining(pss->preadersrc) > 0) && !cancelRead) in reader()
1178 status = pss->preadersrc->get(pss->preadersrc, wbuf, &ndata); in reader()
1192 int written = write (pss->rpipe[1], buf, ndata); in reader()
1194 if (written == -1) in reader()
1203 ndata -= written; in reader()
1236 /* child process - close read side, make stdout the write side of the pipe */ in reader_process()
1237 close( pss->rpipe[0] ); in reader_process()
1238 pss->rpipe[0] = -1; in reader_process()
1259 status = create_base_source (pss, SCSI_SRC, &(pss->preadersrc)); in reader_process()
1269 pss->preadersrc->done(pss->preadersrc); in reader_process()
1270 free(pss->preadersrc); in reader_process()
1271 pss->preadersrc = 0; in reader_process()
1272 close( pss->rpipe[1] ); in reader_process()
1273 pss->rpipe[1] = -1; in reader_process()
1286 pss->nonblocking = SANE_FALSE; in start_reader()
1287 pss->rpipe[0] = pss->rpipe[1] = -1; in start_reader()
1288 sanei_thread_initialize (pss->child); in start_reader()
1290 if (pipe (pss->rpipe) != -1) in start_reader()
1292 pss->orig_rpipe_flags = fcntl (pss->rpipe[0], F_GETFL, 0); in start_reader()
1293 pss->child = sanei_thread_begin(reader_process, (void *) pss); in start_reader()
1297 if (!sanei_thread_is_valid (pss->child)) in start_reader()
1303 close (pss->rpipe[0]); in start_reader()
1304 close (pss->rpipe[1]); in start_reader()
1310 close (pss->rpipe[1]); in start_reader()
1311 pss->rpipe[1] = -1; in start_reader()
1313 pss->nonblocking = SANE_TRUE; in start_reader()
1324 switch (pss->pdev->model) in send_gamma_table()
1349 double gamma_gs = SANE_UNFIX (pss->gamma_gs); in download_gamma_tables()
1350 double gamma_r = SANE_UNFIX (pss->gamma_r); in download_gamma_tables()
1351 double gamma_g = SANE_UNFIX (pss->gamma_g); in download_gamma_tables()
1352 double gamma_b = SANE_UNFIX (pss->gamma_b); in download_gamma_tables()
1366 if (!pss->halftone) in download_gamma_tables()
1374 if (!pss->halftone) in download_gamma_tables()
1382 switch (pss->bpp) in download_gamma_tables()
1385 DBG (DL_DATA_TRACE, "%s: Sending 8bit gamma table for %d bpp\n", me, pss->bpp); in download_gamma_tables()
1392 if (pss->pdev->model == SCANWIT2720S) in download_gamma_tables()
1394 DBG (DL_DATA_TRACE, "%s: Sending 16bit gamma table for %d bpp\n", me, pss->bpp); in download_gamma_tables()
1403 DBG (DL_DATA_TRACE, "%s: Sending 8bit gamma table for %d bpp\n", me, pss->bpp); in download_gamma_tables()
1410 case 14: in download_gamma_tables()
1411 if (pss->bpp_scan == 16) in download_gamma_tables()
1413 DBG (DL_DATA_TRACE, "%s: Sending 16bit gamma table for %d bpp\n", me, pss->bpp); in download_gamma_tables()
1422 DBG (DL_DATA_TRACE, "%s: Sending 8bit gamma table for %d bpp\n", me, pss->bpp); in download_gamma_tables()
1430 DBG (DL_DATA_TRACE, "%s: Sending 8bit gamma table for %d bpp\n", me, pss->bpp); in download_gamma_tables()
1440 if (pss->val[OPT_CUSTOM_GAMMA].b) in download_gamma_tables()
1442 if (pss->val[OPT_GAMMA_BIND].b) in download_gamma_tables()
1445 gamma_from_sane (pss->gamma_length, pss->gamma_table_gs, in download_gamma_tables()
1446 pss->buf + SEND_LENGTH, gamma_mode); in download_gamma_tables()
1450 gamma_from_sane (pss->gamma_length, pss->gamma_table_gs, in download_gamma_tables()
1451 pss->buf + SEND_LENGTH, gamma_mode); in download_gamma_tables()
1455 gamma_from_sane (pss->gamma_length, pss->gamma_table_gs, in download_gamma_tables()
1456 pss->buf + SEND_LENGTH, gamma_mode); in download_gamma_tables()
1462 gamma_from_sane (pss->gamma_length, pss->gamma_table_r, in download_gamma_tables()
1463 pss->buf + SEND_LENGTH, gamma_mode); in download_gamma_tables()
1467 gamma_from_sane (pss->gamma_length, pss->gamma_table_g, in download_gamma_tables()
1468 pss->buf + SEND_LENGTH, gamma_mode); in download_gamma_tables()
1472 gamma_from_sane (pss->gamma_length, pss->gamma_table_b, in download_gamma_tables()
1473 pss->buf + SEND_LENGTH, gamma_mode); in download_gamma_tables()
1480 if (pss->val[OPT_GAMMA_BIND].b) in download_gamma_tables()
1483 gamma_n (gamma_gs, pss->bright, pss->contrast, in download_gamma_tables()
1484 pss->buf + SEND_LENGTH, pss->bpp, gamma_mode); in download_gamma_tables()
1488 gamma_n (gamma_gs, pss->bright, pss->contrast, in download_gamma_tables()
1489 pss->buf + SEND_LENGTH, pss->bpp, gamma_mode); in download_gamma_tables()
1493 gamma_n (gamma_gs, pss->bright, pss->contrast, in download_gamma_tables()
1494 pss->buf + SEND_LENGTH, pss->bpp, gamma_mode); in download_gamma_tables()
1500 gamma_n (gamma_r, pss->bright, pss->contrast, in download_gamma_tables()
1501 pss->buf + SEND_LENGTH, pss->bpp, gamma_mode); in download_gamma_tables()
1505 gamma_n (gamma_g, pss->bright, pss->contrast, in download_gamma_tables()
1506 pss->buf + SEND_LENGTH, pss->bpp, gamma_mode); in download_gamma_tables()
1510 gamma_n (gamma_b, pss->bright, pss->contrast, in download_gamma_tables()
1511 pss->buf + SEND_LENGTH, pss->bpp, gamma_mode); in download_gamma_tables()
1519 if(pss->val[OPT_CUSTOM_GAMMA].b) in download_gamma_tables()
1521 gamma_from_sane (pss->gamma_length, pss->gamma_table_gs, in download_gamma_tables()
1522 pss->buf + SEND_LENGTH, gamma_mode); in download_gamma_tables()
1528 gamma_n (gamma_gs, pss->bright, pss->contrast, in download_gamma_tables()
1529 pss->buf + SEND_LENGTH, pss->bpp, gamma_mode); in download_gamma_tables()
1541 if ((pss->halftone) && in download_halftone_matrices()
1548 if (pss->dither_matrix == dm_dd8x8) in download_halftone_matrices()
1559 memcpy (pss->buf + SEND_LENGTH, matrix, matrix_sz); in download_halftone_matrices()
1569 memcpy (pss->buf + SEND_LENGTH + matrix_sz, in download_halftone_matrices()
1572 memcpy (pss->buf + SEND_LENGTH + 2 * matrix_sz, in download_halftone_matrices()
1595 if (pss->hconfig & HCFG_RB) in measure_transfer_rate()
1597 /* We have a ring buffer. We simulate one round of a read-store in measure_transfer_rate()
1599 the buffer size must be rounded to a 128-byte boundary. */ in measure_transfer_rate()
1602 if ((pss->pdev->model == PERFECTION2480) || (pss->pdev->model == PERFECTION3490)) in measure_transfer_rate()
1605 if (pss->bytes_per_line > 0xfff0) in measure_transfer_rate()
1606 pss->expected_read_bytes = 0xfff0; in measure_transfer_rate()
1608 pss->expected_read_bytes = (0xfff0 / pss->bytes_per_line) * pss->bytes_per_line; in measure_transfer_rate()
1611 pss->expected_read_bytes = in measure_transfer_rate()
1612 (pss->buf_sz%128) ? (pss->buf_sz/128 + 1)*128 : pss->buf_sz; in measure_transfer_rate()
1616 pss->expected_read_bytes = 0; in measure_transfer_rate()
1626 pss->expected_read_bytes = pss->bytes_per_line; in measure_transfer_rate()
1628 if (pss->expected_read_bytes%128) in measure_transfer_rate()
1630 pss->expected_read_bytes = in measure_transfer_rate()
1631 (pss->expected_read_bytes/128 + 1)*128; in measure_transfer_rate()
1635 DBG (DL_VERBOSE, "%s: read %ld bytes.\n", me, (long) pss->read_bytes); in measure_transfer_rate()
1638 pss->expected_read_bytes = 0; in measure_transfer_rate()
1670 pss->state = ST_SCAN_INIT; in sane_start()
1672 if ((pss->pdev->model == SCANWIT2720S) && (pss->focus_mode == MD_AUTO)) in sane_start()
1680 if (pss->pdev->model == SCANWIT2720S) in sane_start()
1684 status = set_focus(pss, pss->focus); in sane_start()
1703 if (pss->val[OPT_QUALITY_CAL].b && (pss->usb_vendor == USB_VENDOR_EPSON)) in sane_start()
1729 (u_long) pss->bytes_per_line, in sane_start()
1730 pss->ms_per_line, in sane_start()
1731 pss->bytes_per_line/pss->ms_per_line); in sane_start()
1734 if (pss->val[OPT_QUALITY_CAL].b && (pss->usb_vendor != USB_VENDOR_EPSON)) in sane_start()
1753 if (pss->pdev->model == SCANWIT2720S) in sane_start()
1755 status = set_frame(pss, pss->frame_no); in sane_start()
1759 if (pss->source == SRC_ADF) in sane_start()
1778 status = create_source_chain (pss, st, &(pss->psrc)); in sane_start()
1804 if (pss->state == ST_CANCEL_INIT) { in sane_read()
1805 pss->state = ST_IDLE; in sane_read()
1809 if (pss->psrc == NULL || pss->psrc->remaining(pss->psrc) == 0) in sane_read()
1811 if (sanei_thread_is_valid (pss->child)) in sane_read()
1813 sanei_thread_waitpid (pss->child, 0); /* ensure no zombies */ in sane_read()
1814 sanei_thread_invalidate (pss->child); in sane_read()
1818 if (pss->psrc != NULL) in sane_read()
1820 pss->psrc->done(pss->psrc); in sane_read()
1821 free(pss->psrc); in sane_read()
1822 pss->psrc = NULL; in sane_read()
1824 pss->state = ST_IDLE; in sane_read()
1829 status = pss->psrc->get(pss->psrc, buf, plen); in sane_read()
1831 switch (pss->state) in sane_read()
1841 pss->state = ST_SCANNING; in sane_read()
1862 switch (pss->state) in sane_cancel()
1869 pss->state = ST_CANCEL_INIT; in sane_cancel()
1871 if (sanei_thread_is_valid (pss->child)) in sane_cancel()
1873 DBG( DL_INFO, "---- killing reader_process ----\n" ); in sane_cancel()
1884 sanei_thread_sendsig( pss->child, SIGUSR1 ); in sane_cancel()
1893 res = sanei_thread_waitpid( pss->child, 0 ); in sane_cancel()
1896 if( res != pss->child ) { in sane_cancel()
1901 sanei_thread_kill( pss->child ); in sane_cancel()
1903 sanei_thread_sendsig( pss->child, SIGKILL ); in sane_cancel()
1906 sanei_thread_invalidate( pss->child ); in sane_cancel()
1919 (long) pss->state); in sane_cancel()
1932 if (pss->state != ST_SCAN_INIT) in sane_set_io_mode()
1937 if (!sanei_thread_is_valid (pss->child)) in sane_set_io_mode()
1945 fcntl (pss->rpipe[0], F_SETFL, O_NONBLOCK | pss->orig_rpipe_flags); in sane_set_io_mode()
1950 fcntl (pss->rpipe[0], F_SETFL, pss->orig_rpipe_flags); in sane_set_io_mode()
1953 pss->nonblocking = m; in sane_set_io_mode()
1964 if (pss->state != ST_SCAN_INIT) in sane_get_select_fd()
1967 if (!sanei_thread_is_valid (pss->child)) in sane_get_select_fd()
1974 *fd = pss->rpipe[0]; in sane_get_select_fd()
1979 * Revision 1.73 2008/11/26 21:21:29 kitno-guest
1985 * Revision 1.72 2008-05-15 12:50:24 ellert-guest
1986 * Fix for bug #306751: sanei-thread with pthreads on 64 bit
1988 * Revision 1.71 2008-01-29 17:48:42 kitno-guest
1991 * Revision 1.70 2007-11-18 10:59:18 ellert-guest
1994 * Revision 1.69 2007-11-16 08:04:02 ellert-guest
1997 * Revision 1.68 2006-09-03 10:00:11 oliver-guest
2000 * Revision 1.67 2006/01/10 19:32:16 oliver-guest
2001 * Added 12 bit gamma tables for Epson Stylus CX-1500
2003 * Revision 1.66 2006/01/06 20:59:17 oliver-guest
2006 * Revision 1.65 2006/01/01 23:02:55 oliver-guest
2007 * Added snapscan-data.c to Makefile.in
2009 * Revision 1.64 2005/12/05 20:38:23 oliver-guest
2012 * Revision 1.63 2005/12/04 15:03:00 oliver-guest
2015 * Revision 1.62 2005/12/02 19:15:42 oliver-guest
2018 * Revision 1.61 2005/11/15 20:11:19 oliver-guest
2021 * Revision 1.60 2005/11/10 19:42:02 oliver-guest
2024 * Revision 1.59 2005/11/02 22:12:54 oliver-guest
2027 * Revision 1.58 2005/11/02 19:22:06 oliver-guest
2030 * Revision 1.57 2005/10/31 21:08:47 oliver-guest
2033 * Revision 1.56 2005/10/24 19:46:40 oliver-guest
2036 * Revision 1.55 2005/10/23 21:28:58 oliver-guest
2039 * Revision 1.54 2005/10/13 22:43:30 oliver-guest
2042 * Revision 1.53 2005/10/11 18:47:07 oliver-guest
2045 * Revision 1.52 2005/09/28 21:33:11 oliver-guest
2048 * Revision 1.51 2005/08/15 18:56:55 oliver-guest
2051 * Revision 1.50 2005/08/15 18:06:37 oliver-guest
2054 * Revision 1.49 2005/08/07 12:37:29 oliver-guest
2057 * Revision 1.48 2004/12/09 23:21:48 oliver-guest
2060 * Revision 1.47 2004/12/01 22:49:14 oliver-guest
2063 * Revision 1.46 2004/12/01 22:12:03 oliver-guest
2066 * Revision 1.45 2004/10/03 17:34:36 hmg-guest
2069 * Revision 1.44 2004/09/02 20:59:12 oliver-guest
2072 * Revision 1.43 2004/06/16 19:52:26 oliver-guest
2075 * Revision 1.42 2004/06/15 12:17:37 hmg-guest
2077 * don't know __attribute__ and therefore can't compile sane-backends without this
2080 * Revision 1.41 2004/05/26 22:37:01 oliver-guest
2083 * Revision 1.40 2004/04/09 11:59:02 oliver-guest
2086 * Revision 1.39 2004/04/08 21:53:10 oliver-guest
2089 * Revision 1.37 2003/11/27 23:11:32 oliver-guest
2092 * Revision 1.36 2003/11/09 21:43:45 oliver-guest
2095 * Revision 1.35 2003/11/07 23:26:49 oliver-guest
2098 * Revision 1.34 2003/10/21 20:43:25 oliver-guest
2101 * Revision 1.33 2003/10/07 18:29:20 oliver-guest
2104 * Revision 1.32 2003/09/24 18:05:39 oliver-guest
2107 * Revision 1.31 2003/09/12 16:10:33 hmg-guest
2111 * <stef-listes@wanadoo.fr>.
2113 * Revision 1.30 2003/08/19 21:05:08 oliverschwartz
2122 * Revision 1.57 2003/04/02 21:17:14 oliverschwartz
2125 * Revision 1.56 2003/02/08 10:45:09 oliverschwartz
2128 * Revision 1.55 2003/01/08 21:16:17 oliverschwartz
2131 * Revision 1.54 2002/12/10 20:14:12 oliverschwartz
2153 * Set backend version to 1.4.14
2159 * - Added ADF support
2160 * - Fixed status handling after cancel
2162 * Revision 1.44 2002/04/27 14:42:30 oliverschwartz
2172 * - Moved option functions to snapscan-options.c
2173 * - Autodetect USB scanners
2174 * - Cleanup
2176 * Revision 1.40 2002/02/09 14:55:23 oliverschwartz
2184 * Revision 1.38 2002/01/14 21:11:56 oliverschwartz
2193 * Revision 1.35 2001/12/20 23:18:01 oliverschwartz
2196 * Revision 1.34 2001/12/18 18:28:35 oliverschwartz
2199 * Revision 1.33 2001/12/12 19:43:30 oliverschwartz
2200 * - Set version number to 1.4.3
2201 * - Clean up CVS Log
2203 * Revision 1.32 2001/12/09 23:06:45 oliverschwartz
2204 * - use sense handler for USB if scanner reports CHECK_CONDITION
2206 * Revision 1.31 2001/12/08 11:50:34 oliverschwartz
2209 * Revision 1.30 2001/11/29 22:50:14 oliverschwartz
2212 * Revision 1.29 2001/11/27 23:16:17 oliverschwartz
2213 * - Fix color alignment for SnapScan 600
2214 * - Added documentation in snapscan-sources.c
2215 * - Guard against TL_X < BR_X and TL_Y < BR_Y
2217 * Revision 1.28 2001/11/25 18:51:41 oliverschwartz
2220 * Revision 1.27 2001/11/16 20:28:35 oliverschwartz
2223 * Revision 1.26 2001/11/16 20:23:16 oliverschwartz
2224 * Merge with sane-1.0.6
2225 * - Check USB vendor IDs to avoid hanging scanners
2226 * - fix bug in dither matrix computation
2228 * Revision 1.25 2001/10/25 11:06:22 oliverschwartz
2231 * Revision 1.24 2001/10/11 14:02:10 oliverschwartz
2234 * Revision 1.23 2001/10/09 22:34:23 oliverschwartz
2237 * Revision 1.22 2001/10/08 19:26:01 oliverschwartz
2238 * - Disable quality calibration for scanners that do not support it
2240 * Revision 1.21 2001/10/08 18:22:02 oliverschwartz
2241 * - Disable quality calibration for Acer Vuego 310F
2242 * - Use sanei_scsi_max_request_size as scanner buffer size
2244 * - Added new devices to snapscan.desc
2246 * Revision 1.20 2001/09/18 15:01:07 oliverschwartz
2247 * - Read scanner id string again after firmware upload
2249 * - Make firmware upload work for AGFA scanners
2250 * - Change copyright notice
2252 * Revision 1.19 2001/09/17 10:01:08 sable
2255 * Revision 1.18 2001/09/10 10:16:32 oliverschwartz
2258 * Revision 1.17 2001/09/09 18:06:32 oliverschwartz
2261 * Revision 1.16 2001/09/07 09:42:13 oliverschwartz
2262 * Sync with Sane-1.0.5
2264 * Revision 1.15 2001/05/15 20:51:14 oliverschwartz
2265 * check for pss->devname instead of name in sane_open()
2267 * Revision 1.14 2001/04/10 13:33:06 sable
2270 * Revision 1.13 2001/04/10 13:00:31 sable
2273 * Revision 1.12 2001/04/10 11:04:31 sable
2276 * Revision 1.11 2001/03/17 22:53:21 sable
2280 * Revision 1.4 2001/03/04 16:50:53 mikael
2283 * Revision 1.3 2001/02/16 18:32:28 mikael
2286 * Revision 1.2 2001/02/10 18:18:29 mikael
2289 * Revision 1.1.1.1 2001/02/10 17:09:29 mikael
2290 * Imported from snapscan-11282000.tar.gz
2301 * Revision 1.7 2000/10/28 14:16:10 sable
2304 * Revision 1.6 2000/10/28 14:06:35 sable
2308 * Changed USB support to a 1 line modification instead of multi-file
2314 * Revision 1.3 2000/08/12 15:09:35 pere
2318 * 2000-07-29 Henning Meier-Geinitz <hmg@gmx.de>
2333 * * backend/avision.c backend/canon-sane.c backend/coolscan.c
2341 * * doc/Makefile.in: Added sane-coolscan to list of mapages to install.
2343 * * backend/mustek.*: Update to Mustek backend 1.0-94. Fixed the
2347 * 2000-07-25 Henning Meier-Geinitz <hmg@gmx.de>
2361 * 2000-07-17 Henning Meier-Geinitz <hmg@gmx.de>
2363 * * backend/snapscan.c backend/snapscan-scsi.c: Replace C++ comment
2369 * Revision 1.2 2000/05/14 13:30:20 coppice
2381 * references to the old snapscan-310.c stuff. This stuff must still
2385 * Revision 2.1 1999/09/08 03:07:05 charter
2388 * Revision 1.47 1999/09/08 03:03:53 charter
2397 * Split up sane_start() into sub-functions to improve readability (again).
2408 * Check-in of revision 1.42 (release 0.7 of the backend).
2420 * Fixed major version problem precipitated by release of SANE-1.00.
2428 * Revision 1.37 1998/08/06 06:16:39 charter
2430 * Change contributed by David Mosberger-Tang.
2466 * can now allow changes in the units, and units that are more user-
2507 * that caused a segfault in scanimage -h.
2522 * Revision 1.20 1998/01/25 08:53:14 charter
2523 * Have added bi-level colour mode, with halftones too.
2535 * Now have RGB gamma correction and dispersed-dot dither halftoning
2539 * now change in ten-pixel increments (I had problems with screwed-up
2549 * Reindented using GNU convention at David Mosberger-Tang's request.
2550 * Also applied David's patch fixing problems on 64-bit architectures.
2552 * in a read on the scsi fd---nonblocking mode operates better now.
2574 * I've also switched to GTK+-0.99.2 and sane-0.69, and the
2582 * constrained, but now the preview window bombs with a floating-
2589 * Revision 1.11 1998/01/20 22:42:08 charter
2593 * Slight change to some floating-point computations in the brightness
2607 * Revision 1.7 1997/11/10 05:52:08 charter
2630 * Revision 1.2 1997/10/14 06:00:11 charter