Detailed History of Ghostscript versions 8.xx

Table of contents

This document is a record of changes in Ghostscript releases numbered 8.xx. For earlier versions, see the the history documents:

History of Ghostscript versions 7.n
History of Ghostscript versions 6.n
History of Ghostscript versions 5.n
History of Ghostscript versions 4.n
History of Ghostscript versions 3.n
History of Ghostscript versions 2.n
History of Ghostscript versions 1.n

For other information, see the Ghostscript overview.


Version 8.54 (2006-05-17)

This is the fifth stable release in the 8.5x series of Ghostscript. It contains a numerous bug fixes and improvements.

The following bugs were open at the time of this release:

226943, 405501, 430175, 465936, 493348, 530011, 535932, 578865, 592160, 610478, 614298, 626295, 686747, 686853, 686865, 687011, 687039, 687063, 687084, 687095, 687108, 687125, 687146, 687193, 687196, 687219, 687229, 687231, 687257, 687271, 687280, 687295, 687297, 687303, 687304, 687314, 687316, 687327, 687342, 687345, 687346, 687375, 687397, 687399, 687414, 687445, 687460, 687475, 687480, 687484, 687492, 687498, 687514, 687520, 687529, 687531, 687536, 687559, 687561, 687593, 687595, 687608, 687630, 687650, 687666, 687674, 687677, 687679, 687680, 687695, 687697, 687702, 687715, 687721, 687728, 687729, 687731, 687775, 687780, 687782, 687793, 687796, 687805, 687814, 687825, 687844, 687850, 687863, 687887, 687896, 687903, 687904, 687907, 687915, 687919, 687931, 687950, 687957, 687960, 687970, 687974, 687977, 687978, 687981, 687983, 687988, 687992, 687996, 688006, 688007, 688009, 688020, 688022, 688024, 688026, 688032, 688035, 688036, 688039, 688042, 688047, 688054, 688058, 688061, 688064, 688066, 688071, 688072, 688073, 688075, 688081, 688095, 688108, 688124, 688129, 688130, 688134, 688151, 688152, 688159, 688166, 688181, 688184, 688187, 688200, 688203, 688204, 688207, 688210, 688215, 688225, 688227, 688239, 688243, 688249, 688258, 688260, 688267, 688269, 688274, 688278, 688280, 688282, 688283, 688288, 688291, 688295, 688311, 688312, 688317, 688318, 688320, 688323, 688329, 688332, 688333, 688337, 688338, 688339, 688342, 688358, 688359, 688360, 688361, 688363, 688372, 688375, 688378, 688383, 688386, 688387, 688389, 688394, 688395, 688396, 688400, 688413, 688425, 688427, 688428, 688429, 688434, 688436, 688437, 688440, 688446, 688448, 688463, 688468, 688473, 688474, 688475, 688477, 688479, 688483, 688490, 688493, 688495, 688500, 688515, 688517, 688518, 688526, 688528, 688532, 688533, 688536, 688539, 688540, 688542, 688543, 688557, 688565, 688570, 688573, 688580, 688581, 688588, 688596, 688598, 688599, 688601, 688604, 688605, 688610, 688613, 688616, 688617, 688619, 688621, 688623, 688626, 688627, 688631, 688633, 688634, 688635, 688636, 688637, 688638, 688639, 688640, 688641, 688643, 688646, 688647, 688650, 688651, 688652, 688653, 688655, 688669, 688671, 688672, 688673, 688674, 688675, 688676, 688678, 688683, 688687, 688688, 688689, 688691, 688692.

Incompatible changes

There are no known incompatible changes at this point.

Changelog

2006-05-17T18:27:07.676488Z Ralph Giles

Merge change from trunk.

Remove ARCH_STRUCT_ALIGN_MOD entirely and revert to 
ARCH_ALIGN_MEMORY_MOD not having the extra jmp_buf
alignment requirements. This satisfies the assumption
that structure alignment and sizeof(ref) agree in
the Ghostscript code and should finally fix 687643.

Also add a cast back to jmp_buf in the alignment
macro setjmp_.h. Fixes bug 688698. Patch from
Alex Cherepanov.

[/branches/ghostscript-8.54/src/std.h /branches/ghostscript-8.54/src/setjmp_.h /branches/ghostscript-8.54/src/genarch.c]

2006-05-17T15:32:18.088676Z Ralph Giles

Port the fix for bug #688149 from trunk. Originally committed by Ray 
Johnson.

Fix so that dictionaries that grow preserve attributes.                         
Several problems reported including a potential security                        
hole when in SAFER mode. Thanks to mat Gh Savulescu                             
(SaGS) for the bug report, the patch and excellent                              
analysis of the problem.                                                        
                                                                                
DETAILS:                                                                                                                                                        
Ordinarily dictionaries have unprotected, non-exectue                           
status, but it is possible to "grow" executable or even                         
"read-only" dictionaries (contact Ray Johnston for an                           
explanation as provided by mat Gh Savulescu). The bug                           
in idict.c would not preserve the attributes, making                            
the dictionary not executable, and not readonly even                            
if those were the original attributes.                                          
                                                                                
EXPECTED DIFFERENCES:                                                                                                                                           
None. (we don't run regression in SAFER mode and don't                          
rely on 'special' dict attributes).

[/branches/ghostscript-8.54/src/idict.c]

2006-05-15T23:32:49.061208Z Ralph Giles

Additional release date updates.

[/branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/History8.htm]

2006-05-15T23:03:16.814804Z Ralph Giles

Update release date for 8.54rc2.

[/branches/ghostscript-8.54/doc/Issues.htm /branches/ghostscript-8.54/doc/DLL.htm /branches/ghostscript-8.54/doc/Drivers.htm /branches/ghostscript-8.54/man/pfbtopfa.1 /branches/ghostscript-8.54/doc/Commprod.htm /branches/ghostscript-8.54/doc/Release.htm /branches/ghostscript-8.54/doc/Xfonts.htm /branches/ghostscript-8.54/doc/Devices.htm /branches/ghostscript-8.54/doc/Language.htm /branches/ghostscript-8.54/src/version.mak /branches/ghostscript-8.54/man/gs.1 /branches/ghostscript-8.54/doc/Fonts.htm /branches/ghostscript-8.54/doc/Ps2ps2.htm /branches/ghostscript-8.54/man/pf2afm.1 /branches/ghostscript-8.54/doc/Develop.htm /branches/ghostscript-8.54/doc/Ps2pdf.htm /branches/ghostscript-8.54/man/printafm.1 /branches/ghostscript-8.54/doc/Helpers.htm /branches/ghostscript-8.54/man/pdf2dsc.1 /branches/ghostscript-8.54/doc/Psfiles.htm /branches/ghostscript-8.54/doc/Lib.htm /branches/ghostscript-8.54/doc/gs-vms.hlp /branches/ghostscript-8.54/man/gsnd.1 /branches/ghostscript-8.54/man/font2c.1 /branches/ghostscript-8.54/doc/Htmstyle.htm /branches/ghostscript-8.54/man/pdfopt.1 /branches/ghostscript-8.54/man/ps2pdf.1 /branches/ghostscript-8.54/man/pdf2ps.1 /branches/ghostscript-8.54/doc/News.htm /branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/Make.htm /branches/ghostscript-8.54/doc/Testing.htm /branches/ghostscript-8.54/doc/Unix-lpr.htm /branches/ghostscript-8.54/doc/C-style.htm /branches/ghostscript-8.54/doc/Ps-style.htm /branches/ghostscript-8.54/doc/History1.htm /branches/ghostscript-8.54/doc/History2.htm /branches/ghostscript-8.54/man/gslp.1 /branches/ghostscript-8.54/man/wftopfa.1 /branches/ghostscript-8.54/doc/History3.htm /branches/ghostscript-8.54/doc/Ps2epsi.htm /branches/ghostscript-8.54/doc/History4.htm /branches/ghostscript-8.54/man/ps2pdfwr.1 /branches/ghostscript-8.54/man/ps2ps.1 /branches/ghostscript-8.54/doc/History5.htm /branches/ghostscript-8.54/doc/History6.htm /branches/ghostscript-8.54/doc/History7.htm /branches/ghostscript-8.54/doc/Projects.htm /branches/ghostscript-8.54/doc/History8.htm /branches/ghostscript-8.54/man/dvipdf.1 /branches/ghostscript-8.54/man/ps2ascii.1 /branches/ghostscript-8.54/doc/Use.htm /branches/ghostscript-8.54/doc/Readme.htm /branches/ghostscript-8.54/doc/Source.htm /branches/ghostscript-8.54/doc/Deprecated.htm /branches/ghostscript-8.54/doc/Maintain.htm /branches/ghostscript-8.54/man/ps2epsi.1 /branches/ghostscript-8.54/doc/Install.htm /branches/ghostscript-8.54/doc/Copying.htm /branches/ghostscript-8.54/doc/API.htm]

2006-05-15T22:59:12.198801Z Ralph Giles

Update changelogs for 8.54rc2.

[/branches/ghostscript-8.54/doc/News.htm /branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/Details.htm /branches/ghostscript-8.54/doc/Changes.htm /branches/ghostscript-8.54/doc/History8.htm]

2006-05-15T22:51:20.894499Z giles

Add setjmp_.h, which was left out of the patch fixing bug #687643.

[/branches/ghostscript-8.54/src/setjmp_.h]

2006-05-15T21:31:28.156524Z giles

Correct a typo resulting in inproper glyph placement with transposed 
text and a top left reference corner. Fixes bug 688645. Fix merged
from trunk.

[/branches/ghostscript-8.54/jbig2dec/jbig2_text.c]

2006-05-15T21:07:48.699439Z giles

Update MSVC build to refer to the release version of MS Visual Studio 
.NET 2005.

[/branches/ghostscript-8.54/doc/Make.htm /branches/ghostscript-8.54/src/msvc32.mak]

2006-05-15T19:17:06.838612Z giles

Update the usage line for the split_changelog utility.

[/branches/ghostscript-8.54/toolbin/split_changelog.py]

2006-05-15T19:16:13.375379Z giles

Correct a problem with the display device. The initialiser            
needs to be a scaler, not the array that was being used.
GCC on OS/2 was giving a warning about this. This makes it
consistent with gdevtsep.c. Patch from Russell Lang.

[/branches/ghostscript-8.54/src/gdevdsp.c]

2006-05-15T19:08:28.721428Z giles

Update changelogs.

[/branches/ghostscript-8.54/doc/News.htm /branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/Details.htm /branches/ghostscript-8.54/doc/Changes.htm /branches/ghostscript-8.54/doc/History8.htm]

2006-05-15T19:00:31.775976Z giles

FIX: Allocate jmp_buf with padding, to satisfy alignment constraints.           
Fixes bug #687643. Change merged from trunk.

[/branches/ghostscript-8.54/src/sdct.h /branches/ghostscript-8.54/src/ttinterp.c /branches/ghostscript-8.54/src/ttobjs.h /branches/ghostscript-8.54/src/sjpegc.c /branches/ghostscript-8.54/src/lib.mak /branches/ghostscript-8.54/src/sjpegd.c /branches/ghostscript-8.54/src/sjpege.c]

2006-05-15T17:36:28.446043Z giles

Port documentation updates from trunk.

DETAILS:

Document how to compile Ghostscript with the Luratech compression 
libraries. Bug 688665.

Update Language.htm to better describe the current level of PDF support. 
Bug 688661.

[/branches/ghostscript-8.54/doc/Make.htm /branches/ghostscript-8.54/doc/Language.htm]

2006-05-15T17:35:26.789659Z giles

Add commented out line for manually enabling the luratech build with 
autoconf. Change ported from trunk.

[/branches/ghostscript-8.54/src/Makefile.in]

2006-05-15T17:34:18.223579Z giles

Always make read progress is s_jbig2encode process when there is data
available. Fixes bug #688658. Port from trunk to the 8.54 branch.

[/branches/ghostscript-8.54/src/sjbig2_luratech.c /branches/ghostscript-8.54/src/sjbig2_luratech.h]

2006-05-15T01:29:53.383801Z dan

Port fix for 688686 segfault in find_bit_map() to 8.54 branch.

DETAILS:

The addition of the compressed encoded color logic created a problem for
the psdrgb device.  This device shares most of its code with the psdcmyk
device.  The common print_page procedure uses devn_unpack_row.  This
routine was modified to work with the compressed encoded color values.
However the psdrgb device does not use the compressed encoded color logic.

The fix consists of checking for the presence or absence of a compressed
color list pointer.  The presence of this pointer indicates if the compressed
color logic is being used.  The appropriate uncompress logic is used.

[/branches/ghostscript-8.54/src/gdevdevn.c]

2006-05-11T01:28:43.068966Z giles

Update the changelog xml2html script to handle the output of 
'svn log --verbose --xml' instead of 'cvs2cl'.

[/branches/ghostscript-8.54/toolbin/split_changelog.py]

2006-05-10T22:05:04.536292Z giles

Fix up pre.tcl a bit to handle svn Id: lines.

[/branches/ghostscript-8.54/toolbin/pre.tcl]

2006-05-10T21:57:36.424976Z giles

Propagate release number and data changes to the documentation.

[/branches/ghostscript-8.54/doc/Issues.htm /branches/ghostscript-8.54/doc/DLL.htm /branches/ghostscript-8.54/doc/Drivers.htm /branches/ghostscript-8.54/man/pfbtopfa.1 /branches/ghostscript-8.54/doc/Commprod.htm /branches/ghostscript-8.54/doc/Release.htm /branches/ghostscript-8.54/doc/Xfonts.htm /branches/ghostscript-8.54/doc/Devices.htm /branches/ghostscript-8.54/doc/Language.htm /branches/ghostscript-8.54/man/gs.1 /branches/ghostscript-8.54/doc/Fonts.htm /branches/ghostscript-8.54/doc/Ps2ps2.htm /branches/ghostscript-8.54/man/pf2afm.1 /branches/ghostscript-8.54/doc/Develop.htm /branches/ghostscript-8.54/doc/Ps2pdf.htm /branches/ghostscript-8.54/man/printafm.1 /branches/ghostscript-8.54/doc/Helpers.htm /branches/ghostscript-8.54/man/pdf2dsc.1 /branches/ghostscript-8.54/doc/Psfiles.htm /branches/ghostscript-8.54/doc/Lib.htm /branches/ghostscript-8.54/doc/gs-vms.hlp /branches/ghostscript-8.54/man/gsnd.1 /branches/ghostscript-8.54/man/font2c.1 /branches/ghostscript-8.54/doc/Htmstyle.htm /branches/ghostscript-8.54/man/pdfopt.1 /branches/ghostscript-8.54/man/ps2pdf.1 /branches/ghostscript-8.54/man/pdf2ps.1 /branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/Make.htm /branches/ghostscript-8.54/doc/Testing.htm /branches/ghostscript-8.54/doc/Unix-lpr.htm /branches/ghostscript-8.54/doc/C-style.htm /branches/ghostscript-8.54/doc/Ps-style.htm /branches/ghostscript-8.54/doc/History1.htm /branches/ghostscript-8.54/doc/History2.htm /branches/ghostscript-8.54/man/gslp.1 /branches/ghostscript-8.54/man/wftopfa.1 /branches/ghostscript-8.54/doc/History3.htm /branches/ghostscript-8.54/man/ps2ps.1 /branches/ghostscript-8.54/doc/Ps2epsi.htm /branches/ghostscript-8.54/doc/History4.htm /branches/ghostscript-8.54/man/ps2pdfwr.1 /branches/ghostscript-8.54/doc/History5.htm /branches/ghostscript-8.54/doc/History6.htm /branches/ghostscript-8.54/doc/History7.htm /branches/ghostscript-8.54/doc/Projects.htm /branches/ghostscript-8.54/doc/History8.htm /branches/ghostscript-8.54/man/dvipdf.1 /branches/ghostscript-8.54/man/ps2ascii.1 /branches/ghostscript-8.54/doc/Use.htm /branches/ghostscript-8.54/doc/Readme.htm /branches/ghostscript-8.54/doc/Source.htm /branches/ghostscript-8.54/doc/Deprecated.htm /branches/ghostscript-8.54/doc/Maintain.htm /branches/ghostscript-8.54/man/ps2epsi.1 /branches/ghostscript-8.54/doc/Install.htm /branches/ghostscript-8.54/doc/Copying.htm /branches/ghostscript-8.54/doc/API.htm]

