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