summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Stiles <henry.stiles@artifex.com>1998-09-18 00:33:16 +0000
committerHenry Stiles <henry.stiles@artifex.com>1998-09-18 00:33:16 +0000
commit95a1c583303696ed0a66550d729bf492e4fa2dcf (patch)
treec574078a2ba5296629ff9780e731c599d948e4c8
parent839e88487835ebac524cec5cac986ec66a8f6a1e (diff)
downloadghostpdl-95a1c583303696ed0a66550d729bf492e4fa2dcf.tar.gz
gs550 release
git-svn-id: http://svn.ghostscript.com/ghostpcl/trunk/ghostpcl@433 06663e23-700e-0410-b217-a244a6096597
-rw-r--r--gs/doc/Bug-form.htm5
-rw-r--r--gs/doc/C-style.htm2
-rw-r--r--gs/doc/Commprod.htm2
-rw-r--r--gs/doc/Copying.htm2
-rw-r--r--gs/doc/Current.htm31
-rw-r--r--gs/doc/Devices.htm2
-rw-r--r--gs/doc/Dll.htm4
-rw-r--r--gs/doc/Drivers.htm2
-rw-r--r--gs/doc/Gs-vms.hlp4
-rw-r--r--gs/doc/Helpers.htm2
-rw-r--r--gs/doc/History1.htm2
-rw-r--r--gs/doc/History2.htm2
-rw-r--r--gs/doc/History3.htm2
-rw-r--r--gs/doc/History4.htm2
-rw-r--r--gs/doc/Htmstyle.htm2
-rw-r--r--gs/doc/Install.htm10
-rw-r--r--gs/doc/Language.htm2
-rw-r--r--gs/doc/Lib.htm2
-rw-r--r--gs/doc/Make.htm73
-rw-r--r--gs/doc/New-user.htm48
-rw-r--r--gs/doc/News.htm148
-rw-r--r--gs/doc/Ps2pdf.htm2
-rw-r--r--gs/doc/Psfiles.htm2
-rw-r--r--gs/doc/Public.htm4
-rw-r--r--gs/doc/Readme.htm12
-rw-r--r--gs/doc/Source.htm2
-rw-r--r--gs/doc/Unix-lpr.htm2
-rw-r--r--gs/doc/Use.htm2
-rw-r--r--gs/doc/fonts.htm2
-rw-r--r--gs/doc/ps2epsi.txt4
-rw-r--r--gs/doc/xfonts.htm2
-rw-r--r--gs/lib/gs_init.ps2
-rw-r--r--gs/lib/gs_pdfwr.ps8
-rw-r--r--gs/lib/gs_setpd.ps16
-rw-r--r--gs/lib/pdf_main.ps83
-rw-r--r--gs/man/gs.14
-rw-r--r--gs/man/pdf2dsc.14
-rw-r--r--gs/man/pdf2ps.14
-rw-r--r--gs/man/ps2ascii.14
-rw-r--r--gs/man/ps2epsi.15
-rw-r--r--gs/man/ps2pdf.14
-rw-r--r--gs/man/ps2ps.14
-rw-r--r--gs/src/bcwin32.mak40
-rw-r--r--gs/src/cfonts.mak4
-rw-r--r--gs/src/contrib.mak14
-rw-r--r--gs/src/devs.mak2
-rwxr-xr-xgs/src/dvx-gcc.mak8
-rw-r--r--gs/src/dwmainc.cpp2
-rw-r--r--gs/src/echogs.c9
-rw-r--r--gs/src/files.h4
-rw-r--r--gs/src/gdevcmap.c102
-rw-r--r--gs/src/gdevjpeg.c4
-rw-r--r--gs/src/gdevprn.c7
-rw-r--r--gs/src/gdevstc.c2
-rw-r--r--gs/src/gdevxalt.c34
-rw-r--r--gs/src/gp_nsync.c6
-rw-r--r--gs/src/gp_posem.c2
-rw-r--r--gs/src/gp_semon.c2
-rw-r--r--gs/src/gp_win32.c6
-rw-r--r--gs/src/gpsync.h4
-rw-r--r--gs/src/gs-fonts.rps33
-rw-r--r--gs/src/gs.mak2
-rw-r--r--gs/src/gs.rps96
-rw-r--r--gs/src/gsalloc.c3
-rw-r--r--gs/src/gscdevn.c7
-rw-r--r--gs/src/gscie.h23
-rw-r--r--gs/src/gscolor2.c5
-rw-r--r--gs/src/gscpixel.c4
-rw-r--r--gs/src/gscscie.c24
-rw-r--r--gs/src/gscsepr.c7
-rw-r--r--gs/src/gsdevice.c2
-rw-r--r--gs/src/gsfont.c3
-rw-r--r--gs/src/gsgraph.icx167
-rw-r--r--gs/src/gsiodev.c8
-rw-r--r--gs/src/gsos2.icx442
-rw-r--r--gs/src/gspcolor.c1
-rw-r--r--gs/src/gspmdrv.icx442
-rw-r--r--gs/src/gsstruct.h13
-rw-r--r--gs/src/gstext.icx167
-rw-r--r--gs/src/gxbitmap.h7
-rw-r--r--gs/src/gxclip2.h4
-rw-r--r--gs/src/gxclipm.c2
-rw-r--r--gs/src/gxclipm.h4
-rw-r--r--gs/src/gxcpath.c3
-rw-r--r--gs/src/gxcspace.h14
-rw-r--r--gs/src/gxdevcli.h2
-rw-r--r--gs/src/gxdevice.h2
-rw-r--r--gs/src/gximono.c205
-rw-r--r--gs/src/gxmclip.c65
-rw-r--r--gs/src/gxmclip.h11
-rw-r--r--gs/src/igcref.c3
-rw-r--r--gs/src/int.mak4
-rw-r--r--gs/src/jpeg.mak2
-rw-r--r--gs/src/lib.mak2
-rw-r--r--gs/src/libpng.mak2
-rw-r--r--gs/src/msvc32.mak120
-rw-r--r--gs/src/msvccmd.mak10
-rw-r--r--gs/src/msvclib.mak45
-rw-r--r--gs/src/msvctail.mak26
-rw-r--r--gs/src/openvms.mak2
-rw-r--r--gs/src/os2.mak10
-rw-r--r--gs/src/rpm-conf.dif101
-rwxr-xr-xgs/src/unix-cc.mak8
-rw-r--r--gs/src/unix-end.mak14
-rwxr-xr-xgs/src/unix-gcc.mak10
-rwxr-xr-xgs/src/unixansi.mak8
-rw-r--r--gs/src/unixinst.mak14
-rw-r--r--gs/src/version.mak6
-rw-r--r--gs/src/watc.mak4
-rw-r--r--gs/src/watcw32.mak16
-rw-r--r--gs/src/wccommon.mak2
-rw-r--r--gs/src/winint.mak2
-rw-r--r--gs/src/winlib.mak30
-rw-r--r--gs/src/zcrd.c2
-rw-r--r--gs/src/zfdcte.c2
-rw-r--r--gs/src/zfile.c14
-rw-r--r--gs/src/zlib.mak2
-rw-r--r--gs/src/ztrap.c2
118 files changed, 1969 insertions, 1035 deletions
diff --git a/gs/doc/Bug-form.htm b/gs/doc/Bug-form.htm
index 83e4dd08e..0557f5d9d 100644
--- a/gs/doc/Bug-form.htm
+++ b/gs/doc/Bug-form.htm
@@ -26,7 +26,7 @@ Ghostscript bug report form
Before completing this form, first check the "known bugs" notice at
<blockquote>
-<a href="http://www.cs.wisc.edu/~ghost/aladdin/post510/post510.html">http://www.cs.wisc.edu/~ghost/</a>post###/post###.html
+<a href="http://www.cs.wisc.edu/~ghost/aladdin/relnotes/">http://www.cs.wisc.edu/~ghost/aladdin/relnotes/</a>gs###/index.html
</blockquote>
<p>
@@ -124,8 +124,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.39,
-9 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/C-style.htm b/gs/doc/C-style.htm
index 576133aa7..01f916f2d 100644
--- a/gs/doc/C-style.htm
+++ b/gs/doc/C-style.htm
@@ -857,7 +857,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Commprod.htm b/gs/doc/Commprod.htm
index d634b024c..c8a21e84f 100644
--- a/gs/doc/Commprod.htm
+++ b/gs/doc/Commprod.htm
@@ -306,7 +306,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Copying.htm b/gs/doc/Copying.htm
index 2c97e5e6d..424ec9f9c 100644
--- a/gs/doc/Copying.htm
+++ b/gs/doc/Copying.htm
@@ -55,7 +55,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Current.htm b/gs/doc/Current.htm
index 6cb2f0611..4a00d9327 100644
--- a/gs/doc/Current.htm
+++ b/gs/doc/Current.htm
@@ -12,7 +12,7 @@
<p><table width="100%" border="0">
<tr><th align="center" bgcolor="#CCCC00"><font size=6>
-Problems and new features in Ghostscript 5.40
+Problems and new features in Ghostscript 5.50
</font>
</table>
@@ -111,8 +111,17 @@ necessary. Users should now edit the <b><tt>unix*.mak</tt></b> makefiles.
<h1><a name="Known_problems"></a>Known problems</h1>
<p>
-(This is not a complete list of known problems: see <a href="News.htm">the
-news</a> for details.)
+On MS Windows, trying to execute <b><tt>setfileposition</tt></b> or
+<b><tt>bytesavailable</tt></b> on the standard input file crashes
+Ghostscript.
+
+<p>
+On 16-bit-deep X Windows systems, the <b><tt>x11cmyk</tt></b> device doesn't
+work.
+
+<p>
+(This is not a complete list of known problems: see the <a href="News.htm">
+release news</a> for details.)
<h2><a name="Usage"></a>Usage</h2>
@@ -127,7 +136,7 @@ restore the display mode.
<p>
Some floating point exceptions terminate the interpreter, rather than
-producing a limitcheck error.
+producing a <b><tt>limitcheck</tt></b> error.
<p>
The <b><tt>DCTEncode</tt></b> filter disregards the <b><tt>Blend</tt></b>
@@ -146,10 +155,12 @@ The size of the execution stack cannot be changed dynamically. (However,
the sizes of the operand and dictionary stacks can be changed.)
<p>
-Separation color spaces are implemented, but devices that actually produce
-color separations are not supported: Separation color spaces always use
-the alternate space. The special color separations All and None,
-and the primary separations (Red, Green, etc.), are not supported.
+<b><tt>Separation</tt></b> color spaces are implemented, but devices that
+actually produce color separations are not supported:
+<b><tt>Separation</tt></b> color spaces always use the alternate space. The
+special color separations <b><tt>All</tt></b> and <b><tt>None</tt></b>, and
+the primary separations (<b><tt>Red</tt></b>, <b><tt>Green</tt></b>, etc.),
+are not supported.
<p>
<b><tt>execform</tt></b> and <b><tt>ucache</tt></b> are implemented, but
@@ -168,7 +179,7 @@ rotation, skewing, or X-reflection; <b><tt>imagemask</tt></b> doesn't honor
Some path-building operations that would generate a device coordinate
larger than +/-2^<small><sup>19</sup></small> will cause a
limitcheck. However, the common ones (<b><tt>[r]moveto</tt></b>,
-<b><tt>[r]lineto</tt></b>, <b><tt>[r]curveto</tt></b>, closepath) will not.
+<b><tt>[r]lineto</tt></b>, <b><tt>[r]curveto</tt></b>, <b><tt>closepath</tt></b>) will not.
<h2><a name="Graphics_bugs"></a>Graphics bugs</h2>
@@ -204,7 +215,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Devices.htm b/gs/doc/Devices.htm
index ed9d14866..eebb46c92 100644
--- a/gs/doc/Devices.htm
+++ b/gs/doc/Devices.htm
@@ -4506,7 +4506,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Dll.htm b/gs/doc/Dll.htm
index 2bd203a19..744770c95 100644
--- a/gs/doc/Dll.htm
+++ b/gs/doc/Dll.htm
@@ -75,7 +75,7 @@ is described here.
<p>
For the OS/2, Win16 and Win32 platforms, Ghostscript is built as a dynamic
link library (DLL), and to provide the interface described in the <a
-href="Use.txt">usage documentation</a>, a smaller independent executable
+href="Use.htm">usage documentation</a>, a smaller independent executable
(<b><tt>.EXE</tt></b>) loads this DLL, which provides all the interaction
with the windowing system, including image windows and, if necessary, a
text window. This document describes the DLL interface, which consists of
@@ -692,7 +692,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Drivers.htm b/gs/doc/Drivers.htm
index 0bd10bc36..1b3fe904c 100644
--- a/gs/doc/Drivers.htm
+++ b/gs/doc/Drivers.htm
@@ -2285,7 +2285,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Gs-vms.hlp b/gs/doc/Gs-vms.hlp
index 64f588394..c48758f70 100644
--- a/gs/doc/Gs-vms.hlp
+++ b/gs/doc/Gs-vms.hlp
@@ -1,7 +1,7 @@
1 gs
gs - Aladdin Ghostscript interpreter/previewer
-! Ghostscript version 5.40, 10 September 1998
+! Ghostscript version 5.50, 16 September 1998
Usage:
$ gs [options] [file ...]
@@ -160,7 +160,7 @@
Determines whether backing store is to be used for saving display
window (default = true).
- See the file `use.txt' for a more complete list of resources.
+ See the file `Use.htm' for a more complete list of resources.
To set these resources, put them in a file (such as
SYS$Login:ghostscript.dat) in the following form:
diff --git a/gs/doc/Helpers.htm b/gs/doc/Helpers.htm
index 240c9a707..5b0016a0c 100644
--- a/gs/doc/Helpers.htm
+++ b/gs/doc/Helpers.htm
@@ -272,7 +272,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/History1.htm b/gs/doc/History1.htm
index bfaf9388f..1d1495cda 100644
--- a/gs/doc/History1.htm
+++ b/gs/doc/History1.htm
@@ -395,7 +395,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/History2.htm b/gs/doc/History2.htm
index 7e1e88dd8..1882e5f03 100644
--- a/gs/doc/History2.htm
+++ b/gs/doc/History2.htm
@@ -5258,7 +5258,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/History3.htm b/gs/doc/History3.htm
index 289e53973..c6dd2dbe9 100644
--- a/gs/doc/History3.htm
+++ b/gs/doc/History3.htm
@@ -8443,7 +8443,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/History4.htm b/gs/doc/History4.htm
index f510dfcb3..f91e3c554 100644
--- a/gs/doc/History4.htm
+++ b/gs/doc/History4.htm
@@ -3863,7 +3863,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Htmstyle.htm b/gs/doc/Htmstyle.htm
index 29663c798..7bb91612c 100644
--- a/gs/doc/Htmstyle.htm
+++ b/gs/doc/Htmstyle.htm
@@ -762,7 +762,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Install.htm b/gs/doc/Install.htm
index e62813265..3c67e30d0 100644
--- a/gs/doc/Install.htm
+++ b/gs/doc/Install.htm
@@ -382,6 +382,14 @@ program, edit the definition of <b><tt>INSTALL</tt></b> in the makefile to
change "<b><tt>install</tt></b>" to "<b><tt>installbsd</tt></b>" before you
run "<b><tt>make install</tt></b>".
+<p>
+For Linux, you can install or upgrade Ghostscript from precompiled
+<a href="http://www.rpm.org">RPM</a> files using:
+<blockquote><b><tt>
+ rpm -U ghostscript-N.NN-1.i386.rpm<br>
+ rpm -U ghostscript-fonts-N.NN-1.noarch.rpm
+</tt></b></blockquote>
+
<hr>
<h1><a name="Install_VMS"></a>Installing Ghostscript on OpenVMS</h1>
@@ -420,7 +428,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Language.htm b/gs/doc/Language.htm
index 81f30e116..9beccb6c6 100644
--- a/gs/doc/Language.htm
+++ b/gs/doc/Language.htm
@@ -1142,7 +1142,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Lib.htm b/gs/doc/Lib.htm
index 564f0acf6..cdaa525c0 100644
--- a/gs/doc/Lib.htm
+++ b/gs/doc/Lib.htm
@@ -484,7 +484,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Make.htm b/gs/doc/Make.htm
index 8430c5d90..eee7efb63 100644
--- a/gs/doc/Make.htm
+++ b/gs/doc/Make.htm
@@ -463,7 +463,7 @@ Before making any changes for your particular environment, check the
post-release "known bugs" notice at
<blockquote>
-<a href="http://www.cs.wisc.edu/~ghost/aladdin/post510/post510.html">http://www.cs.wisc.edu/~ghost/</a>post###/post###.html
+<a href="http://www.cs.wisc.edu/~ghost/aladdin/relnotes/">http://www.cs.wisc.edu/~ghost/aladdin/relnotes/</a>gs###/index.html
</blockquote>
<p>
@@ -904,13 +904,23 @@ with 80386 processors.
produce a working executable of Ghostscript 5.03. We can't test this,
since we no longer have this compiler.
+<li>Borland C++ 4.5 has a bug or bugs that cause(s) the 32-bit Windows
+executable to crash if you give any @-files on the command line. Among
+other things, this makes the uniprint driver unusable, because it references
+the .upp configuration files this way. This problem may possibly be fixed
+by one or more of the patch files on
+
+<blockquote>
+<a href="ftp://ftp.borland.com/pub/borlandcpp/devsupport/patches/bc4_5/">ftp://ftp.borland.com/pub/borlandcpp/devsupport/patches/bc4_5/</a>
+</blockquote>
+
<li>Borland C++ 4.52 has a bug that causes the 32-bit Windows executable to
fail during startup. Borland (now Inprise) provides a patch for this bug
in
-<p>
+<blockquote>
<a href="ftp://ftp.borland.com/pub/borlandcpp/devsupport/patches/bc4_5/bc45xp1.zip">ftp://ftp.borland.com/pub/borlandcpp/devsupport/patches/bc4_5/bc45xp1.zip</a>
-<br>&nbsp;
+</blockquote>
<li>Borland C++ 5.0 and 5.01 have a code generator bug that generates
incorrect code for the construct <b><tt>!file_is_valid()</tt></b>. Do not
@@ -960,9 +970,22 @@ The Microsoft VC++ 5.0 compiler locks up when compiling
<b><tt>gxi12bit.c</tt></b> with <b><tt>/O2</tt></b>. Compile this file
without <b><tt>/O2</tt></b>.
+<p>
+The Microsoft VC++ 5.0 compiler produces a non-working executable if
+compiling without stack checking. Don't change the setting
+<b><tt>TDEBUG=1</tt></b> in <b><tt>msvc32.mak</tt></b>.
+
<h2><a name="Watcom_build"></a>Watcom environment</h2>
<p>
+<b>NOTE:</b> The Watcom compiler is unusable, because Watcom's
+<b><tt>wmake</tt></b> and <b><tt>wmakel</tt></b> programs have severe size
+limitations that cause them to run out of memory when processing the
+Ghostscript makefiles. If enough people call Watcom (now PowerSoft)
+technical support, maybe they will do something about this. If you have
+suggestions for how to get around this limitation, please let us know.
+
+<p>
On DOS or MS Windows with the Watcom compiler, add to
<b><tt>C:\AUTOEXEC.BAT</tt></b> the line
"<b><tt>set&nbsp;DOS4G=quiet</tt></b>". Then to create
@@ -1074,7 +1097,7 @@ However, if you like you can set up all these files in this hierarchy:
<tr valign=top> <td>&nbsp;&nbsp;&nbsp;&nbsp;
<td><b><tt>files</tt></b>
<td>&nbsp;
- <td>(All *<b><tt>.ps</tt></b>, *<b><tt>.txt</tt></b>, and other non-build files)
+ <td>(All *<b><tt>.ps</tt></b>, *<b><tt>.htm</tt></b>, and other non-build files)
<tr valign=top> <td>&nbsp;
<td><b><tt>fonts</tt></b>
<td>&nbsp;
@@ -1473,6 +1496,46 @@ PLATFORM=sysv_</tt></b><br>&nbsp;
<h3><a name="Linux"></a>Linux</h3>
<p>
+To create <a href="http://www.rpm.org">RPM</a>
+(<b>R</b>ed Hat <b>P</b>ackage <b>M</b>anager)
+files for Ghostscript N.NN:
+
+<ul>
+<li>Change to your source directory (<b><tt>/usr/src/redhat</tt></b> for Red Hat
+ Linux 5.1).
+<li>Copy <b><tt>ghostscript-N.NN*.tar.gz</tt></b> (4 source files) to the
+<b><tt>SOURCES</tt></b> subdirectory.
+<li>Copy <b><tt>ghostscript-fonts-5.10a.tar.gz</tt></b> to the
+<b><tt>SOURCES</tt></b> subdirectory.
+<li>From <b><tt>SOURCES/ghostscript-N.NN.tar.gz</tt></b>,
+<ul>
+<li>extract <b><tt>rpm-conf.dif</tt></b> and copy to
+<b><tt>SOURCES/ghostscript-N.NN-config.patch</tt></b>
+<li>extract <b><tt>gs.rps</tt></b> and copy to
+<b><tt>SPECS/ghostscript-N.NN.spec</tt></b>
+<li>extract <b><tt>gs-fonts.rps</tt></b> and copy to
+<b><tt>SPECS/ghostscript-fonts-N.NN.spec</tt></b>
+</ul>
+If the contents of these files have become out of date, you
+will need to update the version number N.NN in the spec files,
+and update the patch file.
+<li> Change to the SPECS subdirectory and then execute the commands
+<blockquote><b><tt>
+rpm -ba ghostscript-N.NN.spec<br>
+rpm -ba ghostscript-fonts-N.NN.spec
+</tt></b></blockquote>
+This will create the RPM files
+<blockquote><b><tt>
+RPMS/i386/ghostscript-N.NN-1.i386.rpm<br>
+RPMS/noarch/ghostscript-fonts-N.NN-1.noarch.rpm<br>
+SRPMS/ghostscript-N.NN-1.src.rpm<br>
+SRPMS/ghostscript-fonts-N.NN-1.src.rpm<br>
+</tt></b></blockquote>
+<li> See instructions on how to <a href="Install.htm#Install_Unix">install
+ Ghostscript under Unix</a>.
+</ul>
+
+<p>
Bruce Babcock
&lt;<a href="mailto:babcock@math.psu.edu">babcock@math.psu.edu</a>&gt; has
made available everything needed to build Ghostscript under Linux Slackware
@@ -2092,7 +2155,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/New-user.htm b/gs/doc/New-user.htm
index 6731e7979..0012ce4d0 100644
--- a/gs/doc/New-user.htm
+++ b/gs/doc/New-user.htm
@@ -250,22 +250,22 @@ library
<dd>The executable versions of Ghostscript are based in part on the work of
the Independent JPEG Group. For more information, see
<b><tt>jpeg.mak</tt></b> in the main Ghostscript source directory and
-<b><tt>README</tt></b> in the <b><tt>./jpeg</tt></b> subdirectory of the
+<b><tt>README</tt></b> in the <b><tt>jpeg</tt></b> subdirectory of the
Ghostscript source code
<dt>The <a href="http://www.cdrom.com/pub/png/">Portable Network
Graphics</a> (PNG) library created by Dave Martindale, Guy Eric Schalnat,
Paul Schmidt, and Tim Wegner, of Group 42, Inc.
<dd>For more information, see <b><tt>libpng.mak</tt></b> in the main
-Ghostscript source directory, and <b><tt>readme.txt</tt></b> and
-<b><tt>png.h</tt></b> in the <b><tt>./libpng</tt></b> subdirectory of the
+Ghostscript source directory, and <b><tt>README</tt></b> and
+<b><tt>png.h</tt></b> in the <b><tt>libpng</tt></b> subdirectory of the
Ghostscript source code.
<dt>The <a href="http://www.cdrom.com/pub/infozip/zlib/">zlib</a> library
created by Jean-loup Gailly and Mark Adler
<dd>For more information, see <b><tt>zlib.mak</tt></b> in the main
Ghostscript source directory, and <b><tt>README</tt></b> in the
-<b><tt>./zlib</tt></b> subdirectory of the Ghostscript source code.
+<b><tt>zlib</tt></b> subdirectory of the Ghostscript source code.
</dl></blockquote>
<p>
@@ -752,7 +752,7 @@ post bugs to the newsgroups mentioned above. Before doing that, however,
you should first check the "known bugs" notice at
<blockquote>
-<a href="http://www.cs.wisc.edu/~ghost/aladdin/post510/post510.html">http://www.cs.wisc.edu/~ghost/aladdin/</a>post###/post###.html
+<a href="http://www.cs.wisc.edu/~ghost/aladdin/relnotes/">http://www.cs.wisc.edu/~ghost/aladdin/relnotes/</a>gs###/index.html
</blockquote>
<p>
@@ -761,8 +761,8 @@ release.
<p>
We will consider investigating problems reported to those newsgroups, or
-e-mailed directly to <b><tt>ghost@aladdin.com</tt></b>, if (and only if)
-the report meets all the following conditions:
+e-mailed directly to &lt;<a href="mailto:ghost@aladdin.com">ghost@aladdin.com</a>&gt;,
+if (and only if) the report meets all the following conditions:
<ol>
<li>You are using the most recent version of Aladdin Ghostscript.
@@ -840,7 +840,16 @@ will have to rely on other users to help.
<h1><a name="Aladdin"></a>Contacting Aladdin Enterprises</h1>
<p>
-You can reach Aladdin at
+Please do not contact us if all you want is help with the freely
+distributed versions of Ghostscript! Ghostscript is free, but our time is
+not. If you call for help, we will tell you politely that we cannot answer
+your question. Ghostscript's documentation, while not of commercial
+end-user quality, has been adequate for thousands of users (for many of
+whom English is a foreign language), so the answer to your question is very
+likely in it somewhere.
+
+<p>
+Here is our contact information:
<blockquote><address>
Aladdin Enterprises<br>
@@ -852,15 +861,6 @@ Menlo Park, CA 94025 U.S.A.<br>
<a href="http://www.ghostscript.com/">http://www.ghostscript.com/</a>
</address></blockquote>
-<p>
-Please do not contact us if all you want is help with the freely
-distributed versions of Ghostscript! Ghostscript is free, but our time is
-not. If you call for help, we will tell you politely that we cannot answer
-your question. Ghostscript's documentation, while not of commercial
-end-user quality, has been adequate for thousands of users (for many of
-whom English is a foreign language), so the answer to your question is very
-likely in it somewhere.
-
<hr>
<h1><a name="How_to_help"></a>Things you can do to help</h1>
@@ -903,15 +903,17 @@ maintained, by L. Peter Deutsch, President of Aladdin Enterprises (not to be
confused with Peter J. Deutsch, founder of Bunyip Information Systems Inc.).
<p>
-Special thanks are due to Russell Lang, for the GSview for Windows and PM
-<b><tt>GSview</tt></b> programs and for contributing most of the code for
+Special thanks are due to Russell Lang, for the
+<b><tt>GSview for Windows</tt></b> and
+<b><tt>PM GSview</tt></b> programs, and for contributing most of the code for
the Microsoft Windows and OS/2 environments; to Tim Theisen, for the
<b><tt>Ghostview</tt></b> program for X Windows and for major contributions
-to, and ongoing assistance with support of, the code for the X Windows
+to, and assistance with support of, the code for the X Windows
environment; to Martin Fong and Mark Lentczner, for the first Macintosh
ports; to Pete Kaiser
&lt;<a href="mailto:kaiser@acm.org">kaiser@acm.org</a>&gt;, for redoing all
-of the documentation; and to the <a href="http://www.ijg.org/">Independent
+of the documentation in HTML;
+and to the <a href="http://www.ijg.org/">Independent
JPEG Group</a>, to Group 42, Inc., and to Jean-loup Gailly and Mark Adler,
for creating the freely available libraries that Ghostscript uses.
@@ -924,7 +926,7 @@ fonts available for free distribution under the GNU and Aladdin licenses.
<p>
Special thanks are due to Richard Stallman and the
<a href="http://www.gnu.org/">Free Software Foundation</a> for originating
-the GNU <a href="http://www.gnu.org/copyleft/gpl.html">General Public
+the <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public
License</a>, for originally motivating Aladdin's interest in creating free
software, and for being the primary distributor of GNU Ghostscript on the
Internet.
@@ -948,7 +950,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/News.htm b/gs/doc/News.htm
index 012cee49c..a4d2788a1 100644
--- a/gs/doc/News.htm
+++ b/gs/doc/News.htm
@@ -30,6 +30,17 @@ Changes in the most recent releases of Ghostscript
<h2>Table of contents</h2>
<blockquote><ul>
+<li><a href="#Version5.50">Version 5.50 (beta) (9/16/98)</a>
+<ul>
+<li><a href="#5.50_Documentation">Documentation</a>,
+ <a href="#5.50_Procedures">Procedures</a>,
+ <a href="#5.50_Utilities">Utilities</a>,
+ <a href="#5.50_Drivers">Drivers</a>,
+ <a href="#5.50_Platforms">Platforms</a>,
+ <a href="#5.50_Interpreter">Interpreter</a>,
+ <a href="#5.50_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.50_Library">Library</a>
+</ul>
<li><a href="#Version5.40">Version 5.40 (beta) (9/10/98)</a>
<ul>
<li><a href="#5.40_Documentation">Documentation</a>,
@@ -343,6 +354,137 @@ with a * were made available as patches to a previous release.
<hr>
+<h1><a name="Version5.50"></a>Version 5.50 (9/16/98)</h1>
+
+This is the first public release since 5.10. See <a href="Current.htm">the release summary</a>
+for a list of major additions and changes.
+
+<h2><a name="5.50_Documentation"></a>Documentation</h2>
+
+Fixes problems:
+ - Many files still referred to .txt rather than .htm files.
+(DLL.htm, Make.htm, New-user.htm, Readme.htm, bcwin32.mak, cfonts.mak,
+devs.mak, dvx-gcc.mak, dwmainc.cpp, gs-vms.hlp, gxdevcli.h, gxdevice.h,
+int.mak, jpeg.mak, libpng.mak, msvc32.mak, msvclib.mak, openvms.mak,
+os2.mak, unix-cc.mak, unix-gcc.mak, unixansi.mak, watc.mak, watcw32.mak,
+wccommon.mak, zlib.mak)
+
+Notes that ps2epsi.1 and ps2epsi.txt may be inconsistent or obsolete.
+(ps2epsi.1, ps2epsi.txt)
+
+Adds a reference to Thomas Merz's Ghostscript manual. (Readme.htm)
+
+Adds instructions for making RPMs. (Install.htm, Make.htm)
+
+Changes the URL for post-release notes. (Bug-form.htm, Make.htm,
+New-user.htm)
+
+Notes problems with Watcom compilation. (Make.htm)
+
+<h2><a name="5.50_Procedures"></a>Procedures</h2>
+
+Fixes problems:
+ - On Unix systems, the documentation files didn't get installed by
+`make install'. (unixinst.mak)
+ - $() was missing around MAKEFILE in a Windows makefile.
+(msvc32.mak)
+ - The dfax drivers didn't include all the necessary files in the
+linker list. (contrib.mak)
+ - The MSVC makefiles didn't allow building the executable in a
+different directory. (bcwin32.mak, gs.mak, lib.mak, msvc32.mak,
+msvccmd.mak, msvclib.mak, msvctail.mak, os2.mak, watcw32.mak, winint.mak,
+winlib.mak)
+ - The default build directory for the Borland compiler was debugobj
+rather than obj. (bcwin32.mak)
+
+Adds a patch file and some specification files for making RPMs. (gs.rps,
+gs-fonts.rps, rpm-conf.dif)
+
+Removes the docs target in the makefile, since this function is now
+performed by another program. (unix-end.mak)
+
+<h2><a name="5.50_Drivers"></a>Drivers</h2>
+
+Fixes problems:
+ - The jpeg drivers caused a memory access error. (bug introduced in
+5.20 by an incorrectly made fix) (gdevjpeg.c)
+ - The x11cmyk driver implemented map_rgb_color, which it should not
+do. (gdevxalt.c)
+
+<h2><a name="5.50_Utilities"></a>Utilities</h2>
+
+Fixes problems:
+ - echogs -h didn't work in environments where char is signed.
+(echogs.c)
+
+<h2><a name="5.50_Platforms"></a>Platforms</h2>
+
+Fixes problems:
+ - MSVC++ 5.0 produced incorrect code with TDEBUG=0. We "fixed" this
+problem by noting in the makefile that TDEBUG must be left set to 1.
+(msvc32.mak, msvclib.mak)
+
+Updates the icons for the MS Windows and OS/2 platforms. (gsgraph.icx,
+gsos2.icx, gspmdrv.icx, gstext.icx)
+
+<h2><a name="5.50_Interpreter"></a>Interpreter</h2>
+
+Fixes problems:
+ - setpagedevice didn't update the state correctly when switching to
+a new type of device (different OutputDevice value). (gs_setpd.ps)
+ - The interpreter's initialization depended on BSS being initialized
+to 0. (files.h, zfile.c)
+
+Removes all references to reloc_struct_ptr other than in gsstruct.h.
+(igcref.c)
+
+Adds DEBUG tracing for pdfmarks. (gs_pdfwr.ps)
+
+Disables TEST code for release. (zcrd.c, zfdcte.c)
+
+<h2><a name="5.50_Interpreter_PDF"></a>Interpreter (PDF)</h2>
+
+Fixes problems:
+ - Some third-party software still referred to the obsolete #?
+procedure. (pdf_main.ps)
+ - Destinations with string names weren't properly converted to
+pdfmarks. (pdf_main.ps)
+ - Destinations with S = /Named weren't supported. (pdf_main.ps)
+
+<h2><a name="5.50_Library"></a>Library</h2>
+
+Fixes problems:
+ - Dropout prevention wasn't applied to landscape image masks.
+(gximono.c)
+ - When using async rendering, the renderer's allocator was allocated
+with the wrong allocator. (gdevprna.c)
+ - gx_strip_bitmap and gx_device_mask_clip didn't have proper GC
+descriptors, causing crashes if a GC occurred while rendering an ImageType 3
+or 4 image. (gsstruct.h, gxbitmap.h, gxclip2.h, gxclipm.h, gxmclip.h,
+gspcolor.c, gxclipm.c, gxmclip.c)
+ - The buffer for printer devices wasn't reallocated properly for
+async devices when the page size changed. We aren't entirely comfortable
+with the fix, but it's the best we've got right now. (gdevprn.c)
+ - Some files wouldn't compile with -dNOPRIVATE. (gxcspace.h,
+gscdevn.c, gscolor2.c, gscscie.c, gscsepr.c)
+ - gp_semaphore_close and gp_monitor_close were defined as not
+returning an error code. (gpsync.h, gp_nsync.c, gp_posem.c, gp_semon.c,
+gp_win32.c)
+ - Initialization code depended on BSS being initialized to 0.
+(gsiodev.c)
+ - The special PCL color mapping device didn't handle CMYK devices
+correctly in other than "identity" mode. (gdevcmap.c)
+
+Cleans up a little formatting. (gscie.h, gscpixel.c, gxmclip.c)
+
+Removes all references to reloc_struct_ptr other than in gsstruct.h.
+(gsstruct.h, gsalloc.c, gsdevice.c, gsfont.c, gxcpath.c)
+
+Patches the async code so that it allocates twice as much space for the
+renderer as should be needed, to deal with sandbars. (gdevprna.c)
+
+<hr>
+
<h1><a name="Version5.40"></a>Version 5.40 (beta) (9/10/98)</h1>
A few more fixes. This is intended as the candidate fileset for the 5.50
@@ -549,8 +691,6 @@ Fixes problems:
zchar32.c, zfont32.c)
- When recovering from an error in an operator procedure, the
interpreter didn't update the dictionary stack caches. (interp.c)
- - The reader side of overlapped band devices was confused about its
-open/closed status. (gdevprna.c)
- startjob didn't reinitialize the stacks or VM space. (gs_lev2.ps)
- Encoding filters with a Predictor always caused an error.
(zfilter2.c)
@@ -618,6 +758,8 @@ functions or threshold arrays), but wasn't consistent with either the Adobe
specification or the user's intentions. (gxcht.c)
- The phase of mask Patterns wasn't always set correctly.
(gxp1fill.c)
+ - The reader side of overlapped band devices was confused about its
+open/closed status. (gdevprna.c)
Renames Type 32 fonts from ft_bitmap to ft_CID_bitmap. (gxftype.h)
@@ -5658,7 +5800,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Ps2pdf.htm b/gs/doc/Ps2pdf.htm
index 0ddba300f..52c28015c 100644
--- a/gs/doc/Ps2pdf.htm
+++ b/gs/doc/Ps2pdf.htm
@@ -259,7 +259,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Psfiles.htm b/gs/doc/Psfiles.htm
index a7d910d80..833a319c5 100644
--- a/gs/doc/Psfiles.htm
+++ b/gs/doc/Psfiles.htm
@@ -625,7 +625,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Public.htm b/gs/doc/Public.htm
index c6a17f43a..a8a82ab4b 100644
--- a/gs/doc/Public.htm
+++ b/gs/doc/Public.htm
@@ -283,8 +283,8 @@ with the terms of this License.
<!-- [2.0 end contents] ---------------------------------------------------- -->
<!-- [3.0 begin visible trailer] ------------------------------------------- -->
-<!-- Ghostscript version 5.40, -->
-<!-- 10 September 1998 -->
+<!-- Ghostscript version 5.50, -->
+<!-- 15 September 1998 -->
<!-- [3.0 end visible trailer] --------------------------------------------- -->
</body>
diff --git a/gs/doc/Readme.htm b/gs/doc/Readme.htm
index 3997b8ee2..62868912f 100644
--- a/gs/doc/Readme.htm
+++ b/gs/doc/Readme.htm
@@ -309,6 +309,14 @@ Much other material about Ghostscript is available on the World Wide Web,
both as web pages and as archived Usenet and mailing list discussions. Use
the well-known search engines to find such material.
+<p>
+There is a good manual for Ghostscript available in PDF form,
+in English and German (and soon in Japanese), at:
+
+<blockquote>
+<a href="http://www.ifconnection.de/~tm">http://www.ifconnection.de/~tm</a>
+</blockquote>
+
<hr>
<h1><a name="Ordered_roadmap"></a>Which document contains what?</h1>
@@ -456,7 +464,7 @@ Ghostscript.
<dt><a name="News"></a><a href="News.htm"><b>News.htm</b></a>
<dd> Changes in the latest releases of Ghostscript. Changes in older
releases are described in the history files
-"<b><tt>history*.txt</tt></b>", which are usually installed
+"<b><tt>History*.htm</tt></b>", which are usually installed
in the documentation directory. Run "<b><tt>gs&nbsp;-h</tt></b>"
to see where that is.
</dl>
@@ -527,7 +535,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Source.htm b/gs/doc/Source.htm
index 955ce1a3b..37ff972d6 100644
--- a/gs/doc/Source.htm
+++ b/gs/doc/Source.htm
@@ -289,7 +289,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Unix-lpr.htm b/gs/doc/Unix-lpr.htm
index 68ae85a07..97479dd92 100644
--- a/gs/doc/Unix-lpr.htm
+++ b/gs/doc/Unix-lpr.htm
@@ -255,7 +255,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/Use.htm b/gs/doc/Use.htm
index 3ab3e1f32..759100681 100644
--- a/gs/doc/Use.htm
+++ b/gs/doc/Use.htm
@@ -2352,7 +2352,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/fonts.htm b/gs/doc/fonts.htm
index a43de7bce..05c79333b 100644
--- a/gs/doc/fonts.htm
+++ b/gs/doc/fonts.htm
@@ -1120,7 +1120,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/doc/ps2epsi.txt b/gs/doc/ps2epsi.txt
index 772aa179d..6dd4bec18 100644
--- a/gs/doc/ps2epsi.txt
+++ b/gs/doc/ps2epsi.txt
@@ -1,6 +1,10 @@
NOTE: this file was contributed by a user: please contact
George Cameron <george@bio-medical-physics.aberdeen.ac.uk>
if you have questions.
+
+ Since the software described here is no longer being maintained, the
+ content of this document may be obsolete, or inconsistent with
+ ps2epsi.1.
OVERVIEW:
diff --git a/gs/doc/xfonts.htm b/gs/doc/xfonts.htm
index 9c758dc3f..071436fc5 100644
--- a/gs/doc/xfonts.htm
+++ b/gs/doc/xfonts.htm
@@ -258,7 +258,7 @@ full details of the terms of using, copying, modifying, and redistributing
Aladdin Ghostscript.
<p>
-Ghostscript version 5.40, 10 September 1998
+Ghostscript version 5.50, 16 September 1998
</font>
diff --git a/gs/lib/gs_init.ps b/gs/lib/gs_init.ps
index d6199ec1c..28ba792b6 100644
--- a/gs/lib/gs_init.ps
+++ b/gs/lib/gs_init.ps
@@ -31,7 +31,7 @@
% Check the interpreter revision. NOTE: the interpreter code requires
% that the first non-comment token in this file be an integer.
-540
+550
dup revision ne
{ (gs: Interpreter revision \() print revision 10 string cvs print
(\) does not match gs_init.ps revision \() print 10 string cvs print
diff --git a/gs/lib/gs_pdfwr.ps b/gs/lib/gs_pdfwr.ps
index d5d76dc3e..1c64c3dc7 100644
--- a/gs/lib/gs_pdfwr.ps
+++ b/gs/lib/gs_pdfwr.ps
@@ -58,11 +58,11 @@
}
ifelse
} bind def
-/.pdfputparams % -mark- <key1> <value1> ... .pdfputparams <result...>
- { currentdevice null false counttomark 1 add 3 roll
+/.pdfputparams { % -mark- <key1> <value1> ... .pdfputparams <result...>
+ currentdevice null false counttomark 1 add 3 roll
% Don't allow the page device to get cleared....
- {.putdeviceparams} .currentpagedevice pop {.setpagedevice} 3 .execn
- } bind def
+ {.putdeviceparams} .currentpagedevice pop {.setpagedevice} 3 .execn
+} bind def
% The procedures in the following dictionary are called with the entire
% pdfmark operand list (including the pdfmark name) on the stack;
% they may modify this ad lib. They should return true if all operands
diff --git a/gs/lib/gs_setpd.ps b/gs/lib/gs_setpd.ps
index e012d69dc..31b8f3826 100644
--- a/gs/lib/gs_setpd.ps
+++ b/gs/lib/gs_setpd.ps
@@ -639,10 +639,22 @@ DEBUG { (Installing.\n) print pstack flush } if
.setdevice pop
.setpagedevice
- % Merge the request into the current page device.
+ % Merge the request into the current page device,
+ % unless we're changing the OutputDevice.
% Stack: mark ... <merged> <failed>
exch currentpagedevice dup length 2 index length add dict
- .copydict .copydict
+ % Stack: mark ... <failed> <merged> <current> <newdict>
+ 2 index /OutputDevice .knownget {
+ 2 index /OutputDevice .knownget not { null } if eq
+ } {
+ true
+ } ifelse {
+ % Same OutputDevice, merge the dictionaries.
+ .copydict
+ } {
+ % Different OutputDevice, discard the old dictionary.
+ exch pop
+ } ifelse .copydict
% Initialize the default matrix, taking media matching
% into account.
.computemediasize pop initmatrix concat
diff --git a/gs/lib/pdf_main.ps b/gs/lib/pdf_main.ps
index 7fb05c6bb..ad5931cad 100644
--- a/gs/lib/pdf_main.ps
+++ b/gs/lib/pdf_main.ps
@@ -24,6 +24,9 @@
/pdfdict where { pop } { /pdfdict 100 dict def } ifelse
pdfdict begin
+% Patch in an obsolete variable used by some third-party software.
+/#? false def
+
% For simplicity, we use a single interpretation dictionary for all
% PDF graphics execution, even though this is too liberal.
/pdfopdict mark
@@ -357,17 +360,24 @@ pdfdict begin
/boxrect % [<llx> <lly> <urx> <ury>] boxrect <x> <y> <w> <h>
{ aload pop exch 3 index sub exch 2 index sub
} bind def
-/linkdest % <link|outline> linkdest
+/resolvedest { % <name|string|other> resolvedest <other|null>
+ dup type /nametype eq {
+ Trailer /Root oget /Dests oget exch knownoget not { null } if
+ } {
+ dup type /stringtype eq {
+ Trailer /Root oget /Names oget /Dests knownoget {
+ exch nameoget
+ } {
+ pop null
+ } ifelse
+ } if
+ } ifelse
+} bind def
+/linkdest { % <link|outline> linkdest
% ([/Page <n>] /View <view> | ) <link|outline>
- { dup /Dest knownoget
- { % Check for a name, to be looked up in Dests.
- dup type /nametype eq
- { Trailer /Root oget /Dests oget exch knownoget
- { dup type /dicttype eq { /D get } if }
- { null }
- ifelse
- }
- if
+ dup /Dest knownoget
+ { resolvedest
+ dup type /dicttype eq { /D get } if
dup null eq
{ pop }
{ dup 0 oget
@@ -382,21 +392,46 @@ pdfdict begin
ifelse
}
if
- } bind def
+} bind def
+% <pagedict> mark ... -proc- -
+/namedactions 8 dict dup begin
+ /FirstPage {
+ /Page 1 3 -1 roll
+ } def
+ /LastPage {
+ counttomark 2 add index pdfpagecount /Page exch 3 -1 roll
+ } def
+ /NextPage {
+ counttomark 2 add index pdfpagenumber 1 add /Page exch 3 -1 roll
+ } def
+ /PrevPage {
+ counttomark 2 add index pdfpagenumber 1 sub /Page exch 3 -1 roll
+ } def
+end readonly def
+% <pagedict> <annotdict> -proc- -
/annottypes 5 dict dup begin
- /Text
- { mark exch
- { /Rect /Open /Contents }
- { 2 copy knownoget { 3 -1 roll } { pop } ifelse }
- forall pop /ANN pdfmark
- } bind def
- /Link
- { mark exch
- { /Rect /Border }
- { 2 copy knownoget { 3 -1 roll } { pop } ifelse }
- forall linkdest pop /LNK pdfmark
- } bind def
-end def
+ /Text {
+ mark exch
+ { /Rect /Open /Contents }
+ { 2 copy knownoget { 3 -1 roll } { pop } ifelse }
+ forall pop /ANN pdfmark
+ } bind def
+ /Link {
+ mark exch
+ { /Rect /Border }
+ { 2 copy knownoget { 3 -1 roll } { pop } ifelse }
+ forall dup /A knownoget {
+ dup /D knownoget {
+ exch pop exch dup length dict copy dup /Dest 4 -1 roll put
+ } {
+ /N knownoget { % Assume /S /Named
+ namedactions exch .knownget { exec } if
+ } if
+ } ifelse
+ } if
+ linkdest pop /LNK pdfmark
+ } bind def
+end readonly def
/pdfshowpage % <pagedict> pdfshowpage -
{ dup /Page exch store
diff --git a/gs/man/gs.1 b/gs/man/gs.1
index 5ab14f34d..d3972309b 100644
--- a/gs/man/gs.1
+++ b/gs/man/gs.1
@@ -1,5 +1,5 @@
-.TH GS 1 "10 September 1998" 5.40 Ghostscript \" -*- nroff -*-
+.TH GS 1 "16 September 1998" 5.50 Ghostscript \" -*- nroff -*-
.SH NAME
gs \- Ghostscript (PostScript and PDF language interpreter and previewer)
.SH SYNOPSIS
@@ -454,7 +454,7 @@ The various Ghostscript document files (above), especially \fBUse.htm\fR.
.SH BUGS
See the Usenet news group comp.lang.postscript.
.SH VERSION
-This document was last revised for Ghostscript version 5.40.
+This document was last revised for Ghostscript version 5.50.
.SH AUTHOR
L. Peter Deutsch <ghost@aladdin.com> is the principal author of Ghostscript.
Russell J. Lang <rjl@aladdin.com> is the author of most of the MS Windows
diff --git a/gs/man/pdf2dsc.1 b/gs/man/pdf2dsc.1
index dcfbc7a2e..853acff22 100644
--- a/gs/man/pdf2dsc.1
+++ b/gs/man/pdf2dsc.1
@@ -1,5 +1,5 @@
-.TH PDF2DSC 1 "10 September 1998" 5.40 "Ghostscript Tools" \" -*- nroff -*-
+.TH PDF2DSC 1 "16 September 1998" 5.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
pdf2dsc \- generate a PostScript page list of a PDF document
.SH SYNOPSIS
@@ -29,6 +29,6 @@ Ghostscript since release 3.53.
.SH SEE ALSO
gs(1), ghostview(1)
.SH VERSION
-This document was last revised for Ghostscript version 5.40.
+This document was last revised for Ghostscript version 5.50.
.SH AUTHOR
Yves Arrouye <yves.arrouye@usa.net> and Russell Lang <rjl@aladdin.com>
diff --git a/gs/man/pdf2ps.1 b/gs/man/pdf2ps.1
index 00759adaf..7c04bd595 100644
--- a/gs/man/pdf2ps.1
+++ b/gs/man/pdf2ps.1
@@ -1,5 +1,5 @@
-.TH PDF2PS 1 "10 September 1998" 5.40 "Ghostscript Tools" \" -*- nroff -*-
+.TH PDF2PS 1 "16 September 1998" 5.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
pdf2ps \- Ghostscript PDF to PostScript translator
.SH SYNOPSIS
@@ -12,6 +12,6 @@ Format\fR (PDF) file "input.pdf" to Level 2 \fBPostScript\fR(tm) in
Run "\fBgs -h\fR" to find the location of Ghostscript documentation on your
system, from which you can get more details.
.SH VERSION
-This document was last revised for Ghostscript version 5.40.
+This document was last revised for Ghostscript version 5.50.
.SH AUTHOR
L. Peter Deutsch <ghost@aladdin.com>
diff --git a/gs/man/ps2ascii.1 b/gs/man/ps2ascii.1
index a1fd6ad61..272eb3dab 100644
--- a/gs/man/ps2ascii.1
+++ b/gs/man/ps2ascii.1
@@ -1,5 +1,5 @@
-.TH PS2ASCII 1 "10 September 1998" 5.40 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2ASCII 1 "16 September 1998" 5.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
ps2ascii \- Ghostscript translator from PostScript or PDF to ASCII
.SH SYNOPSIS
@@ -23,7 +23,7 @@ system, from which you can get more details.
.SH SEE ALSO
pstotext(1), http://www.research.digital.com/SRC/virtualpaper/pstotext.html
.SH VERSION
-This document was last revised for Ghostscript version 5.40.
+This document was last revised for Ghostscript version 5.50.
.SH AUTHOR
L. Peter Deutsch <ghost@aladdin.com> was the original author. The current
version has substantial improvements by David M. Jones
diff --git a/gs/man/ps2epsi.1 b/gs/man/ps2epsi.1
index e45fbb024..b316bf94a 100644
--- a/gs/man/ps2epsi.1
+++ b/gs/man/ps2epsi.1
@@ -1,5 +1,5 @@
-.TH PS2EPSI 1 "10 September 1998" 5.40 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2EPSI 1 "16 September 1998" 5.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
ps2epsi \- generate conforming Encapsulated PostScript
.SH SYNOPSIS
@@ -60,6 +60,7 @@ ps2epsi.ps>the Ghostscript program which does the work
.SH SEE ALSO
gs (1)
.SH VERSION
-This document was last revised for Ghostscript version 5.40.
+This document was last revised for Ghostscript version 5.50.
+However, the content may be obsolete, or inconsistent with ps2epsi.txt.
.SH AUTHOR
George Cameron
diff --git a/gs/man/ps2pdf.1 b/gs/man/ps2pdf.1
index cd742a8f0..508ecf5cd 100644
--- a/gs/man/ps2pdf.1
+++ b/gs/man/ps2pdf.1
@@ -1,5 +1,5 @@
-.TH PS2PDF 1 "10 September 1998" 5.40 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2PDF 1 "16 September 1998" 5.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
ps2pdf \- Ghostscript PostScript to PDF translator
.SH SYNOPSIS
@@ -28,6 +28,6 @@ mostly fix this by the end of 1998.
Run "\fBgs -h\fR" to find the location of Ghostscript documentation on your
system, from which you can get more details.
.SH VERSION
-This document was last revised for Ghostscript version 5.40.
+This document was last revised for Ghostscript version 5.50.
.SH AUTHOR
L. Peter Deutsch <ghost@aladdin.com>
diff --git a/gs/man/ps2ps.1 b/gs/man/ps2ps.1
index 94e4e47a7..808de8ab3 100644
--- a/gs/man/ps2ps.1
+++ b/gs/man/ps2ps.1
@@ -1,5 +1,5 @@
-.TH PS2PS 1 "10 September 1998" 5.40 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2PS 1 "16 September 1998" 5.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
ps2ps \- Ghostscript PostScript "distiller"
.SH SYNOPSIS
@@ -14,6 +14,6 @@ Level 1.
Run "\fBgs -h\fR" to find the location of Ghostscript documentation on your
system, from which you can get more details.
.SH VERSION
-This document was last revised for Ghostscript version 5.40.
+This document was last revised for Ghostscript version 5.50.
.SH AUTHOR
L. Peter Deutsch <ghost@aladdin.com>
diff --git a/gs/src/bcwin32.mak b/gs/src/bcwin32.mak
index f3307b76c..f8359ced9 100644
--- a/gs/src/bcwin32.mak
+++ b/gs/src/bcwin32.mak
@@ -39,7 +39,7 @@ GS_LIB_DEFAULT=.;c:/gs\;c:/gs/fonts
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
@@ -90,11 +90,11 @@ MULTITHREAD=1
# for the graphics library (GL) and the PostScript/PDF interpreter (PS).
GLSRCDIR=.
-GLGENDIR=debugobj
-GLOBJDIR=debugobj
+GLGENDIR=obj
+GLOBJDIR=obj
PSSRCDIR=.
-PSGENDIR=debugobj
-PSOBJDIR=debugobj
+PSGENDIR=obj
+PSOBJDIR=obj
# Define the directory where the IJG JPEG library sources are stored,
# and the major version of the library that is stored there.
@@ -240,7 +240,7 @@ SHP=
# Define the arguments for genconf.
-CONFILES=-p %s+ -l lib.tr
+CONFILES=-p %s+ -l $(GLGENDIR)\lib.tr
CONFLDTR=-o
# Define the generic compilation flags.
@@ -330,8 +330,8 @@ GENOPT=$(CP) $(CD) $(CT) $(CS) $(CMT)
CCFLAGS0=$(GENOPT) $(PLATOPT) $(CPFLAGS) $(FPFLAGS) $(CFLAGS) $(XCFLAGS)
CCFLAGS=$(CCFLAGS0)
-CC=$(COMP) @ccf32.tr
-CPP=$(COMPCPP) @ccf32.tr
+CC=$(COMP) @$(GLGENDIR)\ccf32.tr
+CPP=$(COMPCPP) @$(GLGENDIR)\ccf32.tr
!if $(MAKEDLL)
WX=$(COMPILE_FOR_DLL)
!else
@@ -365,19 +365,31 @@ BEGINFILES2=$(GLOBJDIR)\gs16spl.exe *.tr *.map
CCAUX=$(COMPAUX) -ml -I$(INCDIR) -L$(LIBDIR) -n$(AUXGENDIR) -O
CCAUX_TAIL=
-ccf32.tr: $(MAKEFILE) makefile
- echo -a1 -d -r -G -N -X -I$(INCDIR) $(CCFLAGS0) -DCHECK_INTERRUPTS > ccf32.tr
+$(GLGENDIR)\ccf32.tr: $(MAKEFILE) makefile
+ echo -a1 -d -r -G -N -X -I$(INCDIR) $(CCFLAGS0) -DCHECK_INTERRUPTS > $(GLGENDIR)\ccf32.tr
+
+$(ECHOGS_XE): $(GLSRC)echogs.c
+ $(CCAUX) $(GLSRC)echogs.c $(CCAUX_TAIL)
# Since we are running in a Windows environment with a different compiler
# for the DOS utilities, we have to invoke genarch by hand.
# For unfathomable reasons, the 'win' program requires /, not \,
# in the name of the program to be run, and apparently also in any
# file names passed on the command line (?!).
-$(GENARCH_XE): $(GLSRC)genarch.c $(stdpre_h) $(iref_h) ccf32.tr
+$(GENARCH_XE): $(GLSRC)genarch.c $(stdpre_h) $(iref_h) $(GLGENDIR)\ccf32.tr
$(COMP) -I$(INCDIR) -L$(LIBDIR) -n$(AUXGENDIR) -O $(GLSRC)genarch.c
echo win $(AUXGENDIR)/genarch $(GLGENDIR)/arch.h >_genarch.bat
echo ***** Run "_genarch.bat", then continue make. *****
+$(GENCONF_XE): $(GLSRC)genconf.c $(stdpre_h)
+ $(CCAUX) $(GLSRC)genconf.c $(CCAUX_TAIL)
+
+$(GENDEV_XE): $(GLSRC)gendev.c $(stdpre_h)
+ $(CCAUX) $(GLSRC)gendev.c $(CCAUX_TAIL)
+
+$(GENINIT_XE): $(PSSRC)geninit.c $(stdio__h) $(string__h)
+ $(CCAUX) $(PSSRC)geninit.c $(CCAUX_TAIL)
+
# -------------------------------- Library -------------------------------- #
# See winlib.mak
@@ -422,7 +434,7 @@ $(GSDLL_OBJ).dll: $(GS_ALL) $(DEVS_ALL) $(GLOBJ)gsdll.$(OBJ)\
-del gswin32.tr
copy $(ld_tr) gswin32.tr
echo $(LIBDIR)\c0d32 $(GLOBJ)gsdll + >> gswin32.tr
- $(LINK) $(LCT) /Tpd @gswin32.tr $(INTASM) ,$(GSDLL_OBJ).dll,$(GSDLL),@lib.tr @$(LIBCTR),$(GSDLL_SRC).def,$(GSDLL_OBJ).res
+ $(LINK) $(LCT) /Tpd @gswin32.tr $(INTASM) ,$(GSDLL_OBJ).dll,$(GSDLL),@$(GLGENDIR)\lib.tr @$(LIBCTR),$(GSDLL_SRC).def,$(GSDLL_OBJ).res
!else
# The big graphical EXE
@@ -432,7 +444,7 @@ $(GS_XE): $(GSCONSOLE_XE) $(GS_ALL) $(DEVS_ALL)\
copy $(ld_tr) gswin32.tr
echo $(LIBDIR)\c0w32 $(GLOBJ)gsdll + >> gswin32.tr
echo $(DWOBJNO) $(INTASM) >> gswin32.tr
- $(LINK) $(LCT) /Tpe @gswin32.tr ,$(GS_XE),$(GS),@lib.tr @$(LIBCTR),$(GLSRC)dwmain32.def,$(GS_OBJ).res
+ $(LINK) $(LCT) /Tpe @gswin32.tr ,$(GS_XE),$(GS),@$(GLGENDIR)\lib.tr @$(LIBCTR),$(GLSRC)dwmain32.def,$(GS_OBJ).res
-del gswin32.tr
# The big console mode EXE
@@ -442,7 +454,7 @@ $(GSCONSOLE_XE): $(GS_ALL) $(DEVS_ALL)\
copy $(ld_tr) gswin32.tr
echo $(LIBDIR)\c0w32 $(GLOBJ)gsdll + >> gswin32.tr
echo $(OBJCNO) $(INTASM) >> gswin32.tr
- $(LINK) $(LCT) /Tpe /ap @gswin32.tr ,$(GSCONSOLE_XE),$(GSCONSOLE),@lib.tr @$(LIBCTR),$(GLSRC)dw32c.def,$(GS_OBJ).res
+ $(LINK) $(LCT) /Tpe /ap @gswin32.tr ,$(GSCONSOLE_XE),$(GSCONSOLE),@$(GLGENDIR)\lib.tr @$(LIBCTR),$(GLSRC)dw32c.def,$(GS_OBJ).res
-del gswin32.tr
!endif
diff --git a/gs/src/cfonts.mak b/gs/src/cfonts.mak
index d2681ee9b..bd770378c 100644
--- a/gs/src/cfonts.mak
+++ b/gs/src/cfonts.mak
@@ -1,4 +1,4 @@
-# Copyright (C) 1992, 1995, 1996 Aladdin Enterprises. All rights reserved.
+# Copyright (C) 1992, 1995, 1996, 1998 Aladdin Enterprises. All rights reserved.
#
# This file is part of Aladdin Ghostscript.
#
@@ -18,7 +18,7 @@
# Makefile for compiling PostScript Type 1 fonts into C.
# For more information about fonts, consult the Fontmap file,
-# and also fonts.txt.
+# and also Fonts.htm.
# Edit the following 2 lines to reflect your environment.
OBJ=o
diff --git a/gs/src/contrib.mak b/gs/src/contrib.mak
index 836ce375b..49e1a3130 100644
--- a/gs/src/contrib.mak
+++ b/gs/src/contrib.mak
@@ -709,15 +709,15 @@ $(GLOBJ)gdevxes.$(OBJ): $(GLSRC)gdevxes.c $(PDEVH)
### Note: this driver was contributed by a user: please contact ###
### Rick Richardson (rick@digibd.com) if you have questions. ###
-dfax_=$(GLOBJ)gdevdfax.$(OBJ) $(GLOBJ)gdevtfax.$(OBJ)
+dfax_=$(GLOBJ)gdevdfax.$(OBJ)
-dfaxlow.dev: $(dfax_) page.dev
- $(SETPDEV) dfaxlow $(dfax_)
- $(ADDMOD) dfaxlow -include cfe
+dfaxlow.dev: $(dfax_) tfax.dev
+ $(SETDEV) dfaxlow $(dfax_)
+ $(ADDMOD) dfaxlow -include tfax
-dfaxhigh.dev: $(dfax_) page.dev
- $(SETPDEV) dfaxhigh $(dfax_)
- $(ADDMOD) dfaxhigh -include cfe
+dfaxhigh.dev: $(dfax_) tfax.dev
+ $(SETDEV) dfaxhigh $(dfax_)
+ $(ADDMOD) dfaxhigh -include tfax
$(GLOBJ)gdevdfax.$(OBJ): $(GLSRC)gdevdfax.c $(PDEVH) $(scfx_h) $(strimpl_h)
$(GLCC) $(GLO_)gdevdfax.$(OBJ) $(C_) $(GLSRC)gdevdfax.c
diff --git a/gs/src/devs.mak b/gs/src/devs.mak
index 3f0d10c4e..d96c2748a 100644
--- a/gs/src/devs.mak
+++ b/gs/src/devs.mak
@@ -285,7 +285,7 @@ vga.dev: $(EGAVGA)
# glorified VGA's, so we can handle them all with a single driver.
# The way to select them on the command line is with
# -sDEVICE=svga16 -dDisplayMode=NNN
-# where NNN is the display mode in decimal. See use.txt for the modes
+# where NNN is the display mode in decimal. See Use.htm for the modes
# for some popular display chipsets.
svga16.dev: $(EGAVGA)
diff --git a/gs/src/dvx-gcc.mak b/gs/src/dvx-gcc.mak
index 4da615952..97d1cabf8 100755
--- a/gs/src/dvx-gcc.mak
+++ b/gs/src/dvx-gcc.mak
@@ -56,7 +56,7 @@ GS_LIB_DEFAULT="$(gsdatadir);$(gsfontdir)"
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
@@ -105,7 +105,7 @@ JVERSION=6
# DON'T DO THIS. If you do, the resulting executable will not be able to
# read some PostScript files containing JPEG data, because Adobe chose to
# define PostScript's JPEG capabilities in a way that is slightly
-# incompatible with the JPEG standard. See make.txt for more details.
+# incompatible with the JPEG standard. See Make.htm for more details.
# DON'T SET THIS TO 1! See the comment just above.
SHARE_JPEG=0
@@ -120,7 +120,7 @@ PSRCDIR=libpng
PVERSION=96
# Choose whether to use a shared version of the PNG library (-lpng).
-# See gs.mak and make.txt for more information.
+# See gs.mak and Make.htm for more information.
SHARE_LIBPNG=0
@@ -130,7 +130,7 @@ SHARE_LIBPNG=0
ZSRCDIR=zlib
# Choose whether to use a shared version of the zlib library (-lgz).
-# See gs.mak and make.txt for more information.
+# See gs.mak and Make.htm for more information.
SHARE_ZLIB=0
ZLIB_NAME=gz
diff --git a/gs/src/dwmainc.cpp b/gs/src/dwmainc.cpp
index 143b944d0..321c080c9 100644
--- a/gs/src/dwmainc.cpp
+++ b/gs/src/dwmainc.cpp
@@ -230,7 +230,7 @@ char buf[256];
fputs("\n\
The mswindll device is not supported by the command line version of\n\
Ghostscript. Select a different device using -sDEVICE= as described\n\
-in use.txt.\n", stdout);
+in Use.htm.\n", stdout);
}
break;
case GSDLL_SYNC:
diff --git a/gs/src/echogs.c b/gs/src/echogs.c
index e6c4e136c..657b46e11 100644
--- a/gs/src/echogs.c
+++ b/gs/src/echogs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1997 Aladdin Enterprises. All rights reserved.
+/* Copyright (C) 1992, 1995, 1997, 1998 Aladdin Enterprises. All rights reserved.
This file is part of Aladdin Ghostscript.
@@ -89,14 +89,12 @@ main(int argc, char *argv[])
FILE *in;
char *extn = "";
char fmode[4];
-
#define FNSIZE 100
char *fnparam;
char fname[FNSIZE];
int newline = 1;
int interact = 0;
- int (*eputc) () = fputc, (*eputs) () = fputs;
-
+ int (*eputc)() = fputc, (*eputs)() = fputs;
#define LINESIZE 1000
char line[LINESIZE];
char sw = 0, sp = 0, hexx = 0;
@@ -310,7 +308,8 @@ hputc(int ch, FILE * out)
{
static char *hex = "0123456789abcdef";
- putc(hex[ch >> 4], out);
+ /* In environments where char is signed, ch may be negative (!). */
+ putc(hex[(ch >> 4) & 0xf], out);
putc(hex[ch & 0xf], out);
return 0;
}
diff --git a/gs/src/files.h b/gs/src/files.h
index 9106ef007..a5ba930cc 100644
--- a/gs/src/files.h
+++ b/gs/src/files.h
@@ -111,10 +111,10 @@ int file_switch_to_write(P1(const ref *));
extern const uint file_default_buffer_size;
/* Procedures exported by zfile.c. */
- /* for gs.c */
+ /* for imainarg.c */
FILE *lib_fopen(P1(const char *));
- /* for gsmain.c */
+ /* for imain.c */
int lib_file_open(P6(const char *, uint, byte *, uint, uint *, ref *));
/* for iccinit.c */
diff --git a/gs/src/gdevcmap.c b/gs/src/gdevcmap.c
index 1f71946ba..ed9dc49a4 100644
--- a/gs/src/gdevcmap.c
+++ b/gs/src/gdevcmap.c
@@ -22,6 +22,8 @@
#include "gserrors.h"
#include "gxdevice.h"
#include "gxlum.h"
+#include "gxfrac.h"
+#include "gxdcconv.h"
#include "gdevcmap.h"
/*
@@ -35,11 +37,11 @@ public_st_device_cmap();
/* Device procedures */
private dev_proc_map_rgb_color(cmap_map_rgb_color);
private dev_proc_map_rgb_alpha_color(cmap_map_rgb_alpha_color);
+private dev_proc_map_cmyk_color(cmap_map_cmyk_color);
private dev_proc_put_params(cmap_put_params);
private dev_proc_begin_typed_image(cmap_begin_typed_image);
-private const gx_device_cmap gs_cmap_device =
-{
+private const gx_device_cmap gs_cmap_device = {
std_device_dci_body(gx_device_cmap, 0, "special color mapper",
0, 0, 1, 1,
3, 24, 255, 255, 256, 256),
@@ -53,7 +55,7 @@ private const gx_device_cmap gs_cmap_device =
gx_forward_copy_color,
0, 0, 0,
cmap_put_params,
- gx_default_map_cmyk_color,
+ cmap_map_cmyk_color,
0, 0,
cmap_map_rgb_alpha_color,
0, 0, 0, 0, 0,
@@ -126,38 +128,57 @@ gdev_cmap_set_method(gx_device_cmap * cmdev,
return 0;
}
-/* Map RGB colors. */
-typedef struct cmap_rgb_s {
- gx_color_value red, green, blue;
-} cmap_rgb_t;
-private void
-cmap_convert_rgb_color(const gx_device_cmap * cmdev, cmap_rgb_t * rgb)
+/* Map RGB colors, and convert to the target's native color model. */
+/* Return true if the target is an RGB device, false if CMYK. */
+private bool
+cmap_convert_rgb_color(const gx_device_cmap * cmdev, gx_color_value red,
+ gx_color_value green, gx_color_value blue,
+ gx_color_value cv[4])
{
+ gx_color_value red_out, green_out, blue_out;
+
switch (cmdev->mapping_method) {
case device_cmap_snap_to_primaries:
/* Snap each RGB primary component to 0 or 1 individually. */
- rgb->red =
- (rgb->red <= gx_max_color_value / 2 ? 0 : gx_max_color_value);
- rgb->green =
- (rgb->green <= gx_max_color_value / 2 ? 0 : gx_max_color_value);
- rgb->blue =
- (rgb->blue <= gx_max_color_value / 2 ? 0 : gx_max_color_value);
+ red_out =
+ (red <= gx_max_color_value / 2 ? 0 : gx_max_color_value);
+ green_out =
+ (green <= gx_max_color_value / 2 ? 0 : gx_max_color_value);
+ blue_out =
+ (blue <= gx_max_color_value / 2 ? 0 : gx_max_color_value);
break;
case device_cmap_color_to_black_over_white:
/* Snap black to white, other colors to black. */
- rgb->red = rgb->green = rgb->blue =
- ((rgb->red | rgb->green | rgb->blue) == 0 ?
- gx_max_color_value : 0);
+ red_out = green_out = blue_out =
+ ((red | green | blue) == 0 ? gx_max_color_value : 0);
break;
case device_cmap_identity:
case device_cmap_monochrome:
default:
+ red_out = red, green_out = green, blue_out = blue;
break;
}
+
+ /* Check for a CMYK device. */
+ if (cmdev->target->color_info.num_components <= 3) {
+ cv[0] = red_out, cv[1] = green_out, cv[2] = blue_out;
+ return true;
+ }
+
+ /*
+ * Convert RGB to CMYK using default (null) black generation and
+ * undercolor removal. This isn't right, but we don't have access to an
+ * imager state to provide the correct procedures.
+ */
+ cv[0] = gx_max_color_value - red_out;
+ cv[1] = gx_max_color_value - green_out;
+ cv[2] = gx_max_color_value - blue_out;
+ cv[3] = 0;
+ return false;
}
private gx_color_index
@@ -166,14 +187,14 @@ cmap_map_rgb_color(gx_device * dev, gx_color_value red,
{
const gx_device_cmap *const cmdev = (const gx_device_cmap *)dev;
gx_device *target = cmdev->target;
- cmap_rgb_t rgb;
+ gx_color_value cv[4];
+ bool is_rgb = cmap_convert_rgb_color(cmdev, red, green, blue, cv);
- rgb.red = red;
- rgb.green = green;
- rgb.blue = blue;
- cmap_convert_rgb_color(cmdev, &rgb);
- return target->procs.map_rgb_color(target, rgb.red, rgb.green, rgb.blue);
+ return
+ (is_rgb ? target->procs.map_rgb_color(target, cv[0], cv[1], cv[2]) :
+ target->procs.map_cmyk_color(target, cv[0], cv[1], cv[2], cv[3]));
}
+
private gx_color_index
cmap_map_rgb_alpha_color(gx_device * dev, gx_color_value red,
gx_color_value green, gx_color_value blue,
@@ -181,14 +202,31 @@ cmap_map_rgb_alpha_color(gx_device * dev, gx_color_value red,
{
const gx_device_cmap *const cmdev = (const gx_device_cmap *)dev;
gx_device *target = cmdev->target;
- cmap_rgb_t rgb;
-
- rgb.red = red;
- rgb.green = green;
- rgb.blue = blue;
- cmap_convert_rgb_color(cmdev, &rgb);
- return target->procs.map_rgb_alpha_color(target, rgb.red, rgb.green,
- rgb.blue, alpha);
+ gx_color_value cv[4];
+ bool is_rgb = cmap_convert_rgb_color(cmdev, red, green, blue, cv);
+
+ return
+ (is_rgb ? target->procs.map_rgb_alpha_color(target, cv[0], cv[1],
+ cv[2], alpha) :
+ /****** CMYK DISREGARDS ALPHA ******/
+ target->procs.map_cmyk_color(target, cv[0], cv[1], cv[2], cv[3]));
+}
+
+private gx_color_index
+cmap_map_cmyk_color(gx_device * dev, gx_color_value c,
+ gx_color_value m, gx_color_value y, gx_color_value k)
+{
+ const gx_device_cmap *const cmdev = (const gx_device_cmap *)dev;
+ gx_device *target = cmdev->target;
+ frac frac_rgb[3];
+
+ if (cmdev->mapping_method == device_cmap_identity)
+ return target->procs.map_cmyk_color(target, c, m, y, k);
+ color_cmyk_to_rgb(cv2frac(c), cv2frac(m), cv2frac(y), cv2frac(k),
+ NULL, frac_rgb);
+ return cmap_map_rgb_color(dev, frac2cv(frac_rgb[0]),
+ frac2cv(frac_rgb[1]),
+ frac2cv(frac_rgb[2]));
}
/* Update parameters; copy the device information back afterwards. */
diff --git a/gs/src/gdevjpeg.c b/gs/src/gdevjpeg.c
index 0db65b358..17ef198bb 100644
--- a/gs/src/gdevjpeg.c
+++ b/gs/src/gdevjpeg.c
@@ -182,6 +182,8 @@ jpeg_print_page(gx_device_printer * pdev, FILE * prn_stream)
jcdp->template = s_DCTE_template;
state.template = &jcdp->template;
state.memory = 0;
+ if (state.template->set_defaults)
+ (*state.template->set_defaults) ((stream_state *) & state);
state.QFactor = 1.0; /* disable quality adjustment in zfdcte.c */
state.ColorTransform = 1; /* default for RGB */
/* We insert no markers, allowing the IJG library to emit */
@@ -190,8 +192,6 @@ jpeg_print_page(gx_device_printer * pdev, FILE * prn_stream)
state.Markers.data = 0;
state.Markers.size = 0;
state.data.compress = jcdp;
- if (state.template->set_defaults)
- (*state.template->set_defaults) ((stream_state *) & state);
jcdp->memory = state.jpeg_memory = mem;
if ((code = gs_jpeg_create_compress(&state)) < 0)
goto fail;
diff --git a/gs/src/gdevprn.c b/gs/src/gdevprn.c
index ac5fc9411..6895dcce3 100644
--- a/gs/src/gdevprn.c
+++ b/gs/src/gdevprn.c
@@ -633,6 +633,8 @@ label:\
ppdev->space_params = sp;
/* If necessary, free and reallocate the printer memory. */
+ /* Formerly, would not reallocate if device is not open: */
+ /* we had to patch this out (see News for 5.50). */
code = gdev_prn_maybe_reallocate_memory(ppdev, &save_sp, width, height);
if (code < 0)
return code;
@@ -883,8 +885,9 @@ gdev_prn_maybe_reallocate_memory(gx_device_printer *prdev,
{
int code = 0;
gx_device *const pdev = (gx_device *)prdev;
- gx_device_memory * mdev = (gx_device_memory *)prdev;
-
+ gx_device_memory * const mdev = (gx_device_memory *)prdev;
+
+ /* The first test here used to be prdev->open. See News for 5.50. */
if (mdev->base != 0 &&
(memcmp(&prdev->space_params, old_sp, sizeof(*old_sp)) != 0 ||
prdev->width != old_width || prdev->height != old_height )
diff --git a/gs/src/gdevstc.c b/gs/src/gdevstc.c
index b87d05188..56528f522 100644
--- a/gs/src/gdevstc.c
+++ b/gs/src/gdevstc.c
@@ -3453,7 +3453,7 @@ stc_hscmyk(stcolor_device *sdev,int npixel,byte *in,byte *buf,byte *out)
v -= 1023;
pixel = BLACK;
- errv[3-(step<<2)] += ((3*v+8)>>4); /* 3/16 */
+ errv[3-(step<<2)] += ((3*t+8)>>4); /* 3/16 */
errv[3] = ((5*v+errc[3]+8)>>4);/* 5/16 +1/16 (rest) */
errc[3] = v;
diff --git a/gs/src/gdevxalt.c b/gs/src/gdevxalt.c
index 1c034e505..c3836fa7b 100644
--- a/gs/src/gdevxalt.c
+++ b/gs/src/gdevxalt.c
@@ -290,9 +290,21 @@ x_wrap_get_bits(gx_device * dev, int y, byte * str, byte ** actual_data)
pixel = (pixel << 8) + *sptr;
}
if (pixel != pixel_in) {
- (*dev_proc(tdev, map_color_rgb)) (tdev, pixel, rgb);
+ (*dev_proc(tdev, map_color_rgb))(tdev, pixel, rgb);
pixel_in = pixel;
- pixel_out = (*dev_proc(dev, map_rgb_color)) (dev, rgb[0], rgb[1], rgb[2]);
+ if (tdev->color_info.num_components <= 3)
+ pixel_out = (*dev_proc(dev, map_rgb_color))
+ (dev, rgb[0], rgb[1], rgb[2]);
+ else {
+ /* Convert RGB to CMYK. */
+ gx_color_value c = gx_max_color_value - rgb[0];
+ gx_color_value m = gx_max_color_value - rgb[1];
+ gx_color_value y = gx_max_color_value - rgb[2];
+ gx_color_value k = (c < m ? min(c, y) : min(m, y));
+
+ pixel_out = (*dev_proc(dev, map_cmyk_color))
+ (dev, c - k, m - k, y - k, k);
+ }
}
line_accum(pixel_out, depth);
}
@@ -461,7 +473,6 @@ x_alt_map_color(gx_device * dev, gx_color_index color)
/* ---------------- CMYK procedures ---------------- */
/* Device procedures */
-private dev_proc_map_rgb_color(x_cmyk_map_rgb_color);
private dev_proc_map_cmyk_color(x_cmyk_map_cmyk_color);
/* The device descriptor */
@@ -472,7 +483,7 @@ private const gx_device_procs x_cmyk_procs =
x_forward_sync_output,
x_forward_output_page,
x_wrap_close,
- x_cmyk_map_rgb_color,
+ NULL, /* map_rgb_color */
x_wrap_map_color_rgb,
x_wrap_fill_rectangle,
gx_default_tile_rectangle,
@@ -528,21 +539,6 @@ const gx_device_X_wrapper gs_x11cmyk8_device = {
/* Device procedures */
private gx_color_index
-x_cmyk_map_rgb_color(gx_device * dev,
- gx_color_value r, gx_color_value g, gx_color_value b)
-{ /*
- * Under normal circumstances, this is never called, but it may be
- * called from x_wrap_get_bits.
- */
- gx_color_value c = gx_max_color_value - r;
- gx_color_value m = gx_max_color_value - g;
- gx_color_value y = gx_max_color_value - b;
- gx_color_value k = (c < m ? min(c, y) : min(m, y));
-
- return (*dev_proc(dev, map_cmyk_color)) (dev, c - k, m - k, y - k, k);
-}
-
-private gx_color_index
x_cmyk_map_cmyk_color(gx_device * dev,
gx_color_value c, gx_color_value m, gx_color_value y,
gx_color_value k)
diff --git a/gs/src/gp_nsync.c b/gs/src/gp_nsync.c
index c49cfeaae..7210aeb05 100644
--- a/gs/src/gp_nsync.c
+++ b/gs/src/gp_nsync.c
@@ -41,9 +41,10 @@ gp_semaphore_open(gp_semaphore * sema)
return 0;
}
-void
+int
gp_semaphore_close(gp_semaphore * sema)
{
+ return 0;
}
int
@@ -78,9 +79,10 @@ gp_monitor_open(gp_monitor * mon)
return 0;
}
-void
+int
gp_monitor_close(gp_monitor * mon)
{
+ return 0;
}
int
diff --git a/gs/src/gp_posem.c b/gs/src/gp_posem.c
index ed01a0c89..7112f292b 100644
--- a/gs/src/gp_posem.c
+++ b/gs/src/gp_posem.c
@@ -49,7 +49,7 @@ gp_semaphore_open(gp_semaphore * sema)
return SEM_ERROR_CODE(scode);
}
-void
+int
gp_semaphore_close(gp_semaphore * sema)
{
sem_t * const sem = (sem_t *)sema;
diff --git a/gs/src/gp_semon.c b/gs/src/gp_semon.c
index 317ede8fa..335c65178 100644
--- a/gs/src/gp_semon.c
+++ b/gs/src/gp_semon.c
@@ -48,7 +48,7 @@ gp_monitor_open(gp_monitor * mon)
return gp_semaphore_signal(&semon->sem);
}
-void
+int
gp_monitor_close(gp_monitor * mon)
{
semaphore_monitor_t * const semon = (semaphore_monitor_t *)mon;
diff --git a/gs/src/gp_win32.c b/gs/src/gp_win32.c
index ec6667683..e6513d19b 100644
--- a/gs/src/gp_win32.c
+++ b/gs/src/gp_win32.c
@@ -150,7 +150,7 @@ gp_semaphore_open(
return 0; /* Win32 semaphores handles may be moved */
}
-void
+int
gp_semaphore_close(
gp_semaphore * sema /* semaphore to affect */
)
@@ -160,6 +160,7 @@ gp_semaphore_close(
if (winSema->handle != NULL)
CloseHandle(winSema->handle);
winSema->handle = NULL;
+ return 0;
}
int /* rets 0 ok, -ve error */
@@ -213,7 +214,7 @@ gp_monitor_open(
return 1; /* Win32 critical sections mutsn't be moved */
}
-void
+int
gp_monitor_close(
gp_monitor * mon /* monitor to affect */
)
@@ -221,6 +222,7 @@ gp_monitor_close(
win32_monitor *const winMon = (win32_monitor *)mon;
DeleteCriticalSection(&winMon->lock); /* rets no status */
+ return 0;
}
int /* rets 0 ok, -ve error */
diff --git a/gs/src/gpsync.h b/gs/src/gpsync.h
index b93dd54dd..589e2c4be 100644
--- a/gs/src/gpsync.h
+++ b/gs/src/gpsync.h
@@ -43,7 +43,7 @@ uint gp_semaphore_sizeof(P0());
* to move a gp_semaphore in memory.
*/
int gp_semaphore_open(P1(gp_semaphore * sema));
-void gp_semaphore_close(P1(gp_semaphore * sema));
+int gp_semaphore_close(P1(gp_semaphore * sema));
int gp_semaphore_wait(P1(gp_semaphore * sema));
int gp_semaphore_signal(P1(gp_semaphore * sema));
@@ -61,7 +61,7 @@ uint gp_monitor_sizeof(P0());
* to move a gp_monitor in memory.
*/
int gp_monitor_open(P1(gp_monitor * mon));
-void gp_monitor_close(P1(gp_monitor * mon));
+int gp_monitor_close(P1(gp_monitor * mon));
int gp_monitor_enter(P1(gp_monitor * mon));
int gp_monitor_leave(P1(gp_monitor * mon));
diff --git a/gs/src/gs-fonts.rps b/gs/src/gs-fonts.rps
new file mode 100644
index 000000000..e8c567840
--- /dev/null
+++ b/gs/src/gs-fonts.rps
@@ -0,0 +1,33 @@
+#
+
+# Spec file for fonts for Aladdin Ghostscript 5.50
+#
+# Based on RPM Spec file by RedHat for GNU Ghostscript 3.33
+#
+Summary: Fonts for the GhostScript interpreter
+Name: ghostscript-fonts
+Version: 5.50
+Release: 1
+Copyright: Aladdin Enterprises Free Public Licence
+#Icon: ghost.gif
+Group: Applications/Graphics
+BuildRoot: /var/tmp/gsfonts
+Source0: ftp://ftp.cs.wisc.edu/ghost/aladdin/fonts/ghostscript-fonts-std-5.10a.tar.gz
+Requires: ghostscript
+BuildArchitectures: noarch
+
+%description
+These fonts are used by the GhostScript interpreter during text rendering.
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/usr/share/ghostscript/fonts
+cd $RPM_BUILD_ROOT/usr/share/ghostscript
+tar xvzf $RPM_SOURCE_DIR/ghostscript-fonts-std-5.10a.tar.gz
+chown -R 0.0 fonts
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+/usr/share/ghostscript/fonts
diff --git a/gs/src/gs.mak b/gs/src/gs.mak
index 4d6a8dd59..d10c41f3d 100644
--- a/gs/src/gs.mak
+++ b/gs/src/gs.mak
@@ -368,7 +368,7 @@ $(devs_tr): $(GS_MAK) $(MAKEFILE) $(ECHOGS_XE)
GCONFIG_EXTRAS=
ld_tr=$(GLGEN)ld$(CONFIG).tr
-$(gconfig_h) $(ld_tr) lib.tr: \
+$(gconfig_h) $(ld_tr) $(GLGEN)lib.tr: \
$(GS_MAK) $(MAKEFILE) $(GLSRC)version.mak $(GENCONF_XE) $(ECHOGS_XE) $(devs_tr) $(DEVS_ALL) libcore.dev
$(GENCONF_XE) $(devs_tr) libcore.dev -h $(gconfig_h) $(CONFILES) $(CONFLDTR) $(ld_tr)
$(ECHOGS_XE) -a $(gconfig_h) -x 23 define -s -u GS_LIB_DEFAULT -x 2022 $(GS_LIB_DEFAULT) -x 22
diff --git a/gs/src/gs.rps b/gs/src/gs.rps
new file mode 100644
index 000000000..5f8bd27b8
--- /dev/null
+++ b/gs/src/gs.rps
@@ -0,0 +1,96 @@
+#
+
+# Spec file for Aladdin Ghostscript 5.50
+#
+# Based on RPM Spec file by RedHat for GNU Ghostscript 3.33
+#
+# For each new version of Ghostscript, you will need to change
+# Version:
+# Source[0-3]:
+# Patch:
+# Patch1:
+# directory renaming of 3rd party libraries in %prep
+# update the patch files.
+#
+#
+Summary: PostScript interpreter and renderer
+Name: ghostscript
+Version: 5.50
+Release: 1
+Copyright: Aladdin Free Public License, Aladdin Enterprises
+Group: Applications/Graphics
+Source0: ftp://ftp.cs.wisc.edu/ghost/aladdin/gs550/ghostscript-5.50.tar.gz
+Source1: ftp://ftp.cs.wisc.edu/ghost/aladdin/gs550/ghostscript-5.50jpeg.tar.gz
+Source2: ftp://ftp.cs.wisc.edu/ghost/aladdin/gs550/ghostscript-5.50libpng.tar.gz
+Source3: ftp://ftp.cs.wisc.edu/ghost/aladdin/gs550/ghostscript-5.50zlib.tar.gz
+Patch: ghostscript-5.50-config.patch
+# comment out the following line if no post release patches are available.
+#Patch1: ghostscript-5.50-post.patch
+URL: http://www.cs.wisc.edu/~ghost/
+#Icon: ghost.gif
+#Distribution: Unknown
+Vendor: Aladdin Enterprises
+Packager: Russell Lang http://www.cs.wisc.edu/~ghost/rjl.html
+Requires: ghostscript-fonts
+BuildRoot: /var/tmp/ghostscript-root
+
+%description
+Ghostscript is a PostScript interpreter. It can render both PostScript
+and PDF compliant files to devices which include an X window, many printer
+formats (including support for colour printers), and popular graphics
+file formats.
+
+%prep
+# remove old directory
+rm -rf $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}
+mkdir $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}
+#
+# unpack main sources
+%setup -n gs%{PACKAGE_VERSION}
+#
+# unpack jpeg
+%setup -T -D -a 1 -n gs%{PACKAGE_VERSION}
+# For gs 5.50, rename jpeg subdirectory
+mv $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}/jpeg-6b $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}/jpeg
+#
+# unpack libpng
+%setup -T -D -a 2 -n gs%{PACKAGE_VERSION}
+# For gs 5.50, rename libpng subdirectory
+mv $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}/libpng-1.0.2 $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}/libpng
+#
+# unpack zlib
+%setup -T -D -a 3 -n gs%{PACKAGE_VERSION}
+# For gs 5.50, rename zlib subdirectory
+mv $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}/zlib-1.1.3 $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}/zlib
+#
+# copy the makefile, then patch the new copy
+cp $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}/unix-gcc.mak $RPM_BUILD_DIR/gs%{PACKAGE_VERSION}/Makefile
+%patch -p1 -b .config
+# apply the post release patches (comment out following line if none)
+#%patch1 -p1 -b .post
+
+
+%build
+make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" prefix=/usr
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/usr/{bin,man,doc}
+make install prefix=$RPM_BUILD_ROOT/usr
+ln -sf gs.1 $RPM_BUILD_ROOT/usr/man/man1/ghostscript.1
+ln -sf gs $RPM_BUILD_ROOT/usr/bin/ghostscript
+strip $RPM_BULD_ROOT /usr/bin/gs
+
+
+%files
+/usr/doc/ghostscript-%{PACKAGE_VERSION}
+/usr/bin/*
+%dir /usr/share/ghostscript
+%dir /usr/share/ghostscript/%{PACKAGE_VERSION}
+/usr/share/ghostscript/%{PACKAGE_VERSION}/*ps
+/usr/share/ghostscript/%{PACKAGE_VERSION}/*.upp
+/usr/share/ghostscript/%{PACKAGE_VERSION}/*.ppd
+%config /usr/share/ghostscript/%{PACKAGE_VERSION}/Fontmap
+/usr/share/ghostscript/%{PACKAGE_VERSION}/examples
+/usr/man/*/*
+
diff --git a/gs/src/gsalloc.c b/gs/src/gsalloc.c
index 6658bb2d8..db130a0d2 100644
--- a/gs/src/gsalloc.c
+++ b/gs/src/gsalloc.c
@@ -82,8 +82,7 @@ private RELOC_PTRS_BEGIN(ref_memory_reloc_ptrs)
RELOC_PTR(gs_ref_memory_t, streams);
RELOC_PTR(gs_ref_memory_t, changes);
/* Don't relocate the saved pointer now -- see igc.c for details. */
- mptr->reloc_saved =
- (*gc_proc(gcst, reloc_struct_ptr)) (mptr->saved, gcst);
+ mptr->reloc_saved = RELOC_OBJ(mptr->saved);
}
RELOC_PTRS_END
diff --git a/gs/src/gscdevn.c b/gs/src/gscdevn.c
index 76c286876..221593940 100644
--- a/gs/src/gscdevn.c
+++ b/gs/src/gscdevn.c
@@ -28,14 +28,15 @@ gs_private_st_composite(st_color_space_DeviceN, gs_paint_color_space,
"gs_color_space_DeviceN", cs_DeviceN_enum_ptrs, cs_DeviceN_reloc_ptrs);
/* Define the DeviceN color space type. */
-cs_declare_procs(private, gx_concretize_DeviceN, gx_install_DeviceN,
- gx_adjust_cspace_DeviceN);
private cs_proc_num_components(gx_num_components_DeviceN);
private cs_proc_base_space(gx_alt_space_DeviceN);
+private cs_proc_init_color(gx_init_DeviceN);
private cs_proc_restrict_color(gx_restrict_DeviceN);
private cs_proc_concrete_space(gx_concrete_space_DeviceN);
+private cs_proc_concretize_color(gx_concretize_DeviceN);
private cs_proc_remap_concrete_color(gx_remap_concrete_DeviceN);
-private cs_proc_init_color(gx_init_DeviceN);
+private cs_proc_install_cspace(gx_install_DeviceN);
+private cs_proc_adjust_cspace_count(gx_adjust_cspace_DeviceN);
const gs_color_space_type gs_color_space_type_DeviceN = {
gs_color_space_index_DeviceN, true, false,
&st_color_space_DeviceN, gx_num_components_DeviceN,
diff --git a/gs/src/gscie.h b/gs/src/gscie.h
index d061dd30a..9b5c0ba3a 100644
--- a/gs/src/gscie.h
+++ b/gs/src/gscie.h
@@ -122,7 +122,6 @@ typedef long cie_cached_value;
# define cie_cached_rshift(v, n) arith_rshift(v, n)
#else
typedef float cie_cached_value;
-
# define float2cie_cached(v) (v)
# define cie_cached2float(v) (v)
# define cie_cached2int(v, fbits)\
@@ -273,7 +272,7 @@ typedef struct gs_cie_wb_s {
rendering TransformPQR RangePQR
(but depends on color space White/BlackPoints)
rendering EncodeLMN RangePQR transformed by the inverse of
- MatrixPQR and then by MatrixLMN
+ MatrixPQR and then by MatrixLMN
rendering EncodeABC RangeLMN transformed by MatrixABC
rendering RenderTable.T [0..1]*m
@@ -381,9 +380,9 @@ struct gs_cie_a_s {
#define private_st_cie_a() /* in gscscie.c */\
gs_private_st_suffix_add0_local(st_cie_a, gs_cie_a, "gs_cie_a",\
- cie_common_enum_ptrs,\
- cie_common_reloc_ptrs,\
- st_cie_common_elements_t)
+ cie_common_enum_ptrs,\
+ cie_common_reloc_ptrs,\
+ st_cie_common_elements_t)
/* Common elements for CIEBasedABC, DEF, and DEFG dictionaries. */
#define gs_cie_abc_elements\
@@ -611,11 +610,13 @@ int gs_cie_render_complete(P1(gs_cie_render *));
*/
extern int
gs_cspace_build_CIEA(P3(gs_color_space ** ppcspace, void *client_data,
- gs_memory_t * pmem)), gs_cspace_build_CIEABC(P3(gs_color_space ** ppcspace, void *client_data,
- gs_memory_t * pmem)),
- gs_cspace_build_CIEDEF(P3(gs_color_space ** ppcspace, void *client_data,
- gs_memory_t * pmem)), gs_cspace_build_CIEDEFG(P3(gs_color_space ** ppcspace, void *client_data,
- gs_memory_t * pmem));
+ gs_memory_t * pmem)),
+ gs_cspace_build_CIEABC(P3(gs_color_space ** ppcspace, void *client_data,
+ gs_memory_t * pmem)),
+ gs_cspace_build_CIEDEF(P3(gs_color_space ** ppcspace, void *client_data,
+ gs_memory_t * pmem)),
+ gs_cspace_build_CIEDEFG(P3(gs_color_space ** ppcspace, void *client_data,
+ gs_memory_t * pmem));
/* ------ Accessors ------ */
@@ -660,7 +661,7 @@ extern int
* CIEBasedDEF[G] color lookup table structure. It is doubtful any
* high-level clients will ever need to get this information.
*
- * The caller must make sure the numder of dimensions and strings provided
+ * The caller must make sure the number of dimensions and strings provided
* are the number expected given the number of components in the color space.
* The procedure gs_color_space_num_components is available for this purpose.
*
diff --git a/gs/src/gscolor2.c b/gs/src/gscolor2.c
index c737efa3c..26b114531 100644
--- a/gs/src/gscolor2.c
+++ b/gs/src/gscolor2.c
@@ -132,11 +132,12 @@ gs_private_st_composite(st_color_space_Indexed, gs_paint_color_space,
/* ------ Color space ------ */
/* Define the Indexed color space type. */
-cs_declare_procs(private, gx_concretize_Indexed, gx_install_Indexed,
- gx_adjust_cspace_Indexed);
private cs_proc_base_space(gx_base_space_Indexed);
private cs_proc_restrict_color(gx_restrict_Indexed);
private cs_proc_concrete_space(gx_concrete_space_Indexed);
+private cs_proc_concretize_color(gx_concretize_Indexed);
+private cs_proc_install_cspace(gx_install_Indexed);
+private cs_proc_adjust_cspace_count(gx_adjust_cspace_Indexed);
const gs_color_space_type gs_color_space_type_Indexed = {
gs_color_space_index_Indexed, false, false,
&st_color_space_Indexed, gx_num_components_1,
diff --git a/gs/src/gscpixel.c b/gs/src/gscpixel.c
index 682153058..e2b47e87f 100644
--- a/gs/src/gscpixel.c
+++ b/gs/src/gscpixel.c
@@ -54,7 +54,7 @@ gs_cs_init_DevicePixel(gs_color_space * pcs, int depth)
private void
gx_restrict_DevicePixel(gs_client_color * pcc, const gs_color_space * pcs)
{
-/****** NOT ENOUGH BITS IN float OR frac ******/
+ /****** NOT ENOUGH BITS IN float OR frac ******/
floatp pixel = pcc->paint.values[0];
ulong max_value = (1L << pcs->params.pixel.depth) - 1;
@@ -68,7 +68,7 @@ private int
gx_concretize_DevicePixel(const gs_client_color * pc, const gs_color_space * pcs,
frac * pconc, const gs_imager_state * pis)
{
-/****** NOT ENOUGH BITS IN float OR frac ******/
+ /****** NOT ENOUGH BITS IN float OR frac ******/
pconc[0] = (frac) (ulong) pc->paint.values[0];
return 0;
}
diff --git a/gs/src/gscscie.c b/gs/src/gscscie.c
index 70bd1d19e..a6a42003d 100644
--- a/gs/src/gscscie.c
+++ b/gs/src/gscscie.c
@@ -53,9 +53,10 @@ private cs_proc_install_cspace(gx_install_CIE);
gs_private_st_ptrs1(st_color_space_CIEDEFG, gs_base_color_space,
"gs_color_space(CIEDEFG)", cs_CIEDEFG_enum_ptrs, cs_CIEDEFG_reloc_ptrs,
params.defg);
-cs_declare_render_procs(extern, gx_concretize_CIEDEFG, gx_install_CIEDEFG);
-cs_declare_memory_procs(private, gx_adjust_cspace_CIEDEFG);
extern cs_proc_restrict_color(gx_restrict_CIEDEFG);
+extern cs_proc_concretize_color(gx_concretize_CIEDEFG);
+extern cs_proc_install_cspace(gx_install_CIEDEFG);
+private cs_proc_adjust_cspace_count(gx_adjust_cspace_CIEDEFG);
const gs_color_space_type gs_color_space_type_CIEDEFG = {
gs_color_space_index_CIEDEFG, true, true,
&st_color_space_CIEDEFG, gx_num_components_4,
@@ -71,9 +72,10 @@ const gs_color_space_type gs_color_space_type_CIEDEFG = {
gs_private_st_ptrs1(st_color_space_CIEDEF, gs_base_color_space,
"gs_color_space(CIEDEF)", cs_CIEDEF_enum_ptrs, cs_CIEDEF_reloc_ptrs,
params.def);
-cs_declare_render_procs(extern, gx_concretize_CIEDEF, gx_install_CIEDEF);
-cs_declare_memory_procs(private, gx_adjust_cspace_CIEDEF);
extern cs_proc_restrict_color(gx_restrict_CIEDEF);
+extern cs_proc_concretize_color(gx_concretize_CIEDEF);
+extern cs_proc_install_cspace(gx_install_CIEDEF);
+private cs_proc_adjust_cspace_count(gx_adjust_cspace_CIEDEF);
const gs_color_space_type gs_color_space_type_CIEDEF = {
gs_color_space_index_CIEDEF, true, true,
&st_color_space_CIEDEF, gx_num_components_3,
@@ -89,10 +91,11 @@ const gs_color_space_type gs_color_space_type_CIEDEF = {
gs_private_st_ptrs1(st_color_space_CIEABC, gs_base_color_space,
"gs_color_space(CIEABC)", cs_CIEABC_enum_ptrs, cs_CIEABC_reloc_ptrs,
params.abc);
-cs_declare_render_procs(extern, gx_concretize_CIEABC, gx_install_CIEABC);
-cs_declare_memory_procs(private, gx_adjust_cspace_CIEABC);
+cs_proc_restrict_color(gx_restrict_CIEABC);
+cs_proc_concretize_color(gx_concretize_CIEABC);
+cs_proc_install_cspace(gx_install_CIEABC);
+private cs_proc_adjust_cspace_count(gx_adjust_cspace_CIEABC);
extern cs_proc_remap_color(gx_remap_CIEABC);
-extern cs_proc_restrict_color(gx_restrict_CIEABC);
const gs_color_space_type gs_color_space_type_CIEABC = {
gs_color_space_index_CIEABC, true, true,
&st_color_space_CIEABC, gx_num_components_3,
@@ -108,9 +111,10 @@ const gs_color_space_type gs_color_space_type_CIEABC = {
gs_private_st_ptrs1(st_color_space_CIEA, gs_base_color_space,
"gs_color_space(CIEA)", cs_CIEA_enum_ptrs, cs_CIEA_reloc_ptrs,
params.a);
-cs_declare_render_procs(extern, gx_concretize_CIEA, gx_install_CIEA);
-cs_declare_memory_procs(private, gx_adjust_cspace_CIEA);
-extern cs_proc_restrict_color(gx_restrict_CIEA);
+cs_proc_restrict_color(gx_restrict_CIEA);
+cs_proc_concretize_color(gx_concretize_CIEA);
+cs_proc_install_cspace(gx_install_CIEA);
+private cs_proc_adjust_cspace_count(gx_adjust_cspace_CIEA);
const gs_color_space_type gs_color_space_type_CIEA = {
gs_color_space_index_CIEA, true, true,
&st_color_space_CIEA, gx_num_components_1,
diff --git a/gs/src/gscsepr.c b/gs/src/gscsepr.c
index 44cdeeed9..8b15723b9 100644
--- a/gs/src/gscsepr.c
+++ b/gs/src/gscsepr.c
@@ -35,12 +35,13 @@ gs_private_st_composite(st_color_space_Separation, gs_paint_color_space,
cs_Separation_enum_ptrs, cs_Separation_reloc_ptrs);
/* Define the Separation color space type. */
-cs_declare_procs(private, gx_concretize_Separation, gx_install_Separation,
- gx_adjust_cspace_Separation);
private cs_proc_base_space(gx_alt_space_Separation);
+private cs_proc_init_color(gx_init_Separation);
private cs_proc_concrete_space(gx_concrete_space_Separation);
+private cs_proc_concretize_color(gx_concretize_Separation);
private cs_proc_remap_concrete_color(gx_remap_concrete_Separation);
-private cs_proc_init_color(gx_init_Separation);
+private cs_proc_install_cspace(gx_install_Separation);
+private cs_proc_adjust_cspace_count(gx_adjust_cspace_Separation);
const gs_color_space_type gs_color_space_type_Separation = {
gs_color_space_index_Separation, true, false,
&st_color_space_Separation, gx_num_components_1,
diff --git a/gs/src/gsdevice.c b/gs/src/gsdevice.c
index d49afa03d..ba4b1dea8 100644
--- a/gs/src/gsdevice.c
+++ b/gs/src/gsdevice.c
@@ -86,7 +86,7 @@ gx_device_reloc_ptr(gx_device * dev, gc_state_t * gcst)
{
if (dev == 0 || dev->memory == 0)
return dev;
- return (*gc_proc(gcst, reloc_struct_ptr)) (dev, gcst);
+ return RELOC_OBJ(dev); /* gcst implicit */
}
/* Set up the device procedures in the device structure. */
diff --git a/gs/src/gsfont.c b/gs/src/gsfont.c
index a6e014d7c..fde96c899 100644
--- a/gs/src/gsfont.c
+++ b/gs/src/gsfont.c
@@ -119,8 +119,7 @@ private RELOC_PTRS_BEGIN(font_dir_reloc_ptrs);
if (cc != 0)
cc_set_pair_only(cc,
(cached_fm_pair *)
- (*gc_proc(gcst, reloc_struct_ptr))
- (cc_pair(cc) - cc->pair_index, gcst) +
+ RELOC_OBJ(cc_pair(cc) - cc->pair_index) +
cc->pair_index);
}
}
diff --git a/gs/src/gsgraph.icx b/gs/src/gsgraph.icx
index 0005dbf45..8e299d65f 100644
--- a/gs/src/gsgraph.icx
+++ b/gs/src/gsgraph.icx
@@ -1,48 +1,127 @@
-0000010001002020100000000000e802
-00001600000028000000200000004000
+0000010004002020100000000000e802
+00004600000010101000000000002801
+00002e0300001414100000000000a801
+0000560400001818100000000000e801
+0000fe05000028000000200000004000
00000100040000000000800200000000
00000000000000000000000000000000
00000000800000800000008080008000
-00008000800080800000808080004040
-40000000ff0000ff000000ffff00ff00
-0000ff00ff00ffff0000ffffff00cccc
-cccccccccccccccccccccccccccccccc
-ccccccccccccccbbbbccccccccccccbc
-bccbccbccbbbbcccccbccbbbccccccbc
-bccbccbcbcccbccbbbbcbcccccccccbc
-bccbccbccbbbbcbcccbcbbbbbcccccbc
-bccbccbcccccbcbcccbcbcccbcccccbc
-bbbcbbcccbbbcccbbbbccbbbcccccccc
-ccccccccccccccccccccccccccccccbc
-cccccccccccccccccccccccccccccccc
-cccccccccccccccccccccccccccc0000
-00fffffffffffffffff0000000000000
-000ffffffffffff0f000000000000000
-0000ffffffffffff0000000000000000
-00000ffffffffffff000000f000000ff
-000ff0fffffffffff00ffffff000000f
-ffff0fffffffffff0ffffffff0000fff
-fffff0fffffffffffffffffffff00000
-fffffffffffffffffffff000ff0000ff
-f000fffffffffffffffff0000ff000f0
-0000ffffffffffffffff000000000000
-00000ffffffffffff0f0000000000000
-0000000fff0ff00fff00000000000000
-0000000ff0fff00fff00000000000000
-0000000000ffffffff00000000000000
-0000000000ffffffff00000000000000
-0000000000ff0f0ff000000000000000
-00000000000fffff0000000000000000
-00000000000ffff00000000000000000
-0000000000ffff000000000000000000
-000000000ffff0000000000000000000
-0000000000ff00000000000000000000
+00008000800080800000c0c0c0008080
+80000000ff0000ff000000ffff00ff00
+0000ff00ff00ffff0000ffffff000000
+0000fffffffffffff000000000000000
+00ffcccccccccccccffff00000000000
+ffccccfffffffffffccccff00000000f
+ccccfffffffffffffffffccf0000000f
+cccffffffcccccccccccfffcf00000fc
+cccfffffcfffffffffccccffcf0000fc
+cccfffffcffffffffffccccff000000f
+ccccfffffffffffffffcccccf0000000
+fffffffffffffffffccccccccf000000
+00ffcccccccccccccccccccccf000000
+0fccccccccccccccccccccccf0000000
+fccccccccccccccccccccccf0000000f
+ccccccccccccccccccccccf00000000f
+cccccccccccccccccccfff000000000f
+cccccccfffffffffffff000000000000
+fcccccfffffffffff000000000000000
+0fccccccccffffffff00000000000000
+00ffffcccccfffffcff0000000000000
+000fccccccfffffffccf000000000000
+00fccccccfffccfffcccf00000000000
+0fccccccffffccfffccccf0000000000
+fccccccfffffffffccccccf000000000
+fccccccffcfffffcccccccf000000000
+fccccccffcfcffccccccccf000000000
+0fcccccffffcffccccccccf000000000
+0fccccccfffffffccccccf0000000000
+00fcccccccffffffccccf00000000000
+000fccccccccccfffcccf00000000000
+0000fffccccccccfffccf00000000000
+0000000ffffffffcffcf000000000000
+000000000000000fcfcf000000000000
+000000000000000fcff000000000ff00
+07fffc00007ff000001fe000000fe000
+0007c0000003c0000007e0000007f000
+0003fc000003f8000007f000000fe000
+001fe000003fe00000fff00007fff800
+03fffc0001fffe0000fffc00007ff800
+003ff000001ff000001ff000001ff800
+001ff800003ffc00007ffe00007fff00
+007fffe000ffffffe0ffffffe1ff2800
+00001000000020000000010004000000
+0000c000000000000000000000000000
+00000000000000000000000080000080
+00000080800080000000800080008080
+0000c0c0c000808080000000ff0000ff
+000000ffff00ff000000ff00ff00ffff
+0000ffffff000cccc000000000000000
+cccfffcc000000cccccfffffcc000ccc
+ccfffffffcc00ccccfffccfffccccccc
+cfffccffccccccccfffffffccccccccc
+ffcfffccccccccccffcfcfcccccccccc
+cfffcffccccc0ccccccfffffccc000cc
+ccccccfffcc00000cccccccffcc00000
+0000000cfcc0000000000000fc000000
+00000000c00087ff5408f00f0000c003
+00008001766580004327000050720000
+72610000433a0000726f0000616d8001
+696cc0015c4df001f00dffe1800afff3
+0005fff7000a28000000140000002800
+00000100040000000000400100000000
00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-000000000000f80000fffc0001fffe00
-07efcc00020780000003800000010000
-0000800000018000003086000079df00
-00ffff8001ffffc001ffffe001fffff8
-01fffff803fffff807fffffc0ffffff8
-1ffffff03ffffff87ffffffcffff
+00000000800000800000008080008000
+00008000800080800000c0c0c0008080
+80000000ff0000ff000000ffff00ff00
+0000ff00ff00ffff0000ffffff0000cc
+cccffffff0000000000000000ccccfff
+ffc0000002610000ccccccfffffc0000
+0172000ccccccfffffffcc00073d00cc
+ccccffffffffccc002000cccccccfffc
+cfffcccc00000ccccccffffccfffcccc
+ffffccccccfffffffffccccc0030cccc
+ccffffffffccccccffffccccccffcfff
+fccccccc0054ccccccffcfcffccccccc
+ffffccccccffffcffccccccc002c0ccc
+cccfffffffccccccffc000cccccccfff
+fffcccc00034000ccccccccccfffccc0
+80ff00000cccccccccfffcc0006d0000
+0000000000cffcc000ff000000000000
+00cffc0000450000000000000cffc000
+00ff000000000000000c0000000ac007
+fc1ff801f000f000f0ffe0003f00c000
+10008000003a80000f00000000000000
+00ff00000f0000000000000000698000
+0fffc0001000e00010fff8001f00fffc
+1000fffc3073fff87ffffffeffff2800
+00001800000030000000010004000000
+00008001000000000000000000000000
+00000000000000000000000080000080
+00000080800080000000800080008080
+0000c0c0c000808080000000ff0000ff
+000000ffff00ff000000ff00ff00ffff
+0000ffffff0000000000000000000000
+00000000cccccfffffff000000000000
+00cccccfffffcc000000000000cccccc
+fffffcc000000000cccccccffffffccc
+0000000cccccccffffffffccc000000c
+cccccffffffffffccc0000ccccccffff
+fccffffccc0000ccccccfffffccfffcc
+ccc00ccccccffffffffffcccccc00ccc
+cccfffffffffccccccc00ccccccfffcf
+fffcccccccc00ccccccfffcfcffccccc
+ccc00cccccccffffcffcccccccc000cc
+cccccfffffffccccccc0000ccccccccf
+fffffcccccc00000ccccccccccffffcc
+cc0000000cccccccccccfffccc000000
+00000ccccccccffccc00000000000000
+0000cffccc000000000000000000cffc
+c000000000000000000ccfcc00000000
+0000000000000cc00000000000000000
+000000000000ffffff00f000ff00fc00
+3f00fc001f00f0000f00e0000700e000
+0300c0000300c0000100800001008000
+0100800001008000010080000100c000
+0100e0000100f0000300f8000300ff80
+0300ffff0300ffff0700fffe0f00ffff
+9f00ffffff000a
diff --git a/gs/src/gsiodev.c b/gs/src/gsiodev.c
index 2d540bfa2..f95396c43 100644
--- a/gs/src/gsiodev.c
+++ b/gs/src/gsiodev.c
@@ -226,14 +226,6 @@ gs_getiodevice(int index)
{
if (index < 0 || index >= gx_io_device_table_count)
return 0; /* index out of range */
- /*
- * HACK: the default device may be referenced before the table
- * of copies is created, for opening files referenced from the
- * command line. For this case only, return a pointer to the
- * const prototype.
- */
- if (io_device_table == 0)
- return (index == 0 ? (gx_io_device *) gx_io_device_table[0] : 0);
return io_device_table[index];
}
diff --git a/gs/src/gsos2.icx b/gs/src/gsos2.icx
index 2e466efd8..8e02eb848 100644
--- a/gs/src/gsos2.icx
+++ b/gs/src/gsos2.icx
@@ -1,209 +1,233 @@
-42412800000078000000000000004349
-1a00000010001000e00100000c000000
-2000400001000100000000ffffff4349
-1a00000010001000e00200000c000000
-20002000010004000000008000000080
-00808000000080800080008080808080
-ccccccff000000ff00ffff000000ffff
-00ff00ffffffffff424128000000f000
-00000000000043491a00000008000800
-e00400000c0000001000200001000100
-000000ffffff43491a00000008000800
-600500000c0000001000100001000400
-00000080000000800080800000008080
-0080008080808080ccccccff000000ff
-00ffff000000ffff00ff00ffffffffff
-42412800000068010000000000004349
-1a0000000a000a00e00500000c000000
-1400280001000100000000ffffff4349
-1a0000000a000a00800600000c000000
-14001400010004000000008000000080
-00808000000080800080008080808080
-ccccccff000000ff00ffff000000ffff
-00ff00ffffffffff4241280000000000
-00000004000343491a00000014001400
-700700000c0000002800500001000100
-000000ffffff43491a00000014001400
-f00900000c0000002800280001000400
-00000080000000800080800000008080
-0080008080808080ccccccff000000ff
-00ffff000000ffff00ff00ffffffffff
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-0000000000000000f80000fffc0001ff
-fe0007efcc0002078000000380000001
-00000000800000018000003086000079
-df0000ffff8001ffffc001ffffe001ff
-fff801fffff803fffff807fffffc0fff
-fff81ffffff03ffffff87ffffffcffff
-44444444444444444444444444444444
-44444444444444444444444444444444
-44444eeee444eee444eee44444e44444
-44444e444e4e444e4e444e4444444444
-44444e444e4e444e4e444e4444e44444
-44444e444e4e444e4e444e4444e44444
-44444eeee444eee444eee44444e44444
-44444e44444444444444444444e44444
-44444e44444444444444444444e44444
-44444444444444444444444444444444
-000000fffffffffffffffff000000000
-0000000ffffffffffff0f00000000000
-00000000ffffffffffff000000000000
-000000000ffffffffffff000000f0000
-00ff000ff0fffffffffff00ffffff000
-000fffff0fffffffffff0ffffffff000
-0ffffffff0fffffffffffffffffffff0
-0000fffffffffffffffffffff000ff00
-00fff000fffffffffffffffff0000ff0
-00f00000ffffffffffffffff00000000
-000000000ffffffffffff0f000000000
-00000000000fff0ff00fff0000000000
-00000000000ff0fff00fff0000000000
-00000000000000ffffffff0000000000
-00000000000000ffffffff0000000000
-00000000000000ff0f0ff00000000000
-000000000000000fffff000000000000
-000000000000000ffff0000000000000
-00000000000000ffff00000000000000
-0000000000000ffff000000000000000
-00000000000000ff0000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-ffff0000ffff0000dfdf0000dfdf0000
-afc300007ffd00007ffe00008ff00000
-f66f0000f7ef0000faaf0000fddf0000
-fb3f0000fcff0000ffff0000ffff0000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000a5a00000a5a00000a5a00000300
-fffff000fffffc00dffbf400dffbf400
-cffbf000b7f830007fffd0007fffe000
-7fffe00087fe0000fb9df000fbfdf000
-fbfdf000fdadf000fefbf000fde7f000
-fd9ff000fe7ff000fffff000fffff000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-0000000000000000000000000000b004
-00000000000000000000b00400000000
-000000000000fe030000000000000000
-0000ff0f00000000000000000000005a
-00000000000000000000005a00000000
-00000000000000000000000000000000
-000000ff000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-fc000003ff000000fc000003ff000000
-fe000007ff000000ff80003fdf000000
-c60000080f0000008000000003000000
-80000000030000008000000001000c00
-00000000000000008000000001000000
-c0000000010000008000000060000000
-83800001f1000000cfc00003ff000000
-ffe00007ff000000ffe00007ff000000
-fff00007ff000000fffc0007ff000000
-ffff0007ff000000ffff000fff000000
-ffff000fff000000ffff001fff000000
-ffff803fff000000ffff007fff000000
-fffe00ffff999999fffe01ffff999999
-ffff07ffff999999ffff8fffff999999
-44444444444444444444444444444444
-4444444444444eeeeee4444eeeee4444
-eeeee444ee44444444444eeeeee4444e
-eeee4444eeeee444ee44444444444ee4
-44ee44ee444ee44ee444ee4444444444
-44444ee444ee44ee444ee44ee444ee44
-ee44444444444ee444ee44ee444ee44e
-e444ee44ee44444444444eeeeee4444e
-eeee4444eeeee444ee44444444444eee
-eee4444eeeee4444eeeee444ee444444
-44444ee4444444444444444444444444
-ee44444444444ee44444444444444444
-44444444ee44444444444ee444444444
-44444444444444444e44444444444444
-44444444444444444444444444444444
-0000000ffffffffffffffffffffff000
-000000000000000fffffffffffffffff
-fffff00000000000000000000fffffff
-ffffffff0f0000000000000000000000
-00fffffffffffffff000000000000000
-00000000000fffffffffffffff000000
-00f0000000fff000fff0ffffffffffff
-fff00fffffff000000fffffffff0ffff
-ffffffffff0ffffffffff0000000ffff
-ff0ffffffffffffff0ffffffffffff00
-0ffffffffff0ffffffffffffffffffff
-fffffff000000fffffffffffffffffff
-ffffffffffffff00000fffffffffffff
-fffffffffffffffff00fff0000ffff00
-00fffffffffffffffffffff00000fff0
-00ff000000ffffffffffffffffffff00
-0000000000000000000fffffffffffff
-ff00f00000000000000000000000ffff
-f0fff000ffff00000000000000000000
-0000fffff0fff000ffff000000000000
-00000000000000ff0ffff000ffff0000
-0000000000000000000000000fffffff
-ffff0000000000000000000000000000
-0fffffffffff00000000000000000000
-000000000ff00ff00ff0000000000000
-00000000000000000ff00ff00ff00000
-00000000000000000000000000ffffff
-ff000000000000000000000000000000
-00fffffff00000000000000000000000
-000000000fffffff0000000000000000
-0000000000000000fffffff000000000
-000000000000000000000000fffff000
-00000000000000000000000000000000
-0fff0000000000000000000000000000
-00000000000000000000000000000000
+4241280000002e000000000000004943
+1a000000080008003c0200000c000000
+1000200001000100000000ffffff4241
+28000000a60000000000000043491a00
+000010001000bc0200000c0000002000
+400001000100000000ffffff43491a00
+000010001000bc0300000c0000002000
+20000100040000000080000000800080
+8000000080800080008080808080cccc
+ccff000000ff00ffff000000ffff00ff
+00ffffffffff4241280000001e010000
+0000000043491a00000008000800bc05
+00000c00000010002000010001000000
+00ffffff43491a000000080008003c06
+00000c00000010001000010004000000
+00800000008000808000000080800080
+008080808080ccccccff000000ff00ff
+ff000000ffff00ff00ffffffffff4241
+280000004c0100000004000349431a00
+00000a000a00bc0600000c0000001400
+280001000100000000ffffff42412800
+0000c40100000004000343491a000000
+140014005c0700000c00000028005000
+01000100000000ffffff43491a000000
+14001400dc0900000c00000028002800
+01000400000000800000008000808000
+000080800080008080808080ccccccff
+000000ff00ffff000000ffff00ff00ff
+ffffffff424128000000000000000004
+000343491a0000000a000a00fc0c0000
+0c0000001400280001000100000000ff
+ffff43491a0000000a000a009c0d0000
+0c000000140014000100040000000080
+00000080008080000000808000800080
+80808080ccccccff000000ff00ffff00
+0000ffff00ff00ffffffffff07800011
+01c0000001f0000007f8111107380001
+0f30ff000fe0ff000de0fc000d60ff10
+0760f80001f87f000078e00000183f10
+0008c00000081f5a0000ca00c07f1f00
+f03fc000c0031f008001c00080011f00
+8000c00000001f000000c00000001f00
+8000e00080011f00c001fc00f8011f00
+ffe3f800fff31f00fff7f00000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+000000000000000000000000fc0003ff
+f000007fc000001f8000000f80000007
+800000078000000780000007c0000007
+f0000007e0000007c000000fc000003f
+c000003fc00001ffc0001fffe00007ff
+f80001fff80000fff000007fe000003f
+e000003fe000003fe000003fe000003f
+e000003ff000003ff800007ffc0000ff
+ff0000ffffffc0ffffffc1ff000000ff
+ffffffffffffff00000000000000fff0
+000000000000fffff000000000fff000
+0778ffffffff0000fff000000ff00007
+ffffffffffffffff00ff00000f0000ff
+ffff00000000000fff0ff0000f0000ff
+fff0fffffffff0000ff0f0000f0000ff
+fff0ffffffffff0000fff0000ff0000f
+ffff7fffffffff00000ff00000ffffff
+ffffffffffff0000000ff0000000fff0
+0000000000000000000ff000000ff000
+0000000000000000000ff00000ff0000
+000000000000000000ff000000f00000
+00000000000000007f00000000f00000
+00000000000007ffff00000000f00000
+07fffffffffffff00000000000ff0000
+0ffffffffff0000000000000000ff700
+00000ffffffff0000000000000000fff
+f00000fffff08ff00000000000000ff0
+00000fffffff00ff000000000000f800
+0007fff99fff0008f0000000000ff000
+000ffff99fff0000ff000000000f0000
+00fffffffff000000f000000000f0000
+00ff9fffff0000000f000000000f0000
+00ff9f9ff00000000f000000000f8000
+00ffff9ff00000000f000000000ff000
+000fffffff000000ff0000000000ff00
+00000ffffff70008ff00000000000ff0
+000000008fff800ff0000000000000ff
+8700000000fff00f0000000000000000
+ffffffffff0ff07f0000000000000000
+0000000000f0f0ff0000000000000000
+0000000000f0fff00000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+000000000000000000000000c07f0000
+f03f0000c00300008001000080010000
+80000000000000000000000000000000
+8000000080010000c0010000f8010000
+ffe30000fff30000fff7000000000fff
+f00000000000000fff0000000000000f
+ffff0000000007fffffff00000000fff
+99fff00000007fff99ff00000000ffff
+fff000000000ff9fff7000000000ff9f
+9f70000000000fff9ff000000000000f
+ffff70000000000008fff00000000000
+000ff000000000000000f00000000000
+0000f000000000000000000001f0003f
+007c003f003e003f007f003f01f7003f
+01e7007f01c700ff03fe00ff03fc00ff
+037801ff03680a5a03e80ff801fc0a5a
+007f0301000f800000038c0000018000
+000181000003000000000fffe00ff000
+f801f000f800f000e0003000c0001000
+c0001000800000008000000000000000
+00000000000000008000000080000000
+c0001000e0001000fc001000fffc3000
+fffc3000fff87000fffef00000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+000000000000000000000000ff00000f
+ff000000fc000001ff000000f8000000
+7f000000e00000003f000000c0000000
+1f000000c00000001f000000c0000000
+1f000000c00000001f000000c0000000
+1f000000c00000001f000000e0000000
+1f000000fc0000001f000000f8000000
+1f000000f00000001f000000f0000000
+7f000000f00000007f000000f0000003
+ff000000f000003fff000000f00003ff
+ff000000f00003ffff000c00f800003f
+ff000000fe00001fff000000fe000007
+ff000000fc000003ff000000f8000001
+ff000000f8000001ff000000f8000000
+ff000000f8000000ff000000f8000000
+ff000000f8000000ff000000f8000000
+ff000000f8000001ff000000fc000001
+ff000000fe000003ff000000ff000007
+ff000000ff800007ff000000ffe00007
+ff999999ffffe007ff999999fffffc0f
+ff999999fffffe0fff99999900000000
+ffffffffffffffffffff000000000000
+000000ffff700000000000007ffffff0
+0000000000000ff70000000000000000
+000000fff0000000000fff00000077ff
+fffffffffffff707ff00000000ff0000
+007fffffff70000000ffffff7ff00000
+00f700000ffffff700000000000000ff
+f7f0000000f00000ffffff0007ffffff
+80000000fff0000000f00000ffffff00
+fffffffffff000000ff0000000f70000
+0ffffff0007fffffffff000000f00000
+00ff700000fffffffffffffffff70000
+00f00000000fffffffffffffffffffff
+7000000000f00000000000fffff70000
+000000000000000000f0000000000ff7
+00000000000000000000000000f00000
+0000ff00000000000000000000000000
+0ff000000000f0000000000000000000
+00000007f00000000000f00000000000
+00000000000000fff00000000000f000
+000000000000000007ffff0000000000
+0000f0000000007fffffffffff000000
+000000000000f7000000ffffffffff00
+00000000000000000000ff000000ffff
+ffffff00000000000000000000000fff
+00000000ffffffffff00000000000000
+0000000fff7000000ffffff07ff00000
+000000000000000fff0000000fffffff
+007ff00000000000000000ff70000000
+ffff9ffff7008f000000000000000ff8
+0000000ffff99fffff0008f000000000
+00000f80000000ffff999ffff00000f0
+0000000000000f0000000fffffffffff
+7000000f0000000000000f0000007fff
+9ffffff00000000f0000000000000f00
+00007ff99ff9ff000000000f00000000
+00000f0000000ff9ff99ff000000000f
+0000000000000f0000000fffff9fff00
+0000000f0000000000000ff0000000ff
+ffffff70000000f000000000000000ff
+0000000fffffffff000008f000000000
+0000000ff0000000008ffffff000ff00
+0000000000000000ff000000000007ff
+ff00f00000000000000000000fff7700
+00000007ff00f0000000000000000000
+000fffffffffff70ff00f00000000000
+0000000000000000000ffff0ff0ff000
+000000000000000000000000000000f0
+ff0f0000000000000000000000000000
+0000000ff0ff00000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+000000000000000000000000e00ff000
+f801f000f800f000e0003000c0001000
+c0001000800000008000000000000000
+00000000000000008000000080000000
+c0001000e0001000fc001000fffc3000
+fffc3000fff87000fffef0000000000f
+ffff000000000000000000000fffff00
+000000000000000000fffff000000000
+000000000fffffff000000000000000f
+ffff9fff000000000000000ffff99fff
+000000000000000fff999fff00000000
+000000fffffffff000000000000000ff
+ffffff0000000000000000ff9ffff000
+00000000000000ff9f9ff00000000000
+000000ffff9ff000000000000000000f
+ffffff0000000000000000000fffffff
+00000000000000000000fffff0000000
+00000000000000fff000000000000000
+0000000ff0000000000000000000000f
+f000000000000000000000ff00000000
+0000000000000000000000000a
diff --git a/gs/src/gspcolor.c b/gs/src/gspcolor.c
index 137d9970f..6477a60b4 100644
--- a/gs/src/gspcolor.c
+++ b/gs/src/gspcolor.c
@@ -331,6 +331,7 @@ public_st_gs_bitmap();
public_st_gs_tile_bitmap();
public_st_gs_depth_bitmap();
public_st_gs_tile_depth_bitmap();
+public_st_gx_strip_bitmap();
/*
* Structure for holding a gs_depth_bitmap and the corresponding depth and
diff --git a/gs/src/gspmdrv.icx b/gs/src/gspmdrv.icx
index 604e4593f..8e02eb848 100644
--- a/gs/src/gspmdrv.icx
+++ b/gs/src/gspmdrv.icx
@@ -1,209 +1,233 @@
-42412800000078000000000000004349
-1a00000008000800e00100000c000000
-1000200001000100000000ffffff4349
-1a00000008000800600200000c000000
-10001000010004000000008000000080
-00808000000080800080008080808080
-ccccccff000000ff00ffff000000ffff
-00ff00ffffffffff424128000000f000
-00000000000043491a00000010001000
-e00200000c0000002000400001000100
-000000ffffff43491a00000010001000
-e00300000c0000002000200001000400
-00000080000000800080800000008080
-0080008080808080ccccccff000000ff
-00ffff000000ffff00ff00ffffffffff
-42412800000068010000000000004349
-1a0000000a000a00e00500000c000000
-1400280001000100000000ffffff4349
-1a0000000a000a00800600000c000000
-14001400010004000000008000000080
-00808000000080800080008080808080
-ccccccff000000ff00ffff000000ffff
-00ff00ffffffffff4241280000000000
-00000004000343491a00000014001400
-700700000c0000002800500001000100
-000000ffffff43491a00000014001400
-f00900000c0000002800280001000400
-00000080000000800080800000008080
-0080008080808080ccccccff000000ff
-00ffff000000ffff00ff00ffffffffff
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-ffff0000ffff0000dfdf0000dfdf0000
-afc300007ffd00007ffe00008ff00000
-f66f0000f7ef0000faaf0000fddf0000
-fb3f0000fcff0000ffff0000ffff0000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-0000000000000000f80000fffc0001ff
-fe0007efcc0002078000000380000001
-00000000800000018000003086000079
-df0000ffff8001ffffc001ffffe001ff
-fff801fffff803fffff807fffffc0fff
-fff81ffffff03ffffff87ffffffcffff
-99999999999999999999999999999999
-999999999999999999eeee9999999999
-99e9e99e99e99eeee99999e99eee9999
-99e9e99e99e9e999e99eeee9e9999999
-99e9e99e99e99eeee9e999e9eeeee999
-99e9e99e99e99999e9e999e9e999e999
-99e9eee9ee999eee999eeee99eee9999
-99999999999999999999999999999999
-99e99999999999999999999999999999
-99999999999999999999999999999999
-000000fffffffffffffffff000000000
-0000000ffffffffffff0f00000000000
-00000000ffffffffffff000000000000
-000000000ffffffffffff000000f0000
-00ff000ff0fffffffffff00ffffff000
-000fffff0fffffffffff0ffffffff000
-0ffffffff0fffffffffffffffffffff0
-0000fffffffffffffffffffff000ff00
-00fff000fffffffffffffffff0000ff0
-00f00000ffffffffffffffff00000000
-000000000ffffffffffff0f000000000
-00000000000fff0ff00fff0000000000
-00000000000ff0fff00fff0000000000
-00000000000000ffffffff0000000000
-00000000000000ffffffff0000000000
-00000000000000ff0f0ff00000000000
-000000000000000fffff000000000000
-000000000000000ffff0000000000000
-00000000000000ffff00000000000000
-0000000000000ffff000000000000000
-00000000000000ff0000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-fffff000fffff000dffbf000dffbf000
-cffbf000b7f830007fffd0007fffe000
-7fffe00087fe1000fb8df000fbfdf000
-fbfdf000fdadf000fefbf000fef7f000
-fdcff000fe3ff000fffff000fffff000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-ffffffffff000000ffffffffff000000
-ffffffffff000000ffffffffff000000
-f00000000f000000f00000000f000000
-f00000000f000000f00000000f000000
-f00000000f000000f00000000f000000
-f00000000f000000f00000000f000000
-f00000000f000000f00000000f000000
-ff80000fff000000ffc0001fff000000
-ffe0007eff000000fcc000207f000000
-f80000003f000000f80000001f000000
-f00000000f000000f80000001f000000
-f80000030f000000f86000079f000000
-fdf0000fff000000fff8001fff000000
-fffc001fff000000fffe001fff000000
-ffff801fff000000ffff803fff000000
-ffff807fff000000ffffc0ffff000000
-ffff81ffff000000ffff03ffff000000
-ffff87ffff000000ffffcfffff000000
-ffffffffff000000ffffffffff000000
-ffffffffff000000ffffffffff000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00009999999999999999999999999999
-999900000000999999999999999999ee
-ee99999999990000000099e9e99e99e9
-9eeee99999e99eee99990000000099e9
-e99e99e9e999e99eeee9e99999990000
-000099e9e99e99e99eeee9e999e9eeee
-e9990000000099e9e99e99e99999e9e9
-99e9e999e9990000000099e9eee9ee99
-9eee999eeee99eee9999000000009999
-99999999999999999999999999990000
-000099e9999999999999999999999999
-99990000000099999999999999999999
-99999999999900000000000000ffffff
-fffffffffff000000000000000000000
-000ffffffffffff0f000000000000000
-000000000000ffffffffffff00000000
-000000000000000000000fffffffffff
-f000000f00000000000000ff000ff0ff
-fffffffff00ffffff00000000000000f
-ffff0fffffffffff0ffffffff0000000
-00000ffffffff0ffffffffffffffffff
-fff0000000000000ffffffffffffffff
-fffff000ff000000000000fff000ffff
-fffffffffffff0000ff00000000000f0
-0000ffffffffffffffff000000000000
-0000000000000ffffffffffff0f00000
-00000000000000000000000fff0ff00f
-ff00000000000000000000000000000f
-f0fff00fff0000000000000000000000
-0000000000ffffffff00000000000000
-000000000000000000ffffffff000000
-00000000000000000000000000ff0f0f
-f0000000000000000000000000000000
-000fffff000000000000000000000000
-00000000000ffff00000000000000000
-000000000000000000ffff0000000000
-0000000000000000000000000ffff000
-00000000000000000000000000000000
-00ff0000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
+4241280000002e000000000000004943
+1a000000080008003c0200000c000000
+1000200001000100000000ffffff4241
+28000000a60000000000000043491a00
+000010001000bc0200000c0000002000
+400001000100000000ffffff43491a00
+000010001000bc0300000c0000002000
+20000100040000000080000000800080
+8000000080800080008080808080cccc
+ccff000000ff00ffff000000ffff00ff
+00ffffffffff4241280000001e010000
+0000000043491a00000008000800bc05
+00000c00000010002000010001000000
+00ffffff43491a000000080008003c06
+00000c00000010001000010004000000
+00800000008000808000000080800080
+008080808080ccccccff000000ff00ff
+ff000000ffff00ff00ffffffffff4241
+280000004c0100000004000349431a00
+00000a000a00bc0600000c0000001400
+280001000100000000ffffff42412800
+0000c40100000004000343491a000000
+140014005c0700000c00000028005000
+01000100000000ffffff43491a000000
+14001400dc0900000c00000028002800
+01000400000000800000008000808000
+000080800080008080808080ccccccff
+000000ff00ffff000000ffff00ff00ff
+ffffffff424128000000000000000004
+000343491a0000000a000a00fc0c0000
+0c0000001400280001000100000000ff
+ffff43491a0000000a000a009c0d0000
+0c000000140014000100040000000080
+00000080008080000000808000800080
+80808080ccccccff000000ff00ffff00
+0000ffff00ff00ffffffffff07800011
+01c0000001f0000007f8111107380001
+0f30ff000fe0ff000de0fc000d60ff10
+0760f80001f87f000078e00000183f10
+0008c00000081f5a0000ca00c07f1f00
+f03fc000c0031f008001c00080011f00
+8000c00000001f000000c00000001f00
+8000e00080011f00c001fc00f8011f00
+ffe3f800fff31f00fff7f00000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+000000000000000000000000fc0003ff
+f000007fc000001f8000000f80000007
+800000078000000780000007c0000007
+f0000007e0000007c000000fc000003f
+c000003fc00001ffc0001fffe00007ff
+f80001fff80000fff000007fe000003f
+e000003fe000003fe000003fe000003f
+e000003ff000003ff800007ffc0000ff
+ff0000ffffffc0ffffffc1ff000000ff
+ffffffffffffff00000000000000fff0
+000000000000fffff000000000fff000
+0778ffffffff0000fff000000ff00007
+ffffffffffffffff00ff00000f0000ff
+ffff00000000000fff0ff0000f0000ff
+fff0fffffffff0000ff0f0000f0000ff
+fff0ffffffffff0000fff0000ff0000f
+ffff7fffffffff00000ff00000ffffff
+ffffffffffff0000000ff0000000fff0
+0000000000000000000ff000000ff000
+0000000000000000000ff00000ff0000
+000000000000000000ff000000f00000
+00000000000000007f00000000f00000
+00000000000007ffff00000000f00000
+07fffffffffffff00000000000ff0000
+0ffffffffff0000000000000000ff700
+00000ffffffff0000000000000000fff
+f00000fffff08ff00000000000000ff0
+00000fffffff00ff000000000000f800
+0007fff99fff0008f0000000000ff000
+000ffff99fff0000ff000000000f0000
+00fffffffff000000f000000000f0000
+00ff9fffff0000000f000000000f0000
+00ff9f9ff00000000f000000000f8000
+00ffff9ff00000000f000000000ff000
+000fffffff000000ff0000000000ff00
+00000ffffff70008ff00000000000ff0
+000000008fff800ff0000000000000ff
+8700000000fff00f0000000000000000
+ffffffffff0ff07f0000000000000000
+0000000000f0f0ff0000000000000000
+0000000000f0fff00000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+000000000000000000000000c07f0000
+f03f0000c00300008001000080010000
+80000000000000000000000000000000
+8000000080010000c0010000f8010000
+ffe30000fff30000fff7000000000fff
+f00000000000000fff0000000000000f
+ffff0000000007fffffff00000000fff
+99fff00000007fff99ff00000000ffff
+fff000000000ff9fff7000000000ff9f
+9f70000000000fff9ff000000000000f
+ffff70000000000008fff00000000000
+000ff000000000000000f00000000000
+0000f000000000000000000001f0003f
+007c003f003e003f007f003f01f7003f
+01e7007f01c700ff03fe00ff03fc00ff
+037801ff03680a5a03e80ff801fc0a5a
+007f0301000f800000038c0000018000
+000181000003000000000fffe00ff000
+f801f000f800f000e0003000c0001000
+c0001000800000008000000000000000
+00000000000000008000000080000000
+c0001000e0001000fc001000fffc3000
+fffc3000fff87000fffef00000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+000000000000000000000000ff00000f
+ff000000fc000001ff000000f8000000
+7f000000e00000003f000000c0000000
+1f000000c00000001f000000c0000000
+1f000000c00000001f000000c0000000
+1f000000c00000001f000000e0000000
+1f000000fc0000001f000000f8000000
+1f000000f00000001f000000f0000000
+7f000000f00000007f000000f0000003
+ff000000f000003fff000000f00003ff
+ff000000f00003ffff000c00f800003f
+ff000000fe00001fff000000fe000007
+ff000000fc000003ff000000f8000001
+ff000000f8000001ff000000f8000000
+ff000000f8000000ff000000f8000000
+ff000000f8000000ff000000f8000000
+ff000000f8000001ff000000fc000001
+ff000000fe000003ff000000ff000007
+ff000000ff800007ff000000ffe00007
+ff999999ffffe007ff999999fffffc0f
+ff999999fffffe0fff99999900000000
+ffffffffffffffffffff000000000000
+000000ffff700000000000007ffffff0
+0000000000000ff70000000000000000
+000000fff0000000000fff00000077ff
+fffffffffffff707ff00000000ff0000
+007fffffff70000000ffffff7ff00000
+00f700000ffffff700000000000000ff
+f7f0000000f00000ffffff0007ffffff
+80000000fff0000000f00000ffffff00
+fffffffffff000000ff0000000f70000
+0ffffff0007fffffffff000000f00000
+00ff700000fffffffffffffffff70000
+00f00000000fffffffffffffffffffff
+7000000000f00000000000fffff70000
+000000000000000000f0000000000ff7
+00000000000000000000000000f00000
+0000ff00000000000000000000000000
+0ff000000000f0000000000000000000
+00000007f00000000000f00000000000
+00000000000000fff00000000000f000
+000000000000000007ffff0000000000
+0000f0000000007fffffffffff000000
+000000000000f7000000ffffffffff00
+00000000000000000000ff000000ffff
+ffffff00000000000000000000000fff
+00000000ffffffffff00000000000000
+0000000fff7000000ffffff07ff00000
+000000000000000fff0000000fffffff
+007ff00000000000000000ff70000000
+ffff9ffff7008f000000000000000ff8
+0000000ffff99fffff0008f000000000
+00000f80000000ffff999ffff00000f0
+0000000000000f0000000fffffffffff
+7000000f0000000000000f0000007fff
+9ffffff00000000f0000000000000f00
+00007ff99ff9ff000000000f00000000
+00000f0000000ff9ff99ff000000000f
+0000000000000f0000000fffff9fff00
+0000000f0000000000000ff0000000ff
+ffffff70000000f000000000000000ff
+0000000fffffffff000008f000000000
+0000000ff0000000008ffffff000ff00
+0000000000000000ff000000000007ff
+ff00f00000000000000000000fff7700
+00000007ff00f0000000000000000000
+000fffffffffff70ff00f00000000000
+0000000000000000000ffff0ff0ff000
+000000000000000000000000000000f0
+ff0f0000000000000000000000000000
+0000000ff0ff00000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+000000000000000000000000e00ff000
+f801f000f800f000e0003000c0001000
+c0001000800000008000000000000000
+00000000000000008000000080000000
+c0001000e0001000fc001000fffc3000
+fffc3000fff87000fffef0000000000f
+ffff000000000000000000000fffff00
+000000000000000000fffff000000000
+000000000fffffff000000000000000f
+ffff9fff000000000000000ffff99fff
+000000000000000fff999fff00000000
+000000fffffffff000000000000000ff
+ffffff0000000000000000ff9ffff000
+00000000000000ff9f9ff00000000000
+000000ffff9ff000000000000000000f
+ffffff0000000000000000000fffffff
+00000000000000000000fffff0000000
+00000000000000fff000000000000000
+0000000ff0000000000000000000000f
+f000000000000000000000ff00000000
+0000000000000000000000000a
diff --git a/gs/src/gsstruct.h b/gs/src/gsstruct.h
index 58ca267ef..b63880a72 100644
--- a/gs/src/gsstruct.h
+++ b/gs/src/gsstruct.h
@@ -454,12 +454,14 @@ struct_proc_reloc_ptrs(basic_reloc_ptrs);
/* Relocate elements */
+#define RELOC_OBJ(ptr)\
+ (gc_proc(gcst, reloc_struct_ptr)((const void *)(ptr), gcst))
#define RELOC_OBJ_VAR(ptrvar)\
- ptrvar = (*gc_proc(gcst, reloc_struct_ptr))((const void *)(ptrvar), gcst)
+ (ptrvar = RELOC_OBJ(ptrvar))
#define RELOC_STRING_VAR(ptrvar)\
- (*gc_proc(gcst, reloc_string))(&(ptrvar), gcst)
+ (gc_proc(gcst, reloc_string)(&(ptrvar), gcst))
#define RELOC_CONST_STRING_VAR(ptrvar)\
- (*gc_proc(gcst, reloc_const_string))(&(ptrvar), gcst)
+ (gc_proc(gcst, reloc_const_string)(&(ptrvar), gcst))
#define RELOC_OBJ_ELT(typ, elt)\
RELOC_VAR(((typ *)vptr)->elt)
@@ -472,11 +474,10 @@ struct_proc_reloc_ptrs(basic_reloc_ptrs);
/* OFFSET is for byte offsets, TYPED_OFFSET is for element offsets. */
#define RELOC_OFFSET_ELT(typ, elt, offset)\
((typ *)vptr)->elt = (void *)\
- ((char *)(*gc_proc(gcst, reloc_struct_ptr))((char *)((typ *)vptr)->elt - (offset), gcst) +\
+ ((char *)RELOC_OBJ((char *)((typ *)vptr)->elt - (offset)) +\
(offset))
#define RELOC_TYPED_OFFSET_ELT(typ, elt, offset)\
- (((typ *)vptr)->elt = (void *)\
- (*gc_proc(gcst, reloc_struct_ptr))(((typ *)vptr)->elt - (offset), gcst),\
+ (((typ *)vptr)->elt = (void *)RELOC_OBJ(((typ *)vptr)->elt - (offset)),\
((typ *)vptr)->elt += (offset))
/* Backward compatibility */
diff --git a/gs/src/gstext.icx b/gs/src/gstext.icx
index 79f62da5f..a34efea15 100644
--- a/gs/src/gstext.icx
+++ b/gs/src/gstext.icx
@@ -1,48 +1,127 @@
-0000010001002020100000000000e802
-00001600000028000000200000004000
+0000010004002020100000000000e802
+00004600000010101000000000002801
+00002e0300001414100000000000a801
+0000560400001818100000000000e801
+0000fe05000028000000200000004000
00000100040000000000800200000000
00000000000000000000000000000000
00000000800000800000008080008000
-00008000800080800000808080004040
-40000000ff0000ff000000ffff00ff00
-0000ff00ff00ffff0000ffffff001111
-11111111111111111111111111111111
-11111111111111111111111111111111
-1bbbb111bbb111bbb11111b111111111
-1b111b1b111b1b111b11111111111111
-1b111b1b111b1b111b1111b111111111
-1b111b1b111b1b111b1111b111111111
-1bbbb111bbb111bbb11111b111111111
-1b11111111111111111111b111111111
-1b11111111111111111111b111111111
-11111111111111111111111111110000
-00fffffffffffffffff0000000000000
-000ffffffffffff0f000000000000000
-0000ffffffffffff0000000000000000
-00000ffffffffffff000000f000000ff
-000ff0fffffffffff00ffffff000000f
-ffff0fffffffffff0ffffffff0000fff
-fffff0fffffffffffffffffffff00000
-fffffffffffffffffffff000ff0000ff
-f000fffffffffffffffff0000ff000f0
-0000ffffffffffffffff000000000000
-00000ffffffffffff0f0000000000000
-0000000fff0ff00fff00000000000000
-0000000ff0fff00fff00000000000000
-0000000000ffffffff00000000000000
-0000000000ffffffff00000000000000
-0000000000ff0f0ff000000000000000
-00000000000fffff0000000000000000
-00000000000ffff00000000000000000
-0000000000ffff000000000000000000
-000000000ffff0000000000000000000
-0000000000ff00000000000000000000
+00008000800080800000c0c0c0008080
+80000000ff0000ff000000ffff00ff00
+0000ff00ff00ffff0000ffffff000000
+0000fffffffffffff000000000000000
+00ff0000000000000ffff00000000000
+ff0000fffffffffff0000ff00000000f
+0000fffffffffffffffff00f0000000f
+000ffffff00000000000fff0f00000f0
+000fffff0fffffffff0000ff0f0000f0
+000fffff0ffffffffff0000ff000000f
+0000fffffffffffffff00000f0000000
+fffffffffffffffff00000000f000000
+00ff000000000000000000000f000000
+0f0000000000000000000000f0000000
+f0000000000000000000000f0000000f
+0000000000000000000000f00000000f
+0000000000000000000fff000000000f
+0000000fffffffffffff000000000000
+f00000fffffffffff000000000000000
+0f00000000ffffffff00000000000000
+00ffff00000fffff0ff0000000000000
+000f000000fffffff00f000000000000
+00f000008fffccfff000f00000000000
+0f000000ffffccfff0000f0000000000
+f000000fffffffff000000f000000000
+f000000ffcfffff0000000f000000000
+f000000ffcfcff00000000f000000000
+0f00000ffffcff00000000f000000000
+0f000000fffffff000000f0000000000
+00f0000000ffffff8000f00000000000
+000f0000000007fff700f00000000000
+0000fff00000000fff00f00000000000
+0000000ffffffff0ff0f000000000000
+000000000000000f0f0f000000000000
+000000000000000f0ff000000000ff00
+07fffc00007ff000001fe000000fe000
+0007c0000003c0000007e0000007f000
+0003fc000003f8000007f000000fe000
+001fe000003fe00000fff00007fff800
+03fffc0001fffe0000fffc00007ff800
+003ff000001ff000001ff000001ff800
+001ff800003ffc00007ffe00007fff00
+007fffe000ffffffe0ffffffe1ff2800
+00001000000020000000010004000000
+0000c000000000000000000000000000
+00000000000000000000000080000080
+00000080800080000000800080008080
+0000c0c0c000808080000000ff0000ff
+000000ffff00ff000000ff00ff00ffff
+0000ffffff0008000000000000000000
+000fff8800000000000fffff00000000
+08fffffff00000000fffccfff0088000
+8fffccff00000000fffffff000000000
+ffcfff8000000000ffcfcf8000008000
+0fffcff000000000000fffff80000000
+000007fff00000008000000ff0000000
+00000000f080000000000000f0000000
+00000000000087ff0000f00f0000c003
+000080010ff080000000000007ff0000
+007f0000001f0000000f000000078001
+0003c0010007f0010007ffe10003fff3
+0003fff7000728000000140000002800
+00000100040000000000400100000000
00000000000000000000000000000000
-00000000000000000000000000000000
-00000000000000000000000000000000
-000000000000f80000fffc0001fffe00
-07efcc00020780000003800000010000
-0000800000018000003086000079df00
-00ffff8001ffffc001ffffe001fffff8
-01fffff803fffff807fffffc0ffffff8
-1ffffff03ffffff87ffffffcffff
+00000000800000800000008080008000
+00008000800080800000c0c0c0008080
+80000000ff0000ff000000ffff00ff00
+0000ff00ff00ffff0000ffffff000080
+000ffffff00000000000000000000fff
+ff00000000000000800000fffff00000
+0000000000000fffffff000000000000
+0008ffffffff0000000008000008fffc
+cfff000800000000000ffffccfff0000
+0000800000fffffffff0000000000000
+00ffffffff0000000000000000ffcfff
+f00000000000000000ffcfcff0000000
+0000800000ffffcff000000000000000
+000fffffff0000000000000000000fff
+fff8000000000000000000007fff7000
+000000000800000000fff00000000000
+00000000000ff0800000000000000000
+000ff000000000000000000000ff0000
+0000000000000000000000000000c007
+fffff801f000f000f000e0003000c000
+10008000000080000000000000000000
+00000000000000000000000000008000
+0000c0001000e0001000f8001000fffc
+1000fffc3000fff87000fffef0002800
+00001800000030000000010004000000
+00008001000000000000000000000000
+00000000000000000000000080000080
+00000080800080000000800080008080
+0000c0c0c000808080000000ff0000ff
+000000ffff00ff000000ff00ff00ffff
+0000ffffff0000000000000000000000
+0000000000000fffffff000000000000
+0080000fffff88000000000000800000
+fffff8000000000080000007fffff780
+000000080000007fffffff7000000000
+000008fffffffff00000008000008fff
+fccfff70000000000000fffffccfff80
+00000800000ffffffffff80000000000
+000fffffffff000000000000000fffcf
+fff0000000000000000fffcfcff00000
+000008000008ffffcff0000000000000
+00008fffffff0000000000000000008f
+ffff78000080000000000000887fff78
+000000000880000000087ff800000000
+00000800000087f70000000000000000
+000008f70800000000000000000008f7
+000000000000000000007f7800000000
+00000000000008800000000000000000
+000000000000ffffff04f000fffffc00
+3ffffc001ffff0000fffe00007ffe000
+0375c00003ffc00001ff800001ff8000
+01ff800001ff800001ff800001ffc000
+01ffe00001fff00003fff800036eff80
+03ffffff03ffffff07fffffe0fffffff
+9f00ffffffff0a
diff --git a/gs/src/gxbitmap.h b/gs/src/gxbitmap.h
index b644b0ffe..86f1e3d11 100644
--- a/gs/src/gxbitmap.h
+++ b/gs/src/gxbitmap.h
@@ -117,4 +117,11 @@ typedef struct gx_strip_bitmap_s {
gx_strip_bitmap_common;
} gx_strip_bitmap;
+extern_st(st_gx_strip_bitmap);
+#define public_st_gx_strip_bitmap() /* in gspcolor.c */\
+ gs_public_st_suffix_add0_local(st_gx_strip_bitmap, gx_strip_bitmap,\
+ "gx_strip_bitmap", bitmap_enum_ptrs, bitmap_reloc_ptrs,\
+ st_gs_tile_bitmap)
+#define st_gx_strip_bitmap_max_ptrs 1
+
#endif /* gxbitmap_INCLUDED */
diff --git a/gs/src/gxclip2.h b/gs/src/gxclip2.h
index edfd579d6..1a32425ae 100644
--- a/gs/src/gxclip2.h
+++ b/gs/src/gxclip2.h
@@ -28,7 +28,9 @@
typedef gx_device_mask_clip gx_device_tile_clip;
#define private_st_device_tile_clip() /* in gxclip2.c */\
- gx_private_st_device_mask_clip(st_device_tile_clip, "gx_device_tile_clip")
+ gs_private_st_suffix_add0(st_device_tile_clip, gx_device_tile_clip,\
+ "gx_device_tile_clip", device_tile_clip_enum_ptrs,\
+ device_tile_clip_reloc_ptrs, st_device_mask_clip)
/*
* Initialize a tile clipping device from a mask.
diff --git a/gs/src/gxclipm.c b/gs/src/gxclipm.c
index fd96f0044..88a6e2557 100644
--- a/gs/src/gxclipm.c
+++ b/gs/src/gxclipm.c
@@ -24,8 +24,6 @@
#include "gxdevmem.h"
#include "gxclipm.h"
-public_st_device_mask_clip();
-
/* Device procedures */
private dev_proc_fill_rectangle(mask_clip_fill_rectangle);
private dev_proc_copy_mono(mask_clip_copy_mono);
diff --git a/gs/src/gxclipm.h b/gs/src/gxclipm.h
index f24778786..04aaf51b1 100644
--- a/gs/src/gxclipm.h
+++ b/gs/src/gxclipm.h
@@ -24,10 +24,6 @@
#include "gxmclip.h"
-extern_st(st_device_mask_clip);
-#define public_st_device_mask_clip() /* in gxclipm.c */\
- gx_public_st_device_mask_clip(st_device_mask_clip, "gx_device_mask_clip")
-
extern const gx_device_mask_clip gs_mask_clip_device;
#endif /* gxclipm_INCLUDED */
diff --git a/gs/src/gxcpath.c b/gs/src/gxcpath.c
index 6de016e41..c8bbb90c4 100644
--- a/gs/src/gxcpath.c
+++ b/gs/src/gxcpath.c
@@ -81,8 +81,7 @@ ENUM_PTRS_END
private RELOC_PTRS_BEGIN(device_clip_reloc_ptrs)
{
if (cptr->current == &cptr->list.single)
- cptr->current =
- &((gx_device_clip *) (*gc_proc(gcst, reloc_struct_ptr)) (vptr, gcst))->list.single;
+ cptr->current = &((gx_device_clip *)RELOC_OBJ(vptr))->list.single;
else
RELOC_PTR(gx_device_clip, current);
RELOC_USING(st_clip_list, &cptr->list, sizeof(gx_clip_list));
diff --git a/gs/src/gxcspace.h b/gs/src/gxcspace.h
index 3f32b7d8d..999f46903 100644
--- a/gs/src/gxcspace.h
+++ b/gs/src/gxcspace.h
@@ -210,19 +210,11 @@ cs_proc_install_cspace(gx_no_install_cspace);
cs_proc_adjust_cspace_count(gx_no_adjust_cspace_count);
cs_proc_adjust_color_count(gx_no_adjust_color_count);
-/* Macros for declaring color space procedures. */
-#define cs_declare_render_procs(scope, concretize, install)\
- scope cs_proc_concretize_color(concretize);\
- scope cs_proc_install_cspace(install)
-#define cs_declare_memory_procs(scope, adjust)\
- scope cs_proc_adjust_cspace_count(adjust)
-#define cs_declare_procs(scope, concretize, install, adjust)\
- cs_declare_render_procs(scope, concretize, install);\
- cs_declare_memory_procs(scope, adjust)
-
/* Standard color space types */
extern const gs_color_space_type
- gs_color_space_type_DeviceGray, gs_color_space_type_DeviceRGB, gs_color_space_type_DeviceCMYK;
+ gs_color_space_type_DeviceGray,
+ gs_color_space_type_DeviceRGB,
+ gs_color_space_type_DeviceCMYK;
/* Define the allocator type for color spaces. */
extern_st(st_color_space);
diff --git a/gs/src/gxdevcli.h b/gs/src/gxdevcli.h
index dae355881..49565105b 100644
--- a/gs/src/gxdevcli.h
+++ b/gs/src/gxdevcli.h
@@ -37,7 +37,7 @@
#include "gxfixed.h"
#include "gxtext.h"
-/* See drivers.txt for documentation of the driver interface. */
+/* See Drivers.htm for documentation of the driver interface. */
#ifndef gx_device_DEFINED
# define gx_device_DEFINED
diff --git a/gs/src/gxdevice.h b/gs/src/gxdevice.h
index 8076e8097..84091f1bf 100644
--- a/gs/src/gxdevice.h
+++ b/gs/src/gxdevice.h
@@ -275,7 +275,7 @@ dev_proc_get_clipping_box(gx_forward_get_clipping_box);
dev_proc_begin_typed_image(gx_forward_begin_typed_image);
dev_proc_get_bits_rectangle(gx_forward_get_bits_rectangle);
dev_proc_map_color_rgb_alpha(gx_forward_map_color_rgb_alpha);
-/* There is no forward_create_compositor (see drivers.txt). */
+/* There is no forward_create_compositor (see Drivers.htm). */
dev_proc_get_hardware_params(gx_forward_get_hardware_params);
dev_proc_text_begin(gx_forward_text_begin);
diff --git a/gs/src/gximono.c b/gs/src/gximono.c
index 72438db6c..54d6dabbe 100644
--- a/gs/src/gximono.c
+++ b/gs/src/gximono.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989, 1995, 1996, 1997 Aladdin Enterprises. All rights reserved.
+/* Copyright (C) 1989, 1995, 1996, 1997, 1998 Aladdin Enterprises. All rights reserved.
This file is part of Aladdin Ghostscript.
@@ -45,8 +45,11 @@
private irender_proc(image_render_mono);
private irender_proc_t
image_strategy_mono(gx_image_enum * penum)
-{ /* Use slow loop for imagemask with a halftone, */
- /* or for a non-default logical operation. */
+{
+ /*
+ * Use the slow loop for imagemask with a halftone,
+ * or for a non-default logical operation.
+ */
penum->slow_loop =
(penum->masked && !color_is_pure(&penum->icolor1)) ||
penum->use_rop;
@@ -72,8 +75,8 @@ gs_gximono_init(gs_memory_t * mem)
/* Provide a fake map_gray procedure for the DevicePixel color space. */
private void
-no_map_gray(frac pixel, gx_device_color * pdc,
- const gs_imager_state * pis, gx_device * dev, gs_color_select_t select)
+no_map_gray(frac pixel, gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select)
{
color_set_pure(pdc, frac2byte(pixel));
}
@@ -90,39 +93,40 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
{
const gs_imager_state *pis = penum->pis;
gs_logical_operation_t lop = penum->log_op;
- const int masked = penum->masked;
+ const bool masked = penum->masked;
const gs_color_space *pcs; /* only set for non-masks */
-
cmap_proc_gray((*map_gray)); /* ditto */
cs_proc_remap_color((*remap_color)); /* ditto */
gs_client_color cc;
gx_device_color *pdevc = &penum->icolor1; /* color for masking */
-
/*
* Make sure the cache setup matches the graphics state. Also determine
* whether all tiles fit in the cache. We may bypass the latter check
* for masked images with a pure color.
*/
- bool tiles_fit =
- (pis ? gx_check_tile_cache(pis) : false);
-
-#define image_set_gray(sample_value)\
- { pdevc = &penum->clues[sample_value].dev_color;\
- if ( !color_is_set(pdevc) )\
- { if ( penum->device_color )\
- (*map_gray)(byte2frac(sample_value), pdevc, pis, dev, gs_color_select_source);\
- else\
- { decode_sample(sample_value, cc, 0);\
+ bool tiles_fit = (pis ? gx_check_tile_cache(pis) : false);
+/*
+ * Free variables of IMAGE_SET_GRAY:
+ * Read: penum, pis, dev, tiles_fit
+ * Set: pdevc, code, cc
+ */
+#define IMAGE_SET_GRAY(sample_value)\
+ BEGIN\
+ pdevc = &penum->clues[sample_value].dev_color;\
+ if (!color_is_set(pdevc)) {\
+ if (penum->device_color)\
+ (*map_gray)(byte2frac(sample_value), pdevc, pis, dev, gs_color_select_source);\
+ else {\
+ decode_sample(sample_value, cc, 0);\
(*remap_color)(&cc, pcs, pdevc, pis, dev, gs_color_select_source);\
- }\
- }\
- else if ( !color_is_pure(pdevc) )\
- { if ( !tiles_fit )\
- { code = gx_color_load_select(pdevc, pis, dev, gs_color_select_source);\
- if ( code < 0 ) return code;\
- }\
- }\
- }
+ }\
+ } else if (!color_is_pure(pdevc)) {\
+ if (!tiles_fit) {\
+ code = gx_color_load_select(pdevc, pis, dev, gs_color_select_source);\
+ if ( code < 0 ) return code;\
+ }\
+ }\
+ END
gx_dda_fixed_point next; /* (y not used in fast loop) */
gx_dda_step_fixed dxx2, dxx3, dxx4; /* (not used in all loops) */
register const byte *psrc = buffer + data_x;
@@ -130,8 +134,7 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
const byte *stop = endp;
fixed xrun; /* x at start of run */
register byte run; /* run value */
- int htrun = /* halftone run value */
- (masked ? 255 : -2);
+ int htrun = (masked ? 255 : -2); /* halftone run value */
int code = 0;
if (h == 0)
@@ -157,11 +160,15 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
while (stop > psrc && stop[-1] == last)
--stop;
}
- if (penum->slow_loop || penum->posture != image_portrait) { /* Skewed, rotated, or imagemask with a halftone. */
+ if (penum->slow_loop || penum->posture != image_portrait) {
+
+ /**************************************************************
+ * Slow case (skewed, rotated, or imagemask with a halftone). *
+ **************************************************************/
+
fixed yrun;
const fixed pdyx = dda_current(penum->dda.row.x) - penum->cur.x;
const fixed pdyy = dda_current(penum->dda.row.y) - penum->cur.y;
-
dev_proc_fill_parallelogram((*fill_pgram)) =
dev_proc(dev, fill_parallelogram);
@@ -169,15 +176,37 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
#define ytf dda_current(next.y)
yrun = ytf;
if (masked) {
+
+ /**********************
+ * Slow case, masked. *
+ **********************/
+
pdevc = &penum->icolor1;
code = gx_color_load(pdevc, pis, dev);
if (code < 0)
return code;
if (stop <= psrc)
goto last;
- if (penum->posture == image_portrait) { /* We don't have to worry about the Y DDA, */
- /* and the fill regions are rectangles. */
- /* Calculate multiples of the DDA step. */
+ if (penum->posture == image_portrait) {
+
+ /********************************
+ * Slow case, masked, portrait. *
+ ********************************/
+
+ /*
+ * We don't have to worry about the Y DDA, and the fill
+ * regions are rectangles. Calculate multiples of the DDA
+ * step.
+ */
+ fixed ax =
+ (penum->matrix.xx < 0 ? -penum->adjust : penum->adjust);
+ fixed ay =
+ (pdyy < 0 ? -penum->adjust : penum->adjust);
+ fixed dyy = pdyy + (ay << 1);
+
+ yrun -= ay;
+ dda_translate(next.x, -ax);
+ ax <<= 1;
dxx2 = next.x.step;
dda_step_add(dxx2, next.x.step);
dxx3 = dxx2;
@@ -210,15 +239,58 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
break;
for (; *psrc; ++psrc)
dda_next(next.x);
- code = (*fill_pgram) (dev, xrun, yrun, xl - xrun,
- fixed_0, fixed_0, pdyy,
- pdevc, lop);
+ code = (*fill_pgram)(dev, xrun, yrun,
+ xl - xrun + ax, fixed_0, fixed_0, dyy,
+ pdevc, lop);
if (code < 0)
return code;
if (psrc >= stop)
break;
}
- } else
+
+ } else if (penum->posture == image_landscape) {
+
+ /*********************************
+ * Slow case, masked, landscape. *
+ *********************************/
+
+ /*
+ * We don't have to worry about the X DDA. However, we do
+ * have to take adjustment into account. We don't bother to
+ * optimize this as heavily as the portrait case.
+ */
+ fixed ax =
+ (pdyx < 0 ? -penum->adjust : penum->adjust);
+ fixed dyx = pdyx + (ax << 1);
+ fixed ay =
+ (penum->matrix.xy < 0 ? -penum->adjust : penum->adjust);
+
+ xrun -= ax;
+ dda_translate(next.y, -ay);
+ ay <<= 1;
+ for (;;) {
+ for (; !*psrc; ++psrc)
+ dda_next(next.y);
+ yrun = ytf;
+ if (psrc >= stop)
+ break;
+ for (; *psrc; ++psrc)
+ dda_next(next.y);
+ code = (*fill_pgram)(dev, xrun, yrun, fixed_0,
+ ytf - yrun + ay, dyx, fixed_0,
+ pdevc, lop);
+ if (code < 0)
+ return code;
+ if (psrc >= stop)
+ break;
+ }
+
+ } else {
+
+ /**************************************
+ * Slow case, masked, not orthogonal. *
+ **************************************/
+
for (;;) {
for (; !*psrc; ++psrc) {
dda_next(next.x);
@@ -232,27 +304,37 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
dda_next(next.x);
dda_next(next.y);
}
- code = (*fill_pgram) (dev, xrun, yrun, xl - xrun,
- ytf - yrun, pdyx, pdyy, pdevc, lop);
+ code = (*fill_pgram)(dev, xrun, yrun, xl - xrun,
+ ytf - yrun, pdyx, pdyy, pdevc, lop);
if (code < 0)
return code;
if (psrc >= stop)
break;
}
+
+ }
+
} else if (penum->posture == image_portrait ||
penum->posture == image_landscape
- ) { /* Not masked, and we can fill runs quickly. */
+ ) {
+
+ /**************************************
+ * Slow case, not masked, orthogonal. *
+ **************************************/
+
+ /* In this case, we can fill runs quickly. */
+ /****** DOESN'T DO ADJUSTMENT ******/
if (stop <= psrc)
goto last;
for (;;) {
if (*psrc != run) {
if (run != htrun) {
htrun = run;
- image_set_gray(run);
+ IMAGE_SET_GRAY(run);
}
- code = (*fill_pgram) (dev, xrun, yrun, xl - xrun,
- ytf - yrun, pdyx, pdyy,
- pdevc, lop);
+ code = (*fill_pgram)(dev, xrun, yrun, xl - xrun,
+ ytf - yrun, pdyx, pdyy,
+ pdevc, lop);
if (code < 0)
return code;
yrun = ytf;
@@ -265,16 +347,25 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
dda_next(next.x);
dda_next(next.y);
}
- } else { /* not masked *//* Since we have to check for the end after every pixel */
- /* anyway, we may as well avoid the last-run code. */
+ } else {
+
+ /******************************************
+ * Slow case, not masked, not orthogonal. *
+ ******************************************/
+
+ /*
+ * Since we have to check for the end after every pixel
+ * anyway, we may as well avoid the last-run code.
+ */
stop = endp;
- for (;;) { /* We can't skip large constant regions quickly, */
+ for (;;) {
+ /* We can't skip large constant regions quickly, */
/* because this leads to rounding errors. */
/* Just fill the region between xrun and xl. */
psrc++;
if (run != htrun) {
htrun = run;
- image_set_gray(run);
+ IMAGE_SET_GRAY(run);
}
code = (*fill_pgram) (dev, xrun, yrun, xl - xrun,
ytf - yrun, pdyx, pdyy, pdevc, lop);
@@ -290,11 +381,12 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
dda_next(next.x);
dda_next(next.y); /* harmless if no skew */
}
+
}
/* Fill the last run. */
last:if (stop < endp && (*stop || !masked)) {
if (!masked) {
- image_set_gray(*stop);
+ IMAGE_SET_GRAY(*stop);
}
dda_advance(next.x, endp - stop);
dda_advance(next.y, endp - stop);
@@ -303,7 +395,13 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
}
#undef xl
#undef ytf
- } else { /* fast loop *//* No skew, and not imagemask with a halftone. */
+
+ } else {
+
+ /**********************************************************
+ * Fast case: no skew, and not imagemask with a halftone. *
+ **********************************************************/
+
const fixed adjust = penum->adjust;
const fixed dxx = penum->dxx;
fixed xa = (dxx >= 0 ? adjust : -adjust);
@@ -406,7 +504,7 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
default:
ht: /* Use halftone if needed */
if (run != htrun) {
- image_set_gray(run);
+ IMAGE_SET_GRAY(run);
htrun = run;
}
/* We open-code gx_fill_rectangle, */
@@ -470,11 +568,12 @@ image_render_mono(gx_image_enum * penum, const byte * buffer, int data_x,
if (wi <= 0)
goto lmt;
}
- image_set_gray(*stop);
+ IMAGE_SET_GRAY(*stop);
code = gx_fill_rectangle_device_rop(xi, yt, wi, iht,
pdevc, dev, lop);
lmt:;
}
+
}
#undef xl
return (code < 0 ? code : 1);
diff --git a/gs/src/gxmclip.c b/gs/src/gxmclip.c
index 9536ce818..de9a45132 100644
--- a/gs/src/gxmclip.c
+++ b/gs/src/gxmclip.c
@@ -23,17 +23,63 @@
#include "gxdevmem.h"
#include "gxmclip.h"
+/* Structure descriptor */
+public_st_device_mask_clip();
+
+/* GC procedures */
+#define mcdev ((gx_device_mask_clip *)vptr)
+
+private ENUM_PTRS_BEGIN(device_mask_clip_enum_ptrs)
+{
+ if (index < st_gx_strip_bitmap_max_ptrs) {
+ return ENUM_USING(st_gx_strip_bitmap, &mcdev->tiles,
+ sizeof(mcdev->tiles), index);
+ }
+ index -= st_gx_strip_bitmap_max_ptrs;
+ if (index < st_device_memory_max_ptrs) {
+ return ENUM_USING(st_device_memory, &mcdev->mdev,
+ sizeof(mcdev->mdev), index);
+ }
+ ENUM_PREFIX(st_device_forward, st_device_memory_max_ptrs);
+}
+ENUM_PTRS_END
+
+private RELOC_PTRS_BEGIN(device_mask_clip_reloc_ptrs)
+{
+ RELOC_PREFIX(st_device_forward);
+ RELOC_USING(st_gx_strip_bitmap, &mcdev->tiles, sizeof(mcdev->tiles));
+ RELOC_USING(st_device_memory, &mcdev->mdev, sizeof(mcdev->mdev));
+ if (mcdev->mdev.base != 0) {
+ /*
+ * Update the line pointers specially, since they point into the
+ * buffer that is part of the mask clipping device itself.
+ */
+ long diff = (char *)RELOC_OBJ(mcdev) - (char *)mcdev;
+ int i;
+
+ for (i = 0; i < mcdev->mdev.height; ++i)
+ mcdev->mdev.line_ptrs[i] += diff;
+ mcdev->mdev.base = mcdev->mdev.line_ptrs[0];
+ mcdev->mdev.line_ptrs =
+ (void *)((char *)(mcdev->mdev.line_ptrs) + diff);
+ }
+}
+RELOC_PTRS_END
+
+#undef mcdev
+
/* Initialize a mask clipping device. */
int
gx_mask_clip_initialize(gx_device_mask_clip * cdev,
- const gx_device_mask_clip * proto, const gx_bitmap * bits,
- gx_device * tdev, int tx, int ty)
+ const gx_device_mask_clip * proto,
+ const gx_bitmap * bits, gx_device * tdev,
+ int tx, int ty)
{
int buffer_width = bits->size.x;
int buffer_height =
- tile_clip_buffer_size / (bits->raster + sizeof(byte *));
+ tile_clip_buffer_size / (bits->raster + sizeof(byte *));
- gx_device_init((gx_device *) cdev, (const gx_device *)proto,
+ gx_device_init((gx_device *)cdev, (const gx_device *)proto,
NULL, true);
cdev->width = tdev->width;
cdev->height = tdev->height;
@@ -45,10 +91,11 @@ gx_mask_clip_initialize(gx_device_mask_clip * cdev,
buffer_height = bits->size.y;
gs_make_mem_mono_device(&cdev->mdev, 0, 0);
for (;;) {
- if (buffer_height <= 0) { /*
- * The tile is too wide to buffer even one scan line.
- * We could do copy_mono in chunks, but for now, we punt.
- */
+ if (buffer_height <= 0) {
+ /*
+ * The tile is too wide to buffer even one scan line.
+ * We could do copy_mono in chunks, but for now, we punt.
+ */
cdev->mdev.base = 0;
return 0;
}
@@ -59,5 +106,5 @@ gx_mask_clip_initialize(gx_device_mask_clip * cdev,
buffer_height--;
}
cdev->mdev.base = cdev->buffer.bytes;
- return (*dev_proc(&cdev->mdev, open_device)) ((gx_device *) & cdev->mdev);
+ return (*dev_proc(&cdev->mdev, open_device))((gx_device *)&cdev->mdev);
}
diff --git a/gs/src/gxmclip.h b/gs/src/gxmclip.h
index 571744cdc..19f2b1bec 100644
--- a/gs/src/gxmclip.h
+++ b/gs/src/gxmclip.h
@@ -45,7 +45,7 @@ typedef struct gx_device_mask_clip_s {
gx_strip_bitmap tiles;
gx_device_memory mdev; /* for tile buffer for copy_mono */
gs_int_point phase; /* device space origin relative */
- /* to tile (backwards from gstate phase) */
+ /* to tile (backwards from gstate phase) */
/* Ensure that the buffer is long-aligned. */
union _b {
byte bytes[tile_clip_buffer_size];
@@ -53,10 +53,11 @@ typedef struct gx_device_mask_clip_s {
} buffer;
} gx_device_mask_clip;
-#define gx_private_st_device_mask_clip(stname, sname)\
- gs_private_st_simple(stname, gx_device_mask_clip, sname)
-#define gx_public_st_device_mask_clip(stname, sname)\
- gs_public_st_simple(stname, gx_device_mask_clip, sname)
+extern_st(st_device_mask_clip);
+#define public_st_device_mask_clip() /* in gxmclip.c */\
+ gs_public_st_composite(st_device_mask_clip, gx_device_mask_clip,\
+ "gx_device_mask_clip", device_mask_clip_enum_ptrs,\
+ device_mask_clip_reloc_ptrs)
/*
* Internal routine to initialize a mask clipping device.
diff --git a/gs/src/igcref.c b/gs/src/igcref.c
index 03b150da5..78f4fc24c 100644
--- a/gs/src/igcref.c
+++ b/gs/src/igcref.c
@@ -481,8 +481,7 @@ igc_reloc_refs(ref_packed * from, ref_packed * to, gc_state_t * gcst)
case t_name:
{
void *psub = name_ref_sub_table(pref);
- void *rsub =
- (*gc_proc(gcst, reloc_struct_ptr)) (psub, gcst);
+ void *rsub = RELOC_OBJ(psub); /* gcst implicit */
pref->value.pname = (name *)
((char *)rsub + ((char *)pref->value.pname - (char *)psub));
diff --git a/gs/src/int.mak b/gs/src/int.mak
index 651234939..9a4efd229 100644
--- a/gs/src/int.mak
+++ b/gs/src/int.mak
@@ -268,7 +268,7 @@ $(PSOBJ)zdict.$(OBJ): $(PSSRC)zdict.c $(OP)\
$(PSCC) $(PSO_)zdict.$(OBJ) $(C_) $(PSSRC)zdict.c
$(PSOBJ)zfile.$(OBJ): $(PSSRC)zfile.c $(OP) $(memory__h) $(string__h) $(gp_h)\
- $(gsstruct_h) $(gxalloc_h) $(gxiodev_h)\
+ $(gscdefs_h) $(gsstruct_h) $(gxalloc_h) $(gxiodev_h)\
$(ialloc_h) $(estack_h) $(files_h) $(fname_h) $(ilevel_h) $(interp_h) $(iutil_h)\
$(isave_h) $(main_h) $(sfilter_h) $(stream_h) $(strimpl_h) $(store_h)
$(PSCC) $(PSO_)zfile.$(OBJ) $(C_) $(PSSRC)zfile.c
@@ -708,7 +708,7 @@ $(PSOBJ)zfont42.$(OBJ): $(PSSRC)zfont42.c $(OP) $(memory__h)\
# ======================== Precompilation options ======================== #
# ---------------- Precompiled fonts ---------------- #
-# See fonts.txt for more information.
+# See Fonts.htm for more information.
ccfont_h=$(PSSRC)ccfont.h $(std_h) $(gsmemory_h) $(iref_h) $(ivmspace_h) $(store_h)
diff --git a/gs/src/jpeg.mak b/gs/src/jpeg.mak
index b357fc55c..359702a87 100644
--- a/gs/src/jpeg.mak
+++ b/gs/src/jpeg.mak
@@ -37,7 +37,7 @@
# ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v*.tar.gz
# MS-DOS archive (PKZIP a.k.a. zip format, MS-DOS end-of-line):
# ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/jpegsr*.zip
-# Please see Ghostscript's `make.txt' file for instructions about how to
+# Please see Ghostscript's `Make.htm' file for instructions about how to
# unpack these archives.
#
# When each version of Ghostscript is released, we copy the associated
diff --git a/gs/src/lib.mak b/gs/src/lib.mak
index 29b0a210a..4d34f1673 100644
--- a/gs/src/lib.mak
+++ b/gs/src/lib.mak
@@ -378,6 +378,7 @@ gconfig=gconfig$(CONFIG)
$(GLOBJ)$(gconfig).$(OBJ): $(GLSRC)gconf.c $(GX)\
$(gscdefs_h) $(gconf_h) $(gxdevice_h) $(gxiodev_h) $(MAKEFILE)
$(RM_) $(GLGEN)$(gconfig).c
+ $(RM_) $(GLGEN)$(gconfig).h
$(CP_) $(gconfig_h) $(GLGEN)gconfig.h
$(CP_) $(GLSRC)gconf.c $(GLGEN)$(gconfig).c
$(GLCC) $(GLO_)$(gconfig).$(OBJ) $(C_) $(GLGEN)$(gconfig).c
@@ -386,6 +387,7 @@ gscdefs=gscdefs$(CONFIG)
$(GLOBJ)$(gscdefs).$(OBJ): $(GLSRC)gscdef.c\
$(stdpre_h) $(gscdefs_h) $(gconf_h) $(MAKEFILE)
$(RM_) $(GLGEN)$(gscdefs).c
+ $(RM_) $(GLGEN)$(gconfig).h
$(CP_) $(gconfig_h) $(GLGEN)gconfig.h
$(CP_) $(GLSRC)gscdef.c $(GLGEN)$(gscdefs).c
$(GLCC) $(GLO_)$(gscdefs).$(OBJ) $(C_) $(GLGEN)$(gscdefs).c
diff --git a/gs/src/libpng.mak b/gs/src/libpng.mak
index eb56f030e..1c8a95a86 100644
--- a/gs/src/libpng.mak
+++ b/gs/src/libpng.mak
@@ -32,7 +32,7 @@
# PNG drivers. You can get the source code for this library from:
# ftp://swrinde.nde.swri.edu/pub/png/src/
# ftp://ftp.uu.net/graphics/png/src/
-# Please see Ghostscript's `make.txt' file for instructions about how to
+# Please see Ghostscript's `Make.htm' file for instructions about how to
# unpack these archives.
#
# When each version of Ghostscript is released, we copy the associated
diff --git a/gs/src/msvc32.mak b/gs/src/msvc32.mak
index 73496ab72..42b184a77 100644
--- a/gs/src/msvc32.mak
+++ b/gs/src/msvc32.mak
@@ -53,7 +53,7 @@ GS_LIB_DEFAULT=.;c:/gs;c:/gs/fonts
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
!ifndef SEARCH_HERE_FIRST
@@ -71,7 +71,7 @@ GS_INIT=gs_init.ps
# Setting DEBUG=1 includes debugging features (-Z switch) in the code.
# Code runs substantially slower even if no debugging switches are set,
-# and also takes about another 25K of memory.
+# and is also substantially larger.
!ifndef DEBUG
DEBUG=0
@@ -80,8 +80,11 @@ DEBUG=0
# Setting TDEBUG=1 includes symbol table information for the debugger,
# and also enables stack checking. Code is substantially slower and larger.
+# NOTE: The MSVC++ 5.0 compiler produces incorrect output code with TDEBUG=0.
+# Leave TDEBUG set to 1.
+
!ifndef TDEBUG
-TDEBUG=0
+TDEBUG=1
!endif
# Setting NOPRIVATE=1 makes private (static) procedures and variables public,
@@ -114,13 +117,24 @@ MAKEDLL=1
# Define the source, generated intermediate file, and object directories
# for the graphics library (GL) and the PostScript/PDF interpreter (PS).
-# This is a bad joke. This makefile won't work with any other values!
+!ifndef GLSRCDIR
GLSRCDIR=.
-GLGENDIR=.
-GLOBJDIR=.
+!endif
+!ifndef GLGENDIR
+GLGENDIR=.\obj
+!endif
+!ifndef GLOBJDIR
+GLOBJDIR=.\obj
+!endif
+!ifndef PSSRCDIR
PSSRCDIR=.
-PSGENDIR=.
-PSOBJDIR=.
+!endif
+!ifndef PSGENDIR
+PSGENDIR=.\obj
+!endif
+!ifndef PSOBJDIR
+PSOBJDIR=.\obj
+!endif
# Define the directory where the IJG JPEG library sources are stored,
# and the major version of the library that is stored there.
@@ -163,7 +177,8 @@ CFLAGS=
# ------ Platform-specific options ------ #
-# Define which major version of MSVC is being used (currently, 4 & 5 supported)
+# Define which major version of MSVC is being used
+# (currently, 4 & 5 are supported).
!ifndef MSVC_VERSION
MSVC_VERSION = 5
@@ -322,73 +337,76 @@ FPU_TYPE=1
# Define the name of the makefile -- used in dependencies.
# The use of multiple file names here is garbage!
-MAKEFILE=msvc32.mak msvccmd.mak msvctail.mak winlib.mak winint.mak
+MAKEFILE=$(GLSRCDIR)\msvc32.mak $(GLSRCDIR)\msvccmd.mak $(GLSRCDIR)\msvctail.mak $(GLSRCDIR)\winlib.mak $(GLSRCDIR)\winint.mak
# Define the files to be removed by `make clean'.
# nmake expands macros when encountered, not when used,
# so this must precede the !include statements.
-BEGINFILES2=gs*32*.exp gs*32*.ilk gs*32*.pdb gs*32*.lib lib32.rsp
+BEGINFILES2=$(GLOBJDIR)\gs*32*.exp $(GLOBJDIR)\gs*32*.ilk $(GLOBJDIR)\gs*32*.pdb $(GLOBJDIR)\gs*32*.lib $(GLGENDIR)\lib32.rsp
-!include msvccmd.mak
-!include winlib.mak
-!include msvctail.mak
-!include winint.mak
+!include $(GLSRCDIR)\msvccmd.mak
+!include $(GLSRCDIR)\winlib.mak
+!include $(GLSRCDIR)\msvctail.mak
+!include $(GLSRCDIR)\winint.mak
# ----------------------------- Main program ------------------------------ #
-lib32.rsp: MAKEFILE
- echo /NODEFAULTLIB:LIBC.lib > lib32.rsp
- echo $(LIBDIR)\libcmt.lib >> lib32.rsp
+GSCONSOLE_XE=$(GLOBJ)$(GSCONSOLE).exe
+GSDLL_DLL=$(GLOBJ)$(GSDLL).dll
+
+$(GLGEN)lib32.rsp: $(MAKEFILE)
+ echo /NODEFAULTLIB:LIBC.lib > $(GLGEN)lib32.rsp
+ echo $(LIBDIR)\libcmt.lib >> $(GLGEN)lib32.rsp
!if $(MAKEDLL)
# The graphical small EXE loader
-$(GS_XE): $(GSDLL).dll $(DWOBJ) $(GSCONSOLE).exe
- echo /SUBSYSTEM:WINDOWS > gswin32.rsp
- echo /DEF:dwmain32.def /OUT:$(GS_XE) >> gswin32.rsp
- $(LINK) $(LCT) @gswin32.rsp $(DWOBJ) @$(LIBCTR) $(GS).res
- del gswin32.rsp
+$(GS_XE): $(GSDLL_DLL) $(DWOBJ) $(GSCONSOLE_XE)
+ echo /SUBSYSTEM:WINDOWS > $(GLGEN)gswin32.rsp
+ echo /DEF:$(GLSRC)dwmain32.def /OUT:$(GS_XE) >> $(GLGEN)gswin32.rsp
+ $(LINK) $(LCT) @$(GLGEN)gswin32.rsp $(DWOBJ) @$(LIBCTR) $(GS).res
+ del $(GLGEN)gswin32.rsp
# The console mode small EXE loader
-$(GSCONSOLE).exe: $(OBJC) $(GS).res dw32c.def
- echo /SUBSYSTEM:CONSOLE > gswin32.rsp
- echo /DEF:dw32c.def /OUT:$(GSCONSOLE).exe >> gswin32.rsp
+$(GSCONSOLE_XE): $(OBJC) $(GS).res $(GLSRC)dw32c.def
+ echo /SUBSYSTEM:CONSOLE > $(GLGEN)gswin32.rsp
+ echo /DEF:$(GLSRC)dw32c.def /OUT:$(GSCONSOLE_XE) >> $(GLGEN)gswin32.rsp
$(LINK_SETUP)
- $(LINK) $(LCT) @gswin32.rsp $(OBJC) @$(LIBCTR) $(GS).res
- del gswin32.rsp
+ $(LINK) $(LCT) @$(GLGEN)gswin32.rsp $(OBJC) @$(LIBCTR) $(GS).res
+ del $(GLGEN)gswin32.rsp
# The big DLL
-$(GSDLL).dll: $(GS_ALL) $(DEVS_ALL) gsdll.$(OBJ) $(GSDLL).res lib32.rsp
- echo /DLL /DEF:gsdll32.def /OUT:$(GSDLL).dll > gswin32.rsp
+$(GSDLL_DLL): $(GS_ALL) $(DEVS_ALL) $(GLOBJ)gsdll.$(OBJ) $(GSDLL).res $(GLGEN)lib32.rsp
+ echo /DLL /DEF:$(GLSRC)gsdll32.def /OUT:$(GSDLL_DLL) > $(GLGEN)gswin32.rsp
$(LINK_SETUP)
- $(LINK) $(LCT) @gswin32.rsp gsdll @$(ld_tr) $(INTASM) @lib.tr @lib32.rsp @$(LIBCTR) $(GSDLL).res
- del gswin32.rsp
+ $(LINK) $(LCT) @$(GLGEN)gswin32.rsp $(GLOBJ)gsdll @$(ld_tr) $(INTASM) @$(GLGEN)lib.tr @$(GLGEN)lib32.rsp @$(LIBCTR) $(GSDLL).res
+ del $(GLGEN)gswin32.rsp
!else
# The big graphical EXE
-$(GS_XE): $(GSCONSOLE).exe $(GS_ALL) $(DEVS_ALL) gsdll.$(OBJ) $(DWOBJNO) $(GS).res dwmain32.def lib32.rsp
- copy $(ld_tr) gswin32.tr
- echo $(GLOBJ)dwnodll.obj >> gswin32.tr
- echo $(GLOBJ)dwimg.obj >> gswin32.tr
- echo $(GLOBJ)dwmain.obj >> gswin32.tr
- echo $(GLOBJ)dwtext.obj >> gswin32.tr
- echo /DEF:dwmain32.def /OUT:$(GS_XE) > gswin32.rsp
+$(GS_XE): $(GSCONSOLE_XE) $(GS_ALL) $(DEVS_ALL) gsdll.$(OBJ) $(DWOBJNO) $(GS).res $(GLSRC)dwmain32.def $(GLGEN)lib32.rsp
+ copy $(ld_tr) $(GLGEN)gswin32.tr
+ echo $(GLOBJ)dwnodll.obj >> $(GLGEN)gswin32.tr
+ echo $(GLOBJ)dwimg.obj >> $(GLGEN)gswin32.tr
+ echo $(GLOBJ)dwmain.obj >> $(GLGEN)gswin32.tr
+ echo $(GLOBJ)dwtext.obj >> $(GLGEN)gswin32.tr
+ echo /DEF:$(GLSRC)dwmain32.def /OUT:$(GS_XE) > $(GLGEN)gswin32.rsp
$(LINK_SETUP)
- $(LINK) $(LCT) @gswin32.rsp gsdll @gswin32.tr @$(LIBCTR) $(INTASM) @lib.tr @lib32.rsp $(GSDLL).res
- del gswin32.tr
- del gswin32.rsp
+ $(LINK) $(LCT) @$(GLGEN)gswin32.rsp gsdll @$(GLGEN)gswin32.tr @$(LIBCTR) $(INTASM) @$(GLGEN)lib.tr @$(GLGEN)lib32.rsp $(GSDLL).res
+ del $(GLGEN)gswin32.tr
+ del $(GLGEN)gswin32.rsp
# The big console mode EXE
-$(GSCONSOLE).exe: $(GS_ALL) $(DEVS_ALL) gsdll.$(OBJ) $(OBJCNO) $(GS).res dw32c.def lib32.rsp
- copy $(ld_tr) gswin32c.tr
- echo $(GLOBJ)dwnodllc.obj >> gswin32c.tr
- echo $(GLOBJ)dwmainc.obj >> gswin32c.tr
- echo /SUBSYSTEM:CONSOLE > gswin32.rsp
- echo /DEF:dw32c.def /OUT:$(GSCONSOLE).exe >> gswin32.rsp
+$(GSCONSOLE_XE): $(GS_ALL) $(DEVS_ALL) gsdll.$(OBJ) $(OBJCNO) $(GS).res $(GLSRC)dw32c.def $(GLGEN)lib32.rsp
+ copy $(ld_tr) $(GLGEN)gswin32c.tr
+ echo $(GLOBJ)dwnodllc.obj >> $(GLGEN)gswin32c.tr
+ echo $(GLOBJ)dwmainc.obj >> $(GLGEN)gswin32c.tr
+ echo /SUBSYSTEM:CONSOLE > $(GLGEN)gswin32.rsp
+ echo /DEF:$(GLSRC)dw32c.def /OUT:$(GSCONSOLE_XE) >> $(GLGEN)gswin32.rsp
$(LINK_SETUP)
- $(LINK) $(LCT) @gswin32.rsp gsdll @gswin32c.tr @$(LIBCTR) $(INTASM) @lib.tr @lib32.rsp $(GS).res
- del gswin32.rsp
- del gswin32c.tr
+ $(LINK) $(LCT) @$(GLGEN)gswin32.rsp gsdll @$(GLGEN)gswin32c.tr @$(LIBCTR) $(INTASM) @$(GLGEN)lib.tr @$(GLGEN)lib32.rsp $(GS).res
+ del $(GLGEN)gswin32.rsp
+ del $(GLGEN)gswin32c.tr
!endif
# end of makefile
diff --git a/gs/src/msvccmd.mak b/gs/src/msvccmd.mak
index 83ff4070f..8b435f6bf 100644
--- a/gs/src/msvccmd.mak
+++ b/gs/src/msvccmd.mak
@@ -68,7 +68,7 @@ O_=-Fo
# Define the arguments for genconf.
-CONFILES=-p %%s -l lib.tr
+CONFILES=-p %%s -l $(GLGENDIR)\lib.tr
CONFLDTR=-o
# Define the generic compilation flags.
@@ -137,7 +137,9 @@ CD=
!endif
!if $(TDEBUG)!=0
-CT=/Zi /Od
+# /Fd designates the directory for the .pdb file.
+# Note that it must be followed by a space.
+CT=/Zi /Od /Fd$(GLOBJDIR) $(NULL)
LCT=/DEBUG $(LINK_LIB_SWITCH)
COMPILE_FULL_OPTIMIZED= # no optimization when debugging
COMPILE_WITH_FRAMES= # no optimization when debugging
@@ -170,8 +172,8 @@ COMPILE_FOR_CONSOLE_EXE=
GENOPT=$(CP) $(CD) $(CT) $(CS) /W2 /nologo /MT
CCFLAGS=$(PLATOPT) $(FPFLAGS) $(CPFLAGS) $(CFLAGS) $(XCFLAGS)
-CC=$(COMP) /c $(CCFLAGS) @ccf32.tr
-CPP=$(COMPCPP) /c $(CCFLAGS) @ccf32.tr
+CC=$(COMP) /c $(CCFLAGS) @$(GLGENDIR)\ccf32.tr
+CPP=$(COMPCPP) /c $(CCFLAGS) @$(GLGENDIR)\ccf32.tr
!if $(MAKEDLL)
WX=$(COMPILE_FOR_DLL)
!else
diff --git a/gs/src/msvclib.mak b/gs/src/msvclib.mak
index 505401009..3de43a59b 100644
--- a/gs/src/msvclib.mak
+++ b/gs/src/msvclib.mak
@@ -47,7 +47,7 @@ GS_LIB_DEFAULT=.;c:/gs/lib;c:/gs/fonts
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
!ifndef SEARCH_HERE_FIRST
@@ -72,8 +72,11 @@ DEBUG=0
# Setting TDEBUG=1 includes symbol table information for the debugger,
# and also enables stack checking. Code is substantially slower and larger.
+# NOTE: The MSVC++ 5.0 compiler produces incorrect output code with TDEBUG=0.
+# Leave TDEBUG set to 1.
+
!ifndef TDEBUG
-TDEBUG=0
+TDEBUG=1
!endif
# Setting NOPRIVATE=1 makes private (static) procedures and variables public,
@@ -94,9 +97,15 @@ GS=gslib
# for the graphics library (GL).
# This is a bad joke. This makefile won't work with any other values!
+!ifndef GLSRCDIR
GLSRCDIR=.
+!endif
+!ifndef GLGENDIR
GLGENDIR=.
+!endif
+!ifndef GLOBJDIR
GLOBJDIR=.
+!endif
# Define the directory where the IJG JPEG library sources are stored,
# and the major version of the library that is stored there.
@@ -225,7 +234,7 @@ FPU_TYPE=0
# Choose the language feature(s) to include. See gs.mak for details.
!ifndef FEATURE_DEVS
-FEATURE_DEVS=dps2lib.dev psl2cs.dev cielib.dev imasklib.dev patlib.dev htxlib.dev roplib.dev devcmap.dev
+FEATURE_DEVS=dps2lib.dev psl2cs.dev cielib.dev imasklib.dev patlib.dev htxlib.dev roplib.dev devcmap.dev bbox.dev
!endif
# Choose whether to compile the .ps initialization files into the executable.
@@ -296,25 +305,25 @@ FPU_TYPE=1
# Define the name of the makefile -- used in dependencies.
# The use of multiple file names here is garbage!
-MAKEFILE=msvclib.mak msvccmd.mak msvctail.mak winlib.mak
+MAKEFILE=$(GLSRCDIR)\msvclib.mak $(GLSRCDIR)\msvccmd.mak $(GLSRCDIR)\msvctail.mak $(GLSRCDIR)\winlib.mak
# Define the files to be removed by `make clean'.
# nmake expands macros when encountered, not when used,
# so this must precede the !include statements.
-BEGINFILES2=$(GS).ilk $(GS).pdb
+BEGINFILES2=$(GLOBJDIR)\$(GS).ilk $(GLOBJDIR)\$(GS).pdb
# Define these right away because they modify the behavior of
# msvccmd.mak, msvctail.mak & winlib.mak.
-LIB_ONLY=$(GLOBJ)gslib.obj $(GLOBJ)gsnogc.obj $(GLOBJ)gconfig.obj $(GLOBJ)gscdefs.obj
+LIB_ONLY=$(GLOBJDIR)\gslib.obj $(GLOBJDIR)\gsnogc.obj $(GLOBJDIR)\gconfig.obj $(GLOBJDIR)\gscdefs.obj
MAKEDLL=0
PLATFORM=mslib32_
-!include msvccmd.mak
-!include winlib.mak
-!include msvctail.mak
+!include $(GLSRCDIR)\msvccmd.mak
+!include $(GLSRCDIR)\winlib.mak
+!include $(GLSRCDIR)\msvctail.mak
# -------------------------------- Library -------------------------------- #
@@ -336,13 +345,13 @@ mslib32_.dev: $(mslib32__) $(ECHOGS_XE) msw32nc_.dev
# The library tester EXE
$(GS_XE): $(GS_ALL) $(DEVS_ALL) $(LIB_ONLY) $(LIBCTR)
- copy $(ld_tr) gslib32.tr
- echo $(GLOBJ)gsnogc.obj >> gslib32.tr
- echo $(GLOBJ)gconfig.obj >> gslib32.tr
- echo $(GLOBJ)gscdefs.obj >> gslib32.tr
- echo /SUBSYSTEM:CONSOLE > gslib32.rsp
- echo /OUT:$(GS_XE) >> gslib32.rsp
+ copy $(ld_tr) $(GLGENDIR)\gslib32.tr
+ echo $(GLOBJ)gsnogc.obj >> $(GLGENDIR)\gslib32.tr
+ echo $(GLOBJ)gconfig.obj >> $(GLGENDIR)\gslib32.tr
+ echo $(GLOBJ)gscdefs.obj >> $(GLGENDIR)\gslib32.tr
+ echo /SUBSYSTEM:CONSOLE > $(GLGENDIR)\gslib32.rsp
+ echo /OUT:$(GS_XE) >> $(GLGENDIR)\gslib32.rsp
$(LINK_SETUP)
- $(LINK) $(LCT) @gslib32.rsp gslib @gslib32.tr @$(LIBCTR) $(INTASM) @lib.tr
- -del gslib32.rsp
- -del gslib32.tr
+ $(LINK) $(LCT) @$(GLGENDIR)\gslib32.rsp $(GLOBJ)gslib @$(GLGENDIR)\gslib32.tr @$(LIBCTR) $(INTASM) @$(GLGENDIR)\lib.tr
+ -del $(GLGENDIR)\gslib32.rsp
+ -del $(GLGENDIR)\gslib32.tr
diff --git a/gs/src/msvctail.mak b/gs/src/msvctail.mak
index d7bc11772..f0e3eeff8 100644
--- a/gs/src/msvctail.mak
+++ b/gs/src/msvctail.mak
@@ -24,23 +24,39 @@
# -------------------------- Auxiliary programs --------------------------- #
-ccf32.tr: $(MAKEFILE)
- echo $(GENOPT) /I$(INCDIR) -DCHECK_INTERRUPTS -D_Windows -D__WIN32__ > ccf32.tr
+$(GLGENDIR)\ccf32.tr: $(MAKEFILE)
+ echo $(GENOPT) /I$(INCDIR) -DCHECK_INTERRUPTS -D_Windows -D__WIN32__ > $(GLGENDIR)\ccf32.tr
+
+$(ECHOGS_XE): $(GLSRC)echogs.c
+ $(CCAUX_SETUP)
+ $(CCAUX) $(GLSRC)echogs.c /Fo$(GLOBJ)echogs.obj /Fe$(ECHOGS_XE) $(CCAUX_TAIL)
# Don't create genarch if it's not needed
!ifdef GENARCH_XE
-$(GENARCH_XE): $(GSLRC)genarch.c $(stdpre_h) $(iref_h) ccf32.tr
+$(GENARCH_XE): $(GLSRC)genarch.c $(stdpre_h) $(iref_h) $(GLGENDIR)\ccf32.tr
$(CCAUX_SETUP)
- $(CCAUX) @ccf32.tr $(GLSRC)genarch.c $(CCAUX_TAIL)
+ $(CCAUX) @$(GLGENDIR)\ccf32.tr /Fo$(GLOBJ)genarch.obj /Fe$(GENARCH_XE) $(GLSRC)genarch.c $(CCAUX_TAIL)
!endif
+$(GENCONF_XE): $(GLSRC)genconf.c $(stdpre_h)
+ $(CCAUX_SETUP)
+ $(CCAUX) $(GLSRC)genconf.c /Fo$(GLOBJ)genconf.obj /Fe$(GENCONF_XE) $(CCAUX_TAIL)
+
+$(GENDEV_XE): $(GLSRC)gendev.c $(stdpre_h)
+ $(CCAUX_SETUP)
+ $(CCAUX) $(GLSRC)gendev.c /Fo$(GLOBJ)gendev.obj /Fe$(GENDEV_XE) $(CCAUX_TAIL)
+
+$(GENINIT_XE): $(PSSRC)geninit.c $(stdio__h) $(string__h)
+ $(CCAUX_SETUP)
+ $(CCAUX) $(PSSRC)geninit.c /Fo$(GLOBJ)geninit.obj /Fe$(GENINIT_XE) $(CCAUX_TAIL)
+
# -------------------------------- Library -------------------------------- #
# See winlib.mak
# ----------------------------- Main program ------------------------------ #
-LIBCTR=libc32.tr
+LIBCTR=$(GLGEN)libc32.tr
$(LIBCTR): $(MAKEFILE)
echo $(LIBDIR)\shell32.lib >$(LIBCTR)
diff --git a/gs/src/openvms.mak b/gs/src/openvms.mak
index bb8cd5c9a..324e13d61 100644
--- a/gs/src/openvms.mak
+++ b/gs/src/openvms.mak
@@ -54,7 +54,7 @@ GS_LIB_DEFAULT=GS_LIB
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
diff --git a/gs/src/os2.mak b/gs/src/os2.mak
index 2abd1aead..3fe3f0594 100644
--- a/gs/src/os2.mak
+++ b/gs/src/os2.mak
@@ -40,7 +40,7 @@ GS_LIB_DEFAULT=c:/gs;c:/gs/fonts
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
@@ -266,9 +266,9 @@ RMN_=rm.cmd
# Define the arguments for genconf.
!if $(MAKEDLL)
-CONFILES=-p %%s+ -l lib.tr
+CONFILES=-p %%s+ -l $(GLGENDIR)\lib.tr
!else
-CONFILES=-l lib.tr
+CONFILES=-l $(GLGENDIR)\lib.tr
!endif
CONFLDTR=-o
@@ -527,7 +527,7 @@ ICONS=gsos2.ico gspmdrv.ico
!if $(MAKEDLL)
#making a DLL
GS_ALL=$(GLOBJ)gsdll.$(OBJ) $(INT_ALL) $(INTASM)\
- $(LIB_ALL) $(LIBCTR) $(ld_tr) lib.tr $(GS).res $(ICONS)
+ $(LIB_ALL) $(LIBCTR) $(ld_tr) $(GLGEN)lib.tr $(GS).res $(ICONS)
$(GS_XE): $(GSDLL).dll dpmainc.c $(gsdll_h) gsos2.rc gscdefs.$(OBJ)
!if $(EMX)
@@ -552,7 +552,7 @@ $(GSDLL).dll: $(GS_ALL) $(ALL_DEVS) $(GLOBJ)gsdll.$(OBJ)
!else
#making an EXE
GS_ALL=$(GLOBJ)gs.$(OBJ) $(INT_ALL) $(INTASM)\
- $(LIB_ALL) $(LIBCTR) $(ld_tr) lib.tr $(GS).res $(ICONS)
+ $(LIB_ALL) $(LIBCTR) $(ld_tr) $(GLGEN)lib.tr $(GS).res $(ICONS)
$(GS_XE): $(GS_ALL) $(ALL_DEVS)
$(COMPDIR)\gcc $(CGDB) -o $(GS) $(GLOBJ)gs.$(OBJ) @$(ld_tr) $(INTASM) -lm
diff --git a/gs/src/rpm-conf.dif b/gs/src/rpm-conf.dif
new file mode 100644
index 000000000..3a11395cd
--- /dev/null
+++ b/gs/src/rpm-conf.dif
@@ -0,0 +1,101 @@
+*** ../Makefile Wed Sep 9 10:06:53 1998
+--- ./Makefile Wed Sep 9 10:07:03 1998
+***************
+*** 53,59 ****
+ INSTALL_PROGRAM = $(INSTALL) -m 755
+ INSTALL_DATA = $(INSTALL) -m 644
+
+! prefix = /usr/local
+ exec_prefix = $(prefix)
+ bindir = $(exec_prefix)/bin
+ scriptdir = $(bindir)
+--- 53,60 ----
+ INSTALL_PROGRAM = $(INSTALL) -m 755
+ INSTALL_DATA = $(INSTALL) -m 644
+
+! #prefix = /usr/local
+! prefix = /usr
+ exec_prefix = $(prefix)
+ bindir = $(exec_prefix)/bin
+ scriptdir = $(bindir)
+***************
+*** 64,70 ****
+ gsdir = $(datadir)/ghostscript
+ gsdatadir = $(gsdir)/$(GS_DOT_VERSION)
+
+! docdir=$(gsdatadir)/doc
+ exdir=$(gsdatadir)/examples
+ GS_DOCDIR=$(docdir)
+
+--- 65,72 ----
+ gsdir = $(datadir)/ghostscript
+ gsdatadir = $(gsdir)/$(GS_DOT_VERSION)
+
+! #docdir=$(gsdatadir)/doc
+! docdir=$(prefix)/doc/ghostscript-$(GS_DOT_VERSION)
+ exdir=$(gsdatadir)/examples
+ GS_DOCDIR=$(docdir)
+
+***************
+*** 184,194 ****
+ # the 2.7.0-2.7.2 optimizer bug, either "-Dconst=" or
+ # "-Wcast-qual -Wwrite-strings" is automatically included.
+
+! GCFLAGS=-Wall -Wcast-align -Wstrict-prototypes -Wwrite-strings -fno-common
+
+ # Define the added flags for standard, debugging, and profiling builds.
+
+! CFLAGS_STANDARD=-O2
+ CFLAGS_DEBUG=-g -O
+ CFLAGS_PROFILE=-pg -O2
+
+--- 186,198 ----
+ # the 2.7.0-2.7.2 optimizer bug, either "-Dconst=" or
+ # "-Wcast-qual -Wwrite-strings" is automatically included.
+
+! #GCFLAGS=-Wall -Wcast-align -Wstrict-prototypes -Wwrite-strings -fno-common
+! GCFLAGS=$(RPM_OPT_FLAGS) -Wall -Wcast-align -Wstrict-prototypes -Wwrite-strings -fno-common
+
+ # Define the added flags for standard, debugging, and profiling builds.
+
+! #CFLAGS_STANDARD=-O2
+! CFLAGS_STANDARD=
+ CFLAGS_DEBUG=-g -O
+ CFLAGS_PROFILE=-pg -O2
+
+***************
+*** 234,240 ****
+ # Note that x_.h expects to find the header files in $(XINCLUDE)/X11,
+ # not in $(XINCLUDE).
+
+! XINCLUDE=-I/usr/local/X/include
+
+ # Define the directory/ies and library names for the X11 library files.
+ # XLIBDIRS is for ld and should include -L; XLIBDIR is for LD_RUN_PATH
+--- 238,245 ----
+ # Note that x_.h expects to find the header files in $(XINCLUDE)/X11,
+ # not in $(XINCLUDE).
+
+! #XINCLUDE=-I/usr/local/X/include
+! XINCLUDE=-I/usr/X11R6/include
+
+ # Define the directory/ies and library names for the X11 library files.
+ # XLIBDIRS is for ld and should include -L; XLIBDIR is for LD_RUN_PATH
+***************
+*** 249,255 ****
+ #XLIBS=Xt SM ICE Xext X11
+
+ #XLIBDIRS=-L/usr/local/X/lib
+! XLIBDIRS=-L/usr/X11/lib
+ XLIBDIR=
+ XLIBS=Xt Xext X11
+
+--- 254,261 ----
+ #XLIBS=Xt SM ICE Xext X11
+
+ #XLIBDIRS=-L/usr/local/X/lib
+! #XLIBDIRS=-L/usr/X11/lib
+! XLIBDIRS=-L/usr/X11R6/lib
+ XLIBDIR=
+ XLIBS=Xt Xext X11
+
diff --git a/gs/src/unix-cc.mak b/gs/src/unix-cc.mak
index efdd91dfd..1641a9de4 100755
--- a/gs/src/unix-cc.mak
+++ b/gs/src/unix-cc.mak
@@ -77,7 +77,7 @@ GS_LIB_DEFAULT=$(gsdatadir):$(gsdir)/fonts
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
@@ -133,7 +133,7 @@ JVERSION=6
# DON'T DO THIS. If you do, the resulting executable will not be able to
# read some PostScript files containing JPEG data, because Adobe chose to
# define PostScript's JPEG capabilities in a way that is slightly
-# incompatible with the JPEG standard. See make.txt for more details.
+# incompatible with the JPEG standard. See Make.htm for more details.
# DON'T SET THIS TO 1! See the comment just above.
SHARE_JPEG=0
@@ -149,7 +149,7 @@ PVERSION=96
# Choose whether to use a shared version of the PNG library, and if so,
# what its name is.
-# See gs.mak and make.txt for more information.
+# See gs.mak and Make.htm for more information.
SHARE_LIBPNG=0
LIBPNG_NAME=png
@@ -161,7 +161,7 @@ ZSRCDIR=zlib
# Choose whether to use a shared version of the zlib library, and if so,
# what its name is (usually libz, but sometimes libgz).
-# See gs.mak and make.txt for more information.
+# See gs.mak and Make.htm for more information.
SHARE_ZLIB=0
#ZLIB_NAME=gz
diff --git a/gs/src/unix-end.mak b/gs/src/unix-end.mak
index 8d3488200..8d7687472 100644
--- a/gs/src/unix-end.mak
+++ b/gs/src/unix-end.mak
@@ -81,17 +81,3 @@ $(gconfigv_h): $(GLSRC)unix-end.mak $(MAKEFILE) $(ECHOGS_XE)
TAGS:
etags -t $(GLSRC)*.[ch] $(PSSRC)*.[ch]
-
-# Documentation maintenance.
-
-docs: PUBLIC
-
-PUBLIC: Public.htm
- if (ps aux | egrep -w "(net)(scape)"); then true; else (netscape -iconic -ncols 16 &); sleep 10; fi
- cp -p Public.htm /tmp/$$.htm
- netscape -remote "openURL(file:/tmp/$$.htm)"
- sleep 5
- netscape -remote "saveAs(/tmp/$$.txt,Text)"
- sleep 5
- cp -p /tmp/$$.txt PUBLIC
- rm -f /tmp/$$.htm /tmp/$$.txt
diff --git a/gs/src/unix-gcc.mak b/gs/src/unix-gcc.mak
index cf85453d2..ed884284b 100755
--- a/gs/src/unix-gcc.mak
+++ b/gs/src/unix-gcc.mak
@@ -77,7 +77,7 @@ GS_LIB_DEFAULT=$(gsdatadir):$(gsdir)/fonts
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
@@ -123,7 +123,7 @@ JVERSION=6
# DON'T DO THIS. If you do, the resulting executable will not be able to
# read some PostScript files containing JPEG data, because Adobe chose to
# define PostScript's JPEG capabilities in a way that is slightly
-# incompatible with the JPEG standard. See make.txt for more details.
+# incompatible with the JPEG standard. See Make.htm for more details.
# DON'T SET THIS TO 1! See the comment just above.
SHARE_JPEG=0
@@ -139,7 +139,7 @@ PVERSION=96
# Choose whether to use a shared version of the PNG library, and if so,
# what its name is.
-# See gs.mak and make.txt for more information.
+# See gs.mak and Make.htm for more information.
SHARE_LIBPNG=0
LIBPNG_NAME=png
@@ -151,7 +151,7 @@ ZSRCDIR=zlib
# Choose whether to use a shared version of the zlib library, and if so,
# what its name is (usually libz, but sometimes libgz).
-# See gs.mak and make.txt for more information.
+# See gs.mak and Make.htm for more information.
SHARE_ZLIB=0
#ZLIB_NAME=gz
@@ -300,7 +300,7 @@ DEVICE_DEVS=x11.dev x11alpha.dev x11cmyk.dev x11gray2.dev x11gray4.dev x11mono.d
DEVICE_DEVS1=
DEVICE_DEVS2=
DEVICE_DEVS3=deskjet.dev djet500.dev laserjet.dev ljetplus.dev ljet2p.dev ljet3.dev ljet4.dev
-DEVICE_DEVS4=cdeskjet.dev cdjcolor.dev cdjmono.dev cdj550.dev pj.dev pjxl.dev pjxl300.dev cljet5.dev
+DEVICE_DEVS4=cdeskjet.dev cdjcolor.dev cdjmono.dev cdj550.dev pj.dev pjxl.dev pjxl300.dev
DEVICE_DEVS5=uniprint.dev
DEVICE_DEVS6=bj10e.dev bj200.dev bjc600.dev bjc800.dev
DEVICE_DEVS7=faxg3.dev faxg32d.dev faxg4.dev
diff --git a/gs/src/unixansi.mak b/gs/src/unixansi.mak
index 236c9b588..caa9b7322 100755
--- a/gs/src/unixansi.mak
+++ b/gs/src/unixansi.mak
@@ -77,7 +77,7 @@ GS_LIB_DEFAULT=$(gsdatadir):$(gsdir)/fonts
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
@@ -122,7 +122,7 @@ JVERSION=6
# DON'T DO THIS. If you do, the resulting executable will not be able to
# read some PostScript files containing JPEG data, because Adobe chose to
# define PostScript's JPEG capabilities in a way that is slightly
-# incompatible with the JPEG standard. See make.txt for more details.
+# incompatible with the JPEG standard. See Make.htm for more details.
# DON'T SET THIS TO 1! See the comment just above.
SHARE_JPEG=0
@@ -138,7 +138,7 @@ PVERSION=96
# Choose whether to use a shared version of the PNG library, and if so,
# what its name is.
-# See gs.mak and make.txt for more information.
+# See gs.mak and Make.htm for more information.
SHARE_LIBPNG=0
LIBPNG_NAME=png
@@ -150,7 +150,7 @@ ZSRCDIR=zlib
# Choose whether to use a shared version of the zlib library, and if so,
# what its name is (usually libz, but sometimes libgz).
-# See gs.mak and make.txt for more information.
+# See gs.mak and Make.htm for more information.
SHARE_ZLIB=0
#ZLIB_NAME=gz
diff --git a/gs/src/unixinst.mak b/gs/src/unixinst.mak
index bf508e8e0..cc238cd9b 100644
--- a/gs/src/unixinst.mak
+++ b/gs/src/unixinst.mak
@@ -85,12 +85,14 @@ gs_pdfwr.ps ;\
done'
-mkdir $(docdir)
sh -c 'for f in \
-COPYING NEWS PUBLIC README \
-bug-form.txt c-style.txt current.txt devices.txt drivers.txt fonts.txt \
-helpers.txt hershey.txt history1.txt history2.txt history3.txt humor.txt \
-install.txt language.txt lib.txt make.txt new-user.txt \
-ps2epsi.txt ps2pdf.txt psfiles.txt public.txt \
-unix-lpr.txt use.txt xfonts.txt ;\
+PUBLIC README \
+ps2epsi.txt \
+Bug-form.htm C-style.htm Commprod.htm Copying.htm Current.htm \
+DLL.htm Devices.htm Drivers.htm Fonts.htm \
+Helpers.htm Hershey.htm History1.htm History2.htm History3.htm History4.htm \
+Htmstyle.htm Humor.htm Install.htm Language.htm Lib.htm Make.htm New-user.htm \
+News.htm Ps2pdf.htm Psfiles.htm Public.htm \
+Readme.htm Source.htm Unix-lpr.htm Use.htm Xfonts.htm ;\
do if ( test -f $$f ); then $(INSTALL_DATA) $$f $(docdir)/$$f; fi;\
done'
-mkdir $(exdir)
diff --git a/gs/src/version.mak b/gs/src/version.mak
index ef2a6c974..7b3436256 100644
--- a/gs/src/version.mak
+++ b/gs/src/version.mak
@@ -24,10 +24,10 @@ VERSION_MAK=$(GLSRC)version.mak
# Major and minor version numbers.
# MINOR0 is different from MINOR only if MINOR is a single digit.
GS_VERSION_MAJOR=5
-GS_VERSION_MINOR=40
-GS_VERSION_MINOR0=40
+GS_VERSION_MINOR=50
+GS_VERSION_MINOR0=50
# Revision date: year x 10000 + month x 100 + day.
-GS_REVISIONDATE=19980910
+GS_REVISIONDATE=19980916
# Derived values
GS_VERSION=$(GS_VERSION_MAJOR)$(GS_VERSION_MINOR0)
diff --git a/gs/src/watc.mak b/gs/src/watc.mak
index b29eaffd3..69da2fdce 100644
--- a/gs/src/watc.mak
+++ b/gs/src/watc.mak
@@ -17,7 +17,7 @@
# makefile for MS-DOS/Watcom C386 platform.
-# We strongly recommend that you read the Watcom section of make.txt
+# We strongly recommend that you read the Watcom section of Make.htm
# before attempting to build Ghostscript with the Watcom compiler.
# ------------------------------- Options ------------------------------- #
@@ -40,7 +40,7 @@ GS_LIB_DEFAULT=.;c:/gs\;c:/gs/fonts
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
diff --git a/gs/src/watcw32.mak b/gs/src/watcw32.mak
index 8e12108a3..e9764fc50 100644
--- a/gs/src/watcw32.mak
+++ b/gs/src/watcw32.mak
@@ -45,7 +45,7 @@ GS_LIB_DEFAULT=.;c:/gs\;c:/gs/fonts
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of use.txt for full details.
+# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
@@ -233,7 +233,7 @@ SHP=command /c
# Define the arguments for genconf.
-CONFILES=-p %%s, -l lib.tr
+CONFILES=-p %%s, -l $(GLGENDIR)\lib.tr
CONFLDTR=-o
# Define the generic compilation flags.
@@ -319,8 +319,8 @@ COMPILE_FOR_CONSOLE_EXE=
GENOPT=$(CP) $(CD) $(CT) $(CS) -zq
CCFLAGS=$(PLATOPT) $(FPFLAGS) $(CPFLAGS) $(CFLAGS) $(XCFLAGS)
-CC=$(COMP) -c $(CCFLAGS) @ccf32.tr
-CPP=$(COMPCPP) -c $(CCFLAGS) @ccf32.tr
+CC=$(COMP) -c $(CCFLAGS) @$(GLGENDIR)\ccf32.tr
+CPP=$(COMPCPP) -c $(CCFLAGS) @$(GLGENDIR)\ccf32.tr
!ifneq MAKEDLL 0
WX=$(COMPILE_FOR_DLL)
!else
@@ -352,12 +352,8 @@ BEGINFILES2=gsdll32.rex gswin32.rex gswin32c.rex
# -------------------------- Auxiliary programs --------------------------- #
-ccf32.tr: $(MAKEFILE) makefile
- echo $(GENOPT) -I$(INCDIR) -DCHECK_INTERRUPTS -D_Windows -D__WIN32__ -D_WATCOM_ > ccf32.tr
-
-$(GENARCH_XE): $(GLSRC)genarch.c $(stdpre_h) $(iref_h) ccf32.tr
- $(CCAUX_SETUP)
- $(CCAUX) @ccf32.tr $(GLSRC)genarch.c $(CCAUX_TAIL)
+$(GLGENDIR)\ccf32.tr: $(MAKEFILE) makefile
+ echo $(GENOPT) -I$(INCDIR) -DCHECK_INTERRUPTS -D_Windows -D__WIN32__ -D_WATCOM_ > $(GLGENDIR)\ccf32.tr
# -------------------------------- Library -------------------------------- #
diff --git a/gs/src/wccommon.mak b/gs/src/wccommon.mak
index fcfaa7b4f..47e747f41 100644
--- a/gs/src/wccommon.mak
+++ b/gs/src/wccommon.mak
@@ -18,7 +18,7 @@
# wccommon.mak
# Section of Watcom C/C++ makefile common to MS-DOS and MS Windows.
-# We strongly recommend that you read the Watcom section of make.txt
+# We strongly recommend that you read the Watcom section of Make.htm
# before attempting to build Ghostscript with the Watcom compiler.
# This file is used by watc.mak, watcwin.mak, and watclib.mak.
diff --git a/gs/src/winint.mak b/gs/src/winint.mak
index fc8164f08..1a27e4647 100644
--- a/gs/src/winint.mak
+++ b/gs/src/winint.mak
@@ -41,7 +41,7 @@ PSCCWIN=$(CC_WX) $(CCWINFLAGS) $(I_)$(PSI_)$(_I) $(PSF_)
ICONS=gsgraph.ico gstext.ico
GS_ALL=$(INT_ALL) $(INTASM)\
- $(LIB_ALL) $(LIBCTR) lib.tr $(ld_tr) $(GSDLL_OBJ).res $(GSDLL).def $(ICONS)
+ $(LIB_ALL) $(LIBCTR) $(GLGEN)lib.tr $(ld_tr) $(GSDLL_OBJ).res $(GLSRC)$(GSDLL).def $(ICONS)
dwdll_h=$(GLSRC)dwdll.h
dwimg_h=$(GLSRC)dwimg.h
diff --git a/gs/src/winlib.mak b/gs/src/winlib.mak
index 573ed4fde..11a97695f 100644
--- a/gs/src/winlib.mak
+++ b/gs/src/winlib.mak
@@ -39,7 +39,7 @@ PLATFORM=mswin32_
# Watcom C all accept ANSI syntax, but we need to preconstruct ccf32.tr
# to get around the limit on the maximum length of a command line.
-AK=ccf32.tr
+AK=$(GLGENDIR)\ccf32.tr
# Define the syntax for command, object, and executable files.
@@ -48,7 +48,7 @@ C_=-c
I_=-I
II=-I
_I=
-# O_ is defined separately for each compiler.
+# O_ and XE_ are defined separately for each compiler.
OBJ=obj
XE=.exe
XEAUX=.exe
@@ -57,9 +57,9 @@ XEAUX=.exe
# We have to use a batch file for the equivalent of cp,
# because the DOS COPY command copies the file write time, like cp -p.
-CP_=call cp.bat
+CP_=call $(GLSRCDIR)\cp.bat
RM_=erase
-RMN_=call rm.bat
+RMN_=call $(GLSRCDIR)\rm.bat
# Define the generic compilation flags.
@@ -73,7 +73,7 @@ PCFBASM=
# so this must precede the !include statements.
# ****** WRONG ****** NEED GLOBJ PREFIX ******
-BEGINFILES=gs*.res gs*.ico ccf32.tr\
+BEGINFILES=gs*.res gs*.ico $(GLGENDIR)\ccf32.tr\
$(GSDLL).dll $(GSCONSOLE).exe\
$(BEGINFILES2)
@@ -101,25 +101,7 @@ GS_OBJ=$(GLOBJ)$(GS)
GSDLL_SRC=$(GLSRC)$(GSDLL)
GSDLL_OBJ=$(GLOBJ)$(GSDLL)
-# -------------------------- Auxiliary programs --------------------------- #
-
-$(ECHOGS_XE): $(GLSRC)echogs.c
- $(CCAUX_SETUP)
- $(CCAUX) $(GLSRC)echogs.c $(CCAUX_TAIL)
-
-# $(GENARCH_XE) is in individual (compiler-specific) makefiles.
-
-$(GENCONF_XE): $(GLSRC)genconf.c $(stdpre_h)
- $(CCAUX_SETUP)
- $(CCAUX) $(GLSRC)genconf.c $(CCAUX_TAIL)
-
-$(GENDEV_XE): $(GLSRC)gendev.c $(stdpre_h)
- $(CCAUX_SETUP)
- $(CCAUX) $(GLSRC)gendev.c $(CCAUX_TAIL)
-
-$(GENINIT_XE): $(PSSRC)geninit.c $(stdio__h) $(string__h)
- $(CCAUX_SETUP)
- $(CCAUX) $(PSSRC)geninit.c $(CCAUX_TAIL)
+# -------------------------- Auxiliary files --------------------------- #
# No special gconfig_.h is needed.
# Assume `make' supports output redirection.
diff --git a/gs/src/zcrd.c b/gs/src/zcrd.c
index 8778c8f63..85206af0f 100644
--- a/gs/src/zcrd.c
+++ b/gs/src/zcrd.c
@@ -34,7 +34,7 @@
#include "ivmspace.h"
#include "store.h" /* for make_null */
-#define TEST
+/*#define TEST*/
/* Forward references */
private int zcrd1_proc_params(P2(os_ptr op, ref_cie_render_procs * pcprocs));
diff --git a/gs/src/zfdcte.c b/gs/src/zfdcte.c
index 401b22878..a6db4be79 100644
--- a/gs/src/zfdcte.c
+++ b/gs/src/zfdcte.c
@@ -33,7 +33,7 @@
#include "ifilter.h"
#include "iparam.h"
-#define TEST
+/*#define TEST*/
/* Import the parameter processing procedure from sdeparam.c */
stream_state_proc_put_params(s_DCTE_put_params, stream_DCT_state);
diff --git a/gs/src/zfile.c b/gs/src/zfile.c
index 4e261bf59..d75f2cbec 100644
--- a/gs/src/zfile.c
+++ b/gs/src/zfile.c
@@ -21,6 +21,7 @@
#include "memory_.h"
#include "string_.h"
#include "ghost.h"
+#include "gscdefs.h" /* for gx_io_device_table */
#include "gp.h"
#include "gsstruct.h" /* for registering root */
#include "gxalloc.h" /* for streams */
@@ -44,6 +45,9 @@
/* Import the file_open routine for %os%, which is the default. */
extern iodev_proc_open_file(iodev_os_open_file);
+/* Import the IODevice table. */
+extern_gx_io_device_table();
+
/* Forward references: file opening. */
int file_open(P6(const byte *, uint, const char *, uint, ref *, stream **));
@@ -572,12 +576,16 @@ FILE *
lib_fopen(const char *bname)
{
FILE *file = NULL;
-
/* We need a buffer to hold the expanded file name. */
char buffer[gp_file_name_sizeof];
- int code = lib_file_fopen(iodev_default, bname, "r", &file,
- buffer, gp_file_name_sizeof);
+ /* We can't count on the IODevice table to have been initialized yet. */
+ /* Allocate a copy of the default IODevice. */
+ gx_io_device iodev_default_copy;
+ int code;
+ iodev_default_copy = *gx_io_device_table[0];
+ code = lib_file_fopen(&iodev_default_copy, bname, "r", &file,
+ buffer, gp_file_name_sizeof);
return (code < 0 ? NULL : file);
}
diff --git a/gs/src/zlib.mak b/gs/src/zlib.mak
index b8c4130b8..cf33701b9 100644
--- a/gs/src/zlib.mak
+++ b/gs/src/zlib.mak
@@ -30,7 +30,7 @@
# http://www.cdrom.com/infozip/zlib/
# ftp://ftp.cdrom.com/pub/infozip/zlib/
# zlib-#.#.#.tar.gz or zlib###.zip
-# Please see Ghostscript's `make.txt' file for instructions about how to
+# Please see Ghostscript's `Make.htm' file for instructions about how to
# unpack these archives.
#
# When each version of Ghostscript is released, we copy the associated
diff --git a/gs/src/ztrap.c b/gs/src/ztrap.c
index b3d406c70..b2efb9932 100644
--- a/gs/src/ztrap.c
+++ b/gs/src/ztrap.c
@@ -35,7 +35,7 @@ zsettrapparams(os_ptr op)
dict_param_list list;
int code;
- cheak_type(*op, t_dictionary);
+ check_type(*op, t_dictionary);
code = dict_param_list_read(&list, op, NULL, false);
if (code < 0)
return code;