2006-05-10T21:54:27.892199Z giles

Update the libpng version number to match the included release.

[/branches/ghostscript-8.54/src/ugcclib.mak /branches/ghostscript-8.54/src/macosx.mak /branches/ghostscript-8.54/src/watcw32.mak /branches/ghostscript-8.54/src/dvx-gcc.mak /branches/ghostscript-8.54/src/msvc32.mak /branches/ghostscript-8.54/src/unix-gcc.mak /branches/ghostscript-8.54/src/unixansi.mak /branches/ghostscript-8.54/src/macos-mcp.mak /branches/ghostscript-8.54/src/msvclib.mak /branches/ghostscript-8.54/src/all-arch.mak /branches/ghostscript-8.54/src/os2.mak /branches/ghostscript-8.54/src/watclib.mak /branches/ghostscript-8.54/src/bcwin32.mak /branches/ghostscript-8.54/src/openvms.mak]

2006-05-10T21:44:14.213811Z giles

Update version numbers and dates for release.

[/branches/ghostscript-8.54/src/winint.mak /branches/ghostscript-8.54/doc/News.htm /branches/ghostscript-8.54/src/gscdef.c /branches/ghostscript-8.54/src/version.mak /branches/ghostscript-8.54/src/dwsetup.rc]

2006-05-10T21:06:42.656903Z giles

Branch for the AFPL Ghostscript 8.54 release.

[/branches/ghostscript-8.54]

2006-05-10T21:05:11.037293Z Ralph Giles

We must reset the state structure pointers passed as userdata for the 
luratech library read and write callback from within the s_jpxe_process
method because the garbage collector may have move the struct since the
call to s_jpxe_init. Fixes bug 688657.

Thanks to Ray Johnston for his analysis of the issue.

[src/sjpx_luratech.c]

2006-05-10T11:23:25.592534Z Alex Cherepanov

Upgrade Japanese Unicode CMap resources from
ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/aj16.tar.Z
Bug 688685.

DIFFERENCES:
None

[Resource/CMap/UniJISX0213-UTF32-H Resource/CMap/UniJIS-UTF32-H Resource/CMap/UniJIS-UTF16-H Resource/CMap/UniJIS-UTF8-H]

2006-05-08T17:43:01.487840Z Ray Johnston

Add checking for required Function in some shadings to prevent later
SEGV. Detected with CET 12-14b.ps

EXPECTED DIFFERENCES:

None. This CET tests known ILLEGAL cases. The CET is not part of the
nightly regression suite.

[src/zshade.c]

2006-05-08T05:39:29.301618Z Ray Johnston

Move internal type 'gs_pattern1_instance_t' and 'gs_pattern2_instance_t' into
an array for compatibility with CPSI and a poorly designed CET (09-03.ps).

DETAILS:

The CET doesn't bother to examine the array contents, so this ruse works.
Since patterns aren't that common, we go ahead and use a 2 element array
even though we only use the first element.

EXPECTED DIFFERENCES:

None.

[lib/gs_patrn.ps lib/gs_lev2.ps src/zcolor.c]

2006-05-04T19:57:23.542378Z Ray Johnston

Fix a missing image problem seen in 468-03 (part of 468-01.ps). Even though
this test appears to violate the rules in the PLRM for Mask and Data Image
sizes for ImageType3, Adobe CPSI and other RIPS ignore the problem.

EXPECTED DIFFERENCES:

468-01.ps

[src/gximage3.c]

2006-05-03T15:24:53.610732Z Ralph Giles

Add a note about additional license change cleanup to be done when 
making GPL releases. Bug 688677.

[doc/Release.htm]

2006-04-28T07:43:58.270935Z leonardo

pdfwrite : Luratech filters must not apply to inline images, part 2.

DETAILS :

Bug 688679 "/syntaxerror in ID with luratech coded pdf".

The last patch appears incomplete. THis one fixes that.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdi.c]

2006-04-27T17:39:56.495819Z leonardo

Fix (UFST bridge) : Update makefile for UFST 4.6 .

DETAILS :

An .h file has been renamed.

EXPECTED DIFFERENCES :

None.

[src/lib.mak src/int.mak]

2006-04-27T17:36:41.601504Z leonardo

pdfwrite : Luratech filters must not apply to inline images and for Indexed images.

DETAILS :

Bug 688659 "A wrong encoding with Luratech encoder".

1. JPXEncode, JBIG2Encode can't apply to inline images because
PDF specification doesn't define short names for them.

2. JPXEncode can't apply to Indexed images.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfb.c src/gdevpdfv.c src/gdevpsdi.c src/gdevpsdf.h src/gdevpdfi.c]

2006-04-26T22:26:54.710871Z Ralph Giles

As of libpng 1.2.10 we have to define PNG_NO_ASSEMBLY_CODE or include
one of the two asm files on MacOS X. We don't want to fiddle with
the source list based on compiler at this point (MSVC vs GCC) so
just do without the assembly as before.

[src/libpng.mak]

2006-04-26T19:16:55.695237Z Ray Johnston

Fix SEGV when 'reversepath' invoked with a currentpoint but no segments.
Detected with the CET Global Interference test.

EXPECTED DIFFERENCES:

The CET tests might run now ;-)
Otherwise no differences.

[src/gspath1.c]

2006-04-26T01:17:13.575661Z Ray Johnston

Fix for 470-01 at some resolutions (90 dpi failed, 125 dpi worked). Zero
width or height clip box confused shading logic.

EXPECTED DIFFERENCES:

None. 470-01.ps was not in the comparefiles (yet). I will be adding it.

[src/gsshade.c]

2006-04-25T17:31:26.091156Z leonardo

pdfwrite : Implementing ColorImageAutoFilterStrategy, GrayImageAutoFilterStrategy.

DETAILS :

This patch implements ColorImageAutoFilterStrategy, GrayImageAutoFilterStrategy 
destiller parameters, and applies them for choosing image encoding filters
when Ghostscript is built with Luratech filters.

1. Since the old architecture defines common image parameter lists for
pswrite and pdfwrite, now we need to pass CompatibilityLevel to
those common modules. Doing that in a hackish way with defining
a new field gx_device_psdf::ParamCompatibilityLevel,
and setting it whenever that stuff is called from pdfwrite.

2. Using it for the filter choice in psdf_setup_image_filters.

3. Enhance psdf_get_image_params and psdf_put_image_params with
ColorImageAutoFilterStrategy, GrayImageAutoFilterStrategy (gdevpsdp.c).

4. Passing the lossless option for JPXEncode filter in setup_image_compression,
and using that filter for lossless compression instead FlateEncode/LZWEncode
when it is available, depending on ColorImageAutoFilterStrategy, GrayImageAutoFilterStrategy.

5. With CompatibilityLevel>=1.5, with 1bpp images we choose JBIG2Encode instead 
FlateEncode/LZWEncode when it is available.

Thus, when Luratech filters are available, with CompatibilityLevel>=1.5,
Luratech filters work by default.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdp.c src/gdevpdfp.c src/gdevpdfb.c src/gdevpdfv.c src/gdevpsdi.c src/gdevpsdf.h src/gdevpdfi.c]

2006-04-25T16:40:09.951186Z Ralph Giles

Copy the new 1.2.10 libpng release into our tree.

[libpng]

2006-04-25T16:39:48.646150Z Ralph Giles

Remove the included libpng 1.2.8.

[libpng]

2006-04-25T03:10:32.157126Z Ralph Giles

Add hooks for setting the lossly compression quality target or lossless 
compression to the jpxe stream state. Both new parameters are optional,
but the set_defaults method must now be called for consistent behavior.

The quality option allows setting a quality value (1-100 inclusive) 
different from the default, currently 60. Setting the lossless flag
specifies lossless encoding and overrides any quality setting.

[src/sjpx_luratech.h src/gdevjpx.c src/sjpx_luratech.c]

2006-04-22T01:59:07.027378Z Ray Johnston

Change ASCII85Decode EOD handling to make sure that the EOD characters are
consumed before we provide the last bit of data to the caller. The ~> sequence
(actually could be   ~   > ) left in the currentfile would
cause an /undefined error. Bug 688618.

DETAILS:

When the input is piped from %stdin the smaller buffers tripped over this
frequently with the test file simply because there were more buffer bounds
conditions.

Note that this area is _still_ not quite the way Adobe works, but without
major surgery and analysis of Adobe filter behaviour we aren't likely to
achieve 100% compatiblity.

Since we handle the case where the EOD sequence is in the part of the buffer
that we defer processing on (if last is false) we should be quite similar
as far as when we process the EOD since if a complete EOD wasn't in the
buffer previously, the '~' was left there. Now we avoid returning the last
word of data if the complete EOD isn't in the tail of the buffer.

If the EOD sequence seen in the tail is preceded by the 'real' EOD before
the tail in the current buffer, the "false positive" does no harm. Similarly
if there is a malformed EOD '~' not followed by '>' (possibly with intervening
) the error condition will still be detected when the '~' is actually
parsed in the deocder.

EXPECTED DIFFRENCES:

None. The regression suite still runs fine for me, including FTS files that
use the ASCII85Decode filter such as 119-01.ps.

[src/sa85d.c]

2006-04-22T01:15:50.051226Z Ray Johnston

Yet another apparently broken PDF file that Acrobat Reader handles silently.
In this case a 'Tj' operator when the font is an embedded double byte font
(CIDFont) has an odd number of bytes in the string. Change to return a
.notdef' glpyh for the tail of the string. Bug 688670 fro customer 562.

EXPECTED DIFFERENCES:

None since we did not have any files with this problem.

[src/gsfcmap1.c]

2006-04-21T01:11:36.736823Z Dan Coby

Fix for 688648 Too many MAP file names.

DETAILS:

The Borland C++ 5.5 Builder no longer worked.  The problem was caused
by an earlier change:

r5596 | igor | 2004-12-20 14:17:39 -0800 (Mon, 20 Dec 2004) | 18 lines
Fix : Completely remove the platform dependent target lib.tr from makefiles

There was a note in that change message that it had not been tested with
the Borland compiler.  The bug was also subtle in that the only reason
that the linker command worked previously was because the lib.tr file
was empty.

[src/bcwin32.mak]

2006-04-20T18:14:11.385429Z leonardo

Fix (pdfwrite) : Work around degenerate CTM while stroking a path.

DETAILS :

Bug 688606 "ps2pdf fails with Error: /undefinedresult in --stroke--".

The pdfwrite device uses an inverse CTM to satisfy
Adobe Reader constraing for user coordinates. 
The test document demonstrates another case when a 3d party software 
strokes a path with a degenerate CTM. The old code already implements
a workaround for a si,ilar case. However the old
condition in there appears too strong, and now
we make it weaker to pass a new class of degenerate CTMs.

NMot sure whether we should pass any degenerate CTM.
Will see if new ones appear.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c]

2006-04-18T17:32:25.849734Z Ray Johnston

Implement the status operation for the %rom% device. Restructure the
makefiles to correct some dependency problems. The creation time of
files in the %rom% device are now set to the build time. The need
for this was established during bug 687094.

DETAILS:

Not tested on VMS or OS/2. Header file dependencies were missing. Now
the mkromfs ZLIB objs are a shared macro list as are the header list.

EXPECTED DIFFERENCES:

None since this only is used if COMPILE_INITS=1.

[src/lib.mak src/openvms.mak src/mkromfs.c src/gsiorom.c src/unix-aux.mak src/macos-mcp.mak src/msvctail.mak src/os2.mak]

2006-04-16T19:08:54.198111Z leonardo

Fix (MSVC build) : Always use nodebug CRTL when building a nodebug Ghostscript.

DETAILS :

The old makefile gave a wrong profiling result due to
linking with debug CRTL when TDEBUG=0 DEBUGSYM=1.

EXPECTED DIFFERENCES :

None.

[src/msvc32.mak]

2006-04-16T19:01:41.671156Z leonardo

Fix (memory manager) : Reduce the CPU time consumption for 'restore', step 2.

DETAILS :

This fixes the bug
Bug 688602 "Displaying file with GS-8.53 is much slower than with GS-8.51"
with switching on the new code.
See the revision 6706 log message.

EXPECTED DIFFERENCES :

None.

[src/gxalloc.h]

2006-04-14T19:49:13.902581Z leonardo

Fix (memory manager) : Reduce the CPU time consumption for 'restore'.

DETAILS :

This is a preparation for fixing 
Bug 688602 "Displaying file with GS-8.53 is much slower than with GS-8.51".
Currently the new code is disabled with the macro NO_INVISIBLE_LEVELS
defined in gxalloc.h . 

The performance flaw happened in revision 5980.
Before it the memery manager created "invisible" save levels
when the changes list becomes too long and needs a big time for 
restoring l_new marks. The idea was to skip marls for 
older changes so that they don't consume processor time.
The cost was an extra growth of the changes list,
because such changes are stored at second time
if happen again after the "invisible" 'save'.
While fixing the bug 68815 this optimization was lost
because it was not documented.

In same time, "invisible" 'save' levels appear logically incorrect,
because they cause the problem documented in the bug 68815.
This change implements same idea (the skipping of old changes
while 'restore'), but it does that with no extra 'save' levels.

The new implementation maintains a pointer 
gs_ref_memory_t::scan_limit, which points 
to a middle element of the changes list.
Elements after that pointers do not restore
l_new mark during 'restore'. Besides that,
this change introduces a new kind of change list elements,
which is marked with AC_OFFSET_ALLOCATED in the 'offset' field.
Such elements do not represent a memory content change, 
but they represent an allocation event for 'ref' arrays.
The l_new mark is restored for those refs,
which were allocated after the change element
pointed by gs_ref_memory_t::scan_limit.

To simplify debugging, we define a new switch
NO_INVISIBLE_LEVELS in gxalloc.h .
When NO_INVISIBLE_LEVELS is zero, 
an algorithmically equivalent change happens in isave.c
and igcref.c, and other modules are not affected.
In this case :

