Changes to hp2xx:
=================
3.4.4 : 03/06/22

Source indentation (indent -kr -i8) and removal of some dead code.
Added missing menu entry for 'DXF specifics' in Appendix B of the texinfo
source, updated revision number. Updated manpage and reran texi2html to 
update the html version of the texinfo documentation. Corrected drawing 
of filled wedges (WG command, broken by polygon buffer rewrite in 3.4.3). 
Moved version information from hp2xx.c to hp2xx.h to give output drivers
access to the version number if desired.

3.4.4a9:
Changing the to_png.c 'colour' to an unsigned char in 3.4.3 broke color
PNGs. SP commands in PE mode did not yet update the pen count (important
for raster palette sizing). Added new commandline option -M <pen number>
for remapping of pen 0 drawing commands to any other (ideally unused) pen 
- this is just a workaround for the 8bit palette limitation of the raster 
buffer, which cannot hold 256 colors plus 'empty' background. (Without 
this option, HPGL files that use pen 0 for actual plotting change the 
background color of raster images to its color as a side effect. 
Vector modes are not affected as they do not use a background color).

3.4.4a8:
page_number was not incremented correctly, especially it should increase
at end-of-file to match the multi-page selection algorithm.

3.4.4a7:
adapted the optional ttf character plot functions to Bitstream Vera Mono,
added commented-out section for ttf support to makes/generic.mak.
Arcs with 'deviation distance' tolerance were seriously broken due to an
embarrassing typo (badly placed braces).

3.4.4a6:
hp2xx incorrectly assumed that any user-defined label terminator should
automatically be printed, mishandled DT without parameters (Rich Pasco), 
and completely ignored the optional second parameter in the DT command. 

3.4.4a5:
Using the -ansi flag with gcc (even suggested by the generic Makefile) would
make it ignore the prototype of the hypot() function on some if not all 
platforms, resulting in a practically unusable binary (NaN in calculation
of image width or height, picbuf overflows in raster modes, etc.). Removed
-ansi from the gcc CFLAGS in generic.mak and added an #ifdef case for the
__STRICT_ANSI__ macro that is set by -ansi to the declaration of HYPOT in 
hpgl.h. Added another workaround for cases (typically labels) where the 
(stupid) wide line miter code would kick in prematurely, adding spurious
lines to the image.

3.4.4a4:
Reduced the default miter limit in the eps and pdf modes from the arbitrary 
"100" value to 5 to remove strange artefacts particularly visible in text 
rendering. Changed the circle renderer to generate overlapping circle segments 
(needed to render complete circles at huge linewidths) only when not in 
polygon mode. Polygon fillcode was propagating its internal linewidth/spacing 
settings to the general linedrawing code (which could then overflow the raster 
buffer, without adding actual content to the image). Fixed several 
inaccuracies and inconsistencies in the polygon fill code (particularly for 
vertical fills) uncovered by Eugene Doudines new fill.plt test case. 
Special flag S=4 in esc/p2 output now invokes the new color selection commands
for six-color Stylus Photo printers (untested - but a Photo1290 only advances
paper with the old driver).
Fixed some cases in the line pattern generator where a double was compared against
exact zero - which does not work as intended on some platforms such as Solaris.

3.4.4a3:

Documentation fixes and updates. Polygon lines were not clipped in some 
cases. Simplified HPGL output could create illegal HPGL (by using exponential 
notation for very small coordinates). Added (optional) conversion of pen 
number and/or width to DXF line color, added more DXF header items
(Georg Viehoever). Made HPGL error handler print 20 characters around the
unparseable command before quitting - the sequence number information alone
was useless for real-world files.


3.4.4a2:

Removed a few debug printf statements introduced in a1. 
Changed PJL header parsing to support linelengths up to the 256 characters 
required by the PJL standard (Eugene Doudine). Added support for the rectangle
mode of the PE statement (Eugene Doudine). Treat NR as a frame terminator
(like PG,AF,AH) instead of just ignoring it.


3.4.4a1: 11.2.03

Revived the 'STROKED_FONTS' stubs in chardraw.c by attaching a truetype
font renderer to them. Requires freetype2 and a fixed-width truetype font
such as the LucidaTypewriterRegular.ttf font included with the Sun Java 
Runtime Environment (not included here - check licensing conditions).
Fixed two bugs in the scanline renderer that could cause it to fill the gaps
in a complex object. Saving and restoring the pen width when drawing characters
requires the current (parse-time) penwidth to be updated (and not just to 
place a command to update the penwidth in the temporary file, which will only
be read at render time) - this is now done by Pen_Width_to_tmpfile(). 
Both xfig and rgip modes were lacking a handler for the pencolor (DEF_PC) 
directive (and would fail on colored input). The rgip mode was still using 
wrong penwidths. Added lots of typecasts and typing fixes suggested by 
'splint -weak'. Removed the '-m486' compiler switch from my personal Makefile
(the one in sources), as some people try to use it directly instead of adapting
the generic one from the makes directory. Added a 'lint' target for code 
checking to same Makefile. Fixed bug that prevented -p with numeric argument
instead of the new A-Z range from working.

