Commit | Line | Data |
---|---|---|
38cd7a1e WJ |
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. |