1. Factored out a new function mark_allocated (isave.c).
2. Added a new argument to save_set_new, save_set_new_changes
   to know that it is called for an invisible level (isave.c).
3. Factored out a new function igc_reloc_ref_ptr_nocheck (igcref.c).

When NO_INVISIBLE_LEVELS is 1 :

1. Invisible save levels are not created 
   (the change to alloc_save_state in isave.c).
2. Instead that, it creates a new kind of alloc_change_t element, 
   which is marked with AC_OFFSET_ALLOCATED in the 'offset' field.
   Such element points to the beginning of a newly allocated 'ref' array
   (either packed or not) (see alloc_save_change_alloc in isave.c).
3. The new function alloc_save_remove removes such elements when
   the object is being removed explicitely.
4. save_set_new is expanded to process the new kind of alloc_change_t elements.
   With such elements it calls mark_allocated (see above),
   so that the effect is same as before the patch.
5. The scanning of allocated objects in save_set_new is removed
   due to (3).
6. save_set_new_changes is extended with computing the size of 
   newly allocated 'ref' arrays, which are processed during the scan.
   It appears to be close to what save_set_new did while scanning
   allocated objects (the variable 'changed').
7. The new field gs_ref_memory_t::scan_limit stores a termination
   condition for scanning objects in save_set_new_changes.
   The value is stored when save_set_new_changes is called 
   from alloc_save_state as it was for creatng an invisible save level.
   Rather the new code doesn't create an invisible level, 
   the scan termination condition work as it were created.
8. save_set_new_changes uses the variable 'changed'
   for a proper setting of the termination condition.
   The condition is not exactly equivalent to the
   old one, because the old code also accounts 
   a scanning of non-ref objects, but the new code
   doesn't bother with them. Therefore new termination conditions
   appear in some different points than invisible levels did.
   Therefore the behavior isn't algorithmically equivalent.
9. The new code always restore to a 'visible' level.
   In same time, doing a 'restore', some of l_new marks
   may be left unrestored due to the scan tremination condition.
   This effect may be considered as caching a reasonable
   number of recently changed objects by marking with l_new.
   Older changes loose the l_new mark and their further changes
   will be stored again in the 'changes' list. 
   This causes an extra growth of the 'changes' list,
   but saves the processor time from redundant setting
   of multiple l_new marks when save-restore is executed
   multiple times after a big number of changes.
10. The garbager implements a special processing for 
   AC_OFFSET_ALLOCATED elements. The 'where' pointer is not
   enumerated and isn't tracked while the marking phase.
   Instead that the garbager calls a special function 
   alloc_save__filter_changes to remove those elements, 
   which point to unused ref blocks. Also a special function
   igc_reloc_ref_ptr_nocheck is used to relocate
   'where' pointers. See comments in code.
11. In AC_OFFSET_ALLOCATED elements 60% of their size
   appears unused. We would like to define a smaller
   structure for them, but we don't want 
   enlarge the CPU time expense for checking types
   in loops.

Thus NO_INVISIBLE_LEVELS 1 reconstructs the optimization, 
which was lost while fixing the bug 688153 with the revision 5980.
Rather the behavior isn't strongly equivalent,
the overall logic is mostly same.

Now we commit this patch with new code disabled.
We'll enable it separately after the regression testing
of the algorithmically equivalent part.

EXPECTED DIFFERENCES :

None.

[src/isave.h src/gxalloc.h src/idosave.h src/igcref.c src/int.mak src/igc.c src/ialloc.c src/gsalloc.c src/isave.c]

2006-04-14T17:55:42.321007Z Ray Johnston

Indirect W, W2, Dw or DW2 values were not resolved at the correct point
which caused a check for 0 length W and W2 arrays to not work. Bug 688649.

[lib/pdf_font.ps]

2006-04-14T01:03:31.516512Z Dan Coby

Remove a piece of extra code that came in as part of the 'Named color' logic.

[src/gscdevn.c]

2006-04-13T04:24:47.344362Z Ray Johnston

Fix typo. IdoimSet was in RESOURCE_LIST instead of IdiomSet.
Thanks to "Edward" for spotting this. Bug 688644.

[src/bcwin32.mak src/openvms.mak src/ugcclib.mak src/macosx.mak src/watcw32.mak src/Makefile.in src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/msvclib.mak src/os2.mak src/watclib.mak]

2006-04-11T05:56:23.659314Z Dan Coby

Fix for 688068 Problem with overprint in 1bit cmyk device.

DETAILS:

This problem was caused by an earlier change which was made for support
of ROPs in the GhostPCL product.  Logically there are some conflict
between the requirements for ROPs versus overprint.  See the discussion
in 688638 for the details.

Logically this change backs out the earlier change to big_map_color_rgb.
In actuality, a new routine call bit_decode_color was made which operates
like the earlier version of bit_map_color_rgb.  The new routine was created
since the current bit_map_color_rgb will be needed for ROP support.

[src/gdevbit.c]

2006-04-11T04:54:24.181044Z Ray Johnston

The .ResourceFile logic did not work with the %rom% device since it relied
on the 'status' operator. This change avoids the use of 'status' by using
the 'file' operator in a stopped context. Bug 687094.

DETAILS:

The %rom% device needs to add a 'status' function that comes up with some
reasonable results.

EXPECTED DIFFERENCES:

None.

[lib/gs_res.ps]

2006-04-06T00:30:46.126294Z Dan Coby

Fix for 688625 5x to 15x slowdown between 8.50 and 8.53 (ref#10273).

DETAILS:

The given test file specifies a graphics state for almost every line drawn.
As a result, over 380,000 extra transparency mask initializations are done.
The extra time occurred when the PDF transparency processing was changed
being passed through the clist.These extra initializations were using both
CPU time and clist memory (disk) space.

The fix consists of only processing PDF transparency features when it
is actually needed by the file.  Note:  This was already being done
for most PDF transparency operations but not for the mask initializtion.

[lib/pdf_ops.ps]

2006-04-03T13:43:22.538056Z Alex Cherepanov

Fix all obvious cases where the name of an operator for signalerror procedure
is searched in the dictionary stack instead of retrieving it from systemdict.
Bug 688548.

DIFFERENCES:
None

[lib/gs_lev2.ps lib/gs_img.ps lib/gs_dpnxt.ps lib/gs_cspace.ps]

2006-04-02T00:17:36.683425Z Ray Johnston

Fix rangecheck in shfill caused by floating point inaccuracies in the function
logic. Previous logic allowed for inaccuracy, but the value scaling was wrong
making the test too stringent. Bug 688574 for customer 531.

DETAILS:

This rangecheck failure was not consistent across various builds, but _was_
repeatable on peeves. The problem was a floating point calculation truncation
which caused a vaule to go outside of the defined range (in this case, the
value went negative and the limit was 0.0).

There was logic present in 'fn_1ItSg_is_monotonic' to allow for small
'out of bounds' conditions, but the value used was defined for a different
range and thus was too strict.

While fixing this (by splitting the 'small' values to different ones for
the 'b' range and the 'e' range) I also corrected many spelling errors
(s/noize/noise/ and s/beak/peak). I also regularized the small float
value to (float)1e-6 in the various modules.

[src/lib.mak src/gsfunc0.c src/gsfunc3.c src/gxpcopy.c]

2006-04-01T22:16:27.729522Z Alex Cherepanov

Work around a bug in GCC 2.96 for x86. Pre-load stack pages to avoid a SEGV.
Bug 688574.

DETAILS:
It is well known that GCC 2.96 for x86 sometimes forgets to adjust $esp
and leaves automatic variables at small distance below the stack pointer.
Apparently, when the access to the automatic variable causes a page fault
Linux sends a SEGV signal instead of committing the page if the access
happens below the stack pointer. Pre-loading the stack pages from a known
good context resolves the problem.

DIFFERENCES:
None.

[src/gs.c]

2006-04-01T15:09:59.196553Z Alex Cherepanov

Recognize PDF fonts by the first 4 bytes of the font stream. Simplify
Type 1 font reader and PFB font reader.
Bug 688569 from customer 850.

DETAILS:
Some PDF files mis-identify font type of the embedded font streams or
include raw PDF font streams. Length1, Length2, Length3 may be wrong or
missing. Adobe Acrobat corrects these types transparently to the user.

All PDF font streams can be easily recognized by the 1st 4 bytes of
the font stream. The PFB stream can be recognized by the 1st 2 bytes.

The Type 1 font reader doesn't need to follow 3-part structure of the
Type 1 font but interpret it as a single stream. PDF specifies that
Type 1 fonts with binary-encoded eexec  streams can be embedded. One can
imagine a binary eexec stream that is mis-identified as a hexadecimal
eexec stream by a standard PostScript eexec operator. So the encoded
stream was converted to hexadecimal stream before rev. 6568 . In
practice we've never seen a stream that need a hexadecimal conversion
but had several real hexadecimal streams. When the hexadecimal
conversion was removed in rev. 6568, handling of 3-part Type 1 structure
became a rudiment with is removed now.

Existing code restores the operand and dictionary stacks after the font
interpretation. So no extra code is required to support fonts without
the 3rd part - zeros and cleartomark.

These changes enable Ghostscript to interpret many kinds of malformed
font streams but reduce it's utility as a verification tool. Checking
of the declared type, subtype, and length parameters vs. actual values
has been moved to the bug 688627 and will be implemented later.

DIFFERENCES:
None

[lib/pdf_font.ps]

2006-04-01T13:35:02.551726Z Alex Cherepanov

Fix /ioerror when the length of the string data target is equal to number of
generated bytes. Calculate the exact number of \n characters inserted by
ASCIIHexEncode filter instead of the high bound
Bug 688569

DIFFERENCES:
None

[src/sstring.c]

2006-04-01T13:13:59.549095Z Alex Cherepanov

Enable redefinition of /image and /imagemask operators in PDF interpreter
whan DELAYBIND option is in effect.
Bug 688555

DETAILS:
pdf_draw.ps is loaded after gs_img.ps, gs_init.ps, gs_l2img.ps where /image and
/imagemask are redefined. So these names can be safely resolved at the
loading time, instead of taking the value from systemdict at run time as it was
done before.

DIFFERENCES:
None

[lib/pdf_draw.ps]

2006-03-31T01:07:31.896512Z Dan Coby

Fix for 688608 image rendered black in PDF-file

DETAILS:

The test file for this problem has several 1 bit DeviceGray images.  The file also uses
the 'Darken' blending mode.  This result of this blending mode is the darker of the
background and source colors.

The problem was that 1 bit DeviceGray images are handled by the copy_mon device procedure.
The PDF 1.4 transparency compositor devices were using the gx_default_copy_mono procedure.
However this routine first sets the specified area to black and then sets the white regions.
Since the entire area is first set to black, the blending operation always produced a
black result.

The fix consists of creating a new copy_mono procedure for the PDF 1.4 transparency
compositor devices.  The new routine does not set the entire area to black first.

[src/gdevp14.c]

2006-03-29T21:50:36.299258Z Ray Johnston

Document the new '-o' option. Also minor cleanup in the same area.

[doc/Use.htm]

2006-03-29T20:43:28.951336Z Ray Johnston

Correct double "" typo that made 'usage:' not work.

[toolbin/search-svn-revs]

2006-03-29T19:39:10.090689Z Raph Levien

Adds -o switch to command, which is essentially an alias for 
-sOutputFile=, -dNOPAUSE, and -dBATCH.

[src/imainarg.c]

2006-03-29T19:31:05.448360Z Ralph Giles

The luratech JPEG 2000 encoder defaults to lossless coding mode,
which doesn't offer any size advantages over the older DCT encode
filter. Instead ask for quality-based rate control at 60 on a scale
of 1-100. This also requires switching to the 9,7 wavelet from the
reversible 5,3.

[src/sjpx_luratech.c]

2006-03-28T01:05:49.592416Z Ray Johnston

Return a success code from the clist compression initialization functions.
Bug 688603. Thanks to "Nix" for spotting this.

DETAILS:

This problem actually existed with the LZW comoression init as well as ZLIB.

[src/gxclzlib.c src/gxcllzw.c]

2006-03-27T19:01:29.123835Z Ray Johnston

Fix typo in double inclusion protection.

[src/sjpx_luratech.h]

2006-03-27T18:53:39.250165Z Ray Johnston

Fix a problem handling ' " and \ characters that gave false postives when checkin
sources for C++ comments. Remove some modules from the 'skip' list that did not
belong there (IMHO) -- they were probably there due to previous false positives.

DETAILS:

This module was already sort of hackish. It works better, but probably can still
be fooled. At least we now ignore the character following a '\' and can handle
things like '"' and "'" without getting confused.

EXPECTED DIFFERENCES:

src/gdevpdfe.c will no longer be listed as having C++ comments.

[toolbin/tests/check_comments.py]

2006-03-25T01:38:29.250332Z Ralph Giles

Fix luratech-based encode filters. We now appear to work correctly.

DETAILS:

Invert the JBIG2 image data before passing it to the encoder library. We 
allocate a scratch buffer for this because the buffer we are passed in
the read cursor struct is marked const. We now produce output with the 
correct meaning for 0 and 1 bits, but the output of the jbig2 output 
device is now inverted.

In both the jbig2 and jpx encode filters, repeatedly grow dynamic 
buffers until they reach the required size instead of assuming a
single doubling will be sufficient. This fixes a segfault inside
the library compressing large JPX images.

[src/sjbig2_luratech.h src/sjbig2_luratech.c src/sjpx_luratech.c]

2006-03-24T23:58:42.888065Z Ralph Giles

Correct an unitialized variable warning.

[src/gdevjbig2.c]

2006-03-24T01:10:06.296187Z Alex Cherepanov

Use .languagelevel operator instead of languagelevel name to prevent
languagelevel redefinition to affect Ghostscript operation.
Bug 688583

DIFFERENCES:
None

[lib/gs_img.ps]

2006-03-23T19:32:06.035048Z Ray Johnston

Change PDF curve rendering to use 'accurate' curves. PostScript method
is retained for Adobe CPSI compatibility. Bug 688434.

EXPECTED DIFFERENCES:

All are varified as progressions (improvements). I will run update_specific
immediately after the patch is committed.

The file list is:

0.pdf
1_2001.pdf
1_pct_50_bang.pdf
86554321.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona_Measure_1v1.pdf
Altona_Visual_bb_1v1_x3.pdf
Altona_Visual_sb_1v1_x3.pdf
BEST8-99-Path.fh7.pdf
BW0696FOLD1FRONT.pdf
Bug687724.pdf
Bug687828.pdf
Bug687840.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
GS_Stroke_error.pdf
Openhuis_pdf_zw.pdf
PixelisAd.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
SmoothShading.pdf
Svd.pdf
adesso8.pdf
ai2.pdf
annots.pdf
besttest.pdf
bugsample.pdf
bulletin.pdf
ca.pdf
chartab.pdf
chilis_black.pdf
chilis_red.pdf
file.pdf
file2.pdf
knight.pdf
messenger.pdf
messenger16.pdf
p2b-100.pdf
probe3.pdf
si_tg_brochure.pdf
time1.pdf

[lib/pdf_main.ps]

2006-03-23T12:39:23.850800Z leonardo

Fix (pdfwrite) : The font copying and the font comparizon didn't work with segmented True Type data.

DETAILS :

Bug 688611 "Font included in the PDF file several times".

In Postscript documents Trus Type font data are segmented
to fit into a maximal Postscript string.
If a True Type table is bigger, it must be segmented.
When creating a stable font copy such case is rare,
because we copy small tables only (skipping such big tables as 'glyph'
in order to create a font subset).
In the supplied test case True Type font is so wrongly segmented,
that 'cvt' table consistes of 2 segments, rather it could fit into a single string.
Due to that the old code accessed occasional data after a segment break.

We believe that the test document is an incorrect Postscript,
but we decided to do effort for handling this case.

EXPECTED DIFFERENCES :

None.

[src/gxfcopy.c src/gdevpsft.c]

2006-03-23T09:56:47.387302Z leonardo

(pdfwrite) : Integrating Luratech modules for JPXEncode, JBIG2Encode.

DETAILS :

This imolements a better filter initialization and 
a proper writing of filter names to the PDF output file.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfx.h src/gdevpdfu.c src/gdevpsdi.c src/devs.mak]