3.4.3: 02/12/29

Documentation updates and source indentation.

3.4.3a26:
Silenced the "unknown escape sequence" warnings in quiet mode. Added new
output mode for CNC G-code (experimental, constant depth)(Michael Rooke).

3.4.3a25:
Small improvements in PCL3GUI support (still not really working, best result
had the designjet500 print strips of the desired image separated by equally 
wide blank areas (it is unclear whether this is due to extraneous paper feed 
commands or to the fact that its native resolution is 600x1200 while the test
case was 600x600dpi). Suppressed miter code for dotted line ends, where it is 
unnecessary (this also works around the remaining bug that could cause stray
lines particularly in characters). Made character stroke width independent of
pen linewidth by default. Implemented kind=6 (stroke width) function of the 
SD/AD command (-7 to +7 translated to 0.01 ... 0.21 mm penwidth, defaulting 
to 0.11 which is close to the hp2xx default penwidth of 0.1. SD6,9999 copies 
current PW value). Handle arc commands with an eps value given as zero (Steve 
Edmonds)

3.4.3a24:
Wide line miter code still swapped near and far end of preceding line at
will. Hopefully fixed for good now. PCL3GUI does not work yet - best result
had the designjet500 move its printhead across the page several times without
printing or even advancing the page.

3.4.3a23:
Simplified HPGL output (-mhpgl) did not honor any rescaling done with -h,-w.
Added experimental initialization code for HP 'PCL3GUI' devices, and new -I
command to select it (spells taken from gimp-print, incantation possibly not
quite right).

3.4.3a22:
Fixed a bug in the miter fill code that could cause gaps in the filled area.
Modified circle drawing code to create an overlapping segment to join the
first and last segments when drawing wide lines. Modified polygon_PicBuf to
draw fill lines directly instead of calling the bresenham code. Removed all
references to (l)rint as they only created portability problems. Line join
logic should be correct now.

3.4.3a21: 
Some code cleanup (Andrew Bird). Modified criteria for drawing miter sections
to fix some cases where non-consecutive lines were erroneosly joined. Improved
sorting of miter region corners. Still have some pathological cases to study.

3.4.3a20:
Reduced the default raster mode miter limit. Added preliminary code for 
triangular and square line ends.

3.4.3a19:
Revised the 'butt miter' code for wide lines - the implementation in a17 was
working more by accident than by design. Caught special cases of PS with zero
pagewidth and of blank IW; with default values of P1,P2 .

3.4.3a18:
Small changes to improve numerical stability - the LPattern_Generator 
could enter an endless loop on Sun/Solaris due to comparisons of small 
floating-point numbers with exact zero (special thanks for Michael Geary
for access to his Sun).

3.4.3a17:
Fixed incompletely applied patch for endcap selection in a16. Added 
experimental code for filling the miter section on wide lines to correct
the rendering of arcs and circles drawn with wide pens (replaces the arcs
hack of a16). Fixes size_PicBuf (buffer could be one pixel line too small
depending on penwidths and line endings - this will probably need more work
when (if) we do mitering).

3.4.3a16:
Reverted line end changes from a15 (thin lines should already be handled in 
other parts of the code, only this was broken in the raster modes). Modified 
IW handling again to accomodate another case. Adapted initialization of line 
parameters in eps and pdf modes for multiple input files(Andrew Bird). Added
bad hack in arc drawing code as a temporary workaround for the missing miter
support in the raster modes (switching to round ends even for wide lines to
avoid leaving holes between the segments of the arc). Another ugly hack now
allows specifying penwidths beyond 0.9mm on the commandline by using capital
letters (A being 1.0mm, and Z 3.5mm). Keep EP from drawing the final edge
if it was created by implicit closure while in pen up state (fixes files
generated by transfig, which were broken by the addition of implicit closure
support). Probably need to keep track of penstate for individual edges - EP 
edges only pendown moves, while FP fills regardless of penstate. Made frame
selection in multi-image files (-P option) work again. 

3.4.3a15: 
Fixed bug in a14 that set all pencolors to black unless explicitly defined
using -c. Rewrote IW parameter shuffling to fix all known cases including
those that a14 broke.  Line ends were erroneously defaulted to butt-shaped 
instead of rounded for thin lines. Reduced pensize used for polygon fills, 
and removed check for duplicate intersections. Removed leftover file named
sources/outfile that had somehow crept into the a14 source tree. Fixed 
output format for linewidths in svg export. Applied HPGL-to-MM scaling factor
to SVG viewbox, not just to the coordinates (Robert Hancock). 

3.4.3a14:
Reset default colors only if they were not overridden by the -c option.
Reset penwidths and IW clipping flag between plots.
Fixed several memory leaks in output filename generation and png output. 
Fixed PJL header misinterpretation introduced with the treatment of unknown 
esc sequences. Added missing $(EX_DEFS) in HPUX section of generic.mak.
Added special treatment of AF/AH as for PG (AF at end caused crash). Fixed
IW handling for P2<P1. 

3.4.3a13: 
reset outfile name between files in multiple-file mode (unless a common
basename was declared via -f) to ensure generation of correct output file 
names.  Reset default pencolors on IN or DF.

3.4.3a12:
S1,S2 were not initialized by IP (Problem uncovered in a11, and reported by
Bengt-Arne Fjellner). Usage message was printing zeroes for the penwidth
string. Rephrased the description of the penwidth and color options - it now
mentions the relation between digit position and pen number, and lists the
corresponding colors for 0-7 instead of refering to the manual. Also mentions
that the range of valid output modes is a property of that particular binary.
More cleanup of to_pdf.c and equivalent changes to to_eps.c (color, miter,join
support) by Andrew Bird. Updated documentation. Added line cap/join support
in to_fig.c, adapted minimum linewidth requirements to get it to draw normal
width lines again. Moved calculated anchor point for polygon fills by 0.5 units
to avoid missing borderlines. Added sanity check for out-of-area scanlines to
the vertical fill function as well.

3.4.3a11:
Rectangle drawing was broken by the vertex buffer changes in a8. The multi-file
mode added in a10 crashed in previews because it tried to generate output file 
names. Added an instruction counter for HPGL commands - this also helps decide
whether to generate another output file (otherwise PG at end would be required)
a10 based that decision on the number of commands currently in the temporary
file, but this may change depending on how many initialisation code is moved 
there. Moved the line attribute initialization from the temporary file to
global parameters (need to check back with Andrew Bird if this is correct).
Changed wedge code to use the polygon buffer instead of private storage.
Added experimental line join/miter support in PDF output (Simon Milton,using
the framework already built by Andrew Bird). Moved call to init_HPGL to ensure
it is called only once even for multiple files (else PG would imply IN).
Some cleanup in PS/IW/RO - all files from my collection can be rotated without
undue clipping again. Esc E is no longer flagged as an invalid sequence.
Andrew Bird cleaned up to_pdf.c, using filled circle for PLOT_AT instead of
short line. Added OW (output clipping window) command.

3.4.3a10:

another change in the endless RO/IW saga. And a fix for IP with P2.y < P1.y.
Added a loop in std_main/hp2xx.c to allow dissecting plotfiles that contain
several images. Previous versions would plot all in the same frame, now you
get a neat set of numbered output files (or a slideshow-like preview). Replaced
the tmpnam() in to_tif.c with a mkstemp/dup combination - not sure if anybody
even wants to send TIFF output to stdout, as most if not all viewers will need
random access to the image because of its complicated structure (which is also
the reason why we need a temporary file here at all). This is mostly to silence
the annoying warning in GNU ld, and non-Unix platforms still use the old,
potentially insecure code for portability reasons. Added support for IR, but
this is largely untested as i have yet to find a file that does more than
the default "IR0,100,0,100". ifdef'd out Werntges' sanity checks on the 
of -o/-O offsets in std_main.c. There may well be valid reasons for negative
offsets (printing on DJ970cx is said to be a case), and maybe even for offsets
bigger than the width or height of an A4 page.

3.4.3a9:

still looking for correct defaults for AC. Reactivated polygon vertex storing
code in line() - not sure if the real problem is with PM1 handling. The code
i added to support Color Range caused strange colors for all but the primary
colors, as i managed to invert the scaling factor. Ouch. Added 
TIFFTAG_ROWSPERSTRIP to the TIFF header in to_tif.c - apparently required 
by the standard, definitely required by at least one program. Value seems
to be -1 by definition for compressed files, and happens to be 1 for the
uncompressed files because all the code does is dump the individual scanlines. 
The 'pentip dots' introduced for PUPDPU sequences got drawn for PDPA as well,
which messed up the drawing of dashed lines (pattern disruption between what
should be consecutive lines, as the dot drawing forced a move command)

3.4.3a8:

moved the vertex adding stuff to a new function that updates the extents of
the drawing as well - previously vertices that were only used as boundaries
for filling, not edging, polygon, did not enter into the size calculation.
Tried to achieve a more sensible initialization of AC - 0,0 as in alpha7 is
plain stupid, but the "physical extents" is a somewhat dubious thing in hp2xx,
and the actual limits are not yet known when the IN or plain AC is seen.
Modified the warning message code to make sure that the "unsupported charset"
message is printed only once per SD, not once per character.
The seeming IW brokenness was not in hp2xx but in the program that created the
strange test file, so i have reverted the change from a7, which makes some
correct files display again.
Some fixes by Bengt-Arne Fjellner: usage message was printing garbage 
in description of -p (because of penwidth type change), EMF files were 
upside down, and microsoft platforms seem to need a replacement for 
rint/lrint (actually some non-MS platforms may need this as well - not sure 
if everybody does obey C99 already ?).

3.4.3a7:
Stray Escape chars in the HPGL code are reported and ignored (one guy was 
trying to use esc-prefixed commands in his code because he was too familiar 
with PCL). Guess what, there was still some brokenness in IW/SC handling.:-(
Fixed some wreckage from the penwidth type change in to_emf.c and added the
ability to create EMF files on UNIX with libEMF. Added VS and CR support.
Added -e for extra margin around IW (at least one commercial code miscalculates
its clip boxes, cutting of text from spectra). FP with --nofill now does EP,
so fat lettering done with just FP does not simply vanish.

3.4.3a6:
PM2 now closes open polygons automatically. Anchor corners for fill patterns
were defaulting to P1 which could be undefined or unsuitable at that time.
Added some whitespace between operators and constants to work around what
is most probably a compiler bug on HPUX 11 with ansi CC.
 
3.4.3a5:
Most of the LA line ending options are now supported, thanks to Andrew Bird.
X11 previewer was leaking memory when zooming, but valgrind found that.
to_pdf sometimes got confused about when to begin and end its stroke paths.

3.4.3a4:
PJL preambles with more than one Esc sequence confused the HPGL parser.

3.4.3a3:
Several optional arguments to SD,AD and BP were not handled, causing strange 
results.  Extremely short lines could confuse the line pattern generator 
into drawing the gaps instead of the lines. 

3.4.3a2:
Andrew Bird implemented a "fat bresenham" to draw true linewidths in the
raster modes.

3.4.3a1:
Ignore broken SC. Fix AC to not always calculate scan lines across the 
whole canvas for each polygon. Use 8bpp pixel buffer only if large pen
numbers are actually used, not just defined - lots of programs do NP255
by default. Fixed stupidity where IW/RO interaction could cause unwanted
image cutoff on rotation. to_pdf could overflow the y coordinate, inverting
one half of the image onto the other. Dots for PUPDPU were not clipped by IW.
to_dxf now writes a more elaborate header. 

V 3.4.2, 02/04/15:

Added support for AC and CT. Added color support to SVG output module, and
added a new output module for JPEG images, based on libjpeg.
Bugfixes: 
- SVG output mode could not be selected on the commandline
- PDF and EPS modes were not always generating penwidth commands on pen changes
- Polygon mode was influencing the overall pen up/down state
- PM1 immediately after PM was not setting the new starting point correctly
- FT instructions did not store/recall hatch spacing and angle correctly
- X11 preview always used black for pen 1
- Polygon fill algorithm did not handle parallel bounding lines correctly,
  and could draw lines beyond the limits of the polygon in some cases.
- the commandline interpreter now handles mis-spelled or unknown long
  options gracefully (Serge Ivanchenko)
- PDF output was only about 1/3 the intended size
- handling of RO/IW was broken (again) for the unscaled case (no SC)
- PNG output was still using a fixed eight pen palette
- raster modes were limited to 15 pens due to restrictions of the internal
  picture buffer (higher pen numbers were either mapped to black or scaled
  to the accessible range, depending on output format)
- DXF output had leading whitespace in layer numbers (Patrice Pinel)
- EPS output still had oversized margins

V 3.4.1, 02/01/28:

call line_PicBuf with pt.width scaled by HP_to_xdots/10./0.025 to achieve
more sensible translation from metric penwidths to integer multiples of a
pixel in picbuf.c (Gerhard Buergmann; requires different pensizes correction
in size_PicBuf as well). Added function bezier for the cubic bezier curves
(BR,BZ) to hpgl.c - need real-world cases for testing. Added #ifdef'd code
to stdmain.c that opens stdin/stdout in binary mode on windoze. to_pcx.c
still had one of my eloquent fprintf statements from the debugging phase.
charset2.h was missing a comma in the declaration of the degree sign. 
Finally identified(?) Werntges' default setting of P1,P2 to A4-size paper 
with margins as the cause of strange offsets and bad cliping ranges. 
Joe Greens patch suggested using A3 dimensions (the largest size a 7550 could
handle), i've decided to try A0 unless that blows up something somewhere.
read_string() in hpgl.c was treating '\0', a valid no-op control character 
in HPGL, like an ordinary character, accidentally terminating the label at 
that point. Added charsets 9,30-39 (by selecting appropriate characters from 
sets 0 and 7). Changed status of 'CV' (curved line generator)  command from 
'unsupported' to 'not applicable' in hp_cmds.lst, as it is basically a pause 
command that makes no sense for an emulation. Modified X11 previewer to allow
terminating the program by keypresses or mouse clicks on the preview window,
and to allow moving(paning) about a drawing that is larger than the available
screensize (Based on patches and suggestions by Yuri Strelenko). Updated the
manual page. Changed load_pen_color_table to return -1 instead of 0 on failure,
as assigning and retrieving the color of pen 0 is a valid action in HPGL2. The
previous code would gladly store PC0,255,255,255, but panic with a spurious
'unexpected end of temp. file: SUCCESS' in the output module. Added the math
fonts (Ventura math and the related PS math), as they contain greek characters
and other symbols that might appear in scientific or engineering plots (after
receiving a sample file from Bengt-Arne Fjellner that used several characters
from ventura math). I do not claim to be an artist, and Werntges' encoding 
scheme does not simplify matters, but all glyphs should at least be 
recognizable. Added SVG output. Fixed some polygon-related problems.

V 3.4.0, 01/02/09:

case CI in hpgl.c did not yet feed the polygon buffer (and adding it
immediately uncovered a bug in fillpoly.c - needed to check for coinciding
start- and endpoint of fill lines, as they may occur for circle segments)
Default case in chardraw changed to substitute the corresponding font 0 
character instead of a blank - this makes much more sense at least for the
ISO 646 international fonts 30-39. Fixed the IW clipping of labels - scaling 
is now taken into account correctly. Added no-ops for EC (enable cutter) 
and NR (not ready, i.e. pause plotter).

V 3.4.alpha6, 01/01/08:

lindef.c had two SCHARS that should be ints, and abs that should be fabs.
In hpgl.c, case PS used MAX(myheight,xmax) when width was not given, instead
of p2.y. The case of height<width was not handled (rotates frame of reference),
we now simply swap width and heigth. The scale/rotate transformation was applied
twice, leading to unnecessary whitespace around plots (duplicate code - bah).
lines() now adds 'pen dots' only if the 'PU without parameters' occured as the
first command in its current invocation (to avoid acting on PD0,0,1,1,...,PU).


V 3.4.alpha5, 01/01/01:

Fixed a bug in the line() function - a stupid if-else sequence added two
MOVE_TOs instead of one when the iwflag was set. This made the pattern
generator reinitialize at each stroke of a polyline, ruining the line pattern.
Changed function lines() to create a small dot for PDPU sequences without 
lateral movement, as a real pen plotter would do. (Some oscilloscope software 
apparently dumps a screen image that way - ouch).
Andrew Bird found and squashed the real IW bug i introduced in with my code
cleanup and function prototyping in alpha3, and provided a rewrite of the 
linetype code, adding linetypes 7,8 and UL in the process. 


V 3.4.alpha4, 00/10/10:

Added linewidth handling code and TIFF compression selection via the -S
switch (both patches by Andrew Bird). Wrote similar handling scheme for
pen colors in the Postscript driver - handling the raster modes will be
much harder. Updated the documentation. Reverted some alpha2 changes to
the IW/SC/PS handling that could cut off half of the plot. Added small
tolerances to the clip ranges to avoid numerical problems. Added function
prototypes and fixed variable declarations. Revived the Epson driver (using
the excellent gimp-print driver by Kramitz et al. as documentation) so that it
actually does something. It is limited to A4 format and produces very slow-
printing code (using only one row of nozzles) at the moment, but at least 
it does not require ghostscript on the same machine. Cleaned up the fill code
a little. Since alpha2, some input paths were accepted without creating an 
appropriate name for the output file.

V 3.4.alpha3, 00/08/??:

Added forgotten references to fillpoly.(c,o) to all Makefiles.
Changed pattern definition for LT-2 in LPattern_Generator (lines were 
twice their expected length) (John Reeve). Reinstated scaling of XT/YT
tick marks in the special case of SCaling (bug introduced in 3.3.0 by a
well-meant fix for the non-SC case). Added command line switch to turn
off the polygon filling code.

V 3.4.alpha2, 00/07/20:

Fixed several numeric problems in the scanline fill code, and removed
(commented) the debugging code that stored outlines and scanlines in the
temporary file. Adapted penwidth correction for picbuf to new decipixel
width scheme. Fixed PW code to map penwidths less than 0.1 to .1 
Added a patch to provide a message window for the OS/2 viewer. Added build 
instructions for NT. (both untested by me)
The X11 previewer no longer aborts when the preview window exceeds
the size of the screen.
Changed the outfile name check from isalpha to isascii to allow relative
filenames and names that start with a number. Fixed the broken header code
in the new epson module, but still did not get it to work. I will probably 
drop it again from 3.4, unless i receive requests and/or documentation for 
esc/p2 output. 

V 3.4.alpha1, 00/03/05:

Added ER (edge rectangle relative), WU (pen width unit) and the 'arc through
three points' commands AT and RT. 
Started work on polygon and fill modes - FT (filltype), PM (polygon mode), 
EP (edge polygon), FP (fill polygon), WG (filled wedge), RA (filled rectangle 
absolute) and RR (filled rectangle relative).
User-defined fill types are not yet supported, and the handling of pattern 
angles is not always correct.
Fixed a problem with IW after SC - IW parameters were always treated as
plotter units, but SC imposes user units (reported by Gerhard Buergmann).
Incorporated a set of patches provided by Eugene Doudine that make the
parser more robust by checking both characters of a command and providing
an error exit for broken PE parameters (previously hp2xx could get into an
endless loop getting and ungetting characters from the input). His patches
also rearrange the line drawing functions (PE_line removed, lines reduced
to reader part for PU/PD/PA, new function line() as common backend with
clipping etc.), add anisotropic scaling support (SC types 1 and 2) and
parser functions for PJL and RTL headers.
Investigated PCX colormap problems reported by Christian Steigies - the
current code in to_pcx.c is not really suited for output of non-primary
colors, and the palette seems strange. Changed a few palette entries so
that black-and-white plots do not get a dark red background and switched
back to the original color masking code. Should probably switch to PCX5
24bit image generation (better PCX format documentation needed).
Started work on an Esc/P2 output module for the Epson Stylus inkjet
models, which do not understand PCL. Untested and probably does not work.


V 3.3.2     , 00/02/12:

Added flags to make the command line options -c and -s override any PC or PW 
commands in the HPGL file. (One can now force monochrome output from a color 
hpgl file again, and work around silly programs that use global PW at every 
pen change). Fixed autoscaling of plot in landscape mode and interpretation
of PE pen change commands. Removed artificial A4 page limitation in Postscript
mode. Documented the automatic selection between PBM and PPM file formats 
done in pbm mode. Changed color for 'black' pen in to_x11.c from (light) 
gray to gray10. Added TIFF output module provided by M.Liberi after changing 
requested compression from LZW to DEFLATE, added TIFF and PNG defines to 
generic.mak. Added support for DV (vertical text).

V 3.3.1     , 99/11/20:

Changed handling of PS/RO to finally(?) eliminate the scaling problems.
Corrected xfig file header (had FIG3.2 title but 3.1-style parameters). 
Added Solaris/SunOS 5.x options for generic.mak (suggested by Wolfram Wagner),
fixed all files in generic.mak that did not yet include to_fig.c and clip.c.
Fixed DR/DI implementation to do correct initialization when called without 
parameters, changed text height factor to better resemble plotter output, 
(re)allocate LB strings dynamically instead of imposing arbitrary limit on 
label length (patches supplied by Georgy Salnikov). Completed PE support.
Cosmetic changes to compile without warnings with gcc -Wall. 
Added Michael Schmitz' current email address in to_png.c.

V 3.3.0     , 99/09/30:

Corrected scaling of PS with RO and -r. Corrected positioning and scaling
of clipping box for LB with IW. Removed BF from the list of unsupported 
commands, as none of my HP-GL references mentions such a command.

V 3.3 ALPHA2, 99/09/12:

Corrected interpretation of PW (parameter list was backwards and there
was no provision for the 'default' cases),  added support for NP and
>8 pens, added PS (plot size) command to accurately reproduce page
position, added EW (edge wedge) command support. Removed improper scaling
of tick marks in ax_ticks(). Corrected rect(), which was advancing the
pen position after an EA.

=====================================================================

V 3.3 ALPHA,  99/09/01:

Incorporated PNG support (patches by Michael Schmitz as packaged
by Lars Koeller for FreeBSD) and partial support for the PE command
(by Eugene Doudine). Added more character sets, so that 0-7 are now
supported (although some glyphs may be ugly or even wrong, they were
drawn after the small illustrations in an old plotter manual). Added
PenColor and PenWidth commands from HPGL/2 (not yet supported in the
old Sun and OS/2 output modules - help needed for these platforms).
PCL initialization sequence changed to use maximum available area in
"-t" mode and generate paper selection commands for formats larger than
A3 (untested).

=====================================================================


V 3.30.0, 99/01/31: (unreleased) 

First version packaged by new maintainer (this is what you get when you
ask where to send patches for an orphaned project).
Output functions for xfig (by Ian McPhedran) and gnuplot (by Emmanuel Bigler).
Support for the HP-GL commands IW (clipping) and CS (character set selection),
implementation of character sets 5 (Special Symbols) and 7 (HP Roman8 
Extensions), and support for 8bit addressing of charset 7 from charset 0.
PCL initialization sequence now includes appropriate paper size selection 
when in "-t" mode (European A4 and A3 formats only), as some (most?) printers 
do not select the larger size automatically.



======================================================================

NOTES:
     o  Intermediate versions have not been made publicly available.
     o  Letters at end of version number indicate small changes like
        source restructuring or minor bug fixes.


V 3.20a, 94/02/15:

This release contains major modifications. Besides a lot of cleamup it
deals with the introduction of high-level functions which represent
the different conversion phases of hp2xx. These may be called by *any*
user front-end, not just the traditional command line interface.

My intention is to facilitate the introduction of various graphical
user front-ends. If you want to add one, study function "action_traditional"
and read the comments in "hp2xx.h"!


	-- hp2xx.h:     Re-structured! Options & parameters now separated into
	                three groups: General / for input / for output conversion
	-- hp2xx.c:     Now with high-level routines suitable for future
	                GUI front-ends.
	                CLI functions incl. main() moved to "std_main.c"
	-- std_main.c:  New file! Keeps functions for traditional command line interface.
	                PCL mode now also accepts 600 DPI.
	-- hpgl.c:      Bug fixed: Gap in min/max determination caused later crash
	-- to_pbm.c:    Color supported + compact binary format (by Ian McPhedran)
	-- most files:    o  Adapted to new parameter structs
	                  o  Re-organized
	                  o  Use of "const"
	                  o  Better error recovery
	                  o  Direct output to stderr now eliminated (see std_main.c)
	Plus all changes later than 3.14a


V 3.15a, 94/01/02:

    Suggestions by Lawrence Lowe:
	-- to_pcl.c.c:  Effects of -o -O with and without -i more consistent
	-- hpgl.c:      New option: -C (center mode); affects -o -O
	-- chardraw.c:  Symbol plotting now with more general symbol centering
	-- hp2xx.c:     Warning "DPI setting is no ..." suppressed in DeskJet modes
	-- hpgl.c:      Second parameter of ES now optional (default 0)


V 3.14b, 93/11/23:

	-- to_pcx.c:    Color mode working again - though CLUT still has no effects
	                (by R. Frahm, DESY, Hamburg)
	-- hp2xxinf.tex:More typos fixes


V 3.14a, 93/11/15:

	-- to_eps.c:    Code now closer to Adobe EPSF structuring conventions
	                (thanks to Nelson Beebe for his detailed report)
	-- generic.mak: install-exe --> install-bin
	-- hp2xxinf.tex:Typos fixes
	Plus all changes later than 3.13a



V 3.13c, 93/10/23 & 93/11/08:

	-- to_vga.c:    Fix in getchar()-handling; bug reported by
	                Uwe Girlich (girlich@aix520.informatik.uni-leipzig.de)
	-- hp2xxinf.tex:Typo causing makeinfo error removed

V 3.13b, 93/09/27:

	-- hp2xx.c:     Fix in autoset_outfile_name() prevents crash in pipe mode
	                Improved VAX/VMS "makefiles"

V 3.13a, 93/09/03:

	-- hp2xx.c:     Wait() --> NormalWait(); -m hpgl added; -Pn:m parser modified
	-- hp2xx.h:     A few new #define's (VAX-VMS needs them); rect() prototype
	-- hp2xx.c:     Wait() --> NormalWait(); -m hpgl added; -Pn:m parser modified
	-- hpgl.c:      Support for EA (rect() added)
	-- to_mf.c:     Mode 5 (Simple HP-GL) added
	-- to_pm.c:     Minor changes to match emx 0.8g header
	-- to_pcl.c:    Compression only in Deskjet modes
	-- to_uis.c:    Minor fixes
	Plus all changes later than 3.12a


V 3.12f, 93/07/20: (see ./fixes)

	-- hp2xx.c:     SilentWait() better adapted to UNIX pipes (A. Bagge)
	-- hp2xx.h:     A few prototypes added
	-- to_os2.c:    Updated (H. Szillat); working in combination with to_vga.c
	-- to_pcl.c:    TIFF compression (mode 2) added
	-- to_vga.c:    Minor adaptations
	-- generic.mak: Fix for OS/2 full-screen version


V 3.12e, 93/05/28: (see ./fixes)

	-- hp2xx.h:     "Binary vs. text mode" finally added for OS/2, too
	-- to_os2.c     (by H. Szillat) added to distribution
	-- generic.mak: Minor improvements around OS/2, emx versions


V 3.12d, 93/05/20: (see ./fixes)

	-- hpgl.c:   Bug fix for LB/PR problem (by W. Eric Norum),
	             LT1 pattern adjustment
	-- to_eps.c: BoundingBox corrected for max pen width
	-- to_pcl.c: Code for end-of-raster-graphics corrected
	-- hp2xx.c:  Option --version added (GNU standard)


V 3.12, 93/04/17:

	-- New makefile for ATARI
	-- ATARI only: Support for mode "cs" (Chr. Strunk's TeX specials)
	-- New ATARI previewer
	-- charset.h: `0' without slash now, according to HP-GL charset 0
	-- chardraw.c:
		Prepared for multiple fonts;
		Bug fixed: 8-bit char codes won't crash hp2xx
		plot_user_char() added (code by A. Treindl)
	-- hpgl.c:
		Arcs/circles now properly closed (occasional tiny gaps removed)
		Bug fixed: SC followed by draw (without move) misplaced a point
		Serious bug fixed in the line type (LT) pattern generator
		Exception fixed in LT pattern generator
		hypot() problem fixed (DOS)
		UC supported
	-- picbuf.c:
		Always use 4 bits per pel in color mode (and 1 in b/w mode)
		New encoding scheme for color codes:
			nybbles instead of bit planes
			--> more mem, but faster access in color mode
		Obsolete type "DotBlock" finally replaced by "Byte"
	-- to_pcl.c:
		CMYK color support (for HP Deskjet 550C) added
	-- to_mf.c:
		Bug fix in "cad" mode (\emline statement lines now end with '%')
	-- to_eps.c:
		VM report lines are suppressed in 'quiet' mode
		BoundingBox: improved rounding (using floor and ceil)

	-- Much better generic makefile for many UNIX systems;
		   improved special makefiles
	-- Files re-organized (./extras removed):
		"amigalib.zoo" now distributed as separate file
			"hp2xx.amigalib.zoo"
		HGC support now distributed in separate file
			"hp2xx.hgc.showit.zoo"
		Other sources moved from ./extras to ./sources

V 3.11, 93/01/17:

	-- New makefile for Amiga
	-- Root directory renamed to hp2xx311 to make life easier
	   for DOS-based people
	-- File ownerships now rw-rw-rw
	-- code_to_ucoord() in chardraw.c:
		Reported bug (on RS6000 ONLY!) fixed

V 3.10, 93/01/09
	First release of sources as hp2xx.3.1.0.tar.Z under GNU conditions!!
	CMY color for Deskjet (PLC), option -S now with parameter;
	minor corrections

V 3.03a, 92/12/14
	Long options & "true size" mode (-t) added

V 3.02c, 92/12/10
	Range of pages (-P a:b) permitted now
	New mode: "cad" for TeXcad code!

V 3.02a, 92/10/20
	HPGL command LT (line type) now fully supported; bug in eps mode removed.

V 3.01d, 92/06/08
	HPGL commands SM, TL, XT, YT supported

V 3.00f, 92/05/25
	Up to seven colors (some modes)! Multiple-input handling; log files;
	auto-generation of output file names; output to stdout via "-f-"

V 2.20d, 92/04/14
	Symmetrical use of -h (height) and -w (width) options, new defaults:
	200 [mm] for both -h & -w. Picture will always fit into a window
	given by -h and -w

V 2.20c, 92/03/03
	Arcs, circles, fonts (Charset 0), pages, and many more commands supported
	ATARI-ST binary file added (only old version of hp2xx - sorry)
	DOS/386 binary file added (compiled with DJ Delorie's GNU-C version)
		WARNING: hp2xx386.exe's previewer tries to activate 800x600 SVGA mode!
	New modes: -m em (emTeX-specials), -m epic (epic macro \drawline)
	Modes pic & pac only supported in (outdated) ATARI version
	HPGL parser much easier portable and more tolerant to HPGL syntax variations
	Bugs in character scaling fixed; LO now fully supported

V 2.18e, 92/02/06
	X11,Sunview,ATARI: preview; IMG format supported;
	HPGL parser improved

V 2.17, 92/01/12
	Some debugging; more coherent sources, but no functional changes

V 2.16a, 91/11/21
	ATARI mode reduced again to simple "pic" format,
	support of "LT;", "LT0;" (for point plotting),
	support of different pens ("SP;", "SP0;"..."SP8;"),
	internal changes (faster now), more flexible MF syntax

V 2.14b, 91/10/10
	ATARI mode: New file name convention, adapted to STAD
	hp2xx.dvi:  Now part of distribution package

V 2.14a, 91/09/08
	ATARI ST support added.

V 2.13a, 91/06/30
	PostScript support added.
	Warning: Due to lack of local resources, PostScript format could
		 not be thoroughly tested. Please consider the PostScript
		 part as in "beta" state and report all problems.

V 2.12,  91/06/20
	First external release!
	Rotate option added, debug code removed
