19991002 ajv created CVS repository 19991002 ajv Started work on debugging issues 19991003 ajv Moved main() to getopt for maintainability 19991003 ajv Added all the support files, and ported the calibration suite 19991003 ajv Removed multiple target support, debugged other printers Made recompilation to change things unnecessary 19991013 ajv Added internationalisation support Added English man page Reduced getopt() to *BSD friendly version Fixed a bug that ajv found, and Giorgio fixed Updated the usage to include build version and all arguments 19991020 ajv Added back '-' and post-option file parsing Added I18N stuff Added "verbose" option to output to stderr 19991021 giorgio Added all of Giorgio's patches Added X & Y offsets 19991021 ajv FreeBSD fixes in Makefile Documentation update, including man page 19991105 ajv Documentation update Dutch support - Jimmy Tak "letter" added as valid paper size - Ionutz Borcoman RedHat doco updated - Duncan Haldane 19991120 giorgio Much faster output Much better printing in dark regions compression reenabled for black mode --eco mode bug fixes 19991127 giorgio Changed back to standard Cartesian distance for colors Gamma correction tool (see separate archive) bug fixes in black printing 19991128 ajv re-merged with Giorgio's code base All patches from 19991105 are back updated shift sizes in pnm2ppa.conf fixed permission problem with make install fixed "verbose" and "dump" pnm2ppa.conf keywords 19991204 duncan "legal" (US Legal, 8.5in x 14in) added as a valid paper size - Duncan Haldane 20000113 ajv broke out image.c into several files in an attempt to add pgm support without major breakage 20000114 ajv Finally fixed annoying memory bug. Both MAXLINES and Max Buf Lines must agree. 20000120 klamer Patches to allow calibration to work again. mancini BeOS support duncan RedHat Print filters added to CVS tree ajv Fixed -v and moved yet another global into a struct 20000306 duncan Lots of little fixes; --fd working right now; bidirectional shearing adjustments added (user configurable entries "blackshear" and colorshear" in pnm2ppa.conf. 20000311 duncan added : -B n option and "blackness n" config file entry to control black ink density (drops per pixel n = 0,1,2,3,4 ) default is 2. Also there are now config file entries blackshear and colorshear for adjusting shearing in bidirectional printing. Fixed various bugs that broke HP820/1000 printing. 20000318 duncan Color EcoMode printing now uses bidirectional printsweeps (formerly only FastMode did this) If gMaxPass = 1, you now get bidirectional sweeps (in cut_im_color_swath() , cutswath.c) 20000326 duncan ** changes to dither.c: on odd lines, black is now processed (not color), even black pixels are duplicated, so if either of two successive pixels are black, they both are. Changes also fix Tim's report about blurry black/white boundaries. ** changes to image.c If the odd line is not printed (PixMap or EcoMode), image.c now stores the line, and adds the black parts to the next even line. This fixes a bug in where thin (one-pixel wide) black lines (like enscript borders) could be lost because black ink only printed every second pixel, and odd black lines were just copies of the preceeding even line which had been stored. 20000331 duncan added support for large papersizes 11x17 and a3 (for the 1000 series printers). Added a printer-specific max_pagewidth so papersizes that are too wide for a printer series will not print on that printer. 20000402 duncan tweaked bidirectional sweep shearing correction. (removed the +1 right-to-left black shift in cut_im_black_swath() in cutswath.c ). I am not sure if the shearing correction is model or individual printer-specific. (I suspect the second case, in which case it is a calibration issue (The HP Win9x software seems to have calibration adjustments for blackshear.) if any corrections turn out to be generic to a given printer family, (rather than specific to a particular printer) the default can be changed in defaults.h (the variables are: printer->r2l_bw_offset (=blackshear) printer->r2l_color_offset (=colorshear). 20000404 duncan added support for pbmraw and pgmraw formats. all three pnmraw formats now work. (changes in image.c, image.h ) 20000405 duncan added support for pgm, ppm, pbm nonraw formats. added papersize autoconfiguring from the pnm header, so all ghostscript papersizes are now supported (if the printer can accomodate them) The -s option now only controls the gammafile creation papersize. Made bidirectional printing the default (but this can be configured with a "unimode 1" in pnm2ppa.conf, or --uni, --bi command line options. 20000408 duncan graceful termination of print run if pnm input is truncated (i.e., if read_line() encounters EOF). printer no longer hangs. Moved text strings to lang.h/text-en.h 20000423 duncan clean up way things near sides of swath are handled in cutswath.c 20000710 duncan in FS_Color_Dither(), use line[]= (1,1,1) not (0,0,0) for black replacement of dark pixels for which no color match is found. (fixes flashing LED on certain images - those with no black - with --eco on HP820) (0,0,0) = black ink, (1,1,1) = gMaxPass drops of each color. 20000928 duncan in cutswath.c, if the vertical position of the black and color sweeps differed by 1 , 2 or 3 dots, HP820 got "flashing light syndrome". Fixed by testing for this possibility, and if found, by reducing numlines, and padding the top of a swath with an (even) number of blank lines to keep the height the same. (Thanks to Steven Elliott for reporting this bug, and testing the fix. 20001010 ajv made input of paths to gamma and config files secure against buffer overruns. duncan In -g mode, check that gamma.ppm is not a symbolic link, and is a regular file, before writing to it (but after opening it). 20001018 duncan clean up calibration program. now called calibrate_ppa. It does most calibration now. moved the job of writing gamma.ppm for color calibration to a new utility calibrate_ppa.c. pnm2ppa -g now just prints the corresponding test page. secured syslog messages. No user input is sent to syslog. syslog messages are wrapped, and can be suppressed with a new keyword "silent 1" in /etc/pnm2ppa.conf (but not in subsequently-read config files). all syslog activity now occurs in syslog.c. 20001106 reduce memory footprint of calibrate_ppa (it was 36MB!). 20001112 fix syslog silent/verbose usage; fix alignment pattern bug in calibrate_ppa. repaired the HP820 fix that got broken when the vertical offset was redefined by 600 dots... 20010829 duncan Change the preprocessor flag __BEOS__ to __NO_SYSLOG__ as it is not BeOS specific (it supresses use of the System Log) Added Makefile entries for Solaris, and an INSTALL.SOLARIS file. 20020211 duncan Cleanup C++-style comments (gives gcc compiler warnings) Small syslog.c/Makefile cleanups for Solaris. Minor documentation updates. Change a confusing syslog message about "unsupported PNM formats" so it is clear that the error was non-PNM input to pnm2ppa. Increase version to pnm2ppa-1.10 20020224 duncan Reworked cutswath.c and ppa.c so print sweeps are sent separately by ppa_print_page() in cutswath.c to ppa_print_sweep() in ppa.c (until now, they were going in groups of gMaxPass= 4 at a time in color high quality mode) This will now permit improvement of the print sweep pattern, and make the code easier to understand (easier to separate ppa stuff from image stuff) if someone wants to do a gimp-print PPA backend. 20020311 duncan lots more (incremental) reworking of cutswath.c; now it's pretty well modularized, reading the input image constructing the sweep data, constructing the nozzle data, are all done in separate functions now. Also, modified image.c so the the expansion of data to ppm format (three bytes per 8 dots) is not done for pgm or pbm input (unless the -p option which uses colored ink to make black, and disbles the black ink is used). a new global variable gByteCount = 1 or 3 distingushes the two types of intermediate data format. Also still TODO: I finally understood that the striping of black parts of the image when e.g. the gs example file "tiger.ps"is printed in high-quality mode is because the color and black sweeps are not aligned, so sometimes the color prints on top of black, sometimes the color prints underneath black. If both types of ink are to be used at the same place, the simple solution is probably to prevent black sweeps getting ahead of unprinted color in ppaprint_page() in cutswath.c. 20020526 duncan solved the striping problem; reworked cutswath.c so black ink is never overprinted by color ink. 20020601 duncan reworked the code that prevents color swaths and black swaths from having vertical_pos that differs by 1, 2 or 3 lines (needed for HP820C). (to go with the new swath-cutting algorithm). Added a method for recognising if input is a calibration page produced by calibrate_ppa, as these dont work correctly with the new swath-cutting algorithm. (will restore a "legacy-style" (pnm2ppa-1.04-style) method for printing input that is detected to be calibration pages) 20020610 duncan added a method for storing info on lines as they are read from the image. (whether they have black, and/or color data, etc.) Helps a lot! final fixes to calibrate_ppa. new code seems to work 20020623 duncan added a new command line option --dpi300 that interprets input resolution as 300dpi instead of 600dpi 20020930 duncan enable compression of (color) data by default (only compression of black data was previously enabled). added a configuration file keyword "compression" to switch it off, in case there are problems ... (color data compression seems to work on HP722C!) 20021005 duncan disable logging of informational syslog messages by default. They can (only) be reenabled by "log_info 1" in the default configuration file /etc/pnm2ppa.conf. (They will still go to stderr in "verbose" mode). 20021109 duncan make "version 0" in the config file set the printer type to NOPRINTER, and abort printing if this is not subsequently set to a valid printer model. 20091210 jrbeis fix getopt_long() usage for PowerPC Change the local file syslog.h to ppa_syslog.h to avoid any interference with the global syslog.h. 20091212 jrbeis Autotoolize the package, but do not change other code