2006-03-22T18:35:22.304671Z Raph Levien

FIX: Fixes segfault in wts persistent cache logic when no cache key is
generated. Fixes bug #688132.

[src/gswts.c]

2006-03-22T18:10:43.455701Z Ralph Giles

Fix printafm to properly handle files with more than 256 glyphs. Patch 
from Michail Vidiassov. Bug 688610.

[lib/printafm.ps]

2006-03-22T16:44:15.233805Z leonardo

(pdfwrite) : Integrating Luratech modules for JPXEncode, JBIG2Encode.

DETAILS :

This is a preliminary implementation.
The new filters in this revision isn't working well and need more debugging.

To build Ghostscript with new filters, specify 
"JBIG2_LIB=luratech JPX_LIB=luratech" in the command line when running 'make' utility.
Use this Postscript prefix to invoke new filters :

<< /ColorImageFilter /JPXEncode
   /GrayImageFilter /JPXEncode
   /MonoImageFilter /JBIG2Encode
>> setdistillerparams

JPXEncode requires CompatibilityLevel=1.5 , 
JBIG2Encode requires CompatibilityLevel=1.4 . 

IMPORTANT NOTE :
The change to gdevpsdi.c near line 239 slightly changes
the behavior in the case when no new filters involved.
When AutoFilter=true, the old code completely disregarded the filter 
specified in ColorImageFilter, GrayImageFilter.
The new code leaves it as a candidate for the automatic choice
if it is a non-lossless filter.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdp.c src/gdevpdfp.c src/gdevpsdi.c src/devs.mak]

2006-03-22T14:56:00.546050Z leonardo

Fix (pdfwrite) : A minor code cleanup.

DETAILS :

This is a preparation for integrating Luratech modules for JPXEncode, JBIG2Encode.
This change is algorithmicly equivalent.

1. Allowed CompatibilityLevel=1.5 . Old code replaced with 1.4 .
   The new code behaves same as the old one.

2. In gdevpsdi.c set_defaults was called twice for same filter in some cases.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfp.c src/gdevpsdi.c]

2006-03-22T08:43:11.486957Z leonardo

Fix : MSVC, Cygwin/gcc warnings.

DETAILS :

Note 1:
This patch inserts 2 initializations into gswts.c against an indeterminzm,
but we don't case about correct values in those cases.

Note 2:
This patch removes the messing pointer type cast insetred with the last patch.

EXPECTED DIFFERENCES :

None.

[src/gsimage.c src/gxfcopy.c src/gxwts.h src/gdevpdfg.c src/gswts.c]

2006-03-22T08:04:49.413437Z Ray Johnston

Fix compile problems and MSVC warnings.

[src/gxwts.h src/gswts.c]

2006-03-22T07:05:00.066628Z Raph Levien

Patch to put WTS halftones in clist so that WTS halftoning works in
banded mode. Also uses persistent cache when available to save time
initializing the WTS halftone structures. Some memory cleanup and
optimization work remains.

[src/gp_unix_cache.c src/gswts.h src/gshtscr.c src/gxdhtserial.c src/gxwts.h src/gsht.c src/gswts.c src/gxclrast.c src/gxdevndi.c src/gp.h src/gxclimag.c]

2006-03-22T04:58:45.401369Z Alex Cherepanov

Add ToWrite dictionary to complete the environment for pdfwrite.ps procedures
and enumerate JBIG2Globals parameter before the image to avoid recursion during
stream copying.
Bug 688556

DIFFERENCES:
None

[lib/pdfopt.ps]

2006-03-21T12:09:23.846370Z leonardo

Fix (pdfwrite) : Order embedded fonts against an indeterminizm.

DETAILS :

Bug 688561 "PDF content depends on memory allocation."

The old code writes font data depending on glyph name indices,
which are Postscript name indices and depend on memory allocation order,
which depend on occasional factors and events.

This patch implements a font data ordering by glyph names,
which are strings. The ordering is implemented for
stable font copies, which only represent an embedded font
before writing it.

See comments added into gxfcopy.h .

EXPECTED DIFFERENCES :

None.

[src/gdevpdtb.c src/gxfcopy.c src/gxfcopy.h]

2006-03-20T23:35:52.190540Z Ralph Giles

Implement RGB and CMYK output in the example JPX output device. The CMYK 
device isn't confirmed to be correct.

[src/devs.mak src/gdevjpx.c]

2006-03-17T20:26:58.555712Z Ralph Giles

Add the new luratech integration and testing files to the 
file list in the documentation.

[doc/Develop.htm]

2006-03-17T20:16:46.140063Z Ralph Giles

Add missing revision comment lines.

[src/gscedata.h src/gdevpdtv.c src/gdevpdtv.h src/gscedata.c]

2006-03-17T07:19:58.022114Z leonardo

Type 1 hinter : More improvements (continued 3).

DETAILS :

The revision 6642 appears incorrect.
We thought that the 'uninitialized' warning was issued
due to the compiler stupidity, however it appears useful.
Those variables could be uninitialized due to 
the operator 'continue' above their assignments.
Revisions before 6642 are indeterministic.

This patch provides a correct fix for that error.
The last patch fixed the indeterminizm,
but the computation was inaccurate.

EXPECTED DIFFERENCES :

normal 72 dpi :

"Bug687724.pdf" 
"chess.ps" 
"MagicEye.pdf" 

normal 300 dpi :

"86554321.pdf" 
"alphabet.ps" 
"t\Bug687724.pdf" 
"t\fonts.pdf" 
"t\MagicEye.pdf" 
"t\PixelisAd.pdf" 
"t\prob.pdf" 
"t\spec_gs.pdf" 
"t\spec_gv.pdf" 

pdfwrite 72 dpi :

"Bug687724.pdf" 
"chess.ps" 
"t\Bug687724.pdf" 
"t\chess.ps" 
"t\MagicEye.pdf" 

pdfwrite 300 dpi :

"86554321.pdf" 
"alphabet.ps" 
"Bug687603.ps" 
"Bug687724.pdf" 
"fonts.pdf" 
"MagicEye.pdf" 
"PixelisAd.pdf" 
"prob.pdf" 
"spec_gs.pdf" 
"spec_gv.pdf" 

[src/gxhintn.c]

2006-03-16T19:59:07.187142Z Ray Johnston

Remove individual credit from 'usage'.

[toolbin/search-svn-revs]

2006-03-15T19:56:58.028675Z Ralph Giles

Remove excessive debugging output.

[src/sjpx_luratech.c]

2006-03-15T19:45:00.902158Z Ray Johnston

Fix color procs to get gray scale instead of _b_w_.

[src/gdevjpx.c]

2006-03-15T14:35:27.348378Z Alex Cherepanov

Use gput procedure to store data in the PDF graphic state instead of the plain
def because initial graphic state is a read-only dictionary.
Bug 688593 from customer 870.

DIFFERENCES:
None

[lib/gs_ttf.ps]

2006-03-15T06:33:42.151793Z Ralph Giles

Add test frameworks for the JBIG2 and JPX encode filters. This code 
only depends on the encoder streams being available, but currently
that is only possible when building against the proprietary Luratech
implementation libraries.

[src/gdevjbig2.c src/gdevjpx.c src/devs.mak]

2006-03-15T05:46:07.272587Z Ralph Giles

Initial check in of JPX encode filter support based on the Luratech LWF 
JP2 library.

[src/sjpx_luratech.h src/sjpx_luratech.c]

2006-03-15T05:43:50.703217Z Ralph Giles

Commit header changes associated with the previous commit.

[src/sjpx_luratech.h]

2006-03-15T05:41:25.246375Z Ralph Giles

Instead of using the dimensions and depth of the first image component,
take the maximum of the values for each component, giving the highest 
resolution image. The library doesn't supply the information from 
the Image Header Box which should be the actual target resolution, 
so we still need to implement passing the target image dimensions 
from the image dictionary for complete robustness. 

Also, some code clean up and improvement of debugging messages.

[src/sjpx_luratech.c]

2006-03-13T21:11:43.073623Z stefan

Use vsprintf for currently unused gs_throw_imp for now.

[src/gsmisc.c]

2006-03-13T20:53:43.657512Z stefan

remove abberant include of stdint.h

[src/gdevpdfe.c]

2006-03-13T20:37:32.485353Z Ray Johnston

Add warning about potential misleading results as pointed out by Igor.
Credit him with this observation in the 'usage' explanantion.

[toolbin/search-svn-revs]

2006-03-13T19:52:46.775800Z Ralph Giles

Fix a typo that was introduced in r6651.

[src/gserror.h]

2006-03-13T19:41:07.288420Z Ralph Giles

Use the Id keyword instead of the old RCSFile and Revision.

[src/gserror.h]

2006-03-13T16:18:19.024819Z stefan

changed copyright headers

