home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
High Voltage Shareware
/
high1.zip
/
high1
/
DIR16
/
GS261P.ZIP
/
GS261P3.FIX
< prev
next >
Wrap
Text File
|
1993-07-19
|
89KB
|
2,703 lines
Ghostscript 2.6.1 Patch #3
To apply this patch:
cd to the directory containing the ghostscript source and do:
patch -s < ThisFile
Patch will work silently unless an error occurs.
If you want to watch patch do its thing, leave out the "-s" argument to patch.
See the readme.fix file for a summary of the fixes.
Prereq: 6/28/93
*** 1.2 1993/06/29 02:58:13
--- readme.fix 1993/07/18 15:51:58
***************
*** 7,13 ****
Fixes for Ghostscript 2.6.1
---------------------------
! (last update: 6/28/93)
This file summarizes a number of important quality fixes for Ghostscript
2.6.1. The fixes are supplied in the form of replacements for
--- 7,13 ----
Fixes for Ghostscript 2.6.1
---------------------------
! (last update: 7/18/93)
This file summarizes a number of important quality fixes for Ghostscript
2.6.1. The fixes are supplied in the form of replacements for
***************
*** 117,122 ****
--- 117,124 ----
Files affected:
gxrefct.h
+ ---------------- Fixes up to here distributed 6/23/93 ----------------
+
6/28/93
-------
***************
*** 125,127 ****
--- 127,331 ----
file type1enc.ps.
Files affected:
unixtail.mak (and unix-*.mak, built from it using tar_cat)
+
+ Problem:
+ X driver didn't free dynamic colors at the start of each page.
+ Files affected:
+ gdevx.h
+ gdevx.c
+
+ Problems:
+ X driver didn't bind foreground/background defaults tightly.
+ X driver didn't check for GHOSTVIEW_COLORS properly.
+ X driver freed too many colors if an allocation request failed.
+ X driver didn't check return value of gs_malloc for being NULL.
+ Files affected:
+ gdevxini.c
+
+ Problem:
+ There was no LaserJet 4 driver that could use the 600 dpi mode.
+ Fix:
+ Implement one.
+ Files affected:
+ devs.mak
+ gdevdjet.c
+
+ Problem:
+ The DeskJet and LaserJet drivers used \033&l0H (page eject)
+ instead of \f (end of page), which prevented duplex printing.
+ The DeskJet and LaserJet drivers reset the printer at the
+ start of each page, which prevented manually initiated duplex
+ printing.
+ Files affected:
+ gdevdjet.c
+
+ 7/8/93
+ ------
+
+ Problem:
+ kshow returned an incorrect (random, 32-bit) character code
+ for the second character.
+ Fix:
+ Make sure the character code is stored properly on all control paths.
+ Files affected:
+ gschar.c
+
+ Problem:
+ Color halftones "flipped over" at the 50% point, inverting
+ foreground and background.
+ Fix:
+ Correct a numerical error in the octant flip test.
+ Files affected:
+ gxdither.c
+
+ Problem:
+ setbbox didn't round the coordinates properly, which could cause
+ erroneous rangecheck errors with coordinates on the edge of the box.
+ Files affected:
+ gsdps1.c
+
+ Problem:
+ The PCX driver put an old version number in the header, and
+ didn't pad scan lines to an even number of bytes.
+ Files affected:
+ gdevpcx.c
+
+ Problem:
+ The TIFF driver didn't handle A4 or B4 size paper correctly.
+ Fix:
+ Make the driver handle variable page sizes properly.
+ Files affected:
+ gdevtiff.c
+
+ Problem:
+ The VMS script files referenced IBSCAN instead of ISCAN2,
+ and omitted GDEVXXF.
+ Files affected:
+ vms-cc.mak
+ vms-gcc.mak
+
+ Problem:
+ zht2.c didn't include alloc.h.
+ Files affected:
+ zht2.c
+
+ Problem:
+ gdevx.h was inadvertently omitted from an earlier batch of fixes.
+ Files affected:
+ gdevx.h
+
+ Problem:
+ The UUENCODEd icons for the MS Windows platform were omitted
+ from the fileset.
+ Files added:
+ gsgraph.uue
+ gstext.uue
+
+ 7/9/93
+ ------
+
+ Problem:
+ exitserver didn't check the password, and always succeeded.
+ Fix:
+ Make exitserver do a minimal password check.
+ Files affected:
+ gs_statd.ps
+
+ Problem:
+ Ghostscript only knew about a limited set of paper sizes.
+ Fix:
+ Add many new paper sizes to gs_statd.ps. It now includes ISO
+ a0-a10 and b0-b10, and CAD sizes archA-archE.
+ Files affected:
+ gs_statd.ps
+
+ 7/17/93
+ -------
+
+ Problem:
+ The ESCP/2 driver was incorrectly named gdevescp2 in devs.mak.
+ Files affected:
+ devs.mak
+
+ Problem:
+ The X11 driver incorrectly demanded the Xmu library, which was
+ not needed and which caused link errors on some versions of SunOS.
+ Solution:
+ Remove Xmu from the list of X libraries.
+ Files affected:
+ devs.mak
+
+ Problem:
+ X11 font matching scheme was too loose, causing overlaps and
+ other problems.
+ Solution:
+ X11 font must be within 1/2 pixel of desired height to be used.
+ Files affected:
+ gdevx.c, gdevx.h, gdevxini.c, gdevxxf.c
+
+ Problem:
+ X11 Font Extensions (rotated and mirrored fonts) did not work
+ properly on NCD terminals.
+ Solution:
+ Add an X resource to be able to selectively turn off the use
+ of Font Extensions. It is called useFontExtensions.
+ Files affected:
+ gdevx.c, gdevx.h, gdevxini.c, gdevxxf.c
+
+ Problem:
+ When the X11 driver freed the rgb cube/gray ramp, the parameters
+ to gs_free() did not exactly match the parameters to gs_malloc().
+ Solution:
+ Make them match.
+ Files affected:
+ gdevx.c
+
+ Problem:
+ The X11 driver failed to warn the user when it could not allocate
+ the original color cube/gray ramp and dropped back to a smaller
+ cube/ramp, or from color to mono.
+ Solution:
+ Warn the user when color allocation fails during initialization.
+ Files:
+ gdevxini.c
+
+ Problem:
+ x_release could cause Ghostscript to fail if a font was freed
+ after the device was closed.
+ Solution:
+ Don't free the font in x_release. The font will be freed when
+ the connection to the X server is closed.
+ Files affected:
+ gdevx.c
+
+ 7/18/93
+ -------
+
+ Problem:
+ On MS-DOS systems, filenameforall didn't interpret * alone
+ as a pattern matching all files.
+ Fix:
+ Recognize a trailing * in a pattern as a special case.
+ Files affected:
+ gp_msdos.c
+
+ Problem:
+ The FontName in the font file had be the same as the name in
+ Fontmap. (This requirement led to the need for aliases, and
+ was extremely confusing to users.)
+ Fix:
+ If loading a font file doesn't define the font with the
+ requested name, parse the file to find the FontName, and make
+ the requested name an alias for it.
+ Files affected:
+ gs_fonts.ps
+
+ Problem:
+ Users had to remember to edit the Fontmap file whenever they
+ installed a new font.
+ Fix:
+ Add a GS_FONTPATH environment variable containing a list of
+ directories that should be scanned automatically for fonts at
+ startup time.
+ Files affected:
+ gs_fonts.ps, fonts.doc, use.doc
*** 1.2 1993/06/29 02:22:52
--- devs.mak 1993/07/17 17:40:16
***************
*** 51,57 ****
# * att3b1 AT&T 3b1/Unixpc monochrome display [3b1 only]
# * sonyfb Sony Microsystems monochrome display [Sony only]
# * sunview SunView window system [SunOS only]
! # x11 X Windows version 11, release >=3 [Unix and VMS only]
# Printers:
# * appledmp Apple Dot Matrix Printer (should also work with Imagewriter)
# bj10e Canon BubbleJet BJ10e
--- 51,57 ----
# * att3b1 AT&T 3b1/Unixpc monochrome display [3b1 only]
# * sonyfb Sony Microsystems monochrome display [Sony only]
# * sunview SunView window system [SunOS only]
! # x11 X Windows version 11, release >=4 [Unix and VMS only]
# Printers:
# * appledmp Apple Dot Matrix Printer (should also work with Imagewriter)
# bj10e Canon BubbleJet BJ10e
***************
*** 83,88 ****
--- 83,89 ----
# * lj250 DEC LJ250 Companion color printer
# + ljet2p H-P LaserJet IId/IIp/III* with TIFF compression
# + ljet3 H-P LaserJet III* with Delta Row compression
+ # + ljet4 H-P LaserJet 4 (defaults to 600 dpi)
# + ljetplus H-P LaserJet Plus
# * m8510 C.Itoh M8510 printer
# * necp6 NEC P6/P6+/P60 printers at 360 x 360 DPI resolution
***************
*** 410,415 ****
--- 411,421 ----
ljet3.dev: $(HPMONO)
$(SHP)gssetdev ljet3 $(HPMONO)
+ ### Selecting ljet4 also provides Delta Row compression on LaserJet IV series.
+
+ ljet4.dev: $(HPMONO)
+ $(SHP)gssetdev ljet4 $(HPMONO)
+
###- The H-P DeskJet 500C/550C and PaintJet family color printer devices -###
### Note: there are two different 500C drivers, both contributed by users.###
### If you have questions about the djet500c driver, ###
***************
*** 491,501 ****
### Note: this driver was contributed by a user: if you have questions, ###
### please contact Richard Brown (rab@tauon.ph.unimelb.edu.au). ###
! escp2_=gdevescp2.$(OBJ) gdevprn.$(OBJ)
escp2.dev: $(escp2_)
$(SHP)gssetdev escp2 $(escp2_)
! gdevescp2.$(OBJ): gdevescp2.c $(PDEVH)
### ------------ The H-P PaintJet color printer device ----------------- ###
### Note: this driver also supports the DEC LJ250 color printer, which ###
--- 497,507 ----
### Note: this driver was contributed by a user: if you have questions, ###
### please contact Richard Brown (rab@tauon.ph.unimelb.edu.au). ###
! escp2_=gdevescp.$(OBJ) gdevprn.$(OBJ)
escp2.dev: $(escp2_)
$(SHP)gssetdev escp2 $(escp2_)
! gdevescp.$(OBJ): gdevescp.c $(PDEVH)
### ------------ The H-P PaintJet color printer device ----------------- ###
### Note: this driver also supports the DEC LJ250 color printer, which ###
***************
*** 690,703 ****
# Aladdin Enterprises does not support Ghostview. For more information
# about Ghostview, please contact Tim Theisen (ghostview@cs.wisc.edu).
- # NOTE: Xmu and Xext are here to keep Sun's dynamic linker happy. No
- # routines are used from either of these two libraries. If you
- # do not have libXmu.a or libXext.a, simply remove these two lines
- # from the Makefile.
x11_=gdevx.$(OBJ) gdevxini.$(OBJ) gdevxxf.$(OBJ) gdevemap.$(OBJ)
x11.dev: $(x11_)
$(SHP)gssetdev x11 $(x11_)
! $(SHP)gsaddmod x11 -lib Xt Xmu X11 Xext
# See the main makefile for the definition of XINCLUDE.
GDEVX=$(GDEV) x_.h gdevx.h $(MAKEFILE)
--- 696,705 ----
# Aladdin Enterprises does not support Ghostview. For more information
# about Ghostview, please contact Tim Theisen (ghostview@cs.wisc.edu).
x11_=gdevx.$(OBJ) gdevxini.$(OBJ) gdevxxf.$(OBJ) gdevemap.$(OBJ)
x11.dev: $(x11_)
$(SHP)gssetdev x11 $(x11_)
! $(SHP)gsaddmod x11 -lib Xt X11 Xext
# See the main makefile for the definition of XINCLUDE.
GDEVX=$(GDEV) x_.h gdevx.h $(MAKEFILE)
*** 1.1 1993/07/19 15:43:44
--- fonts.doc 1993/07/17 19:27:38
***************
*** 129,145 ****
entry for your new font at the end. The format for entries is documented
in the Fontmap file. Since later entries in Fontmap override earlier
entries, any fonts you add will supersede the corresponding fonts supplied
! with Ghostscript. Note that the font name in the Fontmap entry must be
! the same as the FontName in the font itself.
In the PC world, Type 1 fonts are customarily given names ending in .PFA
or .PFB. Ghostscript can use these directly; you just need to make the
entry in Fontmap. If you are going to use a commercial Type 1 font (such
as fonts obtained in conjunction with Adobe Type Manager) with
Ghostscript, please read carefully the license that accompanies the font;
! Aladdin Enterprises and the Free Software Foundation take no
! responsibility for any possible violations of such licenses.
If you want to convert a BDF file to a scalable outline, use the program
bdftops.ps (and invoking shell script bdftops.bat or bdftops). Run the
shell command
--- 129,147 ----
entry for your new font at the end. The format for entries is documented
in the Fontmap file. Since later entries in Fontmap override earlier
entries, any fonts you add will supersede the corresponding fonts supplied
! with Ghostscript.
In the PC world, Type 1 fonts are customarily given names ending in .PFA
or .PFB. Ghostscript can use these directly; you just need to make the
entry in Fontmap. If you are going to use a commercial Type 1 font (such
as fonts obtained in conjunction with Adobe Type Manager) with
Ghostscript, please read carefully the license that accompanies the font;
! Aladdin Enterprises takes no responsibility for any possible violations of
! such licenses.
+ Converting BDF fonts
+ --------------------
+
If you want to convert a BDF file to a scalable outline, use the program
bdftops.ps (and invoking shell script bdftops.bat or bdftops). Run the
shell command
***************
*** 170,176 ****
The utility for precompiling fonts is called font2c. Note that font2c is
a PostScript language program, so you must have Ghostscript already
running to be able to run font2c; you must also have entries in the
! Fontmap for the fonts you want to compile.) For example, to precompile
the Times-Italic font,
font2c Times-Italic ptmri.c
where the first argument is the font name and the second is the name of
--- 172,178 ----
The utility for precompiling fonts is called font2c. Note that font2c is
a PostScript language program, so you must have Ghostscript already
running to be able to run font2c; you must also have entries in the
! Fontmap for the fonts you want to compile. For example, to precompile
the Times-Italic font,
font2c Times-Italic ptmri.c
where the first argument is the font name and the second is the name of
*** 1.2 1993/06/29 02:22:52
--- gdevpcx.c 1993/07/09 14:47:28
***************
*** 109,120 ****
ushort hres; /* horz. resolution */
ushort vres; /* vert. resolution */
byte palette[16*3]; /* color palette */
! byte vmode; /* video mode for graphics board */
byte nplanes; /* number of color planes */
! ushort bpl; /* number of bytes per line (uncompresses) */
ushort palinfo; /* palette info 1=color, 2=grey */
- ushort shres; /* scanner horz. resolution */
- ushort svres; /* scanner vert. resolution */
byte xtra[58]; /* fill out header to 128 bytes */
} pcx_header;
--- 109,118 ----
ushort hres; /* horz. resolution */
ushort vres; /* vert. resolution */
byte palette[16*3]; /* color palette */
! byte reserved;
byte nplanes; /* number of color planes */
! ushort bpl; /* number of bytes per line (uncompressed) */
ushort palinfo; /* palette info 1=color, 2=grey */
byte xtra[58]; /* fill out header to 128 bytes */
} pcx_header;
***************
*** 124,130 ****
** 0 == 2.5
** 2 == 2.8 w/palette info
** 3 == 2.8 without palette info
! ** 5 == 3.0
**
*/
--- 122,128 ----
** 0 == 2.5
** 2 == 2.8 w/palette info
** 3 == 2.8 without palette info
! ** 5 == 3.0 (includes palette)
**
*/
***************
*** 136,146 ****
private int
pcxmono_print_page(gx_device_printer *pdev, FILE *file)
{ pcx_header header;
- header.version = 2;
header.bpp = 1;
header.nplanes = 1;
! /* Clear the EGA palette */
! memset((byte *)header.palette, 0, sizeof(header.palette));
return pcx_write_page(pdev, file, &header, 0);
}
--- 134,143 ----
private int
pcxmono_print_page(gx_device_printer *pdev, FILE *file)
{ pcx_header header;
header.bpp = 1;
header.nplanes = 1;
! /* Set the first two entries of the short palette. */
! memcpy((byte *)header.palette, "\377\377\377\000\000\000", 6);
return pcx_write_page(pdev, file, &header, 0);
}
***************
*** 154,160 ****
private int
pcx16_print_page(gx_device_printer *pdev, FILE *file)
{ pcx_header header;
- header.version = 2;
header.bpp = 1;
header.nplanes = 4;
/* Fill the EGA palette appropriately. */
--- 151,156 ----
***************
*** 167,173 ****
pcx256_print_page(gx_device_printer *pdev, FILE *file)
{ pcx_header header;
int code;
- header.version = 5;
header.bpp = 8;
header.nplanes = 1;
/* Clear the EGA palette */
--- 163,168 ----
***************
*** 187,216 ****
private int
pcx_write_page(gx_device_printer *pdev, FILE *file, pcx_header _ss *phdr,
int planar)
! { int raster = gdev_prn_raster(pdev);
int height = pdev->height;
int depth = pdev->color_info.depth;
! uint rsize = (pdev->width + 7) >> 3;
! byte *row = (byte *)gs_malloc(raster + rsize, 1, "pcx file buffer");
! byte *end = row + raster;
! byte *plane = end;
int y;
int code = 0; /* return code */
! if ( row == 0 ) /* can't allocate row buffer */
return_error(gs_error_VMerror);
! /* setup the header struct */
phdr->manuf = 10;
! /* version and bpp were set by the caller */
phdr->encoding = 1; /* 1 for rle 8-bit encoding */
phdr->x1 = 0;
phdr->y1 = 0;
assign_ushort(phdr->x2, pdev->width-1);
assign_ushort(phdr->y2, height-1);
assign_ushort(phdr->hres, (int)pdev->x_pixels_per_inch);
assign_ushort(phdr->vres, (int)pdev->y_pixels_per_inch);
! phdr->vmode = 0;
/* nplanes was set by the caller */
assign_ushort(phdr->bpl, (planar && depth > 1 ? rsize : raster));
assign_ushort(phdr->palinfo, (gx_device_has_color(pdev) ? 1 : 2));
--- 182,212 ----
private int
pcx_write_page(gx_device_printer *pdev, FILE *file, pcx_header _ss *phdr,
int planar)
! { int orig_raster = gdev_prn_raster(pdev);
! int raster = round_up(orig_raster, 2); /* PCX format requires even */
! uint rsize = round_up((pdev->width + 7) >> 3, 2); /* ditto */
int height = pdev->height;
int depth = pdev->color_info.depth;
! byte *line = (byte *)gs_malloc(raster + rsize, 1, "pcx file buffer");
! byte *plane = line + raster;
int y;
int code = 0; /* return code */
! if ( line == 0 ) /* can't allocate line buffer */
return_error(gs_error_VMerror);
! /* Set up the header struct. */
phdr->manuf = 10;
! phdr->version = 5;
phdr->encoding = 1; /* 1 for rle 8-bit encoding */
+ /* bpp was set by the caller */
phdr->x1 = 0;
phdr->y1 = 0;
assign_ushort(phdr->x2, pdev->width-1);
assign_ushort(phdr->y2, height-1);
assign_ushort(phdr->hres, (int)pdev->x_pixels_per_inch);
assign_ushort(phdr->vres, (int)pdev->y_pixels_per_inch);
! phdr->reserved = 0;
/* nplanes was set by the caller */
assign_ushort(phdr->bpl, (planar && depth > 1 ? rsize : raster));
assign_ushort(phdr->palinfo, (gx_device_has_color(pdev) ? 1 : 2));
***************
*** 224,230 ****
/* Dump the contents of the image. */
for ( y = 0; y < height; y++ )
! { gdev_prn_copy_scan_lines(pdev, y, row, raster);
switch ( depth )
{
case 1:
--- 220,233 ----
/* Dump the contents of the image. */
for ( y = 0; y < height; y++ )
! { byte *row;
! byte *end;
! int code = gdev_prn_get_bits(pdev, y, line, &row);
! if ( code < 0 ) break;
! end = row + raster;
! /* Clear an odd trailing byte. */
! if ( orig_raster & 1 )
! end[-1] = 0;
switch ( depth )
{
case 1:
***************
*** 267,273 ****
(((uint)from[7] & bmask)))
>> shift;
}
! pcx_write_rle(plane, to, file);
}
}
break;
--- 270,276 ----
(((uint)from[7] & bmask)))
>> shift;
}
! pcx_write_rle(plane, plane + rsize, file);
}
}
break;
***************
*** 277,286 ****
goto pcx_done;
}
! }
pcx_done:
! gs_free((char *)row, raster + rsize, 1, "pcx file buffer");
return code;
}
--- 280,289 ----
goto pcx_done;
}
! }
pcx_done:
! gs_free((char *)line, raster + rsize, 1, "pcx file buffer");
return code;
}
*** 1.1 1993/07/19 15:43:44
--- gdevtiff.c 1993/07/08 11:46:26
***************
*** 47,52 ****
--- 47,53 ----
long prevdir; /* file offset of previous directory offset */
long diroff; /* file offset of next write */
int bigendian; /* 1 if machine is big-endian, 0 otherwise */
+ unsigned long iwidth; /* width of image data in pixels */
int fax_byte;
int fax_weight;
} TIFFOUT;
***************
*** 77,83 ****
/* The device descriptor */
#define X_DPI 204
#define Y_DPI 196
! #define LINE_SIZE ((X_DPI * 98 / 10 + 7) / 8) /* bytes per line */
private dev_proc_open_device(tiff_prn_open);
private dev_proc_print_page(tiff_print_page);
--- 78,84 ----
/* The device descriptor */
#define X_DPI 204
#define Y_DPI 196
! #define LINE_SIZE ((X_DPI * 101 / 10 + 7) / 8) /* bytes per line */
private dev_proc_open_device(tiff_prn_open);
private dev_proc_print_page(tiff_print_page);
***************
*** 108,116 ****
#define PAPER_SIZE_LETTER 0
{ 85, 110, 1728 },
#define PAPER_SIZE_A4 1
! { 83, 117, 1728 },
#define PAPER_SIZE_B4 2
! { 98, 1391, 2048 }
};
#define NPAGEINFO (sizeof (pageinfo) / sizeof (pageinfo[0]))
--- 109,117 ----
#define PAPER_SIZE_LETTER 0
{ 85, 110, 1728 },
#define PAPER_SIZE_A4 1
! { 85, 117, 1728 },
#define PAPER_SIZE_B4 2
! { 101, 143, 2048 }
};
#define NPAGEINFO (sizeof (pageinfo) / sizeof (pageinfo[0]))
***************
*** 143,148 ****
--- 144,150 ----
if (rc == 0) {
gx_device_tiff* ddev = (gx_device_tiff*) pdev;
faxout_open_fp(ddev->file, &ddev->fax);
+ ddev->fax.iwidth = pi->iw;
}
return (rc);
}
***************
*** 654,660 ****
register int run;
register int rl;
! ep = p + 1728/8;
bit = 7;
for (;;) {
find_white_run();
--- 656,662 ----
register int run;
register int rl;
! ep = p + faxp->iwidth/8;
bit = 7;
for (;;) {
find_white_run();
***************
*** 689,695 ****
if(c>=64) {
tpos = (c/64)-1;
! te = mwtable+tpos;
c -= te->count;
putcode(faxp, te);
}
--- 691,697 ----
if(c>=64) {
tpos = (c/64)-1;
! te = tpos < 27 ? mwtable+tpos : extable+tpos-27;
c -= te->count;
putcode(faxp, te);
}
***************
*** 706,712 ****
if(c>=64) {
tpos = (c/64)-1;
! te = mbtable+tpos;
c -= te->count;
putcode(faxp, te);
}
--- 708,714 ----
if(c>=64) {
tpos = (c/64)-1;
! te = tpos < 27 ? mbtable+tpos : extable+tpos-27;
c -= te->count;
putcode(faxp, te);
}
*** 1.2 1993/06/29 02:22:52
--- gdevx.c 1993/07/17 17:36:10
***************
*** 157,164 ****
NULL, /* palette */
NULL, NULL, NULL, /* regularFonts, symbolFonts, dingbatFonts */
NULL, NULL, NULL, /* regular_fonts, symbol_fonts, dingbat_fonts */
! 1, 1, 0, /* useXFonts, useScalableFonts, logXFonts */
! 10.0, /* xFontTolerance */
0.0, 0.0, /* xResolution, yResolution */
1, /* useBackingPixmap */
1, 1, /* useXPutImage, useXSetTile */
--- 157,164 ----
NULL, /* palette */
NULL, NULL, NULL, /* regularFonts, symbolFonts, dingbatFonts */
NULL, NULL, NULL, /* regular_fonts, symbol_fonts, dingbat_fonts */
! 1, 1, /* useXFonts, useFontExtensions */
! 1, 0, /* useScalableFonts, logXFonts */
0.0, 0.0, /* xResolution, yResolution */
1, /* useBackingPixmap */
1, 1, /* useXPutImage, useXSetTile */
***************
*** 196,206 ****
}
if (xdev->dither_colors) {
if (gx_device_has_color(xdev))
gs_free((char *)xdev->dither_colors, sizeof(x_pixel),
! xdev->color_info.dither_gray, "gdev_x_gray_ramp");
else
gs_free((char *)xdev->dither_colors, sizeof(x_pixel),
! xdev->color_info.dither_rgb, "gdev_x_rgb_cube");
xdev->dither_colors = NULL;
}
if (xdev->dynamic_colors) {
--- 196,208 ----
}
if (xdev->dither_colors) {
if (gx_device_has_color(xdev))
+ #define cube(r) (r*r*r)
gs_free((char *)xdev->dither_colors, sizeof(x_pixel),
! cube(xdev->color_info.dither_rgb), "gdev_x_rgb_cube");
! #undef cube
else
gs_free((char *)xdev->dither_colors, sizeof(x_pixel),
! xdev->color_info.dither_gray, "gdev_x_gray_ramp");
xdev->dither_colors = NULL;
}
if (xdev->dynamic_colors) {
***************
*** 470,475 ****
--- 472,488 ----
/* on every operation, but there's no separate driver routine */
/* for erasepage (yet). */
if (x == 0 && y == 0 && w == xdev->width && h == xdev->height) {
+ if (color == xdev->foreground || color == xdev->background) {
+ int i;
+ XErrorHandler oldhandler = XSetErrorHandler(x_catch_free_colors);
+ for (i = 0; i < xdev->dynamic_number; i++) {
+ XFreeColors(xdev->dpy, xdev->cmap,
+ &xdev->dynamic_colors[i].pixel, 1, 0);
+ }
+ XSync(xdev->dpy, False); /* Force any errors */
+ oldhandler = XSetErrorHandler(oldhandler);
+ xdev->dynamic_number = 0;
+ }
xdev->colors_or = xdev->colors_and = color;
}
if (xdev->bpixmap != (Pixmap) 0) {
*** 1.1 1993/07/19 15:43:44
--- gdevx.h 1993/07/17 17:36:10
***************
*** 145,152 ****
x11fontmap *regular_fonts;
x11fontmap *symbol_fonts;
x11fontmap *dingbat_fonts;
! Boolean useXFonts, useScalableFonts, logXFonts;
! float xFontTolerance;
float xResolution, yResolution;
/* Flags work around various X server problems. */
--- 145,151 ----
x11fontmap *regular_fonts;
x11fontmap *symbol_fonts;
x11fontmap *dingbat_fonts;
! Boolean useXFonts, useFontExtensions, useScalableFonts, logXFonts;
float xResolution, yResolution;
/* Flags work around various X server problems. */
***************
*** 159,164 ****
--- 158,164 ----
/* function to keep track of screen updates */
void x_update_add(P5(gx_device *, int, int, int, int));
void gdev_x_clear_window(P1(gx_device_X *));
+ int x_catch_free_colors(P2(Display *, XErrorEvent *));
/* Number used to distinguish when resoultion was set from the command line */
#define FAKE_RES (16*72)
*** 1.2 1993/06/29 02:22:52
--- gdevxini.c 1993/07/17 17:36:10
***************
*** 40,48 ****
{"dingbatFonts", "DingbatFonts", XtRString, sizeof(String),
XtOffsetOf(gx_device_X, dingbatFonts),
XtRString, "ZapfDingbats: -Adobe-ITC Zapf Dingbats-Medium-R-Normal--"},
- {"externalFontTolerance", "ExternalFontTolerance", XtRFloat, sizeof(float),
- XtOffsetOf(gx_device_X, xFontTolerance),
- XtRString, (XtPointer)"10.0"},
{XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
XtOffsetOf(gx_device_X, foreground),
XtRString, (XtPointer)"XtDefaultForeground"},
--- 40,45 ----
***************
*** 110,115 ****
--- 107,115 ----
{"useExternalFonts", "UseExternalFonts", XtRBoolean, sizeof(Boolean),
XtOffsetOf(gx_device_X, useXFonts),
XtRImmediate, (XtPointer)True},
+ {"useFontExtensions", "UseFontExtensions", XtRBoolean, sizeof(Boolean),
+ XtOffsetOf(gx_device_X, useFontExtensions),
+ XtRImmediate, (XtPointer)True},
{"useScalableFonts", "UseScalableFonts", XtRBoolean, sizeof(Boolean),
XtOffsetOf(gx_device_X, useScalableFonts),
XtRImmediate, (XtPointer)True},
***************
*** 127,132 ****
--- 127,139 ----
XtRString, (XtPointer)"0.0"},
};
+ private String
+ fallback_resources[] = {
+ "Ghostscript*Background: white",
+ "Ghostscript*Foreground: black",
+ NULL
+ };
+
/* Define constants for orientation from ghostview */
/* Number represents clockwise rotation of the paper in degrees */
typedef enum {
***************
*** 157,163 ****
return oldhandler(dpy, err);
}
! private int
x_catch_free_colors(Display *dpy, XErrorEvent *err)
{
if (err->request_code == X_FreeColors) return 0;
--- 164,170 ----
return oldhandler(dpy, err);
}
! int
x_catch_free_colors(Display *dpy, XErrorEvent *err)
{
if (err->request_code == X_FreeColors) return 0;
***************
*** 329,334 ****
--- 336,342 ----
#endif
XtToolkitInitialize();
app_con = XtCreateApplicationContext();
+ XtAppSetFallbackResources(app_con, fallback_resources);
dpy = XtOpenDisplay(app_con, NULL, "ghostscript", "Ghostscript",
NULL, 0, &zero, NULL);
toplevel = XtAppCreateShell(NULL, "Ghostscript",
***************
*** 576,582 ****
type == XA_STRING) {
nitems = sscanf(buf, "%*s %d %d", &(xdev->foreground),
&(xdev->background));
! if (nitems != 2 || *buf != 'M' || *buf != 'G' || *buf != 'C') {
eprintf("gs: Malformed ghostview color property.\n");
exit(1);
}
--- 584,590 ----
type == XA_STRING) {
nitems = sscanf(buf, "%*s %d %d", &(xdev->foreground),
&(xdev->background));
! if (nitems != 2 || *buf != 'M' && *buf != 'G' && *buf != 'C') {
eprintf("gs: Malformed ghostview color property.\n");
exit(1);
}
***************
*** 599,611 ****
#endif
xdev->dither_colors = NULL;
xdev->dynamic_colors = NULL;
xdev->color_info.depth = xdev->vinfo->depth;
if (palette == 'C') {
xdev->color_info.num_components = 3;
xdev->color_info.max_gray =
xdev->color_info.max_rgb = num_rgb - 1;
- xdev->dither_colors = NULL;
#if HaveStdCMap
/* Get a standard color map if available */
if (xdev->vinfo->visual == DefaultVisualOfScreen(xdev->scr)) {
--- 607,620 ----
#endif
xdev->dither_colors = NULL;
xdev->dynamic_colors = NULL;
+ xdev->dynamic_size = 0;
+ xdev->dynamic_number = 0;
xdev->color_info.depth = xdev->vinfo->depth;
if (palette == 'C') {
xdev->color_info.num_components = 3;
xdev->color_info.max_gray =
xdev->color_info.max_rgb = num_rgb - 1;
#if HaveStdCMap
/* Get a standard color map if available */
if (xdev->vinfo->visual == DefaultVisualOfScreen(xdev->scr)) {
***************
*** 641,646 ****
--- 650,659 ----
xdev->dither_colors =
(x_pixel *) gs_malloc(sizeof(x_pixel), cube(ramp_size),
"gdev_x_rgb_cube");
+ if (xdev->dither_colors == NULL) {
+ ramp_size--;
+ goto no_cube;
+ }
for (r = 0; r < ramp_size; r++) {
for (g = 0; g < ramp_size; g++) {
for (b = 0; b < ramp_size; b++) {
***************
*** 663,681 ****
xdev->dither_colors[cube_index(r, g, b)] =
xc.pixel;
} else {
! int i;
!
ramp_size--;
! oldhandler =
! XSetErrorHandler(x_catch_free_colors);
! for (i = 1; i < cube_index(r, g, b); i++) {
XFreeColors(xdev->dpy, xdev->cmap,
! &(xdev->dither_colors[i]),
! 1, 0);
}
- /* Force any errors */
- XSync(xdev->dpy, False);
- oldhandler = XSetErrorHandler(oldhandler);
gs_free((char *)xdev->dither_colors,
sizeof(x_pixel), cube(ramp_size),
"gdev_x_rgb_cube");
--- 676,695 ----
xdev->dither_colors[cube_index(r, g, b)] =
xc.pixel;
} else {
! eprintf3("Warning: failed to allocate %dx%dx%d RGB cube.\n",
! ramp_size, ramp_size, ramp_size);
ramp_size--;
! if (cube_index(r, g, b) - 1 > 0) {
! oldhandler =
! XSetErrorHandler(x_catch_free_colors);
XFreeColors(xdev->dpy, xdev->cmap,
! xdev->dither_colors + 1,
! cube_index(r, g, b) - 1, 0);
! /* Force any errors */
! XSync(xdev->dpy, False);
! oldhandler =
! XSetErrorHandler(oldhandler);
}
gs_free((char *)xdev->dither_colors,
sizeof(x_pixel), cube(ramp_size),
"gdev_x_rgb_cube");
***************
*** 696,717 ****
/* Allocate space for dynamic colors, do at most 256 */
/* If there are more avaiaible, we ask the X server */
- xdev->dynamic_number = 0;
xdev->dynamic_size = min(256, xdev->vinfo->colormap_size -
cube(xdev->color_info.dither_rgb));
if (xdev->dynamic_size) {
xdev->dynamic_colors =
(XColor *) gs_malloc(sizeof(XColor), xdev->dynamic_size,
"gdev_x_dynamic_colors");
! } else {
! xdev->dynamic_colors = NULL;
}
#undef cube
} else if (palette == 'G') {
grayscale:
xdev->color_info.num_components = 1;
xdev->color_info.max_gray = num_rgb - 1;
- xdev->dither_colors = NULL;
#if HaveStdCMap
/* Get a standard color map if available */
if (xdev->std_cmap = x_get_std_cmap(xdev, XA_RGB_GRAY_MAP)) {
--- 710,730 ----
/* Allocate space for dynamic colors, do at most 256 */
/* If there are more avaiaible, we ask the X server */
xdev->dynamic_size = min(256, xdev->vinfo->colormap_size -
cube(xdev->color_info.dither_rgb));
if (xdev->dynamic_size) {
xdev->dynamic_colors =
(XColor *) gs_malloc(sizeof(XColor), xdev->dynamic_size,
"gdev_x_dynamic_colors");
! if (xdev->dynamic_colors == NULL) {
! xdev->dynamic_size = 0;
! }
}
#undef cube
} else if (palette == 'G') {
grayscale:
xdev->color_info.num_components = 1;
xdev->color_info.max_gray = num_rgb - 1;
#if HaveStdCMap
/* Get a standard color map if available */
if (xdev->std_cmap = x_get_std_cmap(xdev, XA_RGB_GRAY_MAP)) {
***************
*** 736,741 ****
--- 749,758 ----
xdev->dither_colors =
(x_pixel *) gs_malloc(sizeof(x_pixel), ramp_size,
"gdev_x_gray_ramp");
+ if (xdev->dither_colors == NULL) {
+ ramp_size--;
+ goto no_ramp;
+ }
for (i = 0; i < ramp_size; i++) {
XColor xc;
***************
*** 749,763 ****
if (XAllocColor(xdev->dpy, xdev->cmap, &xc)) {
xdev->dither_colors[i] = xc.pixel;
} else {
! int j = i;
ramp_size /= 2;
! oldhandler = XSetErrorHandler(x_catch_free_colors);
! for (i = 1; i < j; i++) {
XFreeColors(xdev->dpy, xdev->cmap,
! &(xdev->dither_colors[i]), 1, 0);
}
- XSync(xdev->dpy, False); /* Force any errors */
- oldhandler = XSetErrorHandler(oldhandler);
gs_free((char *)xdev->dither_colors,
sizeof(x_pixel), ramp_size,
"gdev_x_gray_ramp");
--- 766,782 ----
if (XAllocColor(xdev->dpy, xdev->cmap, &xc)) {
xdev->dither_colors[i] = xc.pixel;
} else {
! eprintf1("Warning: failed to allocate %d level gray ramp.\n",
! ramp_size);
ramp_size /= 2;
! if (i - 1 > 0) {
! oldhandler =
! XSetErrorHandler(x_catch_free_colors);
XFreeColors(xdev->dpy, xdev->cmap,
! xdev->dither_colors + 1, i - 1, 0);
! XSync(xdev->dpy, False); /* Force any errors */
! oldhandler = XSetErrorHandler(oldhandler);
}
gs_free((char *)xdev->dither_colors,
sizeof(x_pixel), ramp_size,
"gdev_x_gray_ramp");
***************
*** 775,789 ****
/* Allocate space for dynamic colors, do at most 256 */
/* If there are more avaiaible, we ask the X server */
- xdev->dynamic_number = 0;
xdev->dynamic_size = min(256, xdev->vinfo->colormap_size -
xdev->color_info.dither_gray);
if (xdev->dynamic_size) {
xdev->dynamic_colors =
(XColor *) gs_malloc(sizeof(XColor), xdev->dynamic_size,
"gdev_x_dynamic_colors");
! } else {
! xdev->dynamic_colors = NULL;
}
} else if (palette == 'M') {
monochrome:
--- 794,808 ----
/* Allocate space for dynamic colors, do at most 256 */
/* If there are more avaiaible, we ask the X server */
xdev->dynamic_size = min(256, xdev->vinfo->colormap_size -
xdev->color_info.dither_gray);
if (xdev->dynamic_size) {
xdev->dynamic_colors =
(XColor *) gs_malloc(sizeof(XColor), xdev->dynamic_size,
"gdev_x_dynamic_colors");
! if (xdev->dynamic_colors == NULL) {
! xdev->dynamic_size = 0;
! }
}
} else if (palette == 'M') {
monochrome:
***************
*** 866,877 ****
--- 885,907 ----
if (x11_name = get_x11_name(&cp, &x11_name_len)) {
font = (x11fontmap *)gs_malloc(sizeof(x11fontmap), 1,
"gdev_x_setup_fontmap");
+ if (font == NULL) continue;
font->ps_name = (char *)gs_malloc(sizeof(char), ps_name_len+1,
"gdev_x_setup_fontmap");
+ if (font->ps_name == NULL) {
+ gs_free((char *)font, sizeof(x11fontmap), 1, "gdev_x_fontmap");
+ continue;
+ }
strncpy(font->ps_name, ps_name, ps_name_len);
font->ps_name[ps_name_len] = '\0';
font->x11_name = (char *)gs_malloc(sizeof(char), x11_name_len,
"gdev_x_setup_fontmap");
+ if (font->x11_name == NULL) {
+ gs_free(font->ps_name, sizeof(char), strlen(font->ps_name)+1,
+ "gdev_x_font_psname");
+ gs_free((char *)font, sizeof(x11fontmap), 1, "gdev_x_fontmap");
+ continue;
+ }
strncpy(font->x11_name, x11_name, x11_name_len-1);
font->x11_name[x11_name_len-1] = '\0';
font->std_names = NULL;
***************
*** 888,899 ****
--- 918,940 ----
if (x11_name = get_x11_name(&cp, &x11_name_len)) {
font = (x11fontmap *)gs_malloc(sizeof(x11fontmap), 1,
"gdev_x_setup_fontmap");
+ if (font == NULL) continue;
font->ps_name = (char *)gs_malloc(sizeof(char), ps_name_len+1,
"gdev_x_setup_fontmap");
+ if (font->ps_name == NULL) {
+ gs_free((char *)font, sizeof(x11fontmap), 1, "gdev_x_fontmap");
+ continue;
+ }
strncpy(font->ps_name, ps_name, ps_name_len);
font->ps_name[ps_name_len] = '\0';
font->x11_name = (char *)gs_malloc(sizeof(char), x11_name_len,
"gdev_x_setup_fontmap");
+ if (font->x11_name == NULL) {
+ gs_free(font->ps_name, sizeof(char), strlen(font->ps_name)+1,
+ "gdev_x_font_psname");
+ gs_free((char *)font, sizeof(x11fontmap), 1, "gdev_x_fontmap");
+ continue;
+ }
strncpy(font->x11_name, x11_name, x11_name_len-1);
font->x11_name[x11_name_len-1] = '\0';
font->std_names = NULL;
***************
*** 910,921 ****
--- 951,973 ----
if (x11_name = get_x11_name(&cp, &x11_name_len)) {
font = (x11fontmap *)gs_malloc(sizeof(x11fontmap), 1,
"gdev_x_setup_fontmap");
+ if (font == NULL) continue;
font->ps_name = (char *)gs_malloc(sizeof(char), ps_name_len+1,
"gdev_x_setup_fontmap");
+ if (font->ps_name == NULL) {
+ gs_free((char *)font, sizeof(x11fontmap), 1, "gdev_x_fontmap");
+ continue;
+ }
strncpy(font->ps_name, ps_name, ps_name_len);
font->ps_name[ps_name_len] = '\0';
font->x11_name = (char *)gs_malloc(sizeof(char), x11_name_len,
"gdev_x_setup_fontmap");
+ if (font->x11_name == NULL) {
+ gs_free(font->ps_name, sizeof(char), strlen(font->ps_name)+1,
+ "gdev_x_font_psname");
+ gs_free((char *)font, sizeof(x11fontmap), 1, "gdev_x_fontmap");
+ continue;
+ }
strncpy(font->x11_name, x11_name, x11_name_len-1);
font->x11_name[x11_name_len-1] = '\0';
font->std_names = NULL;
*** 1.2 1993/06/29 02:22:52
--- gdevxxf.c 1993/07/17 17:36:10
***************
*** 74,89 ****
gx_device_X *xdev = (gx_device_X *) dev;
x_xfont *xxf;
char x11template[256];
! char *x11fontname;
XFontStruct *x11font;
x11fontmap *fmp;
int i;
- double diff, d;
double height;
int size;
int xwidth, xheight, angle;
Boolean My;
! Boolean scalable_font;
if (!xdev->useXFonts) return NULL;
--- 74,88 ----
gx_device_X *xdev = (gx_device_X *) dev;
x_xfont *xxf;
char x11template[256];
! char *x11fontname = NULL;
XFontStruct *x11font;
x11fontmap *fmp;
int i;
double height;
int size;
int xwidth, xheight, angle;
Boolean My;
! Boolean scalable_font = False;
if (!xdev->useXFonts) return NULL;
***************
*** 108,113 ****
--- 107,114 ----
/* Don't do very small fonts. Font metrics are way off due to rounding */
if (xwidth <= 4 || xheight <= 4) return NULL;
+ if (!xdev->useFontExtensions && (My || angle != 0)) return NULL;
+
if (encoding_index == 0 || encoding_index == 1) {
int tried_other_encoding = 0;
***************
*** 120,126 ****
if (fmp == NULL) return NULL;
while (True) {
if (encoding_index == 0) {
- scalable_font = False;
if (fmp->std_count == -1) {
sprintf(x11template, "%s%s", fmp->x11_name,
"-*-*-*-*-*-*-Adobe-fontspecific");
--- 121,126 ----
***************
*** 128,134 ****
&fmp->std_count);
}
if (fmp->std_count) {
- diff = 999.9;
for (i = 0; i < fmp->std_count; i++) {
char *szp = fmp->std_names[i] + strlen(fmp->x11_name)+1;
--- 128,133 ----
***************
*** 139,166 ****
scalable_font = True;
continue;
}
! d = fabs(height - size) / height;
! if (d < diff) {
x11fontname = fmp->std_names[i];
! diff = d;
}
}
! if (xdev->useScalableFonts && scalable_font) {
! d = fabs(height - xheight) / height;
! if (d < diff) {
! sprintf(x11template, "%s-%d%s", fmp->x11_name,
! xheight, "-0-0-0-*-0-Adobe-fontspecific");
! x11fontname = x11template;
! diff = 0; /* Always use scalable font if closer */
! }
}
! if (diff*100 <= xdev->xFontTolerance) break;
}
if (tried_other_encoding) return NULL;
encoding_index = 1;
tried_other_encoding = 1;
} else if (encoding_index == 1) {
- scalable_font = False;
if (fmp->iso_count == -1) {
sprintf(x11template, "%s%s", fmp->x11_name,
"-*-*-*-*-*-*-ISO8859-1");
--- 138,160 ----
scalable_font = True;
continue;
}
! if (size == xheight) {
x11fontname = fmp->std_names[i];
! break;
}
}
! if (!x11fontname && scalable_font &&
! xdev->useScalableFonts) {
! sprintf(x11template, "%s-%d%s", fmp->x11_name,
! xheight, "-0-0-0-*-0-Adobe-fontspecific");
! x11fontname = x11template;
}
! if (x11fontname) break;
}
if (tried_other_encoding) return NULL;
encoding_index = 1;
tried_other_encoding = 1;
} else if (encoding_index == 1) {
if (fmp->iso_count == -1) {
sprintf(x11template, "%s%s", fmp->x11_name,
"-*-*-*-*-*-*-ISO8859-1");
***************
*** 168,174 ****
&fmp->iso_count);
}
if (fmp->iso_count) {
- diff = 999.9;
for (i = 0; i < fmp->iso_count; i++) {
char *szp = fmp->iso_names[i] + strlen(fmp->x11_name)+1;
--- 162,167 ----
***************
*** 179,200 ****
scalable_font = True;
continue;
}
! d = fabs(height - size) / height;
! if (d < diff) {
x11fontname = fmp->iso_names[i];
! diff = d;
}
}
! if (xdev->useScalableFonts && scalable_font) {
! d = fabs(height - xheight) / height;
! if (d < diff) {
! sprintf(x11template, "%s-%d%s", fmp->x11_name,
! xheight, "-0-0-0-*-0-ISO8859-1");
! x11fontname = x11template;
! diff = 0; /* Always use scalable font if closer */
! }
}
! if (diff*100 <= xdev->xFontTolerance) break;
}
if (tried_other_encoding) return NULL;
encoding_index = 0;
--- 172,189 ----
scalable_font = True;
continue;
}
! if (size == xheight) {
x11fontname = fmp->iso_names[i];
! break;
}
}
! if (!x11fontname && scalable_font &&
! xdev->useScalableFonts) {
! sprintf(x11template, "%s-%d%s", fmp->x11_name,
! xheight, "-0-0-0-*-0-ISO8859-1");
! x11fontname = x11template;
}
! if (x11fontname) break;
}
if (tried_other_encoding) return NULL;
encoding_index = 0;
***************
*** 202,208 ****
}
}
} else if (encoding_index == 2 || encoding_index == 3) {
- scalable_font = False;
if (encoding_index == 2) fmp = xdev->symbol_fonts;
if (encoding_index == 3) fmp = xdev->dingbat_fonts;
while (fmp) {
--- 191,196 ----
***************
*** 219,225 ****
&fmp->std_count);
}
if (fmp->std_count) {
- diff = 999.9;
for (i = 0; i < fmp->std_count; i++) {
char *szp = fmp->std_names[i] + strlen(fmp->x11_name)+1;
--- 207,212 ----
***************
*** 230,251 ****
scalable_font = True;
continue;
}
! d = fabs(height - size) / height;
! if (d < diff) {
x11fontname = fmp->std_names[i];
! diff = d;
}
}
! if (xdev->useScalableFonts && scalable_font) {
! d = fabs(height - xheight) / height;
! if (d < diff) {
! sprintf(x11template, "%s-%d%s", fmp->x11_name, xheight,
! "-0-0-0-*-0-Adobe-fontspecific");
! x11fontname = x11template;
! diff = 0; /* Always use scalable font if closer */
! }
}
! if (diff*100 > xdev->xFontTolerance) return NULL;
} else {
return NULL;
}
--- 217,233 ----
scalable_font = True;
continue;
}
! if (size == xheight) {
x11fontname = fmp->std_names[i];
! break;
}
}
! if (!x11fontname && scalable_font && xdev->useScalableFonts) {
! sprintf(x11template, "%s-%d%s", fmp->x11_name, xheight,
! "-0-0-0-*-0-Adobe-fontspecific");
! x11fontname = x11template;
}
! if (!x11fontname) return NULL;
} else {
return NULL;
}
***************
*** 458,466 ****
x_release(gx_xfont *xf, const gs_memory_procs *mprocs)
{
x_xfont *xxf = (x_xfont *) xf;
- gx_device_X *xdev = xxf->xdev;
! XFreeFont(xxf->xdev->dpy, xxf->font);
if (mprocs != NULL)
(*mprocs->free) ((char *)xf, 1, sizeof(x_xfont),
"x_release");
--- 440,448 ----
x_release(gx_xfont *xf, const gs_memory_procs *mprocs)
{
x_xfont *xxf = (x_xfont *) xf;
! /* The device may not be open. Cannot reliably free the font. */
! /* XFreeFont(xxf->xdev->dpy, xxf->font); */
if (mprocs != NULL)
(*mprocs->free) ((char *)xf, 1, sizeof(x_xfont),
"x_release");
*** 1.1 1993/07/19 15:43:44
--- gp_msdos.c 1993/07/18 09:55:36
***************
*** 161,166 ****
--- 161,167 ----
char *p;
int hsize = 0;
int i;
+ int dot = 0;
if ( pfen == 0 )
return 0;
pattern = (*mprocs->alloc)(pat_size, 1,
***************
*** 176,183 ****
--- 177,193 ----
/* Skip to . or end of string so DOS can do it. */
*p++ = '*';
while ( i < patlen && pat[i] != '.' ) i++;
+ if ( i == patlen && !dot )
+ { /* DOS doesn't interpret * alone as */
+ /* matching all files; we need *.*. */
+ *p++ = '.';
+ *p++ = '*';
+ }
i--;
continue;
+ case '.':
+ dot = 1;
+ break;
case '\\':
if ( i + 1 < patlen && pat[i + 1] == '\\' )
i++;
***************
*** 185,190 ****
--- 195,201 ----
case ':':
case '/':
hsize = p + 1 - (pattern + patlen);
+ dot = 0;
}
*p++ = pat[i];
}
*** 1.1 1993/07/19 15:43:44
--- gs_fonts.ps 1993/07/18 11:40:58
***************
*** 16,36 ****
% things, the copyright notice and this notice must be preserved on all
% copies.
! % Font initialization for Ghostscript.
% The standard representation for PostScript compatible fonts is described
% in the book "Adobe Type 1 Font Format", published by Adobe Systems Inc.
- % We don't attempt to document this representation here.
- % Ghostscript uses Type 1 fonts, except that the external form doesn't use
- % eexec encryption and may not even use CharString encryption.
-
% Define the default font.
/defaultfontname /Ugly def
% Load the font name -> font file name map.
userdict /Fontmap FontDirectory maxlength dict put
! /.loadFontmap % <filename>
{ 2 dict begin
mark Fontmap
/;
--- 16,32 ----
% things, the copyright notice and this notice must be preserved on all
% copies.
! % Font initialization and management code.
% The standard representation for PostScript compatible fonts is described
% in the book "Adobe Type 1 Font Format", published by Adobe Systems Inc.
% Define the default font.
/defaultfontname /Ugly def
% Load the font name -> font file name map.
userdict /Fontmap FontDirectory maxlength dict put
! /.loadFontmap % <filename> .loadFontmap -
{ 2 dict begin
mark Fontmap
/;
***************
*** 46,56 ****
} bind def
(Fontmap) .loadFontmap
! % Ghostscript optionally can load individual CharStrings as they are needed.
% (This is intended primarily for machines with very small memories.)
! % This happens if DISKFONTS is true. In this case, we define another
! % dictionary parallel to FontDirectory that retains an open file
! % for every font loaded.
/FontFileDirectory 10 dict def
% Define an augmented version of .buildfont1 that inserts UnderlinePosition
--- 42,186 ----
} bind def
(Fontmap) .loadFontmap
! % Parse a font file just enough to find the FontName.
! /.findfontname % <file> .findfontname <name> true
! % <file> .findfontname false
! % Closes the file in either case.
! { { dup token not { false exit } if % end of file
! dup /eexec eq { pop false exit } if % reached eexec section
! dup /FontName eq
! { xcheck not { dup token exit } if } % found /FontName
! { pop }
! ifelse
! } loop
! dup { 3 } { 2 } ifelse -1 roll closefile
! } bind def
!
! (GS_FONTPATH) getenv not { (%END GS_FONTPATH) .skipeof } if
! pop
!
! % Scan directories looking for plausible fonts. "Plausible" means that
! % the file begins either with %!PS-AdobeFont-, or with \200\001
! % followed by four arbitrary bytes and then "%!PS-AdobeFont-".
! % To speed up the search, we skip any file whose name appears in
! % the Fontmap (with any extension and upper/lower case variation) already.
! %
! % NOTE: The current implementation of this procedure is Unix/DOS-
! % specific. It assumes that '/' and '\' are directory separators; that
! % the part of a file name following the last '.' is the extension;
! % that ';' cannot appear in a file name; and that ':' can appear in a
! % file name only if the file name doesn't begin with '/', '\', or '.'.
! % (this is so that Unix systems can use ':' as the separator).
! %
! /.lowerstring % <string> .lowerstring <lowerstring>
! { 0 1 2 index length 1 sub
! { 2 copy get dup 65 ge exch 90 le and
! { 2 copy 2 copy get 32 add put }
! if pop
! }
! for
! } bind def
! /.splitfilename % <dir.../base.extn> .basename <base> <extn>
! { { (/) search { true } { (\\) search } ifelse
! { pop pop }
! { exit }
! ifelse
! }
! loop
! dup { (.) search { pop pop } { exit } ifelse } loop
! 2 copy eq
! { pop () }
! { exch dup length 2 index length 1 add sub 0 exch getinterval exch }
! ifelse
! } bind def
! /.scanfontdict Fontmap maxlength dict def
! /.scanfontbegin
! { % Construct the table of all file names already in Fontmap.
! Fontmap
! { exch pop dup type /stringtype eq
! { .splitfilename pop =string copy .lowerstring cvn
! .scanfontdict exch true .growput
! }
! { pop
! }
! ifelse
! }
! forall
! } bind def
! /.scanfontskip 4 dict dup begin
! (afm) true def
! (pfm) true def
! end def
! /.scan1fontstring 128 string def
! /.fontheader (\200\001????%!PS-AdobeFont-*) def
! /.scan1fontfirst .fontheader length string def
! /.scan1fontdir % <dirname> .scan1fontdir -
! { QUIET not { (Scanning ) print dup print ( for fonts... ) print flush } if
! 0 exch (/*) concatstrings
! { dup .splitfilename
! .scanfontskip exch known exch .scanfontdict exch known or
! { pop
! }
! { dup (r) file
! dup .scan1fontfirst readstring pop
! dup .fontheader 6 16 getinterval .stringmatch
! { pop true }
! { .fontheader .stringmatch }
! ifelse
! { dup 0 setfileposition .findfontname
! { dup Fontmap exch known
! { pop pop
! }
! { exch copystring exch
! Fontmap exch 2 index .growput
! .splitfilename pop true .scanfontdict 3 1 roll .growput
! 1 add
! }
! ifelse
! }
! if
! }
! { closefile pop
! }
! ifelse
! }
! ifelse
! }
! .scan1fontstring filenameforall
! QUIET { pop } { =only ( found.\n) print flush } ifelse
! } bind def
! % Scan all the directories mentioned in GS_FONTPATH.
! (GS_FONTPATH) getenv
! { .scanfontbegin
! % Parsing the list of dictionaries is messy, since we have to
! % handle both the Unix : and the other-system ; as separators.
! % See the earlier comment for the restrictions that make this work.
! { dup length 0 eq { pop exit } if
! (;) search
! { exch pop
! }
! { dup 0 1 getinterval (/\\.) exch search
! { pop pop pop (:) search
! { exch pop }
! { () exch }
! ifelse
! }
! { pop () exch
! }
! ifelse
! }
! ifelse .scan1fontdir
! }
! loop
! }
! if
!
! %END GS_FONTPATH
!
! % If DISKFONTS is true, we load individual CharStrings as they are needed.
% (This is intended primarily for machines with very small memories.)
! % In this case, we define another dictionary, parallel to FontDirectory,
! % that retains an open file for every font loaded.
/FontFileDirectory 10 dict def
% Define an augmented version of .buildfont1 that inserts UnderlinePosition
***************
*** 124,130 ****
} odef
! % Ghostscript optionally can load individual CharStrings as they are needed.
% (This is intended primarily for machines with very small memories.)
% Initially, the character definition is the file position of the definition;
% this gets replaced with the actual CharString.
--- 254,260 ----
} odef
! % If DISKFONTS is true, we load individual CharStrings as they are needed.
% (This is intended primarily for machines with very small memories.)
% Initially, the character definition is the file position of the definition;
% this gets replaced with the actual CharString.
***************
*** 175,181 ****
% Type1BuildGlyph calls load_C to actually load the character definition.
! /load_C % <charname> <fileposandlength> -> -
{ dup abs 1000 idiv FontFile exch setfileposition
CharStrings 3 1 roll
dup 0 lt
--- 305,311 ----
% Type1BuildGlyph calls load_C to actually load the character definition.
! /load_C % <charname> <fileposandlength> load_C -
{ dup abs 1000 idiv FontFile exch setfileposition
CharStrings 3 1 roll
dup 0 lt
***************
*** 195,201 ****
pop % the mark
} bind def
! /seac_C % charstring -> achar bchar ..or nothing..
{ dup length _Cstring length le
{ 4330 exch _Cstring .type1decrypt exch pop
dup dup length 2 sub 2 getinterval <0c06> eq % seac
--- 325,331 ----
pop % the mark
} bind def
! /seac_C % <charstring> seac_C <achar> <bchar> ..or nothing..
{ dup length _Cstring length le
{ 4330 exch _Cstring .type1decrypt exch pop
dup dup length 2 sub 2 getinterval <0c06> eq % seac
***************
*** 294,341 ****
ifelse
} bind def
currentdict end readonly /.loadfontdict exch def
! /.loadfont % <file> .loadfont ->
{ mark exch systemdict begin
DISKFONTS { .loadfontdict begin } if
% We really would just like systemdict on the stack,
% but fonts produced by Fontographer require a writable dictionary....
8 dict begin % garbage
! % We can't just use `run', because we want to check for
! % .PFB files. We can't save the packing status anywhere,
! % so we need two separate control paths.
! % Also, we would like to use `false /PFBDecode filter',
% but this occasionally produces a whitespace character as
% the first of an eexec section, so we can't do it.
! % Finally, since the interpreter doesn't currently automatically
% close an input file when the file reaches EOF (unless it's
% the interpreter's current input file), we must explicitly
% close the real file if we used a PFB filter.
! currentpacking
! { false setpacking
! { dup read not { -1 } if
! 2 copy unread 16#80 eq
! { dup true /PFBDecode filter cvx exec closefile }
! { cvx exec }
! ifelse
! } stopped % split up `execute'
! true setpacking
! $error /newerror get and {handleerror} if
! }
! { { dup read not { -1 } if
! 2 copy unread 16#80 eq
! { dup true /PFBDecode filter cvx exec closefile }
! { cvx exec }
! ifelse
! } execute
! }
! ifelse
! DISKFONTS { end } if
! end end cleartomark
} bind def
% Define a procedure for defining aliased fonts.
% We just copy the original font, changing the FontName.
! /.aliasfont % <name> <font> -> <newFont>
{ dup length 2 add dict
dup 3 -1 roll { 1 index /FID eq { pop pop } { put dup } ifelse } forall
/FontName 3 index put
--- 424,465 ----
ifelse
} bind def
currentdict end readonly /.loadfontdict exch def
! /.loadfont % <file> .loadfont -
{ mark exch systemdict begin
DISKFONTS { .loadfontdict begin } if
% We really would just like systemdict on the stack,
% but fonts produced by Fontographer require a writable dictionary....
8 dict begin % garbage
! % We can't just use `run', because we want to check for .PFB files.
! currentpacking
! { false setpacking .loadfont1 true setpacking }
! { .loadfont1 }
! ifelse
! { handleerror } if
! end
! DISKFONTS { end } if
! end cleartomark
! } bind def
! /.loadfont1 % <file> .loadfont1 <errorflag>
! { % We would like to use `false /PFBDecode filter',
% but this occasionally produces a whitespace character as
% the first of an eexec section, so we can't do it.
! % Also, since the interpreter doesn't currently automatically
% close an input file when the file reaches EOF (unless it's
% the interpreter's current input file), we must explicitly
% close the real file if we used a PFB filter.
! { dup read not { -1 } if
! 2 copy unread 16#80 eq
! { dup true /PFBDecode filter cvx exec closefile }
! { cvx exec }
! ifelse
! } stopped
! $error /newerror get and
} bind def
% Define a procedure for defining aliased fonts.
% We just copy the original font, changing the FontName.
! /.aliasfont % <name> <font> .aliasfont <newFont>
{ dup length 2 add dict
dup 3 -1 roll { 1 index /FID eq { pop pop } { put dup } ifelse } forall
/FontName 3 index put
***************
*** 392,417 ****
{ vmstatus 3 { =only ( ) print } repeat
(done.\n) print flush
} if
% Check to make sure the font was actually loaded.
dup FontDirectory exch known { findfont exit } if
! (Loading ) print dup cvx =only
! ( font failed, substituting ) print defaultfontname cvx =only
! (.\n) print flush
defaultfontname findfont .aliasfont exit
}
if
% findlibfile failed, substitute the default font.
% Stack: fontname fontfilename
! (Can't find \(or can't open\) font file ) print print
! dup defaultfontname eq
! { ( for default font \() print cvx =only
(\)! Giving up.\n) print flush 1 .quit
}
! { ( for font ) print dup cvx =only
! (, substituting ) print defaultfontname cvx =only
! (.\n) print flush
defaultfontname findfont .aliasfont
}
ifelse
--- 516,574 ----
{ vmstatus 3 { =only ( ) print } repeat
(done.\n) print flush
} if
+
% Check to make sure the font was actually loaded.
dup FontDirectory exch known { findfont exit } if
! % Maybe the file had a different FontName.
! % See if we can get a FontName from the file, and if so,
! % whether a font by that name exists now.
! dup Fontmap exch get findlibfile
! { exch pop .findfontname
! { dup FontDirectory exch .knownget
! { % Yes. Stack: origfontname filefontname fontdir
! exch
! QUIET
! { pop
! }
! { (Using ) print cvx =only
! ( font for ) print 1 index cvx =only
! (.\n) print flush
! }
! ifelse
! .aliasfont exit
! }
! if pop
! }
! if
! }
! if
!
! % The font definitely did not load correctly.
! QUIET not
! { (Loading ) print dup cvx =only
! ( font failed, substituting ) print defaultfontname cvx =only
! (.\n) print flush
! } if
defaultfontname findfont .aliasfont exit
}
if
% findlibfile failed, substitute the default font.
% Stack: fontname fontfilename
! (Can't find \(or can't open\) font file )
! 1 index defaultfontname eq
! { print print ( for default font \() print cvx =only
(\)! Giving up.\n) print flush 1 .quit
}
! { QUIET
! { pop
! }
! { print print ( for font ) print dup cvx =only
! (, substituting ) print defaultfontname cvx =only
! (.\n) print flush
! }
! ifelse
defaultfontname findfont .aliasfont
}
ifelse
***************
*** 469,475 ****
% because that would bind it into outline_C.)
/setcachedevice_C { setcachedevice } bind def
! /outline_C % <charname> <charstring> -> -
{ currentdict /Metrics .knownget
{ 2 index .knownget
{ dup type dup /integertype eq exch /realtype eq or
--- 626,632 ----
% because that would bind it into outline_C.)
/setcachedevice_C { setcachedevice } bind def
! /outline_C % <charname> <charstring> outline_C -
{ currentdict /Metrics .knownget
{ 2 index .knownget
{ dup type dup /integertype eq exch /realtype eq or
*** 1.1 1993/07/19 15:43:44
--- gs_statd.ps 1993/07/09 07:51:16
***************
*** 33,43 ****
/letter {612 792 //statusdict begin .setpagesize end} bind def
/note {540 720 //statusdict begin .setpagesize end} bind def
/legal {612 1008 //statusdict begin .setpagesize end} bind def
! /a3 {842 1190 //statusdict begin .setpagesize end} bind def
! /a4 {595 842 //statusdict begin .setpagesize end} bind def
! /a5 {421 595 //statusdict begin .setpagesize end} bind def
! /a6 {297 421 //statusdict begin .setpagesize end} bind def
! /b4 {709 1002 //statusdict begin .setpagesize end} bind def
/flsa {612 936 //statusdict begin .setpagesize end} bind def % U.S. foolscap
/flse {612 936 //statusdict begin .setpagesize end} bind def % European foolscap
/halfletter {396 612 //statusdict begin .setpagesize end} bind def
--- 33,60 ----
/letter {612 792 //statusdict begin .setpagesize end} bind def
/note {540 720 //statusdict begin .setpagesize end} bind def
/legal {612 1008 //statusdict begin .setpagesize end} bind def
! /a0 {2380 3368 //statusdict begin .setpagesize end} bind def % ISO standard
! /a1 {1684 2380 //statusdict begin .setpagesize end} bind def % ISO standard
! /a2 {1190 1684 //statusdict begin .setpagesize end} bind def % ISO standard
! /a3 {842 1190 //statusdict begin .setpagesize end} bind def % ISO standard
! /a4 {595 842 //statusdict begin .setpagesize end} bind def % ISO standard
! /a5 {421 595 //statusdict begin .setpagesize end} bind def % ISO standard
! /a6 {297 421 //statusdict begin .setpagesize end} bind def % ISO standard
! /a7 {210 297 //statusdict begin .setpagesize end} bind def % ISO standard
! /a8 {148 210 //statusdict begin .setpagesize end} bind def % ISO standard
! /a9 {105 148 //statusdict begin .setpagesize end} bind def % ISO standard
! /a10 {74 105 //statusdict begin .setpagesize end} bind def % ISO standard
! /b0 {2836 4008 //statusdict begin .setpagesize end} bind def % ISO standard
! /b1 {2004 2836 //statusdict begin .setpagesize end} bind def % ISO standard
! /b2 {1418 2004 //statusdict begin .setpagesize end} bind def % ISO standard
! /b3 {1002 1418 //statusdict begin .setpagesize end} bind def % ISO standard
! /b4 {709 1002 //statusdict begin .setpagesize end} bind def % ISO standard
! /b5 {501 709 //statusdict begin .setpagesize end} bind def % ISO standard
! /archE {2592 3456 //statusdict begin .setpagesize end} bind def % U.S. CAD std
! /archD {1728 2592 //statusdict begin .setpagesize end} bind def % U.S. CAD std
! /archC {1296 1728 //statusdict begin .setpagesize end} bind def % U.S. CAD std
! /archB {864 1296 //statusdict begin .setpagesize end} bind def % U.S. CAD std
! /archA {648 864 //statusdict begin .setpagesize end} bind def % U.S. CAD std
/flsa {612 936 //statusdict begin .setpagesize end} bind def % U.S. foolscap
/flse {612 936 //statusdict begin .setpagesize end} bind def % European foolscap
/halfletter {396 612 //statusdict begin .setpagesize end} bind def
***************
*** 51,57 ****
% Define the pagetype values for the known page formats.
% The values for all but letter and note are arbitrary.
/.pagetypenames
! { /letter /note /legal /a3 /a4 /a5 /a6 /b4
/flsa /flse /halfletter /11x17 /ledger
} cvlit readonly def
--- 68,76 ----
% Define the pagetype values for the known page formats.
% The values for all but letter and note are arbitrary.
/.pagetypenames
! { /letter /note /legal
! /a0 /a1 /a2 /a3 /a4 /a5 /a6 /a7 /a8 /a9 /a10
! /b0 /b1 /b2 /b3 /b4 /b5 /archE /archD /archC /archB /archA
/flsa /flse /halfletter /11x17 /ledger
} cvlit readonly def
***************
*** 176,182 ****
/exitserver { clear stop } bind def
% However, this interacts badly with our standard error handler,
% so we override it with the following less appropriate definition.
! /exitserver { clear cleardictstack } bind def
/setrealdevice { } bind def
end % serverdict
--- 195,201 ----
/exitserver { clear stop } bind def
% However, this interacts badly with our standard error handler,
% so we override it with the following less appropriate definition.
! /exitserver { 0 ne { clear cleardictstack } if } bind def
/setrealdevice { } bind def
end % serverdict
*** 1.1 1993/07/19 15:43:44
--- gschar.c 1993/07/08 16:50:00
***************
*** 547,553 ****
}
else
code = show_fast_move(cc->wxy, pgs);
! if ( code ) return code;
}
/* All done. */
return show_finish(penum);
--- 547,558 ----
}
else
code = show_fast_move(cc->wxy, pgs);
! if ( code )
! { /* Might be kshow, so store the state. */
! penum->current_char = chr;
! penum->current_glyph = glyph;
! return code;
! }
}
/* All done. */
return show_finish(penum);
*** 1.2 1993/06/29 02:22:52
--- gsdps1.c 1993/06/28 17:46:38
***************
*** 18,23 ****
--- 18,24 ----
/* gsdps1.c */
/* Display PostScript graphics additions for Ghostscript library */
+ #include "math_.h"
#include "gx.h"
#include "gserrors.h"
#include "gxfixed.h"
***************
*** 31,37 ****
int
gs_setbbox(gs_state *pgs, floatp llx, floatp lly, floatp urx, floatp ury)
{ gs_rect ubox, dbox;
! gs_fixed_rect bbox;
gx_path *ppath = pgs->path;
int code;
if ( llx > urx || lly > ury )
--- 32,38 ----
int
gs_setbbox(gs_state *pgs, floatp llx, floatp lly, floatp urx, floatp ury)
{ gs_rect ubox, dbox;
! gs_fixed_rect obox, bbox;
gx_path *ppath = pgs->path;
int code;
if ( llx > urx || lly > ury )
***************
*** 43,61 ****
ubox.q.y = ury;
if ( (code = gs_bbox_transform(&ubox, &ctm_only(pgs), &dbox)) < 0 )
return code;
! if ( gx_path_bbox(ppath, &bbox) >= 0 )
{ /* Take the union of the bboxes. */
! ppath->bbox.p.x = min(bbox.p.x, float2fixed(dbox.p.x));
! ppath->bbox.p.y = min(bbox.p.y, float2fixed(dbox.p.y));
! ppath->bbox.q.x = max(bbox.q.x, float2fixed(dbox.q.x));
! ppath->bbox.q.y = max(bbox.q.y, float2fixed(dbox.q.y));
}
else /* empty path */
{ /* Just set the bbox. */
! ppath->bbox.p.x = float2fixed(dbox.p.x);
! ppath->bbox.p.y = float2fixed(dbox.p.y);
! ppath->bbox.q.x = float2fixed(dbox.q.x);
! ppath->bbox.q.y = float2fixed(dbox.q.y);
ppath->bbox_set = 1;
}
return 0;
--- 44,67 ----
ubox.q.y = ury;
if ( (code = gs_bbox_transform(&ubox, &ctm_only(pgs), &dbox)) < 0 )
return code;
! /* Round the corners in opposite directions. */
! bbox.p.x = (fixed)floor(dbox.p.x * _fixed_scale);
! bbox.p.y = (fixed)floor(dbox.p.y * _fixed_scale);
! bbox.q.x = (fixed)ceil(dbox.q.x * _fixed_scale);
! bbox.q.y = (fixed)ceil(dbox.q.y * _fixed_scale);
! if ( gx_path_bbox(ppath, &obox) >= 0 )
{ /* Take the union of the bboxes. */
! ppath->bbox.p.x = min(obox.p.x, bbox.p.x);
! ppath->bbox.p.y = min(obox.p.y, bbox.p.y);
! ppath->bbox.q.x = max(obox.q.x, bbox.q.x);
! ppath->bbox.q.y = max(obox.q.y, bbox.q.y);
}
else /* empty path */
{ /* Just set the bbox. */
! ppath->bbox.p.x = bbox.p.x;
! ppath->bbox.p.y = bbox.p.y;
! ppath->bbox.q.x = bbox.q.x;
! ppath->bbox.q.y = bbox.q.y;
ppath->bbox_set = 1;
}
return 0;
*** /dev/null 1993/07/19 15:46:30
--- gsgraph.uue 1993/07/08 08:07:50
***************
*** 0 ****
--- 1,21 ----
+ begin 644 gsgraph.ico
+ M ! $ (" 0 #H @ %@ "@ @ 0 $ ! @ (
+ M " " @( @ ( @ " @
+ M@(" $! 0 /\ /\ #__P#_ _P#_ /__ #___\ S,S,S,S,S,S,
+ MS,S,S,S,S,S,S,S,S,S,S+N[S,S,S,S,O+S+S+S+N[S,S+S+N\S,S+R\R\R\
+ MO,R\R[N\O,S,S,R\O,O,O,N[O+S,O+N[O,S,O+S+S+S,S+R\S+R\S+S,S+R[
+ MO+O,R[O,R[N\R[O,S,S,S,S,S,S,S,S,S,S,S,S,O,S,S,S,S,S,S,S,S,S,
+ MS,S,S,S,S,S,S,S,S,S,S /__________\ /_______P\
+ M /_______P /_______P / _P /\/______
+ M\ ____ ___P_______P_____P _____P______________ /______
+ M_______P /\ /_P /__________\ /\ #P #__________P
+ M#_______\/ /_P_P#_\ #_#_\ __
+ M _____P /____\ #_#P_P
+ M #___ __\ #__P
+ M /__ /\
+ M
+ M ^ __P ?_^ ?OS "!X . ! ( & PA@ >=\
+ M /__@ '__\ !___@ ?__^ '___@#___X!____ ____@?___P/___^'____S_
+ !____
+
+ end
*** /dev/null 1993/07/19 15:46:30
--- gstext.uue 1993/07/08 08:07:50
***************
*** 0 ****
--- 1,21 ----
+ begin 644 gstext.ico
+ M ! $ (" 0 #H @ %@ "@ @ 0 $ ! @ (
+ M " " @( @ ( @ " @
+ M@(" $! 0 /\ /\ #__P#_ _P#_ /__ #___\ $1$1$1$1$1$1
+ M$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1N[L1&[L1&[L1$1L1$1$1$;$1L;
+ M$1L;$1L1$1$1$1$1&Q$;&Q$;&Q$;$1&Q$1$1$1L1&QL1&QL1&Q$1L1$1$1$;
+ MN[$1N[$1N[$1$;$1$1$1&Q$1$1$1$1$1$1&Q$1$1$1L1$1$1$1$1$1$1L1$1
+ M$1$1$1$1$1$1$1$1$1$1$0 /__________\ /_______P\
+ M /_______P /_______P / _P /\/______
+ M\ ____ ___P_______P_____P _____P______________ /______
+ M_______P /\ /_P /__________\ /\ #P #__________P
+ M#_______\/ /_P_P#_\ #_#_\ __
+ M _____P /____\ #_#P_P
+ M #___ __\ #__P
+ M /__ /\
+ M
+ M ^ __P ?_^ ?OS "!X . ! ( & PA@ >=\
+ M /__@ '__\ !___@ ?__^ '___@#___X!____ ____@?___P/___^'____S_
+ !____
+
+ end
*** 1.1 1993/07/19 15:43:44
--- gxdither.c 1993/07/08 17:00:44
***************
*** 234,250 ****
#define half (frac_1/2)
if ( rem_r > half )
rem_r = frac_1 - rem_r,
! adjust_r = -1, r++, lum_invert += lum_red_weight;
else
adjust_r = 1;
if ( rem_g > half )
rem_g = frac_1 - rem_g,
! adjust_g = -1, g++, lum_invert += lum_green_weight;
else
adjust_g = 1;
if ( rem_b > half )
rem_b = frac_1 - rem_b,
! adjust_b = -1, b++, lum_invert += lum_blue_weight;
else
adjust_b = 1;
pdevc->color1 = (*map_rgb_color)(dev, fractional_color(r, max_value),
--- 234,250 ----
#define half (frac_1/2)
if ( rem_r > half )
rem_r = frac_1 - rem_r,
! adjust_r = -1, r++, lum_invert += lum_red_weight * 2;
else
adjust_r = 1;
if ( rem_g > half )
rem_g = frac_1 - rem_g,
! adjust_g = -1, g++, lum_invert += lum_green_weight * 2;
else
adjust_g = 1;
if ( rem_b > half )
rem_b = frac_1 - rem_b,
! adjust_b = -1, b++, lum_invert += lum_blue_weight * 2;
else
adjust_b = 1;
pdevc->color1 = (*map_rgb_color)(dev, fractional_color(r, max_value),
***************
*** 311,325 ****
color2 = (*map_rgb_color)(dev, fractional_color(r, max_value),
fractional_color(g, max_value),
fractional_color(b, max_value));
- /****** THIS IS A BAD IDEA ******/
- #if 0
if ( lum_w[diagc] < lum_invert )
{ pdevc->color2 = pdevc->color1;
pdevc->color1 = color2;
pdevc->halftone_level = level = hsize - level;
}
else
- #endif
pdevc->color2 = color2;
gx_color_load(pdevc, pgs);
}
--- 311,322 ----
*** 1.3 1993/06/29 02:58:13
--- unix-ansi.mak 1993/07/19 15:50:09
***************
*** 1077,1083 ****
# * att3b1 AT&T 3b1/Unixpc monochrome display [3b1 only]
# * sonyfb Sony Microsystems monochrome display [Sony only]
# * sunview SunView window system [SunOS only]
! # x11 X Windows version 11, release >=3 [Unix and VMS only]
# Printers:
# * appledmp Apple Dot Matrix Printer (should also work with Imagewriter)
# bj10e Canon BubbleJet BJ10e
--- 1077,1083 ----
# * att3b1 AT&T 3b1/Unixpc monochrome display [3b1 only]
# * sonyfb Sony Microsystems monochrome display [Sony only]
# * sunview SunView window system [SunOS only]
! # x11 X Windows version 11, release >=4 [Unix and VMS only]
# Printers:
# * appledmp Apple Dot Matrix Printer (should also work with Imagewriter)
# bj10e Canon BubbleJet BJ10e
***************
*** 1109,1114 ****
--- 1109,1115 ----
# * lj250 DEC LJ250 Companion color printer
# + ljet2p H-P LaserJet IId/IIp/III* with TIFF compression
# + ljet3 H-P LaserJet III* with Delta Row compression
+ # + ljet4 H-P LaserJet 4 (defaults to 600 dpi)
# + ljetplus H-P LaserJet Plus
# * m8510 C.Itoh M8510 printer
# * necp6 NEC P6/P6+/P60 printers at 360 x 360 DPI resolution
***************
*** 1436,1441 ****
--- 1437,1447 ----
ljet3.dev: $(HPMONO)
$(SHP)gssetdev ljet3 $(HPMONO)
+ ### Selecting ljet4 also provides Delta Row compression on LaserJet IV series.
+
+ ljet4.dev: $(HPMONO)
+ $(SHP)gssetdev ljet4 $(HPMONO)
+
###- The H-P DeskJet 500C/550C and PaintJet family color printer devices -###
### Note: there are two different 500C drivers, both contributed by users.###
### If you have questions about the djet500c driver, ###
***************
*** 1517,1527 ****
### Note: this driver was contributed by a user: if you have questions, ###
### please contact Richard Brown (rab@tauon.ph.unimelb.edu.au). ###
! escp2_=gdevescp2.$(OBJ) gdevprn.$(OBJ)
escp2.dev: $(escp2_)
$(SHP)gssetdev escp2 $(escp2_)
! gdevescp2.$(OBJ): gdevescp2.c $(PDEVH)
### ------------ The H-P PaintJet color printer device ----------------- ###
### Note: this driver also supports the DEC LJ250 color printer, which ###
--- 1523,1533 ----
### Note: this driver was contributed by a user: if you have questions, ###
### please contact Richard Brown (rab@tauon.ph.unimelb.edu.au). ###
! escp2_=gdevescp.$(OBJ) gdevprn.$(OBJ)
escp2.dev: $(escp2_)
$(SHP)gssetdev escp2 $(escp2_)
! gdevescp.$(OBJ): gdevescp.c $(PDEVH)
### ------------ The H-P PaintJet color printer device ----------------- ###
### Note: this driver also supports the DEC LJ250 color printer, which ###
***************
*** 1716,1729 ****
# Aladdin Enterprises does not support Ghostview. For more information
# about Ghostview, please contact Tim Theisen (ghostview@cs.wisc.edu).
- # NOTE: Xmu and Xext are here to keep Sun's dynamic linker happy. No
- # routines are used from either of these two libraries. If you
- # do not have libXmu.a or libXext.a, simply remove these two lines
- # from the Makefile.
x11_=gdevx.$(OBJ) gdevxini.$(OBJ) gdevxxf.$(OBJ) gdevemap.$(OBJ)
x11.dev: $(x11_)
$(SHP)gssetdev x11 $(x11_)
! $(SHP)gsaddmod x11 -lib Xt Xmu X11 Xext
# See the main makefile for the definition of XINCLUDE.
GDEVX=$(GDEV) x_.h gdevx.h $(MAKEFILE)
--- 1722,1731 ----
# Aladdin Enterprises does not support Ghostview. For more information
# about Ghostview, please contact Tim Theisen (ghostview@cs.wisc.edu).
x11_=gdevx.$(OBJ) gdevxini.$(OBJ) gdevxxf.$(OBJ) gdevemap.$(OBJ)
x11.dev: $(x11_)
$(SHP)gssetdev x11 $(x11_)
! $(SHP)gsaddmod x11 -lib Xt X11 Xext
# See the main makefile for the definition of XINCLUDE.
GDEVX=$(GDEV) x_.h gdevx.h $(MAKEFILE)
*** 1.3 1993/06/29 02:58:13
--- unix-cc.mak 1993/07/19 15:50:10
***************
*** 1072,1078 ****
# * att3b1 AT&T 3b1/Unixpc monochrome display [3b1 only]
# * sonyfb Sony Microsystems monochrome display [Sony only]
# * sunview SunView window system [SunOS only]
! # x11 X Windows version 11, release >=3 [Unix and VMS only]
# Printers:
# * appledmp Apple Dot Matrix Printer (should also work with Imagewriter)
# bj10e Canon BubbleJet BJ10e
--- 1072,1078 ----
# * att3b1 AT&T 3b1/Unixpc monochrome display [3b1 only]
# * sonyfb Sony Microsystems monochrome display [Sony only]
# * sunview SunView window system [SunOS only]
! # x11 X Windows version 11, release >=4 [Unix and VMS only]
# Printers:
# * appledmp Apple Dot Matrix Printer (should also work with Imagewriter)
# bj10e Canon BubbleJet BJ10e
***************
*** 1104,1109 ****
--- 1104,1110 ----
# * lj250 DEC LJ250 Companion color printer
# + ljet2p H-P LaserJet IId/IIp/III* with TIFF compression
# + ljet3 H-P LaserJet III* with Delta Row compression
+ # + ljet4 H-P LaserJet 4 (defaults to 600 dpi)
# + ljetplus H-P LaserJet Plus
# * m8510 C.Itoh M8510 printer
# * necp6 NEC P6/P6+/P60 printers at 360 x 360 DPI resolution
***************
*** 1431,1436 ****
--- 1432,1442 ----
ljet3.dev: $(HPMONO)
$(SHP)gssetdev ljet3 $(HPMONO)
+ ### Selecting ljet4 also provides Delta Row compression on LaserJet IV series.
+
+ ljet4.dev: $(HPMONO)
+ $(SHP)gssetdev ljet4 $(HPMONO)
+
###- The H-P DeskJet 500C/550C and PaintJet family color printer devices -###
### Note: there are two different 500C drivers, both contributed by users.###
### If you have questions about the djet500c driver, ###
***************
*** 1512,1522 ****
### Note: this driver was contributed by a user: if you have questions, ###
### please contact Richard Brown (rab@tauon.ph.unimelb.edu.au). ###
! escp2_=gdevescp2.$(OBJ) gdevprn.$(OBJ)
escp2.dev: $(escp2_)
$(SHP)gssetdev escp2 $(escp2_)
! gdevescp2.$(OBJ): gdevescp2.c $(PDEVH)
### ------------ The H-P PaintJet color printer device ----------------- ###
### Note: this driver also supports the DEC LJ250 color printer, which ###
--- 1518,1528 ----
### Note: this driver was contributed by a user: if you have questions, ###
### please contact Richard Brown (rab@tauon.ph.unimelb.edu.au). ###
! escp2_=gdevescp.$(OBJ) gdevprn.$(OBJ)
escp2.dev: $(escp2_)
$(SHP)gssetdev escp2 $(escp2_)
! gdevescp.$(OBJ): gdevescp.c $(PDEVH)
### ------------ The H-P PaintJet color printer device ----------------- ###
### Note: this driver also supports the DEC LJ250 color printer, which ###
***************
*** 1711,1724 ****
# Aladdin Enterprises does not support Ghostview. For more information
# about Ghostview, please contact Tim Theisen (ghostview@cs.wisc.edu).
- # NOTE: Xmu and Xext are here to keep Sun's dynamic linker happy. No
- # routines are used from either of these two libraries. If you
- # do not have libXmu.a or libXext.a, simply remove these two lines
- # from the Makefile.
x11_=gdevx.$(OBJ) gdevxini.$(OBJ) gdevxxf.$(OBJ) gdevemap.$(OBJ)
x11.dev: $(x11_)
$(SHP)gssetdev x11 $(x11_)
! $(SHP)gsaddmod x11 -lib Xt Xmu X11 Xext
# See the main makefile for the definition of XINCLUDE.
GDEVX=$(GDEV) x_.h gdevx.h $(MAKEFILE)
--- 1717,1726 ----
# Aladdin Enterprises does not support Ghostview. For more information
# about Ghostview, please contact Tim Theisen (ghostview@cs.wisc.edu).
x11_=gdevx.$(OBJ) gdevxini.$(OBJ) gdevxxf.$(OBJ) gdevemap.$(OBJ)
x11.dev: $(x11_)
$(SHP)gssetdev x11 $(x11_)
! $(SHP)gsaddmod x11 -lib Xt X11 Xext
# See the main makefile for the definition of XINCLUDE.
GDEVX=$(GDEV) x_.h gdevx.h $(MAKEFILE)
*** 1.3 1993/06/29 02:58:13
--- unix-gcc.mak 1993/07/19 15:50:12
***************
*** 1079,1085 ****
# * att3b1 AT&T 3b1/Unixpc monochrome display [3b1 only]
# * sonyfb Sony Microsystems monochrome display [Sony only]
# * sunview SunView window system [SunOS only]
! # x11 X Windows version 11, release >=3 [Unix and VMS only]
# Printers:
# * appledmp Apple Dot Matrix Printer (should also work with Imagewriter)
# bj10e Canon BubbleJet BJ10e
--- 1079,1085 ----
# * att3b1 AT&T 3b1/Unixpc monochrome display [3b1 only]
# * sonyfb Sony Microsystems monochrome display [Sony only]
# * sunview SunView window system [SunOS only]
! # x11 X Windows version 11, release >=4 [Unix and VMS only]
# Printers:
# * appledmp Apple Dot Matrix Printer (should also work with Imagewriter)
# bj10e Canon BubbleJet BJ10e
***************
*** 1111,1116 ****
--- 1111,1117 ----
# * lj250 DEC LJ250 Companion color printer
# + ljet2p H-P LaserJet IId/IIp/III* with TIFF compression
# + ljet3 H-P LaserJet III* with Delta Row compression
+ # + ljet4 H-P LaserJet 4 (defaults to 600 dpi)
# + ljetplus H-P LaserJet Plus
# * m8510 C.Itoh M8510 printer
# * necp6 NEC P6/P6+/P60 printers at 360 x 360 DPI resolution
***************
*** 1438,1443 ****
--- 1439,1449 ----
ljet3.dev: $(HPMONO)
$(SHP)gssetdev ljet3 $(HPMONO)
+ ### Selecting ljet4 also provides Delta Row compression on LaserJet IV series.
+
+ ljet4.dev: $(HPMONO)
+ $(SHP)gssetdev ljet4 $(HPMONO)
+
###- The H-P DeskJet 500C/550C and PaintJet family color printer devices -###
### Note: there are two different 500C drivers, both contributed by users.###
### If you have questions about the djet500c driver, ###
***************
*** 1519,1529 ****
### Note: this driver was contributed by a user: if you have questions, ###
### please contact Richard Brown (rab@tauon.ph.unimelb.edu.au). ###
! escp2_=gdevescp2.$(OBJ) gdevprn.$(OBJ)
escp2.dev: $(escp2_)
$(SHP)gssetdev escp2 $(escp2_)
! gdevescp2.$(OBJ): gdevescp2.c $(PDEVH)
### ------------ The H-P PaintJet color printer device ----------------- ###
### Note: this driver also supports the DEC LJ250 color printer, which ###
--- 1525,1535 ----
### Note: this driver was contributed by a user: if you have questions, ###
### please contact Richard Brown (rab@tauon.ph.unimelb.edu.au). ###
! escp2_=gdevescp.$(OBJ) gdevprn.$(OBJ)
escp2.dev: $(escp2_)
$(SHP)gssetdev escp2 $(escp2_)
! gdevescp.$(OBJ): gdevescp.c $(PDEVH)
### ------------ The H-P PaintJet color printer device ----------------- ###
### Note: this driver also supports the DEC LJ250 color printer, which ###
***************
*** 1718,1731 ****
# Aladdin Enterprises does not support Ghostview. For more information
# about Ghostview, please contact Tim Theisen (ghostview@cs.wisc.edu).
- # NOTE: Xmu and Xext are here to keep Sun's dynamic linker happy. No
- # routines are used from either of these two libraries. If you
- # do not have libXmu.a or libXext.a, simply remove these two lines
- # from the Makefile.
x11_=gdevx.$(OBJ) gdevxini.$(OBJ) gdevxxf.$(OBJ) gdevemap.$(OBJ)
x11.dev: $(x11_)
$(SHP)gssetdev x11 $(x11_)
! $(SHP)gsaddmod x11 -lib Xt Xmu X11 Xext
# See the main makefile for the definition of XINCLUDE.
GDEVX=$(GDEV) x_.h gdevx.h $(MAKEFILE)
--- 1724,1733 ----
# Aladdin Enterprises does not support Ghostview. For more information
# about Ghostview, please contact Tim Theisen (ghostview@cs.wisc.edu).
x11_=gdevx.$(OBJ) gdevxini.$(OBJ) gdevxxf.$(OBJ) gdevemap.$(OBJ)
x11.dev: $(x11_)
$(SHP)gssetdev x11 $(x11_)
! $(SHP)gsaddmod x11 -lib Xt X11 Xext
# See the main makefile for the definition of XINCLUDE.
GDEVX=$(GDEV) x_.h gdevx.h $(MAKEFILE)
*** 1.1 1993/07/19 15:43:44
--- use.doc 1993/07/18 15:52:50
***************
*** 1,4 ****
! Copyright (C) 1989, 1992 Aladdin Enterprises. All rights reserved.
This file is part of Ghostscript.
--- 1,4 ----
! Copyright (C) 1989, 1992, 1993 Aladdin Enterprises. All rights reserved.
This file is part of Ghostscript.
***************
*** 286,291 ****
--- 286,298 ----
single directory, or a list of directories separated by a character
appropriate for the operating system (':' on Unix systems, ';' on VMS
systems, ';' on MS-DOS systems).
+
+ When Ghostscript starts up, it also looks at the GS_FONTPATH environment
+ variable, which is also a list of directories. It goes to those
+ directories and looks for all files that appear to contain PostScript
+ fonts; it then effectively adds all those files and fonts to its internal
+ copy of the Fontmap (the catalog of fonts and the files that contain
+ them).
Temporary files
---------------
*** 1.1 1993/07/19 15:43:44
--- vms-cc.mak 1993/07/08 16:55:20
***************
*** 151,157 ****
GXSTROKE
IALLOC
IBNUM
- IBSCAN
ICCFONT
IDEBUG
IDICT
--- 151,156 ----
***************
*** 161,166 ****
--- 160,166 ----
INTERP
ISAVE
ISCAN
+ ISCAN2
IUTIL
SBITS
SCFD
***************
*** 263,272 ****
$ !
$ CC'CDEF/NOLIST/OBJECT=GDEVX.OBJ GDEVX.C
$ !
$ CC'CDEF/NOLIST/OBJECT=GSMAIN.OBJ GSMAIN.C
$ !
$ CC'CDEF/NOLIST/OBJECT=GS.OBJ GS.C
! $ LINK'LDEF/NOMAP/EXE=GS.EXE GS,GSMAIN,GDEVX,GDEVXINI,GCONFIG,-
GS/LIB/INCLUDE=(GDEVMEM1,GDEVMEM2,GDEVMEM3,GXCLIST,GXCLREAD,-
ZARITH,ZARRAY,ZBSEQ,ZCHAR,ZCOLOR,ZCOLOR2,ZCONTROL,ZDEVICE,ZDPS1,-
ZDICT,ZFILE,ZFILEDEV,ZFILEIO,ZFILTER,ZFILTER2,ZFONT,ZFONT0,ZFONT1,ZFONT2,-
--- 263,274 ----
$ !
$ CC'CDEF/NOLIST/OBJECT=GDEVX.OBJ GDEVX.C
$ !
+ $ CC'CDEF/NOLIST/OBJECT=GDEVXXF.OBJ GDEVXXF.C
+ $ !
$ CC'CDEF/NOLIST/OBJECT=GSMAIN.OBJ GSMAIN.C
$ !
$ CC'CDEF/NOLIST/OBJECT=GS.OBJ GS.C
! $ LINK'LDEF/NOMAP/EXE=GS.EXE GS,GSMAIN,GDEVX,GDEVXINI,GDEVXXF,GCONFIG,-
GS/LIB/INCLUDE=(GDEVMEM1,GDEVMEM2,GDEVMEM3,GXCLIST,GXCLREAD,-
ZARITH,ZARRAY,ZBSEQ,ZCHAR,ZCOLOR,ZCOLOR2,ZCONTROL,ZDEVICE,ZDPS1,-
ZDICT,ZFILE,ZFILEDEV,ZFILEIO,ZFILTER,ZFILTER2,ZFONT,ZFONT0,ZFONT1,ZFONT2,-
***************
*** 275,281 ****
ZPROPS,ZRELBIT,ZSTACK,ZSTRING,ZTYPE,ZUPATH,ZVMEM),SYS$INPUT/OPT
SYS$SHARE:DECW$DWTLIBSHR/SHARE,SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
$ !
! $ DELETE GDEVX.OBJ.*,GDEVXINI.OBJ.*,GSMAIN.OBJ.*,GS.OBJ.*,-
GCONFIG.OBJ.*
$ !
$ DEASSIGN X11
--- 277,283 ----
ZPROPS,ZRELBIT,ZSTACK,ZSTRING,ZTYPE,ZUPATH,ZVMEM),SYS$INPUT/OPT
SYS$SHARE:DECW$DWTLIBSHR/SHARE,SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
$ !
! $ DELETE GDEVX.OBJ.*,GDEVXINI.OBJ.*,GDEVXXF.OBJ.*,GSMAIN.OBJ.*,GS.OBJ.*,-
GCONFIG.OBJ.*
$ !
$ DEASSIGN X11
*** 1.1 1993/07/19 15:43:44
--- vms-gcc.mak 1993/07/08 16:55:32
***************
*** 157,163 ****
GXSTROKE
IALLOC
IBNUM
- IBSCAN
ICCFONT
IDEBUG
IDICT
--- 157,162 ----
***************
*** 167,172 ****
--- 166,172 ----
INTERP
ISAVE
ISCAN
+ ISCAN2
IUTIL
SBITS
SCFD
***************
*** 263,274 ****
$ GCC'CDEF/NOLIST/DEFINE=('LIBDEF','INIDEF')/OBJECT=GCONFIG.OBJ GCONFIG.C
$ GCC'CDEF/NOLIST/INCLUDE_DIRECTORY='F$TRNLNM("SYS$COMMON") -
/OBJECT=GDEVXINI.OBJ GDEVXINI.C
! $ GCC'CDEF/NOLIST/INCLUDE_DIRECTORY='F$TRNLNM("SYS$COMMON")/OBJECT=GDEVX.OBJ -
! GDEVX.C
$ GCC'CDEF/NOLIST/OBJECT=GSMAIN.OBJ GSMAIN.C
$ !
$ GCC'CDEF/NOLIST/OBJECT=GS.OBJ GS.C
! $ LINK'LDEF/NOMAP/EXE=GS.EXE GS,GSMAIN,GDEVX,GDEVXINI,GCONFIG,-
GS/LIB/INCLUDE=(GDEVMEM1,GDEVMEM2,GDEVMEM3,GXCLIST,GXCLREAD,-
ZARITH,ZARRAY,ZBSEQ,ZCHAR,ZCOLOR,ZCOLOR2,ZCONTROL,ZDEVICE,ZDPS1,-
ZDICT,ZFILE,ZFILEDEV,ZFILEIO,ZFILTER,ZFILTER2,ZFONT,ZFONT0,ZFONT1,ZFONT2,-
--- 263,276 ----
$ GCC'CDEF/NOLIST/DEFINE=('LIBDEF','INIDEF')/OBJECT=GCONFIG.OBJ GCONFIG.C
$ GCC'CDEF/NOLIST/INCLUDE_DIRECTORY='F$TRNLNM("SYS$COMMON") -
/OBJECT=GDEVXINI.OBJ GDEVXINI.C
! $ GCC'CDEF/NOLIST/INCLUDE_DIRECTORY='F$TRNLNM("SYS$COMMON") -
! /OBJECT=GDEVX.OBJ GDEVX.C
! $ GCC'CDEF/NOLIST/INCLUDE_DIRECTORY='F$TRNLNM("SYS$COMMON") -
! /OBJECT=GDEVXXF.OBJ GDEVXXF.C
$ GCC'CDEF/NOLIST/OBJECT=GSMAIN.OBJ GSMAIN.C
$ !
$ GCC'CDEF/NOLIST/OBJECT=GS.OBJ GS.C
! $ LINK'LDEF/NOMAP/EXE=GS.EXE GS,GSMAIN,GDEVX,GDEVXINI,GDEVXXF,GCONFIG,-
GS/LIB/INCLUDE=(GDEVMEM1,GDEVMEM2,GDEVMEM3,GXCLIST,GXCLREAD,-
ZARITH,ZARRAY,ZBSEQ,ZCHAR,ZCOLOR,ZCOLOR2,ZCONTROL,ZDEVICE,ZDPS1,-
ZDICT,ZFILE,ZFILEDEV,ZFILEIO,ZFILTER,ZFILTER2,ZFONT,ZFONT0,ZFONT1,ZFONT2,-
***************
*** 277,283 ****
ZPROPS,ZRELBIT,ZSTACK,ZSTRING,ZTYPE,ZUPATH,ZVMEM),SYS$INPUT/OPT
SYS$SHARE:DECW$DWTLIBSHR/SHARE,SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
$ !
! $ DELETE GDEVX.OBJ.*,GDEVXINI.OBJ.*,GSMAIN.OBJ.*,GS.OBJ.*,-
GCONFIG.OBJ.*
$ !
$ DONE:
--- 279,285 ----
ZPROPS,ZRELBIT,ZSTACK,ZSTRING,ZTYPE,ZUPATH,ZVMEM),SYS$INPUT/OPT
SYS$SHARE:DECW$DWTLIBSHR/SHARE,SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
$ !
! $ DELETE GDEVX.OBJ.*,GDEVXINI.OBJ.*,GDEVXXF.OBJ.*,GSMAIN.OBJ.*,GS.OBJ.*,-
GCONFIG.OBJ.*
$ !
$ DONE:
*** 1.1 1993/07/19 15:43:44
--- zht2.c 1993/07/08 16:58:14
***************
*** 21,26 ****
--- 21,27 ----
#include "ghost.h"
#include "errors.h"
#include "oper.h"
+ #include "alloc.h"
#include "dict.h"
#include "dparam.h"
#include "iname.h" /* for name_eq */