| 1 | Copyright (C) 1989, 1992 Aladdin Enterprises. All rights reserved. |
| 2 | Distributed by Free Software Foundation, Inc. |
| 3 | |
| 4 | This file is part of Ghostscript. |
| 5 | |
| 6 | Ghostscript is distributed in the hope that it will be useful, but |
| 7 | WITHOUT ANY WARRANTY. No author or distributor accepts responsibility |
| 8 | to anyone for the consequences of using it or for whether it serves any |
| 9 | particular purpose or works at all, unless he says so in writing. Refer |
| 10 | to the Ghostscript General Public License for full details. |
| 11 | |
| 12 | Everyone is granted permission to copy, modify and redistribute |
| 13 | Ghostscript, but only under the conditions described in the Ghostscript |
| 14 | General Public License. A copy of this license is supposed to have been |
| 15 | given to you along with Ghostscript so you can know your rights and |
| 16 | responsibilities. It should be in a file named COPYING. Among other |
| 17 | things, the copyright notice and this notice must be preserved on all |
| 18 | copies. |
| 19 | |
| 20 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 21 | |
| 22 | This file, history.doc, describes the changes in the various releases of |
| 23 | Ghostscript. |
| 24 | |
| 25 | For an overview of Ghostscript and a list of the documentation files, see |
| 26 | README. |
| 27 | |
| 28 | Version 2.4.1 (4/21/92) |
| 29 | ============= |
| 30 | |
| 31 | This is a quick release to fix minor problems discovered in 2.4, and |
| 32 | to add a few improvements that didn't quite make it into 2.4. It |
| 33 | also adds GIF and PCX file support. |
| 34 | |
| 35 | Procedures |
| 36 | ---------- |
| 37 | |
| 38 | Fixes bugs: |
| 39 | - Some makefile dependencies, and the ccgs script, caused trouble |
| 40 | for parallel versions of `make'. |
| 41 | - Compiling genarch with -O with gcc on the RS/6000 produced a |
| 42 | buggy executable. |
| 43 | |
| 44 | Fixes some minor problems in make.doc. |
| 45 | |
| 46 | Adds DEVICE_DEVS2..5 to handle long device lists. |
| 47 | |
| 48 | Removes the need to set GS_RUN_EXE when using the Watcom compiler on |
| 49 | MS-DOS systems. |
| 50 | |
| 51 | Gets rid of gs_ccfnt.ps, merging its function into gs_fonts.ps. |
| 52 | |
| 53 | Gets rid of gconfig.ps; this information is now compiled in gconfig.c. |
| 54 | |
| 55 | Utilities |
| 56 | --------- |
| 57 | |
| 58 | Fixes bugs: |
| 59 | - The palette for pstoppm in 8-bit mode didn't contain all 8 |
| 60 | primary colors. |
| 61 | - font2c used just values_ to mean &values_[0]; some compilers |
| 62 | couldn't handle this. |
| 63 | |
| 64 | Makes font2c insert `const' in many appropriate places. |
| 65 | |
| 66 | Drivers |
| 67 | ------- |
| 68 | |
| 69 | Fixes bugs: |
| 70 | - The SunView driver had not been updated properly for 2.4 and was |
| 71 | pretty thoroughly broken. |
| 72 | - None of the printer drivers worked properly with the Watcom |
| 73 | compiler, because stdprn was doing \n -> \r\n substitution. |
| 74 | - If the generic printer driver couldn't allocate the requested |
| 75 | size command list buffer, it gave up rather than trying to allocate a |
| 76 | smaller buffer. |
| 77 | - The SuperVGA drivers (except for the VESA driver) didn't |
| 78 | work with the Watcom compiler, because a couple of places in the |
| 79 | drivers weren't truncating the offset of "segmented" pointers |
| 80 | properly. |
| 81 | - Some of the H-P used <esc>*b#Y rather than <esc>*p+#Y for |
| 82 | vertical positioning; this apparently is wrong, at least for the |
| 83 | LJIIp. |
| 84 | |
| 85 | Removes the dependence of the X Windows driver on Xt, Xext, and Xmu. As a |
| 86 | result, Ghostscript will not install a standard colormap itself, but it |
| 87 | will use one if one is already installed. |
| 88 | |
| 89 | Adds a set of drivers for Portable Bitmap, Graymap, and Pixmap file |
| 90 | formats. |
| 91 | |
| 92 | Adds drivers for monochrome, EGA/VGA-style, and SuperVGA-style PCX |
| 93 | file formats. |
| 94 | |
| 95 | Adds drivers for monochrome and 256-color GIF file formats. |
| 96 | |
| 97 | Fonts |
| 98 | ----- |
| 99 | |
| 100 | Adds ZapfChancery-MediumItalic as a copy of ZapfChancery-Oblique. |
| 101 | |
| 102 | Interpreter |
| 103 | ----------- |
| 104 | |
| 105 | Fixes bugs: |
| 106 | - A value with l_new set could 'escape' to save level 0 on a |
| 107 | stack; if stored, it prevented the slot from being saved and restored |
| 108 | properly. |
| 109 | - 16#7fffffff + 1 gave the floating point equivalent of -2^31, not |
| 110 | 2^31. |
| 111 | - The PFBDecode filter computed the packet length incorrectly if |
| 112 | the 0x8000-bit of the length was set. |
| 113 | - 5-byte numbers in Type 1 CharStrings complained of a rangecheck |
| 114 | if they exceeded 16 bits, rather than if they exceeded the integer part of |
| 115 | a fixed. |
| 116 | - (, ), and \ appearing in file name arguments in the command |
| 117 | line did not work properly. |
| 118 | |
| 119 | Adds 'const' in many places. |
| 120 | |
| 121 | Changes the random number generator to be the same as the one used in |
| 122 | Level 2 PostScript (as reported by Ed Taft on comp.lang.postscript). |
| 123 | |
| 124 | Exits with code 1 rather than code 0 on an unrecoverable error detected at |
| 125 | the PostScript level. |
| 126 | |
| 127 | Makes dictionaries expand automatically when they fill up. |
| 128 | |
| 129 | Adds gp_exit to complement gp_init. |
| 130 | |
| 131 | Changes dictionaries to always allocate a power of 2 entries on |
| 132 | 32-bit machines. Changes the name table to allocate indices |
| 133 | scattered, so dictionary lookup doesn't have to do a multiply to |
| 134 | scramble the index. |
| 135 | |
| 136 | Changes the handling of currentfile to do "shallow binding" so stack |
| 137 | searching is almost never required. |
| 138 | |
| 139 | Library |
| 140 | ------- |
| 141 | |
| 142 | Fixes bugs: |
| 143 | - arc and arcn got a numeric exception if the radius was zero. |
| 144 | - The undocumented 15 opcode in Type 1 fonts wasn't ignored. |
| 145 | - PaintType 3 wasn't allowed. (It isn't clear what it should |
| 146 | mean; we treat it as equivalent to 0.) |
| 147 | - The VAX/VMS C compiler was generating incorrect code for the |
| 148 | chi_bits and cmask macros in gdevmem, producing incorrect output. |
| 149 | - If the result of the slow algorithm for intersecting clipping |
| 150 | paths was a rectangle, the wrong thing happened (cbox didn't get set). |
| 151 | - gx_path_is_rectangle didn't recognize open rectangles. |
| 152 | - clist_change_tile didn't check properly whether the tile |
| 153 | size had changed, so changing the screen could produce invalid band |
| 154 | files. |
| 155 | - The image operators did the wrong thing in the 1-for-1 |
| 156 | case, interleaving N bytes of data with 7*N bytes of garbage. |
| 157 | - stroke sometimes handled bevel and miter joins wrong in |
| 158 | reflected coordinate systems. |
| 159 | - init_ht checked incorrectly whether there was enough room |
| 160 | to Y-replicate tiles, so sometimes it did it when it shouldn't have. |
| 161 | - stroke sometimes thought lines were thin when they weren't. |
| 162 | |
| 163 | Adds 'const' in many places. |
| 164 | |
| 165 | Adds support for 2- and 4-bit-per-pixel memory devices. |
| 166 | |
| 167 | Version 2.4 (3/25/92) |
| 168 | =========== |
| 169 | |
| 170 | This is a major release that adds SuperVGA support, support for Metrics, |
| 171 | settable device properties, and incremental font loading. It also |
| 172 | includes important performance improvements, based on rewrites of some key |
| 173 | algorithms, and quite a few new Level 2 / Display PostScript facilities. |
| 174 | |
| 175 | Procedures |
| 176 | ---------- |
| 177 | |
| 178 | Fixes bugs: |
| 179 | - The rule for compiling gconfig.c didn't include the -I switches. |
| 180 | - .bat files were being distributed with a \n line terminator |
| 181 | rather than \r\n. |
| 182 | - A CLOSE MODULE_LIST was needed after END_COMPILE: in the VMS |
| 183 | command files. |
| 184 | - Unix systems couldn't handle multiple drivers with overlapping |
| 185 | sets of files. |
| 186 | - -s<name> defined <name> as a null, rather than as an empty string. |
| 187 | |
| 188 | Adds gconfig.ps to the list of needed configuration files. |
| 189 | |
| 190 | Changes the way that the makefile handles nested .h files, so that it |
| 191 | doesn't have to `touch' them. |
| 192 | |
| 193 | Adds the loadallfonts procedure to gs_fonts.ps. |
| 194 | |
| 195 | Changes the standard DOS configuration to include VGA, EGA, VESA, Epson, |
| 196 | BubbleJet, and H-P printer drivers. |
| 197 | |
| 198 | Renames ghost.mak as gs.mak, and gdevs.mak as devs.mak. |
| 199 | |
| 200 | Adds a USE_ASM flag so that one can build a DOS version of Ghostscript |
| 201 | without having an assembler. |
| 202 | |
| 203 | Splits off common code from the two MS-DOS makefiles into tccommon.mak. |
| 204 | |
| 205 | Replaces the COPYING and LICENSE files with a new LICENSE file containing |
| 206 | version 2 of the GNU General Public License. |
| 207 | |
| 208 | Removes DEVICES and DEVICE_OBJS from the makefiles, since they are no |
| 209 | longer needed. |
| 210 | |
| 211 | Adds a GS_DEVICE environment variable to supply a default device name if |
| 212 | desired. |
| 213 | |
| 214 | Adds ansihead.mak and unix-ansi.mak, to parallel [g]cc-head.mak and |
| 215 | unix-[g]cc.mak, for other ANSI C compilers. |
| 216 | |
| 217 | Changes the way that optional features are defined in the makefiles, so |
| 218 | that they actually work. |
| 219 | |
| 220 | Adds support for the Watcom C/386 compiler. |
| 221 | |
| 222 | Allows # in the command line as equivalent to =, to compensate for |
| 223 | brain-damaged MS-DOS shell. |
| 224 | |
| 225 | Adds -sOUTPUTFILE= to set the output file or pipe. |
| 226 | |
| 227 | Adds -dWRITESYSTEMDICT to leave systemdict writable. |
| 228 | |
| 229 | Utilities |
| 230 | --------- |
| 231 | |
| 232 | Fixes bugs: |
| 233 | - pcharstr.ps insisted on having Subrs be present in the font. |
| 234 | - pcharstr.ps decoded negative numbers between -108 and -1131 |
| 235 | incorrectly. |
| 236 | - pfbtogs.ps didn't handle packets longer than 64K correctly. |
| 237 | |
| 238 | Changes the bdftops utility so that it makes entries for UnderlinePosition |
| 239 | and UnderlineThickness in FontInfo, and so that it always records a |
| 240 | FullName (the FontName if no other is provided). |
| 241 | |
| 242 | Changes the name of the pfbtops utility to pfbtogs, because groff already |
| 243 | includes a program called pfbtops. |
| 244 | |
| 245 | Adds the gslp utility for doing "line printing" of text files, similar to |
| 246 | enscript + lpr. |
| 247 | |
| 248 | Adds a new variable DITHERPPI that enables a different dither pattern, |
| 249 | claimed to be better for printers. |
| 250 | |
| 251 | Adds the font2c utility for compiling Type 1 fonts into C, so they can be |
| 252 | linked into an executable rather than loaded dynamically. |
| 253 | |
| 254 | Drivers |
| 255 | ------- |
| 256 | |
| 257 | Fixes bugs: |
| 258 | - gdev_prn_copy_scan_lines was erroneously masking the last byte |
| 259 | of data even on color printers, as was paintjet_print_page. |
| 260 | - The TruFax driver had a couple of compilation errors, since it |
| 261 | hadn't been compiled in a while. |
| 262 | - The BGI driver sometimes didn't consult BGIPATH when looking for |
| 263 | .BGI files. |
| 264 | - initclip did the wrong thing with memory devices. |
| 265 | - The BGI driver didn't look in BGIDIR for .BGI files. |
| 266 | - The Epson driver didn't set the right margin properly with |
| 267 | ESC+Q. |
| 268 | - The BJ-10e driver was badly broken. |
| 269 | - gdev_prn_open/close_printer didn't reset the command list file, |
| 270 | so it was taking quadratic time to print multi-page documents. |
| 271 | |
| 272 | Adds color to the SunView driver. |
| 273 | |
| 274 | Adds selectable resolution (75, 100, 150, or 300 DPI) to the |
| 275 | DeskJet/LaserJet driver. |
| 276 | |
| 277 | Changes gssetdev so that drivers can specify special libraries to be |
| 278 | loaded, as well as object files. |
| 279 | |
| 280 | Adds a driver for VESA-compliant SuperVGA displays. This driver handles |
| 281 | all resolutions from 640 x 400 up to 1280 x 1024, in 256-color mode. The |
| 282 | default is VGA resolution (640 x 480). |
| 283 | |
| 284 | Adds a driver for the ATI Wonder SuperVGA card, and for SuperVGA cards |
| 285 | using the Tseng Labs ET3000 or ET4000 chip such as the STB VGA EM-16 and |
| 286 | the Orchid ProDesigner II (256-color modes only). |
| 287 | |
| 288 | Adds a driver for Trident and Tseng Labs SuperVGA cards in 800 x 600, |
| 289 | 16-color modes (for cards with only 256K of memory). |
| 290 | |
| 291 | Adds user-contributed drivers for the Ricoh 4081, DEC LN03, Canon LBP-8II, |
| 292 | and H-P DeskJet 500C printers. |
| 293 | |
| 294 | Adds Tim Theisen's Ghostview changes to the X11 driver. |
| 295 | |
| 296 | MAKES NON-BACKWARD-COMPATIBLE CHANGES TO THE DRIVER PROCEDURE INTERFACE as |
| 297 | follows: |
| 298 | |
| 299 | - Changes map_rgb_color and map_color_rgb to always work in a |
| 300 | 16-bit color value space, rather than a space defined by the |
| 301 | maximum number of distinct colors provided by the device. |
| 302 | |
| 303 | - Adds an argument to the output_page procedure to indicate |
| 304 | whether the procedure is being called for copypage or |
| 305 | showpage, and a num_copies argument. |
| 306 | |
| 307 | - Adds a gx_bitmap_id to the copy_ and tile_ procedures, so that |
| 308 | drivers can cache bitmaps in the server or device if they want |
| 309 | to. |
| 310 | |
| 311 | - Removes fill_trapezoid and tile_trapezoid. |
| 312 | |
| 313 | - Adds a new get_bits procedure for reading the bits back from the |
| 314 | driver buffer (when possible), replacing copy_scan_lines. |
| 315 | This procedure takes a new argument describing padding and |
| 316 | byte swapping, and returns a different value from |
| 317 | copy_scan_lines. |
| 318 | |
| 319 | - Adds get_props and put_props procedures for accessing arbitrary |
| 320 | additional properties of devices. The interface is quite |
| 321 | complex, but provides a great deal of flexibility. |
| 322 | |
| 323 | See drivers.doc for details. |
| 324 | |
| 325 | Changes gdev_mem_bytes_per_scan_line to gdev_prn_bytes_per_scan_line. |
| 326 | |
| 327 | Adds a user-contributed driver for DigiBoard, Inc.'s fax software. |
| 328 | |
| 329 | Fonts |
| 330 | ----- |
| 331 | |
| 332 | Changes Type1BuildChar so it uses the information from the Metrics |
| 333 | dictionary in the font, if Metrics is present. |
| 334 | |
| 335 | Changes findfont (.loadfont) so it recognizes .PFB fonts and can load them |
| 336 | directly. Also changes .loadfont to disable packing temporarily, because |
| 337 | some fonts rely on procedures being writable (!). |
| 338 | |
| 339 | Interpreter |
| 340 | ----------- |
| 341 | |
| 342 | Fixes bugs: |
| 343 | - The hypot function is not available on some Unix systems. |
| 344 | - Ghostscript didn't flush and close files when exiting. |
| 345 | - In statusdict, the /margins procedure used .leftmargin, but |
| 346 | /setmargins used .lmargin. |
| 347 | - An out-of-range putinterval would simply do nothing, rather than |
| 348 | reporting an error. |
| 349 | - If an attempt to allocate a block larger than the allocator's |
| 350 | chunk size (20K) failed, the allocator would erroneously think it had |
| 351 | succeeded. |
| 352 | - The bind operator made the top-level procedure read-only, as |
| 353 | well as interior procedures. |
| 354 | - gs.c copied 1 extra character for the value of strings defined |
| 355 | on the command line with -s...=, which could smash the first byte of the |
| 356 | next object in memory. |
| 357 | - copying a dictionary erroneously required the maxlength of the |
| 358 | destination to be greater than or equal to the maxlength of the source, |
| 359 | rather than the length of the source. |
| 360 | - undef didn't correctly decide when to mark a deleted entry as |
| 361 | deleted vs. free; as a result, some keys couldn't be looked up properly |
| 362 | after an undef. |
| 363 | - type1encrypt and type1decrypt didn't set the size of the result |
| 364 | properly. |
| 365 | - cvi and cvr didn't allow leading or trailing whitespace in |
| 366 | strings. |
| 367 | - cvs didn't cause an error if the destination string was too |
| 368 | short. |
| 369 | - Many operators didn't check correctly for stack underflow (off |
| 370 | by 1). |
| 371 | - `for' used reals, rather than integers, if the limit was a real, |
| 372 | even if the initial value and increment were integers. |
| 373 | - `restore' didn't properly invalidate copies of the save object |
| 374 | being restored from; `save dup restore restore' would crash. |
| 375 | - `restore' sometimes didn't undo stores into matrices that were |
| 376 | stored into by operators. (The identity matrix always had l_new set.) |
| 377 | - readline gave a rangecheck if the input line exactly filled the |
| 378 | string. |
| 379 | - `--' as the last switch on the command line caused a crash |
| 380 | rather than an error message. |
| 381 | - On MS-DOS systems, filenameforall didn't handle patterns with a |
| 382 | drive or directory specifier properly. |
| 383 | - stroke sometimes called gz_draw_line_fixed even if the line went |
| 384 | outside the clipping box by 1 pixel. |
| 385 | |
| 386 | Changes the loop that binds procedure "operators" to entirely disable the |
| 387 | handling of the typecheck error, rather than to use stopped. This cuts |
| 388 | initialization time significantly, and also eliminates about 35K of wasted |
| 389 | space (for saving the stacks). |
| 390 | |
| 391 | Changes the version "operator" so it returns 47.0. Adds "revision" to |
| 392 | define the Ghostscript version # x 100. |
| 393 | |
| 394 | Adds gscurrentresolution and gssetresolution procedures for getting and |
| 395 | setting the device resolution. |
| 396 | |
| 397 | Adds -r<res> and -r<xres>x<yres> as command line options for setting |
| 398 | device resolution. |
| 399 | |
| 400 | Adds a facility for incrementally loading the individual CharStrings of a |
| 401 | Ghostscript font from the disk. This can save a lot of memory, at the |
| 402 | expense of slower rendering. (It is intended primarily for MS-DOS |
| 403 | systems.) |
| 404 | |
| 405 | Changes findlibfile to return the name of the file that was actually |
| 406 | opened, as well as the file itself, when the operation succeeds. |
| 407 | |
| 408 | Changes the name of the main entry to the interpreter from interpret to |
| 409 | gs_interpret, because of a conflict with a Data General library procedure. |
| 410 | |
| 411 | Adds the .setmetrics operator to set the metrics for the current |
| 412 | character for Type 1 fonts. |
| 413 | |
| 414 | Adds more LaserWriter-specific entries to statusdict. |
| 415 | |
| 416 | Gives names to all the internal `operators', so they will print out |
| 417 | reasonably when an error occurs. |
| 418 | |
| 419 | Extends the status operator to accept a string and return file |
| 420 | information, as defined for Level 2 PostScript. |
| 421 | |
| 422 | Adds the filter operator and some specific filters: ASCII85Encode, |
| 423 | ASCII85Decode, ASCIIHexEncode, ASCIIHexDecode, eexecDecode, NullEncode, |
| 424 | PFBDecode, and the null case of SubFileDecode. |
| 425 | |
| 426 | Extends the scanner to recognize the Level 2 << and >> tokens. |
| 427 | |
| 428 | Adds a facility for extracting the text strings from a PostScript file and |
| 429 | writing them out in a simple format (selected by -dASCIIOUT, implemented |
| 430 | by gs_2asc.ps). |
| 431 | |
| 432 | Implements all of the remaining Display PostScript facilities that are |
| 433 | also in Level 2 (i.e., everything in section A.1.3 of the PostScript |
| 434 | Language Reference Manual, Second Edition, that is not also in section |
| 435 | A.1.2). The virtual memory operations are all stubs; the new halftone |
| 436 | options are not fully implemented. |
| 437 | |
| 438 | Changes makeimagedevice to use a string of gray or RGB values, rather than |
| 439 | an array of color objects, to specify the palette. Removes |
| 440 | currentgscolor and setgscolor from the interpreter, but leaves t_color |
| 441 | objects in, since they may be useful later. |
| 442 | |
| 443 | Adds getdeviceprops and putdeviceprops for manipulating device properties. |
| 444 | Currently defined properties for all devices: InitialMatrix, HWResolution, |
| 445 | HWSize, Name. Currently defined properties for printers: BufferSpace, |
| 446 | MaxBitmap, OutputFile. OutputFile allows |command for piping on Unix |
| 447 | systems. |
| 448 | |
| 449 | Removes deviceparams and makedevice. Adds devicedefaultmatrix. |
| 450 | |
| 451 | Implements reversepath. |
| 452 | |
| 453 | Makes copy work on devices. |
| 454 | |
| 455 | MS-DOS specific |
| 456 | - - - - - - - - |
| 457 | |
| 458 | Fixes bugs: |
| 459 | - iutilasm.asm wouldn't assemble with newer versions of MASM if |
| 460 | CPU_TYPE was set to 286 or above. |
| 461 | - CPU_TYPE=386 didn't properly substitute the faster |
| 462 | multiply/divide routines under Turbo C++ or Borland C++, only under the |
| 463 | original Turbo C. |
| 464 | |
| 465 | Library |
| 466 | ------- |
| 467 | |
| 468 | Fixes bugs: |
| 469 | - A curve whose first and last points were the same wouldn't get |
| 470 | drawn at all. |
| 471 | - A bug in the Turbo C++ compiler generated bad code when shifting |
| 472 | a long right by 1 bit. |
| 473 | - If stroking a dashed line ever encountered a segment that was |
| 474 | completely blank, Ghostscript would indirect through a null pointer. |
| 475 | - arc and arcn gave an error if the radius was negative. |
| 476 | - stroke always used the general algorithm, even if the line was |
| 477 | guaranteed to be thin. |
| 478 | - arc and arcn erroneously reduced the angles mod 360. |
| 479 | - Very large or negative 32-bit numbers in Type 1 fonts didn't |
| 480 | work properly on MS-DOS systems (the ff0000 bits got set to zero). |
| 481 | - Color printer devices rendering entirely in memory only |
| 482 | allocated a monochrome-sized bitmap. |
| 483 | - clip and eoclip didn't intersect the paths properly in the |
| 484 | general case. |
| 485 | - charpath erroneously rounded the current point to an integral |
| 486 | value, causing characters to be spaced improperly. |
| 487 | - The definition of max_color_param got some compilers confused. |
| 488 | - charpath always used quadratic time and space, and dropped all |
| 489 | but the last character when used with a Type 3 font. |
| 490 | - Stroking a path with a 180 degree angle would incorrectly miter |
| 491 | instead of beveling. |
| 492 | - Type 1 fonts used the current flatness for curves, which could |
| 493 | produce bad (and inconsistent) results. |
| 494 | - Stroking a degenerate line segment produced incorrect results. |
| 495 | |
| 496 | Changes the character cache to use the UniqueID as the key, when |
| 497 | available, instead of the font pointer. This dramatically improves |
| 498 | performance when fonts are getting removed and reloaded because of page |
| 499 | isolation with save/restore. |
| 500 | |
| 501 | Removes some unnecessary casts to (float) from gsmatrix.c and gscoord.c. |
| 502 | |
| 503 | Changes the Type 1 interpreter so that it rounds line and curve endpoints |
| 504 | to the center of the nearest half-pixel, and omits null line segments. |
| 505 | This both speeds up rendering at small sizes and improves output quality. |
| 506 | |
| 507 | Changes gs_deviceparams to return resolution as well as extent; changes |
| 508 | gs_makedevice to accept resolution as well as extent. |
| 509 | |
| 510 | Replaces the algorithm for approximating circular arcs with curves with a |
| 511 | more accurate one. |
| 512 | |
| 513 | Changes gs_point and gs_rect to use doubles rather than floats. |
| 514 | |
| 515 | Adds gs_setmetrics, for overriding Type 1 font metrics for the current |
| 516 | character. |
| 517 | |
| 518 | Changes clipping to use lists of rectangles rather than path intersection. |
| 519 | This makes a big difference when clipping bitmaps (including characters). |
| 520 | |
| 521 | Changes the character cache to discard entries incrementally, rather than |
| 522 | clearing the entire cache when it fills up. |
| 523 | |
| 524 | Changes the implementation of transfer functions to use a cached map, |
| 525 | built when the transfer function is set. This makes transfer functions |
| 526 | work properly in all situations, including images. |
| 527 | |
| 528 | Defines a .quit operator that takes an exit code, and redefines quit in |
| 529 | terms of it. |
| 530 | |
| 531 | Adds support for 16-bit-per-pixel devices in gdevmem. |
| 532 | |
| 533 | Adds gs_copydevice and gs_deviceinitialmatrix; removes gs_deviceparams and |
| 534 | gs_makedevice. |
| 535 | |
| 536 | Changes setscreen to ensure that the cell is always at least 4x4 pixels in |
| 537 | size. |
| 538 | |
| 539 | Version 2.3 (8/28/91) |
| 540 | =========== |
| 541 | |
| 542 | This is a minor release to fix two bugs and add the PaintJet driver, which |
| 543 | didn't make it into 2.2. |
| 544 | |
| 545 | Utilities |
| 546 | --------- |
| 547 | |
| 548 | Changes the pstoppm utility so it counts pages correctly even in the |
| 549 | presence of arbitrary saves and restores. |
| 550 | |
| 551 | Drivers |
| 552 | ------- |
| 553 | |
| 554 | Adds a new, "supported" PaintJet driver. |
| 555 | |
| 556 | Changes the Epson driver to use ESC+D rather than ESC+\ for horizontal |
| 557 | positioning, since many printers don't support the latter. |
| 558 | |
| 559 | Adds horizontal double-density (two-pass) printing to the Epson driver, so |
| 560 | it can do 240 x 60 and 360 x 180 densities. (Vertical double density is |
| 561 | not supported yet.) |
| 562 | |
| 563 | Version 2.2 (6/1/91) |
| 564 | =========== |
| 565 | |
| 566 | The purpose of this release is to add save/restore, and a few |
| 567 | miscellaneous Level 2 P*stScr*pt features such as undef. It also includes |
| 568 | major improvements in graphics quality and in handling of high-resolution |
| 569 | printers. |
| 570 | |
| 571 | Procedures |
| 572 | ---------- |
| 573 | |
| 574 | Changes the version numbering to M.mpp rather than M.m.p, so that |
| 575 | `version' can be a real number for those programs that insist on it. |
| 576 | |
| 577 | Renames ghost.ps as gs_init.ps, gfonts.ps as gs_fonts.ps, and statusd.ps |
| 578 | as gs_statd.ps. The initialization files now all are named gs_*.ps. |
| 579 | |
| 580 | Renames gdevs.{c,h,tl} as gconfig.{c,h,tl}. |
| 581 | |
| 582 | Changes the relevant makefiles and command files so that a single build |
| 583 | can contain several drivers that share code, e.g., the Epson driver and |
| 584 | the DeskJet driver. |
| 585 | |
| 586 | Changes gs_init.ps so it relies on an external gconfig.ps file rather than |
| 587 | making a specific test for the presence of Level 2 features. |
| 588 | |
| 589 | Adds an entry for uglyr.gsf to the makefile. |
| 590 | |
| 591 | Removes the distinction between CCA and CCNA, since most of the files now |
| 592 | contain constructs that require non-ANSI compilation on MS-DOS platforms. |
| 593 | |
| 594 | Adds a `man' page for the ansi2knr utility. |
| 595 | |
| 596 | Changes the documentation (use.doc) to show how to use -sDEVICE=<device>, |
| 597 | or the selectdevice procedure, to select devices by name. |
| 598 | |
| 599 | Adds DEVICE_DEVS to the makefiles (analogous to DEVICES and DEVICE_OBJS). |
| 600 | This finally makes the make procedure fully automatic. |
| 601 | |
| 602 | Adds the name of the initialization file (gs_init.ps) as a |
| 603 | platform-specific makefile parameter, GS_INIT. |
| 604 | |
| 605 | Removes the test program gt.{c,tr} from the fileset, since it is not |
| 606 | useful to users. |
| 607 | |
| 608 | Moves the Symbol encoding vector to a separate file (symbol_e.ps), from |
| 609 | which it is loaded when first used. |
| 610 | |
| 611 | Changes the error handler so it can handle errors that occur while reading |
| 612 | the initialization files. |
| 613 | |
| 614 | Extends ansi2knr so it can handle `void' and `...' in parameter lists. |
| 615 | |
| 616 | Adds quit.ps to the set of installed files. |
| 617 | |
| 618 | MS-DOS-specific changes |
| 619 | - - - - - - - - - - - - |
| 620 | |
| 621 | Adds the VGA and BGI drivers to the standard MS-DOS configuration, and |
| 622 | makes VGA the default. |
| 623 | |
| 624 | Adds a `+' and a newline at the end of gs.tr, to avoid problems with file |
| 625 | transfer programs or editors that add a newline at the end of files. |
| 626 | |
| 627 | Changes the name of msdos.mak to turboc.mak, and creates a new tbcplus.mak |
| 628 | makefile for use with Turbo C++ and Borland C++. |
| 629 | |
| 630 | Changes the extension of the loader response files from .tl to .tr. |
| 631 | |
| 632 | Changes the default search path from c:/ghost and c:/ghost/fonts to c:/gs |
| 633 | and c:/gs/fonts. |
| 634 | |
| 635 | Changes the directory separator from `|' back to ';', since it appears |
| 636 | that DOS can handle a ; in a command line if it is prefixed with \. |
| 637 | |
| 638 | Unix-specific changes |
| 639 | - - - - - - - - - - - |
| 640 | |
| 641 | Changes the uses of install in unixtail.mak so they only install a single |
| 642 | file at a time, which is all that the standard Unix install allows. |
| 643 | |
| 644 | Removes the duplicate files (README/readme, LICENSE/license, |
| 645 | COPYING/copying, Fontmap/fontmap). |
| 646 | |
| 647 | Changes the ld flags from LDPLAT to LDFLAGS. |
| 648 | |
| 649 | Adds XCFLAGS and XLDFLAGS. These are concatenated with CFLAGS and LDFLAGS |
| 650 | respectively. The intention is that they be set from the `make' command |
| 651 | line if desired. |
| 652 | |
| 653 | VMS-specific changes |
| 654 | - - - - - - - - - - |
| 655 | |
| 656 | Repairs the omission of ZPACKED from the VMS build lists. |
| 657 | |
| 658 | Drivers |
| 659 | ------- |
| 660 | |
| 661 | Fixes bugs: |
| 662 | - The SunView driver produced semi-garbage on little-endian |
| 663 | platforms (Sun-386i) because it didn't swap the bit order. |
| 664 | - The X driver would dump core if it couldn't open the display and |
| 665 | the DISPLAY environment variable wasn't set. |
| 666 | - The X driver relied on white = 0, black = ones in a couple of |
| 667 | places; |
| 668 | - The X driver would return an error, instead of clipping, if |
| 669 | asked to display outside the window. |
| 670 | - The X driver would create inappropriately sized windows, because |
| 671 | it believed the server's report of the screen resolution. |
| 672 | |
| 673 | Adds Fran Taylor's Private Eye driver to gdevs.mak and the fileset (not |
| 674 | supported by Aladdin Enterprises). |
| 675 | |
| 676 | Adds Neil Ostroff's TruFax driver to gdevs.mak and the fileset (not |
| 677 | supported by Aladdin Enterprises). |
| 678 | |
| 679 | Makes the scratch file template for the printer drivers a per-platform |
| 680 | quantity (gp_scratch_file_name_template). Puts the default scratch files |
| 681 | for Unix in /usr/tmp rather than /tmp. |
| 682 | |
| 683 | Changes the SunView driver to prevent the Ghostscript window from being |
| 684 | destroyed (which badly confuses the interpreter). |
| 685 | |
| 686 | Extends the Epson driver to handle a variety of print densities in both X |
| 687 | and Y, to handle 24-pin as well as 8-pin graphics, and to allow optional |
| 688 | specification of default density in the makefile (gdevs.mak). |
| 689 | |
| 690 | Refactors the printer drivers so that a single driver handles both DeskJet |
| 691 | and LaserJet. Adds LaserJet drivers that use the new compression modes on |
| 692 | the LJ IId/IIp and LJ III. |
| 693 | |
| 694 | Changes all the printer drivers to use band lists rather than bitmap |
| 695 | paging as the buffering method. (The individual drivers need only a |
| 696 | one-line change to replace mem_copy_scan_lines with |
| 697 | gdev_prn_copy_scan_lines with a different argument.) |
| 698 | |
| 699 | Adds the halftone phase as additional arguments to tile_rectangle and |
| 700 | tile_trapezoid. |
| 701 | |
| 702 | Adds an entirely new and much simpler PaintJet driver, using the new band |
| 703 | list interface. |
| 704 | |
| 705 | Adds margin information to the device structure. This is currently only |
| 706 | relevant for printer devices. |
| 707 | |
| 708 | Adds BGIPATH and BGIUSER environment variables, allowing additional |
| 709 | control of the BGI driver. |
| 710 | |
| 711 | Changes the x/y_pixels_per_inch member of the device structure from int to |
| 712 | float. |
| 713 | |
| 714 | Fonts |
| 715 | ----- |
| 716 | |
| 717 | Patches gs_fonts.ps so definefont will add an isFixedPitch entry to |
| 718 | FontInfo if there isn't one there. |
| 719 | |
| 720 | Removes the old "type 7 path" encoding code from gs_fonts.ps. |
| 721 | |
| 722 | Changes bdftops so it puts isFixedWidth and ItalicAngle entries in the |
| 723 | FontInfo dictionary of the fonts it creates, since some P*stScr*pt |
| 724 | programs rely on this. |
| 725 | |
| 726 | Changes bdftops so it synthesizes as many missing characters as possible |
| 727 | out of the ones that are there (in particular: synthesizes accents out of |
| 728 | punctuation marks, and accented characters using seac.) The results |
| 729 | aren't all that good, but they're a lot better than having characters |
| 730 | missing out of the font. |
| 731 | |
| 732 | Utilities |
| 733 | --------- |
| 734 | |
| 735 | Adds a pfbtops utility for converting .PFB fonts to standard Ghostscript |
| 736 | fonts. |
| 737 | |
| 738 | Fixes bugs: |
| 739 | - ps2image didn't reset things properly between pages for |
| 740 | multi-page documents. |
| 741 | |
| 742 | Interpreter |
| 743 | ----------- |
| 744 | |
| 745 | Makes Ghostscript recognize `-' alone as meaning that it should read from |
| 746 | standard input as though it were a file. This allows Ghostscript to |
| 747 | accept a pipe as input. |
| 748 | |
| 749 | Fixes bugs: |
| 750 | - seac in type1addpath used the current font's encoding, not |
| 751 | StandardEncoding. |
| 752 | - type1decryptfile (eexec) didn't recognize binary (as opposed to |
| 753 | hex) representation. |
| 754 | - Mentioning a name whose value was a no-access object caused an |
| 755 | invalidaccess error. |
| 756 | - There was a bogus definition of `run' in zfile.c. |
| 757 | - The interpreter didn't handle end-of-file on stdin properly. |
| 758 | - Real numbers with an 'e' or 'E' but no decimal point were not |
| 759 | recognized. |
| 760 | - On MS-DOS systems, inside strings, \ followed by a newline was |
| 761 | not discarded properly. |
| 762 | - On MS-DOS systems, the long unsigned divide routine sometimes |
| 763 | gave incorrect answers. Among other things, this caused alternate-radix |
| 764 | numbers sometimes to crash the interpreter. |
| 765 | - cvrs didn't do the right thing about reals or negative integers. |
| 766 | - .echo.mode was being reset with def instead of store, and was |
| 767 | defined in systemdict rather than userdict. |
| 768 | - setgray and settransfer didn't interact properly. |
| 769 | - 16#80000000 was being interpreted as a signed integer (and |
| 770 | converted to a real) rather than an unsigned one. |
| 771 | - atan returned 0 sometimes when it should have returned 180. |
| 772 | - currentcmykcolor was defined wrong. |
| 773 | |
| 774 | Removes the filename operator, since no standard Ghostscript code used it, |
| 775 | and it caused problems with some P*stScr*pt files. |
| 776 | |
| 777 | Implements new operators: filenameforall, selectfont (as a procedure), |
| 778 | stringmatch, undef. |
| 779 | |
| 780 | Adds new standard procedures: selectdevice. |
| 781 | |
| 782 | For MS-DOS, requires that the operand and execution stacks be located in |
| 783 | the data segment, and uses short pointers to address them. This produces |
| 784 | significantly smaller and faster code. (These changes are not visible to |
| 785 | users or library clients.) |
| 786 | |
| 787 | Changes the assignment of attribute bits, and adds new bits for |
| 788 | save/restore and the garbage collector. Changes many of the macros in |
| 789 | store.h to support save/restore. (These changes are not visible to users |
| 790 | or library clients.) Implements save and restore. |
| 791 | |
| 792 | Moves type names from gs_init.ps to ghost.h and ztype.c. |
| 793 | |
| 794 | Moves error names from gs_init.ps to errors.h and iinit.c. |
| 795 | |
| 796 | Introduces gp.h as a documented interface to the platform-specific files. |
| 797 | |
| 798 | Adds the -- switch, which allows Ghostscript programs to take arguments |
| 799 | from the command line. |
| 800 | |
| 801 | Changes many uses of the name `name' to something else, to avoid upsetting |
| 802 | the Microsoft C compiler. |
| 803 | |
| 804 | Really implements packed arrays -- they took the same amount of space as |
| 805 | ordinary arrays in previous versions. |
| 806 | |
| 807 | Changes exitserver in serverdict so that it just clears the stacks. (This |
| 808 | isn't the correct fix, but it will do as a workaround.) |
| 809 | |
| 810 | Makes many miscellaneous small changes to pacify various compilers. |
| 811 | |
| 812 | Changes gs_fonts.ps so that when "quiet" mode is selected (-q switch), |
| 813 | Ghostscript doesn't print anything when loading fonts or when substituting |
| 814 | for undefined characters. |
| 815 | |
| 816 | Defines the name consisting of just a control-D as a no-op, because some |
| 817 | P*stScr*pt-generating applications put control-Ds in their output. |
| 818 | |
| 819 | Implements halftone phase (sethalftonephase and currenthalftonephase |
| 820 | operators). |
| 821 | |
| 822 | Removes the -E switch, since it is no longer useful. |
| 823 | |
| 824 | Changes the -w and -h switches to a single -g (geometry) switch, with |
| 825 | usage -g<width>x<height>. Makes the -h switch, and a new -? switch, print |
| 826 | usage help. |
| 827 | |
| 828 | Implements correct handling of stack overflow errors (makes an array out |
| 829 | of the contents of the overflowing stack, and resets the stack, before |
| 830 | invoking the error handler). |
| 831 | |
| 832 | Adds t_oparray (`operators' defined as procedures) and the makeoperator |
| 833 | operator. This is so that programs like the Distillery that rely on all |
| 834 | operators being bound by `bind' will work properly. |
| 835 | |
| 836 | Adds a new NOPAUSE flag to suppress the prompt and pause at copypage and |
| 837 | showpage. |
| 838 | |
| 839 | Library |
| 840 | ------- |
| 841 | |
| 842 | Fixes bugs: |
| 843 | - gs_type1_interpret didn't store the encryption state or the skip |
| 844 | count before returning to let the client handle a seac or an endchar in |
| 845 | the middle of a seac. |
| 846 | - The definition of the Type 1 operator ce_testadd was based on |
| 847 | wrong information; the operator takes only 2 operands and does something |
| 848 | unknown. |
| 849 | - mem_true24_copy_mono wasn't incrementing the destination pointer |
| 850 | if the color was transparent, leading to garbled characters. |
| 851 | - gx_lookup_fm_pair would sometimes look at one entry beyond the |
| 852 | end of the cached font/matrix pair area. (This probably had no practical |
| 853 | effect.) |
| 854 | - gs_type1_interpret didn't save the current point when returning |
| 855 | to the client for a callothersubr, causing some characters to be rendered |
| 856 | displaced (such as some of the chess pieces in chess.ps). |
| 857 | - gs_setgray, gs_sethsbcolor, gs_setrgbcolor, gs_setflat, and |
| 858 | gs_setlinewidth gave errors for out-of-range operands rather than forcing |
| 859 | them into range. |
| 860 | - Transfer functions were not actually supported. |
| 861 | - The area fill algorithm failed on certain complex paths. |
| 862 | - The current point was sometimes defined when a BuildChar |
| 863 | procedure was called. |
| 864 | - Stroking a degenerate line didn't display anything for round |
| 865 | caps or joins. |
| 866 | - If the ends of a curve had exactly the same X coordinate, the |
| 867 | curve sometimes wouldn't be displayed. |
| 868 | - Very thin lines that went outside the clipping region would |
| 869 | sometimes be displayed as dashed, or not at all. |
| 870 | - The translation in a FontMatrix was ignored. |
| 871 | - Very wide, shallow lines would color extraneous pixels when |
| 872 | using bevel or miter joins. |
| 873 | - Dashed lines didn't join properly at the beginning of a closed |
| 874 | path. |
| 875 | - 0-degree arcs didn't add the appropriate line (possibly |
| 876 | degenerate) to the path. |
| 877 | - gs_type1_interpret didn't reset the callsubr stack when starting |
| 878 | the base character of a seac, which caused confusion if the accent's |
| 879 | endchar fell inside a Subr. |
| 880 | - Non-monochrome memory memory devices weren't checking the |
| 881 | arguments of the drawing procedures properly. |
| 882 | - The initial clipping rectangle for memory devices was being |
| 883 | computed wrong. |
| 884 | - Null devices had a semi-infinite clipping rectangle instead of |
| 885 | an empty one. |
| 886 | - gs_setlinewidth was treating negative arguments as zero, instead |
| 887 | of taking the absolute value. |
| 888 | - imagemask with a dithered color used a solid color rather than |
| 889 | the dithered one. |
| 890 | |
| 891 | Tweaks the area fill and image rendering algorithms to be a little more |
| 892 | liberal with paint when being used to render characters. |
| 893 | |
| 894 | Changes the name of the 8-bit mapped color memory device from |
| 895 | mem_mapped_color_device to mem_mapped8_color_device. |
| 896 | |
| 897 | Changes the memory devices so that on little-endian platforms, they can |
| 898 | store the bytes within a word in either order. (Little-endian order |
| 899 | allows efficient 32-bit updating, big-endian is required when displaying |
| 900 | or writing to a printer or a file.) |
| 901 | |
| 902 | Implements halftone phase. |
| 903 | |
| 904 | Replaces the trapezoid fill algorithm with a much more accurate one |
| 905 | inspired by a contribution from Paul Haeberli. This also changes the |
| 906 | graphics convention back to filling only pixels whose center falls within |
| 907 | the region to be filled. |
| 908 | |
| 909 | Changes the character cache to allocate headers and bits contiguously out |
| 910 | of a single ring buffer. |
| 911 | |
| 912 | Changes gs_imagemask and gs_imagemask_init to take a thickness adjustment |
| 913 | parameter. |
| 914 | |
| 915 | Changes gs_setcachedevice and gs_setcharwidth to take the graphics state |
| 916 | as a parameter. |
| 917 | |
| 918 | Renames gx_device_memory_bitmap_size as gdev_mem_bitmap_size, |
| 919 | mem_copy_scan_lines as gdev_mem_copy_scan_lines, and |
| 920 | mem_bytes_per_scan_line as gdev_mem_bytes_per_scan_line. |
| 921 | |
| 922 | Version 2.1.1 (1/15/91) |
| 923 | ============= |
| 924 | |
| 925 | This is a sub-release distributed to fix a few early bugs in 2.1, just in |
| 926 | time for the new GNU master tape. |
| 927 | |
| 928 | Build procedures |
| 929 | ---------------- |
| 930 | |
| 931 | Removes all of the (undebugged) Level 2 code from the fileset, as well as |
| 932 | the (unused) file gdevvga.c. |
| 933 | |
| 934 | Changes the tar file so that the files are stored in the directory |
| 935 | gs<version> rather than simply gs, e.g., gs211. |
| 936 | |
| 937 | Interpreter |
| 938 | ----------- |
| 939 | |
| 940 | Changes the scanner so that \ is recognized within strings regardless of |
| 941 | whether the scanner is reading from a string or from a file. This is |
| 942 | compatible with newer P*stScr*pt interpreters, and with the newer |
| 943 | P*stSc*pt language specification, but not with the older specification in |
| 944 | the original PostScript Language Reference Manual. |
| 945 | |
| 946 | Drivers |
| 947 | ------- |
| 948 | |
| 949 | Fixes the max_value macro in gdevmem.c so that compilers won't complain |
| 950 | about a left shift by 32. |
| 951 | |
| 952 | Adds 'byte' to the list of types that gdevx.c must sidestep because header |
| 953 | files use them. |
| 954 | |
| 955 | Library |
| 956 | ------- |
| 957 | |
| 958 | Changes the computation of penum->unpack in gsimage.c so as not to upset |
| 959 | compilers that don't treat procedures and pointers to procedures as |
| 960 | compatible types for conditional expressions. |
| 961 | |
| 962 | Version 2.1 (12/31/90) |
| 963 | =========== |
| 964 | |
| 965 | This is primarily a bug fix release to clean up problems in 2.0. It also |
| 966 | implements a first cut at the new color operators. |
| 967 | |
| 968 | Build procedures |
| 969 | ---------------- |
| 970 | |
| 971 | Changes the separator for multiple directories in MS-DOS from ';' to '|', |
| 972 | since there is no way to include a ';' in a command line. |
| 973 | |
| 974 | Adds <dir>/fonts to the default search path, where <dir> is c:/ghost for |
| 975 | MS-DOS systems and `pwd` for Unix systems. |
| 976 | |
| 977 | Adds new documentation describing how to direct output to the printer. |
| 978 | |
| 979 | Changes the PROCTYPE and USE8087 options in MSDOS.MAK to CPU_TYPE and |
| 980 | FPU_TYPE. The latter now indicates the type of FPU to generate code for, |
| 981 | if any. |
| 982 | |
| 983 | Drivers |
| 984 | ------- |
| 985 | |
| 986 | Adds a driver for the Canon BubbleJet BJ10e. |
| 987 | |
| 988 | Modifies the EGA driver to handle (non-standard) frame buffers larger than |
| 989 | 64K. Adds drivers for the VGA and for the EIZO MDB-10 (a 1024 x 768 frame |
| 990 | buffer). |
| 991 | |
| 992 | Changes the X driver so that it clips to the window dimensions, rather |
| 993 | than reporting an error. |
| 994 | |
| 995 | Notes that the H-P LaserJet driver, like the DeskJet driver, works under |
| 996 | Unix as well as MS-DOS. |
| 997 | |
| 998 | Adds support for 120 X DPI mode, and for the LQ-1500, to the Epson driver. |
| 999 | |
| 1000 | Fonts |
| 1001 | ----- |
| 1002 | |
| 1003 | Fixes bugs in bdftops: |
| 1004 | - It was using /UniqueId instead of /UniqueID as the key for the |
| 1005 | font unique ID. This effectively disabled the font cache. |
| 1006 | - The definition for .notdef was bogus -- an invalid CharString. |
| 1007 | |
| 1008 | Changes ghost.ps and gfonts.ps so that NullFont is the initial font, |
| 1009 | rather than Ugly. |
| 1010 | |
| 1011 | Arranges things so that when attempting a font substitution, if the |
| 1012 | default font is not found, NullFont is used instead. |
| 1013 | |
| 1014 | Extends bdftops so that if certain easily synthesized characters are |
| 1015 | missing from a font, it will attempt to synthesize them using available |
| 1016 | characters. |
| 1017 | |
| 1018 | Interpreter |
| 1019 | ----------- |
| 1020 | |
| 1021 | Extends the -T switch to allow specifying a printf template for the |
| 1022 | arguments of the procedure being traced. |
| 1023 | |
| 1024 | Fixes bugs: |
| 1025 | - /0 was interpreted as equivalent to 0 (a number) rather than a |
| 1026 | literal name. |
| 1027 | - packedarray was defined as being like array, instead of like |
| 1028 | array followed by astore. |
| 1029 | - Many minor and harmless type mismatches (and a couple of very |
| 1030 | minor genuine bugs) were upsetting the Apollo C compiler. |
| 1031 | - exp was incorrectly failing in certain cases with a negative |
| 1032 | first argument. |
| 1033 | - copyscanlines incorrectly required at least 4 elements on the |
| 1034 | operand stack, although it correctly only used the top 3. |
| 1035 | - readhexstring incorrectly read 1 byte even if the string length |
| 1036 | was zero. |
| 1037 | - Not every place that expected an array would accept a packed |
| 1038 | array. |
| 1039 | - Very complex paths (and infrequently other things) could produce |
| 1040 | a 'memory leak'. |
| 1041 | - / alone would skip following whitespace and gather following |
| 1042 | characters, rather than creating an empty name. |
| 1043 | - ghost.ps left newerror defined as true in $error, which resulted |
| 1044 | in an erroneous error report if a program executed a 'stop'. |
| 1045 | - The definition of exitserver in serverdict didn't clear the |
| 1046 | stack. |
| 1047 | - currentfile returned an executable file, rather than a literal |
| 1048 | one. |
| 1049 | - setfont for Type 1 fonts didn't check the UniqueID in the font |
| 1050 | dictionary against the one in the font's Private dictionary. |
| 1051 | - A value stored in a dictionary under the key /xxx couldn't be |
| 1052 | retrieved using the key (xxx), and vice versa. |
| 1053 | - charpath with a Type 1 font on a string containing a 'space' |
| 1054 | would produce garbage (it released the parent path inappropriately). |
| 1055 | - bytesavailable did not work properly for terminal input. |
| 1056 | |
| 1057 | Changes the interface to the memory allocator so that it always takes an |
| 1058 | element size and an element count, like calloc instead of malloc (but note |
| 1059 | that alloc does *not* clear just-allocated blocks). Gets rid of the |
| 1060 | special 'dynamic' allocation procedures. |
| 1061 | |
| 1062 | Changes the random number operators to use a better implementation. |
| 1063 | |
| 1064 | Changes the idiv operator so it will accept any numbers, not just |
| 1065 | integers, as arguments. (The PostScript manual doesn't allow this, but |
| 1066 | implementations apparently do.) |
| 1067 | |
| 1068 | Provides semi-fake but usable definitions for all of the color PostScript |
| 1069 | extensions, including a real implementation of colorimage. |
| 1070 | |
| 1071 | No longer uses the name 'null', which is apparently reserved by Microsoft |
| 1072 | C. Makes a number of other minor changes required to pacify the Microsoft |
| 1073 | C compiler. |
| 1074 | |
| 1075 | Implements %statementedit and %lineedit. (%statementedit is equivalent to |
| 1076 | %lineedit, which is wrong.) Changes the interactive interpreter to use |
| 1077 | %statementedit. |
| 1078 | |
| 1079 | Changes the scanner to accept null, ctrl-K (vertical tab), and ctrl-L |
| 1080 | (form feed) as whitespace. Ctrl-L terminates a comment, null and ctrl-K |
| 1081 | do not. |
| 1082 | |
| 1083 | Allows a literal string as the 'proc' argument(s) for image, imagemask, |
| 1084 | and colorimage. |
| 1085 | |
| 1086 | Adds the following operators/procedures: arct, cleardictstack, deletefile, |
| 1087 | renamefile. |
| 1088 | |
| 1089 | Defines =print as a synonym for =, for the benefit of LaserPrep. |
| 1090 | |
| 1091 | Implements non-zero PaintType for the show operators (but not for |
| 1092 | charpath) for Type 1 fonts. |
| 1093 | |
| 1094 | Adds the ISOLatin1Encoding encoding vector. |
| 1095 | |
| 1096 | Renames currentcolor and setcolor as currentgscolor and setgscolor, to |
| 1097 | avoid conflict with the Level 2 PostScript names. Removes colorhsb, |
| 1098 | colorrgb, hsbcolor, and rgbcolor. |
| 1099 | |
| 1100 | Library |
| 1101 | ------- |
| 1102 | |
| 1103 | Fixes bugs: |
| 1104 | - In a couple of places, a 0 was being passed as a pointer |
| 1105 | argument without casting, which confused the Microsoft C compiler. |
| 1106 | - Image devices were not recognized properly in debugging |
| 1107 | configurations. |
| 1108 | - Inverted-color monochrome image devices were not recognized |
| 1109 | properly. |
| 1110 | - Images that exactly fill the drawing area rendered very slowly, |
| 1111 | because they erroneously used the general clipping algorithm. |
| 1112 | - Images that are 1-for-1 with the device were incorrectly scaled |
| 1113 | by a factor of 8 in X. |
| 1114 | - Rounding artifacts sometimes caused characters to be unevenly |
| 1115 | offset vertically by 1 pixel. |
| 1116 | - Type 1 fonts that used the Flex feature resulted in garbled |
| 1117 | images. |
| 1118 | - The show operator routines would incorrectly fill or stroke a |
| 1119 | path that existed at the time the show was started. |
| 1120 | - setscreen truncated the cell size instead of rounding, which |
| 1121 | could produce off-by-1 anomalies. |
| 1122 | - stroke would sometimes produce garbage (or nothing at all) for |
| 1123 | very narrow lines. |
| 1124 | - path filling would only color the pixels whose centers fell |
| 1125 | inside the path: the Adobe specification requires coloring a pixel if any |
| 1126 | part of it falls inside the path. |
| 1127 | |
| 1128 | Changes the Epson printer driver so that it drives the printer directly |
| 1129 | rather than writing to a file. |
| 1130 | |
| 1131 | Changes pathbbox so that if the path is empty but there is a current |
| 1132 | point, it returns a null rectangle at the current point. |
| 1133 | |
| 1134 | Changes gs_image_init to take an additional parameter (after bps) giving |
| 1135 | the number of samples per pixel (1, 3, or 4), and an indication of whether |
| 1136 | the samples for each pixel are together or separated (-3 or -4). |
| 1137 | |
| 1138 | Renames the gs_image_data and gs_imagemask_data procedures as gs_image and |
| 1139 | gs_imagemask, and removes the old versions of the latter. |
| 1140 | |
| 1141 | Adds gs_colorimage. |
| 1142 | |
| 1143 | Replaces Snoopy's color dithering algorithm with one contributed by Paul |
| 1144 | Haeberli. |
| 1145 | |
| 1146 | Changes gs_setgray, gs_[set]hsbcolor, and gs_[set]rgbcolor so that they |
| 1147 | coerce arguments outside the range [0..1] back into the range, instead of |
| 1148 | signalling an error. |
| 1149 | |
| 1150 | Makes a number of minor changes required to pacify the Microsoft C |
| 1151 | compiler. |
| 1152 | |
| 1153 | Changes gs_arcto so that if the last argument is a null pointer, the |
| 1154 | tangent points are not returned. |
| 1155 | |
| 1156 | Removes gs_type1addpath, which is not useful. (Clients must call |
| 1157 | gs_type1_init and gs_type1_interpret directly.) |
| 1158 | |
| 1159 | Implements the 'seac' opcode for Type 1 fonts, allowing fonts with accented |
| 1160 | characters to display properly. |
| 1161 | |
| 1162 | Implements the undocumented 'testadd' opcode for Type 1 fonts, which is |
| 1163 | used by some Adobe fonts. |
| 1164 | |
| 1165 | Renames gs_currentcolor and gs_setcolor as gs_currentgscolor and |
| 1166 | gs_setgscolor. Removes gs_colorhsb, gs_colorrgb, gs_hsbcolor, and |
| 1167 | gs_rgbcolor. |
| 1168 | |
| 1169 | Version 2.0 (9/12/90) |
| 1170 | =========== |
| 1171 | |
| 1172 | The main purpose of this release is to add fonts, support for multiple |
| 1173 | devices, and imaging into memory. It also fixes a number of miscellaneous |
| 1174 | bugs. (Unfortunately, accurate records of the bugs fixed are not |
| 1175 | available.) The changes were so extensive that we chose to increment the |
| 1176 | major version number. |
| 1177 | |
| 1178 | Miscellaneous |
| 1179 | ------------- |
| 1180 | |
| 1181 | Doesn't attempt to open the .MAP file on Unix systems. |
| 1182 | |
| 1183 | Adds mention of statusd.ps to interp.doc. |
| 1184 | |
| 1185 | Notes that Turbo C 2.0, not 1.5, is required for building the MS-DOS |
| 1186 | version. |
| 1187 | |
| 1188 | Adds a DEVICES= line to the makefile, and allows multiple devices. |
| 1189 | |
| 1190 | Documents, in interp.doc, the X Windows resources that Ghostscript |
| 1191 | recognizes. |
| 1192 | |
| 1193 | Adds three PostScript masters to the fileset: chess.ps (+ cheq.ps), |
| 1194 | golfer.ps, and escher.ps. |
| 1195 | |
| 1196 | Drivers |
| 1197 | ------- |
| 1198 | |
| 1199 | Changes the names of all the device drivers. See gdevs.mak for the |
| 1200 | updated list. |
| 1201 | |
| 1202 | Adds a (working) driver for SunView. |
| 1203 | |
| 1204 | Adds drivers for the Sony NeWS frame buffer, and the Sony Microsystems |
| 1205 | NWP533 printers. These drivers were contributed by users, so we aren't |
| 1206 | prepared to answer questions about them. |
| 1207 | |
| 1208 | Adds a driver for the Borland Graphics Interface (BGI) for MS-DOS systems. |
| 1209 | Note that to use this driver with a non-EGA/VGA display, you need a .BGI |
| 1210 | file appropriate for your hardware. (The Ghostscript executable includes |
| 1211 | the EGA/VGA driver.) |
| 1212 | |
| 1213 | Adds a driver for Epson printers. The driver has only been tested on an |
| 1214 | LX-800, and on an H-P DeskJet in FX-80 emulation mode, but may work on |
| 1215 | other models. The driver could be adapted to work on Unix systems, but as |
| 1216 | distributed, it only works on MS-DOS systems. |
| 1217 | |
| 1218 | Adds a driver for the Hewlett-Packard DeskJet printer. The driver could |
| 1219 | be adapted to work on Unix systems, but as distributed, it only works on |
| 1220 | MS-DOS systems. |
| 1221 | |
| 1222 | The X Windows driver no longer waits for the user to type a character |
| 1223 | before bringing up the initial display. |
| 1224 | |
| 1225 | Adds information to drivers.doc describing how to change the definition of |
| 1226 | the device structure and procedure table. |
| 1227 | |
| 1228 | Extends the tile_rectangle and tile_trapezoid driver procedures to |
| 1229 | interpret color0 = color1 = gx_no_color_index as meaning that the tile is |
| 1230 | actually colored, not a mask. |
| 1231 | |
| 1232 | Build procedures |
| 1233 | ---------------- |
| 1234 | |
| 1235 | Changes the tar file so it puts everything in a directory called gs. |
| 1236 | |
| 1237 | Removes the -ansi switch for gcc (this was causing problems with <math.h> |
| 1238 | on some systems). |
| 1239 | |
| 1240 | Changes LDPLAT to the string -X, which is appropriate for most Unix |
| 1241 | systems (but not for SunOS 4.n). |
| 1242 | |
| 1243 | Adds EXTRALIBS to the makefile, for specifying additional libraries to be |
| 1244 | linked in. |
| 1245 | |
| 1246 | Adds a 'clean' target for 'make', to get rid of all temporary files, the |
| 1247 | binaries, and the executable. |
| 1248 | |
| 1249 | Changes names of system-specific files from gp-xxx.c to gp_xxx.c. |
| 1250 | |
| 1251 | Adds support for VMS (gp_vms.c and ghost.dcl). |
| 1252 | |
| 1253 | Creates a new file gdevs.mak, and reorganizes the other makefiles, so that |
| 1254 | the choice of which device driver(s) to include is isolated in a single |
| 1255 | line in the platform-specific makefile. |
| 1256 | |
| 1257 | Changes the standard MS-DOS makefile so it builds for 8088/86 (not 80386), |
| 1258 | with neither -DNOPRIVATE nor -DDEBUG. |
| 1259 | |
| 1260 | Changes the name of the MS-DOS makefile from dos-ega.mak to msdos.mak, and |
| 1261 | the Unix makefiles from ux-[g]cc-x.mak to unix-[g]cc.mak. |
| 1262 | |
| 1263 | Updates drivers.doc to describe how to add new drivers in gdevs.mak. |
| 1264 | |
| 1265 | Removes gdevs.ps: the drivers are now responsible for specifying the size |
| 1266 | of the imaging region. |
| 1267 | |
| 1268 | Interpreter |
| 1269 | ----------- |
| 1270 | |
| 1271 | Adds a makefile macro GS_LIB_DEFAULT and an environment variable GS_LIB to |
| 1272 | define a search path for the library (initialization and font) files, and |
| 1273 | implements the -I switch for the same purpose (replacing -sLIB=, which was |
| 1274 | never actually implemented). See interp.doc for details. |
| 1275 | |
| 1276 | No longer clears the operand stack between interactive inputs. No longer |
| 1277 | prints the contents of the operand stack after every input in debug mode. |
| 1278 | |
| 1279 | Doesn't "eat" the character that the user types to proceed after a |
| 1280 | showpage, unless it's an isolated <return>. |
| 1281 | |
| 1282 | Changes the prompt so that it says |
| 1283 | GS> |
| 1284 | if the operand stack is empty, or |
| 1285 | GS<n> |
| 1286 | if there are n > 0 elements on the operand stack. |
| 1287 | |
| 1288 | Adds -w and -h switches to the command line, equivalent to -dWIDTH= and |
| 1289 | -dHEIGHT= except that they require numeric arguments. |
| 1290 | |
| 1291 | Adds -q (quiet startup) switch to the command line, which suppresses some |
| 1292 | initial messages and also has an effect equivalent to -dQUIET. |
| 1293 | |
| 1294 | Fixes bugs: |
| 1295 | - = and == caused an error on some kinds of objects if the object |
| 1296 | didn't have read access. |
| 1297 | - cvs didn't print operator names. |
| 1298 | - The definition of dynamic_begin in iscan.c caused the DEC VMS C |
| 1299 | compiler to produce incorrect code. |
| 1300 | - mul didn't return a correct (real) result when multiplying a |
| 1301 | very large integer by an integer that wasn't very large. |
| 1302 | - eq and ne didn't work on files, fonts, save objects, and some |
| 1303 | operators. |
| 1304 | - The scanner would sometimes blow up on floating point numbers |
| 1305 | beginning with a '.'. |
| 1306 | - flushfile didn't pop its argument from the stack. |
| 1307 | - put and putinterval would store into a packed array. |
| 1308 | - a few operators didn't check properly for stack underflow. |
| 1309 | - cvrs produced wrong output for radix values greater than 10. |
| 1310 | - The scanner would convert upper-case letters in alternate-radix |
| 1311 | numbers wrong on Unix systems. |
| 1312 | - String comparisons other than equality often produced the wrong |
| 1313 | result if the strings were of different lengths. |
| 1314 | - An ifelse as the last thing inside a forall would confuse the |
| 1315 | execution stack. |
| 1316 | - There were some omitted casts and 'private' declarations that |
| 1317 | made the GNU compiler unhappy. |
| 1318 | - There was a memory leak in the image[mask] operators that caused |
| 1319 | 516 bytes to be permanently lost each time one of them was used. |
| 1320 | - Quoted strings of length greater than 50 and less than 100 would |
| 1321 | get mangled when being read in. |
| 1322 | - The scanner didn't consume the whitespace character following a |
| 1323 | token, so programs that read data out of the program file could get |
| 1324 | confused. |
| 1325 | - Under rare circumstances, an object of size between 249 and 255 |
| 1326 | bytes could get allocated on top of another object. |
| 1327 | |
| 1328 | Allows bind to bind packed arrays, even though they aren't normally |
| 1329 | writable. |
| 1330 | |
| 1331 | Changes the length operator to allow a name as the argument. (The |
| 1332 | PostScript manual doesn't allow this, but implementations apparently do.) |
| 1333 | |
| 1334 | Changes the setcachedevice operator to allow the bounding box to be |
| 1335 | specified as a 4-element array instead of 4 scalars. (The PostScript |
| 1336 | manual doesn't allow this, but implementations apparently do.) |
| 1337 | |
| 1338 | Removes a line from ghost.ps that accidentally disabled the font cache. |
| 1339 | |
| 1340 | Implements memory devices (makeimagedevice, copyscanlines, and makedevice |
| 1341 | for image devices). makeimagedevice is implemented only for 1, 8, 24, and |
| 1342 | 32 bits per pixel. |
| 1343 | |
| 1344 | Changes the deviceparams operator so it pushes a mark on the stack below |
| 1345 | the parameters. This is to allow for devices that have more than the |
| 1346 | standard set of parameters. |
| 1347 | |
| 1348 | Replaces defaultdevicename with two new operators, getdevice and |
| 1349 | devicename. |
| 1350 | |
| 1351 | Adds a flushpage operator that flushes any outstanding buffered output to |
| 1352 | the screen. This is not the same as copypage: on printers, copypage |
| 1353 | actually prints a page, whereas flushpage may do nothing; on displays, |
| 1354 | flushpage and copypage may both flush output to a server. |
| 1355 | |
| 1356 | Adds an unread operator for pushing back a character into a file. |
| 1357 | |
| 1358 | Adds a description of proposed grayimage and colorimage operators to |
| 1359 | ghost.doc, even though they aren't implemented yet. |
| 1360 | |
| 1361 | Changes the name of the currentfileposition operator to fileposition. |
| 1362 | |
| 1363 | Removes the framedevice operator, since the new device operators supersede |
| 1364 | it. |
| 1365 | |
| 1366 | Adds a writeppmfile operator, for writing the contents of a memory device |
| 1367 | to a ppm file. |
| 1368 | |
| 1369 | Makes Ghostscript work even when the >> operator doesn't sign-extend |
| 1370 | negative numbers. (This has not been tested.) |
| 1371 | |
| 1372 | Adds the Symbol encoding to ghost.ps. |
| 1373 | |
| 1374 | Adds two new file-related operators, filename and findlibfile. See |
| 1375 | ghost.doc and interp.doc for details. |
| 1376 | |
| 1377 | Adds type1encrypt and type1decrypt operators for manipulating Adobe Type 1 |
| 1378 | encoded fonts. |
| 1379 | |
| 1380 | Changes the imagecharpath and addcharpath operators to type1imagepath and |
| 1381 | type1addpath. These operators now work with the Adobe Type 1 font |
| 1382 | encoding. |
| 1383 | |
| 1384 | Adds the type1decryptfile operator for reading Adobe Type 1 encrypted |
| 1385 | fonts. |
| 1386 | |
| 1387 | Library |
| 1388 | ------- |
| 1389 | |
| 1390 | Fixes bugs: |
| 1391 | - curveto and lineto didn't check for the current point being |
| 1392 | defined. |
| 1393 | - stringwidth would fail if there was no current point. |
| 1394 | - There were omitted casts that made the GNU compiler unhappy. |
| 1395 | - Line caps and joins didn't always work. |
| 1396 | - Dashed lines didn't work at all. |
| 1397 | - If you read out the current matrix while inside a BuildChar |
| 1398 | procedure, the result was garbage. |
| 1399 | - image[mask] would crash if you gave it a single string with more |
| 1400 | than 64K-1 pixels (MS-DOS only). |
| 1401 | - Filling with a gray pattern sometimes wrote into pixels beyond |
| 1402 | the right edge of the region (MS-DOS only). |
| 1403 | - The font cache would mistake fonts for each other if both fonts |
| 1404 | had a default (unsupplied) "unique ID". |
| 1405 | - When a character was entered into the font cache for the first |
| 1406 | time, sometimes it would display as garbage and/or displaced vertically |
| 1407 | from its proper position. |
| 1408 | |
| 1409 | Implements gs_makeimagedevice, gs_copyscanlines, gs_getdevice, |
| 1410 | gs_devicename, gs_flushpage, gs_writeppmfile, gs_type1encrypt, |
| 1411 | gs_type1decrypt, gs_type1imagepath, and gs_type1addpath procedures |
| 1412 | corresponding to the new operators in the interpreter (see preceding |
| 1413 | section). |
| 1414 | |
| 1415 | Changes [gs_]setdevice so that it does an erasepage when it first opens |
| 1416 | the device. |
| 1417 | |
| 1418 | Changes definition of gx_device structure as follows. NOTE: THIS AFFECTS |
| 1419 | ALL DRIVERS. |
| 1420 | |
| 1421 | - Removes bits_from_MSB (which wasn't actually used, in any case). |
| 1422 | Ghostscript now assumes officially, as it always did in |
| 1423 | practice, that device bitmaps are stored MSB first, i.e., X=0 |
| 1424 | corresponds to the 0x80 bit in the first byte. |
| 1425 | |
| 1426 | - Removes the initial_matrix member, which wasn't actually being |
| 1427 | set up. |
| 1428 | |
| 1429 | - Adds a new member 'name', a string giving the device name. |
| 1430 | |
| 1431 | - Adds new members 'x_pixels_per_inch' and 'y_pixels_per_inch'. |
| 1432 | These are only used by the default initial_matrix procedure |
| 1433 | (see below). |
| 1434 | |
| 1435 | - Adds a new procedure 'output_page'. The default implementation |
| 1436 | (gx_default_output_page) just calls the sync_output procedure. |
| 1437 | |
| 1438 | - Adds a new procedure 'get_initial_matrix'. The default |
| 1439 | procedure uses the width, height, and x/y_pixels_per_inch |
| 1440 | members to compute the matrix, assuming that X values run from |
| 1441 | right to left, and Y values run from top to bottom. |
| 1442 | |
| 1443 | Changes the names of the allocation procedure types gs_proc_alloc and |
| 1444 | gs_proc_free to proc_alloc_t and proc_free_t, and moves them from gs.h to |
| 1445 | std.h. |
| 1446 | |
| 1447 | Makes Ghostscript work even when the >> operator doesn't sign-extend |
| 1448 | negative numbers. (This has not been tested.) |
| 1449 | |
| 1450 | Version 1.3 (6/20/89) |
| 1451 | =========== |
| 1452 | |
| 1453 | This release should have had a lot more things in it, but time pressure |
| 1454 | and the already long delay in getting it out made it necessary to push it |
| 1455 | out the door in an incomplete state (e.g., no testing on X systems |
| 1456 | whatsoever). |
| 1457 | |
| 1458 | Interpreter |
| 1459 | ----------- |
| 1460 | |
| 1461 | Makes -d and -D equivalent on the command line. Adds a new switch -s / -S |
| 1462 | that defines a name as a string rather than a token. |
| 1463 | |
| 1464 | Arranges things so that if -sLIB=_a_prefix_ is defined on the command |
| 1465 | line, (filename) run will look for _a_prefix_filename before giving up if |
| 1466 | filename isn't the name of an accessible file. |
| 1467 | |
| 1468 | Changes showpage from an operator to a procedure. The definition of |
| 1469 | showpage in ghost.ps does a copypage, beeps the console, waits for the |
| 1470 | user to type a character (normally a <return>, since line buffering is |
| 1471 | always enabled), and then does an erasepage and an initgraphics. |
| 1472 | |
| 1473 | Adds a new initialization file, gdevs.ps, containing device-dependent |
| 1474 | parameters. The default window size for X Windows is properly set to 612 |
| 1475 | x 792, i.e., 8.5" x 11". |
| 1476 | |
| 1477 | Adds a new optional initialization file, statusd.ps, that provides dummy |
| 1478 | definitions for the names found in statusdict on LaserWriters. |
| 1479 | |
| 1480 | Adds a new operator, getenv, to get information from the shell |
| 1481 | environment. |
| 1482 | |
| 1483 | Adds a new predefined operator, defaultdevicename, that returns either (X) |
| 1484 | or (EGA) according to how the interpreter was built. |
| 1485 | |
| 1486 | Adds a new type, devicetype, and new operators deviceparams, getscanlines, |
| 1487 | makedevice, makeimagedevice, and setdevice. Changes currentdevice to |
| 1488 | return a device object rather than a set of parameters. |
| 1489 | |
| 1490 | Makes the scanner recognize reals with 'e' exponent notation, and handle |
| 1491 | reals with more than 9 digits. |
| 1492 | |
| 1493 | Fixes a bug that made names starting with digits read incorrectly. |
| 1494 | |
| 1495 | Fixes a bug in the exp operator that made it not pop its first argument |
| 1496 | from the stack. |
| 1497 | |
| 1498 | Fixes a bug in the rand operator that made it return negative values about |
| 1499 | half the time. |
| 1500 | |
| 1501 | Fixes a bug in equality comparison (eq, ne, and several other operators) |
| 1502 | that made unequal operator objects occasionally appear to be equal on DOS |
| 1503 | systems. |
| 1504 | |
| 1505 | Fixes a bug in the bind operator that made it not work on packed arrays. |
| 1506 | |
| 1507 | Changes the internal representation of dictionaries so they can be |
| 1508 | expanded or contracted dynamically. Adds a new operator, setmaxlength, to |
| 1509 | change the allocated size of a dictionary. |
| 1510 | |
| 1511 | Changes sstorei.h so that non-DOS compilers don't encounter the #pragma |
| 1512 | directive used by Turbo C. |
| 1513 | |
| 1514 | Restores the display mode (on MS-DOS systems) when exiting. |
| 1515 | |
| 1516 | Fonts |
| 1517 | ----- |
| 1518 | |
| 1519 | Makes undefined characters in the standard font display as tilde rather |
| 1520 | than blank (or causing an error). Unmapped character codes (those mapped |
| 1521 | to .notdef in the encoding) still display as nothing, per the PostScript |
| 1522 | manual. |
| 1523 | |
| 1524 | Library |
| 1525 | ------- |
| 1526 | |
| 1527 | Adds a new header file, gxbitmap.h, with some new documentation describing |
| 1528 | the internal storage format for bitmaps. |
| 1529 | |
| 1530 | Makes numerous internal changes in the character / font cache, affecting |
| 1531 | many of the routines in gxcache.c. |
| 1532 | |
| 1533 | Fixes a bug in gz_draw_line / gz_fill_trapezoid that made nearly |
| 1534 | horizontal lines display wrong. |
| 1535 | |
| 1536 | Fixes a bug in gs_scale that made scaling not work if the coordinate |
| 1537 | system was rotated or skewed. |
| 1538 | |
| 1539 | Extends the font cache so it will handle characters rotated by multiples |
| 1540 | of 90 degrees. |
| 1541 | |
| 1542 | Changes the second argument of gx_path_bbox and gx_path_is_rectangle to be |
| 1543 | a gs_fixed_rect * rather than a fixed [4]. |
| 1544 | |
| 1545 | Changes gs_matrix_rotate so it handles multiples of 90 degrees as a |
| 1546 | special case. |
| 1547 | |
| 1548 | Changes the definition of the gx_device structure to accommodate the new |
| 1549 | device operators, and adds corresponding library calls. |
| 1550 | |
| 1551 | Changes the type for a device color index from int to gx_color_index |
| 1552 | (equivalent to unsigned long). ***NOTE***: this affects existing clients |
| 1553 | and drivers in a non-trivial way on MS-DOS systems. |
| 1554 | |
| 1555 | Changes gs_malloc and gs_free to take a client name string as an argument. |
| 1556 | |
| 1557 | Usage procedures |
| 1558 | ---------------- |
| 1559 | |
| 1560 | Changes the compilation rules for Unix systems to not use the -o and -c |
| 1561 | compiler flags together, to be compatible with more versions of cc. |
| 1562 | |
| 1563 | Changes the gcc makefile to use $(GCC) rather than gcc as the compiler |
| 1564 | name. |
| 1565 | |
| 1566 | Moves the -1 flag for the MS-DOS compiler from the cc*.bat files to the |
| 1567 | makefile. |
| 1568 | |
| 1569 | Changes CCDEBUG to CCFLAGS, and adds ASMFLAGS, in DOS makefile. |
| 1570 | |
| 1571 | Adds -DFOR80386 and /DFOR80386 to enable use of 80386 instructions in |
| 1572 | assembly code on DOS systems. |
| 1573 | |
| 1574 | Merges the DEBUG and gs_DEBUG switches. There is now only a single DEBUG |
| 1575 | switch that affects both the interpreter and the library. |
| 1576 | |
| 1577 | Adds a new compilation switch, -DNOPRIVATE, that makes private (static) |
| 1578 | variables and procedures public for debugging and profiling (only needed |
| 1579 | on DOS systems). |
| 1580 | |
| 1581 | Adds the DOS executable (gs.exe and gs.map) to the distribution fileset. |
| 1582 | |
| 1583 | Adds new platform-specific code files, gp-*.c, for a few things like |
| 1584 | reading the clock. |
| 1585 | |
| 1586 | Adds a new documentation file, drivers.doc, that describes the interface |
| 1587 | between Ghostscript and device drivers. |
| 1588 | |
| 1589 | Version 1.2 (2/22/89) |
| 1590 | =========== |
| 1591 | |
| 1592 | Interpreter |
| 1593 | ----------- |
| 1594 | |
| 1595 | Adds the new facilities in version 25 of PostScript: //name for immediate |
| 1596 | lookup, packed arrays (setpacking, currentpacking, packedarray operators), |
| 1597 | and new font cache parameters (setcacheparams, currentcacheparams |
| 1598 | operators). |
| 1599 | |
| 1600 | Adds new operators (setfileposition, currentfileposition) for random |
| 1601 | access to files. |
| 1602 | |
| 1603 | Extends readhexstring to take either a string or a file, just like token. |
| 1604 | |
| 1605 | Fixes a bug that caused the 'for' operator (and a couple of others) to |
| 1606 | randomly smash memory locations on PC platforms. |
| 1607 | |
| 1608 | Library |
| 1609 | ------- |
| 1610 | |
| 1611 | Renames the init_device driver procedure as open_device, and adds a |
| 1612 | corresponding close_device. |
| 1613 | |
| 1614 | Adds new procedures to read and set the cache limit values (implementing |
| 1615 | the currentcacheparams and setcacheparams operators). |
| 1616 | |
| 1617 | Usage procedures |
| 1618 | ---------------- |
| 1619 | |
| 1620 | Changes the name of the Unix makefile to ux-cc-x.mak, and adds a new Unix |
| 1621 | makefile, ux-gcc-x.mak, for using gcc instead of cc. (The latter doesn't |
| 1622 | actually work yet.) |
| 1623 | |
| 1624 | Changes the name of the single built-in font from uglyfont.cp to |
| 1625 | ugly10.cp. |
| 1626 | |
| 1627 | Version 1.1 (2/12/89) |
| 1628 | =========== |
| 1629 | |
| 1630 | Interpreter |
| 1631 | ----------- |
| 1632 | |
| 1633 | Makes the scanner treat ^Z (ASCII code 26) as whitespace: it erroneously |
| 1634 | treated ^R (ASCII code 22, or octal 26) as whitespace. |
| 1635 | |
| 1636 | Makes the token and readline operators, and the syntax for comments, |
| 1637 | recognize \r (code 13), \n (code 10), and \r\n as equivalent end-of-line |
| 1638 | indicators. The token and readline operators will skip over any of these |
| 1639 | sequences at the end of a token or line respectively, and a comment will |
| 1640 | read through any of these sequences. The other file operators (read, |
| 1641 | write, readstring, writestring) do nothing special with these characters. |
| 1642 | |
| 1643 | Changes the debug switch name from -D to -Z. Adds a -D switch for |
| 1644 | defining names in systemdict from the command line. Defines -DDEBUG for |
| 1645 | printing out debugging information during initialization, and -DNODISPLAY |
| 1646 | for suppressing display output. |
| 1647 | |
| 1648 | Corrects a bug that prevented the error machinery from working -- in |
| 1649 | version 1.0, errors always dumped the stacks and aborted interpretation. |
| 1650 | |
| 1651 | Corrects a bug that made eq and ne not work for strings. |
| 1652 | |
| 1653 | Makes the atan (arctangent) operator normalize its results according to |
| 1654 | the PostScript convention. |
| 1655 | |
| 1656 | Makes the div operator check for zero divisor. |
| 1657 | |
| 1658 | Makes unimplemented operators (resetfile, echo, save, restore, strokepath, |
| 1659 | reversepath) truly undefined. |
| 1660 | |
| 1661 | Makes the interactive loop exit gracefully on end-of-file: in version 1.0 |
| 1662 | this caused an infinite loop. |
| 1663 | |
| 1664 | Implements the status operator. |
| 1665 | |
| 1666 | Corrects a bug that made the 'for' operator deliver garbage values if one |
| 1667 | or more of the operands (start, increment, end) was a real. |
| 1668 | |
| 1669 | Corrects a bug that made the arc and arcn operators not pop their operands |
| 1670 | from the stack. |
| 1671 | |
| 1672 | Corrects a bug that made the kshow operator crash the interpreter. |
| 1673 | |
| 1674 | Corrects a bug that made the print operator fail on machines that don't |
| 1675 | pass structure arguments by simply pushing the contents of the structure. |
| 1676 | |
| 1677 | Adds a new operator, imagecharpath, to convert images to |
| 1678 | addcharpath-compatible outlines. |
| 1679 | |
| 1680 | Changes alloc and alloc_free to use char * rather than byte *, and |
| 1681 | alloc_free to return void rather than int, making them compatible with the |
| 1682 | library's expectations and with malloc/free. |
| 1683 | |
| 1684 | Explicitly casts all expressions of the form (ptr1 - ptr2) used as |
| 1685 | procedure arguments to unsigned, to handle an incompatibility between |
| 1686 | Turbo C versions 1.5 and 2.0. |
| 1687 | |
| 1688 | Changes some of the internal conventions for operators: operators that |
| 1689 | push on the operand stack must check for overflow explicitly, and |
| 1690 | operators that modify the execution stack must return a special code. |
| 1691 | (See oper.h for details.) |
| 1692 | |
| 1693 | Initialization (ghost.ps, gfonts.ps) |
| 1694 | -------------- |
| 1695 | |
| 1696 | Modifies ghost.ps and gfonts.ps so they print debugging information only |
| 1697 | if the name DEBUG is defined. (Presumably the user will set this from the |
| 1698 | command line with -DDEBUG.) |
| 1699 | |
| 1700 | Changes ghost.ps so it initializes the nominal screen size to 640 x 350 on |
| 1701 | MS-DOS systems as before, but to 612 x 792 on Unix systems, which is an |
| 1702 | 8.5" x 11" page at 72 pixels per inch. |
| 1703 | |
| 1704 | Library |
| 1705 | ------- |
| 1706 | |
| 1707 | Corrects a bug that made the fill and eofill operators (gs_fill and |
| 1708 | gs_eofill) not perform a newpath afterward. |
| 1709 | |
| 1710 | Corrects the bug that made thin, nearly horizontal lines display wrong (as |
| 1711 | a series of disconnected dots) in the MS-DOS implementation. |
| 1712 | |
| 1713 | Fixes a bug in the EGA driver that often made it fill rectangular regions |
| 1714 | with black around information being displayed in white. |
| 1715 | |
| 1716 | Completely changes the internal representation of outline fonts, and |
| 1717 | changes btoi.ps (a Ghostscript language program for converting bitmaps to |
| 1718 | outlines) to use a new library call, gs_imagecharpath. |
| 1719 | |
| 1720 | Changes the extension for outline font files from .gf to .cp. |
| 1721 | |
| 1722 | Adds a new debugging switch, q, that traces all rectangle fill operations. |
| 1723 | |
| 1724 | Adds a new debugging switch, v, that traces all device-level output calls. |
| 1725 | |
| 1726 | Explicitly casts pointer differences passed as procedure arguments, as in |
| 1727 | the interpreter. |
| 1728 | |
| 1729 | Makes stringwidth work if there is no current point. In version 1.0, this |
| 1730 | gave a nocurrentpoint error. |
| 1731 | |
| 1732 | Usage procedures |
| 1733 | ---------------- |
| 1734 | |
| 1735 | Changes the name of the 'read me' file from READ.ME to README. |
| 1736 | |
| 1737 | Removes a bogus line (invoking the 'mcopy' utility) from the makefile. |
| 1738 | |
| 1739 | Splits up the makefile into a generic part (ghost.mak) and |
| 1740 | platform-specific parts (dos-ega.mak, unix-x11.mak). The latter are what |
| 1741 | is actually executed. |
| 1742 | |
| 1743 | Puts the definitions of the DEBUG and gs_DEBUG compilation flags into the |
| 1744 | makefile instead of in ghost.h and gx.h respectively. |
| 1745 | |
| 1746 | Changes the names of the documentation files to be a little less cryptic. |
| 1747 | Changes all the file names to lower-case in the documentation. Adds |
| 1748 | installation information to make.doc. |
| 1749 | |
| 1750 | Changes all function definitions (but not prototype declarations) to ANSI |
| 1751 | syntax, and adds a preprocessing step (ansi2knr) to convert them to K&R |
| 1752 | syntax on Unix systems. |
| 1753 | |
| 1754 | Changes the normal MS-DOS link configuration to not assume the presence of |
| 1755 | an 80x87 coprocessor, and describes how to increase performance if a |
| 1756 | coprocessor is present. |
| 1757 | |
| 1758 | Changes the names of all the interpreter .c files, except stream.c, to |
| 1759 | begin with 'i'. |
| 1760 | |
| 1761 | Version 1.0 (8/11/88) |
| 1762 | =========== |
| 1763 | |
| 1764 | First version released to the public. |