[src/iplugin.h src/gdevm48.c src/gsgdata.h src/configure.ac src/gsropt.h src/gdevmsxf.c src/gdevmem.c src/gdevmem.h src/zvmem.c src/write_t1.c src/gstrap.c src/icstate.h src/gxxfont.h src/write_t1.h src/gstrap.h src/gzacpath.h src/gdevcgmx.h src/gscssub.c src/gp_msdos.c src/gdevlbp8.c src/gdevdm24.c src/gdevpdfx.h src/zcsdevn.c src/dwsetup.rc src/zcontext.c src/gscssub.h src/icie.h src/gxdhtserial.c src/gdevpdts.c src/ccfont.h src/gxdither.h src/gxdhtserial.h src/gdevpdts.h src/macsystypes.h src/gxclutil.c src/gxcomp.h src/echogs.c src/oper.h doc/History7.htm src/zchar42.c src/gscscie.c src/gsfont0.c src/zchar42.h src/icfontab.c src/zht1.c src/zdevcal.c src/zpcolor.c src/gdevpdfi.c src/zcssepr.c src/ifont42.h src/sdcparam.c doc/Install.htm src/bcwin32.mak doc/Issues.htm src/sdcparam.h src/gdevpdtd.c src/gdevokii.c src/zcfont.c src/gdevpdtd.h src/gdevprna.c src/zcolor.c src/gxhtbit.c src/oparc.h src/sfxfd.c src/gdevprna.h src/gp_mspol.c src/dwuninst.h src/ttconfig.h src/gpmisc.c src/ireclaim.c src/gxstdio.h src/gsmemraw.h src/gpmisc.h doc/Lib.htm src/gxline.h doc/Ps-style.htm src/ijs.mak src/gserver.c src/gp_psync.c src/gp_os2pr.c src/gdevpsd.c src/gsiomacres.c src/gxclfile.c src/gxfilltr.h src/gdebug.h src/zfile.c src/gdev4693.c src/gxchar.c src/gxchar.h src/gsline.c src/gsfcid2.c src/gsalloc.c src/gsline.h src/gsiparm2.h src/gsalloc.h src/gxfont0.h src/gdevmeds.c src/gs16spl.c src/gdev4081.c src/gdevmeds.h src/srdline.h src/dpmain.c src/wctail.mak src/winlib.mak doc/History8.htm src/szlibx.h src/zmath.c src/gdevpdfk.c src/gxfont0c.h src/iimage.h src/gxpcolor.h src/gdevpdtf.c src/gp_unifn.c doc/Xfonts.htm src/gdevddrw.c src/gschar.c src/gdevpdtf.h src/gdevpsfm.c src/gdevddrw.h src/sarc4.c src/gschar.h src/gsptype2.c src/gdevpsu.c src/zfcid1.c src/sarc4.h src/gstrans.c src/gsptype2.h src/gdevpsu.h src/gstrans.h src/iestack.h src/gxbitfmt.h src/gxclio.h src/gstype2.c src/itoken.h src/inameidx.h src/gxhldevc.c src/gxhldevc.h src/sfxboth.c src/gp_macio.c src/wrfont.c src/sbhc.c src/gsdps.c src/zfont1.c doc/Maintain.htm src/wrfont.h src/sbhc.h src/gsdps.h src/spngp.c src/ghost.h src/gxalloc.h src/gsmatrix.c src/gxsamplp.h src/istruct.h src/gdevpsf.h src/gsmatrix.h src/zdouble.c src/dwreg.c src/spdiff.c src/gxfcmap1.h src/dwreg.h src/scommon.h src/gdevpdtw.c src/gdevpdtw.h src/unixhead.mak src/gsiparm4.h src/gxiscale.c src/gxbcache.c src/dwinst.cpp src/gxbcache.h src/ibnum.c src/gdevxcmp.c src/estack.h src/ibnum.h src/scfe.c src/gscompt.h src/gsdcolor.h src/gxdtfill.h src/gdevxcmp.h src/gdevlj56.c src/gdevhl7x.c src/gdevos2p.c src/gsparam.c src/gdevmr8n.c src/gsbitops.c src/gxftype.h src/gp_unix_cache.c src/gdevpdfm.c src/imain.c src/gsparam.h src/gsbitops.h src/zfilter2.c src/imain.h src/ifilter.h src/zfont42.c doc/Language.htm src/spdiffx.h src/smd5.c src/smd5.h src/gxhttype.h src/gs16spl.rc src/gspenum.h src/sjpx.c src/sjpx.h src/gxipixel.c src/sfilter2.c src/gdevsnfb.c src/gdevifno.c src/gscrd.c src/gxmclip.c src/gxcie.h src/gsio.h src/gscrd.h src/gxmclip.h src/unix-end.mak src/inobtokn.c src/gp_mslib.c src/gsiodev.c src/gdevescp.c src/igc.c src/msvc32.mak src/gdevmacxf.c src/gsfunc0.c src/igc.h src/jerror_.h src/zdosio.c src/gsfunc0.h src/gdevpsds.c src/gdevpsf1.c src/siscale.c src/gdevpsds.h src/ilevel.h src/gxfill.c src/gsdsrc.c src/siscale.h src/gxclread.c src/gxfill.h src/gsdsrc.h src/iostack.h src/gdevmr1.c src/gsdll.c src/gspath1.c src/gsdll.h src/sjpegc.c src/zfdcte.c src/zfcmap.c doc/Readme.htm src/gdevbit.c src/gdevfax.c src/gsequivc.c src/gsdevice.c src/gp_wsync.c src/gdevfax.h src/gsequivc.h src/gsdll32.rc src/gxclmem.c src/gshtx.c src/gscparam.c src/gdevpdfo.c src/gdevsj48.c src/gsdevice.h src/gsbittab.c src/sdctd.c src/macos_carbon_pre.h src/gxclmem.h src/gshtx.h src/gsmemory.c src/gdevpdfo.h src/gsbittab.h src/ifwpred.h src/gdevcdj.c doc/Devices.htm src/files.h src/gsmemory.h src/gxband.h src/scfdgen.c src/ttinterp.c src/ttcalc.c src/gsbitmap.h src/gdevtknk.c src/idsdata.h src/ttinterp.h src/ttcalc.h src/gxfont42.h src/scf.h src/inames.h src/gxidata.c src/gsroptab.c src/gdevm1.c src/gsistate.c src/os2.mak src/gscolor2.c src/gzline.h src/gscolor2.h src/gsmalloc.c src/ttfmain.c src/ivmem2.h src/gsmalloc.h src/gscindex.h src/gxiodev.h src/gp_macpoll.c src/dwmain.c src/gdevpcfb.c src/gdevvec.c src/dwmain.h src/gdevpcfb.h src/gdevvec.h src/ostack.h src/gsrect.h src/sdeparam.c src/idosave.h src/gsncdemo.c src/ifrpred.h src/gdevimgn.c src/gdevvglb.c src/gsmdebug.h src/gsovrc.c src/gxshade1.c src/gdevm32.c src/scfx.h src/gsovrc.h src/all-arch.mak src/bfont.h src/idparam.c src/gsparams.c src/gdevbjcl.c src/gdevpsdu.c src/dvx-gcc.mak src/idparam.h src/gsparams.h src/gxblend.c src/gdevdsp2.h src/gp_mswin.c src/gdevbjcl.h src/gxblend.h src/gp_mswin.h src/gp_os2.c src/zcolor1.c src/math_.h src/gp_os2.h src/gxfunc.h src/gdevstc.c src/macos-fw.mak src/ialloc.c src/gdevstc.h src/ialloc.h src/gserrors.h src/sjpege.c src/gxsample.c src/gxfarith.h src/dxmainc.c src/gdevbmp.c src/gxsample.h src/gserror.h src/gdevbmp.h src/gdevsppr.c src/igcstr.c src/gdevn533.c src/idebug.c src/igcstr.h src/iccinit1.c src/idebug.h src/gsht.c src/ifont2.h src/gdevpsdf.h src/gdevm16.c src/gsht.h src/scantab.c src/gxfapi.c src/zfilter.c src/gstype42.c src/gxfapi.h src/iutilasm.asm src/gsfunc.c src/sbcp.c src/iref.h src/gsfunc.h src/sbcp.h src/gdevtrac.c src/gp_ntfs.c src/libpng.mak src/gdevatx.c src/zfproc.c src/gs_dll_call.h src/dmmain.c src/istream.h src/gs.c doc/Ps2epsi.htm src/zdevice2.c src/iscannum.c src/sjbig2.c src/gdevpdfb.c src/gscrdp.c src/gspmdrv.c src/iscannum.h src/dmmain.r src/sjbig2.h src/gsfemu.c src/gdevpdfb.h src/gscrdp.h src/gspmdrv.h src/inamestr.h src/gxclrast.c src/gdevxres.c src/zfile1.c src/zimage3.c src/istkparm.h src/gdevo182.c src/zarith.c src/zcspixel.c src/gximage1.c src/msvctail.mak src/gsfunc4.c src/isdata.h src/gxclpath.c src/gsfunc4.h src/gxcmap.c src/gxclpath.h src/icsmap.h src/gxcmap.h src/gpgetenv.h src/zpath.c src/ttload.c src/gsnorop.c src/gdevmrop.h src/gxfillsl.h src/zcolor3.c src/ttload.h src/tttype.h src/gxcpath.c doc/Unix-lpr.htm src/gxcpath.h src/gdevlxm.c src/gxp1impl.h src/rinkj/rinkj-epson870.c src/rinkj/rinkj-epson870.h src/gxgetbit.h src/gdevabuf.c doc/Source.htm src/md5.c src/gp_mac.c src/gdevsgi.c src/zcie.c src/md5.h src/gdevsco.c src/gp_mac.h src/stream.c src/gdevsgi.h src/gdevdflt.c src/stream.h src/gsdpnext.h src/gdev8510.c src/gxstroke.c src/gdevpxut.c src/zmisc2.c src/ttmisc.h src/zfunc3.c src/iparam.c src/zrelbit.c src/gdevpxut.h src/gxclist.c src/gdevxini.c src/iparam.h src/gxclist.h src/jbig2.mak src/gdevpsfu.c src/gdevlp8k.c src/gdevpdt.c src/ttfmemd.c src/gdevpdt.h src/gp_dosfs.c src/ttfmemd.h src/gpcheck.h src/jasper.mak src/ztype.c src/dwuninst.cpp src/gdevxxf.c src/shc.c src/zshade.c doc/Use.htm src/opcheck.h src/shc.h src/gdevpdfd.c src/gdevcfax.c src/zicc.c src/vdtrace.c src/gxdda.h src/iscan.c src/vdtrace.h src/iscan.h src/gsnotify.c src/gximage3.c src/srle.c src/gsnotify.h src/zfilterx.c src/gsdll2.rc src/gximage3.h src/iparray.h src/memory_.h src/gsuid.h src/gdevstc2.c src/ziodev2.c src/gsiodevs.c src/zmisc.c src/gsargs.c src/devs.mak src/gp_win32.c src/gsargs.h src/gsinit.c src/gxttfb.c src/wmin.mak src/gxttfb.h src/dscparse.c src/winplat.mak src/gdev3852.c src/dscparse.h src/gp_getnv.c src/gp_wgetv.c src/gdevpxen.h src/gdevadmp.c src/gdevpxat.h src/zchar2.c src/errno_.h src/slzwc.c src/gdevpdfu.c src/ttcommon.h src/gdevp14.c src/dwinst.h doc/Ps2ps2.htm src/sfilter.h src/gdevp14.h src/ifcid.h src/sisparam.h src/ifont.h src/zfmd5.c src/unixlink.mak doc/Psfiles.htm src/zrop.c src/gdevegaa.asm src/zfjpx.c src/gspaint.c src/gspaint.h src/sa85x.h src/gsalpha.c src/int.mak src/gsalpha.h src/icremap.h src/imainarg.c src/gp_dvx.c src/imainarg.h src/spprint.c src/gxcldev.h src/zbfont.c src/unix-gcc.mak src/spprint.h src/igstate.h src/unistd_.h src/version.mak src/dwtext.c src/sbwbs.c src/gxdevmem.h src/icharout.h src/gdevstc4.c src/dwtext.h src/sbwbs.h src/szlibd.c src/gdevpccm.c src/gdevdfax.c src/gdevdbit.c src/gdevpccm.h src/strimpl.h src/gsutil.c src/opextern.h src/gsutil.h src/zimage.c src/gdevcgm.c src/gdevtsep.c src/gsfont0c.c doc/Deprecated.htm src/gsht1.c src/gspcolor.c src/gxi12bit.c src/gsht1.h src/iddstack.h src/rinkj/rinkj-config.c src/gspcolor.h src/zfjbig2.c src/std.h src/rinkj/rinkj-config.h src/gdevs3ga.c src/slzwe.c src/scfdtab.c src/gscolor.c src/stdint_.h src/ztoken.c src/gxpaint.c src/seexec.c src/zchar32.c src/gdevm56.c src/gscolor.h src/icid.h src/spsdf.c src/gxpaint.h src/gsfname.c src/spsdf.h src/gsfname.h src/gxalpha.h src/md5main.c src/srlx.h src/gxclipsr.h src/gdevmac.c src/idisp.c src/jpeg.mak src/gdevmac.h src/idisp.h src/idstack.c src/gdevrinkj.c src/idstack.h src/gdevwdib.c src/gxoprect.c doc/Copying.htm src/gdevsunr.c src/gdevpdtc.c src/gxoprect.h src/gsfcmap1.c src/gswts.c src/gsstate.c src/gswts.h src/ichar1.h src/gxiparam.h src/gsstate.h src/gdevcljc.c doc/Ps2pdf.htm src/iscanbin.c src/gdevmiff.c src/iscanbin.h src/gp_mshdl.c src/zfcid.c src/zfont.c src/unixinst.mak src/iminst.h src/zarray.c src/gxdevcli.h src/fcntl_.h src/gdevpe.c doc/Humor.htm src/zdfilter.c src/write_t2.c src/zdps1.c src/write_t2.h doc/Commprod.htm src/zhsb.c src/gxsync.c src/zupath.c src/dstack.h src/gsccolor.h src/gxsync.h src/gdevpdtt.c src/gdevpbm.c src/gdevpdtt.h src/gdevmrun.c src/gsdllwin.h src/gconf.c src/gdevmrun.h src/gconf.h src/sdct.h src/zfbcp.c src/gsipar3x.h src/gzcpath.h src/scfetab.c src/gxstate.h src/gdevpcl.c src/gdevcmap.c src/zht2.c src/gxfmap.h src/gdevpdfj.c src/zfarc4.c src/gdevpcl.h src/ichar.h src/gdevcmap.h src/zht2.h src/gdevwprn.c src/gxpdash.c src/ztrap.c src/gxlum.h doc/Drivers.htm src/gdevpdte.c src/gdevdevn.c src/gsgcache.c src/gdevdevn.h src/gsgcache.h src/gsptype1.c src/gxclbits.c src/zfcid0.c src/gsptype1.h src/macos_classic_d_pre.h src/zgstate.c src/zfontenum.c src/ctype_.h src/inouparm.c src/rinkj/rinkj-screen-eb.c src/slzwx.h src/gstype1.c src/gxdhtres.h src/gdevmpla.c src/rinkj/rinkj-screen-eb.h doc/Testing.htm src/gstype1.h src/dwmain.rc src/gxcspace.h src/gdevmpla.h src/rinkj/evenbetter-rll.c src/watclib.mak src/rinkj/evenbetter-rll.h src/gxfcache.h src/gxclzlib.c src/istack.c src/zfont0.c src/gstparam.h src/istack.h src/gdevevga.c src/gdevhit.c src/gxclimag.c src/gsdfilt.c src/gxfillts.h src/gsdfilt.h src/gxht.c src/gxdcconv.c src/gdevpsdp.c src/gxcht.c src/openvms.mak src/gdevxalt.c src/gdevclj.c src/gxht.h src/gxdcconv.h src/zvmem2.c src/gdevpdtv.c src/contrib.mak src/rinkj/rinkj-device.c src/gdevpdtv.h src/lwf_jp2.mak src/gxclpage.c src/gsiparm3.h src/gxfont1.h src/rinkj/rinkj-device.h src/icontext.c src/gsdllos2.h src/gxclpage.h src/zstring.c src/icontext.h src/unix-aux.mak src/gzspotan.c src/zfont32.c src/ttfoutl.h src/gxclip2.c src/szlibxx.h src/gdevdrop.c src/gzspotan.h src/gxclip2.h src/scfd.c src/cfonts.mak src/gxiclass.h src/gdevcgml.c src/gdevcgml.h src/gdevpx.c src/windows_.h src/gdevl256.c doc/DLL.htm src/igcref.c src/zcharx.c src/gxtype1.c src/gxtype1.h src/gdevcp50.c src/idictdef.h src/gsmemret.c src/gxclip.c src/gsmemret.h src/sfilter1.c src/iname.c src/sddparam.c src/gxclip.h src/zmedia2.c src/iname.h src/gs.mak src/gxpcmap.c doc/News.htm src/gp_msdll.c src/gxcid.h src/gdevnfwd.c src/macos-mcp.mak src/ttobjs.c doc/History1.htm src/zcontrol.c src/ttobjs.h src/icclib.mak src/gsfcmap.c src/zfont2.c src/iimage2.h src/gxrplane.h src/gsfcmap.h src/gxp1fill.c src/imemory.h src/gsciemap.c src/dos_.h src/zdscpars.c src/gscdef.c src/gdevwpr2.c src/gxtmap.h src/gsbitcom.c src/zchar.c src/gdevsun.c src/gscrypt1.c doc/Fonts.htm src/gscrypt1.h src/ztrans.c src/dwmainc.c src/gxdht.h src/dvx-head.mak src/zcsindex.c src/zcidtest.c src/gdevrops.c src/gdevpdtx.h src/gdevijs.c src/icolor.h src/stdpn.h src/store.h src/gxfixed.h src/gstypes.h src/gsserial.c src/string_.h src/gdevcslw.c src/gsjmorec.h src/gsserial.h src/zfdctd.c src/zdps.c src/gxpcache.h src/scanchar.h src/lib.mak src/gdevdsp.c src/zmatrix.c src/sdctc.c src/gdevdsp.h src/gdevpipe.c src/gspmdrv.rc src/gdevsvga.c src/gdevpdti.c src/gdevsvga.h src/gdevpdti.h src/gdevepsn.c src/gsparam2.c src/gp_mktmp.c src/stat_.h src/zfsample.c src/zfdecode.c src/gsstruct.h src/gximag3x.c src/gsgc.h src/gscolor1.c src/gsnamecl.c src/dwtrace.c src/gdevmswn.c src/ierrors.h src/gxfcmap.h src/gdevjpeg.c src/gximag3x.h src/siinterp.c src/gscolor1.h src/gsnamecl.h src/dwtrace.h src/gdevmswn.h src/gdevbbox.c src/siinterp.h src/opdef.h src/gdevbbox.h src/iddict.h doc/History2.htm src/gp_stdin.c src/gdevtfax.c src/gdevpjet.c src/gendev.c src/gsexit.h src/gdevphex.c src/gp.h src/gslparam.h src/ivmspace.h src/gdevtfax.h src/gshtscr.c src/bench.c src/gsnogc.c src/gdevbmpa.c src/gsnogc.h src/stdio_.h src/tttables.h src/gdevemap.c src/gp_sysv.c src/gsrefct.h src/iastruct.h src/gdevbjc.h src/gdevpsf2.c src/gzht.h doc/Develop.htm src/gxcvalue.h src/sstring.c src/gxpath.c src/scfparam.c src/iconf.c src/gdevupd.c src/sstring.h src/gxpath.h src/interp.c src/zcrd.c src/iconf.h src/dwnodll.c doc/C-style.htm src/dwdll.c src/interp.h src/gdevm40.c src/dwdll.h src/gsiodisk.c src/sjpegd.c src/gspath2.h src/gdevpsim.c src/dvx-tail.mak src/errors.h src/gp_msprn.c src/gxino12b.c src/gdevmgr.c src/gdevpdfp.c src/gxacpath.c src/gslib.c src/ziodev.c src/gdevmgr.h src/iccinit0.c src/sdcte.c doc/Release.htm src/gxccache.c src/gslib.h src/ifont1.h src/zfunc0.c src/gxmatrix.h src/ifunc.h src/gxfdrop.c src/gp_unifs.c src/gxobj.h src/gxfdrop.h src/gxhintn.c src/gsiorom.c src/isstate.h src/gdevm2.c src/gxhintn.h src/gsiorom.h src/ifilter2.h src/gdevwddb.c src/gspath.c src/gxpcopy.c src/gscolor3.c src/gspath.h src/gdevdjet.c src/gscolor3.h src/rinkj/rinkj-dither.c src/zpath1.c doc/History3.htm src/gdevm24.c src/gp_unix.c src/rinkj/rinkj-dither.h src/inamedef.h src/ilocate.c src/gxdcolor.c src/gdevpm.c src/gscdefs.h src/vmsmath.h src/gscencs.c src/gxdcolor.h src/gzstate.h src/gdevbmpc.c src/gdevpm.h src/gschar0.c src/iht.h src/zdevice.c src/gscie.c src/gscencs.h src/ifapi.h src/gxi16bit.c src/zimage2.c src/gscie.h src/iastate.h src/pipe_.h src/gxbitops.h src/ipacked.h src/gpsync.h src/gsfunc3.c src/gdevperm.c src/gswin.rc src/gsccode.h src/gxpath2.c src/gsfunc3.h src/gp_strdl.c src/gxdevbuf.h src/genconf.c src/sa85d.c src/gscsel.h src/sa85d.h src/openvms.mmk src/zcolor2.c src/gp_stdia.c src/gdev3b1.c src/gxttf.h src/ttconf.h src/genht.c src/zgeneric.c src/gxarith.h src/gxclrect.c src/gsshade.c src/gsshade.h src/msvclib.mak src/gsicc.c src/zcid.c src/dwsetup.cpp src/gdevp2up.c src/gsicc.h src/dwuninst.rc src/gdevpdfr.c src/gdevppla.c src/zmisc1.c src/gsdevmem.c src/gdevppla.h src/wccommon.mak src/gxfcopy.c src/gdevpsft.c src/gxfcopy.h src/gsmisc.c src/gdevtfnx.c src/gdevm4.c src/gxicolor.c src/ldf_jb2.mak src/gxpageq.c src/winint.mak src/gsdparam.c doc/Make.htm doc/Details8.htm src/gxpageq.h src/gxdevrop.h src/gsstype.h src/gdevprn.c src/gdevcif.c src/gxdevndi.c doc/History4.htm src/gdevprn.h src/gxdevndi.h src/iesdata.h src/dxmain.c src/gdevpdfc.c src/iapi.c src/spngpx.h src/btoken.h src/gdevherc.c src/gdevpdfc.h src/iapi.h src/zcharout.c src/gdevepsc.c src/gxdevice.h src/gximage2.c src/srld.c src/zht.c src/gxshade4.c src/sjpx_luratech.c src/gxshade4.h src/iinit.c src/watcw32.mak src/gdevstc1.c src/gxbitmap.h src/sjpx_luratech.h src/gxccman.c src/iinit.h src/gsalphac.c src/gxshade.c src/sbtx.h src/zfunc.c src/gsclipsr.c src/gsalphac.h src/gxshade.h src/gsrop.c src/gsclipsr.h src/idict.c src/gxistate.h src/gsrop.h src/gscoord.c src/idict.h src/macos_carbon_d_pre.h src/gxcolor2.h src/gscoord.h src/genarch.c src/gscedata.c doc/Projects.htm src/gxcindex.h src/gscpm.h src/gscedata.h src/gp_nsync.c src/gdevdgbr.c src/gdevmr2n.c src/gdevdsha.c src/zlib.mak src/gdevxcf.c src/gxtext.h src/zchar1.c src/gscdevn.c src/gscdevn.h src/gdevpdft.c src/gdevpsdi.c src/shcgen.c src/gsiparam.h src/zmisc3.c src/zfapi.c src/zfunc4.c src/malloc_.h src/shcgen.h src/gscpixel.c src/gscpixel.h src/gdevplnx.c src/dirent_.h src/gdevplnx.h src/zfzlib.c src/Makefile.in src/gscsepr.c src/iutil2.c doc/History5.htm src/gscsepr.h src/gxwts.c src/ipcolor.h src/gsimage.c src/sjpeg.h src/iutil2.h src/gstext.c src/gxwts.h src/gsimage.h src/msvccmd.mak src/gstext.h src/gdevpdfe.c src/rinkj/rinkj-byte-stream.c src/gsflip.c src/rinkj/rinkj-byte-stream.h src/gsflip.h src/gdevdljm.c src/zdpnext.c src/geninit.c src/gdevdljm.h src/zusparam.c src/gxchrout.c src/gximage4.c src/gxchrout.h src/gxshade6.c src/gxcoord.h src/gdevpdf.c src/macosx.mak src/tttypes.h src/zpacked.c src/gdevstc3.c src/gsparamx.c src/gp_dosfe.c src/iutil.c src/szlibc.c src/gsparamx.h src/gdevpng.c src/iutil.h src/gzpath.h src/sfxstdio.c src/gxcdevn.h src/sjbig2_luratech.c src/gxropc.h src/gxfcid.h src/gxfont.h src/sjbig2_luratech.h src/gdevccr.c src/mkromfs.c src/gslibctx.c src/gdevdcrd.c src/unix-dll.mak src/gslibctx.h src/zbseq.c src/ziodevsc.c src/gdevdcrd.h src/gdevl31s.c src/zfrsd.c src/iosdata.h src/gdevdjtc.c src/gdevmacpictop.h src/gxino16b.c src/gdevpcx.c src/gdevpxop.h src/zfileio.c src/slzwd.c src/gdevpdfv.c src/gxpflat.c src/gxifast.c src/dwimg.c src/fapi_ft.c src/zsysvm.c src/gsimpath.c src/dwimg.h src/gdevx.c src/gsmemlok.c src/gsos2.rc src/gximage.c src/gdevx.h src/gsmemlok.h src/ziodevs.c src/unixansi.mak src/gdevpsfx.c src/gximage.h src/gscspace.c src/gdevmacttf.h src/gdevm8.c src/gdevpnga.c src/gscspace.h src/gsropc.c src/gsxfont.h src/ttfsfnt.h src/gsjconf.h src/gsfcid.c src/zstack.c src/gsfont.c src/gsropc.h src/gsfont.h src/isave.c doc/History6.htm src/isave.h src/gdevm64.c src/zdict.c src/gxfrac.h src/gx.h src/iccfont.c src/gdevpdfg.c src/png_.h src/gdevps.c src/gxcllzw.c src/gdevpdfg.h src/gxhttile.h doc/API.htm src/gdevpdtb.c src/gsdps1.c src/time_.h src/gdevpdtb.h src/ttfinp.c src/gshsb.c src/pcwin.mak src/vms_x_fix.h src/ziodevst.c src/smtf.c src/ttfinp.h src/x_.h src/gdevtifs.c src/gshsb.h src/smtf.h src/gdevtifs.h src/gximono.c src/fapiufst.c src/szlibe.c src/gxctable.c src/main.h src/gp_vms.c src/gp_iwatc.c src/ugcclib.mak src/gxctable.h src/gdev8bcm.c src/dwsetup.h src/gp_os9.c src/gdevbj10.c src/gxclipm.c src/gdev8bcm.h src/zpaint.c src/stdpre.h src/iplugin.c src/gxclipm.h src/gsgdata.c]

