diff options
author | Henry Stiles <henry.stiles@artifex.com> | 1998-09-18 00:33:16 +0000 |
---|---|---|
committer | Henry Stiles <henry.stiles@artifex.com> | 1998-09-18 00:33:16 +0000 |
commit | 95a1c583303696ed0a66550d729bf492e4fa2dcf (patch) | |
tree | c574078a2ba5296629ff9780e731c599d948e4c8 | |
parent | 839e88487835ebac524cec5cac986ec66a8f6a1e (diff) | |
download | ghostpdl-95a1c583303696ed0a66550d729bf492e4fa2dcf.tar.gz |
gs550 release
git-svn-id: http://svn.ghostscript.com/ghostpcl/trunk/ghostpcl@433 06663e23-700e-0410-b217-a244a6096597
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> +</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 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> <td><b><tt>files</tt></b> <td> - <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> <td><b><tt>fonts</tt></b> <td> @@ -1473,6 +1496,46 @@ PLATFORM=sysv_</tt></b><br> <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 <<a href="mailto:babcock@math.psu.edu">babcock@math.psu.edu</a>> 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 <<a href="mailto:ghost@aladdin.com">ghost@aladdin.com</a>>, +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 <<a href="mailto:kaiser@acm.org">kaiser@acm.org</a>>, 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 -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; |