TODO (2000-11-21) ******** todo ******** backends -------- * add new backends (?) - bh http://www.martoneconsulting.com/sane-bh.html - Polaroid SprintScan 35 LE [should be included into microtek] Dick Bruijn - primax http://primax.sourceforge.net/ - hp4200 http://hp4200-backend.sourceforge.net/ - v4l2 http://video.inodes.org/sane-v4l2/ - Relisys Scorpio Super 3 SCSI II Mark Plowman - Linux Handscanner Ioctl Interface scanner by Harald Bauer - viceo (Visioneer OneTouch 8600) http://www.abaforum.es/martim/bird/otlinux.htm - addition to hp backend (support for SCL-based HP OfficeJets) http://hpoj.sourceforge.net - add additions/bug fixes to microtek2 from Karsten Festag * use DBG(...) instead of fprintf(stderr, ...) - microtek - microtek2 * check net/saned - net backend segfaults if saned isn't started (or timed out) - don't just ignore the byte-order for the image data (needed to support depths > 8 bits/channel) * qcam: implement auto mode for brightness and black-level (don't just advertise it!) Actually, implement an auto "backend" instead that can be plugged in front of any backend with brightness/contrast etc controls * qcam: figure out how/if to support bulb mode * qcam: convert to use sanei_pio functions instead of direct port access. * pnm: add more options for testing (e.g. arrays and read-only options) * artec: O_SYNC is not Posix? Problems with porting to OS/2? doc --- * add sane manpage - versioning system - SANE API (maybe summary only?) - point to backends and other information? * add sane-usb manpage * Documentation for sanei API - any ideas for this? frontends --------- * Remove frontends (at least xscanimage/xcam) from distribution. * dll: Rewrite to use libtool ltdl library * Add a check in the frontends if the backend delivers more data than it announced by sane_get_parameters to avoid segfaults with bad backends? [the remaining entries have been moved to the sane-frontends package] sanei ----- misc ---- * update libtool versioning system - -version-info is used but with the current version number system -release should be used. - look for AIX problems (overwriting shared libs with eachother because all libs are named libsane.so.1) - look for Irix/cc problems (program searches for libsane.so.2 instead of libsane.so.1). This was fixed by a "bad hack" which should be reverted . - in /usr/local/lib/libsane.la "installed=no" is set, isn't "installed=yes" the correct entry? * remove compiler warnings (>400 warnings even in disable-warnings mode, >800 with --enable-warnings)) * Test SANE on different os/platforms, fix possible compilation problems Test methods: scanimage -d pnm:0 --filename=file.pnm -T scanimage -d net:localhost:pnm:0 --filename=file.pnm -T (start saned by inetd or saned -d before testing) xscanimage / gimp with xscanimage plugin (where available) All the above with shared and static libraries. * build on Irix fails because of problems with the jpeg library. If this is removed in configure, build works. It complains about functions like (typename) functionname (). It doesn't like the brackets which result from expanding the macros EXTERN(x), METHODDEF(x), and GLOBAL(x) to (x). Defining something like EXTERN(x) x seems to work. Same for dc210.c Something like --disable-jpeg for configure would be nice. * build on AIX does only work for static libraries. The shared libraries seem to overwrite each other. * move .desc files for backends that are not included in SANE to different directory (e.g. backends and external-backends)? * Add a check for installed sane versions. - Print a warning when already a sane version is installed - If SANE is installed at a different location, ask user to remove old installation first * Maybe add script to detect and deinstall existing sane versions - make uninstall - install sane-uninstall script. Advantage: uninstall possible without sourcecode * use #include "../include/sane..." instead of #include * use #include "../include/lalloca.h" instead of #include * getopt.c and umax.c seem to use gettext? Can cause crash if frontends are linked to libintl, too. * libdl is used in dll backend but -ldl is not added to LDFLAGS? ******** done ******** * add sanei_authorize (function for all backends) * make authorization_callback work in net-backend and saned. Try to avoid plain text passwords? * Add as6e http://as6edriver.sourceforge.net/ * stiff.c: Tiff header not written correctly: "Jaeger, Gerhard" writes: When writing the TIFF header, you have to specify the TAG "BitsPerSample", which tells a reader how many bits each sample has. The current version only specifies one value (8 or 16). This is wrong, as we have to specify one value for each channel (i.e for a 24bit RGB pic we must specify 8,8,8, see TIFF6.0 spec, [...] * don't install sanei_* headers * Add sane-pie (Pacific Image Electronics series of ScanAce SCSI scanners, and the Devcom 9636/9630 BlackWidow) http://www.munton.demon.co.uk/sane * configure --without-x doesn't work (doesn't matter when frontends are removed from package) * Create new package for frontends. * 0 is white for sane in lineart and halftone, however, 0 is black for the other modes. Possible reason: pnm data format. The SANE standard doesn't talk about this (added point to SANE standard) * add ADF and TA entries to .desc files (not done, probably webpage gets too wide) * check DBG problems for non gcc compilers: - no backend name output - only global debug level * dll: make it robust against it being listed in the configuration file (currently bad things will happen if dll attempts to load itself) * scanimage: add information about backend:devicename in the man page and scanimage --help. * scanimage: check if devicename starts with a / and print a warning message * scanimage: if no devices are detected print a message * use sanei_config_read() instead of fgets() * use #include "sane/..." instead of #include * Update LEVEL2 file. Ideas: * xscanimage: Fix "Gtk-CRITICAL **: file gtkmain.c: line 534 ..." bug when no SANE devices found + PREVIEW: maybe there should be an option to limit the preview scan to the selected area? YES => this will also make it easier to avoid the scan area selection to get confused when the user resizes the preview area in a way that changes the aspect ratio; in essence we want to allow for the preview-image to be a subregion of the preview-window (done in xsane) + xcam: allow disabling of advanced options and tooltips + man page for xcam + scanimage: support depths > 8 bits/channel + upgrade to GTK 1.2 (but stay backwards compatible to 1.0 if possible) + saned: check_host() consider using strncasecmp() + GTK: changing the length unit causes dirty pixels in the unit-labels of the "Geometry Group" + preview: image data doesn't get preserved properly when changing scan area size (reproducable by changing Mustek Scan source to TA) + preview: when popping up the preview window, the current scan area is not visible + qcam: test b&w support (need volunteer!) + hp: convert to use pixel-unit commands only; HP 5P doesn't support decipoint commands + mustek: the MFS-06000SP with firmware v3.12 does not seem to need any line-distance correction at all!?! + scanimage/xscanimage: when a scanner is busy while probing for devices, the device is dropped silently from the list of available devices; this is confusing particularly when remote controlling a device; it should be possible to distinguish between a device that's busy and one that's absent + xscanimage: program crashes when preview window is popped down while preview is being acquired! + Mustek backend crashes when invoked via xscanimage through the network backend. It does not crash if there are no saved device settings. + gtkglue: support vectors (requires a "graph" widget; see gimp/app/curves.c) + xscan: make scrollbar wider + xscan: at startup or after rebuilding the dialog, the notebook widget displays both the standard and advanced options simultaneously + xscan: pnm backend causes crash when hitting "Defaults" button + scan: add three pass scanning support + xscan: double-clicking selection should imply OK + xscan: enabling the gtk_rc_parse() code causes segfault when scanning in three-pass mode (pnm backend) => bug in gtkstyle.c (patch submitted) + qcam: implement "christmas light" filter + xscan/qcam: after scanning a preview, the original scan area seems to get lost somehow => bug in restoring the scan area settings + qcam: image always comes out black until the blacklevel has been modified; why is this? => send dummy black-level after qc_reset() + xscan: provide access option doc strings + xscan: in GIMP mode, RED/GREEN/BLUE frames are not handled properly yet. + preview: bit-depth is currently ignored (makes lineart etc fail) + sanei: allow saving/restoring options on a per-device and per-user basis + xcam: replace ugly top-left/bottom-right corner coordinates with something more useful => they're advanced options now + preview: modifying the scan area coordinates should update the selection + preview: should we allow saving the current preview image? => yes + xscan: make it possible to build with gtk alone (i.e., without gimp libs) + xscan: use same scan-logic as preview (select-based, if possible); should be able to share most of the code + replace params.first_frame with params.last_frame---i don't know how to use the former, the latter would be useful for xcam to implement support for individual R/G/B frames + saned: add multi-host capabilities (selection-phase ... how ??). + saned: add authorization + ensure frontend never link sanei_*() functions dynamically + always define unique names in backends and define weak-aliases for generic names where elf_alias is available---this should make it easy to add "pre-load" support to dll.c (either for faster loading or for systems that don't have dl*()) + make install: don't overwrite existing configuration files + xcam: let user be able to type in a device string + mustek: make sane_close() hang around until sane_cancel() has finished + net: implement it: socket-based backend [Andy is working on this] + need a camera front end (to allow recording video & audio) + qcam: allow changing all parameters "on-the-fly" (while scanning) + qcam backend: implement sane_set_io_mode() and sane_get_select_fd() + make "scan" print current value of each option + make "scan" apply any options before printing help message + initialize backend debug level through environment variable (e.g., SANE_DEBUG_LEVEL) + allow abbreviating string values and make them case-insensitive (as long as they're unique) => see sanei_constrain_value() + add support to "scan" for setting options to "automatic" + update documentation and convert to latex & html + add --width/--height support + update Mustek backend with new notion of inactive options + in verbose multibit mode print min/max graylevel value + Mustek segfaults after ctrl-C => need -Bsymbolic to ensure mustek backend's references to sane_foo() get resolved within backend + test parsing of boolean options + --mode Gray causes segfault + change scan to use getopt_long + make Mustek backend work without having to first call get_devices() + implement meta backend + bring pnm backend up to speed