2006-03-12T20:26:06.745233Z leonardo

Fix : gx_path_merge_contacting_contours incorrectly released path segments.
DETAILS :

Bug 688591 "Garbager problem with -r72 ppmraw S2_Digitalproof-Forum_x3k.pdf".
Path segments are always allocated in stable memory.

EXPECTED DIFFERENCES :

None.

[src/gxpcopy.c]

2006-03-12T06:28:39.018444Z Ralph Giles

Set the executable property on the new search script.

[toolbin/search-svn-revs]

2006-03-12T02:47:35.883320Z Ray Johnston

Add a bash script to search for the first svn rev. that succeeds. Binary search
is used to decide which rev to try next.

DETAILS:

There is a 'usage' if no parameters are given. If Ghostscript exits with a
non-zero exit code, then the 'test' operand is not needed. For example,
if rev. 6170 corresponds to 8.53, and the current HEAD is 6647, then the
following will find the first revision which succeeds (6579):

search-svn-revs 6170 6647 'bin/gs -dBATCH -dNODISPLAY -dNOPAUSE -q coloraerial.pdf'

The gs output is captured in 'test.log' so that output can be examined (for
instance using 'grep') for status conditions where the gs exit code is not
useful.

Note that if this is run on casper, where the svn repository is local, then
changing the "svn co ..." line to from "svn+ssh://svn.ghostscript.com/" to
"file:///" will perform the checkout more quickly.

There is a guess made for GS_LIB which is concatenated to the previous definition
(if any), to ./lib:/home/regression/fonts which also works on casper or peeves.

[toolbin/search-svn-revs]

2006-03-10T16:20:52.667102Z leonardo

Fix : Shading fill applied a wrong path adjustment.
DETAILS :

Bug 688568 "Shading fill applies a wrong path adjustment".
See also the log message of the patch
http://ghostscript.com/pipermail/gs-cvs/2006-February/006379.html

1. Removes the OLD_CODE_COMPATIBILITY flag.
2. An indeterministic bug while computing fill adjustment
   when gx_cpath_intersect_with_params is called (indirectly) from gs_shfill.
3. gs_shfill didn't apply fill adjustment.

EXPECTED DIFFERENCES :

"464-01-fixed.ps" 
"gradmesh.ai" 
"S2_Digitalproof-Forum_x3k.pdf" 
"shading_prob_800.ps" 
"SmoothShading.pdf" 
"STEUER-RollingMesh 1(linear).ai" 
"STEUER-RollingMesh 2(radial).ai" 
"Testform.v1.0.2.pdf" 

[src/gxcpath.c src/gxfill.c src/gscolor3.c]

2006-03-10T08:27:48.551311Z leonardo

pdfwrite : A simplified implementation for ColorConversionStrategy, continued 4.

DETAILS :

Fixing a crash with imagemask.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfi.c]

2006-03-09T23:15:58.290889Z Dan Coby

Add a description of the files which were added for the 'named color' callback.

[doc/Develop.htm]

2006-03-09T22:59:58.579801Z Dan Coby

Set the Id keyword for the 'named color' files.

[src/gsnamecl.h src/gsncdemo.c src/gsnamecl.c]

2006-03-09T22:24:34.708728Z Alex Cherepanov

Add missing initialization to the streams allocated on the stack or in raw
memory.
Bug 688572

DETAILS:
The following code doesn't initialize all the fields in the stream structure.
stream s; sread_string(&s, ...); but it initializes enough fields to be mostly
working. The bug has been detected by Valgrind.


DIFFERENCES:
None

[src/gdevpdfo.c src/gxfcopy.c src/gdevpdfc.c src/gxshade.c src/gdevpdfu.c src/gdevps.c src/gxclpath.c]

2006-03-09T11:09:19.401813Z leonardo

Fix : Cygwin/gcc warnings.

DETAILS :

1. Removed unuseful variable in gstype42.c .
2. The compiler claims an unititialized variable due to its stupidity.
   Forced an initialization to quiet the misleading warning.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c src/gstype42.c]

2006-03-09T11:05:49.196378Z leonardo

pdfwrite : A simplified implementation for ColorConversionStrategy, continued 3.

DETAILS :

1. is_pattern2_allowed_in_stradegy was underimplemented.
2. Fixed the spelling in "stradegy".

EXPECTED DIFFERENCES :

None.

[src/gdevpdfg.c]

2006-03-09T10:54:46.558875Z leonardo

pdfwrite : A simplified implementation for ColorConversionStrategy, continued 2.

DETAILS :

This implements color conversion for images.

1. make_device_color_space is factored out from psdf_setup_image_colors_filter,
because the substituted color spase is needed for pdf_begin_write_image,
which works before installing the image colors filter.

2. In pdf_begin_typed_image the new variables pcs_device and pcs_orig
provide a right logics for the color space substitution.

EXPECTED DIFFERENCES :

None.

[doc/Ps2pdf.htm src/gdevpsdi.c src/gdevpsdf.h src/gdevpdfi.c]

2006-03-09T02:18:37.723914Z Alex Cherepanov

Work around an internal compiler error C1001 in MSVC 7.1.3088. 
Split expressionss with multiple type conversions into 2 expressions.
Bug 688579

DIFFERENCES:
None

[src/gdevpdfe.c]

2006-03-08T08:06:00.462700Z leonardo

Fix : MSVC8 warnings.

DETAILS :

Type cast.

EXPECTED DIFFERENCES :

None.

[src/imain.c src/zfile.c]

2006-03-08T01:15:50.548475Z Ralph Giles

Fix filename lookup in the %rom% device to match the lenth of the 
requested path, not just a common start.

[src/gsiorom.c]

2006-03-08T00:21:56.952083Z Ralph Giles

Fix the unix install to include Fontmap.GS. This was the cause of 
688567.

DETAILS:

The mkromfs utility uses the passed paths as templates for file 
enumeration, so EXTRA_INIT_FILES was added containing only
'Fontmap' and 'FAPI' as a shorthand for the collections "Fontmap*"
and "FAPI*". However, this variable is also used in unixinst.mak
as a literal list of files to install, and so only 'Fontmap' was
actually being installed.

This fix remains confusing, but in practice handles the install.

[src/int.mak src/unixinst.mak]

2006-03-07T05:19:23.913236Z Ray Johnston

Handle yet another PDF that Acrobat Reader accepts silently that does not
conform to the specification. In this case the /Subtype is /TrueType but
the font is in the /FontFile, not the FontFile2 or FontFile3 stream.
Bug #688585 for customer #780.

DETAILS:

As usual, we issue a descriptive pdfformaterror message complaining about
the non-conformance.

[lib/pdf_font.ps]

2006-03-06T21:55:46.036109Z Ralph Giles

Calculate the input image stride in the jbig2encode stream init 
procedure so the caller doesn't have to.

[src/sjbig2_luratech.c]

2006-03-06T19:54:28.434131Z Ralph Giles

Fix a problem with CMYK JPXDecode filter image streams.

DETAILS:

The Luratech jp2 decoder does not return a general image size for CMYK 
images (this seems to be a bug) or for images with subsampled 
components. Therefore we use the dimensions of the zeroth component
rather than querying the overall image (component -1).

When the JPXDecode filter implementation is extended to pass the 
required Colorspace information from the image dictionary, it should
also pass the specified width and height of the image, since this
is the actual specification the filter must produce data for.

[src/sjpx_luratech.c]

2006-03-05T21:28:16.082867Z Ray Johnston

Move init files on %rom% device to lib directory prefix (%rom%lib/). This
prefix is used independent of the host OS. Requested by Ralph and Stefan.
The -d destination prefix might be useful for adding other directories
from other source directories to explicit locations in the %rom% device.

