1\input texinfo      @c -*-texinfo-*-
2@c Copyright (c) 1992 - 1994  Heinz W. Werntges
3@c Copyright (c) 1998 - 2000,2001,2002,2003  Martin Kroeker
4@c %**start of header
5@setfilename hp2xx.info
6@settitle HP2XX, A HP-GL Converter
7@setchapternewpage odd
8@dircategory Miscellaneous
9@direntry
10* HP2XX:(hp2xx).		Conversion of HP-GL graphics into raster and
11				vector graphics formats
12@end direntry
13@c @smallbook
14@c @cropmarks
15@c %**end of header
16
17@finalout
18@syncodeindex ky cp
19
20@tex
21% \def\$#1${{#1}}  % Kludge: collect RCS revision info without $...$
22\xdef\manvers{$Revision: 1.4 $}  % For use in headers, footers too
23@end tex
24
25@c HP2XX CHANGE LOG:
26@c 92/06/11  V 0.90  HWW  Originating; derived from GDB.info V 4.04
27@c 92/07/14  V 0.91  HWW  Various additions
28@c 92/10/21  V 0.92  HWW  Update on "LT;" which is now supported,
29@c                        Acknowledgement of RMS's comments on the manual
30@c 92/12/13  V 1.00  HWW  Cleanup work; mode "cad"; flag -t; acknowledgement
31@c 93/01/09  V 1.01  HWW  Option -S; long options; acknowledgement; install
32@c 93/04/14  V 1.02  HWW  Option -S4; UC support
33@c 93/09/02  V 1.03  HWW  EA support; RGIP & HPGL modes; DJ5x0: data compression
34@c 93/11/23  V 1.04a HWW  Typos fixed
35@c 94/02/15  V 1.04b HWW  Option -C added
36@c 99/08/01  V 1.10  MK   Updated for 3.30 (new options, new HPGL commands)
37@c 99/12/01  V 1.11  MK   Updated for 3.31 (HPGL commands,acknowledgements)
38@c 00/02/06  V 1.12  MK   Added notes on relation between -c/-s and PC/PW
39@c                        and on auto-generation of ppm files in pbm mode
40@c 00/09/20  V 1.2   MK   fixed INFO-DIR-ENTRY, updates for 3.4.0
41@c 03/06/21  V 1.4   MK   updates and fixes for 3.4.4
42@c THIS MANUAL REQUIRES TEXINFO-2 macros and info-makers to format properly.
43
44@c
45@ifinfo
46This file documents the HP-GL converter HP2XX
47
48@c !!set edition, date, version
49This is Edition 1.4, June 2003,
50of @cite{Using HP2XX: A HP-GL Converter}.
51
52Copyright (C) 1998 - 2003 Martin Kroeker
53Copyright (C) 1992 - 1994 Heinz W. Werntges
54
55Permission is granted to make and distribute verbatim copies of
56this manual provided the copyright notice and this permission notice
57are preserved on all copies.
58
59@ignore
60Permission is granted to process this file through TeX and print the
61results, provided the printed document carries copying permission
62notice identical to this one except for the removal of this paragraph
63(this paragraph not being relevant to the printed manual).
64
65@end ignore
66Permission is granted to copy and distribute modified versions of this
67manual under the conditions for verbatim copying, provided also that the
68accompanying file named COPYING which contains the ``GNU General Public
69License'' is included exactly as in the original, and provided that the
70entire resulting derived work is distributed under the terms of a permission
71notice identical to this one.
72
73Permission is granted to copy and distribute translations of this manual
74into another language, under the above conditions for modified versions,
75except that the abovementioned file COPYING containing the
76``GNU General Public License'' may be included in a translation approved
77by the Free Software Foundation instead of in the original English.
78@end ifinfo
79
80@titlepage
81@title Using HP2XX
82@subtitle A HP-GL Converter
83@c @subtitle on XXXX Systems
84@sp 1
85@c !!set edition, date, version
86@subtitle Edition 1.4, for HP2XX version 3.4.4
87@subtitle June  2003
88@author by Martin Kroeker (previously by Heinz W. Werntges)
89@page
90@tex
91{\parskip=0pt
92\hfill mk@@daveg.com\par
93\hfill {\it Using HP2XX}, \manvers\par
94\hfill \TeX{}info \texinfoversion\par
95}
96@end tex
97
98@vskip 0pt plus 1filll
99Copyright @copyright{} 1998 - 2003 Martin Kroeker
100Copyright @copyright{} 1992 - 1994 Heinz W. Werntges
101
102Permission is granted to make and distribute verbatim copies of
103this manual provided the copyright notice and this permission notice
104are preserved on all copies.
105
106Permission is granted to copy and distribute modified versions of this
107manual under the conditions for verbatim copying, provided also that the
108accompanying file named COPYING which contains the ``GNU General Public
109License'' is included exactly as in the original, and provided that the
110entire resulting derived work is distributed under the terms of a permission
111notice identical to this one.
112
113Permission is granted to copy and distribute translations of this manual
114into another language, under the above conditions for modified versions,
115except that the abovementioned file COPYING containing the
116``GNU General Public License'' may be included in a translation approved
117by the Free Software Foundation instead of in the original English.
118@end titlepage
119@page
120
121@ifinfo
122@node Top, Introduction, (dir), (dir)
123@comment  node-name,  next,  previous,  up
124@top HP2XX, a HP-GL Converter
125
126This file describes HP2XX, a converter of HP-GL plotter data into
127some vector and raster formats
128
129@c !!set edition, date, version
130This is Edition 1.4, June 2003, for HP2XX Version 3.4.4
131@end ifinfo
132
133
134@menu
135* Introduction::
136* Basics::
137* Advanced subjects::
138* Installation and modification notes::
139* Appendix A::                          Known HP-GL commands
140* Appendix B::                          Option summary
141* Appendix C::                          Acknowledgement, Copyright notice
142@end menu
143
144@node Introduction, Basics, Top, Top
145@comment  node-name,  next,  previous,  up
146@chapter Introduction
147
148@menu
149* Invoking hp2xx::          How to run hp2xx
150* HP2XX for the impatient:: Learning to use hp2xx by examples
151@end menu
152
153The @code{hp2xx} program is a versatile tool to convert vector-oriented
154graphics data given in Hewlett-Packard's HP-GL plotter language
155into a variety of popular both vector- and raster-oriented graphics formats.
156
157The various supported output formats include Encapsulated PostScript (EPS),
158PCX, IMG, and several formats intended to facilitate the generation of
159graphics within @TeX{} documents.
160In addition, @code{hp2xx} output is printable on the HP Laserjet/Deskjet
161printer series and some Epson Stylus printers, and it may be used as a HP-GL
162previewer on many platforms, e.g. X11, OS/2, MS Windows and plain old DOS (VGA).
163
164@code{hp2xx} first converts all HP-GL data into pure vectors and buffers
165them internally. It then converts these vectors into a specified output
166format (vector modes), or rasterizes them (raster modes) on an internal
167bitmap. In raster modes, @code{hp2xx} then translates the bitmap into the
168output format.
169
170
171
172@node Invoking hp2xx, HP2XX for the impatient, , Introduction
173@comment  node-name,  next,  previous,  up
174@section Invoking @code{hp2xx}
175
176The format of the @code{hp2xx} command is:
177
178@example
179hp2xx [@var{options}] [@var{input-file/s}]
180@end example
181
182It follows the UNIX System V tradition of a filter, i. e., options begin
183with @samp{-}, followed by a single letter and an optional parameter.
184Options must appear immediately behind the program name and before the input
185file name(s) (if specified). If no input file is given, @code{hp2xx} reads
186from @code{stdin}. In addition to this traditional option handling,
187@code{hp2xx} also supports GNU-style long options and option/non-option
188permutation (@pxref{Appendix B}). However, throughout this manual
189all examples will only display short options.
190
191@code{hp2xx} writes to the output file whose name can be specified
192by option @samp{-f}. Without option @samp{-f}, @code{hp2xx} generates
193output file names from the input names and the selected mode
194(see option @samp{-m}). @code{hp2xx} writes to @code{stdout} if you supply
195a dash as output file name like in @samp{-f-}.
196
197
198
199@node HP2XX for the impatient, , Invoking hp2xx, Introduction
200@comment  node-name,  next,  previous,  up
201@section @code{hp2xx} for the impatient
202
203This section is intended to give those of you a quick-start who are
204quite familiar with traditional UNIX-style programs and with HP-GL and
205other graphics formats.
206The following examples will give you a good idea of @code{hp2xx}'s
207functionality. @xref{Appendix B}, the Option Summary, for further details.
208
209
210@example
211hp2xx foo.hp
212@end example
213
214Preview of HP-GL graphics in file @file{foo.hp}. The picture will
215fit into a square of 200 mm width, assuming that your output device
216(screen) features 75 DPI resolution (default).
217
218@example
219hp2xx -q -d86 -h160 -w220  foo.hp bar.hp
220@end example
221
222Multiple-file preview. Option @samp{-q} puts @code{hp2xx} into "quiet" mode.
223The picture will fit into a rectangle of 220 mm width and 160 mm height,
224assuming a 86 DPI resolution of the output device (screen).
225
226@example
227hp2xx -t -c12340567 -p12230412 foo.hp
228@end example
229
230Preview, size according to original HP-GL data (as on a plotter),
231with different pen colors and sizes. Color and width according to:
232@display
233  @code{Pen # : Color code     / Size (pixel)}
234  @code{-------------------------------------}
235  @code{  1   : 1 (black)      /    1}
236  @code{  2   : 2 (red)        /    2}
237  @code{  3   : 3 (green)      /    2}
238  @code{  4   : 4 (blue)       /    3}
239  @code{  5   : 0 (background) /    0}
240  @code{  6   : 5 (cyan)       /    4}
241  @code{  7   : 6 (magenta)    /    1}
242  @code{  8   : 7 (yellow)     /    2}
243@end display
244
245@example
246hp2xx -m eps -l a.log -h100 -w150 -p542  foo.hp bar.hp
247@end example
248Encapsulated Postscript mode. Files @file{foo.eps} and @file{bar.eps}
249will be created. The diagnostic output will be written into @file{a.log},
250so @code{hp2xx} works quietly. Both EPS pictures will fit into a
251rectangle of size 150 x 200 mm. The size (width) of
252pen 1: 0.5 mm, pen 2: 0.4 mm, pen 3: 0.2 mm, pen 4 ... pen 8: 0.1 mm.
253
254@example
255unix% cat foo.hp | hp2xx -m pcl -o30 -O50 -i -F -f- | lpr -P ljet
256@end example
257
258In this generic UNIX example, @code{hp2xx} reads HP-GL code from @code{stdin},
259converts it to HP-PCL which is suitable for direct output on any HP Laserjet
260printer, and pipes the output via @code{stdout} into the appropriate printer queue.
261Option @samp{-f-} forces @code{hp2xx} to write to @code{stdout} instead of
262a file, @samp{-i} initializes the printer before the output,
263@samp{-F} sends a FormFeed at the end of output. There will be (additional)
26430 mm left and 50 mm top margins. 75 DPI are assumed per default.
265
266@example
267hp2xx -m pcx -f foo3.pcx -d300 -h80 -w150 -r90 -P2:4  foo.hp
268@end example
269PCX mode. Output goes into file @file{foo3.pcx}. A limiting rectangle
270of 150 x 80 mm at 300 DPI is assumed. The picture will be rotated by
27190 degrees. Only pages 2 to 4 of the multi-page HP-GL source is used (each
272occurrence of HP-GL code @code{PG;} increments the internal page counter).
273
274
275
276@node Basics, Advanced subjects, Introduction, Top
277@comment  node-name,  next,  previous,  up
278@chapter Basics
279
280@menu
281* Modes of hp2xx::           Selection of the output format
282* Sizing your output::       Specifying width, height, page offsets etc.
283* Pen sizes and colors::     How to emulate pens of various thickness and color
284* Selecting a page (range):: Converting multi-page HP-GL files
285* Vector formats::           Further details
286* Raster formats::           Controlling the resolution (DPI) etc.
287* Printer formats::          Options and restrictions
288* Preview::                  Some reminders for the unwary
289* Misc. options::            Other bells and whistles
290@end menu
291
292This chapter provides you with almost anything you'll need for successful
293@code{hp2xx} applications. You'll probably soon operate @code{hp2xx}
294by solely consulting the option summary (@pxref{Appendix B}) or just
295by calling @code{hp2xx} without any parameters to obtain its built-in
296option summary.
297
298
299@node Modes of hp2xx, Sizing your output, , Basics
300@comment  node-name,  next,  previous,  up
301@section Modes of @code{hp2xx}
302
303The mode switch @samp{-m @code{string}} tells @code{hp2xx} about the mode it
304should use to generate output, i.e., the desired output format. @code{hp2xx}
305can run in three different groups of modes: Generating vector graphics,
306raster graphics, or "preview mode", i.e., displaying the graphics.
307Preview is the default; @pxref{Appendix B} for a list of all modes.
308
309
310
311@node Sizing your output, Pen sizes and colors, Modes of hp2xx, Basics
312@comment  node-name,  next,  previous,  up
313@section Sizing your output
314
315NOTE: The basic unit length within @code{hp2xx} is @code{mm} (millimeter).
316This unit is always assumed except where noted otherwise.
317
318In contrast to a real HP-GL plotter, @code{hp2xx} lets you decide freely
319about the size of the picture. While preserving the picture's aspect ratio,
320@code{hp2xx} will fit the picture into a window of width @var{w} and
321height @var{h}. By default, @var{w} = @var{h} = 200 (mm). Set these basic
322sizes using options @samp{-w @var{w}} and @samp{-h @var{h}}.
323
324Sometimes you'll want to change the aspect factor of a picture, e.g., to
325spread out a square picture into landscape. Option @samp{-a @var{af}} is used
326for this. @var{af} > 1 increases x/y ratio, 0 < @var{af} < 1 decreases x/y.
327
328Example: Let's assume your picture covers a native coordinate range of
329100...900 plotter units in x direction and 200...600 in y direction.
330Thus, its width is double its height.
331Using defaults, @code{hp2xx} will create a picture of size 200 x 100 mm,
332while options @samp{-w @var{100} -h @var{40}} will lead to a picture of
333size 80 x 40 mm, and @samp{-w @var{100} -h @var{40} -a @var{0.5}} results
334in a 40 x 40 mm picture.
335
336Alternatively, ignore explicit size control and rely on the true
337HP-GL coordinates (and therefore: sizes) of the given input file(s).
338Flag @samp{-t} inhibits @samp{-a -h -w} and lets @code{hp2xx} use true
339HP-GL sizes, based on the assumption that 1 HP unit = 1/40 mm.
340
341Some modes of @code{hp2xx} support page offsets, i.e., left
342and upper margins added to the picture, probably in addition to some
343hard margins which cannot be avoided. Currently, these modes are
344@var{eps}, @var{pcl}, and @var{pre}. The left margin (offset) is modified
345with option @samp{-o @var{off_left}}, while the upper margin can be
346controlled via @samp{-O @var{off_upper}}. @var{off_left} and @var{off_upper}
347are specified in mm.
348
349Option @samp{-C} (center the picture) works in combination with options
350@samp{-o -O} by modifying the offsets in such a way that the resulting
351picture is centered within the frame defined by options @samp{-w -h}. Example:
352Assume that the picture is a square, and @samp{-w @var{100} -h @var{40}}
353are specified. A 40 mm square with an additional left margin of
354(100-40)/2 = 30 mm will be produced if option @samp{-C} is given.
355If the actual width/height ration of the picture exactly matches
356the ratio defined by @samp{-w -h}, option @samp{-C} has no effect.
357
358
359
360@node Pen sizes and colors, Selecting a page (range), Sizing your output, Basics
361@comment  node-name,  next,  previous,  up
362@section Pen sizes and colors
363
364Imagine a plotter with a pen carousel, e.g., like the model HP7550A.
365The carousel carries a (small) number of pens. Their colors and tip
366thicknesses (sizes) are selected by a human operator, while the plotter
367only receives commands like "Now use pen number 5". If you don't provide a
368pen, the plotter will move and ``draw'' without this pen if its number
369is selected.
370
371@code{hp2xx} emulates a carousel of up to 8 pens of various colors and sizes.
372By default, all pens are present, have @var{foreground} color
373(typically @var{black}), and their tip thicknesses are one unit (1/10 @code{mm}).
374(NOTE: in versions before 3.4.2, pen widths in raster modes were counted in
375pixels, so the default in those versions was 1/10 @code{mm} for vector modes,
3761 pixel for raster modes).
377
378HPGL/2 commands NP,PC,PW may override this for up to 255 freely configurable
379pens.
380
381Pen colors and sizes are represented by digits to allow for a compact
382option list. There are 8 colors including @var{background} (usually white).
383@xref{Appendix B}, the Option Summary, for a list of all colors. E.g., color 3 is green,
384and color 7 means yellow. Permitted pen sizes are 0 ... 9 units in versions
385before 3.4.3, or up to 3.5mm (using characters A to Z to denote the range from
3861.0 to 3.5) in later versions.
387WARNING: In versions of @code{hp2xx} before 3.4.3, all raster mode pen sizes
388were approximated by double, triple, etc. width, and lines wider than 4 would
389normally not give useful results. In 3.4.3, the line drawing algorithm has
390been substantially improved and should render accurately scaled pen widths.
391
392Options @samp{-c @var{c-string}} and @samp{-s @var{s-string}} tell
393@code{hp2xx} about the pens to be placed in the carousel.
394@var{c-string} and @var{s-string} are strings of 1 to 8 digits,
395corresponding to special choices of pen 1 to 8.
396Defaults are @var{c-string} = @var{s-string} = @samp{11111111} unless the
397hpgl file contains corresponding PC and/or PW commands. Specifying @samp{-c}
398or @samp{-s} overrides the equivalent HPGL/2 command.
399If you specify less than 8 pens, the remaining pens keep their defaults.
400
401Examples:
402@example
403hp2xx -p13 foo.hp
404@end example
405Show a preview of @samp{foo.hp}, drawing all lines with pen #2 three
406pixels wide instead of default 1 pixel, which applies to all other pens.
407
408@example
409hp2xx -c12740 -p12230412 foo.hp
410@end example
411Here, pen #5 is ``removed''. Pens #1 and #7 keep their default sizes,
412all others are set to various sizes.
413Pen #2 is red, #3 is yellow, and #4 is blue, while all other
414pens keep @samp{foreground} color, e.g., black.
415
416If your HP-GL file contains the PC and/or PW commands introduced with
417HP-GL/2, these are interpreted to allow up to 255 pens. The special case
418where a pen is redefined to take on different colors is currently only
419supported in PostScript or PDF output mode. In all other modes, the last PC
420command encountered determines that pens' color for the entire plot.
421
422
423@node Selecting a page (range), Vector formats, Pen sizes and colors, Basics
424@comment  node-name,  next,  previous,  up
425@section Selecting a page
426
427There is a HP-GL command named @samp{PG;} which amounts to a FormFeed.
428Thus, there are multi-page HP-GL sources. While @code{hp2xx} was
429designed for just one output picture per input file, there is a
430simple way to cope also with multi-page sources:
431
432@code{hp2xx} keeps track of the number of encountered @samp{PG;} commands.
433All code up to the next (if any) @samp{PG;} command is considered a
434single page. Pages are counted, starting at 1. You can ask @code{hp2xx}
435to ignore all HP-GL commands other than on page @var{n} with option
436@samp{-P @var{n}}, effectively filtering out any one-page graphics.
437Sometimes, converting a whole page range makes sense, too. Therefore,
438@code{hp2xx} also accepts page ranges via @samp{-P @var{n1}:@var{n2}}.
439The default is @samp{-P @var{0}} which selects all pages. The output will
440be split into appropriate files whose name is derived from the base name
441of the input file by appending the frame number before the filetype
442extension. In preview mode, each page will display as a separate image -
443in contrast to versions earlier than 3.4.3, which would render everything
444in one image.
445
446WARNING: Some HP-GL sources may start with a @samp{PG;} so the first
447page of your graphics may be 2 instead of 1. Look for the number of
448encountered pages in the diagnostic output if you miss the expected page!
449If the detected coordinate range shows unreasonable numbers like 1e10,
450you'll be probably looking at an empty page.
451
452
453
454
455@node Vector formats, Raster formats, Selecting a page (range), Basics
456@comment  node-name,  next,  previous,  up
457@section Vector formats
458
459All HP-GL graphics are decomposed by @code{hp2xx} into elementary
460move and draw commands. Selecting a vector mode essentially defines the
461conversion rules of such commands into specific formats.
462
463The most popular and versatile vector format currently is
464Encapsulated PostScript (EPS). (In fact, it is much more than just a
465vector graphics format, but @code{hp2xx} uses only EPS's line drawing
466features.) Many programs allow importation of EPS files, and PostScript
467gives excellent printing results, so @samp{-m @code{eps}} is highly
468recommended. Recently, Adobe's Portable Document Format (PDF) has mostly taken
469its place for formatted online documentation. For Web-based applications,
470the Scalable Vector Graphics (SVG) format, a W3C standard, holds some promise
471as a non-proprietary, XML-based format for vector images, not only on web pages.
472In the engineering community, the 2D DXF format originally used by AutoCAD has
473become a common denominator for the exchange of vector data. In the
474machine-tooling community, a standardized vector format knows as G code
475is widely used (though machine-specific limitations and extensions make it
476not truely universal). Its implementation in @code{hp2xx}, selectable via
477the @samp{-m @code{nc}} option, should be suitable for hobbyists wishing to
478do engraving, but it would not be wise to use it in professional
479machine tooling.
480
481Unix users may also want to use either @code{Gnuplot} or especially @code{XFig}
482to annotate their plots. The native formats of these programs are directly
483supported via the @samp{-m @code{gpt}} and @samp{-m @code{fig}} options.
484
485The Enhanced Metafile Format was originally tied to the Microsoft Windows
486environment, but it has recently found more wide-spread use as one of the
487few vector formats supported by StarOffice and OpenOffice.
488
489Currently, all other supported vector formats represent various compromises
490to persuade @TeX{}@ or La@TeX{}@ into the generation of graphics.
491@xref{TeX formats}, if you are specially interested in @TeX{}.
492
493
494
495@node Raster formats, Printer formats, Vector formats, Basics
496@comment  node-name,  next,  previous,  up
497@section Raster formats
498
499Raster graphics are probably the most widely used graphics by now.
500Many publishing programs accept rasterized graphics. It's likely you'll
501use @code{hp2xx} primarily in some raster mode.
502
503In addition to vector modes, all raster modes need the desired resolution
504of an assumed underlying pixel grid to plot on, i. e., the number of
505pixels per unit length within that grid.
506A traditional measure is the number of ``dots per inch'' (DPI).
507@code{hp2xx} makes an exception from its usual unit length @code{mm} and
508lets you specify the traditional DPI values.
509Option @samp{-d @var{num}} affects both x and y direction, @var{num} being
510the DPI value (an integer). if @samp{-D @var{num_y}} is also specified,
511@var{num_y} will override the @var{num} DPI value, but only for the y
512direction.
513
514Some programs were found, which generate HPGL output with too tight clipping
515bounds, which lead, for example, to some parts of text characters clipped off.
516Use option @samp{-e @var{num}} to add some extra amount of space to clip areas
517to work around such problems. For example, @samp{-e @var{40}} will add 40 extra
518plotter units to every side of the clipping box, which corresponds to @code{1 mm}
519in true size.
520
521There are plenty of raster formats on various platforms, much more
522than @code{hp2xx} will ever handle. The supported raster formats
523IMG, JPG, PBM/PPM, PCL, PCX, PNG and TIFF were chosen for their widespread use, their simplicity,
524for actual demand, and for accessibility of specifications.
525If your desired format is not supported, look for a converter. E.g., the
526Portable Bitmap (PBM) project and more recently, the ImageMagick package
527offer quite a variety of such converters.
528
529Please note that the preview mode (which does not create any output file)
530is a special raster mode. Instead of going into some output file,
531the internal bitmap is transferred into display memory.
532Therefore, the above considerations apply also to preview mode.
533
534
535
536
537@node Printer formats, Preview, Raster formats, Basics
538@comment  node-name,  next,  previous,  up
539@section Printer formats
540
541Currently, there is only one well-tested printer format (not counting @samp{eps}, which
542is printable on PostScript printers): @samp{pcl}, which stands for HP PCL
543Level 3. Essentially it is a raster format, but it comes with a few
544restrictions and additional options which correspond to printer properties.
545It prints on HP Laserjet and HP Deskjet series printers and compatibles.
546
547The restriction concerns the resolution (DPI) during rasterization. Due to
548printer hardware limitations, only @samp{-d 75}, @samp{-d 100}, @samp{-d 150},
549and @samp{-d 300} are recommended (@code{hp2xx} will emit a warning for other
550values, but will try to create the desired output); option @samp{-D} must not
551be used. Some recent printer models do support 600, 720 or even higher
552resolutions, but even for those the requirements both in terms of cpu load
553and file size may be prohibitive at least on older systems.
554
555There are two flags which may be useful if the output goes directly
556to a printer: Option @samp{-i} initializes the printer and tries to select
557the required paper format before the output starts, and @samp{-F} sends a
558FormFeed (ASCII 12) after the output.
559
560For the HP Deskjet printer series, there is support of some ``special''
561commands; @samp{-S 1} activates these. There is a limited support of color
562modes available, too: For the DJ500C and newer models, @code{hp2xx} can
563generate both CMY-based and CMYK-based color output (if colors are used:
564see option @samp{-c}). Supply option @samp{-S 3} for CMY color mode, and
565option @samp{-S 4} for CMYK color mode (for the DJ550C). The Deskjet modes
566automatically invoke TIFF compression (mode 2), while pure PCL Level 3
567does not know about compression. NOTE: Some recent low-end Designjet
568plotters (if ordered without the HPGL processor board) and probably also
569some models of Deskjet use a sparsely documented variant called PCL3GUI
570which appears to differ at least in the initialization sequence used.
571Currently @code{hp2xx} will not work well -- maybe even not at all -- with
572such printers.
573
574A driver for the Esc/P2 raster language used by the Epson Stylus series
575of inkjet printers has been added in @code{hp2xx-3.4.0}. This should work
576at least for the small-format printers at 720 dpi.
577
578@node Preview, Misc. options, Printer formats, Basics
579@comment  node-name,  next,  previous,  up
580@section Preview
581
582Preview mode is @code{hp2xx}'s default. Its use prior to all other
583conversions is recommended since it offers a good impression of your
584final results. Functionally it is also a raster mode.
585
586Depending on your hardware and operating system platform,
587@code{hp2xx} uses one of a variety of preview modules.
588On GUIs, a window containing the graphics will pop up, while on other
589systems the whole screen may be used for preview. You can control the
590position of a preview window via options @samp{-o} and @samp{-O} in
591a natural way. In full-screen previews, unused spaces are padded to the
592right and bottom with background color.
593
594Since there is no way for @code{hp2xx} to predict the actual size and
595resolution of your preview device, e.g., screen, you may have to
596gauge @code{hp2xx}'s preview mode (using options @samp{-whdD}). For example,
597if your device effectively works at 86 DPI and offers an active area of
59824 by 18 cm,
599@example
600hp2xx -d86 -w240 -h180 foo.hp
601@end example
602will make maximum use of your screen area and give you correct sizes.
603Since a single gauge will do for all future calls, you'll probably want
604to create some one-line batch file for invoking @code{hp2xx} in preview
605mode, correctly gauged for your screen.
606
607
608Depending on page offsets and the selected sizes and resolutions, a preview
609may not fit on your screen. In that case, some preview modules simply
610clip the picture; others give a warning but let you continue (DOS),
611and others simply terminate.
612
613The X11 viewer allows to pan the visible area using mouse button one (which
614usually corresponds to the left button), and supports one level of zoom
615around the current cursor position, selectable with button two (middle
616button, or right button on two-button mice).
617
618DOS users: Most VGA cards offer high-resolution modes (SVGAs). Unfortunately,
619there is no software standard for these modes. @code{hp2xx} lets you
620utilize these modes anyway with just a little help from you.
621Tell @code{hp2xx} the so-called mode byte of your favorite hi-res mode
622via option @samp{-V @var{num}}. Since @code{hp2xx} issues only standard
623BIOS calls for mode switching, setting of color look-up table entries,
624and pixel drawing, chances are good that your VGA card's hi-res modes
625will work!
626
627WARNING: You can damage your hardware by specifying inappropriate VGA modes!
628Generally you'll need a monitor which can sync on the horizontal frequency
629of the selected VGA hi-res mode, e.g., a multi-scan monitor. In case of
630doubt, switch off your monitor immediately!!
631
632
633
634@node Misc. options, , Preview, Basics
635@comment  node-name,  next,  previous,  up
636@section Misc. options
637
638@code{hp2xx} features an on-line options summary. Invoking @code{hp2xx}
639with option @samp{-H}, or with any illegal option or without any
640parameter, will display about 2 pages of text. (Note: I'd have preferred
641option @samp{-h} for on-line help, but this option is needed by the
642indispensable @var{height} parameter.)
643
644The list of supported output files (displayed for the @samp{-m} parameter)
645shown in the help text always corresponds to the selection actually
646compiled into that particular executable copy of @code{hp2xx} (which may
647vary according to licensing considerations, local availability of third-party
648libraries, or preferences of whoever built it).
649
650During operation, @code{hp2xx} outputs various information about the current
651HP-GL file and about @code{hp2xx}'s actions. As usual, all this goes to
652@code{stderr}. You can re-direct these diagnostics into a file even without
653any help from a UNIX shell by specifying a log file using option
654@samp{-l @var{logfile}}, or you may switch off diagnostics completely
655with option @samp{-q} (@samp{quiet} mode). NOTE: Using both options
656as in @samp{-q -l @var{logfile}} is of no use as it will result in an
657empty @var{logfile}.
658
659Finally, there is a simple way to rotate whole pictures:
660Option @samp{-r @var{angle}} rotates the picture counter-clockwise by
661the supplied angle (given in degrees). E.g.,
662@example
663hp2xx -r90 foo.hp
664@end example
665will show the picture rotated by 90 degrees, letting vectors originally
666pointing left-to-right now point botttom-to-top. This may be handy e.g. for
667printing in landscape format.
668NOTE: The limiting rectangle supplied by @samp{-hw} is not affected by
669@samp{-r}, so in order to obtain e.g. a full-page landscape picture on an
670A4 page, issue a command similar to:
671@example
672hp2xx -m pcl -d 150 -r90 -h270 -w160 landscape.hp
673@end example
674
675@node Advanced subjects, Installation and modification notes, Basics, Top
676@comment  node-name,  next,  previous,  up
677@chapter Advanced subjects
678
679@menu
680* The coordinate range:: What hp2xx tells you about your HP-GL file
681* Fixed scaling::        Define your own window in HP-GL coordinate space
682* Scaling to true size:: How to generate pictures in their original sizes
683* Swapping::             Some suggestions which you hopefully won't need
684* Dots and lines::       Simplifications and assumptions
685* Unsupported formats::  The ATARI fraction's favourites
686* TeX formats::          The pros and cons
687@end menu
688
689@node The coordinate range, Fixed scaling, , Advanced subjects
690@comment  node-name,  next,  previous,  up
691@section The coordinate range
692
693The natural unit of length in HP-GL is 1/40 mm = 0.025 mm, so a typical
694A4 page covers roughly 11000 x 7500 natural units. Typically, coordinates in
695HP-GL commands will be found in the range 0 ... 12000. @code{hp2xx} will tell
696you the maximum and minimum coordinates (``picture limits'')
697it finds in your HP-GL picture for both x and y direction.
698These values usually roughly cover this range.
699Even if your HP-GL source plots in user-specific coordinates (realized
700via HP-GL command @samp{SC;} (SCale) ), this remains true, since
701@code{hp2xx} internally transforms all points back to natural coordinates.
702Whenever the above range is grossly violated, you may suspect corrupted
703data, because no real plotter would be able to plot such a file.
704
705If you ever discover a picture limit equalling plus or minus 10^10,
706your HP-GL probably didn't draw anything. Initially, @code{hp2xx}'s internal
707picture limits are set to impossibly large (or small) values, i. e., +- 10^10,
708but the first plot command will set them to values found therein, and successive
709plots push the limits outward. Example: @var{xmax} starts at -10^10,
710the first plot command may change it to 2536, the next to 3470, the next
71120 command fall short, etc. Eventually, @var{xmax} assumes the largest
712value and stays there. Knowledge about these details may sometimes
713be crucial (@pxref{Scaling to true size}).
714
715@code{hp2xx} uses the picture limits internally for scaling and fitting the
716data into the supplied  limiting rectangle (@pxref{Sizing your output}).
717You can also affect the picture limits yourself for special effects
718(@pxref{Fixed scaling}).
719
720
721
722@node Fixed scaling, Scaling to true size, The coordinate range, Advanced subjects
723@comment  node-name,  next,  previous,  up
724@section Fixed scaling
725
726As noted earlier, @code{hp2xx} does not draw to scale, but rather it fits
727a picture into a given limiting window. While this is very handy in most
728applications, it may be undesirable when a series of pictures must be drawn
729to the same scale. Unless all pictures possess the same picture limits
730(modulo offsets), e.g., because all of them are surrounded by some fixed
731frame, @code{hp2xx} would scale them all up differently to fit each of them
732tightly into the limiting window.
733
734There are two simple cures: First, make use of the true size option @samp{-t}.
735If the original HP-GL sizes do not fit, adjust picture limits to
736guarantee a constant scaling: Make a preview of all pictures and note
737the coordinate ranges @code{hp2xx} reports. Then, determine picture limits
738which cover all of these individual limits. Finally, run @code{hp2xx}
739to create your desired outputs using options @samp{-xXyY} to tell
740@code{hp2xx} about the picture limits it should use. If the pictures
741do not share common offsets, you may have to correct for offsets
742manually. Use the preview mode for testing. You'll get the same scale
743as long as the limiting window and (@var{xmax} - @var{xmin}) and
744(@var{ymax} - @var{ymin}) remain constant for all pictures.
745
746WARNING: @code{hp2xx} does not clip lines (unless told to by the IW
747directive of HPGL/2, of course). If the picture limits which
748you manually can pre-set via options @samp{-xXyY} are chosen too narrow,
749they will be pushed outside just as described in the last section,
750resulting in a different scale. Check the coordinate ranges @code{hp2xx}
751reports. The should match the values supplied by options @samp{-xXyY}!
752
753
754
755
756@node Scaling to true size, Swapping, Fixed scaling, Advanced subjects
757@comment  node-name,  next,  previous,  up
758@section Scaling to true size
759
760The very first (i.e. ancient) releases of @code{hp2xx} (binaries) did not offer option
761@samp{-t}, which does everything you'll need for producing output with
762exactly the sizes shown on a real plotter. The following paragraph
763shows how to manually emulate the working of this option. Though outdated,
764I left it in the manual as background material:
765
766Sometimes you might want to create pictures sized exactly as if they
767were drawn on a real plotter. There is a little trick which allows
768you to do so using @code{hp2xx}: As notes above, the natural unit of
769length in HP-GL is 0.025 mm. Therefore, you can calculate the true
770picture size from the picture limits reported by @code{hp2xx}. Transform
771these data into mm and simply specify the limiting window accordingly!
772Example:
773@samp{hp2xx truesize.hp} reports the following coordinate ranges:
774@var{xmin} = 250, @var{xmax} = 5250, @var{ymin} = 100, @var{ymax} = 3100.
775Thus, the picture is (@var{xmax} - @var{xmin}) * 0.025 mm = 125 mm wide
776and @var{ymax} - @var{ymin}) * 0.025 mm = 75 mm high, and
777@samp{hp2xx -w125 -h75 truesize.hp} will draw it in true size.
778
779
780
781
782@node Swapping, Dots and lines, Scaling to true size, Advanced subjects
783@comment  node-name,  next,  previous,  up
784@section Swapping
785
786@code{hp2xx} allocates memory for an internal bitmap dynamically.
787Large pictures, high resolution, and use of colors may combine to
788let your computer run out of memory (especially on non-swapping operating
789systems like DOS).
790
791In this case, @code{hp2xx} swaps the bitmap to disk, slowing down
792considerably. Redirecting swapping to a fast disk, preferably a RAM disk,
793might speed up things. You can replace the default swap file
794@file{hp2xx.swp} using @samp{-s @file{swapfile}}.
795NOTE: If for some reason @code{hp2xx} is aborted during swapping, you might
796have to delete the swap file manually.
797
798
799
800
801
802@node Dots and lines, Unsupported formats, Swapping, Advanced subjects
803@comment  node-name,  next,  previous,  up
804@section Dots and lines
805
806Here are some basics about the generation of dots and lines within
807@code{hp2xx}. I mention them, because there is something left to be
808improved here...
809
810Some HP-GL codes cause @code{hp2xx} to generate points rather than lines
811of length zero. There is a subtle difference between both. Depending
812on the current output format, special code for points will be generated,
813and occasionally, a point will look different from a zero-length line.
814Use @samp{-m epic} for such an example.
815
816Line thicknesses can vary. Especially for thick lines, the matter of
817line caps (how lines are ended, e.g. with a round cap) becomes relevant.
818(According to the HPGL/2 references, these issues are only relevant for
819lines wider than 3.5 mm).
820@code{hp2xx} does not yet offer complete support for these features -
821currently your best bet is to use @samp{-m eps} or @samp{-m pdf}, as
822@code{hp2xx} will simply emit the corresponding linestyle commands of
823those formats instead of having to calculate all the details itself.
824While most line end cap types are supported even in the raster modes
825(since version 3.4.3), this applies especially to the mitering options,
826i.e. the way the junction is drawn.
827To force a certain type of line caps, you can also use @samp{-m eps}, edit
828the resulting Encapsulated PostScript file, look for a line with
829@code{setlinecap} in it (near line 45), and select the line cap of your
830choice by modifying the PostScript command @code{setlinecap}
831accordingly. You can also use Metafont (via @samp{-m mf}) and replace
832the picked pen "pencircle" by some other type. However, both methods
833are far from convenient.
834
835The internal rasterization done by versions of @code{hp2xx} before 3.4.3
836was a simple process based on positioning squares (roughly corresponding
837to the linewidth) by the Bresenham algorithm. Since 3.4.3, a modified
838algorithm for drawing wide lines - based on an IBM Technical Bulletin
839written by Alan Murphy - is employed, which also supports true endcap
840drawing. The current code still does not support the various miter options,
841e.g. drawing out the endpoints of two lines so that they meet in an exact
842triangle or a blunt wedge. Unfortunately the current layout makes it hard
843to implement such a feature, as the internal representation of the command
844sequence is just another sequential list of lines without any indication
845of intersections.
846
847
848
849@node Unsupported formats, TeX formats, Dots and lines, Advanced subjects
850@comment  node-name,  next,  previous,  up
851@section Unsupported formats
852
853This is just a brief note, not a real manual entry -- sorry.
854@table @code
855@item PIC
856	ATARI format, e.g. for the text processor Signum. Try to replace by IMG.
857
858@item PAC
859	ATARI format, e.g. for the CAD program STAD
860
861@item DJ_GR
862	DOS previewer, based on DJ Delorie's gcc port and extender go32.
863	Works fine, but will be replaced by DOS/OS2 EMX version.
864	Abandoned by new maintainer due to lack of platform - volunteers
865	welcome.
866
867@item OS2
868	Full-screen OS/2 2.x and DOS previewer. HWW: I don't yet have the
869	right development system, so this code is still missing.
870	MK: Any volunteers ? Is this still needed at all, now that several
871	years have passed since HWW wrote this comment ? OS/2 users should
872	be able to use the @samp{PM} mode, which is kept alive by Kazutaka
873	Nishiyama.
874
875@end table
876
877
878
879
880@node TeX formats, , Unsupported formats, Advanced subjects
881@comment  node-name,  next,  previous,  up
882@section @TeX{}@  formats
883
884This section is a bit historic now, as one can easily embed @samp{eps}
885graphics in La@TeX{} and preview the result with xdvi et al. nowadays.
886I have left it in for the sake of completeness, and for special cases
887where one might still prefer plain @TeX{} or one of the classical import
888methods.
889
890@TeX{}@  was designed for typesetting, not for handling graphics. Putting
891graphics directly into @TeX{}@  therefore is always somewhat clumsy.
892@code{hp2xx} offers four different compromises to do that, and much
893better, though more indirect ways.
894
895@samp{-m @code{mf}} generates Metafont source code. Run @code{Metafont}
896and @code{gftopk}, and you'll end up with a special @code{pk} font
897containing the single letter Z which represents your picture. Placing
898this Z somewhere in your document using standard @TeX{}@  commands
899draws your picture there.
900
901If you want to avoid fiddling with additional programs and fonts, if you
902work with La@TeX{}, and if you do not need high-quality plots,
903the macros within @code{epic.sty} may help you.
904@samp{-m @code{tex}} causes @code{hp2xx} to generate
905appropriate @TeX{}@ source code which you can @samp{\input@{@}} into
906La@TeX{}@ sources.
907
908For em@TeX{}@ users, there are yet another two way: @samp{-m @code{em}}
909creates @TeX{}@ code containing many commands like @samp{\special@{em:...@}}
910for line drawing. The line drawing task will therefore be handled not by
911@TeX{}@ itself but by the em@TeX{}@ drivers which can handle arbitrary
912line slopes etc. Similarly, @samp{-m @code{cad}} produces code based on
913the same principle, but compatible with program @file{@TeX{}cad.exe}, which is
914distributed as a part of em@TeX{}, and which offers editing and drawing
915features for the desired HP-GL figure(s).
916
917Please note that all methods for generation of graphics @var{within}
918@TeX{}@ are compromises which usually work only for simple graphics.
919You'll probably prefer using external methods like including EPS vector
920graphics files with Tom Rokicki's @code{dvips} driver, or PCX files via the
921em@TeX{}@ drivers, or you'll generate special fonts with convenient
922programs like F. Sowa's @code{bm2font}. @code{hp2xx} can help you in all
923of these cases. The following table shows the pros and cons of the
924various approaches (all are based on PD software):
925
926@display
927Internal methods (all allowing DVI previewing of graphs):
928
929via Metafont
930  @code{+:} Machine-independent; fully compatible with @TeX{}
931  @code{-:} Slow; capacity problems with Metafont / gftopk / some DVI drivers
932            if used with large and/or complex graphics
933
934via @code{epic.sty}
935  @code{+:} Machine-independent; single-step, native La@TeX{}@ approach; PD software
936  @code{-:} Slow; requires La@TeX{}; low-quality lines; just one line thickness;
937            complex graphs may exceed @TeX{}@ capacity
938
939via em@TeX{}'s @code{\special@{em:...@}}
940  @code{+:} No @TeX{}@ capacity problem; good line quality; single-step procedure;
941            rasterization on demand, giving optimal resolution
942  @code{-:} Slows down drivers; driver capacity may be exceeded; em@TeX{}@ required
943
944
945External methods:
946
947via PCX file inclusion:
948  @code{+:} Easy and fast; DVI preview of graphics
949  @code{-:} Requires em@TeX{}@ drivers (only available on DOS and OS/2)
950
951via special fonts:
952  @code{+:} Easy, fast, and trouble-free font generation via @code{bm2font};
953            DVI preview of graphics (!); portable
954  @code{-:} Many files for fonts etc.; confusing for novices
955
956via EPS:
957  @code{+:} High-quality results; easy; no burden for @TeX{}@ or drivers
958  @code{-:} No DVI preview (unless ghostscript is available); PostScript
959	    printer (or, e.g., GhostScript) required;
960            PostScript previewing is slower than pure DVI previewing.
961@end display
962
963
964
965
966@node Installation and modification notes, Appendix A, Advanced subjects, Top
967@comment  node-name,  next,  previous,  up
968@chapter Installation and modification notes
969
970@menu
971* Installation procedure::
972* Modules of hp2xx::       The general structure, and how to add your own format
973* Future improvements::    Volunteers wanted!
974* Font coding::
975@end menu
976
977@node Installation procedure, Modules of hp2xx, , Installation and modification notes
978@comment  node-name,  next,  previous,  up
979@section Installation procedure
980
981Please note: The following description is very brief and assumes that you
982are familiar with installation of PD software in general.
983
984@menu
985* Installation of run-time versions::
986* Source-level installation::
987@end menu
988
989@node Installation of run-time versions, Source-level installation, , Installation procedure
990@comment  node-name,  next,  previous,  up
991@subsection Installing an executable version
992
993This is simple! If you find a collection of pre-compiled versions of
994@code{hp2xx}, obtain the file @file{read.me} and read it to find out the
995name of the file which fits to your system. Obtain it, rename it to something
996like @file{hp2xx} or @file{hp2xx.exe}, and place it somewhere on your
997search path -- that's it.
998Linux users will usually be able to find appropriate @code{RPM}, @code{DEB}
999or similar binary packages for their distribution on the CDs and websites
1000of the various distributors. FreeBSD users should check the @code{ports}
1001collection for packages, and users of commercial unices should check the
1002freeware archives provided by their vendors. Finally, users of that other
1003operating system may find semi-current versions through the gnuwin32 project
1004page on sourceforge.net.
1005
1006However, since the source release of @code{hp2xx} under the GNU public
1007license, the usual mode of installation has become configuring and
1008building @code{hp2xx} on your own system. This is detailed in the next section.
1009
1010
1011
1012@node Source-level installation, , Installation of run-time versions, Installation procedure
1013@comment  node-name,  next,  previous,  up
1014@subsection Source-level installation
1015
1016NOTE: I am tempted to switch to GNU autoconf , i.e. have a configure
1017script generate the necessary Makefile automagically. This will probably
1018not be welcomed by those not on Unix-like platforms, however.
1019Currently, installation depends too much
1020on manual work yet. Here is a description how to proceed:
1021
1022After unbundling all sources, go to subdirectory @file{./makes}. Select a
1023makefile most closely resembling your system's needs from the samples given,
1024copy it to @file{./sources/makefile}, adapt it manually (if necessary),
1025and run @code{make all}. (The source package as distributed through
1026ftp.gnu.org usually contains a file @file{sources/Makefile}. This is what
1027i use myself on Linux systems, so you could try using that one first, if you
1028are trying to build @code{hp2xx} on this or a similar platform.
1029If everything is set correctly, this results directly in a valid executable
1030file which you may install at any convenient place on your search path.
1031
1032There are two types of makefile adaptation: First, let's assume there
1033is a makefile template available for your system. You then have the option to
1034add a few non-default modes. (These are typically platform-specific modes,
1035or modes requiring third-party libraries like PNG,JPEG,TIFF or PDF that are
1036not usually part of a default system installation - particularly on commercial
1037operating systems ). Do so by un-commenting the appropriate lines
1038near the beginning of the makefile, and by commenting out the corresponding
1039standard lines.
1040
1041The second type of course applies to systems with special needs which are not
1042yet covered by any makefile template. Currently, you are on your own when
1043it comes to supplying alternate paths, renaming or adding system libraries
1044and alike. Most probably you might have to tell the makefile where to
1045look for the X11 stuff, and where to find the png library, if at all.
1046
1047Note: Don't feel alarmed if your makefile seems to neglect many source files.
1048Any single installation will make use of only one previewer (two on
1049SUNs with activated SunView support), and there are platform-dependent
1050sources for some output formats which are not always used.
1051
1052Users wishing to compile @code{hp2xx} on MS Windows systems will find a
1053step-by-step procedure in the file @file{hp2xx_nt} in the documentation directory.
1054
1055
1056@node Modules of hp2xx, Future improvements, Installation procedure, Installation and modification notes
1057@comment  node-name,  next,  previous,  up
1058@section Adding your own formats
1059
1060First, study @ref{Introduction} for the outline of the modular structure and
1061general operation of @code{hp2xx}.
1062
1063Let's assume you want to support TIFF format. The probably easiest way
1064of adding new formats is by modifying copies of existing files. Since TIFF
1065is a raster format, a good starting point would be @file{to_pcx.c}.
1066(Files @file{to_mf.c} or @file{to_eps.c} should be considered in case
1067of a vector format, and @file{to_vga.c} or @file{to_x11.c} in case of
1068a new previewer.) Copy it to a file @file{to_tiff.c} and edit the latter.
1069The old code is pretty much self-explanatory. Essentially, the output file
1070is opened, initializations are performed, and the internal bitmap is
1071converted into the target format (here, TIFF) scanline-by-scanline.
1072There is just one routine called from other modules (originally named
1073@code{PicBuf_to_PCX}. Rename it to e.g. @code{PicBuf_to_TIFF} ) and adapt
1074the conversion code.
1075
1076Once you've done that, the rest (integration of the new format into the
1077package) is easy: First, edit @file{hp2xx.h} and add a prototype
1078line for @code{PicBuf_to_TIFF} in analogy to e.g., @code{PicBuf_to_PCX}.
1079Edit the @file{makefile}s and add @code{to_tiff.c} to the list of sources
1080and e.g. @code{to_tiff.o} to the list of objects. Now you are ready for
1081compilation tests (but not for linking yet).
1082
1083Then, change the main file @file{hp2xx.c} at various places: Near the
1084beginning of the file, add @file{XX_TIFF, } to the @code{hp2xx_mode} typedef,
1085and a line like @file{XX_TIFF,   "tiff", } to the @code{ModeList} struct below.
1086Please note the alphabetical order of these lists. Never put anything behind
1087the termination code @code{XX_TERM}! At the end of the file,
1088add a @code{case} statement to the @code{switch} list in analogy to e.g.
1089the @code{PCX} entry.
1090
1091You may also want to add a line to the on-line help to
1092announce the new format, and change the release number and date.
1093Look for functions @code{Send_ID} and @code{usage_msg} at the first quarter
1094of file @file{hp2xx.c}!
1095
1096Now a @code{make all} will produce code containing the new format.
1097If your format turns out to work nicely and seems to be of general interest,
1098please consider contributing it to the @code{hp2xx} project.
1099
1100
1101
1102@node Future improvements, Font coding, Modules of hp2xx, Installation and modification notes
1103@comment  node-name,  next,  previous,  up
1104@section Future improvements
1105
1106The following table lists miscellaneous desirable features for future
1107releases (check the @file{TODO} file in the source package for current
1108status) :
1109@display
1110  Other, more rarely used HP-GL commands
1111  PCL: Better data compression for DJ500, DJ500C, DJ550;
1112  Loadable fonts, e.g. Hershey fonts, or: more built-in fonts
1113@end display
1114
1115@tex
1116\page
1117@end tex
1118
1119@node Font coding, , Future improvements, Installation and modification notes
1120@comment  node-name,  next,  previous,  up
1121@section Font coding
1122
1123This section is intended for those few users who might care to
1124improve the built-in character set of @code{hp2xx}.
1125
1126HP-GL plotters feature built-in fonts with both fixed and
1127variable-width characters. There are commands for font selection
1128and quick switching between two pre-selected fonts, and there
1129is also a way for users to download own character definitions.
1130
1131@code{hp2xx} currently features just a few fixed-width  character sets.
1132
1133If you plan to modify these characters set or to add more,
1134you need an understanding of how characters are drawn by
1135@code{hp2xx}. The source file @file{charset.h} contains a comment
1136explaining this procedure. Below you find a (modified) copy of
1137this:
1138
1139@display
1140 This file defines a standard character set by elementary
1141 "draw" & "move" commands. The format is a very compact one from
1142 the old days where every byte was still appreciated.
1143
1144 A font or character set is an array of strings. Each character is
1145 addressed by its ASCII code.
1146
1147 A character is a (NULL-terminated) string of bytes. Each byte
1148 codes for a draw or move action according to the code below:
1149
1150     @code{Bit: 7 6 5 4 3 2 1 0}
1151     @code{     p x x x y y y y}
1152
1153 @code{p:   } Plot flag. If set, "draw to" new point, else "move to" it.
1154 @code{xxx: } 3-bit unsigned integer  (0...7). X coordinate of new point.
1155 @code{yyyy:} 4-bit unsigned integer (0..15). Y coordinate of new point.
1156
1157 The baseline is y = 4 instead of y = 0, so characters with parts
1158 below it can be drawn properly. Function "code_to_ucoord" transforms
1159 these coordinates into actual user coordinates.
1160
1161 Example:  code for character @code{'L': "\032\224\324"} translates to:
1162           @code{moveto(1,10); drawto(1,4); drawto(5,4);}
1163
1164@tex
1165\page
1166@end tex
1167
1168 From the example you can conclude that the font below essentially is
1169 defined on a 5x7 grid:
1170
1171     @code{    0 1 2 3 4 5 6 7}
1172     @code{15  - - - - - - - -     - : unused}
1173     @code{14  - - - - - - - -     # : always used}
1174     @code{13  - - - - - - - -     o : sometimes used}
1175     @code{12  - - - - - - - -}
1176     @code{11  - - - - - - - -}
1177     @code{10  o # # # # # - -}
1178     @code{ 9  o # # # # # - -}
1179     @code{ 8  o # # # # # - -}
1180     @code{ 7  o # # # # # - -}
1181     @code{ 6  o # # # # # - -}
1182     @code{ 5  o # # # # # - -}
1183     @code{ 4  o # # # # # - -}
1184     @code{ 3  o o o o o o - -}
1185     @code{ 2  o o o o o o - -}
1186     @code{ 1  o o o o o o - -}
1187     @code{ 0  o o o o o o - -}
1188@end display
1189
1190
1191
1192@node Appendix A, Appendix B, Installation and modification notes, Top
1193@comment  node-name,  next,  previous,  up
1194@appendix   Known HP-GL commands
1195
1196@code{hp2xx} originally emulated a subset of the Hewlett-Packard 7550A plotter.
1197The following manual was used as reference for command definitions:
1198@cite{[1] HP 7550A Interfacing and Programming Manual}. This has gradually
1199been expanded to include almost all of what is now known as HPGL/1, and
1200most of the commands from HPGL/2.
1201
1202Not all commands are supported. Among the non-supported commands
1203are those which do not really apply to a software emulator, like:
1204
1205@display
1206commands affecting the communication between plotter and host computer,
1207commands for changing the behaviour of a real plotter, like plotting speed etc.,
1208commands for the control of plotter memory allocation,
1209commands causing various plotter display outputs.
1210@end display
1211
1212Other non-supported commands would be desirable, but were left out
1213due to their inherent complexity (or just because nobody had an immediate
1214need for them yet).
1215
1216Programmers intending to add more HP-GL features should ideally take care to
1217implement the less-than-obvious side effects of existing commands on
1218the new features, too (and vice versa). E. g., line types (@code{LT;})
1219affect most but not all drawing commands: While the @code{ER;} command
1220(edge rectangle relative) uses the current line type, its counterpart
1221@code{EA;} (edge rectangle absolute) always draws solid lines. However,
1222both @code{PR;} and @code{PA;} use the current line type! In addition,
1223new features may need initializations by the already supported
1224codes @code{IN;} or @code{DF;}, so these may have to be expanded.
1225
1226The remainder of this section lists all HP-GL commands given on
1227pages 1-2 to 1-4 of [1] and marks them as either
1228
1229@display
1230      @code{(.)}  not applicable,
1231      @code{(-)}  ignored,
1232      @code{(*)}  partly supported, or
1233      @code{(+)}  supported.
1234@end display
1235
1236The label ``supported'' is used when I think the command is fully supported
1237in the context of the already implemented commands. In general,
1238you should have absolutely no problem with this class of commands.
1239
1240Though there still are unsupported commands, this does not mean that
1241you might have trouble using @code{hp2xx}. Nowadays, most HP-GL files are
1242machine-generated, e.g. by CAD or DTP programs. These tend to make use
1243of just a subset of HP-GL. To my experience, chances are high
1244that @code{hp2xx} will give you the picture you want! (Areas where hp2xx
1245is definitely lacking are font support and polygon fills, but even there
1246you should get a good approximation of what a plotter would produce).
1247
1248@display
1249@code{HP-GL|s n| Description & Remarks}
1250@code{Cmd  | i |}
1251@code{=====|===|========================================================}
1252@code{AA   |+  | Arc Absolute}
1253@code{AC   |+  | Anchor corner}
1254@code{AD   | - | Alternate font Definition}
1255@code{AF   |+  | Advance Full page [same as PG]}
1256@code{AH   |+  | Advance Half page [same as PG]}
1257@code{AP   |  .| Automatic pen operations}
1258@code{AR   |+  | Arc Relative}
1259@code{AS   |  .| Acceleration select}
1260@code{AT   |+  | Arc through three points}
1261@code{-----|---|--------------------------------------------------------}
1262@code{BF   | - | Buffer Plot [maybe not a valid hpgl command]}
1263@code{BL   |+  | Buffer Label}
1264@code{BP   |+  | Begin Plot}
1265@code{BR   |+  | Bezier curve, Relative}
1266@code{BZ   |+  | Bezier curve, Absolute}
1267@code{-----|---|--------------------------------------------------------}
1268@code{CA   |+  | Designate alternate character set}
1269@code{CC   | - | Character Chord angle}
1270@code{CF   | - | Character Fill mode}
1271@code{CI   |+  | Circle}
1272@code{CM   |  .| Character selection mode}
1273@code{CO   |+  | File comment}
1274@code{CP   |+  | Character plot}
1275@code{CR   |+  | Color Range}
1276@code{CS   |+  | Designate standard character set}
1277@code{CT   |+  | Chord tolerance}
1278@code{CV   |  .| Curved line generator}
1279@code{-----|---|--------------------------------------------------------}
1280@code{DC   |  .| Digitize clear}
1281@code{DF   |+  | Default}
1282@code{DI   |+  | Absolute direction}
1283@code{DL   | - | Define downloadable character}
1284@code{DP   |  .| Digitize point}
1285@code{DR   |+  | Relative direction}
1286@code{DS   | - | Designate character into slot}
1287@code{DT   |+  | Define label terminator}
1288@code{DV   |+  | text Direction Vertical}
1289@code{-----|---|--------------------------------------------------------}
1290@code{EA   |+  | Edge rectangle absolute}
1291@code{EC   |  .| Enable paper Cutter}
1292@code{EP   |+  | Edge polygon}
1293@code{ER   |+  | Edge rectangle relative}
1294@code{ES   |+  | Extra space}
1295@code{EW   |+  | Edge wedge}
1296@code{-----|---|--------------------------------------------------------}
1297@code{FI   | - | pcl Font ID}
1298@code{FN   | - | pcl secondary Font Number}
1299@code{FP   |+  | Fill polygon}
1300@code{FR   | - | FRame advance}
1301@code{FS   |  .| Force select}
1302@code{FT   |+  | Fill type}
1303@code{-----|---|--------------------------------------------------------}
1304@code{GC   |  .| Group count}
1305@code{GM   |  .| Graphics memory}
1306@code{-----|---|--------------------------------------------------------}
1307@code{IM   | - | Input error reporting mask}
1308@code{IN   |+  | Initialize}
1309@code{IP   |+  | Input P1 and P2}
1310@code{IR   |+  | Input Relative P1 and P2}
1311@code{IV   | - | Invoke character slot}
1312@code{IW   |+  | Input window}
1313@code{-----|---|--------------------------------------------------------}
1314@code{KY   |  .| Define key}
1315@code{-----|---|--------------------------------------------------------}
1316@code{LA   |*  | Line Attributes}
1317@code{LB   |+  | Label}
1318@code{LO   |+  | Label origin}
1319@code{LT   |+  | Line type}
1320@code{-----|---|--------------------------------------------------------}
1321@code{MC   | - | Merge Control}
1322@code{MG   |+  | Message [same as WD]}
1323@code{MT   | . | Media Type}
1324@code{-----|---|--------------------------------------------------------}
1325@code{NP   |+  | Number of Pens}
1326@code{NR   |  .| Not ready (unload page and go offline)}
1327@code{-----|---|--------------------------------------------------------}
1328@code{OA   |  .| Output actual position and pen status}
1329@code{OC   |  .| Output commanded position and pen status}
1330@code{OD   |  .| Output digitized point and pen status}
1331@code{OE   | - | Output error}
1332@code{OF   | - | Output factors}
1333@code{OG   |  .| Output group count}
1334@code{OH   | - | Output hard-clip limits}
1335@code{OI   |  .| Output identification}
1336@code{OK   |  .| Output key}
1337@code{OL   | - | Output label length}
1338@code{OO   |  .| Output options}
1339@code{OP   |+  | Output P1 and P2}
1340@code{OS   | - | Output status}
1341@code{OT   |  .| Output carousel type}
1342@code{OW   |+  | Output window}
1343@code{-----|---|--------------------------------------------------------}
1344@code{PA   |+  | Plot absolute}
1345@code{PB   |+  | Print buffered label}
1346@code{PC   |+  | Pen Color}
1347@code{PD   |+  | Pen down}
1348@code{PE   |+  | Polyline Encoded}
1349@code{PG   |+  | Page feed}
1350@code{PM   |+  | Polygon mode}
1351@code{PR   |+  | Plot relative}
1352@code{PS   |+  | Plot Size}
1353@code{PT   |+  | Pen thickness}
1354@code{PU   |+  | Pen up}
1355@code{PW   |+  | Pen Width}
1356@code{-----|---|--------------------------------------------------------}
1357@code{QL   |  .| Quality Level}
1358@code{-----|---|--------------------------------------------------------}
1359@code{RA   |+  | Fill rectangle absolute}
1360@code{RF   | - | Raster Fill pattern}
1361@code{RO   |+  | Rotate coordinate system}
1362@code{RP   | - | Replot}
1363@code{RR   |+  | Fill rectangle relative}
1364@code{RT   |+  | Relative arc through Three points}
1365@code{-----|---|--------------------------------------------------------}
1366@code{SA   |+  | Select alternate character set}
1367@code{SB   | - | Scalable or Bitmap font selection}
1368@code{SC   |+  | Scale}
1369@code{SD   | - | Standard font attribute Definition}
1370@code{SI   |+  | Absolute character size}
1371@code{SL   |+  | Character slant}
1372@code{SM   |+  | Symbol mode}
1373@code{SP   |+  | Select pen}
1374@code{SR   |+  | Relative character size}
1375@code{SS   |+  | Select standard character set}
1376@code{ST   |  .| Sort vectors}
1377@code{SV   | - | Screened Vectors}
1378@code{-----|---|--------------------------------------------------------}
1379@code{TD   | - | Transparent Data}
1380@code{TL   |+  | Tick length}
1381@code{TR   | - | Transparency mode}
1382@code{-----|---|--------------------------------------------------------}
1383@code{UC   |+  | User-defined character}
1384@code{UF   | - | User-defined fill type}
1385@code{UL   |+  | User-defined line type}
1386@code{-----|---|--------------------------------------------------------}
1387@code{VS   |  .| Velocity select}
1388@code{-----|---|--------------------------------------------------------}
1389@code{WD   |+  | Write to display}
1390@code{WG   |+  | Fill wedge}
1391@code{WU   |+  | pen Width Unit}
1392@code{-----|---|--------------------------------------------------------}
1393@code{XT   |+  | X-Tick}
1394@code{-----|---|--------------------------------------------------------}
1395@code{YT   |+  | Y-Tick}
1396@end display
1397
1398
1399
1400@node Appendix B, Appendix C, Appendix A, Top
1401@comment  node-name,  next,  previous,  up
1402@appendix   Option summary
1403
1404@menu
1405* General options::
1406* Size controls::
1407* Raster format controls::
1408* PCL specifics::
1409* TIFF specifics::
1410* DXF specifics::
1411* Margins::
1412* Preview (DOS only)::
1413* Help::
1414@end menu
1415
1416In the following, options are grouped into subjects and
1417are listed alphabetically within each subject. Both long options and
1418short (one-letter) options are listed, where short options appear in
1419parentheses. Except for the +DPI option, there is a one-to-one correspondence
1420between long and short options. You may use either long or short options.
1421Mixing long and short options is acceptable.
1422
1423Option parameter names suggest the expected data type, e. g.,
1424@samp{--rotate (-r) @var{float}} means that option @samp{--rotate} or its
1425corresponding short form @samp{-r} expect a parameter of type @samp{float}.
1426
1427@node General options, Size controls, ,Appendix B
1428@comment  node-name,  next,  previous,  up
1429@section General options
1430
1431@table @samp
1432
1433@item --pencolors (-c) @var{string}
1434Pen color(s), a string of 1 to 8 digits.
1435Valid digits: 0...7 (0=Background or off, 1=Foreground, 2=Red, 3=Green,
14364=Blue, 5=Cyan, 6=Magenta, 7=Yellow). Default: @samp{11111111}
1437
1438@item --outfile (-f) @var{string}
1439Name of output file. If omitted, @code{hp2xx} generates the name from
1440the input file name and the current mode string. @samp{-f-} causes
1441@code{hp2xx} to write to @code{stdout}. Default: none.
1442
1443@item --logfile (-l) @var{string}
1444Name of log file. If given, diagnostics go into this file, else to
1445@code{stderr}. Remark: @samp{-q} inhibits all diagnostics!
1446
1447@item --mode (-m) @var{string}
1448Mode string. Valid: @var{string} =
1449@display
1450  @samp{cad}  (@TeX{}cad-compatible line generation using @code{\special@{em:...@}}),
1451  @samp{dxf}  (Autocad Drawing Exchange Format),
1452  @samp{em}   (more efficient line drawing with E. Mattes's @TeX{}@ @code{\special@{em:...@}}),
1453  @samp{eps}  (Encapsulated PostScript),
1454  @samp{gpt}  (Gnuplot input file),
1455  @samp{hpgl} (simplified HP-GL, useful for imports),
1456  @samp{img}  (e.g., GEM's Image format),
1457  @samp{jpg}  (JPEG image format),
1458  @samp{mf}   (Metafont source),
1459  @samp{nc}   (G code for CNC engraving tools)
1460  @samp{pbm}  (Portable Bitmap (monochrome) or Portable Pixmap (color plots)),
1461  @samp{pcl}  (HP-PCL Level 3),
1462  @samp{pcx}  (Paintbrush format),
1463  @samp{pdf}  (Adobe Portable Document Format),
1464  @samp{png}  (Portable Network Graphics format),
1465  @samp{pre}  (Preview mode; no output!),
1466  @samp{rgip} (Uniplex RGIP vector format),
1467  @samp{svg}  (Scalable Vector Graphics, for XML web pages)
1468  @samp{tex}  (line drawing with @TeX{}@ / @code{epic} macros)
1469  @samp{fig}  (for Brian Smith's XFIG vector drawing program)
1470  @samp{tiff} (TIFF tagged image file format)
1471  @samp{esc2} (Epson Stylus printers)
1472@end display
1473
1474Occasionally available (currently unsupported) modes:
1475@display
1476  @samp{ilbm} (e.g., for AMIGA: ILBM/IFF format),
1477  @samp{pac}  (e.g., for ATARI/STAD),
1478  @samp{pic}  (e.g., for ATARI/Signum).
1479@end display
1480
1481Default: @samp{pre}.
1482
1483@item --nofill (-n)
1484Ignore all polygon fill commands in the HPGL file(s). This may sometimes
1485be necessary to improve readability of images at small scales (e.g. thumbnails in
1486an overview listing), or to work around problems in the polygon fill code.
1487
1488@item --pensize (-p) @var{string}
1489Pensize(s), a string of 1 to 8 digits.
1490Valid digits: 0...9 (unit = 1/10 mm) for vector modes,
14910...4 (unit = pixel) for raster modes. Default: @samp{11111111}
1492
1493@item --pages (-P) @var{int}[:[@var{int}]]
1494Select HP-GL page @var{int} or a page range.
1495Valid: @var{int} integer and >= 0. Default: @var{int} = 0 (all pages).
1496
1497@item --quiet (-q)
1498Quiet mode (no diagnostic output).
1499
1500@item --rotation (-r) @var{float}
1501Rotation angle [deg]. E.g., @samp{-r90} gives landscape. Default: 0.0
1502
1503@item --swapfile (-s) @var{string}
1504Name of swap file. Default: @var{string} = @samp{hp2xx.swp}.
1505
1506@item --mapzero (-M) @var{int}
1507Remap commands affecting pen number zero to any other (preferably unused)
1508pen (mainly to avoid changing the background color of raster format files).
1509
1510@end table
1511
1512
1513
1514@node Size controls, Raster format controls, General options, Appendix B
1515@comment  node-name,  next,  previous,  up
1516@section Size controls
1517
1518@table @samp
1519
1520@item --aspectfactor (-a) @var{float}
1521Aspect factor. Valid: @var{float} > 0.0. Use @var{float} > 1.0 for landscape
1522and @var{float} < 1.0 for portrait deformations. Default: @var{float} = 1.0
1523
1524@item --height (-h) @var{float}
1525(Upper limit of) height of picture in mm. Default: @var{float}=200.0
1526
1527@item --width (-w) @var{float}
1528(Upper limit of) width of picture in mm. Default: @var{float}=200.0
1529
1530@item --x0 (-x) @var{float}
1531Pre-set left limit of HP-GL coordinate range to @var{float} (rarely used).
1532
1533@item --x1 (-X) @var{float}
1534Pre-set right limit of HP-GL coordinate range to @var{float} (rarely used).
1535
1536@item --y0 (-y) @var{float}
1537Pre-set lower limit of HP-GL coordinate range to @var{float} (rarely used).
1538
1539@item --y1 (-Y) @var{float}
1540Pre-set upper limit of HP-GL coordinate range to @var{float} (rarely used).
1541
1542@item --zengange (-z @var{float}
1543This option is only relevant for CNC G-code generation (@samp{ -m nc}, where
1544it sets the working depth of the tool.
1545
1546@item --zretract (-Z @var{float}
1547This option is only relevant for CNC G-code generation (@samp{ -m nc}, where
1548it sets the retraction level of the tool.
1549
1550@item --truesize (-t)
1551Ignore options @samp{-a -h -w} (aspect factor, height, width). Size information
1552will come from the HP-GL intrinsic data. WARNING: Avoid using option @samp{-r}
1553(rotate) as it works on top of HP-GL and thus will distort the detected HP-GL
1554sizes.
1555
1556@end table
1557
1558
1559
1560@node Raster format controls, PCL specifics, Size controls, Appendix B
1561@comment  node-name,  next,  previous,  up
1562@section  Raster format controls
1563
1564@table @samp
1565
1566@item --DPI (-d) @var{int}
1567Set x resolution to @var{int} dots per inch (DPI). If not overridden
1568by @samp{-D}, sets also y resolution to @var{int} DPI.
1569Valid: @var{int} integer and > 0. Default: @var{int} = 75.
1570
1571@item --DPI_x (-d) @var{int}
1572Same as @samp{--DPI}
1573
1574@item --DPI_y (-D) @var{int}
1575Set y resolution to @var{int} DPI. @var{int} integer and > 0.
1576Default: @var{int} = 75.
1577
1578@item --extraclip (-e) @var{int}
1579Set extra clipping space to @var{int} plotter units. Default: @var{int} = 0.
1580@end table
1581
1582
1583
1584@node PCL specifics, TIFF specifics, Raster format controls, Appendix B
1585@comment  node-name,  next,  previous,  up
1586@section  PCL specifics
1587
1588@table @samp
1589
1590@item --PCL_formfeed (-F)
1591Send a FormFeed after graphics data. Default: No FormFeed.
1592
1593@item --PCL_init (-i)
1594Pre-initialize printer. Default: No pre-init
1595
1596@item --PCL_Deskjet (-S) @var{int}
1597Use (Deskjet) Special commands. @var{int} = 0 deactivates this option,
1598@var{int} = 1 enables b/w mode, @var{int} = 3 is intended for DJ500C
1599(CMY) color support, @var{int} = 4 supports DJ550C (CMYK mode).
1600
1601@item --DPI_x (-d) @var{int}
1602Set x resolution (see above): Valid here: @var{int} = 75, 100, 150, 300
1603
1604@item --DPI_y (-D) @var{int}
1605Set y resolution (see above). Invalid here!
1606@end table
1607
1608@node TIFF specifics, DXF specifics, PCL specifics, Appendix B
1609@comment  node-name,  next,  previous,  up
1610@section TIFF specifics
1611
1612@table @samp
1613
1614
1615@item -S @var{int}
1616Select TIFF compression algorithm. @var{int} = 0 or 1 no compression,
1617@var{int} = 2 run length encoding (RLE), @var{int} = 3 Group 3 FAX,
1618@var{int} = 4 Group 4 FAX; @var{int} = 5 LZW (normally disabled in to_tiff.c
1619due to Unisys patent), @var{int} = 6 old-style JPEG, @var{int} = 7 JPEG,
1620@var{int} = 8 Deflate.
1621
1622@end table
1623
1624@node DXF specifics, Margins, TIFF specifics, Appendix B
1625@comment  node-name,  next,  previous,  up
1626@section TIFF specifics
1627
1628@table @samp
1629
1630
1631@item -S @var{int}
1632Select desired translation of HPGL pen attributes to DXF Group 62 line
1633parameters. @var{int} = 0 ignore attributes (use color=1, width=0.1
1634throughout), @var{int} = 2 use pen number for color, use actual width,
1635@var{int} = 3 use width-dependent color ( <0.2 == 1, <0.3 == 2 etc.),
1636@var{int} = 4 use width-dependent color with upper limit of 4 beyond 0.4.
1637
1638@end table
1639
1640
1641@node Margins, Preview (DOS only), DXF specifics, Appendix B
1642@comment  node-name,  next,  previous,  up
1643@section  Margins
1644
1645(Apply to modes @samp{eps}, @samp{pcl}, @samp{pre} ONLY)
1646
1647@table @samp
1648
1649@item --center (-C)
1650Center the picture within the frame defined by options @samp{-w -h} by
1651adding to the left or upper margin. Null effect if the width/height
1652ratio of the picture matches that of options @samp{-w -h}.
1653
1654@item --no_ps (-N)
1655Ignore papersize definition given by a PS command in the HPGL file, and
1656calculate the actual image size. This may be necessary to avoid unnecessary
1657margins (with programs that write a standard header regardless of the true
1658size of the drawing).
1659
1660@item --xoffset (-o) @var{float}
1661X offset of picture (left  margin) in mm.
1662Valid: @var{float} >= 0.0, default: @var{float}=0.0
1663
1664@item --yoffset (-O) @var{float}
1665Y offset of picture (upper  margin) in mm.
1666Valid: @var{float} >= 0.0, default: @var{float}=0.0
1667@end table
1668
1669
1670
1671@node Preview (DOS only), Help, Margins, Appendix B
1672@comment  node-name,  next,  previous,  up
1673@section  Preview (DOS/PC's only)
1674
1675@table @samp
1676
1677@item --VGAmodebyte (-V) @var{int}
1678VGA mode byte (decimal). Default: @var{int} = 18.
1679WARNING: Setting inappropriate VGA modes may damage your hardware,
1680especially your monitor!
1681@end table
1682
1683
1684@node Help, , Preview (DOS only), Appendix B
1685@comment  node-name,  next,  previous,  up
1686@section  Help
1687@table @samp
1688@item --help (-H)
1689(or calling @code{hp2xx} without any arguments)  Show on-line help.
1690@end table
1691
1692
1693
1694@node Appendix C, , Appendix B, Top
1695@comment  node-name,  next,  previous,  up
1696@appendix Acknowledgements
1697
1698@menu
1699* Acknowledgement::
1700* Copyright note::
1701@end menu
1702
1703
1704@node Acknowledgement, Copyright note, , Appendix C
1705@comment  node-name,  next,  previous,  up
1706@section Acknowledgement
1707
1708Since @code{hp2xx} first became publicly available (in its early days, as
1709binaries on several platforms), many people contributed to this project by
1710supplying first HWW and now MK with valuable suggestions, code patches and
1711reports. Many thanks to all of them!
1712It is a pleasure to especially thank the following people for their
1713outstanding contributions:
1714
1715HWW's Versions up to 3.2.0 (mid-1994):
1716
1717@table @code
1718
1719@item Nelson Beebe
1720Help with the new generic makefile (easier configuration);
1721clean selection mechanism for previewer suggested;
1722suggestions for an improved X.11 previewer
1723
1724@item Elisabeth Dregger-Cappel
1725Network and host resources for original @code{hp2xx} distribution
1726
1727@item Joern Eggers
1728New ATARI format "cs" for CS-TeX; bug fixes for arcs / circles
1729
1730@item Roland Emmerich
1731DOS betatests and suggestions; @code{showit}
1732
1733@item R. Frahm
1734PCX color improvements
1735
1736@item Jonathan M. Gillian
1737DOS betatests and suggestions
1738
1739@item Gilles Gravier
1740RGIP converter
1741
1742@item Thomas Hiller
1743Code for EA support
1744
1745@item Claus H. Langhans
1746AMIGA portation; pbm, ilbm formats
1747
1748@item Lawrence Lowe
1749Many helpful suggestions and improvements, e.g. for pcl format
1750
1751@item Ian MacPhedran
1752Color / binary format for pbm/ppm
1753
1754@item Norbert Meyer
1755ATARI portation; img, pic, pac formats; first ATARI previewer
1756
1757@item Michael Schmitz
1758Many VAX & MACH tests
1759
1760@item Michael Schoene
1761X11 stuff; many tests
1762
1763@item Andreas Schwab
1764Improved ATARI previewer
1765
1766@item Friedhelm Sowa
1767Many DOS tests and suggestions for cooperation of @code{hp2xx} with
1768@TeX{} figure generation
1769
1770@item Gerhard Steger
1771Many VAX tests; VAX scripts; access to MicroVAX platforms
1772
1773@item Horst Szillat
1774OS/2 support, OS/2 full-screen previewer & help
1775
1776@item Alois Treindl
1777Code for UC support
1778
1779
1780@item Versions since 3.3.0 (mid-1999):
1781
1782@item Emmanuel Bigler
1783xfig and gnuplot ascii support
1784
1785@item Ian MacPhedran
1786XFig output
1787
1788@item Michael Schmitz
1789PNG output
1790
1791@item Rolf Schreck
1792PS/RO fixes
1793
1794@item Eugene Doudine
1795PE command support
1796
1797@item Georgy Salnikov
1798Improvements for character commands (LB,DI,DR)
1799
1800@item Michele Liberi
1801TIFF output
1802
1803@item Lars Erikson
1804EPS plotsize bug fixes
1805
1806@item Gerhard Buergmann
1807bug fixes for plot scaling and PE support
1808
1809@item James Shaw
1810polygon mode testing and examples,
1811WinNT building instructions
1812
1813@item Andrew Bird
1814enhanced PW support
1815raster-mode linewidth rendering
1816TIFF enhancements
1817
1818@item Bengt-Arne Fjellner
1819EMF generation
1820
1821@item Michael Rooke
1822CNC G-code generation
1823
1824@item Georg Viehoever
1825DXF enhancements and bugfixes
1826
1827@end table
1828
1829
1830
1831@node Copyright note, , Acknowledgement, Appendix C
1832@comment  node-name,  next,  previous,  up
1833@section Copyright notice
1834
1835@display
1836Copyright (c) 1998 - 2003  Martin Kroeker
1837Copyright (c) 1991 - 1994  Heinz W. Werntges
1838All rights reserved.
1839
1840Redistribution and use in source and binary forms are permitted provided that
1841the above copyright notice and this paragraph are duplicated in all such forms
1842and that any documentation, advertising materials, and other materials related
1843to such distribution and use acknowledge that the software was developed
1844by the abovementioned author(s).
1845
1846THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS
1847OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION,
1848THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS
1849FOR A PARTICULAR PURPOSE.
1850@end display
1851
1852@contents
1853@bye
1854
1855