[src/imain.c src/mkromfs.c src/int.mak]

2006-03-02T14:20:22.695510Z Ray Johnston

Increase the MSVC compiler heap size to allow compilation of large initializers
for the %rom% device. The current setting worked with all Resource files, 35 PS
Type 1 fonts and 17 CJK fonts, the largest of which was the 12.2Mb MOEKai-Regular.

[src/msvccmd.mak]

2006-03-01T20:51:32.316771Z Ray Johnston

Fix opening of lib files so that %rom% files can be found. Previous code
only worked for default (os) device. Change iccinit1 so that gs_init.ps
is opened with .libfile allowing gs_init.ps to be changed even when
COMPILE_INITS=1. Remove another vestige of the old 'static resource'
approach that is no longer needed by COMPILE_INITS=1.

DETAILS:

This was a moderate amount of surgery, but was functionally extracted
from the old lib_fopen_with_libpaths and merged into lib_open_file
which now returns a PS file object. The lib_fopen now gets the FILE *
pointer from the stream structure for use in processing @ files.

Since the -I paths and the environment GS_LIB paths precede the
%rom% device (present when COMPILE_INITS=1) it is now eay to supersede
the init files, cidfmap, Fontmap, during development or debug, so 
there is little downside to running COMPILE_INITS=1 other than making
the executable bigger (6.6Mb vs 3.3Mb with the current CMaps). Defining
the GenericResourceDir string (using -s) on the command line also still
works since the PS code in iccinit1.c only sets this if it is not
predefined. The upside to having COMPILE_INITS=1 is that the gs
executable is fully self contained and does not need to be 'installed'.

If we built in the fonts (in the Resource/Fonts directory) then even
these aren't needed externally. It might reduce some of the common newbie
problems using Ghostscript. Then the executable grows to a healthy 9.9Mb
(fonts don't compress hardly at all currently).

EXPECTED DIFFERENCES.

None.

[src/imain.c lib/gs_res.ps src/iccinit1.c src/files.h src/zfile.c]

2006-03-01T19:23:16.175578Z Ray Johnston

Add missing files that were part of %rom% implementation.

[doc/Develop.htm]

2006-03-01T02:23:08.031658Z Dan Coby

Clean up for the last commit for 688575.  The previous commit had problems with the gcc compiler.

[src/gsnamecl.h]

2006-03-01T01:53:29.361859Z Dan Coby

Implement enhancement 688575 Add a cal back mechanism for support of PANTONE
or other special spot colors

DETAILS:

Ghostscript currently does not current have a mechanism for special handling 
of PANTONE or other special spot colors.

Currently all spot colors, in either a DeviceN or a Separation color space, 
are either processed via the alternate tint transform for the color space, or 
treated as a separation (as in the tiffsep device).

Obtaining the proper appearance of PANTONE or other special sets of spot 
colors, when custom inks are not available, usually depends upon values which 
are specific the devices inks, media, etc.  This is not usually handled 
properly by the tint transform function.

This enhancement adds a call back mechanism to allow custom processing of 
DeviceN and Separation color spaces by the calling application.

A description of the implementation is present in the comment block at
the start of src/gsnamecl.c.  An example implementation is provided in
src/gsncdemo.c.  The example implemenation shows how to interface with
the various Ghostscript structures and routines.  The example implementation
only contains a few demo colors.

The entire implemenation is conditionally compiled by a switch called
ENABLE_NAMED_COLOR_CALLBACK in src/gsnamecl.h.  Currently this switch
is set to disable the implementation.

[src/lib.mak src/gscspace.h src/gxistate.h src/gsnamecl.h src/gsdparam.c src/gsncdemo.c src/int.mak src/gxdevice.h src/gscsepr.c src/gsnamecl.c src/gscdevn.c src/gxdevcli.h]

2006-02-28T21:52:39.567783Z Ralph Giles

Project the WIN32 assembly from compilation on WIN64.

[jasper/src/libjasper/jpc/jpc_qmfb.c]

2006-02-28T21:21:30.311038Z Ralph Giles

Fix a problem with the jasper assembly code. Bug 688545.

[jasper/src/libjasper/jpc/jpc_qmfb.c]

2006-02-28T20:51:29.732995Z Ralph Giles

Rough support for a JBIG2 encoder stream using the Luratech 
implementation.

[src/sjbig2_luratech.h src/sjbig2_luratech.c]

2006-02-28T05:45:20.159028Z Ralph Giles

Report error codes returned by the lwf_jp2 library to allow better bug 
reports.

[src/sjpx_luratech.c]

2006-02-28T01:17:35.281917Z Ray Johnston

Remove deprecated module. No longer used for MS Windows.

[src/gp_msio.c]

2006-02-27T21:15:43.124755Z Ralph Giles

Output more debugging information with -Zw instead of switching on the 
special JBIG2_DEBUG preprocessor symbol.

[src/sjbig2.c src/sjbig2_luratech.c]

2006-02-24T21:07:18.367421Z leonardo

Fix : A slow rendering of a colored halftone (2nd attempt).

DETAILS :

Bug 688537 "A very slow rendering to spotcmyk".

The first attempt caused a regression with pkmraw and
has been undone. This patch accounts pkmraw effects,
which are explained below as "Auxiliary changes".

This patch creates a special branch in gx_default_fill_path 
for filling a path with a colored halftone. 
It installs a clipper device and then renders 
a rectangle through it, using the halftone color painting method immediately.

Auxiliary changes : 
The new branch in gx_default_fill_path calls gx_cpath_intersect
for intersecting the filling path with the clipping path.
The latter calls gx_default_fill_path again for 
converting a path into a rectangular clip list. 
Now we pass the fill adjastment parameters 
of the main gx_default_fill_path invocation
to the inner invocation.
Doing so because we need the intersection to be closer to
what the regular algorithm fills. The new function
gx_cpath_intersect_with_params works for that.
Particularly it causes dropout prevention to work 
for clipping, when a character is filled with a halftone.

The clip list accumulator device now sets
gx_device::memory to a real memory manager.
Before now it was NULL. The new code
uses it to allocate working data for the dropout prevention code.

Besides that, gx_cpath_intersect_with_params
now applies fill adjustment in the special 
branch for a rectangular path intersection.

The flag OLD_CODE_COMPATIBILITY minimizes raster differences 
for easier testing. It should be removed later,
because we believe that the old code is not perfect :
it doesn't pass fill adjustment through gx_cpath_intersect
while filling with a shading color. 

EXPECTED DIFFERENCES :

None.

[src/lib.mak src/gxcpath.c src/gxacpath.c src/gxpath.h src/gxfill.c src/gzacpath.h]

2006-02-24T16:14:12.132166Z leonardo

Type 1 hinter : More improvements (continued 2).

DETAILS :

An indeterministic bug in the last patch.

EXPECTED DIFFERENCES :

normal 72 dpi :
"Bug687845.ps" 
"japan.ps"

normal 300 dpi :
Bug687889.pdf 

pdfwrite 72 dpi :

"Bug687603.ps" 
"Bug687845.ps" 
"Bug687889.pdf" 
"japan.ps" 
"NECPNTD.pdf" 
 
pdfwrite 300 dpi :
"Bug687698.ps" 
"Bug687889.pdf" 
"japan.ps" 

[src/gxhintn.c]

2006-02-23T17:27:22.487919Z Ray Johnston

FIx output format handling for -sOutputFile string. Thanks to Gh Savulescu
for the detailed analysis and patch. Bug 687621 for customers 670 and 770.
--This line, and th se below, will be ignored--

M    src/gsdevice.c
M    src/gdevupd.c
M    doc/Use.htm

[src/gdevupd.c doc/Use.htm src/gsdevice.c]

2006-02-23T07:18:29.475220Z Dan Coby

Fix for 688551 Need to process transparency in annot appearance streams.

DETAILS:

The fix involves 2 pieces.

1.  Add logic to pageusestransparency to detect if transparency is used
inside of an annotation.  As part of this effort, the logic for detecting
the use of transparency inside of an ExtGState dict was separated into a
separate procedure.

2.  Move the drawing of annotations was moved into showpagecontents.  This
was done since there so that the draw annotation logic is inside of the
push/pop pdf 1.4 transparency device logic.

[lib/pdf_main.ps]

2006-02-23T01:02:15.987199Z Ray Johnston

Remove module that is no longer used by newer COMPILE_INITS method.

[lib/gs_stres.ps]

2006-02-22T23:47:17.158224Z leonardo

Fix (gxfill) : Unwinding the revision 5699 change due to regressions.

DETAILS :

The patch
http://ghostscript.com/pipermail/gs-cvs/2006-February/006361.html
caused regressions with pkmraw -r72 154-01.ps in
http://ghostscript.com/pipermail/gs-regression/2006-February/001856.html

This reopens the bug
Bug 688537 "A very slow rendering to spotcmyk".

Note that another change was applied to gxfill.c between 5699 and now.

EXPECTED DIFFERENCES :

Should fix 2006-02-22 regressions.

[src/gxfill.c]

2006-02-22T21:28:01.105887Z Ralph Giles

Document in the generated gsromfs.c which target endianness the file
was built from, to make it easier to track down the source of non-
portability.

[src/mkromfs.c src/int.mak]

2006-02-22T19:28:07.197474Z Ray Johnston

Fix mkromfs to generate 32-bit big_endian values in memory, not native
byte ordering. Corresponding change in gsiorom.c to always read big_endian
32-bit values.

[src/mkromfs.c src/gsiorom.c]

2006-02-22T18:01:07.387840Z leonardo

Fix (gxfill) : The scanline algorithm could miss a spot boundary.

DETAILS :

Bug 688558 "Incorrect filled path rendering with .2 setflat".

1. merge_ranges wrongly computed the curve end point
   when the curve is scanned in the backward direction
   in gxfill.c (the real bug).

2. Propagates error code from step_al in gxfillsl.h
   (a minor fix).

3. Fixes a typoe in a comment in gxpflat.c .


EXPECTED DIFFERENCES :

None.

[src/gxfill.c src/gxpflat.c src/gxfillsl.h]

2006-02-22T12:59:54.243717Z leonardo

Fix : An MSVC warning and C style in a recent patch.

EXPECTED DIFFERENCES :

None.

[src/imain.c]

2006-02-22T12:10:10.472356Z leonardo

Type 1 hinter : More improvements (continued 2).

DETAILS :

Define PRESERVE_STEM_SLANT for easier experimenting with 
the "preserve stem slant" feature.
See comment in code.

This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c]

2006-02-22T07:28:25.271395Z Ray Johnston

Remove CWD_PREFIX from makefiles -- mkromfs file list is reordered. Add
the %rom% device to the LIBPATH list in imain.c so that .libfile works.
Also export print_resource_usage for use in non-debug builds. Thanks to
Ralph Giles for the suggestions.

[src/openvms.mak src/macosx.mak src/int.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/bcwin32.mak src/imain.c src/ugcclib.mak src/Makefile.in src/unix-gcc.mak src/msvc32.mak src/iccinit1.c src/macos-mcp.mak src/watclib.mak]

2006-02-22T04:53:42.526904Z Ralph Giles

Document the pexit_code and user_errors arguments to gsapi_run_string*() 
and provide an example for how to parse a PDF file from inside the 
interpreter. Bug 688549.

[doc/API.htm]

2006-02-22T01:41:23.102136Z Ralph Giles

Remove the redundant Fixed type from the internal freetype code and 
replace uses of it with the TT_Fixed type. The un-namespaced version
conflicts with system headers on MacOS.

[src/ttfsfnt.h src/tttypes.h src/ttfmain.c]

2006-02-22T01:38:35.156952Z Ralph Giles

Use the uint32_t stdint type for the compiled initialization data 
representation. The previous code used 'unsigned long' but assumed
this type was 32 bits, which isn't true on all platforms.

[src/mkromfs.c src/gsiorom.c src/gsiorom.h]

2006-02-21T22:24:25.799346Z Ray Johnston

Fix missing declaration on Windows platforms.

[src/mkromfs.c]

2006-02-21T22:01:15.379976Z Ray Johnston

Add a missing file from the commits for rev 6600. This was a new file
that was not 'added' before that commit.

[src/gsiorom.h]

2006-02-21T21:29:07.026481Z Ray Johnston

Implement %rom% IODevice and use it for the COMPILE_INITS=1 builds. Data
is compressed and can include fonts as well as lib init files, Resource
directories and other. The (%rom%) path is inserted as the first path on
the LIBPATH list when COMPILE_INITS=1. The default GenricResourceDir is
set to %rom%Resource/ unless the command line sets -sGenericReourceDir.
Bug 687485.

DETAILS:

See gsiorom.* and mkromfs.c for details of the %rom% structure. The inital
implementation creates a string buffer for the entire file (block by block)
decompression is not yet implemented (a new stream type).

The %rom% IODevice is not PostScript specific so it could be used by non
PS interpreters (GhostPCL) but the creation of gsromfs.c by mkromfs needs
to be performed elsewhere (hint in src/lib.mak).

NOTES:
Tested on unix and Windows. Mac, OS/2 and VMS will need attention as will
non-MSVC tool chains. Since this replaces the old COMPILE_INIT method
don't use COMPILE_INTIS=1 on those platforms unless you are working on
fixing problems or just feel lucky.

The insertion of the %rom% device as the first path in the LIBPATH list
will make changing initfiles during debug more cumbersome, but using 
COMPILE_INITS=1 is really not intended for debugging or development anyway.

EXPECTED DIFFERENCES:

None. (we don't build with COMPILE_INITS).

[src/openvms.mak src/mkromfs.c src/gsiorom.c src/macosx.mak src/int.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/lib.mak src/bcwin32.mak lib/winmaps.ps src/ugcclib.mak src/gs.mak src/Makefile.in src/iccinit1.c src/msvc32.mak src/unix-gcc.mak src/unix-aux.mak src/macos-mcp.mak src/unixinst.mak src/msvctail.mak src/watclib.mak lib/gs_init.ps]

2006-02-21T13:43:42.400991Z leonardo

Fix : A slow rendering of a colored halftone.

DETAILS :

Bug 688537 "A very slow rendering to spotcmyk".

This patch creates a special branch for filling a path with
a colored halftone. It installs a clipper device and then renders 
a rectangle through it, using the halftone color painting method immediately.

We're not sure, which color types should go through this branch.
Passing it to our color specialist for review.
Also we're not sure how to get test cases for this branch.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c]

2006-02-21T13:31:27.980844Z leonardo

Fix (shadings) : Save C stack space with removing rudimentary data.

DETAILS :

As a rudiment of the old shading algorithm,
mesh_fill_state_common defined a big data field,
which was placed on C stack and vever accessed.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.h]

2006-02-21T12:54:34.181498Z Alex Cherepanov

Repair incorrect ToUnicode CMap streams that have no CMapName key.
Bug 688517

DETAILS:
Ghostscript has been writing incorrect ToUnicode CMap without CMapName into
the PDF since version 8.10 (rev. 3611) . This bug is fixed in version 8.54
(rev. 6201).

DIFFERENCES:
None

[lib/pdf_font.ps doc/Ps2pdf.htm]

2006-02-21T12:42:26.666806Z leonardo

Type 1 hinter : More improvements (continued).

DETAILS :

1. Adjusts t1_hint_range::end_pole if it refers an offcurve pole.
2. Regularizes the hint range adjustment logics (an algorithmically equivalent change).
3. The new function t1_hinter_fix_missed_flex works when a glyph doesn't define flex hints.
   Particularly it works for True Type fonts. 
   It recognizes low curvity boundaries of a flex-like shape and size, 
   and replaces them with a straight segment.
   See comments in code.
   Bug 688552 "A poor grid fitting when a flex hint is missing.".
4. When t1_hinter_fix_missed_flex works, we adjust those stem hint coordinates,
   which point to poles of a flex being unbended.
   For more information see comment in t1_hinter__adjust_stem_hints_by_missed_flex.
4. Improves the logic for obtaining a vdtrace device context in gzspotan.c .
5. t1_hinter__align_stem_poles summarizes alignment from all hint ranges.
   The old code does not do by a mistake.
6. t1_hinter__align_stem_poles now prefers hints, which have both sides applied.
7. The alignment at the stem middle is now applied only to stems,
   which are strongly vertical or horizontal in the design space.
   See comment in t1_hinter__find_stem_middle.

EXPECTED DIFFERENCES :

Massive : 97 of 484 comparefiles.

[src/gxhintn.c src/gxhintn.h src/gzspotan.c]

2006-02-20T07:30:32.227346Z Dan Coby

Addition to the fix for 688177 Eliminate the 64 bit pixel size limit.

DETAILS:

A one line change was missed in the previous commit for this fix.
Without this change, the maximum numbers of is 16.

[src/gxcindex.h]

2006-02-18T18:37:24.764551Z Ray Johnston

Implement yet another hack for an invalid PDF file that Adobe handles. If
a parameter is missing from the Page tree, check the Root Catalog. This case
had MediaBox in the Root dict, but not anywhere in the Pages tree. Bug 688562
for customer 670.

DETAILS:

MicroPatent probably misinterprets the spec where it mentions "For example,
a document might specify the same media box for all of its pages by including
a MediaBox entry in the root node of the page tree." thinking that the Root
Catalog is the Root of the Page tree, rather than the /Pages object from the
Root.

As is usual, I issue a pdfformaterror Warning when this is detected.

EXPECTED DIFFERENCES:

None.

[lib/pdf_main.ps]

2006-02-17T20:23:52.826051Z Ralph Giles

Update the eventone screening url. artofcode.com has been taking by 
spammners.

[src/rinkj/evenbetter-rll.c]

2006-02-17T07:12:46.743338Z Dan Coby

Fix for 688560 DeviceN with InDesign gradient causes segmentation fault.

DETAILS:

I am unable to reproduce the reported seg fault.  This patch fixes the
/rangecheck in --.sethalftone5--

The file was specifying a Gray halftone and also specifying the
SeparationORder parameter to select only a Cyan colorant.  This
was creating confusion in the halftone install logic.  The rangecheck
was being generated when the Gray halftone was being confused as a
second Default halftone.

The fix consists of adding a check for the situation in which the
device indicates that a color is supported by the device but not
being used because of the SeparationOrder parameter.  Note:  There
was already one check in the procedure for this situation but a
second check is needed to handle the 'treat gray like black' etc.
cases.

[src/gsht.c]

2006-02-17T04:10:07.505527Z Alex Cherepanov

Fix recognition of executable names "if" and "ifelse" as valid operations in
the calculator function. Bug 688547.

DIFFERENCED:
None

[src/zfunc4.c]

2006-02-16T19:53:28.400151Z leonardo

Fix (pdfwrite) : Propagate error code from s_DCTE_put_params (continued).

DETAILS :

Remove an obsolete comment.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdu.c]

2006-02-15T07:33:41.943841Z Ralph Giles

Enable $Id keyword substitution on the new luratech integration source 
files.

[src/sjbig2_luratech.h src/sjpx_luratech.h src/sjbig2_luratech.c src/ldf_jb2.mak src/lwf_jp2.mak src/sjpx_luratech.c]

2006-02-15T07:30:40.721233Z Ralph Giles

Update the "RCS" keyword check script to recognize SVN style as well as 
CVS style Id keyword lines. Bug 688554.

[toolbin/tests/check_source.py]

2006-02-15T07:26:26.954211Z Ralph Giles

Turn on keyword substitution. This is confusing, since the script also 
outputs a $Id: Details8.htm 6778 2006-05-17 19:38:55Z giles $ line for the makefile it generates, but doesn't cause
problems in practice.

[toolbin/gen_ldf_jb2.py]

2006-02-13T20:28:55.328420Z leonardo

Type 1 hinter : Remove dead development branches.

DETAILS :

This change is syntactically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c src/gxhintn.h]

2006-02-13T00:05:28.577164Z leonardo

Type 1 hinter : More improvements.

DETAILS :

1. Account StemShapH, StemShapW according to Adobe Technical Note #5049.
   The new array stem_snap_vote works for that.
2. Pixel size was wrongly computed with anisitropic CTM.
3. pixel_ox, pixel_oy were mixed with a transposed glyph.
   Fully reconsider OPPOSITE_STEM_COORD_BUG_FIX and remove it.
4. t1_hinter__align_stem_commands sometimes started pole enumeration
   with an off-curve pole.
5. Hint range was wrongly computed for some glyphs.
6. Dotsection didn't work at all.
7. Implements an opposite stem boundary length calculation,
   and accounts it for resolving alignment conflicts.
   new fields boundary_length* work for that.
8. Removed t1_hint_range::contour_index because it worked wrongly.
   Use t1_pole::contour_index instead.
9. A bug in the initialization of max_stem_snap_count :
   the initial value was too small, causing an extra memory allocated.

Bug 687654 "t1_hinter__find_best_standard_width() always returns 0".
Bug 688553 "A poor grid fitting when stems conflict".

EXPECTED DIFFERENCES :

Massive : 343 of 484 comparefiles.

[src/gxhintn.c src/gxhintn.h]

2006-02-12T17:08:11.734787Z Ralph Giles

Correct the accidentally changed hardwired install prefix.

[toolbin/tests/run_nightly]

2006-02-11T23:45:18.286490Z Ralph Giles

Have the update_ghostscript function return the new SVN revision number 
and include it at the head of the report for clarity. Also, when the
complete report is trimmed from length, indicate so. Bug 688541.

[toolbin/tests/run_nightly]

2006-02-11T23:42:25.162459Z Ralph Giles

Also add the regression log file required by run_nightly to the example 
config file.

[toolbin/tests/testing.cfg.example]

2006-02-11T23:15:56.623144Z Ralph Giles

Correct a cut-and-paste error. The get_baselines script was listed under 
the diff_script key in the example config file.

[toolbin/tests/testing.cfg.example]

2006-02-10T14:46:51.888781Z leonardo

Fix (pdfwrite) : Updating the list of standard CMap names.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtc.c]

2006-02-09T23:00:19.858380Z leonardo

Fix (PDF interpreter) : When emulating the text rendering mode 3, don't render the text to the target device.

DETAILS :

Bug 688534 "Text doubled in produced PDF".

The old code executed 'charpath' with the target device just to move current point.
It caused too heavy effect to the target device.
Replacing with a lighter implementation.

Strongly speaking, this patch is not necessary for the bug 688534,
because the last patch fixed the undesirable effect for pdfwrite.
But we prefer to fix the PDF interpreter to exclude 
the unpleasant effect for other high level devices in general.

EXPECTED DIFFERENCES :

None.

[lib/pdf_ops.ps]

2006-02-09T23:00:06.441182Z leonardo

Fix (pdfwrite) : Handle charpath with default implementation.

DETAILS :

Bug 688534 "Text doubled in produced PDF".

The old code handled 'charpath' as a high level operation,
so that the effect to Postscript interpretation erroneusely appears empty,
and the text was erroneusely written to the PDF output.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c]

2006-02-09T18:03:38.118376Z leonardo

Fix (pdfwrite) : Propagate error code from s_DCTE_put_params.

DETAILS :

Bug 688544 "Error: /ioerror in --image--".

The old code erroneusely applied DCT compression to DeviceN colors,
causing an ioerror when the number of colorants is greater than 4.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdu.c]

2006-02-09T16:28:53.914553Z leonardo

Fix : Unwinding the change from rev 6573 to 6574 due to a pdfwrite problem.

DETAILS :

That change caused glyphs to dissapper when rendering a file conferted with pdfwrite.
The effect may be indeterministc.
As we could figure out, the change causes a wrong length of OS/2 table
to be written into embedded True Type fonts.
The problem happens when re-distilling 01_001.pdf, 159.pdf.
We didn't test all files.
Will reopen the bug 688536.

EXPECTED DIFFERENCE :

If a regression appeares with pdfwrite, it should recover.

[src/gxttf.h src/gdevpsft.c]

2006-02-09T15:18:52.242524Z leonardo

pdfwrite : A simplified implementation for ColorConversionStrategy, continued.

DETAILS :

Bug 687628 "ProcessColorModel /DeviceCMYK does not work".

This is a preliminary implementation of ColorConversionStrategy, 
the values UseDeviceIndependentColor and UseDeviceIndependentColorForImages. 
It also defines a new Ghostscript-specific value Gray.
We don't care about performance due to low demand to this feature.
Due to same reason a systematical testing was not done
except regression testing with the default value LeaveColorUnchanged.
We would appreciate users' help in testing new features.

The value UseDeviceIndependentColorForImages actually works as UseDeviceIndependentColor.

The old Ghostscript-specific value UseDeviceDependentColor
is now depricated. It causes a warning is printed to stderr,
and the valuse automaticly substitutes with sRGB, CMYK or Gray
depending on ProcessColorModel.

See also the documentation change included in the patch.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfp.c doc/Ps2pdf.htm src/gdevpdfc.c src/gdevpdfg.c src/gdevpsdf.h]

2006-02-09T13:16:28.615804Z Alex Cherepanov

Upgrade ttf_OS_2_t structure to support v.2 (96-byte) OS/2 table.
Bug 688536.

DETAILS:
We don't use new fields in the 96-byte structure and continue to
create 86-byte structures. The extra space is used as a buffer when
we copy the structure intact.

DIFFERENCES:
None

[src/gxttf.h src/gdevpsft.c]

2006-02-09T06:03:12.845053Z Ray Johnston

Clamp bbox rectangle to avoid q

[src/gdevp14.c]

2006-02-08T22:41:30.031403Z Ralph Giles

Remove two source files which in the normal build preprocess to nothing 
from our makefile. This means we can't buid with JB2_TEST, but the empty
modules cause an error on the MSVC build.

[src/ldf_jb2.mak]

2006-02-08T22:24:31.339253Z Ralph Giles

Add conditionals to the MSVC makefile to simplify switching between the 
Luratech and normal builds. With this patch it is sufficient to specify 
JPX_LIB=luratech and JBIG2_LIB=luratech on the nmake command line.

[src/msvc32.mak]

2006-02-08T20:30:10.070290Z Alex Cherepanov

Calculate the last byte of the character code modulo 256 to prevent the final
value exceed 256 and cause an rangecheck error.
Bug 688535.

DETAILS:
The overflow and the proposed adjustment can happen only when the
last element is 0xFF. 

The last value of the string is not used but discarded at the end of the loop.
So the adjustment has no effect other than suppressing the error with
the minimal changes in the existing code.

EXPECTED DIFFERENCES:
None

[lib/pdf_font.ps]

2006-02-08T19:57:10.364799Z leonardo

pdfwrite : A simplified implementation for ColorConversionStrategy values CMYK and sRGB .

DETAILS :

Bug 687628 "ProcessColorModel /DeviceCMYK does not work".


This is a preliminary implementation of ColorConversionStrategy, the values CMYK and sRGB . 
We don't care about performance due to low demand to this feature.
Therefore some objects, which use an incompatible color space, 
are converted to low level objects.

The new parameter values were not systematically tested due to low demand.
We would appreciate users' help in testing them.

For now the parameter values UseDeviceIndependentColor and UseDeviceIndependentColorForImages 
work as LeaveColorUnchanged, but the effect of UseDeviceIndependentColor
may be obtained with specifying -dUseCIEColor .

When specifying CMYK or sRGB, the value of ProcessColorModel must be 
DeviceCMYK or DeviceRGB cvorrespondingly.

The color conversion to sRGB is performed with the default color conversion,
which Ghostscript uses to convert to DeviceRGB color model.
Therefore color transfer may be imperfect.
Conversion to CMYK uses the default conversion also.

EXPECTED DIFFERENCES :

None.

[src/gsptype2.c src/gdevpdfp.c src/gdevpdfc.c src/gsptype2.h src/gdevpdfg.c src/gdevpsdf.h src/gdevpdfg.h]

2006-02-08T16:17:13.078988Z Alex Cherepanov

Removes hexadecimal conversion from the code and pass the encrypted
part of the type 1 font to eexec operator intact in all cases.
Bug 688385 from customer 1110.

DETAILS :
The PDF specification states that Type 1 fonts always use binary form of
the encrypted part, but some PDF producers embed fonts with hexadecimal
encoding unchanged. The standard eexec operator recognizes and decodes
them transparently.

The only case that is not handled is a binary-encoded file that looks like a
hexadecimal encoding to eexec. This case has not been observed in the wild. 

EXPECTED DIFFERENCES :
None

[lib/pdf_font.ps]

2006-02-08T13:52:40.832268Z Alex Cherepanov

Consume EOD character in the Hex stream when the stream length is > 0.
Bug 688512 from customer 232.

DETAILS :
This makes our StartData procedure to be compatible with Distiller and CPSI.
It is not clear from the TN #5014 whether an empty Hex stream should have an
EOD character but Adobe doesn't accept it. For non-empty streams they
appear to use an /ASCIIHexDecide filter. Our previous implementation used
readhexstring operator, which didn't consume the trailing EOD characters by
itself and required special code to move the current file past the EOD.

EXPECTED DIFFERENCES :
None

[lib/gs_cidfn.ps]

2006-02-08T06:26:06.073966Z Ralph Giles

Copy the jasper-1.701.0-gs5 release tag into the Ghostscript trunk.

[jasper]

2006-02-08T06:25:15.908588Z Ralph Giles

Remove the current jasper code to make way for the 1.701.0-gs5 release.

[jasper]

2006-02-07T12:19:02.250776Z leonardo

Fix (pdfwrite) : 'shfill' doesn't write a shading's Background.

DETAILS :

Bug 687676 "pdfwrite : shading background can erroneusly appear".

1. pdf_put_shading_common now depends on gs_pattern2_instance_t::shfill.
2. gx_dc_pattern2_save_dc now stores gs_pattern2_instance_t::shfill
   to allow pdf_reset_color to account it with gx_hld_saved_color_equal.

EXPECTED DIFFERENCES :

A progression in pdfwrite with hsadings :

464-01-fixed.ps 
483-01.ps
483-05-fixed.ps

[src/gsptype2.c src/gsdcolor.h src/gdevpdfv.c]