DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 
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.62 (2008-02-29)

This version is the next in our line of scheduled semi-annual releases.

There were approximately 55 bugs fixed since version 8.61. Some fixes and improvements of note were:

COMPILE_INITS=1 was broken in 8.61 and now works as expected.

Fonts are now distributed in the Resource/Font directory and will be included in the executable if COMPILE_INITS=1

The tiffsep device was fixed for using more than 8 colorants.

Shadings, overprinting and transparency were optimized and are substantially faster than in 8.61, particularly for large format or high resolution rendering when using the 'clist' banding mode.

Changes were made to prevent near unbounded growth in memory usage and corresponding performance problems on a few test cases.

The 'pdfwrite' device was improved to fix some compatibility issues with PDF/A and to improve some font embedding and other issues.

The 'ht_ccsto.ps' Stochastic Threshold array was completely changed to be more useful. The values in the threshold array were inverted, so the number of 'light' colors was limited and using it generally caused prints that were too dark.

The 'runpdfbegin', 'dopdfpages' and 'runpdfend' PostScript pseudo-operators that were inadvertently removed in 8.61 were restored. This also restored the functionality of toolbin/pdf_info.ps to display PDF creator stats, fonts used and page sizes.

The halftone tile cache sizes and cache effectiveness were improved to help the performance when tiling with large cells or threshold arrays.

The following bugs were open at the time of release:

465936, 578865, 626295, 686747, 686853, 687011, 687146, 687257, 687271, 687280, 687295, 687327, 687514, 687520, 687531, 687608, 687650, 687674, 687677, 687695, 687697, 687702, 687721, 687728, 687729, 687796, 687805, 687814, 687850, 687903, 687904, 687957, 687974, 688007, 688022, 688026, 688032, 688036, 688042, 688058, 688061, 688064, 688066, 688075, 688081, 688095, 688129, 688130, 688151, 688152, 688159, 688166, 688184, 688187, 688207, 688215, 688227, 688239, 688269, 688280, 688288, 688317, 688318, 688320, 688333, 688342, 688358, 688359, 688360, 688361, 688363, 688372, 688378, 688386, 688387, 688389, 688395, 688413, 688427, 688428, 688436, 688437, 688440, 688446, 688475, 688483, 688500, 688515, 688517, 688528, 688533, 688539, 688540, 688542, 688543, 688557, 688580, 688581, 688588, 688601, 688604, 688605, 688610, 688615, 688616, 688619, 688627, 688636, 688638, 688646, 688651, 688653, 688655, 688673, 688674, 688696, 688699, 688709, 688710, 688714, 688717, 688728, 688736, 688739, 688757, 688770, 688774, 688778, 688796, 688797, 688807, 688811, 688813, 688815, 688829, 688843, 688846, 688876, 688908, 688918, 688919, 688926, 688928, 688933, 688942, 688943, 688952, 688958, 688969, 688976, 688986, 688990, 688992, 688999, 689003, 689011, 689013, 689014, 689022, 689025, 689028, 689031, 689040, 689044, 689046, 689048, 689057, 689058, 689080, 689081, 689090, 689093, 689094, 689098, 689111, 689116, 689128, 689129, 689130, 689133, 689136, 689137, 689138, 689145, 689146, 689148, 689150, 689153, 689154, 689159, 689161, 689164, 689172, 689174, 689181, 689184, 689195, 689198, 689206, 689209, 689210, 689222, 689224, 689230, 689236, 689246, 689247, 689248, 689252, 689253, 689264, 689279, 689280, 689281, 689283, 689289, 689290, 689291, 689304, 689305, 689308, 689313, 689331, 689335, 689340, 689341, 689343, 689358, 689361, 689363, 689364, 689367, 689370, 689373, 689376, 689378, 689396, 689402, 689412, 689418, 689419, 689422, 689428, 689431, 689438, 689439, 689440, 689444, 689445, 689448, 689450, 689451, 689456, 689460, 689462, 689463, 689469, 689471, 689476, 689484, 689487, 689488, 689489, 689490, 689498, 689499, 689500, 689502, 689507, 689509, 689510, 689512, 689514, 689515, 689516, 689518, 689521, 689522, 689532, 689534, 689535, 689538, 689542, 689543, 689546, 689547, 689549, 689552, 689554, 689557, 689559, 689560, 689561, 689563, 689566, 689567, 689573, 689574, 689579, 689581, 689583, 689585, 689588, 689591, 689592, 689595, 689598, 689601, 689606, 689607, 689609, 689610, 689618, 689621, 689623, 689627, 689628, 689632, 689636, 689637, 689641, 689649, 689652, 689653, 689654, 689657, 689658, 689659, 689663, 689666, 689668, 689669, 689673, 689674, 689675, 689676, 689677, 689681, 689682, 689684, 689685, 689687, 689689, 689690, 689691, 689692, 689693, 689697, 689698, 689699, 689702, 689704, 689705, 689709, 689710, 689711, 689712, 689713, 689715, 689716, 689721, 689722, 689723, 689725, 689727.

Incompatible changes

Not strictly a compatibility issue, but the default URW (GPL) fonts are now distributed in the Resource/Font/ path which can increase the number of file handles open for PostScript that opens all of the resources. Also the size of the %rom% rom file system within the executable when using COMPILE_INITS=1 is larger by the amount needed for the fonts.

Also not strictly incompatible, but some alternate fixed-point code was stripped out, so FPU_TYPE and other FPU related makefile macros are gone or don't cause any difference in the code generated. Also the 'USE_ASM' macro was removed, since we expect modern compilers to do sufficient optimization.

Some old (deprecated) "helper" scripts were removed: gsindent, gssubst, many2pdf.tcl, and pre.

The unused 'cmap' (special color mapping) and 'ropc' devices were removed from the distribution.

The 'ht_ccsto.ps' Stochastic Threshold array was completely changed to be more useful. The values in the threshold array were inverted, so the number of 'light' colors was limited and using it generally caused prints that were too dark. This is an improvement, but incompatible in that anyone using it previously would see much different grays/ colors.

The SYSTEM_CONSTANTS_ARE_WRITABLE compile time define was removed as was the "EXTEND_NAMES" makefile macro (still accessible using a compiler flag define).

Changelog

2008-02-29T23:59:31.476236Z Ray Johnston

Fix typo that caused unbalanced 'q' 'Q' operators in PDF's (caused by
rev 8501). Bug 689728.

[src/gdevpdfi.c]

2008-02-29T22:27:59.143965Z Ralph Giles

Release notes for the 8.62 release. Thanks to Ray Johnston for compiling these.

[doc/News.htm]

2008-02-29T20:49:04.253927Z Ralph Giles

Remove some C++ style comments.

[src/siscale.c src/gdevijs.c]

2008-02-29T20:49:02.503198Z Ralph Giles

Add some new files to the documentation tree.

[doc/Develop.htm]

2008-02-29T20:47:52.884152Z Ralph Giles

Update product name, copyright and release dates.

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

2008-02-29T18:53:14.162723Z Ray Johnston

Add default FontResourceDir needed when COMPILE_INITS=1 is used so
that the fonts from Resource/Font in the distribution directory that
are built into %rom%Resource/Font/ will be found.

[src/iccinit1.c]

2008-02-29T08:13:08.227205Z Ray Johnston

Fix COMPILE_INITS=1. Note the next commit to the PCL tree will combine
with this one, but we can't commit to both trees atomically.

DETAILS:

Tested with Windows and linux. Needs OS/2 testing. Other build systems
may have bit rotted, and I don't hav them to test. Some of the changes
here are to allow working with a PCL or XPS only build where the PS
interpreter is not used/needed.

I noticed that the default systemparam value for FontResourceDir isn't
getting et to %rom$Resource/Font/ as it should, but GenericResourceDir
_is_ being initialized correctly to %rom%Resource/ which is _NOT_
fixed by this commit.

[src/openvms.mak src/psromfs.mak src/macosx.mak src/int.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/unixlink.mak src/os2.mak src/lib.mak src/bcwin32.mak src/ugcclib.mak src/gsromfs0.c src/Makefile.in src/msvc32.mak src/unix-gcc.mak src/unix-aux.mak src/macos-mcp.mak src/watclib.mak]

2008-02-28T14:56:32.629339Z Alex Cherepanov

Attempt to repair invalid embedded TT fonts without cmap table.
Bug 689707, customer 531.

DETAILS:
1. Use identity cmap if it is missing from the TT file. Set an unknown
   language ID to activate post table processing.

2. To avoid false rejection during the validation of post table run the
   validator only on the TT files generated by an utility that is known
   to write broken post tables.

[lib/gs_ttf.ps]

2008-02-27T19:36:18.181168Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 4a.

DETAILS :

Bug 689708 "Long processing time of PDF file"
Bug 689714 "Severe performance penalty for PDF transparency through to clist"

The last patch is incomplete due to a commitment failure.
The patch completely removes .inittransparencymask because it is noop.

With the test case of the bug 689708 at 144 dpi 
with default band size it reduces
the temp file size from 64.8Meg to 36.5 Meg,
and speeds up the rendering in 11 times.

With the test case of the bug 689714 at 144 dpi
with default band size it reduces
the temp file size from 12.0Meg to 3.3 Meg,
and speeds up the rendering in 11 times.

The speed factor depends on resolution.

[lib/pdf_draw.ps lib/pdf_ops.ps]

2008-02-27T19:22:57.279403Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 4.

DETAILS :

Bug 689708 "Long processing time of PDF file"
Bug 689714 "Severe performance penalty for PDF transparency through to clist"

The patch completely removes .inittransparencymask because it is noop.

With the test case of the bug 689708 at 144 dpi 
with default band size it reduces
the temp file size from 64.8Meg to 36.5 Meg,
and speeds up the rendering in 11 times.

With the test case of the bug 689714 at 144 dpi
with default band size it reduces
the temp file size from 12.0Meg to 3.3 Meg,
and speeds up the rendering in 11 times.

The speed factor depends on resolution.

[src/gstrans.c src/ztrans.c src/gdevpdft.c src/gstrans.h src/gdevp14.c]

2008-02-27T18:39:31.036262Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 3.

DETAILS :

This is a preparation for fixing bug 689708 "Long processing time of PDF file"
The last patch appears incomplete, now fixing.

[src/gxistate.h]

2008-02-27T00:47:37.036819Z Marcos Woehrmann

Added setting of fill_rule in pclxl_endpath().

DETAILS:

The pclxl_endpath() function checked if a clip_rule needed to be set but not a fill_rule.

This is a fix for bug 689665.


[src/gdevpx.c]

2008-02-27T00:08:22.308407Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 2.

DETAILS :

This is a preparation for fixing bug 689708 "Long processing time of PDF file"
The last patch appears incomplete due to a missed dependence in makefile.
Now we see the mask pointer was used but it was always NULL.

[src/lib.mak src/gxistate.h src/gsistate.c src/gdevpdfg.c]

2008-02-26T23:14:40.608304Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 1.

DETAILS :

This is a preparation for fixing bug 689708 "Long processing time of PDF file"
It completely removes the mask pointer field from gs_transparency_source_s.
No idea what it was defined for. Nobody uses it.

[src/gstrans.c src/gstrans.h]

2008-02-26T07:12:49.848447Z Alex Cherepanov

Change the decimal separator in generated strings to '.' effectively selecting
a C numeric locale without calling any locale functions. Bug 689624.

DETAILS:
For most clients Ghostscript is a library. We cannot set C locale before
sprintf() and reset it afterwards because this may affect other threads.

[src/spprint.c src/zdouble.c]

2008-02-25T16:10:43.614503Z Alex Cherepanov

Remove a space betveen -f and a file name to prevent parsing of the file name
that starts with '-' as an options. Bug 689682.

[lib/ps2pdfxx.bat]

2008-02-25T05:48:45.219666Z Alex Cherepanov

Add a check for null value. Since rev. 6956 following Adobe implementation
Ghostscript doesn't accept null as a key in dictionary look-up. Bug 689696.

[lib/pdf2dsc.ps]

2008-02-25T04:20:47.177440Z Alex Cherepanov

When the values of the color key mask exceed the valid range clip them to the
nearest valid values and continue. Don't discard the mask as we did before.
Bug 689717, customer 580.

[lib/pdf_draw.ps]

2008-02-24T09:21:54.361457Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued 8).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"
Ghostscript Bug 689686 "siscale.c contrast degradation"

Accurately compute pixel center coordinates when applying the interpolation filter.
See comment in code. When scale=1, the offsets mutually eliminate.
Also the old code missed a bit when computing center_denom/2 in integers.

[src/siscale.c]

2008-02-24T03:37:03.979896Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued 7).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"
Ghostscript Bug 689720 "Hang with -dDOINTERPOLATE caused by rev 8530 changes"

An expression for HeightOut missed 'abs' with recent patch.
Thanks to Ray for pointing it out.

[src/gxiscale.c]

2008-02-24T02:58:34.824461Z Alex Cherepanov

Fix link errors in the file descriptor-based implementation of file streams.
Move function used by both fd and stdio implementations to a separate file
and compile it in both versions. Bug 688918.

DETAILS:
Although the patch fixes link errors, pdfwrite and other devices,
use stdio functions directly and generate incorrect documents in fd version.

[src/lib.mak src/sfxstdio.c src/sfxcommon.c]

2008-02-24T01:12:18.214936Z Alex Cherepanov

Add definitions of some C99 types missing from old versions of Cygwin.

[src/stdint_.h]

2008-02-23T22:26:01.799844Z Ray Johnston

Fix typo that caused Cygwin build to fail if 'fontconfig' package was present.

[src/configure.ac]

2008-02-22T20:18:08.422807Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued 6).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"
Ghostscript Bug 689718 "Regression: differences in FIG3.eps".

1. siscale.c : The revision 8529 patch part 4 tried to represent 'ceil' with rational 
arithmetics. But when downsampling the argument still uses a floating
number WidthIn, so we still need 'ceil'. 
This patch converts the formula back to floats, 
assuming that double precision is enough for precise result 
because source image size usually is smaller than 2^24.

The wrong rational representation of 'ceil' caused an array element index 
to fall outside the array. Debugged with FIG3.eps.

2. Improved debug printing and visual trace.

[src/gsimage.c src/lib.mak src/gxiscale.c src/siscale.c src/gdevm24.c]

2008-02-22T10:29:49.290734Z Igor Melichev

Fix (FAPI) : Embedded fonts didn't work (continued).

DETAILS :

A condition for querying a glyph in GlyphDirectory was wrong.
Debugged with buttons.pdf from Karen.

[src/zfapi.c]

2008-02-22T10:09:30.542153Z Igor Melichev

Fix (FAPI) : Embedded fonts didn't work.

DETAILS :

Embedded Type 42 FAPI support was broken since
Revision 7107 Sun Oct 15 17:19:45 2006 UTC (16 months, 1 week ago)
due to premature binding.

[lib/gs_typ42.ps]

2008-02-20T21:02:48.212097Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued 5).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This is a further improvement to image placement precision.
Debugged with a.pdf .

The old code provides insufficientg precision when computing 
transformation matrix for an image. This computation
include matrix inversion and matrix miltiplication.
The old code uses floats and causes a visible shift of subimages with banding.
The new code uses double precision.

We didn't test how it relates to the revision 7026 change, 
which dectreased the matrix precision for CPSI compatibility.
It should be a separate job.

In the new gsmatrix.c code we simply duplicate old code fragments
and replace types for double. We don't want to define a template
for now. Will see after the code passes enough practical work.

Besides that, in gxidata.c replaced fixed2int_pixround
with fixed2int_pixround_perfect. It is not related to a.pdf,
but we believe it is an useful change.

In gxipixel.c the patch replaces dda_advance with a repeated dda_next.
The old code appears implrecise due to loosing fraction pixels.
It eliminates a 1 pixel difference with Bug688789.pdf .

Minor changes : inserted debug printing and visual trace.

[src/lib.mak src/gsmatrix.c src/gximono.c src/gxidata.c src/gsmatrix.h src/gdevm24.c src/gxipixel.c]

2008-02-18T20:28:59.836803Z Ralph Giles

Propagate the new method argument change introduced in r8528 to the wts
device so that it compiles again.

[src/gdevwts.c]

2008-02-17T23:36:50.588580Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued 4).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This patch doesn't change the algorithm.
It only removes tracks of dead development branches.

[src/gxiscale.c src/siscale.c src/gxipixel.c]

2008-02-17T23:25:47.528293Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued 3).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

1. The macro fixed2int_pixround returns a mathematically incorrect
result with negative half-integer arguments.
For example fixed2int_pixround(-2.5) = -3 when the math gives -2.
We guess it was designed for positive page coordinates only,
but later it was applied to objects with negative coordinates.
Particularly, an image can start outside the page with a negative coordinate,
and fixed2int_pixround causes distorsions with banding.

We do not update fixed2int_pixround for backward compatibility 
of other parts of the algorithm. Instead that the patch defines 
a mew macro fixed2int_pixround_perfect, and applies it to
images with Interpolate=true. (gxfixed.h, gxipixel.c, gxiscale.c).

2. Added gx_image_enum_s::yi0 to provide entire image origion in the page.
This value does not depend on band size, so it gives more stability -
see below. (gximage.h).

3. Added entire image sizes to stream_image_scale_params_s
for source image and scaled image. These values do not depend on band size
and provide more stability - see how they are used in siscale.c. 
(sisparam.h, gxiscale.c).

4. (siscale.c) calculate_contrib now computes the filter kernel center
with global (page) coordinates of the image, using the right macro 
fixed2int_pixround_perfect and with the rational arithmetics
instead floats. It gives the kernel center position relatively to source image
with no dependence on the band size.  Also improved the debug printing
about that.

5. In siscale.c we keep track of some experiments done while
developing the patch. We need to save them to history because they're not trivial.
See comments in code. We'll remove them from trunk with a separate patch.

[src/lib.mak src/gxiscale.c src/gxfixed.h src/siscale.c src/sisparam.h src/gximage.h src/gxipixel.c]

2008-02-17T22:32:15.427994Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued 2).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This patch does not change the algorithm,
except adding a debug printing with y coordinate of an image rectangle
in the page coordinate systems. It allows to compare
image fragments, which fall to verious bands depending on band size.

We could wrap the definition of gx_device_memory_s::band_y 
and all access to it with #ifdef DEBUG,
but we don't want to reduce the readability and because
memory and the CPU time expense is too small.

[src/gxclist.c src/gxdevbuf.h src/gxdevmem.h src/gdevppla.c src/gdevmem.c src/gdevbmpa.c src/gdevprn.c src/gdevppla.h src/gdevm24.c src/gxclread.c src/gdevpng.c src/gdevprn.h src/gdevijs.c]

2008-02-17T03:59:45.216145Z Ray Johnston

Fix for regressions introduced with rev 8526. Some resolutions of CMYK, 1-bit
per component devices that had CMYK colors and Gray colors had strange dithers.
Bug 689706.

DETAILS:

The previous changes missed changing the cache index logic in gx_render_ht_1_level,
If the cache had been set with one of the other routines, gx_render_ht_default or
gx_dc_ht_binary_load_cache, then gx_render_ht_1_level would be inconsistent.

EXPECTED DIFFERNCES:

This is expected to resolve the regressions from rev 8527 with pkmraw on:

035-01.ps
119-28.ps
1_2001.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
Bug687489.ps
Bug687724.pdf
Bug687832.pdf
Bug687840.pdf
Bug688308.ps
Bug688822.eps
Bug689269.ps
Clarke-Tate-Manns-Chinese.ai
H00216q.pdf
Original.pdf
S2_Digitalproof-Forum_x3k.pdf
a.pdf
besttest.pdf
cmyk.pdf
foo.pdf
knight.pdf
test.pdf
time1.pdf

[src/gxht.c]

2008-02-14T08:34:56.225081Z Ray Johnston

Improve Halftone tile cache efficiency. Make default cache large enough
on default 32-bit (LARGE) configuration to allow for > 256 cache tiles
when using the 'ht_ccsto.ps' 167x167 Threshold array. Change cache
lookup logic to eliminate collisions when the number of cache slots
exceeds the number of levels (the normal case). Remove duplicated
ht cache default size #defines and normalize the names to end in
_size (to imply size in bytes) and be consistent with other similar
function/macro names.

DETAILS:

When we have more cache slots than the number of levels, we can use
the 'b_level' directly and don't lookup based on the 'number of bits'
(level). This ELIMINATES collisions and on customer 661's benchmarks
resulted in up to 40% performance improvement for some files with
no performance degradation on any when running a large threshold
array based halftone (as the customer does).

The previous -Z. behavior is retained, although small cache sizes
are of questionable value, and this is sort of confusing since a
small memory build will use the same cache size with and without
-Z.

[src/gshtscr.c src/gzht.h src/gsht.c src/gdevprna.c src/gxht.c]

2008-02-12T20:30:17.540929Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This is another partial fix for the bug 687345 for portrait images with Interpolate=true.
Debugged with CET 148-13.

1. The old code inprecisely computes the scaling factor
when interpolating images with Mitchel filter.
The computation was done with the subimage rectangle,
which is different for different bands.
The new code always computes the scale from the entire image rectangle,
which's size is same for all bands.

2. New fields are inserted into gx_image_enum_s and stream_image_scale_params_s
to provide data delivery for (1).

3. In calculate_contrib in siscale.c the variable input_index
is renamed into starting_output_index for a better reflection of its semantics.

4. In calculate_contrib in siscale.c the new variable dst_offset_fraction
is added for a preciser positioning of the filter center,
when it fails between device pixel rows. The old code missed fractional
pixels when stepping to a next band. The expression for its value 
was created empirically, so it may need further improvements.

5. Inserted visual trace instructions for easier debugging.

6. Improved the debug trace printing.

[src/gxdda.h src/lib.mak src/gxiscale.c src/siscale.c src/sisparam.h src/gximage.h src/gxipixel.c]

2008-02-12T19:03:19.125442Z Ralph Giles

Document the need to update the current documentation snapshot.

[doc/Release.htm]

2008-02-09T02:30:31.322331Z Ralph Giles

Clamp the number components read from the ICC DataSource array to the 
number actually allocated to avoid buffer overflow. CESA-2008-001.

[src/zicc.c]

2008-02-09T00:55:38.575949Z Ralph Giles

Include 12 and 16 bit image support as part of the core graphics 
library. Bug 689688.

Details:

Previously, the core graphics library defaulted to including the 
'no12bit' and 'no16bit' modules, which contained stubs. These modules
were replaced by full implementations when the psl2lib (12 bit) and 
pdfread (16 bit) modules were included.

We now consider this build-time flexibility redundant. The extra code is 
not large and the default build generally includes it as these images 
are part of all the newer page description languages. We therefore 
include the unpack routines directly in libcore and remove the 
noi1xbit modules entirely.

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

2008-02-07T09:33:22.506379Z Ken Sharp

Fix (pdfwrite): problems with unusual PDF text rendering modes.

Details:
Bug #689596 "Generated PDF loses an image from original".

Although the PDF interpreter stores both stroke and fill colours,
there is no way to pass both these colours to the graphics library.
The PostScript graphics state may only contain a single colour, and the
device interface only allows for a single colour to be passed.

The old code set the text rendering mode, and assumed that if the
current device was pdfwrite this would be sufficient. However the
need to set both colours causes this to fail.

Modified the pdf_ops to set a show/colour/charpath/stroke combination
instead. The existing code will spot text followed by a charpath of
the same text and collapse it back.

A number of other problems with text rendering modes were also addressed
at the same time, but in a less than optimal fashion. This patch
is a temporary fix while an enhancement is coded to better address
the problem.

(gdevpdts.c) pdf_render_mode_uses_stroke, was checking for render mode
not 0 (fill). Altered to check against the actual stroking modes.

(gdevpdtt.c) pdf_update_text_state was setting the text rendering mode
to 0 (fill) under most conditions. Altered this to set the mode from
the graphics state, unless the current font PaintType is 2 (stroke),
and the render mode is 0, in which case set render mode to 1 (stroke).

(pdf_ops.ps) Modify setshowstate to provide better methods of implementing
various text rendering modes to pdfwrite. Rendering is unaffected by
this change.

[src/gdevpdts.c src/gdevpdtt.c lib/pdf_ops.ps]

2008-02-04T22:18:08.283584Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image.

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This is a partial fix for the bug 687345 for images with Interpolate=false.
Actually it is related to scaling raher than interpolation.

1. gx_image_enum_begin performed inaccurate coordinate computations,
which caused a different image bias for different bands
due to a wrong coordinate rounding.
The patch replaces it with a better code,
which provides same bias for all bands and for unbanded rendering.
But we're not sure that image placement is now perfect,
because the initial rounding looks strange.
We keep the initial rounding to be compatible with the old code
to minimize raster differences and easier visual analyzis.
For a while we keep the old code in #if 0 because
it may be useful for next patch.

2. image_render_frac contains optimized branches for the case when
image's axes are parallel to page's axes.
Those optimized branches convert parallelograms into rectangles,
except for the last parallelogramm in the chunk.
It caused the last parallelogram to shift in 1 pixel relatively 
to the rectangles. This patch adds the optimized branch
for the last parallelogram, so that all image parts
are now placed with same rounding. It avoids rendering artifacts
with 148-05.ps and many other tests. Note that the patch does not fix
the rectangle shift from parallelograms,
so probably it still contain another bug,
which may need a separate fix.

3. While working on this patch we noted that update_strip
doesn't correctly preserve the fractional part for
dda.strip and dda.pixel . We include a track of that experiment
in the new code in #if 0 section for further development.
See comment in code.

4. Inserted visual trace commands for easier debugging.

[src/lib.mak src/gxidata.c src/gdevddrw.c src/gdevm24.c src/gxclread.c src/gxi12bit.c src/gxipixel.c]

2008-02-03T17:54:23.256452Z Alex Cherepanov

Modify pdf_info utility to match the changes in PDF interpreter interface.
Bug 689680.

[toolbin/pdf_info.ps]

2008-02-01T22:05:51.322620Z Igor Melichev

Fix (graphics) : Interpolated images were shifed in a half of source pixel.

DETAILS :

Bug 687039 "Interpolated images looks strange on Win32 display device".

1. The old code maps the center of the [0,0]th source pixel
   to the output image origin. However Adobe maps 
   the source pixel's corner to the output origin.
   This patch compensates the shift when computing the
   filter kernel position - see '0.5' when computing 'center'.

2. When the filter kernel scans partially outside the source image,
   the math requires to extrapolate source data somenow
   to fill the kernel. However the old code performs some strange
   computation, which we're not sure what for.
   It looks as a rudiment of wrapping the source image
   like a thorus. Well, it's an useful math for periodic patterns,
   but not for single images. Since we never apply siscale.c to 
   patterns, we replace this code portion with a simpler one,
   which duplicates pixels at image boundaries.
   See attachment to the bug to prove that Adobe does so.

[src/siscale.c]

2008-01-31T22:20:32.934182Z Ray Johnston

Fix ColorValues parameter problem when device has total number of bits (depth)
of more than 31 bits, resulting in a "rangecheck" (-15) error.

DETAILS:

The default get_params would not return -1 for values too large for 32 bits,
but the default put_params tested for this. The rangecheck would show up
on 32-bit devices, such as tiff32nc when running:
   "currentpagedevice setpagedevice"
Note that the value returned for ColorValues was platform dependent since
it previously set ColorValues to 1<

[src/gsdparam.c]

2008-01-29T17:02:50.720617Z Igor Melichev

Fix (graphics) : Optimize filling a path with a shading color (continued 2).

DETAILS :

Bug 688970 "(shadings) Optimize filling a path with a shading color".

A minor code cleanup : Removing code portions that became unused.

[src/gsptype2.c src/gsptype2.h src/gximask.c src/gxfill.c]

2008-01-29T12:41:42.337727Z mpsuzuki

Fix (TT): Ignore broken post 2.0 table generated by "Windows Type 1 Installer".

DETAILS:

This is the second fix for bug 689495, that is quite specific
to a TrueType font generated by "Windows Type 1 Installer".

"Windows Type 1 Installer" makes a TrueType font including broken
post table in format 2.0. Previous fix (SVN revision 8351) just
ignores such broken post table, and ISOLatin1Encoding is used
for fallback. When such TrueType font is combined with WinAnsiEncoding,
some glyph names (exists only in WinAnsiEncoding) cannot be resolved.

The post table format 2.0 uses 2 maps to assign a glyph name to
TrueType glyph index: the first map is from TrueType glyph index
to glyph name index (glyphNameIndex[] array), the second map is
from glyph name index to glyph name string (names[] Pascal string
array). The broken post table generated by "Windows Type 1 Installer"
seems to use name[] array by TrueType glyph index directly, and
the glyphNameIndex[] array has unreliable values.

This patch sets /.broken_post when the post table is broken (the
detection of broken post table is same with SVN revision 8351),
then use names[] array by TrueType glyph index when /.broken_post
is set.

[lib/gs_ttf.ps]

2008-01-29T11:54:50.007576Z Igor Melichev

Fix (graphics) : Optimize filling a path with a shading color (continued).

DETAILS :

Bug 688970 "(shadings) Optimize filling a path with a shading color".

A minor code cleanup : prepare to eliminate gx_dc_pattern2_clip_with_bbox.

[src/gximask.c]

2008-01-28T23:02:59.180158Z Igor Melichev

Fix (graphics) : Optimize filling a path with a shading color.

DETAILS :

Bug 688970 "(shadings) Optimize filling a path with a shading color".

When filling a path with a shading color, the old code
first intersects the the clipping path with the path,
then intersects the result with the shading BBox.
However the intermediate result frequently appears to be 
a big list of rectangles, so the second intersection is slow.

This patch accounts that the clipping path and shading BBox
frequently are rectangles, which are easier to intersect with
no converting to paths. Also the shading box is always a quadrangle,
so intersecting it early gives a smaller intermediate result.
Therefore we first intersect the clipping path with the shading BBox,
then with the path.

This patch keeps the old code within #if #endif
until the full regression testing is passed on the server.
Also would like to eliminate the old complicated function 
gx_dc_pattern2_clip_with_bbox, which is still called from elswhere.

[src/gsptype2.c src/gsptype2.h src/gxfill.c]

2008-01-28T10:31:45.187261Z mpsuzuki

Fix: ignore the embedded font resource when PDF interpreter resolves
     the unembedded font resource.

DETAILS:

Some PDF generators (e.g. Microsoft Office 2007 add-on to export the
documents to PDF format) emits incompatible font objects with same
resource name. The sample PDF in bug 689637 includes 2 "Times New
Roman" font objects: one is embedded CID-keyed TrueType for Cyrillic
glyphs, another is unembedded WinAnsiEncoding TrueType (possibly for
empty page header or footer). When PDF interpreter resolves latter
unembedded "Times New Roman", external font resource should be used
(Adobe Reader does so). But current Ghostscript uses former embedded
"Times New Roman", because the sample PDF includes "Times New Roman"
without randomization prefix.

To avoid the confusion between embedded and unembedded fonts with
same name, pfont->is_resource flag (=0 embedded, =1 unembedded)
is checked during font object resolution. Even if a cached font
object with same name is found, it is ignored if it is embedded
font. To execute this check in PostScript space (pdf_font.ps),
new operator ".isregisteredfont" is introduced. This patch assumes
that embedded font object in PDF is resolvable by tracking the
indirect object references. If a PDF assumes name-based resolution
of embedded font object (without indirect object), it may be
rendered by external font resource. At present, we don't have
such sample.

By this patch, bug 689637 is fixed.

[lib/pdf_font.ps src/zfont.c]

2008-01-28T09:58:54.861949Z mpsuzuki

Fix (TT): Fix a bug in /getinterval_from_stringarray

DETAILS:

getinterval_from_stringarray is a procedure defined to
extract a substring from long table of TrueType font.
When a table is too long to fit into 16bit-length string
object in PostScript, gs_ttf.ps split the table into
the array of strings. When getinterval_from_stringarray
is requested to extract a string which starts in one
member and ends in following member, it returns a string
that only the content of the first member is copied.
There was a wrong conditional that made the substring
extraction aborted. It was fixed to return the correct
substring.

By this fix, bug 689593 (IPA font 2007 edition cannot
be parsed correctly) is closed.

[lib/gs_ttf.ps]

2008-01-28T08:50:10.139318Z Igor Melichev

Fix (clist & transparency) : Improve the compositor queue logic (continued).

DETAILS :

The last commit is incomplete due to human error.
Please don't use the last revision.

Bug 689492 "Ghostscript uses a large amount of memory", part 2.

This patch fixes the missed shadow of a text, which is mentioned 
in the Comment #8 of the bug report.

1. Added macros for configuring visual trace for easier debugging.
2. The idle transparency bufer allocation condition was wrong. 
   The patched code allocated ;esser buffers.
3. Found more cases when a mask needs to be released.
4. The old code immediately executes idle masks.
   It caused a wrong order for compositor execution
   with images that have a soft mask.
   With the test case the image's mask was executed before 
   the group that containing the image.
   It caused a premature releasing of a mask,
   which preceeeds the group and must noy be released.

   The new code delays the execution of idle masks
   after all containing groups are executed,
   so that the queue is now longer and stores all masks.
   We beleive that's not harmful, because
   transparency queue elements are pretty small and
   work for hos based applications only.

   The new function mark_as_idle works for the new logic.
   Few aother functions are enhanced with a smarter
   processing of the idle flag.
5. Improved comments for the compositor queue logic.

[src/gdevp14.c]

2008-01-28T08:45:21.850870Z Igor Melichev

Fix (clist & transparency) : Improve the compositor queue logic.

DETAILS :

Bug 689492 "Ghostscript uses a large amount of memory", part 2.

This patch fixes the missed shadow of a text, which is mentioned 
in the Comment #8 of the bug report.

1. Added macros for configuring visual trace for easier debugging.
2. The idle transparency bufer allocation condition was wrong. 
   The patched code allocated ;esser buffers.
3. Found more cases when a mask needs to be released.
4. The old code immediately executes idle masks.
   It caused a wrong order for compositor execution
   with images that have a soft mask.
   With the test case the image's mask was executed before 
   the group that containing the image.
   It caused a premature releasing of a mask,
   which preceeeds the group and must noy be released.

   The new code delays the execution of idle masks
   after all containing groups are executed,
   so that the queue is now longer and stores all masks.
   We beleive that's not harmful, because
   transparency queue elements are pretty small and
   work for hos based applications only.

   The new function mark_as_idle works for the new logic.
   Few aother functions are enhanced with a smarter
   processing of the idle flag.
5. Improved comments for the compositor queue logic.

[src/gxclrast.c]

2008-01-26T13:21:27.618379Z Igor Melichev

Fix (transparency) : Memory leak after an image with soft mask.

DETAILS :

Bug 689492 "Ghostscript uses a large amount of memory".

When a PDF command stream executes "/d1 gs /d2 gs" where d1 and d2 both define an 
untrivial SMask (not important whether they are same mask or different masks),
the second mask replaces the first one, and the first one to be released.

When a transparent group includes an image with a soft mask 
(this case happens in the test document for the bug), the image's soft mask must 
*temporary* replace the groups soft mask, and the first mask must not 
be released.

The old code does not distinguish these cases, assuming that 
a mask buffer is being released after rendering a group with it.
Due to that some mask buffers were never released,
causing a memory leak with banded rendering,
because the clist interpreter doesn't run the garbager.

A simpler case for demonstrating the leak could be created with 
"/d1 gs /d2 gs" as explained above.

The patch defines a new bool gs_transparency_mask_params_s::replacing, 
gx_transparency_mask_params_s::replacing and gs_pdf14trans_params_s::replacing
for passing the necessary information through old interfaces.
Note that as usual we cannot change the device interface for 
an easier passing of this info, because we need to maintain
the compatibility with 3d party devices.

Using the 'replacing' flag, pdf14_push_transparency_mask either replaces
the old mask buffer, or creates a new one as a temporary substitution for
an image with a soft mask. In the second case the group mask is
saved in the last transparency stack element in the field 
buf->maskbuf. After rendering the image's group 
the function pdf14_pop_transparency_group restores 
the saved mask buffer, as it was set in the transparency context
before starting the image's mask. For more details see
comments added into gdevp14.c .

[src/gstrans.c src/ztrans.c src/gstparam.h src/gstrans.h src/gdevp14.c]

2008-01-25T08:17:16.431601Z Igor Melichev

Fix (Font renderer) : Horizontal metrics sometimes applied with WMode 1 fonts.

DETAILS :

Bug 689464 "Japanese font writing direction (vertical ?)".
Bug 689646 "vertical text rendered by external CIDFontType0 flows horizontal".

1. When a descendent font of a type 0 CID font has zero FontBBox,
   use the FontBBox of the CID font. This is another case when
   a 3d party software generates a font with zero FontBBox.
   We believe that such font data is incorrect, 
   but this patch provides a simple workaround.

2. When FontBBox to be used to compute Metrics2,
   don't obtain sbw from type 1 glyph descriptions.
   The old code does so causing the horizontal metrics
   to be used when rendering a WMode 1 font. 

3. The case (2) appears to have an exception,
   when the font has CDevProc. In this case 
   we do need sbw from the glyph description
   to provide arguments for CDevProc.
   See alse the comment added to code.

Note that Type 1 font renderer now depends on some knowledge about type 0 CID font.
But this dependence does not break the configurability
because only an .h file is included into the Type 1 font renderer.

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

2008-01-23T21:13:16.354024Z Igor Melichev

Fix (clist & transparency) : Inconsisting compressed color index info.

DETAILS :

Bug 689626 "Segmentation Fault using 'bit' device to clist.".

The bug was put while the custom color callback merge in revision 7795.
The color index information to be passed to the clist writer
after restoring the color information to the clist writer.
Before restoring it is set to a blending space,
which may be incompatible with the target device's color index type.

I'm unable to test this patch fully
due to no test cases for antrivial spot colors with transparency.

[src/gdevp14.c]

2008-01-23T18:33:35.648405Z Igor Melichev

Fix (DSC parser) : Avoid a structure type name duplicate.

DETAILS :

The old name cmd_list_s is also defined in gxclist.h .
It confused MSVC debugger while tracing gxclutil.c for bug 689626.

[src/zdscpars.c]

2008-01-23T18:12:27.956590Z Igor Melichev

Fix (patterns) : The clipping was wrong with antrivial pattern matrix (continued).

DETAILS :

Bug 687196 "Incorrect pattern processing from Adobe test file pattyp1.ps".
This is a partial fix for the bug, which fixes vector devices only.
It closes the bug with the last patch applied.

The old code set identity matrix for a pattern dstream accummulation.
It appears incompatible with Type 2 pattern handler, which assumes
the default page matrix. This patch changes the matrix and improves
the pattern stream accumulator with accounting the default page scale. 

[src/gdevpdfi.c src/zpcolor.c]

2008-01-23T18:09:49.970130Z Igor Melichev

Fix (patterns) : The clipping was wrong with antrivial pattern matrix.

DETAILS :

Bug 687196 "Incorrect pattern processing from Adobe test file pattyp1.ps".
This is a partial fix for the bug, which fixes raster devices only.

1. The old code always sets a canonic rectangular clipping,
   which is wrong with rotated or skewed matrices.

   Note the patch resets path in the pattern's graphic state.
   It is not done in the old code, so it may cause raster diferences.
   But it is required in PLRM chapter 8 by the definition of 'makepattern'.

2. Adjust the pattern matrix to pixel grid.
   After doing the change (1) the clipping area appears too small for some cases.
   It happens because the tile origin falls at fractional pixels,
   The new code causes a massive raster difference, which actually is minor
   (a shift of some pattern instances in 1 pixel).

   Note that PLRM requires to adjust pattern matrix in the definition of 'makepattern',
   but doesn't explain how to.

3. In compute_inst_matrix perform computations in 'float'
   because the matrix is represented with 'float'.

4. (miror change) Expanded the 'mat' macro for easier debugging with MSVC.

[src/gsptype1.c]

2008-01-23T16:49:51.344351Z Ken Sharp

Fix (pdfwrite): Wrong format string for pprintg.

Details:
Bug #689661 "pdfwrite : Incorrect sprintf format".

(gdevpdfu.c) The new function, 'pdf_write_font_bbox_float,
added in revision 8360, used the wrong format string (%f
instead of %g) to write the font BBox.

[src/gdevpdfu.c]

2008-01-23T13:30:39.283039Z Igor Melichev

Fix (shadings) : A memory deallocation problem.

DETAILS :

Bug 689660 "memory deallication problems with shadings".

The old code used pdev->memory for temporary storing 
an intersection of clipping path with shading bbox.
This is the global memory space.
However if the intersection is trivial,
the path of the clipping path is copied from the 
original clipping path, which is allocated in the local memory space.
Later it causes a freeing of path segments to a wrong memory space.

This patch chooses the original clipping path's memory space
when the clipping path is available, and the global space otherwise.

[src/lib.mak src/gsptype2.c]

2008-01-23T13:23:09.676697Z Till Kamppeter

Added HP's KRGB patch for improved control of true black text printing on color printers with HPIJS. Bug #689065 (Ubuntu LP: #69905) is fixed in this updated version of the patch.

[src/gdevijs.c]

2008-01-21T20:59:55.657274Z Igor Melichev

Fix (save/restore) : Remove gs_ref_memory_s::inherited.

DETAILS :

It is not used since revision 5250.

[src/gxalloc.h src/igc.c src/gsalloc.c src/isave.c]

2008-01-20T22:23:07.686290Z Igor Melichev

Fix (save/restore) : Do not create invisible save levels.

DETAILS :

Invisible save levels is a rudiment of old code.
gs_ref_memory_s::scan_limit effectively work instead them 
since revision 6706 committed on April 14 2006.

We're not sure what gs_ref_memory_s::inherited works for.
Keeping it updated for a while, and don't remove the 
old code for reference. Note the maintanence of gs_ref_memory_s::inherited
in the new code is not fully equivalent to old code.

[src/isave.c]

2008-01-20T09:56:15.017727Z Ralph Giles

Only report the ICC Profile colorspace when the jasper library's debug 
level is above zero. Bug 689662.

[jasper/src/libjasper/jp2/jp2_dec.c]

2008-01-20T09:21:15.660626Z Igor Melichev

Fix (save/restore) : Compact the changes list against big memory leak.

DETAILS :

Bug 689536 "Memory leak reading PostScript file (PMR 53877).".

The old implementation includes an optimization agains a big CPU time expense
in 'save' and 'restore' for sedtting and resetting l_mark flags.

Normally, when executing 'save', the memory manager needs
to reset l_new marks for objects modified or allocated at the last save level,
so that their further modification on the next save level to be saved
in the changes list. When executing 'restore' these flags to be set 
to prevent redundant save.

When the last save level includes many allocations, 
the number of scanned objects is big and it causes a significant
time expense. A long ago Ghostscript implements an optimization,
which shorten the scanned list against the big time expense.
However the shortening causes redundant saving.

The redundant saving itself isn't harmful because
it happens seldon and spends a small memory.
However if a redundant save element points to a reference to
a newly allocated array or dictionary, the array or dictionary
can't be garbage collected. When a client executes such allocation and 
same reference modification multiple times, all allocated arrays
and dictionaries persist in memory, causing a significant memory leak.

This patch compacts the saved change list whem a significant memory 
allocation is accummulated since last save or since last compacting.
The new field gs_ref_memory_s::total_scanned_after_compacting
works for counting allocated elements. The new function 
drop_redundant_changes performs the compacting. See comments in its code.

The threshold for starting drop_redundant_changes is choosen arbitrary. 
It must not be too small, because the CPU time expense
optimization wouldn't be effective. Also it can't be too big,
because the memory leak recovery would not be effective.
This patch sets it to about 1600000 objects,
which is an experimental trade-of.

Note that this patch reduces the memory leak but doesn't
eliminate it to zero, because more data may be allocated
after the last filtering.

We could implement a filtering within the garbager rather 
than withis save/restore. Actually it wouldn't change 
the behavior to much, because the threshold would be still needed 
against the CPU time expense, It happens because the scanning
deals with array or dictioanr elements rather than with
whole aggregates. Also we don't want to complicate the garbager.

Note that the arbitrary threshold is bigger than neccessary
for the simplified test case included into the bug report.
Due ti that the leak elimination does not happen with this test.
For the compacting to take place the sequence "NEWJOB Z"
to be repeated 90 times rather than 40 in the supplied test. 
The customer's test does demonstrate the leak reducing.

[src/gxalloc.h src/gsalloc.c src/isave.c]

2008-01-18T21:50:38.830947Z Alex Cherepanov

Explicitly close CMap files opened during CMap-CIDFont font enumeration.
On certain systems file handles were used up before GC freed inaccessible
handles causing PostScript errors. Bug 689594.

[lib/gs_cidcm.ps]

2008-01-18T06:17:02.734368Z Alex Cherepanov

Add redefinition of setpagedevice to ps2epsi utility to support PS files
that call setpagedevice. Bug 689650.

[lib/ps2epsi lib/ps2epsi.ps lib/ps2epsi.cmd lib/ps2epsi.bat]

2008-01-17T13:50:43.754302Z Igor Melichev

Fix (clist interpreter) : Skip idle compositors, step 6.

DETAILS :

Enabling visual trace for buffer backdropping.

[src/gdevp14.c]

2008-01-17T13:47:11.707889Z Igor Melichev

Fix (visual trace) : Add a single pixels painting operation.

DETAILS :

This patch doesn't change the algorithm.
It only enhances debuging instrument.
The new instrument will be used for debugging the clist logics about transparency masks.

[src/vdtrace.h src/vdtrace.c src/dwtrace.c]

2008-01-17T13:37:19.476394Z Igor Melichev

Fix : Cygwin/gcc warnings.

[src/gdevcgm.c src/int.mak src/gstrans.c src/gdevpdfe.c src/gdevbit.c src/devs.mak src/gxclread.c src/gscdevn.c src/gscie.c src/gxclutil.c src/lib.mak src/gdevp2up.c src/gxclmem.c src/gdevdflt.c src/gdevpdtd.c src/gxcomp.h src/gsovrc.c src/gdevprn.c src/gscsepr.c src/genarch.c src/ztoken.c src/gdevp14.c]

2008-01-17T03:16:02.921192Z Alex Cherepanov

Comment-only change: remove obsolete reference to MS-DOS limitations and 
mention that PDF interpreter passes un-escaped font names to PS level.
Bug 689651.

[lib/Fontmap.GS]

2008-01-17T03:12:45.266699Z Alex Cherepanov

Remove the warning about non-embedded TrueType fonts in PDF files because it
confuses users but seems to have little effect on the main producer of
non-conforming files.

[lib/pdf_main.ps lib/pdf_font.ps]

2008-01-16T23:35:48.055065Z Ralph Giles

Unbreak the build.

[src/gdevp14.c]

2008-01-16T22:55:42.290132Z Igor Melichev

Fix (clist interpreter) : Skip idle compositors, step 5.

DETAILS :

This really skips compositors which don't paint anything.

Compositor parameter list structures are extended with a new boolean field 'idle'.
These fields pass information whether something was painted to a compositor.
We choosen this way for passing this info because 
(1) we can't change the device inteface with new function arguments, and 
(2) we need to pass it through the device chain
(for example, when a clipper is installed onth the overprint device).

This patch only affects the transparency and the overprint.
Other compositors (gsalphac.c, gxropc.c) behave as before. 
They may need further improvements.

This patch does not fix the bug 689492.
That fix may be done either before or after this one,
but in any case the patches need to adopt each to another.

The new compositor virtual method is_closing
checks whether a current compositor command
closes an older command, and finds the opening command.
Now we provide untrivial implementations for transparency and overprint compositors.
Would like to define an enum for return values of is_closing.

The old device method create_compositor now passes the 'idle' parameter via 
gs_composite_s structure. By default it is false and the behaviour
is same as before. But the clist interpreter is modified
to provide true value when a compositor doesn't paint anything.
To compute this flag the compositor queue now works with its full power.
Note we changed the queue representation with a bilikned list.

This patch entroduces the concept of 'friendly operations'
for compositor operations. These are those operations, which
may interchange with compositor installation/deinstallation.
One example is halftone operations, which always affect
the device below the compositor device, i.e. the target device
of the compositor device. The new compositor virtual method
is_friendly is implemented in an intrivial way for the
transparency compositor especially to exchange with halftone
operations while queueing clist operations.
This especially helps to delay the pdf14 device installation
so that it may completely annihilate with its deinstallation
if nothing is painted through the compositor in a band.

Overprint and transparency compositor implementations
are changed with checking the idle flag.
If it is set, they don't perform neither color blending, nor
raster buffer allocation. Note the pdf14 device maintains the buffer stack
as before, but the allocation of buffers may be skipped.
It saves significant time from cleaning up raster buffers when they are idle.

This patch may need further improvements for the case when
different compositor types are mixed in one queue. 
We could not fully test it due to absence of practical tests.

Another useful improvement would be to convert 
"0 .inittransparencymask 1 .inittransparencymask dict .setblendparams"
into a single command. It would simplify the compositor queue logic.
Also we think that the name .inittransparencymask doesn't reflect the function purpose.
Will improve someday.

We're not sure whether this patch correctly works with idle masks.
We could not debug it due to no practical cases.
Possibly idle mask will need an additional effort to skip 
the group painting to the band.

Also disabled cmd_put_halftone in c_pdf14trans_clist_write_update -
see comment in code.

Monor change : Inserted a visual trace support for transparency buffers.

[src/lib.mak src/zdict.c src/gdevdflt.c src/gdevp14.h src/gstrans.c src/gsalphac.c src/gxcomp.h src/gsovrc.c src/gstparam.h src/gstrans.h src/gxclrast.c src/gsovrc.h src/gdevp14.c]

2008-01-09T00:36:30.938192Z Marcos Woehrmann

Fixed umlauts (maybe, am having trouble testing the results).

[man/de/pdf2dsc.1]

2008-01-09T00:24:50.313955Z Marcos Woehrmann

Corrected man page (thanks to Peter Dyballa).

[man/de/pdf2dsc.1]

2008-01-09T00:00:59.719986Z Alex Cherepanov

Add unmodified byte-oriented AES encryption code by Brian Gladman. These
files serve as a reference point. They are not yet included into any
project nor can be compiled by some of the compilers we support.

[src/aes.h src/aes.c]

2008-01-07T20:58:40.018332Z Ralph Giles

Remove the obsolete gconfigv.h.

[src/lib.mak toolbin/msvcxml.bat src/openvms.mak src/unix-end.mak src/gs.mak src/std.h src/gscdefs.h src/macos-mcp.mak src/openvms.mmk src/os2.mak src/wctail.mak src/winlib.mak]

2008-01-07T20:58:36.882379Z Ralph Giles

Remove EXTEND_NAMES from the top level makefiles.

There is a fallback to the default value of 0 in inameidx.h so there
is no change in the default behaviour. The extended name table can
still be activated by defining EXTEND_NAMES on the compiler command
line or changing the source directly.

[toolbin/msvcxml.bat src/openvms.mak src/unix-end.mak src/gs.mak doc/Use.htm src/int.mak src/macosx.mak src/Makefile.in src/inameidx.h src/unix-gcc.mak src/macos-mcp.mak src/openvms.mmk src/os2.mak src/wctail.mak src/winlib.mak]

2008-01-07T18:43:02.811990Z Henry Stiles

Deprecate USE_FPU, no changes expected.

[src/gxchar.c src/openvms.mak src/unix-end.mak src/gsjmorec.h src/macosx.mak src/dvx-gcc.mak src/gxfarith.h src/msvccmd.mak src/siscale.c src/unixansi.mak src/gsmisc.c src/msvclib.mak src/gsfemu.c src/os2.mak src/openvms.mmk src/lib.mak src/bcwin32.mak src/ugcclib.mak src/gscie.h src/Makefile.in src/unix-gcc.mak src/gxfixed.h src/msvc32.mak src/macos-mcp.mak src/wccommon.mak src/wctail.mak src/winlib.mak src/watclib.mak]

2008-01-02T23:58:44.056429Z Alex Cherepanov

Re-export runpdfbegin, dopdfpages, and runpdfend procedures, which turned out
to be used by 3rd party programs. Partly revert the rev. 8325.

[lib/pdf_main.ps]

2008-01-02T13:10:59.547816Z Ken Sharp

Fix (pdfwrite): Tidy up after the prior patch, 
algorithmically this is the same as before.

Details:
Bug #689597 "PDF created with NoEmbed has wrong BaseFont name".

gdevpdtb.c, gdevpdtf.c, gdevpdtf.h, remove the redundant
routine pdf_choose_font_name.

gdevpdtb.c, gdevpdtd.c, gdevpdtf.c, gdevpdtb.h, modify the
function pdf_base_font_alloc to remove the redundant
argument 'orig_name', we always use the original font name
now.

[src/gdevpdtb.c src/gdevpdtd.c src/gdevpdtf.c src/gdevpdtb.h src/gdevpdtf.h]

2008-01-01T20:44:52.186969Z Alex Cherepanov

Don't ignore xref stream in a hybrid  "classic xref" + "stream xref" file
as PDF 1.5-compatible should do. Thanks to SaGS for the patch. Bug 688282.

[lib/pdf_main.ps]

2008-01-01T14:28:30.927323Z Alex Cherepanov

Replace clearly invalid generation numbers out of 0..65535 range with 0 during
rebuilding of xref table. Bug 689634.

[lib/pdf_rbld.ps]

2008-01-01T01:30:52.687921Z Ralph Giles

Remove the SYSTEM_CONSTANTS_ARE_WRITABLE compile-time define.

Details:

This was added so a particular application could rewrite the product name,
version, etc. after loading the library. We're not aware of anyone still
using the feature, and if so they can just change the source, which is
more appropriate in any case.

Also, remove USE_ASM from the msvc project file.

[toolbin/msvcxml.bat src/openvms.mak src/unix-end.mak src/gs.mak src/gscdefs.h src/openvms.mmk src/os2.mak src/wctail.mak src/winlib.mak src/gscdef.c]

2007-12-31T22:46:50.849681Z Alex Cherepanov

Add a flag that marks PDF text rendering mode 3 to avoid confusion with other
non-rendering text operations such as stringwidth. This avoids unnecessary 
calculation of the current point, which fails when the CTM is singular. This
patch continues conservative approach to the text rendering modes started in
rev. 4006. Bug 689614, customer 384.

[src/gxchar.c src/gstext.c src/gstext.h]

2007-12-31T19:06:52.216061Z Ray Johnston

Correct polarity of the stochastic threshold array so that the images are
not too dark.

DETAILS:

The original conversion from the threshold array provided by CalComp had
the threshold values inverted so that the implicit linearization was
inverted, making images much too dark. This correction provides reasonable
results on printers. Fine tuning of transfer functions can be used for
specific printers.

[lib/ht_ccsto.ps]

2007-12-31T18:07:59.109475Z Ralph Giles

Remove the USE_ASM build flag.
    
Details:
   
It was originally added to support vga mode setting, and has been 
used for a few minor optimizations since. We don't believe these 
are worth the trouble with modern compilers, so it is removed to 
simplify configuration management.

[src/unix-end.mak src/openvms.mak src/watcw32.mak src/gdevpcfb.c doc/Develop.htm src/msvccmd.mak src/iutilasm.asm src/gsmisc.c src/msvclib.mak src/dvx-head.mak src/devs.mak src/os2.mak src/openvms.mmk src/unixhead.mak src/lib.mak src/bcwin32.mak src/winint.mak src/gdevegaa.asm src/msvc32.mak src/gdevsvga.c src/gsutil.c src/wccommon.mak src/wctail.mak src/winlib.mak]

2007-12-31T06:10:33.027699Z Alex Cherepanov

Don't try to obtain the bounding box of a glyph when FontBBox is invalid and
CTM is singular. Set an empty box and consider it valid. The bounding box is
not used when the CTM is singular. Bug 689614, customer 384.

[src/zchar1.c]

2007-12-29T02:53:21.940078Z Ralph Giles

Remove the ARCH_CAN_SHIFT_FULL_LONG define and its derivatives. Bug 689611.

Details:

This was only used in one place, in an attempt to support
non-portable code. However this caused problems with recent
gcc's which optimized the test one way and the code in gxshade.c
another. We're therefore removing it entirely and just using
portable code.

[src/std.h src/gxshade.c src/gxbitops.h src/genarch.c]

2007-12-27T22:28:36.610626Z Ralph Giles

Add -Wundef to the autoconf build.

There have been a number of problems related to missing defines lately.

[src/configure.ac]

2007-12-22T19:13:20.335131Z Ralph Giles

Correction to the refcount documentation.

Our allocator can't double free, but attempting to trace a freed pointer
can confuse things, possibly resulting in a segfault or other
misbehaviour.

[src/gsrefct.h]

2007-12-22T02:05:40.922995Z Ralph Giles

Also remove gdevcmap from the documentation.

[doc/Develop.htm]

2007-12-22T02:05:36.008019Z Ralph Giles

Include gconfigv.h in std.h so defines like USE_FPU are more
consistently defined.

[src/lib.mak src/gscie.h src/std.h src/gdevpcfb.c src/gxfarith.h src/siscale.c src/gsmisc.c src/gdevsvga.c src/devs.mak src/sidscale.c src/gxpcopy.c]

2007-12-22T00:19:36.075695Z Ralph Giles

Document the behaviour of the reference count macros.

[src/gsrefct.h]

2007-12-22T00:10:05.865239Z Ralph Giles

Remove the unused cmap device.

[src/lib.mak src/ugcclib.mak src/gslib.c src/gdevcmap.c src/gdevcmap.h]

2007-12-21T19:58:19.459173Z Ralph Giles

Further update the graphics library unit test and build. The gslib test 
executable builds and works now.

[src/ugcclib.mak src/gslib.c]

2007-12-21T19:56:07.995361Z Ralph Giles

Construct romfs.dev in the graphics library's gen directory instead of 
the ps interpreter's so building just the library is possible.

[src/gs.mak]

2007-12-21T10:31:00.226023Z Ken Sharp

Fix (jbig2dec): The global data stream for a JBIG2 image in a PDF
file was being released, and the data freed by the garbage collector,
before the data was used.

Details: Bug #689568 and #689569. Uses the patch supplied by Alex
in thread for #689569, implements Ralph's comments about the structure 
naming. Does not attempt to change the memory allocator. This slightly
modified patch also works with the Luratech decoder.

sjbig2.h, sjbig2_luratech.h; make the global data structure 
s_jbig2_global_data_t public. Store the structure in the 
stream decoder state.

sjbig2.c, sjbig2_luratech.c; store a pointer to the global
data structure. 

sjbig2_luratech.c; don't reset the pointer during initialisation!

zfjbig2.c; Pass the global pointer to the stream decoder for
release in the finalize routine.

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

2007-12-21T00:15:53.911110Z Ralph Giles

Remove some old helper scripts.

They aren't used much and we no longer wish to maintain them.

[toolbin/many2pdf.tcl toolbin/pre toolbin/gssubst toolbin/gsindent]

2007-12-21T00:11:54.376327Z Ralph Giles

Make pre.tcl more robust in creating temporary files.

Also update the copyright header and fix a bug in an error handler.

[toolbin/pre.tcl]

2007-12-19T06:25:41.308572Z Alex Cherepanov

Ignore operator readonly when it is applied to a wrong type inside an
embedded Type 1 font. Bug 689617, customer 580.

[lib/pdf_font.ps]

2007-12-19T06:22:22.816836Z Alex Cherepanov

Treat the text after empty ASCII block in PFB stream as ASCII sub-stream
terminated by 0x80 character, a presumed header of the next block.
Bug 689617, customer 580.

[src/sfilter1.c]

2007-12-19T00:25:08.107768Z Ralph Giles

Update the graphics library unit tests for recent code changes.

[src/gslib.c]

2007-12-18T10:03:07.564012Z Ken Sharp

Fix (pdfwrite): Font Descriptors for fonts not embedded, due to
EmbedAllFonts=false, did not preserve the original font name.

Details:
Bug #689597 "PDF created with NoEmbed has wrong BaseFont name".

(gdevpdtd.c) pdf_font_descriptor_alloc, do not use the 'embed'
status to determine whether to use the font or key name. Always
use the font name.

pdf_compute_font_descriptor. Remove the simplistic test for
symbolic. In the loop retrieving glyph information, check to see 
if the glyph name is present in ISO Latin 1. If not, the font is
symbolic.

[src/gdevpdtd.c]

2007-12-18T10:02:09.815887Z Ken Sharp

Fix (pdfwrite): PDFXTrimBoxToMediaBoxOffset used the supplied data
incorrectly.

Details:
Bug #689578 "PDFXTrimBoxToMediaBoxOffset".

Patch supplied by Adam Augusta.

(gdevpdf.c) pdf_write_page. When using the PDFXTrimBoxToMediaBoxOffset
data, we need to subtract the bottom right offset from the MediaBox
not add it, the trim box must lie inside the media (see Acrobat 7.0
distiller parameters manual, pp. 102-103).

[src/gdevpdf.c]

2007-12-18T03:40:36.305448Z Ralph Giles

Remove the unused composite_rop device.

DETAILS:

This was an attempt to implement PCL raster operations as an interposed 
device which first rendered to an intermediate buffer and them 
composited with the underlying device buffer, similar to how the
"PDF 1.4 Transparency" device works.

While this would be a nice approach, allowing raster operations to 
function in more color spaces, it was never completed, and presents
a maintenance burden for ongoing clist improvements. We are therefore
removing it. It can be reinstated later as a starting point for further 
development if needed.

[src/lib.mak src/gsropc.c src/gsropc.h doc/Develop.htm src/gxropc.h]

2007-12-17T21:33:35.320044Z Igor Melichev

Fix (transparency) : Providing a right nested masks logic (continued).

DETAILS :

The revision 8439 missed an initializer.

[src/gdevp14.c]

2007-12-17T07:28:22.397599Z Alex Cherepanov

Improve outline pdfmarks produced by the pdf interpreter. Add page number and view
values. Thanks to Leon Bottou for the patch. Bug 689599.

[lib/pdf_main.ps]

2007-12-16T15:38:09.417159Z Igor Melichev

Fix (clist interpreter) : Improving debug trace about compositors.

DETAILS :

This only improves a debug printing.
The algorithm isn't changed.

This change simplifies the debug trace analysis with
using C function names as event marks in the trace.
Also return_error is now not used when c_pdf14trans_write
is called for estimating the buffer size.

[src/gdevp14.c]

2007-12-16T01:37:56.744199Z Alex Cherepanov

Don't skip space characters after eexec in embedded PDF fonts but
continue to do so in other cases. Bug 689615.

[src/seexec.c src/sfilter.h lib/pdf_font.ps src/zmisc1.c doc/Language.htm]

2007-12-14T19:51:01.706015Z Alex Cherepanov

Work around a GCC 4.2.1 bug on PowerPC that generates incorrect code in the
release build affecting scanning of binary tokens containing floating point
numbers. Bug 689586.

[src/ibnum.c]

2007-12-14T18:40:31.738291Z Marcos Woehrmann

Added casts to sprintf debugging statements (thanks for Michael Rutter for finding these).

[contrib/eplaser/gdevescv.c]

2007-12-14T18:31:39.938693Z Alex Cherepanov

Align the pointer to gx_clist_state array in gx_device_clist_writer device to
the natural boundary to avoid misaligned memory access and bus errors on ARM
processors. Bug 689600.

[src/gxclist.c]

2007-12-12T20:29:44.002303Z Igor Melichev

Fix (transparency) : Providing a right nested masks logic.

DETAILS :

This redoes the change 8340 without extra assumptions.
See comments in code.

[src/gdevp14.h src/gdevp14.c]

2007-12-12T19:58:31.269810Z Igor Melichev

Fix (transparency) : Unwinding the nested masks logic.

DETAILS :

The patch 8340 appears to be optimized for a particular case,
in which a call to pdf14_push_transparency_group
"will have been preceded by pdf14_push_transparency_mask ... pdf14_pop_transparency_mask".
This assumption is not true in general, when the clist interpreter
skips idle groups (either with incoming improvement or 
with using the band complexity array).

This patch unwinds the change 8340 and the dependent change 8342.
It also simplifies the garbager descriptor for pdf14_buf_s.

The nested mask problem is now reopen,
but we intend to close it shortly with a different patch.

[src/gdevp14.h src/gdevp14.c]

2007-12-12T19:00:44.753250Z Igor Melichev

Fix (clist interpreter) : Skip idle compositors, step 4.

DETAILS :

gs_pdf14trans_s doesn't need a reference counting.
Actually it was never used, so removing it should be
algorithmically equivalent.

[src/gsropc.c src/gsalphac.c src/gxcomp.h src/gsovrc.c src/gdevp14.c]

2007-12-11T23:47:18.340705Z Ray Johnston

Fix for SEGV when more than 4 colorants used with psdcmyk device.
Bug 689457 for customer #460.

DETAILS: 

Apparently the psdcmyk device never got updated with the ret_devn_params proc
as did the tiffsep device.

[src/gdevpsd.c]

2007-12-11T21:27:02.763129Z Ralph Giles

Store the posix persistent cache's last modified line as an unsigned 
long to avoid portability problems when reading and writing. Bug 689604.

DETAILS:

Previously we used time_t directly, but read and wrote it to the 
filesystem using the %ld printf format specifier, which is wrong
on systems where long int and time_t are different widths. Instead
we stort it as an unsigned long int, coercing the return value of
time(). This will be a year 2038 problem on systems with 32 bit longs, 
but seems the better option for portability now. There is no cast,
so the compiler should warn if this loses precision.

[src/gp_unix_cache.c]

2007-12-11T16:54:05.187153Z Marcos Woehrmann

Replaced C++ comments with C comments (// -> /* */).

[imdi/imdi.c imdi/imdi_tab.c imdi/imdi_gen.c imdi/cctiff.c]

2007-12-11T08:29:58.454613Z Ken Sharp

Fix (jbig2dec): Missing support for decoding multiple symbols
from a symbol dictionary, when using refinement/aggregation.

Details:
Bug #688945 "jbig2dec FATAL ERROR decoding image: aggregate
coding with REFAGGNINST=2 (segment 0x03)".

Improved the previous patch. We need to have a symbol dictionary
which contains all the original symbols, plus all the symbols decoded
so far, for the refinement/aggregation. Previously we created this
anew for each symbol, this patch creates the dictionary once at
the start of the dictionary decoding, and releases it when decoding
is complete.

Also releases the Huffman tables (if used), which was missed
in the previous patch.

[jbig2dec/jbig2_symbol_dict.c]

2007-12-10T22:11:05.461373Z Tor Andersson

Update to previous commit. Add pdf14_buffer maskbuf pointer to GC structures.

[src/gdevp14.c]

2007-12-10T20:27:11.787298Z Alex Cherepanov

Fix a compilation error on Tru64's native cc, which doesn't tolerate spaces
between -I and the directory. Thanks to M. Rutter for the patch. Bug 689602

[contrib/contrib.mak]

2007-12-10T16:13:26.551663Z Tor Andersson

Pick up the transparency mask buffer when a new transparency group is pushed rather than when it is popped. Solves memory leaks and incorrect rendering when transparency groups are nested.

[src/gdevp14.h src/gdevp14.c]

2007-12-10T09:45:03.624134Z Ken Sharp

Fix (jbig2dec): Missing support for decoding multiple symbols
from a symbol dictionary, when using refinement/aggregation.

Details:
Bug #688945 "jbig2dec FATAL ERROR decoding image: aggregate
coding with REFAGGNINST=2 (segment 0x03)".

Added missing support. When decoding a symbol dictionary, using
refinement/aggregation, and decoding multiple symbols, we need
to use text region decoding (single symbols use refinement
region decoding, already implemented).

This required making the text region decoding procedure available
to the symbol dictionary decoding routine, and correctly
initialising the parameters.

(jbig2_text.h) New include file. The 'Jbig2TextRegionParams'
structure and Jbig2RefCorner enum have been moved here from
jbig2_text.c, and a prototype for 'jbig2_decode_text_region'
created.

Added pointers for the adaptive arithmetic decoder tables to the
Jbig2TextRegionParams structure, as these tables must now be passed
to the decoder routine (see below) rather than initialised in it.

(jbig2_text.c) Modified the 'jbig2_decode_text_region' routine to
take the arithmetic decoder state or data stream (for Huffman
decoding) as a parameter. When being called from the symbol
dictionary decoder we must use the current decoder state; removed
the initialisation of the decoder state, this is passed as a
parameter Removed the initialisation of the adaptive arithmetic
decoder tables, these are now passed as part of the
Jbig2TextRegionParams structure.

Modified 'jbig2_parse_text_region' to create and initialise the
arithmetic decoder state (or data stream for Huffman). If
using adaptive arithmetic encoding, create and initialise the
tables.Required now that these are parameters to the text
region decoder.

(jbig2_symbol_dict.c) 'jbig2_decode_symbol_dict', when we
encounter refinement/aggregation with REFAGGNINST > 1, instead of
flagging an error create a Jbig2TextRegionParams structure (if
not already present), initialise the arithmetic decoder tables, and
call the text region decoder to create the bitmap. If we already
have a Jbig2TextRegionParams structure (because we have already
decoded a symbol this way) just use it as the argument to the
text region decoder.

[jbig2dec/jbig2_text.c src/jbig2.mak jbig2dec/jbig2_symbol_dict.c jbig2dec/jbig2_text.h]

2007-12-09T06:33:00.168945Z Alex Cherepanov

Use a smaller buffer for eexecDecode filter to avoid consumption of the data
that follow a short (and incorrect) run of 0's in PS files generated by
Adobe Acrobat from PDF files with usage restrictions. Bug 689577

DETAILS:
The buffer size of 132 has been selected from a middle of small window that
fixes the bug but doesn't cause regession in comparefiles/fonttest.pdf.
Detection of EOF after seing a run of 0's is worth to note as an alternative.

[src/seexec.c]

2007-12-08T13:57:53.015953Z Ken Sharp

Update the MSVC makefile to work with Visual Studio 2005 (nmake version 8). 
Should still be OK with MSVC 6.

[jbig2dec/msvc.mak]

2007-12-07T23:39:06.271814Z Igor Melichev

Fix (clist interpreter) : Skip idle compositors, step 3.

DETAILS :

The clist writer writes the 'create compositor' operation to all bands,
including ones that are not covered by a transparency.
It does so because this operation changes the number of color components.

When rendering a specific band, it frequently happens that a compositor
is created and then immediately destroyed. Such thing happens outside 
the transparency bbox, and within the transparency bbox if
the band has no transparent objects. When compositor is created,
it allocates a big raster buffer and cleans it. 
Due to that we observe a significant CPU time expence
when running the test case of the bug 689155.

This patch is a preparation for further improvements.
This patch includes CTM into pdf14 compositor params
(see changes to c_pdf14trans_read, c_pdf14trans_write, clist_create_compositor).
The result should be same as the old code, but the algorithm is different.
The old code wrote CTM as a separate command before cmd_opv_ext_create_compositor.
The new code does not, and in many cases compositor commads 
immediately follow each another.

The last fact changes the behavior of the compositor queue :
before this patch it consisted of 1 element maximum,
but after it the queue becomes longer (up to 10 elements
with SoftMaskGroup.pdf). A bug is fixed in the queue logic 
in gxclrast.c ln 1355.

The queue is still immediately executed
when a non-compositor command appears in the input stream.
An annihilation of neighbour idle compositors will be a next step.

Minor changes:

- added a new method adjust_ctm to gs_composite_type_procs_t.
- added type checks with composite_*_proc macros to all compositor types.
- dependencies were broken for gdevp14.c in lib.mak .

[src/lib.mak src/gsropc.c src/gdevdflt.c src/gxclpath.h src/gxcldev.h src/gsalphac.c src/gxcomp.h src/gsovrc.c src/gstrans.h src/gxclrast.c src/gdevp14.c src/gxclpath.c src/gxclimag.c src/gxclutil.c]

2007-12-05T23:39:42.529355Z Igor Melichev

Fix (clist interpreter) : Skip idle compositors, step 2.

DETAILS :

The clist writer writes the 'create compositor' operation to all bands,
including ones that are not covered by a transparency.
It does so because this operation changes the number of color components.

When rendering a specific band, it frequently happens that a compositor
is created and then immediately destroyed. Such thing happens outside 
the transparency bbox, and within the transparency bbox if
the band has no transparent objects. When compositor is created,
it allocates a big raster buffer and cleans it. 
Due to that we observe a significant CPU time expence
when running the test case of the bug 689155.

This patch is a preparation for further improvements.
The change is algorithmically equivalent.
It implements a compositor queue for a delayed applying of compositors.
Nevertheless currently the compositors are still applied immediately 
due to stubs in is_null_compositor_op, is_closing_compositor.

[src/gxcomp.h src/gxclrast.c]

2007-12-05T16:40:41.424504Z Igor Melichev

Fix (clist interpreter) : Skip idle compositors, step 1.

DETAILS :

The clist writer writes the 'create compositor' operation to all bands,
including ones that are not covered by a transparency.
It does so because this operation changes the number of color components.

When rendering a specific band, it frequently happens that a compositor
is created and then immediately destroyed. Such thing happens outside 
the transparency bbox, and within the transparency bbox if
the band has no transparent objects. When compositor is created,
it allocates a big raster buffer and cleans it. 
Due to that we observe a significant CPU time expence
when running the test case of the bug 689155.

This patch is a preparation for further improvements.
The change is algorithmically equivalent.
I simply divides read_create_compositor into 2 ones :
the first one just reads the instruction,
and the second one applies it. 
Also did a mionor code cleanup.

[src/gxclrast.c]

2007-12-05T00:08:50.583846Z Till Kamppeter

Let CUPS filters use buffered input to Ghostscript via '-_', to work around bug #689577. 

[cups/pstoraster.in cups/pstopxl.in]

2007-12-03T21:31:16.528843Z Henry Stiles

Replace the "tricky" unit_frac macro with a normal function call.  The
macro produced a false positive in valgrind and seems to cause
incorrect code generation on gcc 4.1.2 with optimization but we did
not study it in detail.  The change should be equivalent to the
previous code, reviewed by Ralph Giles.

[src/gxcmap.c src/gxcmap.h src/gscsepr.c src/gscdevn.c]

2007-12-03T20:07:05.165284Z Igor Melichev

Fix (shadings) : Optimize fill_linear_color_scanline with analitic computation of the color change position.

DETAILS :

Debugged with the test case of the bug 689155.

This optimizes slightly changing gradients.
It speeds up the test case from 6 hours to 5 hours.

The old code in gx_default_fill_linear_color_scanline 
recomputes color for each pixel.
The new code checks whether neighbour pixels have same color,
and if so it finds the color change position 
with solving a linear equation, 
and fills entire constant color interval 
without computing color for each pixel.

The linear equation is solved with 64 bits arithmetics.
We would like to create a 32bits algorithm someday.
We think it is possible with rounding colors to 16 bits
and restricting a run length with 15 bits. 
Note it must not accummulate rounding errors,
so it needs to compute from the run start at each iteration.
So if the scanline is wide, first split it into smaller ones
by coordinates, then break each subscanline into runs by color changes.

[src/gdevdsha.c]

2007-11-30T22:13:49.581001Z L. Peter Deutsch

Add a tool that analyzes logs produced by gs -Z67, producing a report of
memory leaks.

[toolbin/memory.py]

2007-11-30T06:43:47.688763Z L. Peter Deutsch

Adds the base font address to the -Zm tracing output.

[src/gsfont.c]

2007-11-30T06:43:12.449891Z L. Peter Deutsch

Fixes bug: -Z89 produced slightly mangled output (-Z9 output inserted in the
middle of a line of -Z8 output).

[src/igcref.c]

2007-11-30T00:45:53.632689Z Ray Johnston

Add URW fonts to the Resource/Font directory. These will be included when
COMPILE_INITS=1. Fontmap.GS still references the disk file name so that
the disk file based fonts can still be used if they are available.

[Resource/Font/URWPalladioL-BoldItal Resource/Font/NimbusRomNo9L-Medi Resource/Font/NimbusSanL-Bold Resource/Font/Dingbats Resource/Font/URWChanceryL-MediItal Resource/Font/CenturySchL-Roma Resource/Font Resource/Font/NimbusMonL-Bold Resource/Font/URWGothicL-Demi Resource/Font/NimbusSanL-BoldItal Resource/Font/NimbusRomNo9L-MediItal Resource/Font/StandardSymL Resource/Font/URWBookmanL-DemiBold Resource/Font/NimbusRomNo9L-Regu Resource/Font/URWGothicL-Book Resource/Font/NimbusSanL-ReguCond Resource/Font/CenturySchL-Bold Resource/Font/URWBookmanL-Ligh Resource/Font/NimbusRomNo9L-ReguItal Resource/Font/URWBookmanL-DemiBoldItal Resource/Font/NimbusMonL-ReguObli Resource/Font/NimbusSanL-ReguCondItal Resource/Font/CenturySchL-Ital Resource/Font/URWPalladioL-Roma Resource/Font/CenturySchL-BoldItal Resource/Font/URWBookmanL-LighItal Resource/Font/NimbusSanL-BoldCond Resource/Font/NimbusMonL-BoldObli Resource/Font/NimbusSanL-BoldCondItal Resource/Font/URWGothicL-DemiObli Resource/Font/NimbusSanL-Regu Resource/Font/URWPalladioL-Bold Resource/Font/NimbusMonL-Regu Resource/Font/URWGothicL-BookObli Resource/Font/NimbusSanL-ReguItal Resource/Font/URWPalladioL-Ital]

2007-11-29T21:39:53.584646Z Igor Melichev

Fix (shadings) : Optimize path manipulations for shading fill (continued).

DETAILS :

Debugged with the test case of the bug 689155.

A long ago the graphics library converted the sfill clipping into a path.
It was improved with revision 8017 with introducing 
a device response for pattern_manage__shfill_doesnt_need_path.
However the revision 8017 appears incomplete : 
it missed the related change to the clist writer device
and to pdf14 device. This patch fixes it.

This patch causes a progression for the problem
known as bug 689338 "Raster depends on bands".
With banded rendering some shadings are now painted some wider,
and the raster appears equal to one from unbanded rendering.
It happens because the old code doesn't convert shfill clipping
into a path when no banding, and does convert when banding.
The new code does not convert in both cases.

[src/gdevp14.c src/gxclpath.c src/gxclrect.c]

2007-11-29T01:42:16.432740Z L. Peter Deutsch

Remove obsolete variables dstderr and estderr; repair tracing code in
igcstr.c that would cause a crash if -Z5 was used.

[src/interp.c src/gdebug.h src/igcstr.c]

2007-11-28T20:04:34.791598Z Ray Johnston

Add the 'pamcmyk32' (previously the 'pam' device) to all default builds.
This will be used for regression testing of 32-bit CMYK.

DETAILS:

The 'pam' device is retained, but not included in the default builds,
in case anyone was using this. The 'pamcmyk32' name was created as
more descriptive.

[src/bcwin32.mak src/openvms.mak src/ugcclib.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/gdevpbm.c src/unixansi.mak src/macos-mcp.mak src/devs.mak src/os2.mak]

2007-11-28T19:47:48.435055Z Ralph Giles

Document the jasper build file version skew menioned in Bug 689570.

[doc/Release.htm]

2007-11-28T18:46:55.924792Z Ray Johnston

Fix #defines when USE_COMPRESSED_ENCODING == 0 so that the number of
components, separable/linear and encode/decode values are correct.
Also add checking for TIFF file larger than max_long.

[src/gdevtsep.c]

2007-11-28T18:39:59.435918Z Ray Johnston

Fix CIEBasedA problem, add DeviceGray and DeviceRGB support to this utility.

DETAILS:

This isn't used by Ghostscript, but is a useful utility for 'running' a
CIE colorspace conversion to see the intermediate and final results.

[lib/docie.ps]

2007-11-27T22:58:40.032075Z Ralph Giles

Also install gdevdsp.h in the unix so build. This header contains the
callback definitions for the "display" device. Bug 689576.

[src/unix-dll.mak]

2007-11-27T20:43:09.836338Z Ralph Giles

Update the regression code license headers with the current contact
address.

[toolbin/tests/dump_checksum.py toolbin/tests/cmpi.py toolbin/tests/gscheck_testfiles.py toolbin/tests/dump_checksum_plus.py toolbin/tests/check_source.py toolbin/tests/gssum.py toolbin/tests/gscheck_all.py toolbin/tests/dump_checksum_raw.py toolbin/tests/make_two_pdfversions toolbin/tests/check_all.py toolbin/tests/rasterdb.py toolbin/tests/gsutil.py toolbin/tests/gscheck_fuzzypdf.py toolbin/tests/revert_pdfbaseline toolbin/tests/build_revision.py toolbin/tests/compare_checksumdb.py toolbin/tests/gsconf.py toolbin/tests/revert_baseline toolbin/tests/update_baseline.py toolbin/tests/make_baselinedb.py toolbin/tests/gscheck_raster.py toolbin/tests/gsparamsets.py toolbin/tests/gstestutils.py toolbin/tests/compare_checksums.py toolbin/tests/check_dirs.py toolbin/tests/update_specific toolbin/tests/run_nightly.py toolbin/tests/gstestgs.py toolbin/tests/myoptparse.py toolbin/tests/run_regression.py toolbin/tests/get_baselines.py toolbin/tests/make_two_versions toolbin/tests/testdiff.py toolbin/tests/gscheck_pdfwrite.py toolbin/tests/make_testdb.py toolbin/tests/check_comments.py toolbin/tests/check_docrefs.py toolbin/tests/get_baseline_log.py]

2007-11-27T20:43:07.921159Z Ralph Giles

Change the regression scripts to rewrite the product as
"GPL Ghostscript".

[toolbin/tests/build_revision.py toolbin/tests/update_specific]

2007-11-27T18:11:10.542532Z Igor Melichev

Fix (graphics) : Improving the setoverprint logic.

DETAILS :

Debugged with the test case of the bug 689155.

This eliminates unnecessary calls of dx_device::procs.create_compositor.
In the test case the oprator 'show' calls gs_save and gs_restore
and the latter performs unnecessary call to gs_do_set_overprint
due to overprint is set at page start. It causes a significant CPU time expense 
while clist interpretation.

We're not sure why the old code is such,
we change it as we think correct.
Will see the regression test results.
A local test gave no differences.

[src/gsstate.c]

2007-11-23T09:23:06.243419Z Ken Sharp

Fix (pdfwrite): Fonts containing glyphs with no sbw or hsbw
instruction caused pdfwrite to crash.

Details:
Bug #689544 "Segmentation fault writing PDF file".

The job contains a number of fonts apparently converted from 
TrueType to type 1. The /.notdef glyph in every case consists
only of an endchar instruction. Techincally invalid since the 
specification says the first instruction must be either an sbw
or hsbw instruction.

This causes a crash because gs_type1_glyph_info didn't create
a path before interpreting the glyph. If we encountered a path
operation before a sbw instruction we attempted to write to the 
non-existent path.

(gxtype1.c), gs_type1_glyph_info, create a path for the type 1
interpreter to work with. Make it a bbox_accumulator so we don't
allocate memory for path segments.

(gdevpsfu.c), psf_check_outline_glyphs, if we get an invalidfont
error return from the font's 'glyph_info' procedure, don't exit
immediately. Check each glyph, and only return an error if 
there are no good glyphs. 

[src/gxtype1.c src/gdevpsfu.c]

2007-11-22T02:46:59.719550Z Ralph Giles

Correct Id line and double-include protection warnings.

[src/ConvertUTF.h toolbin/tests/check_source.py src/expat.mak]

2007-11-22T01:03:46.485805Z Ralph Giles

Update the run_nightly regression script to rewrite the product
name to GPL Ghostscript instead of AFPL Ghostscript. Also, include
quotation marks in the optional part of the regex so we work when
GS_PRODUCT is set to another macro and does not include a literal
string, as it does at release time.

[toolbin/tests/run_nightly.py]

2007-11-22T00:54:03.544607Z Ralph Giles

Correct a format string error in the PDF 1.4 spot color name generation.

[src/gdevp14.c]

2007-11-22T00:54:01.468513Z Ralph Giles

Update release procedure documentation.

[doc/Release.htm]

2007-11-21T22:42:03.178745Z Ralph Giles

Bump the version number and date after the 8.61 release.

[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]

2007-11-21T20:07:08.596302Z Ralph Giles

Update changelogs and release date for the second 8.61 candidate.

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

Version 8.61 (2007-11-21)

This is the second release in the Ghostscript 8.6x stable series. It contains a number of bug fixes and improvements.

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

226943, 430175, 465936, 493348, 535932, 578865, 614298, 626295, 686747, 686853, 686865, 687011, 687039, 687084, 687095, 687146, 687193, 687196, 687257, 687271, 687280, 687295, 687297, 687303, 687327, 687342, 687345, 687375, 687414, 687475, 687492, 687514, 687520, 687531, 687536, 687561, 687593, 687608, 687630, 687650, 687666, 687674, 687677, 687695, 687697, 687702, 687715, 687721, 687728, 687729, 687731, 687775, 687780, 687782, 687793, 687796, 687805, 687814, 687850, 687887, 687903, 687904, 687907, 687915, 687931, 687950, 687957, 687974, 687981, 687983, 688007, 688022, 688024, 688026, 688032, 688036, 688042, 688058, 688061, 688064, 688066, 688075, 688081, 688095, 688129, 688130, 688151, 688152, 688159, 688166, 688184, 688187, 688204, 688207, 688210, 688215, 688227, 688239, 688267, 688269, 688280, 688282, 688288, 688312, 688317, 688318, 688320, 688333, 688342, 688358, 688359, 688360, 688361, 688363, 688372, 688378, 688386, 688387, 688389, 688395, 688413, 688427, 688428, 688436, 688437, 688440, 688446, 688448, 688468, 688473, 688475, 688483, 688490, 688495, 688500, 688515, 688517, 688528, 688533, 688539, 688540, 688542, 688543, 688557, 688565, 688573, 688580, 688581, 688588, 688601, 688604, 688605, 688610, 688615, 688616, 688617, 688619, 688627, 688636, 688638, 688643, 688646, 688647, 688651, 688653, 688655, 688673, 688674, 688696, 688697, 688699, 688708, 688709, 688710, 688711, 688714, 688717, 688728, 688731, 688736, 688739, 688757, 688770, 688774, 688777, 688778, 688796, 688797, 688806, 688807, 688811, 688813, 688815, 688818, 688829, 688843, 688845, 688846, 688871, 688872, 688876, 688908, 688918, 688919, 688923, 688926, 688928, 688933, 688942, 688943, 688945, 688949, 688952, 688958, 688969, 688970, 688976, 688978, 688986, 688990, 688992, 688994, 688999, 689003, 689011, 689013, 689014, 689022, 689025, 689028, 689031, 689032, 689040, 689044, 689046, 689048, 689057, 689058, 689060, 689065, 689070, 689076, 689077, 689078, 689080, 689081, 689090, 689093, 689094, 689098, 689103, 689107, 689111, 689116, 689128, 689129, 689130, 689133, 689136, 689137, 689138, 689145, 689146, 689148, 689150, 689153, 689154, 689155, 689159, 689161, 689164, 689167, 689172, 689174, 689181, 689184, 689188, 689195, 689198, 689199, 689206, 689209, 689210, 689222, 689224, 689230, 689236, 689241, 689246, 689247, 689248, 689252, 689253, 689264, 689266, 689278, 689279, 689280, 689281, 689283, 689289, 689290, 689291, 689295, 689304, 689305, 689306, 689308, 689313, 689331, 689335, 689338, 689340, 689341, 689343, 689356, 689358, 689361, 689363, 689364, 689367, 689369, 689370, 689373, 689376, 689378, 689389, 689392, 689396, 689402, 689412, 689418, 689419, 689421, 689422, 689423, 689428, 689431, 689438, 689439, 689440, 689444, 689445, 689448, 689450, 689451, 689456, 689457, 689460, 689461, 689462, 689463, 689464, 689469, 689471, 689472, 689473, 689476, 689482, 689484, 689487, 689488, 689489, 689490, 689492, 689498, 689499, 689500, 689502, 689506, 689507, 689509, 689510, 689512, 689514, 689515, 689516, 689518, 689521, 689522, 689525, 689528, 689532, 689533, 689534, 689535, 689536, 689538, 689542, 689543, 689544, 689546, 689547, 689549, 689550, 689552, 689554, 689557, 689558, 689559, 689560, 689561, 689563, 689566, 689567, 689568, 689569.

Incompatible changes

The default device on unix-oriented builds was temporarily switched to the bbox device in the 8.60 release. In the 8.61 release, the default was changed again to the x11alpha device, if X11 support is available, and otherwise falls back to the bbox device.

Changelog

2007-11-21T19:44:40.574652Z Ralph Giles

Revert the change to using an environment variable for the MSVC LIBPATH. 

Details:

This wasn't effective in addressing the problem and could cause 
additional trouble if the environment isn't configured. The changes
in r8394 should properly address the issue of quote interpretation
with MSVC6.

[src/msvc32.mak]

2007-11-21T06:10:53.144641Z Henry Stiles

Check that a device halftone exists before writing it.  Fixes
segmentation fault in xps.  No differences expected.

[src/gdevp14.c]

2007-11-21T05:57:23.672501Z Ray Johnston

Fix compiler flag conflict for non-debug build (seen when switching
PCL6 build to default to non-debug default). Changes /ZI to /Zi.

[src/msvccmd.mak]

2007-11-20T18:36:58.009554Z Ray Johnston

Fix broken MSVC 6 build issue caused by change in src/msvccmd.mak that puts
a LIBPATH into the link command line. MSVC linker can't handle spaces in the
LIBPATH even if within " ". We use an environment variable set by Microsoft
MSVC 6 'vcvars32.bat' instead. This can be manually set if needed.

[src/msvc32.mak]

2007-11-20T11:42:22.623309Z Ken Sharp

Batch file to create MSVC solution and projects.

Usage:
msvcxml gs obj\ld.tr > ghostscript.sln

This is the first attempt, and very poor.

[toolbin/msvcxml.bat]

2007-11-19T23:57:46.396323Z Ralph Giles

Change the product name for the release.

[src/gscdef.c]

2007-11-19T23:56:28.975783Z Ralph Giles

Update changelogs for release.

[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]

2007-11-19T20:36:07.538187Z Igor Melichev

Fix (transparency) : Wrong background color of a soft mask group.

DETAILS :

Bug 689531 "Regression: PDF file has undesired extra gray object.".

The old code used the 0th component of the background color
instead its gray equivalent.  The bug was introduced when 
working on bug 687176.

[src/gdevp14.c]

2007-11-19T20:24:07.302766Z Ralph Giles

Update documentation timestamps for 8.61.

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

2007-11-19T20:23:39.904096Z Ralph Giles

Remove the verification checks for PVERSION and JVERSION, which we no 
longer use.

[toolbin/pre.tcl]

2007-11-19T20:15:45.795513Z Ralph Giles

Add new files to the documentation.

[doc/Develop.htm doc/Psfiles.htm]

2007-11-19T20:15:43.672566Z Ralph Giles

Update release notes and date for 8.61.

[doc/News.htm src/version.mak]

2007-11-18T22:50:36.855233Z Alex Cherepanov

Normalize weigts in the Mitchell filter and use proper rounding to ensure
that the constant value is not changed by the filter.
Bug 689556, customer 581.

[src/siscale.c]

2007-11-18T16:48:41.008511Z Igor Melichev

Fix (clist interpreter) : Transparency caused a wrong color depth.

DETAILS :

Bug 689520 Regression: 1bpp and grayscale output broken.

The clist interpreter clist_playback_band maintains 2 devices :
the clist reader and target. The clist reader device stores
private interpreter's data. However using a device structure
for this purpose is pretty confusing, because the target 
device may have same device fields with different values.
Particularly while processing a transparency, the target device
chage to a transparency buffer device, 
which may have a different number of color components.

The problem happens due to the clist interpreter used
a wrong device to obtain the number of color components.
This patch changes the code with taking color components 
from the target device. 

Now we don't try to analyze all other access to the clist device -
it should be a subject of a separate job. 
Therefore the code may need further improvements.
The right way would be to define a special structure for the clist interpreter, 
and to drop the clist reader device at all.

[src/gxclrast.c]

2007-11-18T09:30:55.737640Z Russell Lang

Remove incorrect and unnecessary gtk+ separation code. Fixes bug 689541.

[src/dxmain.c]

2007-11-18T06:07:20.783700Z Igor Melichev

Fix (clist) : Improving the debug printing.

DETAILS :

This patch only inserts some debug trace printing about the pdf14 compositor.
The old code is confusing due to mapping an obsolete instruction to "set_color[*]".

[src/gxclpath.h]

2007-11-18T05:30:55.503323Z Igor Melichev

Fix (clist) : Improving the debug printing.

DETAILS :

This patch only inserts some debug trace printing about the pdf14 compositor.
The old code generates a confusing trace due to missing an important information.

[src/gstrans.c src/gdevp14.c]

2007-11-16T21:39:22.306411Z Ray Johnston

Fix dependency problems that caused obj/gs_init.ps to be missed. Also fix a
typo that caused CMap files to be missing.

DETAILS:

This method of putting the gs_init.ps dependency down in lib.mak require
us to get gs_init.ps. This hack was discussed with Ralph and is an
alternative to adding a dependency to all of the top level makefiles.
The dummy gs_init.ps is only made when we are NOT including the PS
interpreter (PSI_INCLUDED) since we need the real one for the language
switch build. Note that the dummy file doesn't get added to the %rom%
file system since PS_ROMFS_ARGS is empty if int.mak is not included.

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

2007-11-16T21:14:31.380613Z Ralph Giles

Correct typos and spelling errors in the change log. Bug 688940.

[doc/History8.htm]

2007-11-16T08:11:05.046465Z Igor Melichev

Fix (clist) : Providing clist instruction ids and offsets to debug trace (continued 2).

DETAILS :

The last patch (rev 8365) appears incorrect and causes crashes with halftoning devices.

The problem happens due to gx_device_clist_reader::offset_map 
has been initialized too early in clist_reader_init. 
At that moment the device is still a clist writer, 
but the field offset_map belongs to clist reader. 
Due to gx_device_clist_s is a union, the field overlaps band_range_list.head,
and the letter was prematurely reset. It caused some commands were not written
to clist file while the page closes. With the test case (pbmraw -r300 012-01.ps)
it missed cmd_opv_ext_put_halftone and did not miss cmd_opv_ext_put_drawing_color
with color index type == ht_binary. It caused the crash in gx_dc_ht_binary_readdue to 
pis->dev_ht was not set. (cmd_opv_ext_put_halftone does set, but it was missed).

The log message of the revision 8365 reads :
"This change is algorithmically equivalent for release build."
This statement is false due to the premature initialization of 
gx_device_clist_reader::offset_map.
This patch fixes that with removing its initialization from 
clist_reader_init. A subsequent call to clist_render_init initializes it.

The last patch was made buggy due to the function name 
clist_reader_init does not properly reflects its finction.
This patch fixes the naming.

Also provided more stability in gxht.c with a check for NULL pointer.

[src/gxclread.c src/gxht.c]

2007-11-16T02:10:56.107493Z Ralph Giles

Update the makefile for current pkgconfig macros.

[ijs/Makefile.am]

2007-11-16T01:52:09.559298Z Ralph Giles

Don't generate build files for the ijs package when building. Since this 
is distinct from 'make dist' the results are not optimal Bug 689425.

[doc/Release.htm]

2007-11-15T07:22:43.143761Z Igor Melichev

Fix (clist) : Providing clist instruction ids and offsets to debug trace (continued).

DETAILS :

The last patch appears incorrect for the debug build 
and causes crashes sometimes. Not sure why local testing didn't detect that.

This change is algorithmically equivalent for release build.
In the debug build it fixes problems of the last patch.

1. Offset map could be prematurely released by the garbager
(It could cause a crash. Not sure why the local test didn't detect it).
A new pointer gx_device_clist_reader::offset_map prevents that.
Added it to the garbager descriptor and provided its initialization.

2. buffer_segment_index can fail with returning a negative index.
Checked that and propagated error codes.

4. Besides top_up_cbuf, the buffer topping up also happens 
with calling memmove when reading bitmap data. 
Added calls to top_up_offset_map for accounting that.

5. See comment in top_up_offset_map about the improved invariant.

6. The prototupe of top_up_cbuf is changed with passing the error code.
Due to that the variable 'cbp' is droped the 'register' modifier.
We believe it won't cause a visible slowdown because
modern compilers are smart enough.

7. Do not maintain offset_map when -ZL is not specified.
It saves some CPU time with debug build.

[src/gxclist.c src/gxcldev.h src/gxclist.h src/gxp1fill.c src/gxclrast.c src/gxclread.c src/gxclpage.c src/gxclutil.c]

2007-11-14T23:03:22.440437Z Ralph Giles

Remove an obsolete include.

[src/gendev.c]

2007-11-14T22:06:13.972530Z Ray Johnston

Refactor the gs int.mak and lib,mak to simplify building COMPILE_INITS=1 without PS (PCL
only build). Make sure gs/src/ugcclib.mak does conditional assignment of COMPILE_INITS

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

2007-11-14T22:04:53.375824Z Ray Johnston

Fix number of macro arguments that showed an error when FPU_TYPE=-1 (no FPU)

[src/gsciemap.c]

2007-11-14T18:37:45.596510Z Igor Melichev

Fix (clist) : Providing clist instruction ids and offsets to debug trace.

DETAILS :

This change is algorithmically equivalent for release build.
In the debug build it only adds a new debug printing.

Let clist segment is consecutive instuctions buffered for same band.

1. gx_device_clist_writer::ins_count counts clist segments.

2. cmd_prefix_s::id is the number of clist segment that it belongs to.

3. stream_band_read_state_s::offset_map stores a table for mapping
clist segments' buffer offsets to clist file offsets.

4. s_band_read_init_offset_map, s_band_read_dnit_offset_map,  
clist_file_offset, top_up_offset_map maintain the table.

5. Inserted a debug printing into gxclutil.c, gxclrast.c .

[src/gxclist.c src/gxcldev.h src/gxclist.h src/gxclrast.c src/gxclread.c src/gxclutil.c]

2007-11-14T18:09:02.242685Z Igor Melichev

Fix (clist) : A preparation for providing clist instruction ids and offsets to debug trace.

DETAILS :

We would like this change to be algorithmically equivalent,
but the proof is too complex. Therefore we commit it separately
in order to check for raster differences.

1. Inserted a new field into cmd_prefix_s.
For now this field is never used, but it changes memory allocation.
Due to that the bufferring in the clist writer goes slightly different.
Particularly it may cause new effects while restarting failed instructions.

2. Early return from top_up_cbuf when the stream is over.
The new code does not top up the last portion of the data stream.
It shouldn't be important for the reader, but we can't proove for sure.
This change is necessary because we want to add more fields to gx_clist_state_s,
and the new fields would be invalid after s_close resets stream::state.
See the next patch for details.

[src/gxclist.h src/gxclrast.c]

2007-11-14T02:22:53.263144Z Ralph Giles

Add support for passing EXPAT_CFLAGS from the top-level makefile.
Passing -DHAVE_MEMMOVE is required in the unix build.

[src/expat.mak]

2007-11-14T02:06:05.012311Z Ralph Giles

Remove spurious executable bits.

[expat/MANIFEST expat/conftools/expat.m4 expat/tests/benchmark/benchmark.c expat/lib/internal.h expat/COPYING expat/Changes expat/lib/utf8tab.h expat/tests/runtestspp.cpp expat/tests/runtests.c expat/lib/expatw_static.dsp expat/lib/libexpat.def expat/amiga/include/proto/expat.h expat/tests/README.txt expat/xmlwf/xmlfile.c expat/xmlwf/xmlfile.h expat/xmlwf/ct.c expat/lib/Makefile.MPW expat/xmlwf/codepage.c expat/vms/descrip.mms expat/xmlwf/codepage.h expat/bcb5/elements.bpf expat/lib/amigaconfig.h expat/amiga/expat_lib.c expat/bcb5/elements.bpr expat/lib/expat.h expat/win32/README.txt expat/conftools/get-version.sh expat/doc/valid-xhtml10.png expat/examples/outline.dsp expat/xmlwf/readfilemap.c expat/bcb5/outline.mak expat/lib/xmlrole.c expat/amiga/launch.c expat/bcb5/expat_static.mak expat/lib/xmlrole.h expat/lib/winconfig.h expat/examples/elements.dsp expat/win32/expat.iss expat/win32/MANIFEST.txt expat/amiga/expat.xml expat/bcb5/outline.bpf expat/expat_config.h.in expat/lib/libexpatw.def expat/lib/expatw.dsp expat/bcb5/expat.mak expat/lib/xmltok.c expat/vms/README.vms expat/tests/benchmark/README.txt expat/bcb5/expat_static.bpf expat/lib/xmltok.h expat/tests/xmltest.sh expat/lib/latin1tab.h expat/bcb5/outline.bpr expat/tests/minicheck.c expat/xmlwf/xmlwf.dsp expat/conftools/PrintPath expat/tests/minicheck.h expat/Makefile.in expat/lib/expat_static.dsp expat/bcb5/libexpat_mtd.def expat/bcb5/expat_static.bpr expat/lib/xmltok_impl.c expat/bcb5/expatw.mak expat/amiga/include/interfaces/expat.h expat/lib/xmltok_impl.h expat/xmlwf/filemap.h expat/bcb5/expatw_static.mak expat/vms/expat_config.h expat/bcb5/expat.bpf expat/xmlwf/xmlwin32url.cxx expat/lib/xmltok_ns.c expat/xmlwf/xmltchar.h expat/doc/reference.html expat/tests/benchmark/benchmark.dsp expat/bcb5/expat.bpr expat/bcb5/xmlwf.mak expat/bcb5/setup.bat expat/lib/xmlparse.c expat/tests/benchmark/benchmark.dsw expat/conftools/install-sh expat/configure.in expat/conftools/libtool.m4 expat/bcb5/expatw.bpf expat/amiga/Makefile expat/bcb5/expatw_static.bpf expat/bcb5/expatw.bpr expat/bcb5/expatw_static.bpr expat/bcb5/xmlwf.bpf expat/lib/expat_external.h expat/configure expat/lib/macconfig.h expat/conftools/ac_c_bigendian_cross.m4 expat/lib/ascii.h expat/amiga/expat_vectors.c expat/conftools/mkinstalldirs expat/bcb5/README.txt expat/amiga/README.txt expat/bcb5/xmlwf.bpr expat/xmlwf/unixfilemap.c expat/doc/xmlwf.sgml expat/bcb5/all_projects.bpg expat/xmlwf/xmlurl.h expat/doc/expat.png expat/amiga/include/inline4/expat.h expat/examples/elements.c expat/expat.dsw expat/amiga/stdlib.c expat/amiga/include/libraries/expat.h expat/lib/iasciitab.h expat/xmlwf/xmlmime.c expat/tests/chardata.c expat/xmlwf/xmlmime.h expat/doc/style.css expat/README expat/tests/chardata.h expat/conftools/config.guess expat/doc/xmlwf.1 expat/conftools/ltmain.sh expat/conftools/config.sub expat/lib/nametab.h expat/bcb5/libexpatw_mtd.def expat/lib/asciitab.h expat/xmlwf/xmlwf.c expat/lib/expat.dsp expat/examples/outline.c expat/xmlwf/win32filemap.c expat/bcb5/elements.mak expat/bcb5/makefile.mak]

2007-11-13T18:57:18.728921Z Igor Melichev

Fix (make) : Could not build for x64 platform with Developer Studio 2005. 

DETAILS :

1. The old code uses the 32 bits compiler for compiling build utilities 
(genarchg, echogs), and then tries to link them with x64 libraries.

2. Developer Studio 2005 doesn't support -ZI 
(debug database for edit end continue) for the x64 platform. 

[src/msvccmd.mak]

2007-11-13T10:01:55.069333Z Ken Sharp

Fix (pdfwrite): type 3 fonts with exceedingly small BoundingBox
entries were clamped to 0 or 1.

Details:
Bug #689537 "FontBBox wrong in pdf generated by ps2pdf (breaks
acrobat 8)".

The type 3 font has a FontBBox of [0 0 0.3 0.3]. Because
pdfwrite uses integers to record the font bounding box, this was 
being clampled to [0 0 1 1]. This should not cause a prolem, but
for unknown reasons causes Acrobat 8 to render *very* slowly.

(gdevpdtf.h), 'struct /*type 3*/', alter the FontBBox member from
a gs_int_rect to a gs_rect to preserve floating point box values.

(gdevpdtt.c), pdf_make_font3_resource, copy the font bbox values
instead of floor'ing the lower and ceil'ing the upper values.

(gdevpdfu.c), create a new function 'pdf_write_font_bbox_float'
to write the bbox as floats instead of ints.

(gdevpdfx.h) prototype 'pdf_write_font_bbox_float'

(gdevpdtw.c), pdf_finish_write_contents_type3, use the new
routine to write out a floating point bounding box.

[src/gdevpdfx.h src/gdevpdtt.c src/gdevpdfu.c src/gdevpdtw.c src/gdevpdtf.h]

2007-11-12T08:59:35.891834Z Ken Sharp

Fix (pdfwrite): named objects, created via a pdfmark such as /BP,
could not have their content modified after the object was completed.

DETAILS:
Bug #689104 "Overwriting transformation /Matrix in XObject previously
created with /BP & /EP pdfmarks".

Some pdfmarks, such as /BP create named objects. These can accumulate
information until a matching pdfmark (/EP in this case) completes the
object. When complete, objects were written to the final destination
PDF file. This made it impossible to later modify the object.

(gdevpfm.c) pdfmark_bind_named_object, change the call to
pdf_substitute_resource to defer writing the object to the
destination file, if the object is named. This means the object is still
available for modification until the end of the job. NB if the object
is not named, we still write it immediately, as there is no mechanism
for modifying an unnamed object, nor do we currently have a mechanism
for maintaining a record of unnamed objects.

[src/gdevpdfm.c]

2007-11-10T17:20:49.620638Z Alex Cherepanov

Pre-scan the stream for '{' during the stream length check to avoid reading
to the end of the stream and closing it. Bug 689551, customer 661.

[lib/pdf_base.ps]

2007-11-09T21:18:04.579128Z Ralph Giles

Remove the JVERSION makefile variable.

We only support the current version 6 library, and it seems
unlikely to revise in the the near future. We also include
our own copy of the source now, so it is less important to
support a variety of third party library versions.

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

2007-11-09T21:15:56.512922Z Ralph Giles

Remove the PNGVERSION makefile variable.
    
We no longer support building older versions of the libpng source,
and now include our own version, so there is no reason to maintain
this.

[src/openvms.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/bcwin32.mak src/ugcclib.mak src/gs.mak src/libpng.mak doc/Make.htm src/msvc32.mak src/unix-gcc.mak src/macos-mcp.mak src/all-arch.mak src/watclib.mak]

2007-11-09T21:00:48.139238Z Ralph Giles

Update the top level makefiles with the current libpng version number.

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

2007-11-09T20:58:19.833269Z Ralph Giles

Use PNGSRCDIR and PNGVERSION instead of PSRCDIR and PVERSION in
the top level makefiles.

[src/openvms.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/bcwin32.mak src/ugcclib.mak src/gs.mak src/libpng.mak src/Makefile.in doc/Make.htm src/msvc32.mak src/unix-gcc.mak src/macos-mcp.mak src/all-arch.mak src/watclib.mak]

2007-11-09T19:54:57.891517Z Ralph Giles

Minor cleanup of the expat makefile.

[src/expat.mak]

2007-11-09T01:14:15.828665Z Ralph Giles

Change the jbig2dec license from GPLv2 to GPLv2 or later.

[jbig2dec/LICENSE]

2007-11-08T07:57:21.838362Z Suzuki Toshiya

Fix: Ignore problematic post table in format 2.0 with ISOLatin1Encoding glyph names.

DETAILS:
Some TrueType fonts converted by "Windows Type 1 Installer" have
problematic post table format 2.0 including MacGlyphEncoding
entries which should be omitted. Such extra entries in the
beginning of glyphName array make /Encoding broken. By checking
if glyph name in post table is predefined one in MacGlyphEncoding,
such problematic post table can be detected. By ignoring such
problematic post table, bug 689495 is fixed.

However, some TrueType fonts designed for Microsoft redefines
MacGlyphEncoding glyph name out of predefined range. To permit
such font, the post table in format 2.0 is checked by
ISOLatin1Encoding which is the cross section of MacGlyphEncoding
and WinAnsiEncoding. ISOLatin1Encoding is enought to fix the
bug 689495.

[lib/gs_ttf.ps]

2007-11-07T07:13:45.310142Z Ralph Giles

Preliminary makefile for the expat third party library.

Can be used to link to the system expat with SHARE_EXPAT=1,
but compiling the source doesn't work on linux in this revision
because of missing configuration defines.

[src/gs.mak src/expat.mak]

2007-11-07T05:04:06.063702Z Ralph Giles

Copy the expat-2.0.1 tag source into the gs tree.

This 3rd party library is needed for XPS and eventually SVG support.

[expat]

2007-11-07T04:19:13.410191Z Alex Cherepanov

Add a skeleton implementation of the text extraction device.
It doesn't do anything useful yet, only prints "Hello world" once per page.

[src/gdevtxtw.c src/bcwin32.mak src/openvms.mak src/macosx.mak src/watcw32.mak src/Makefile.in src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/devs.mak src/os2.mak]

2007-11-02T19:09:03.093400Z Marcos Woehrmann

Fix for Bug 689316.

On some systems XInitImage() appears to have
problems with images that are one pixel in height, so
if XInitImage() returns an error call XPutImage() instead.  

[src/gdevx.c]

2007-11-02T18:16:45.038692Z Ralph Giles

Document the interaction between a the vector device beginpage method
and gdev_vector_stream() more clearly.

[src/gdevvec.h]

2007-11-01T20:49:28.224038Z Ray Johnston

Make sure that errors are propogated to caller in the WTS device (such
as VMerror). Bug 689511 for customer 951.

DETAILS:

This doesn't really fix the underlying problem seen by the (embedded)
customer where the clist rendering uses a large amount of RAM.

[src/gdevwts.c]

2007-11-01T17:22:45.182105Z Igor Melichev

PS interpreter : Trace the executed operators' names (continued).

DETAILS :

Fix an inaccurate coding of the last patch.

[src/iinit.c]

2007-11-01T16:20:01.816428Z Igor Melichev

PS interpreter : Trace the executed operators' names.

DETAILS :

This change is syntactically equivalent for a default build.
For obtaining the new functionality Ghostscript must be compiled
with a new predefined macro DEBUG_TRACE_PS_OPERATORS.
The new debug switch '!' prints names of operators executed while the interpretation.
Note : Inline operators (which are expanded inside interp.c) are not printed. 

[src/iinit.c doc/Use.htm src/int.mak src/iinit.h src/interp.c]

2007-11-01T15:56:22.262417Z Alex Cherepanov

Move a 32K array from the stack to the heap to save stack space.

DETAILS:
Ghostscript is designed to run with 64K stack space for compatibility with
embedded environments. Unlike other MS systems, Windows NT enforces stack
space limit claimed by the application. MSVC 6 run-time uses about 8K
internally and remaining 56K stack was insufficient. 

[src/gdevpdfi.c]

2007-10-31T17:01:02.758539Z Ralph Giles

Rewrite gs_getdefaultdevice to avoid allocating memory.

The new version also skips tabs as whitespace and is more robust.

[src/gsdevice.c]

2007-10-31T17:00:59.582623Z Ralph Giles

Add a new GS_DEV_DEFAULT makefile variable for passing a preferred list
of default devices, in order of priority. These are passed through to
the C code, and searched for in gs_getdefaultdevice().

[src/gs.mak src/Makefile.in src/gscdefs.h src/gsdevice.c src/gscdef.c]

2007-10-31T17:00:55.551499Z Ralph Giles

Add Postcript bindings to gs_getdefaultdevice() and use them to set the
default device in the interpreter. Bug 689273.

[doc/Language.htm src/zdevice.c lib/gs_init.ps]

2007-10-31T17:00:51.435508Z Ralph Giles

Add a gs_getdefaultdevice() call and use it when printing the help
message. It just returns the first device as before. Bug 689273.

[src/gsdevice.h src/imainarg.c src/gsdevice.c]

2007-10-30T23:45:46.184301Z Ralph Giles

Add missing dependencies to the contrib device build.

[contrib/contrib.mak]

2007-10-30T19:26:01.651347Z Igor Melichev

Fix (banding) : Improving the debug trace about compositors (continued).

DETAILS :

This change is algorithmically equivalent for release build.
In the debug build it only improves debug printing
with distinguishing gs_ and gx_ operations.

[src/gstrans.c]

2007-10-30T17:47:49.373667Z Igor Melichev

Fix (banding) : Improving the debug trace about compositors.

DETAILS :

This change is algorithmically equivalent for release build.
In the debug build it only adds more debug printing.

1. Added a debug printing for alpha, overprint and rop compositors
when writing/reading from/to clist.

2. (gxclrast.c) When printing a matrix with the 'L' switch,
use global page coordinates as rectangle operations do.
It allows to map reading operatrions to corresponding writeing operations.
  

[src/gsropc.c doc/Use.htm src/gsalphac.c src/gsovrc.c src/gxclrast.c]

2007-10-30T00:58:44.912591Z Ralph Giles

Add a cast to prevent a warning.

[src/zfjpx.c]

2007-10-28T23:33:59.326612Z Alex Cherepanov

Move "true .setaccuratecurves" to the PDF graphic state initialization
where it belongs. This fix enables accurate curve rendering by GSview
doesn't use some parts of Ghostscript startup code. Bug 688434.

[lib/pdf_main.ps lib/pdf_ops.ps]

2007-10-28T18:22:29.779063Z Ralph Giles

Correct a typo.

[doc/Use.htm]

2007-10-28T17:17:47.899537Z Alex Cherepanov

Change pdf_base.ps::.pdfrun and pdf_sec.ps::.decpdfrun to ensure
"PDFScanRules" == "true" while scanning the PDF, and if necessary revert
it back to "null" before returning. Thanks to SaGS for the patch. Bug 688598.

DETAILS:
The bug is triggered by the construct "//DeviceGray" found in  the sample PDF.
The following command fails with the same error as GSView, and for the
same reason:

    pdfopt.bat media_365163.pdf output.pdf

When Ghostscript interprets a PDF directly, most of the job is done by
LIB\pdf_main.ps::dopdfpages which sets "PDFScanRules" correctly. However,
the initial part of scanning the PDF (trailer dict, ...), and the rebuild
logic scan the PDF with wrong "PDFScanRules". Also GS's own various tools
and GSView don't set/ reset it as needed.

Implementation details:

(A) ".pdfrun" and ".decpdfrun" dinamically construct procedures that do the
real work and immediately execute them. The patch changes  these procedures
to include setting/ restoring "PDFScanRules". If "PDFScanRules" == "true"
already, then "setuserparams" is not called at all, so normally
(when ".[dec]pdfrun" executed during "dopdfpages") there's practically no
impact on performance.

There are also "token" calls outside these 2 procedures, but these calls are
for scanning the xref and "# # obj" lines, which don't contain PDF name
objects.

(B) ".getuserparam" GS-specific operator changed to recognize scanner options
too ("PDFScanRules" and "PDFScanInvNum"). This is needed by ".[dec]pdfrun"
for restoring "PDFScanRules"; also used for an optimization (to omit calling
"setuserparams" when not actually needed).

Note:
    For "Process[DSC]Comment" it returns "true" if a procedure 
    is set, and not the actual procedure. To retrive the 
    procedures (or null if none set), use "currentuserparams". 

(C) ".currentuserparams" is NOT modified, so it does not return scanner
options. If it did, these ended up being put into "userparams" and be
affected by "save"/ "restore" (see the  redefinition of "restore" in
gs_lev2.ps).

[src/itoken.h lib/pdf_base.ps lib/pdf_sec.ps src/zusparam.c src/ztoken.c]

2007-10-28T14:19:46.108672Z Alex Cherepanov

Stop reading the xref+trailer at the closing ">>" because PDF 1.7 Reference
made "startxref" optional in some cases. Thanks to SaGS for thr patch.
Bug 688283.

DETAILS:
The PDF 1.7 Reference, section F.2.3 "First-Page Cross-Reference 
Table and Trailer (Part 3)", 2nd paragraph on page 1031 states:

   "The first-page trailer may optionally end with startxref, an 
    integer, and %%EOF, just as in an ordinary trailer. This 
    information is ignored."

(note the word "optionally"), so in such a case a PDF interpreter 
cannot rely on anything particular (like "startxref"/ "startref"/ 
"xref") to follow the trailer dictionary. Now consider a linearized 
PDF being incrementally updated, and you get that in the general 
case a "previous trailer" may lack the "startxref". Apparently, 
Acrobat does a similar thing when creating hybrid-ref PDFs.

[lib/pdf_main.ps lib/pdf_rbld.ps]

2007-10-27T19:55:00.858126Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 9).

DETAILS :

Bug 689526 "Regression: performance issues with r8118".

This patch clips triangles an trapezoids with band bbox
during the clist playback. The old code spends much time 
for rasterizes parts that fall outside the band,
espcially if the band height is small.

Also fixed an obsolete comment.
  

[src/gxclrast.c]

2007-10-27T18:55:14.195971Z Alex Cherepanov

Extract and process default PDF file from the PDF collection when
it is defined. Otherwise process the container PDF file.

DETAILS:
The procedure pdf_collection_files can be extended to select other
PDF files from the collection and extract them for processing.

[lib/pdf_main.ps lib/pdf2dsc.ps]

2007-10-26T07:41:30.826491Z Ken Sharp

Fix (pdfwrite): Type 1 CharStrings could be converted to invalid 
type 2 CharStrings if the glyph program used implicit start points 
for subpaths.

DETAILS:
Bug #689055 "pdfwrite creates a bad Type1C font"

If a type 1 CharString used an implicit point, either the initial point 
(0,0) or the point resulting from a closepath, then the type 2 output 
code duplicated this. Unfortunately this is illegal in type 2 CharStrings
where each subpath must begin with one of the 'move' instructions.

(gdevpsfx.c) psf_convert_type1_to_type2, create a new boolean variable
'need_moveto' initialised to true. When we encounter a move operation,
set it to false. When we encounter a closepath, set it back to true.
Thus this variable is always true at the beginning of a subpath, and 
becomes false as soon as a move instruction is encountered.

While converting type 1 CharStrings, whenever the current instruction is 
a line drawing operation, if 'need_moveto' create a move instruction, 
taking account of any pending glyph widths.


This is only performed on the second (conversion) pass through the type 1 
CharSrtring as we don't need to worry about this during the first (hint 
collection) pass.

[src/gdevpsfx.c]

2007-10-26T01:49:56.180182Z Ralph Giles

Merge makeset.tcl into makehist.tcl.

[toolbin/makehist.tcl toolbin/makeset.tcl]

2007-10-26T01:49:54.293117Z Ralph Giles

Remove obsolete release and diff scripts.

[toolbin/3way.tcl toolbin/makefonts.tcl toolbin/maketars.tcl toolbin/makemaster.tcl toolbin/makeset.tcl toolbin/makewin.tcl]

2007-10-26T01:08:04.549848Z Ralph Giles

Document how to use -dTTYPAUSE with -dSAFER. Bug 687988.

[doc/Use.htm]

2007-10-25T22:14:22.288695Z Ralph Giles

Correct some gcc warnings.

[jbig2dec/config.h jbig2dec/jbig2_text.c jbig2dec/jbig2_image.h jbig2dec/jbig2_symbol_dict.c jbig2dec/jbig2_generic.c jbig2dec/jbig2_page.c jbig2dec/jbig2_refinement.c]

2007-10-25T00:30:18.383197Z Ralph Giles

Include an example of how to create non-ASCII font names in the cidfmap.
Bug 688203.

[doc/Use.htm]

2007-10-24T23:32:20.291355Z Ralph Giles

Append the CUPS font directory to the search path. Bug 689334.

[src/configure.ac]

2007-10-24T22:46:28.083133Z Ralph Giles

Add an XCFLAGS macro to the MSVC build to match the variable of the same
name in the unix builds. This is intended mainly for adding preprocessor
defines at make time. Bug 689530.

[src/msvc32.mak]

2007-10-24T22:46:25.428278Z Ralph Giles

Only add XLDFLAGS to LDFLAGS temporarily when checking for the
additional X libraries. Bug 689411.

[src/configure.ac]

2007-10-24T18:39:55.448984Z Ralph Giles

Use the proper build machinery to link to cups.

DETAILS:

Previously, the configure script just appended the output of cups-config
to CFLAGS and LIBS which could confuse other parts of the build. The
LIBS setting was actually ignored by cups.mak which hard coded liking
to cups and cupsimage through the genconf -lib option, although it
depended on it for the search patch if cups was in a non-standard
location.

Instead, we parse the output of cups-config to separate the dependent
libraries and additional search paths if any, and pass those through
to genconf in the intended way. This destroys the order of the link
line, but GNU ld, at least, applies all -L paths to all -l libraries,
so that should not distrurb the build. We pass any extra include paths
in a special variable and use it directly when compiling gdevcups.c to
avoid confusing the search path for other components.

Configure also used to ignore cups-config if it found cups/raster.h in
the current search path. We now prefer cups-config.

[src/Makefile.in src/configure.ac cups/cups.mak]

2007-10-24T18:39:51.211490Z Ralph Giles

Abstract the autoconf build's link line flattening for generic use.

DETAILS:

The Ghostscript build system expects a list of bare library names
for specifying library dependencies through the .dev files to
genconf. The configure script had some code to decompose the usual
unix-style "-lX11 -lXt" link flags returned by AC_PATH_XTRA.

As we've added more optional external libraries to the autoconf
build, this has become a general need, so the code is now abstracted
into an autoconf macro for use elsewhere in the configure script.

[src/configure.ac]

2007-10-24T07:31:09.815969Z Ken Sharp

Fix (pdfwrite) : An integer arithmetic overflow while converting Type 1 CharStrings into Type 2.

DETAILS :

Bug #689106 "Wrong charpath direction in PDF"
Patch from Rolf Becker with minor improvements.

A processing of big integers was implemented in gstype1.c
while rendering a glyph, but it was not implemented
in pdfwrite while converting a Type 1 font into Type 2.
It caused an incorrect glyph outlines embedded into PDF.
This patch factors out the old processing as a new
function gs_type1_check_float and applies it in gdevpsfx.c .
The function prototype is added to gxtype1.h as it needs to be public.

The patch also improves comments in code
because now we understand better what happens in there.
For more details see comments in code.

The change to gstype1.c is algorithmically equivalent
except inserting a new check for overflow in float2fixed.
The new check may fail when the old code
renders an incorrect outline.
We have no practical cases that demonstrate it.

[src/gstype1.c src/gdevpsfx.c src/gxtype1.h]

2007-10-23T03:48:59.052392Z Alex Cherepanov

Handle yet another type of broken PDF generated by Adobe Acrobat 8.1
that lacks startxref operator. Bug 689413, customer 531.

[lib/pdf_main.ps]

2007-10-21T20:49:29.646397Z Alex Cherepanov

Process duplicate entries in PDF 1.5 context stream the same way as
the entries from regular streams: the first entry found (i.e. the last
in the xref chain) takes efferct. Keep rebuilding logic intact, where
the last entry wins. Bug 689513, customer 700.

[lib/pdf_main.ps lib/pdf_rbld.ps]

2007-10-20T23:14:30.016619Z Alex Cherepanov

Check for unbalanced q operators in the pattern stream and add Q as needed.
Bug 689523, customer 870.

[lib/pdf_draw.ps]

2007-10-20T19:14:28.348994Z Alex Cherepanov

Make IGC_PTR_STABILITY_CHECK an independent compile-time flag that can be set
from the command line without editing gxobj.h .

[src/gxobj.h]

2007-10-20T16:34:38.276462Z Alex Cherepanov

Relax ICCBased color space validation. Don't reject correct PDF files that have
ICCBased color space as an alternative color space to another ICCBased color
space. Bug 689524, customer 870.

[lib/gs_icc.ps]

2007-10-20T00:55:55.884848Z Ralph Giles

Pass the CFLAGS obtained for fontconfig from pkg-config separately
to avoid contaminating the general build.

[src/Makefile.in src/configure.ac src/unix-aux.mak]

2007-10-20T00:37:23.775560Z Ralph Giles

Remove a redundant check for pkg-config.

[src/configure.ac]

2007-10-20T00:37:19.682121Z Ralph Giles

Look for fontconfig even if pkg-config doesn't find it.

DETAILS:

Like the comment says, pkg-config isn't universally installed,
so we should not depend on it. If pkg-config isn't available
or doesn't find fontconfig, check for the library and headers
it in the standard locations.

[src/configure.ac]

2007-10-18T18:58:54.836534Z Ralph Giles

Install header files as data, not executables. Bug 689466.

[src/unix-dll.mak]

2007-10-18T00:36:37.403207Z Ralph Giles

Remove a spurious CFLAGS instance from the jasper compile line.

DETAILS:

The definition of CC_ passed from the top level makefile should
already include a copy of the CFLAGS for environment overrides,
so the duplicate copy here was unnecessary.

Furthermore, the second expansion of CFLAGS at the end of the
compiler command line could result in picking up a version of
the jasper headers installed elsewhere in the system instead
of the copy in JASSRC, causing the build to fail on undefined
preprocessor symbols, since upstream doesn't have our error
reporting callback.

[src/jasper.mak]

2007-10-18T00:05:55.933230Z Ralph Giles

Replace our included libpng with the new upstream 1.2.22 release.

[libpng]

2007-10-18T00:01:45.449158Z Ralph Giles

Move the current copy of libpng out of the way for a pending update.

[libpng]

2007-10-17T23:04:50.954798Z Ralph Giles

Avoid memory corruption with broken files.

Patch from the Ubuntu libjasper package.

[jasper/src/libjasper/jpc/jpc_cs.c jasper/src/libjasper/jpc/jpc_dec.c jasper/src/libjasper/jp2/jp2_cod.c]

2007-10-16T07:54:08.209510Z Ken Sharp

ps2write: When encountering font names which contain unfortunate characters
such as white space, or delimiters, emit the name as an escaped string and 
'cvn' instead of a literal name.

DETAILS:
Bug #689420 "Errors with ps2write and special chars in FontName"

Patch from SaGS with some minor improvements.

Fonts whose name contains white space, or delimiter characters (eg /,(,[ etc)
were being written into the type 1 font stream using the name unchanged. This 
causes the resulting PostScript to fail on any PostScript interpreter. The 
exact error varies depending on the placement of the invalid character and 
the following data.

This is now handled by emitting the font name as a string, and using the cvn
operator to convert the string to a name, escaping characters if required. 
Note that both the C portion of the code needs to change, in order to write 
escaped names, and the PostScript prolog in order to undo any name escapement.

1. (gdevpsf1.c) write_font_name, check to see if the font name contains any
   characters which we need to escape. If so, then use the existing routine
   's_PSSE_template.process' to convert the name to an escaped character 
   sequence.

   Update the write_font_name routine so that it optionally writes a name
   to the output. If the name does not need escaping, then simply prepend a
   '/' to make a literal name, otherwise append a 'cvn' to convert the 
   escaped string to a name. When writing out the font header we just need
   the font name as a human readable string. When writing the /FontName
   entry in the font dictionary we need a PostScript name, either a literal
   or a PostScript escaped string converted to a name. (see below)

2. (gdevpsf1.c) psf_write_type1_font, alter the use of write_font_name in two
   places. Firstly to emit the name as part of the font comment, secondly to
   put the name as the value for the /FontName key in the fotn dictionary. In
   the first case we write it as a simple string, in the second as a name.

3. (opdfread.ps) The TypeDameons procedure extracts the FontName from the Font
   dictionary in the body of the job. Since the FontName can now be escaped,
   we need to undo the escapement before defining the font. Firstly we define
   a new procedure 'UnPDFEscape', secondly we call this when dealing with the
   FontName and the BaseFont keys, in order to convert the escaped name back
   to a normal name, so that the font can be found with findfont.

[src/gdevpsf1.c lib/opdfread.ps]

2007-10-16T00:36:28.849878Z Ralph Giles

Don't override the memory set by the caller in the JPXDecode stream.

[src/sjpx.c]

2007-10-16T00:36:27.806530Z Ralph Giles

It's the client's responsibility to call the set_defaults
method on a new stream. Bug 689362.

DETAILS:

The JPXDecode stream implementation was calling set_defaults
from within its own init method, clobbering the colorspace
request passed in through the stream's parameter dictionary.

[src/zfjpx.c src/sjpx.c]

2007-10-15T22:31:54.394164Z Henry Stiles

Error code from clist_decode_segment did not propagate back because
the inner automatic variable code shadowed the outer.

[src/gxclrast.c]

2007-10-15T18:09:18.231759Z Ray Johnston

Prevent C-stack overflow caused by infinite recursion. Related to
previous fix in same function to access the correct target color
procedure.

DETAILS:

Testing with other problem files detected the recursion. The previous
method to access the saved target get_color_comp_index is moved
before either use.

EXPECTED DIFFRENCES:

None.

[src/gdevp14.c]

2007-10-15T13:11:16.778228Z Ken Sharp

pdfwrite: When writing the /CreationDate /ModDate keys in the Info dictionary,
properly write the system local time instead of UTC.

DETAILS:
Bug #688783 "commit 6892 mis-uses the TZ environmental"

A rather lengthy thread, but in essence quite simple. A change to calculate
the system local time as an offset from UTC, and store this information in 
the form described in the PDF Reference (Section 3.8.3 "Dates" on p133 of 
the 1.6 PDF Reference).

The patch uses code supplied by SaGS.

(gdevpdf.c) pdf_initialize_ids, use the C runtime 'time' and 'gmtime' to 
determine the difference between local system time and GMT. Use this to 
calculate the difference (positive, negative, or none) from GMT, and the
number of hours and minutes comprising the difference. Use 'localtime' to
find the local system date and time.

Take all of the information from above, and format the result according to
the specification in the PDF Reference:

(D:YYYYMMDDhhmmssZhh'mm')

Where YYYY=4 digit local time year
        MM=2 digit local time month
        DD=2 digit local time day
        hh=2 digit local time hours (24 hour)
        mm=2 digit local time minutes
        ss=2 digit local time seconds
         Z=offset of local time from UTC
           Z=no difference
           +=local time later than UTC
           -=local time earlier than UTC
       hh'=hours difference between local time and UTC
       mm'=minutes difference between local time and UTC

[src/gdevpdf.c]

2007-10-15T06:43:04.430544Z Marcos Woehrmann

Added code to the pxlcolor device (gdevpx.c) to set the color space even
if the test for "portrait transformations" fails.

DETAILS:

The pclxl_begin_image() function performs a rather complicated test to
see if the image transformation can be "handled" (line 1434).  If this
test fails the routine falls through to using gx_default_begin_image().
However, in this case the pcl-xl color space is never set and if
the previous color space was eGray the pcl-xl stream will fail with
ExtraData (because 3 times as much data as expected will be written).
Presumably the inverse is also true, but I don't have a test case for it.

The solution is to call pclxl_set_color_space() in the use_default
case (a possibly more correct solution would be to call
pclxl_set_color_palette()).

[src/gdevpx.c]

2007-10-12T20:22:08.884187Z Ray Johnston

Fix SEGV when clist used with pdf14_cmykspot device.
Bug 689493 for customer #190.

DETAILS:

When the clist is used, the pdf14 device sets the clist color procs
(including get_color_comp_index) to it's own procedures, saving the
actual target procs. When the Separation name is new, we need to use
the saved target procs.

[src/gdevp14.c]

2007-10-12T16:38:07.833396Z Ray Johnston

Fix divide by zero crash. Bug 689493 reported by customer #190.

DETAILS:

When new_width is 0, just use 1 in the test (works well enough
for checking overflow)

[src/gdevprn.c]

2007-10-11T16:36:26.031981Z Ray Johnston

Fix incorrect colors with transparency to cmyk+spot devices (such as tiffsep).
Bug 689494 for customer #190.

DETAILS:

CMYK + Spot colors are subtractive. The blending with the 'bg' color was
inverted, causing very strange colors.

Note that the pdf14_cmykspot_put_image is VERY inefficient and at the
very least should have logic added to write runs of the same color
as a wide rectangle (rather than the current 1x1 pixel rectangles).

[src/gdevp14.c]

2007-10-10T23:02:18.957895Z Igor Melichev

Fix (stroking) : Prevent installing an extra clipper device, step 2.

DETAILS :

Bug 689427 "Superposed clippers".

The last patch doesn't fix the problem when stroking
a path with a shading color.

The new code distinguishes 3 cases :

1. When painting happens through low level device methods
which don't accept a clipping path. It happens inside 
stroke_fill, so the new code passes the clipper device to it.

2. When the painting happens through fill_path, 
which does handle a clipping path. It happens inside
FILL_STROKE_PATH, so the new code doesn't pass the clipper to it,
but passes the clipping path as it worked before the last patch.

3. When the stroking algorithm is called from 'strokepath',
don't need a clipping at all. This case works as before,
but the new code doesn't construct a clipping device.

Minor change : Added a new argument 'dev' to the macro
FILL_STROKE_PATH to simplify the code understanding and debugging.

[src/gxstroke.c]

2007-10-10T18:42:35.474048Z Ralph Giles

Pass the results of calling cups-config to cups.mak from configure 
through the top-level makefile rather than calling cups-config directly, 
so that passing an alternate cups environment to configure works.
Bug 689496.

DETAILS:

This is more consistent, since configure and cups.mak were previously 
calling cups independently. However, setting the cups environment at
the make level my have accidentally worked before; it won't work now.

[src/Makefile.in src/configure.ac cups/cups.mak]

2007-10-10T17:40:38.235834Z Ralph Giles

Turn on keyword substitution on pdf_cslayer.ps. This is the correct fix 
for the issue mentinoed in r8283. Also set native line endings and 
remove some spurious executable properties.

[lib/EndOfTask.ps lib/PDFX_def.ps lib/PDFA_def.ps lib/dumphint.ps lib/pdf_cslayer.ps]

2007-10-10T16:19:23.023493Z Marcos Woehrmann

Fixed Id line to make nightly regression run happy.

[lib/pdf_cslayer.ps]

2007-10-10T15:28:26.622499Z Igor Melichev

Fix (stroking) : Prevent installing an extra clipper device.

DETAILS :

Bug 689427 "Superposed clippers".

The old code installs a clipper in gx_stroke_path_only_aux
and then (indirectly) calls gx_general_fill_path
with passing same clipping path. It caused gx_general_fill_path
to install a second clipper with same clipping path.
This patch simply passes down a NULL clipping path.

Minor change : Added a 'pcpath' argument to the macro
FILL_STROKE_PATH for easier understanding and debugging.

[src/gxstroke.c]

2007-10-10T10:13:45.175824Z Igor Melichev

Fix (pdf14 device) : Optimize the buffer backdropping, step 2.

DETAILS :

1. Intersect the backdrop rectangle with the bbox of a real painting to the transparebcy buffer,
which is accummulated from pdf14_fill_rectangle. It reduces the rectangle for a faster blending.
1.1. Removed min_int, max_int from pdf14_buf_new against an integer overflow when computing 
sizes of rectangles.
1.2. Do intersect rectangles in In pdf14_put_image, pdf14_cmykspot_put_image, pdf14_custom_put_image.

2. dump_planar_rgba still could access outside the buffer due to a recent patch is incomplete.

[src/gdevp14.c]

2007-10-10T09:38:32.826812Z Igor Melichev

Fix (pdf14 device) : Optimize the buffer backdropping, step 1.

DETAILS :

This change is algorithmically equivalent.
It only defines some local variables as a preparation to the next change.

[src/gdevp14.c]

2007-10-10T08:59:39.164904Z Igor Melichev

Fix (pdf14 device) : Don't allocate transparency buffer for bands that appear outside the transparency bounding box.

DETAILS :

This is an optimization, which should be algorithmically equivalent.

For bands outside the transparency bounding box the old code
allocated a zero length buffer and performed fake operations with it.

The main change is gdevp14.c ln 550.
Others prevent an access to the buffer when it is not allocated.

Note that in some cases the new check is excessive
because (width <= 0 || height <= 0) normally means no buffer.
We check for (buf->data == NULL) anyway to simplify the sefity proof
and documentation.

[src/gdevp14.c]

2007-10-10T08:12:49.566532Z Igor Melichev

Fix (pdf14 device) : Properly intersect rects when composing transparency buffers (continued 2).

DETAILS :

Bug 689498 "transparency: The buffer backdroping code can write outside bufers.".
Bug 688631 "PDF segfault".

This patch ports the revision 7064 changes from pdf14_put_image to
pdf14_cmykspot_put_image and pdf14_custom_put_image, which were added 
after the revision 7064. They need same improvement, which was mised
due to a development miscoordination.

This change is committed without any testing,
because the author has no test cases which involve
pdf14_cmykspot_put_image and pdf14_custom_put_image.
Possibly they need to build Ghostscript with special options 
and to run the test case of the bug 688631 with special devices.
The bug 689498 is passed to Suport for further processing and testing.

[src/gdevp14.c]

2007-10-09T19:33:27.492485Z Till Kamppeter

On "make soinstall" some files did not get installed.

[src/unix-dll.mak]

2007-10-09T17:02:49.926924Z Igor Melichev

Fix (FAPI / UFST bridge) : A crash when processing an embedded CIDFontType 11.

DETAILS :

Debugged with running the test case of the bug 689471 with FAPI.
Needs an additional change to lib/FAPIconfig for running the test case with FAPI :

- /HookDiskFonts        [1 2 9 11 42]  % FontType values for disk PS fonts to be redirected to FAPI.
- /HookEmbeddedFonts    [1 2 9 11 42]  % FontType values for embedded PS fonts to be redirected to FAPI.
+ /HookDiskFonts        [2 9 11 42]  % FontType values for disk PS fonts to be redirected to FAPI.
+ /HookEmbeddedFonts    [2 9 11 42]  % FontType values for embedded PS fonts to be redirected to FAPI.

because UFST still can't handle embedded Type 1.

This patch passes impl_PCLchId2ptr as p_PCLglyphID2Ptr argument.
We believe it is correct for True Type,
but we're not sure about Type 1,
because Type 1 composite glyphs refer subglyphs 
in an inobvious way - see Type 1 specification.

[src/fapiufst.c]

2007-10-09T08:28:49.108879Z Ken Sharp

pdfwrite: Allow downsampling of images in a /Indexed colour space, provided the
downsampling type is 'subsample'.

DETAILS:
Bug 689265 "PDF created by GS 8.57 is much larger than from competitive creator"

The original job contains several images, including one large one, which are in a 
/Indexed colour space. We can't use average or bicubic downsampling with /Indexed
colour space, because the colours in the space may not be linear. It ought to be
possible to use subsampling though.

Where we previously checked the image colour space and decided to disable downsampling
if the colour space was /Indexed, we now additionally check the downsampling type
and permit it if the type is 'Subsample'.

(gdevpdfi.c) pdf_begin_typed_image, check the downsample type as well as the colour 
space before deciding not to allow downsampling. 

(gdevpdsi.c) psdf_setup_image_filters, check if the colour space is /Indexed before 
deciding which set of image parameters to use (2 places). Also, if we do encounter a
/Indexed space, make the compression filter into Flate to ensure we don't try and use any 
kind of JPEG compression, which may not work properly with Indexed spaces, and in any case
is not the most appropriate type of compression in this situation.

[src/gdevpsdi.c src/gdevpdfi.c]

2007-10-09T00:06:24.193850Z Igor Melichev

Fix (font emulation) : Could not handle unknown Ordering with FAPI.

DETAILS :

Debugged with running the test case of the bug 689471 with FAPI.

[lib/gs_fntem.ps]

2007-10-08T10:05:33.511010Z Ken Sharp

pdfwrite: Alter the AIIM URL emitted when creating PDF/A files.

DETAILS:
Bug #689375 ""

When writing PDF/A files we need to put a URL for the AIIM group in the metadata. Previously we were writing 'http://www.aiim.org/pdfa/ns/id.html' which is what Acrobat 7 does, now we write 'http://www.aiim.org/pdfa/ns/id/' which is what Acrobat 8 does.

(gzpdfe.c) pdf_write_document_metadata change the URL as above.

[src/gdevpdfe.c]

2007-10-08T07:13:32.510990Z Ken Sharp

pdfwrite: when encountering a glyph in a type 3 font for which no Charproc is defined 
emit a simple setcachedevice operation instead of an empty stream.

DETAILS:
Bug #688834 "Undefined characters in Type 3 fonts cause PDF conversion to fail"

The original report, based on an older version of pdfwrite, states that an error occurs with 
pdfwrite when using glyphs from a type 3 font where there is no charproc defined for the
glyphs.

In fact, with the current version of pdfwrite, no error occurs, but the resulting file
causes Acrobat to give warnings and display the result incorrectly. NB other PDF consumers
do not behave this way.

This appears to be caused by pdfwrite emitting an empty stream (length 0), because no charproc 
is captured for the glyph (since it has none). For some reason Acrobat takes exception to this.

A simple solution is to write a stream which is not empty. The sequence '0 0 0 0 0 0 d1'
, a

setcachedevice with arguments all 0, resolves the problem.

(gdevpdtt.c) In pdf_text_process, after capturing a Charproc for a type 3 font, check the length
of the stream. If it is 0 bytes, then emit '0 0 0 0 0 0 d1' and carry on.


[src/gdevpdtt.c]

2007-10-07T18:09:11.121700Z Igor Melichev

Fix (pdfwrite) : Ignore font errors that do not belong to embedded subset.

DETAILS :

Bug 689068 "ps2pdf13 fails with Error: /invalidfont in --ashow--".

The document could successfully rasterize,
but failed with invalidfont when converting to PDF.
It happened due to a missed glyph,
which is not atually used in the doeument.

The patch skips font errors that do not belong to the font subset.
However if the user requests to embed a complete font,
a warning is printed to stderr and the document fails
due to the font error as before the patch.

Changes :

1. gdevpdtb.c : Process a coplete font copy error as explained above.

2. gsfont.c : Ignore missed glyphs when computing the "fixed width" font feature.

[src/gdevpdtb.c src/gsfont.c]

2007-10-04T06:46:54.927607Z Ralph Giles

Revert a change inadvertently included r8257. This broke the MSVC
build, which does not define CC_SHARED.

[src/lib.mak]

2007-10-03T17:37:35.315273Z Ray Johnston

Revert patch 8268 (restoring the FCOfontmap-* files) and add the Encoding/
directory to the RESOURCE_LIST so that it will be include in the %rom%
file system. This is the _real_ fix to bug #689050 and explains why the
symptoms appeared to be related to having Wingdings installed on the
system. Thanks to Henry and Igor in pointing out the incorrect Encoding
used in the previous patch that led me to the actual problem.

[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 src/int.mak lib/FCOfontmap-PCLPS2]

2007-10-03T04:40:18.040901Z Ray Johnston

Fix FCOfontmap-* files so that Wingdings will be found.
Bug #689050 for customer #951.

[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 lib/FCOfontmap-PCLPS2]

2007-10-03T00:18:12.256656Z Ralph Giles

Document the .IgnoreNumCopies device parameter. Bug 689491.

[doc/Use.htm doc/Language.htm]

2007-10-02T23:55:30.880679Z Alex Cherepanov

Add extraction of layer information from Illustratir CS2/CS3 PDF files
to the code base but don't run it in the default configuration.

[src/int.mak doc/Develop.htm lib/pdf_cslayer.ps]

2007-10-02T07:31:58.125500Z Ken Sharp

pdfwrite: Convert 'text' followed by 'text charpath stroke' to a single text
operation by using text rendering mode 2.

DETAILS:
Bug #689310 "Offset between text and outline in pdfwrite.dev"

Emitting text, followed by the same text as an argument to charpath, and then stroking the
resulting path previously resulted in a large path being emitted and stroked in the PDF file. 

This is inefficient, but worse the path is not grid fitted, whereas the text is. When
used to stroke the outline of previously rendered text, either in a different colour or to
create a 'bold' effect, the emitted path did not always precisely match the rendered text.

This change is to emit this PostScript construct using the closest available match in PDF, 
which is the text rendering mode. There are two parts to this change, firstly to identify 
when a path is the result of a charpath, and secondly to merge text followed by charpath/stroke
operations into a single operation on output.

1. (gzpath.h) Add a new member 'last_charpath_segment' to the gx_path_s structure. Update the
   path garbage collection code for relocation of new variable.

2. (gxpath.c) Initialise the new member 'last_charpath_segment' to 0 in
   gx_path_init_contents, and also in path_alloc_copy to prevent copies being identified as
   the result of a charpath.

3. (gxchar.c) We need to be able to tell if a path was the result of a charpath. To do this
   we store the final segment of a path in 'last_charpath_segment' of the path
   structure during show_finish, if the current operation was a charpath. See also item 11.

4. (gdevpdfx.h) Add a new member 'last_charpath_op' to the gx_device_pdf_s structure, to
   hold the boolean argument associated with a charpath operation. Also add to the 
   pdf_substream_s structure to allow us to save and restore this value on entry to or
   exit from a PDF substream.

5. (gdevpdti.c) Save and restore the value of last_charpath_op in pdf_enter_substream
   and pdf_exit_substream.

6. (gdevpdfx.h) Add a new member variable 'last_charpath_op' to the 'pdf_substream_save_s' 
   structure to allow us to save and restore the last_charpath_op as noted above.

7. (gdevpdtt.c) During gdev_pdf_text_begin, if the operation is a charpath, check the
   following conditions, if met then store a copy of the charpath boolean variable in 
   a new member of the gx_device_pdf_s structure.
       1. Operation must be a charpath
       2. Current path must be empty (can't handle charpath concatenated to existing path)
       3. The font being used for the current text must be the same as the font used for
          the previous stored (but not yet emitted) text.
       4. The initial point of the text for the charpath must match the initial point of
          the previous stored text.
       5. The text bytes must be the same as the previous stored text.
       6. The point size of the text must match the previous stored text.
   Also, move the calculation of the font point size out of pdf_update_text_state so that
   we can calculate the size in pdf_compare_text_state_for_charpath' defined in 9 below
   without duplicating code.

8. (gdevpdtt.h) Prototype 'pdf_calculate_text_size'

9. (gdevpdts.c) Add a new function 'pdf_compare_text_state_for_charpath' to do the 
   checking noted above. The pdf_text_state_s structure is not defined publicly, so 
   we need code to access its members. Also add a function 'pdf_modify_text_render_mode'
   which will attempt to add a rendering mode (stroke, fill or clip) to existing text
   by updating the existing text rendering mode. Returns 0 if the existing text cannot
   be modified, and we fall back to emitting a path and stroke.

10. (gdevpdts.h) Add prototypes for the functions required in 9.

11. (gdevpdfd.c) In pdf_stroke_path, if the 'last_charpath_op' member of the pdf device
   structure is set, perform some more checks (below) and if passed, set the text render
   mode of the stored text, set the stroke colour, set the line width, and force the stored
   text to be emitted. This conveniently results in a gsave/grestore pair round the
   graphics state changes.
      1. The last charpath operation must have been 'false charpath'
      2. There must be a non-empty path (result of the charpath operation)
      3. The 'last_charpath_segment' stored in the path must match the actual last segment
         in the path. (can't handle path segments added to the result of a charpath)

12. (gdevpdfg.h) Make the pdf_reset_color routine public, as we need to be able to set the 
   colour from pdf_stroke_path.

13. (gddevpdfg.c) We need to be able to set a stroke colour while in a TEXT context,
   previously the routine pdf_reset_color, which emits colours and spaces, immediately
   switched to a STREAM context, which caused pending text to be flushed. pdf_reset_color
   was only called from two places, pdf_set_drawing_color and pdf_set_pure_color. The
   switch to a STREAM context has been moved to these routines, leaving pdf_reset_color to
   actually do the work without worrying about the context.
   It was found necessary to also reproduce some checks before switching context, to
   prevent unnecessary context switches.
   Removed unused local variable 'process_color' from pdf_reset_color.

There is scope for additional enhancement with this code. Presently there is no attempt to
deal with 'charpath gsave fill grestore stroke' constructs, nor to handle clipping paths 
resulting from charpath. There may be other possibilities.


[src/gdevpdfx.h src/gxchar.c src/gdevpdts.c src/gdevpdtt.c src/gzpath.h src/gdevpdfd.c src/gdevpdts.h src/gdevpdfg.c src/gdevpdti.c src/gdevpdtt.h src/gdevpdfg.h src/gxpath.c]

2007-10-01T23:02:53.086636Z Ralph Giles

Have mkromfs use $(GS_INIT) instead of hard-coding gs_init.ps. It was
intended that this be part of r8257.

[src/int.mak]

2007-10-01T23:00:35.110412Z Ralph Giles

Update pkg-config support in the ijs tree.

[ijs/Makefile.am]

2007-10-01T22:59:59.038063Z Ralph Giles

Improve portability in the autoconf build. Solaris doesn't support 'grep 
-q'. Bug 689490.

[src/configure.ac]

2007-10-01T06:26:21.808008Z Suzuki Toshiya

Fix: (TT font handler) : Use given prebuilt_encoding when Apple Roman TrueType cmap subtable is chosen

DETAILS:
As current implementation assumes /prebuilt_encoding[] is
compatible with WinAnsiEncoding when Microsoft UCS2 TrueType
cmap subtable is chosen, current implementation assumes
/prebuilt_encoding[] is same with MacRomanEncoding when
Apple Roman TrueType cmap subtable is chosen.
/prebuilt_encoding[] is completely ignored and the inverse
of MacRomanEncoding is used. Therefore, when Apple Roman
TrueType cmap subtable is chosen but /Encoding is
StandardEncoding or PDFDocEncoding, some characters are
shown by wrong glyphs. This patch uses /prebuild_encoding[]
if it's given, when Apple Roman TrueType cmap subtable is
chosen.

According to PDF Ref 1.7 p. 431, MacRomanEncoding does not
cover all characters in Apple Roman TrueType cmap subtable,
16 characters are missing. To exploit the glyphs as many
as possible via Apple Roman TrueType cmap subtable, this
patch introduces "MacRomanEncodingForTrueType" including
missing 16 characters. By this change, 16 glyphnames
can be exploited via Apple Roman TrueType cmap subtable.

There might be broken TrueType fonts that use the names
in MacRomanEncoding at incompatible 8bit charcode. The
text drawn by such fonts would be broken, the results are
unexpected.

[lib/gs_ttf.ps]

2007-10-01T06:19:18.139797Z Suzuki Toshiya

Fix: Preprocess the glyphnames in prebuilt_encoding by AdobeGlyphList for Microsft UCS2 cmap subtable

DETAILS:
According to PDF Ref 1.7 p. 430, Adobe modern products
always prioritize Microsoft UCS2 TrueType cmap subtable
regardless with /Encoding, as far as the font is declared
as Nonsymbolic by /Flags. For example, even if /Encoding
is MacRomanEncoding, Microsoft UCS2 TrueType cmap subtable
is prioritized than Apple Roman TrueType cmap subtable.
The encoding of Microsoft UCS2 TrueType cmap is not a
superset of MacRomanEncoding, see PDF Ref 1.7 Appendix D.
Current implementation expects the content of /Encoding 
is always compatible with chosen TrueType cmap subtable,
thus unexpected mismatching causes loss of glyph like:
bug 689351 "Content Loss for certain Embedded Type42 Glyphs with gs8.57"

When Microsoft UCS2 TrueType cmap subtable is chosen,
the glyphnames used in /prebuilt_encoding[] should be
preprocessed: the glyphnames changed to the charcode
compatible with Microsoft UCS2 encoding scheme, before
combining with charcode-glyph mapping table in Microsoft
UCS2 TrueType cmap subtable. The preprocessing should
be done by AdobeGlyphList that maps known glyphnames
to UCS2 charcode. The unknown glyphnames are left to
second processing in /.pdfmapchars. This preprocess
fixes bug 689351.

There might be broken TrueType fonts that use the names
in AdobeGlyphList at incompatible UCS2 charcode. The text
drawn by such fonts would be broken, the results are
unexpected.

[lib/gs_ttf.ps]

2007-09-30T19:46:25.258028Z Alex Cherepanov

Add an option that controls rendering of PDF annotations. By default
annotations are rendered as before.

[lib/pdf_main.ps doc/Use.htm]

2007-09-29T05:53:34.943145Z Alex Cherepanov

Following the PDF spec, don't use .notdef glyph in Type 3 font.
.notdef may not be present at all. Bug 689475

[lib/pdf_font.ps]

2007-09-27T23:06:07.081517Z Ralph Giles

Remove the mkromfs code under 'make clean'. Bug 689474.
Also, use the GS_INIT define instead of hard-coding gs_init.ps
as the root of the postscript library code.

[src/lib.mak src/gs.mak]

2007-09-27T20:30:39.973443Z Ralph Giles

Improve shared build support on MacOS X.

[src/configure.ac src/unix-dll.mak]

2007-09-27T20:26:51.405933Z Ralph Giles

Install iapi.h and ierrors.h as part of the soinstall makefile target.
Bug 689466.

[src/macosx.mak src/Makefile.in src/unix-dll.mak src/unix-gcc.mak]

2007-09-27T20:20:46.283268Z Ray Johnston

Prevent BandWidth from being set smaller than the page width. Fixes
crash reported in bug #688734.

[src/gxclist.c]

2007-09-26T09:48:55.994917Z Igor Melichev

Fix (Windows installer) : MSVC can't build dwinst.c .

DETAILS :

A recent patch erroneusly replaced 'private' keyward in a C++ class definition.

[src/dwinst.h]

2007-09-26T04:37:20.025441Z Alex Cherepanov

Fix multiple inclusion of page objects in the optimized PDF file.
Extend special handling of page objects to Annots and AcroForm
object enumeration. Bug 689292, customer 932.

[lib/pdfopt.ps]

2007-09-25T13:31:24.199299Z Ralph Giles

Replace the 'private' define with the now standard C keyword 'static'.          

DETAILS:
                                                                                The compilers we support have supported static for some time now, so            
idiomatic, and removes one of the obstacles to compiling Ghostscript            
as C++.

The patch also removes support for compilation with -dNOPRIVATE, which          
is not longer necessary with modern debuggers.

[src/gdevm48.c src/idstack.c src/gdevmsxf.c src/gdevrinkj.c src/gdevmem.c src/gdevmem.h src/gdevwdib.c src/gxoprect.c src/gdevsunr.c src/zvmem.c src/gdevpdtc.c src/gstrap.c src/gsfcmap1.c src/gxxfont.h src/gswts.c src/gsstate.c src/gdevlbp8.c src/zcsdevn.c src/gdevdm24.c src/zcontext.c src/gxdhtserial.c src/gdevpdts.c src/gdevcljc.c src/iscanbin.c src/gdevmiff.c contrib/gdevlx7.c src/gxclutil.c src/gp_mshdl.c src/zfont.c contrib/japanese/gdevml6.c src/zarray.c src/gxdevcli.h src/gdevpe.c src/zchar42.c src/gsfont0.c src/gscscie.c contrib/lips4/gdevlips.c src/gdevwts.c src/zdfilter.c src/icfontab.c src/zht1.c src/zdevcal.c src/zpcolor.c src/gdevpdfi.c src/zcssepr.c src/sdcparam.c contrib/gdevcd8.c src/bcwin32.mak src/zdps1.c src/gdevokii.c src/gdevpdtd.c src/zcfont.c src/zhsb.c src/gdevprna.c src/zcolor.c src/gxhtbit.c src/sfxfd.c src/zupath.c contrib/lips4/gdevl4v.c src/gdevpdtt.c src/gpmisc.c src/gdevpbm.c src/ireclaim.c src/gdevmrun.c src/gconf.c contrib/japanese/gdevnpdl.c src/zfbcp.c contrib/japanese/gdevmag.c src/gserver.c src/gp_psync.c src/gdevcmap.c src/zht2.c src/gdevpdfj.c src/zfarc4.c src/gp_os2pr.c src/gdevwprn.c src/gdevpsd.c src/gsiomacres.c src/gxclfile.c src/gxpdash.c src/ztrap.c src/gxfilltr.h src/gdevpdte.c src/gdevdevn.c doc/Drivers.htm contrib/japanese/gdevalps.c src/gsgcache.c src/zfile.c src/gdev4693.c src/gsptype1.c src/gxchar.c src/gxclbits.c src/zfcid0.c src/gsfcid2.c src/zgstate.c contrib/gomni.c src/gsalloc.c src/zfontenum.c src/gdevmeds.c src/gdevmpla.c src/gdev4081.c src/gscicach.c src/watclib.mak src/gxclzlib.c src/istack.c src/zfont0.c src/zmath.c src/gdevpdfk.c src/gdevhit.c src/gxclimag.c src/gxhintn1.c src/gxfillts.h src/gdevpdtf.c src/gdevddrw.c src/gschar.c src/gxht.c src/gdevpsfm.c src/sarc4.c src/gdevpsdp.c src/gxcht.c src/gsptype2.c src/gdevpsu.c src/gdevxalt.c src/gdevclj.c src/zvmem2.c src/zfcid1.c src/gstrans.c contrib/gdevln03.c src/gstype2.c src/icontext.c src/zstring.c src/zfont32.c src/gzspotan.c src/gxclip2.c src/gdevdrop.c src/gp_macio.c src/sbhc.c src/scfd.c src/gsdps.c src/zfont1.c src/spngp.c src/gdevcgml.c src/gdevpx.c src/gsmatrix.c src/gdevl256.c src/igcref.c src/zcharx.c src/gxtype1.c src/zdouble.c src/spdiff.c src/gdevcp50.c src/gsmemret.c src/gdevpdtw.c src/gxclip.c src/sfilter1.c src/iname.c src/zmedia2.c src/gxiscale.c src/gxpcmap.c src/gdevnfwd.c src/zcontrol.c src/gdevxcmp.c src/gsfcmap.c src/scfe.c src/zfont2.c src/gdevlj56.c src/gxp1fill.c src/gsciemap.c src/gdevhl7x.c src/zdscpars.c src/gdevos2p.c src/gsparam.c src/gdevpdfm.c src/gp_unix_cache.c src/imain.c src/gdevwpr2.c src/zfilter2.c src/zfont42.c src/zchar.c src/smd5.c src/gdevsun.c src/ztrans.c src/sjpx.c src/zcsindex.c src/gdevrops.c src/gxipixel.c src/zcidtest.c src/sfilter2.c src/gdevijs.c src/gdevsnfb.c src/gdevifno.c src/gscrd.c src/gxmclip.c src/gdevjpx.c src/gdevcslw.c src/zfdctd.c src/zdps.c contrib/gdevhl12.c src/gdevdsp.c src/zmatrix.c src/gdevescp.c src/gsiodev.c src/igc.c src/gdevpipe.c src/msvc32.mak src/gdevmacxf.c src/gsfunc0.c src/gdevsvga.c src/gdevpdti.c src/zdosio.c src/gdevepsn.c src/gsparam2.c src/gdevpsf1.c src/gdevpsds.c src/zfsample.c src/zfdecode.c src/gsstruct.h src/siscale.c src/gxfill.c src/gsdsrc.c src/gximag3x.c src/gxclread.c src/dwtrace.c src/gdevmswn.c src/gdevjpeg.c src/siinterp.c src/gdevbbox.c src/gsdll.c src/gspath1.c src/gdevtfax.c src/gdevpjet.c src/gdevphex.c src/sjpegc.c src/gshtscr.c src/zfdcte.c src/gsnogc.c src/zfcmap.c src/gdevbit.c src/gdevfax.c src/gdevbmpa.c src/gsequivc.c src/gp_wsync.c src/gsdevice.c src/gxclmem.c src/gscparam.c src/gshtx.c src/gdevsj48.c src/gdevpdfo.c src/sdctd.c src/gsmemory.c contrib/japanese/gdevfmlbp.c src/gdevcdj.c src/scfdgen.c src/ttcalc.c src/gdevtknk.c src/gdevpsf2.c src/gxidata.c src/gsroptab.c src/gdevm1.c src/gsistate.c src/os2.mak src/sstring.c src/gscolor2.c src/gxpath.c src/scfparam.c src/gdevupd.c src/interp.c src/gsmalloc.c src/zcrd.c src/ttfmain.c doc/C-style.htm src/gdevm40.c contrib/japanese/dviprlib.c src/gsiodisk.c src/gdevpsim.c contrib/japanese/dviprlib.h src/gdevpcfb.c src/gdevvec.c src/gp_msprn.c src/gdevmgr.c src/sdeparam.c src/gxacpath.c src/gdevpdfp.c src/ziodev.c src/gslib.c src/gdevimgn.c src/gdevvglb.c src/sdcte.c src/gsovrc.c src/gxshade1.c src/gxccache.c src/gdevm32.c src/gxfdrop.c src/gp_unifs.c src/gsparams.c src/gxhintn.c src/gsiorom.c src/gdevbjcl.c src/dvx-gcc.mak src/gdevpsdu.c src/gp_mswin.c src/gdevm2.c src/gspath.c src/gdevwddb.c src/gp_os2.c src/zcolor1.c src/gxpcopy.c src/gdevdjet.c src/gdevstc.c src/ialloc.c src/gxfapiu.c contrib/japanese/gdevlbp3.c src/zpath1.c src/gdevm24.c contrib/eplaser/gdevescv.c contrib/gdevxes.c src/ilocate.c src/gxdcolor.c src/gdevpm.c src/gdevbmp.c src/gschar0.c src/gdevbmpc.c src/zdevice.c src/gscie.c src/gdevsppr.c src/igcstr.c src/gxi16bit.c src/gdevn533.c src/idebug.c src/gsht.c src/gsncdummy.c src/gsfunc3.c src/gdevm16.c src/gdevperm.c src/genconf.c src/zfilter.c src/gstype42.c src/sa85d.c src/sbcp.c src/zcolor2.c src/gdev3b1.c src/gdevtrac.c src/gp_ntfs.c src/gdevatx.c src/zfproc.c src/genht.c src/zgeneric.c src/gs.c src/gxclrect.c src/zdevice2.c src/gsshade.c src/sjbig2.c src/gdevpdfb.c src/gscrdp.c src/msvclib.mak src/sjbig2.h src/gxclrast.c src/gsicc.c src/zcid.c src/zfile1.c src/gdevp2up.c src/zimage3.c src/gdevo182.c src/zarith.c src/gdevpdfr.c src/zcspixel.c src/gximage1.c src/gdevppla.c src/zmisc1.c contrib/gdevop4w.c src/wccommon.mak src/gsfunc4.c src/gxclpath.c src/gxcmap.c src/gxfcopy.c src/gdevpsft.c src/gdevtfnx.c src/gsmisc.c src/gxicolor.c src/zpath.c src/gdevm4.c contrib/opvp/gdevopvp.c src/gxfillsl.h src/zcolor3.c src/gxpageq.c src/gsdparam.c src/gxcpath.c src/gdevprn.c src/gdevlxm.c contrib/japanese/gdevdmpr.c src/gdevcif.c src/gxdevndi.c src/gdevprn.h src/gdevpdfc.c contrib/gdevgdi.c src/gdevabuf.c src/gdevherc.c src/gdevsgi.c src/zcie.c src/gdevsco.c src/stream.c src/gdevdflt.c src/zcharout.c src/gdevepsc.c src/gdev8510.c src/gximage2.c src/srld.c src/zht.c src/zncdummy.c src/gxstroke.c src/gxshade4.c contrib/gdevlx32.c src/zmisc2.c src/iparam.c src/sjpx_luratech.c src/zrelbit.c src/iinit.c src/gdevxini.c src/gxclist.c contrib/japanese/gdevmjc.c src/watcw32.mak src/gxccman.c src/gsalphac.c src/gdevpsfu.c src/gxshade.c contrib/japanese/gdevmjc.h src/gdevlp8k.c src/zfunc.c src/gsclipsr.c src/idict.c src/ttfmemd.c src/gscoord.c contrib/japanese/gdevrpdl.c src/genarch.c src/ztype.c src/gdevxxf.c src/zshade.c src/gdevpdfd.c src/gdevdgbr.c src/gdevmr2n.c src/gdevxcf.c src/gdevcfax.c src/zicc.c src/zchar1.c src/vdtrace.c src/gscdevn.c src/iscan.c src/gsnotify.c src/gdevpdft.c src/gximage3.c src/gdevpsdi.c src/srle.c src/zfilterx.c contrib/gdevlx50.c src/shcgen.c src/zmisc3.c src/zfapi.c src/zfunc4.c contrib/gdevbjc_.c src/gscpixel.c src/ziodev2.c src/gsiodevs.c src/zmisc.c src/gdevplnx.c src/gxttfb.c src/simscale.c src/zfzlib.c src/Makefile.in src/dscparse.c src/gscsepr.c src/gdev3852.c src/iutil2.c src/dscparse.h src/gsimage.c src/gxwts.c src/gstext.c contrib/japanese/gdevj100.c src/msvccmd.mak src/gdevpdfe.c src/gsflip.c contrib/lips4/gdevlprn.c src/gdevadmp.c src/sidscale.c src/zchar2.c src/zdpnext.c src/geninit.c src/zusparam.c src/gdevjbig2.c src/gdevpdfu.c src/gximage4.c contrib/gdevdj9.c src/gxshade6.c src/gdevp14.c contrib/lips4/gdevl4r.c src/dwinst.h src/gdevpdf.c src/macosx.mak src/zpacked.c src/ifont.h src/zfmd5.c src/gp_dosfe.c src/iutil.c src/gdevpng.c src/zrop.c src/zalg.c src/zfjpx.c src/gzpath.h src/sfxstdio.c src/gspaint.c src/sjbig2_luratech.c contrib/japanese/gdev10v.c contrib/gdevmd2k.c src/sjbig2_luratech.h src/gdevccr.c src/gdevdcrd.c src/zbseq.c src/ziodevsc.c src/imainarg.c src/zfrsd.c src/gdevl31s.c src/gdevdjtc.c src/spprint.c src/gdevpcx.c src/zfileio.c src/zbfont.c src/slzwd.c contrib/japanese/gdevespg.c src/unix-gcc.mak src/gdevpdfv.c src/gxpflat.c src/gxifast.c src/zsysvm.c src/gsimpath.c src/gdevx.c contrib/gdevbjca.c src/gsmemlok.c src/sbwbs.c src/gximage.c src/gdevstc4.c src/ziodevs.c src/unixansi.mak src/gdevpsfx.c src/szlibd.c src/gscspace.c src/gdevimdi.c src/gdevdfax.c src/gdevm8.c src/gdevpnga.c src/gsropc.c src/zstack.c src/gsfcid.c src/gsfont.c src/isave.c src/zimage.c src/gdevm64.c src/gdevcgm.c src/zdict.c src/zfimscale.c src/gdevtsep.c src/gsfont0c.c src/iccfont.c src/gsht1.c src/gdevpdfg.c contrib/japanese/gdevp201.c src/gdevps.c src/gspcolor.c src/gxi12bit.c src/gxcllzw.c src/zfjbig2.c src/gdevpdtb.c src/gsdps1.c src/gdevs3ga.c src/slzwe.c src/gshsb.c src/gscolor.c src/smtf.c src/ztoken.c src/gxpaint.c src/x_.h src/gdevtifs.c src/zchar32.c src/seexec.c src/gdevm56.c src/spsdf.c src/gximono.c src/fapiufst.c src/szlibe.c src/gxctable.c src/gp_vms.c src/gp_iwatc.c src/gp_os9.c src/gdevbj10.c src/gxclipm.c src/zpaint.c src/gdevmac.c src/stdpre.h src/iplugin.c contrib/japanese/gdevfmpr.c src/gsgdata.c src/gdevmac.h]

2007-09-24T03:52:18.847453Z Alex Cherepanov

Ignore color operations in uncolored type 3 font in PDF files for
compatibility with Acrobat Reader 6 and higher.
Bug 689302, customer 870.

[src/int.mak lib/pdf_draw.ps src/zchar.c]

2007-09-20T12:15:52.643667Z Igor Melichev

Fix : A crash in garbager after clist playback fails in image.

DETAILS :

This problem was occasionally detected when disk overflow happens with 
the test case of the bug 689440.

device_clist_enum_ptrs, device_clist_reloc_ptrs process
gx_device_clist::writer.clip_path when image_enum_id is not zero.
The clist playback code sets it when processing an image.
We guess it was done to avoid redundant clist writing,
and we think it's not a best way to do that.

If an image processing fails with an error,
the old code  does not reset image_enum_id.
Later (when the interpreter closes) 
the garbager processes gx_device_clist::writer.clip_path .
But in the test case it appears to be a pointer from global memory
to local memory, and its relocation appears wrong.
A crash happens while validating the heap after the relocation.

We're not sure why gx_device_clist::writer.clip_path
needs to be set between image plane data portions,
and why the garbager methods are coded to process it.
We guess all these manipulations are wrong,
and a right way should be to call cmd_check_clip_path
in clist_image_plane_data. 

See also comment in cmd_check_clip_path : 
"The clip path might have moved in memory".
We guess it assumes that the pointer is not relocated
when image_enum_id is zero and the ppointer is set.
We guess it should be regular assumption
for all cases, and the clist device garbager methods
must never process it.

This patch applies a minimal change to prevent the crash,
and does not close other suspections.
The change simply closes the image enumerator
when writing to it ends with an error.

[src/gxclrast.c]

2007-09-20T08:49:49.922199Z Igor Melichev

Fix (pdfwrite) : Allow image encoding filter initialization with no parameters passed from the client.

DETAILS :

Bug 689458 "pdfwrite image crash (pcl and xps)".

The change 6122 doesn't account that some client 
may pass no parameters for filter initialization.
Fixing it now and improve the documentation.

[src/gdevpsdi.c]

2007-09-18T19:11:21.591397Z Ralph Giles

Update the build instructions to reflect current practice of shipping 
all the 3rd party libraries we depend on. Bug 689446.

[doc/Make.htm]

2007-09-18T19:01:34.199941Z Ralph Giles

Correct some documentation errors. Bug 689433.

[doc/Projects.htm lib/ps2pdf.cmd doc/Use.htm lib/ps2pdf.bat doc/Ps2pdf.htm]

2007-09-18T17:32:31.734909Z Ralph Giles

Remove obsolete font encoding and compilation instructions from the 
documentation. Bug 689432.

[doc/Fonts.htm]

2007-09-18T15:41:08.152952Z Igor Melichev

Fix : The interpolation of imagemask must not apply to high resolution images (continued).

DETAILS :

Fixing an inaccuracy in a comment in the last patch.

[lib/gs_img.ps]

2007-09-18T15:33:51.055573Z Igor Melichev

Fix : The interpolation of imagemask must not apply to high resolution images.

DETAILS :

Bug 689249 "Major performance degradation rendering PDF",

The revision 7123 implements a conversion of imagemask 
into a bigger image with a smoother pixel granularity. 
Actually the conversion isn't useful for high resolution images
which map an image pixel into a small number of device pixels.
This patch implements such check and it apparently helps for pdfwrite.

Note it includes an arbitrary threshold,
which may need further adjustment.
See comment in code.

[lib/gs_img.ps]

2007-09-14T10:17:07.152885Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 8).

DETAILS :

Bug 689436 "pattern rendering regression with revision 8095".

Do not write tile phase to clist before trying to write the color.
If the latter fails, the phase may become wrong due to 
overloading cmd_opv_set_tile_phase with tile phase and device halftone phase.

With the test case the old code, when writing a trapezoid to clist, 
first writes halftone phase, then fails to write the pattern color 
and falls back to gx_default_fill_trapezoid.
The latter writes strip_copy_rop with it own phases.
But the clist reader expects strip_copy_rop phase to be written
*after* the tile header, so the reader misses the phase sychronizm.

The fix simply delays writing the phase after the color is written.

[src/gxclpath.c]

2007-09-14T05:23:52.359324Z Alex Cherepanov

Add recognition of a CFF file fith the extended header = <01000C02>.
Bug 689449, customer 1110.

[lib/pdf_font.ps lib/gs_cff.ps]

2007-09-13T08:30:48.823871Z Ken Sharp

Update pdfwrite to handle type 0 fonts with type 1 or type 2 descendant fonts (continued).

DETAILS:
Bug #689212 "irregular baselines - gs pdfwrite changes CFF to Type 3". There are no functional changes, the new code behaves the same as the old. The
temporary buffer allocated in pdf_text_process is used to hold the list of glyph
name indices, and the working buffer of indices for pdf_obtain_font_resource_unencoded,
rather than allocating new memory. This considerably simplifies the clean-up on
error in scan_cmap_text.

1. gdevpdtt.c In pdf_text_process, ensure that enough memory is available in the
   temporary buffer. We need to promote character codes to glyph name indices, so
   we need storage for as many glyph name indices as there were input character
   codes. In addition, we need a temporary buffer of the same size for
   pdf_obtain_font_resource_unencoded (maximum required) so we need to double this amount.

2. Update process_cmap_text to pass the buffer allocated in pdf_text_process, and
   passed as an argument to process_cmap_text, to scan_cmap_text.

3. Alter the definition of scan_cmap_text to take the temporary buffer as an
   argument. Modify the code in scan_cmap_text to use the temporary buffer rather
   than allocating new space. Remove all the code for allocating and especially freeing
   the temporary memory. Some corrections to indenting also performed here.

[src/gdevpdtc.c src/gdevpdtt.c]

2007-09-11T19:29:17.888456Z Igor Melichev

Fix (filling algorithm) : Split big segments before filling a path.

DETAILS :

Bug 689397 "Infinite loop is PS ATS file tp pcxcmyk device."

The old code didn't split big segments due to an inaccurate coding.
It caused a fixed overflow with in a coordinate compitation
and a loop of about 2^30 steps.

[src/gxpcopy.c]

2007-09-10T08:31:42.651229Z Ken Sharp

Update pdfwrite to handle type 0 fonts with type 1 or type 2 descendant fonts.

DETAILS
Bug #689212 "irregular baselines - gs pdfwrite changes CFF to Type 3"

There was previously no code in pdfwrite to handle type 0 fonts with type 1 descendant 
fonts. This caused pdfwrite to 'fall back' to the default implementartion which converts
glyphs to a type 3 bitmap font.

This change is to enable scalable fonts to be embedded in the output. NB it is not 
possible, in PDF, to construct a type 0 font with anything other than CIDFonts as 
descendants, and we must therefore output one or more type 1 fonts to do the job.

1. (gdevpdtt.c) in scan_cmap_text add a case to handle a type 1 descendant font. The main
    work is done in this routine; we create a list of glyph name indices representing 
    each of the input character codes and later we use pdf_obtain_font_resource_unencoded
    and the TEXT_FROM_GLYPHS operation to mark the font usage, and create an 'encoded'
    string for output.

    If font->procs.next_char_glyph returns a glyph name index, then we simply add it to
    our list, if it returns a character code (a CMap can map a character code in the type
    0 font to a character code in a descendant font) then we use the descendant font
    'procs.encode_char' to get a glyph.

    Once we have a complete list of glyphs, we pass it to
    pdf_obtain_font_resource_unencoded to add the glyphs to the encoding, and return a
    string where the character codes match the newly created/modified encoding.

    Finally we pass the encoded string and glyph list to process_text_modify_width, using
    the descendant font.

    A couple of minor points; its possible to change descendant fonts in the middle of a
    string, and we need to cope with that, hence the copying of the last glyph in the list
    when a font_change occurs. Its possible to return a different pdfont if we run out of
    encoding positions in the current one, which can result in multiple type 1 fonts in
    the output.

2. We need to use the function adjust_first_last_char, which was defined private in
   gdevpdte.c, so this has been made public.

3. A prototype for adjust_first_last_char has been added to gdevpdtt.h

4. The function reserve_char_code_in_pdfont was written to handle single glyphs, it can
   now be called with multiple glyphs. The loop for re-using positions in the encoding
   with /.notdef codes didn't use the 'last_reserved_char' argument, which meant that it
   kept returning the same position. To prevent this it now pays attention to the
   'last_reserved_char' argument.

5. Finally, the routine pdf_make_text_glyphs_table_unencoded, which calls
   reserve_char_code_in_pdfont also did not previously expect to be called with multiple
   glyphs. The loop below do_unkown has been modified to use a local variable, instead of
   pdfont->u.simple.last_reserved_char. THis means that, should an error occur, the value
   of pdfont->u.simple.last_reserved_char will not be modified.


[src/gdevpdtc.c src/gdevpdtt.c src/gdevpdte.c src/gdevpdtt.h]

2007-09-09T00:53:12.649192Z Alex Cherepanov

Make pswrite and epswrite devices generate proper line-interleaved image
stream even when they receive several scan lines at once. This happens when
the source image operator takes large strings as multiple data sources.
Bug 688200, customer 632.

[src/gdevps.c]

2007-09-08T22:31:20.200765Z Alex Cherepanov

Declare Ghostscript as _LARGEFILE64_SOURCE program, i.e. request transitional
interface to large file support. Check for mkstemp64() availability specially.

[src/Makefile.in src/configure.ac src/stdpre.h src/gp_unifs.c]

2007-09-08T21:59:54.482448Z Alex Cherepanov

Include our std.h header first to ensure consistent type definitions in
contributed files. This is required on HP-UX with aC++ compiler.

[contrib/gomni.c contrib/pcl3/eprn/pagecount.c contrib/pcl3/src/pclcap.c contrib/gdevlx50.c contrib/opvp/gdevopvp.c contrib/pcl3/eprn/mediasize.c]

2007-09-08T17:05:59.540260Z Till Kamppeter

Reflect in the PPD files that the CUPS support comes with GPL Ghostscript now and not with ESP Ghostscript.

[cups/pxlmono.ppd cups/pxlcolor.ppd]

2007-09-05T19:21:05.959793Z Alex Cherepanov

Replace non-standard function call fdopen64() with fdopen(). The former
is not available on most platforms and not needed anyway because O_LARGEFILE
flag is set earlier in the code. Bug 689175.

[src/gpmisc.c]

2007-09-05T07:54:54.782032Z Suzuki Toshiya

Fix (TT fonts) : Suppress loading trailing data after chosen cmap subtable.

DETAILS:

The current cmap selector/loader tries to load a subtable
for Microsoft platform && UCS2 encoding with anything
in trailer, although only MS+UCS2 subtable is used.
Thus, if the cmap table has several additional subtables
after MS+UCS2 subtable (e.g. multiple 16bit cmap subtable
for Shift-JIS/Big5/GB2312/Wansung/Johab, or very long
32bit subtable in format 8/10/12, or simple junk data),
cmap subtable loader tries to load MS+UCS2 subtable and
trailing garbage, and tries to define /cmaptab for
concatenated string of them. So, rangecheck or limitcheck
error can occur due to too-long string. Typical example
is found in bug 688337 which is caused by TrueType font
including cmap subtable in format 12.

If we restrict the scope to MS+UCS2 subtable, it must
not be greater than 0xFFFF bytes. Because cmap subtable
headers in format 0,2,4,6 define these tables length in
16bit. The cmap parser is fixed to check the subtable
header content and read exact length of chosen subtable,
to exclude trailing garbage.

In addition, /getinterval_from_stringarray has a bug
that appears when the end of requested string just fits
to the gap of member strings. The bug is fixed, too.

By this patch, bug 688337 is fixed.

DIFFERENCE:

None.

[lib/gs_ttf.ps]

2007-09-03T13:19:11.511212Z Alex Cherepanov

Fix reference counting logic for clip stack elements. The reference counter
now shows the number of gstates that point to a given element directly or
indirectly. Bug 689429.

[src/gsclipsr.c src/gsstate.c]

2007-08-31T20:53:42.169700Z Igor Melichev

Fix (graphics library) : Always set HWResolution to clipper device.

DETAILS :

Fixes the bug 689365 
"Clipper device may have a wrong HWResolution".

[src/gxfill.c src/gxclip.c]

2007-08-31T19:09:47.125231Z Igor Melichev

Fix (graphics library) : Distinguish two methods gx_make_clip_device_on_stack, gx_make_clip_device_in_heap.

DETAILS :

This is a preparation for fixing the bug 689365 
"Clipper device may have a wrong HWResolution",
step 2.

This change is algorithmically equivalent.

1. Drop tx, ty,arguments, because they always zero.

2. There are 2 different cases in code:
allocation on stack or in heap.
Now we define them explicitely.

3. Adding the 'target' argument,
and adjust reference counters inside the "in heap" method.
The call to open_device is moved inside the methods.

Note that the old code in some cases calls open_device 
after doing some settings (2 occurances in gxfill.c). 
The new code does before that.
We belirvr it is algorithmically equivalent,
because we checked open_device against using the
data being set there.

[src/gdevbbox.c src/gxcpath.h src/gximask.c src/gxccache.c src/gxfill.c src/gxclip.c src/gxstroke.c src/gxclrast.c src/gdevdbit.c src/gxipixel.c]

2007-08-31T17:22:21.775099Z Igor Melichev

Fix (graphics library) : Expand gx_make_clip_path_device, gx_make_clip_device.

DETAILS :

This is a preparation for fixing the bug 689365 
"Clipper device may have a wrong HWResolution".

This change is algorithmically equivalent.

The old code defines a function gx_make_clip_path_device,
and a macro gx_make_clip_device similar as a small wrappers for 
gx_make_clip_translate_device. This patch expands
and removes them as FOR a standardization.

The 'list' argument of gx_make_clip_translate_device is replaced with
'pcpath' argument, because the old code always extract the list
from pcpath. The extraction is now done inside gx_make_clip_translate_device.

[src/gdevbbox.c src/gxcpath.h src/gximask.c src/gxccache.c src/gxfill.c src/gxclip.c src/gxstroke.c src/gxclrast.c src/gdevdbit.c src/gxipixel.c]

2007-08-31T15:31:06.557286Z Igor Melichev

Fix : Remove the pdfwrite/NODISPLAY nonsense from the documentation.

DETAILS :

That statement was always false.

[doc/Use.htm]

2007-08-31T08:29:55.996410Z Igor Melichev

Fix (pdfwrite) : A wrong encoding of Metadata (continued).

DETAILS :

The revision 8181 added a bug which caused an infinite loop 
with -dPDFA Altona-Testsuite_p2_S_x3.pdf

[src/gdevpdfe.c]

2007-08-31T08:27:16.425671Z Igor Melichev

Fix (pdfwrite) : A crash with incorrect shading.

DETAILS :

Bug 689394  "SEGV with MSVC7 run time checking in Type 7 shading."
See comment in code. 

[src/gdevpdfi.c]

2007-08-31T05:43:44.869532Z Igor Melichev

Fix (Type 1 hinter) : Infinite loop in t1_hinter__fix_subglyph_contour_signs.

DETAILS :

Bug 689298 "Infinite loop in t1_hinter__fix_subglyph_contour_signs()".

Well it's a student level error in the algorithm.
Thanks to Alex for the test case with 5 nesting contours.

[src/gxhintn1.c]

2007-08-31T04:47:58.034291Z Igor Melichev

Fix (font rendering) : alloc_char_bits could fall into infinite loop.

DETAILS :

Bug 689036 "infinite loop in char cache logic".

The character cache algorithm assumes that a pointer to
any allocated cached_char instance appears somewhere in ccache.table .
However from the old experience we know that
this obvious invariant appears frequently broken due 
to inaccurate manipulation with cache by clients.
For example, a client sometimes reserves and initializes 
a cached_char instance and then fail due to another error 
before storing the pointer to ccache.table.

In the old code a cycle in alloc_char_bits 
strongly depends on this invariant, 
and therefore it is potentially harmful.
In the past we have got a lot of bugs about it.
Now we restrict the cycle with the cache size.
Changed few function prototypes with returning error
if the invariant is broken.
Note that the graphics library interface changes,
so other interpreters must update the calls to 
alloc_char_bits.

[src/gxchar.c src/gxccman.c src/gxchar.h src/gxccache.c]

2007-08-30T05:53:42.339598Z Igor Melichev

Fix (pdfwrite) : Uninitialized data after converting a Type 42 font into CID font.

DETAILS :

Bug 689399 "PDFA-Option cause gswin32 to crash".

This change is important with -dPDFA only,
and doesn't change the behavior otherwise.
Some font descriptor fields were not initialized.


[src/gdevpdtd.c]

2007-08-30T02:36:52.268008Z Igor Melichev

Fix (pdfwrite) : Properly handle FontMatrix of a Type 3 font.

DETAILS :

Bug 689267 "File converted to PDF displays badly in Acrobat".

Patch from SaGS. His explanation is quoted below.

Part #1: pdfwrite fixes (gdevpdti.c, gdevpdte.c, gdevpdtt.h, gdevpdtt.c :

- Generalize pdfwrite computations for glyph widths and placement, 
  which currently assume an [s 0 0 s tx ty]-type original (= ignoring 
  changes made by makefont & similar) FontMatrix, to work with an 
  arbitrary matrix.

- Fix: the "wy" operand of "d0"/"d1" in Type 3 charproc streams must 
  be zero. Note: other parts of the code already consider wy == 0, 
  and don't need to be changed.

- Remove font_orig_scale() and pdf_font3_scale(), which are not used 
  anymore. Their simple presence is a sign of the assumption that 
  font matrices are simple scalings.

- Minor: remove a dead variable ("int code = 0; ... return code;"). 
  This variable is never changed, because there's another "int code" 
  inside the "for", but it is confusing and takes a lot of research 
  to figure out the behaviour is OK and no usefull error code is 
  lost (it's the 2nd time I stumble against this...)

Notes:
  - All non-Adobe PDF viewers that I tested (Evince/ Fedora 7, 
    Foxit Reader 2.0/ Windows, Jaws PDF Editor 3.5/ Windows, and 
    Ghostscript -r8204) have problems with "weird" font matrices.
    The bug in ghostscript is addressed below.
  - I do have an alternate patch, which "normalises" the 
    FontMatrix, for better viewers compatibility . But this method 
    cannot work when fonts are not embedded: cannot "normalize" 
    something stored in an external file.

 part #2: PDF interpreter fixes (pdf_font.ps, pdf_ops.ps) :

- Force the "wy" parameter of "d0", not only of "d1", in Type 3 
  charproc streams to 0. Comment changed to suggest this is an action 
  is expected to be done as part of enforcing the metrics stored in 
  the PDF (which always imply wy == 0), and not some strange 
  behaviour in Reader.

- A detail in PDF1.7 Ref 5.3.3 "Text Space Details" states that "wy" 
  (or "wx" in WMode 1) must be forced to 0 in PDF text space too, not 
  only in PDF glyph space. To implement this with non-[s 0 0 s tx ty] 
  font matrices, a different method is used: decode "show" strings 
  and extract glyph widths with "cshow", put these into an array, 
  then render the text with "x/yshow".
  - since "wy/x" = 0 in glyph space, the code does not need to use 
    "idtransform", a "div" by "FontMatrix.xx" is sufficient;
  - use a trick (see comment in code) when "FontMatrix.xx" = 0.

CIDFonts are not changed. Those with a "straight" matrix continue to 
work, but there's no improvement if they have a weird "/FontMatrix". 
I think this would require a radical change, and the result will be 
much slower than it is now.

part #3: supplemental ps2write fixes (in opdfread.ps).

- opdfread.ps assumed the FontMatrix is a simple scaling by 0.001;
  generalize the computations to work with an arbitrary matrix.

- Implement a detail of PDF1.7 Ref 5.3.3 "Text Space Details" (nuking 
  the "wy" in text space) if a non-[s 0 0 s tx ty] "/FontMatrix". 
  Similar to the change in the main PDF interpreter, but shorter 
  because opdfread.ps does not handle vertical writing or CID fonts. 

Also "wy" in "d0"/"d1" is already 0 (see patch for pdfwrite), so 
needs no adjustment.

[lib/pdf_font.ps src/gdevpdtt.c src/gdevpdte.c lib/opdfread.ps src/gdevpdti.c src/gdevpdtt.h lib/pdf_ops.ps]

2007-08-29T17:36:36.852840Z Igor Melichev

Fix (TT font handling) : pdfwrite recieved meanless font names.

DETAILS :

Bug 688006 "Font names used with pdfwrite are strange with GS, OK with Adobe Distiller".

This is a continuation for the Revision 5862 change 
made on Wed Apr 20 20:05:41 2005 UTC (2 years, 4 months ago) by ray.

Thanks to Edward for a code sample for accounting font style string.

1. (zbfont.c) When a Postscript file is generated with Adobe printer driver for Windows,
the old code (sinse Revision 5862) extracts OrigFintName 
for building a meanful FontName.
This patch adds an use of OrigFontStyle as suggested by Edward,
so the FontName is created in the form "Arial,Bold".

2. (zfcid1.c) The old code sometimes dropped the good FontName in zbuildfont11 
due to an extra call to get_font_name. Few lines above
the function build_gs_TrueType_font creates the good font name
during an indirect call to sub_font_params, so the call to  
get_font_name is not necesary when OrigFontName presents.
However it is still necessary with regular FontType 11
because they have no FontName and sub_font_params
doesn't use CIDFontName.

3. (zfcid0.c) Applying the (2) change to FontType 9 as for symmetry.
We're tested it a few, but we have no untrivial examples
when a FontType 9 is embedded with OrigFontName.
Maybe (just guessing) ones could be obtained with installing
Adobe Type Library and printing with Adobe printer driver.

4. After doing all above, we unexpectedly detected a regression 
with comparefiles/korea.ps : all Korean glyphs were replaced with
hollow boxes. Analyzing it we found that the document defines a 
composite font with to CIDFontType 2 descendent,
which both appears to be same font. In same time,
the CMap supplies different CIDs for those 2
descendents for a half of code space. While the old code
used meanless unique font names, those 2 descendents
were converted to 2 PDF fonts. When we switched to the meanful name,
which of course is same for both descendents,
pdfwrite tries to merge the descendents.
However doing so it assumed same character mapping
for both descendents.

To fix this problem more changes are done to pdfwrite :

4.1. (gdevpdtf.h) The font descriptor of a type 0 font now stores font_index,
which is the index of its descendent font in the DescendentFonts array
of the source Type 0 font. This happens because in PDF type 0 fonts
always have a single descendent.

4.2. (gdevpdtf.c) Added an initialization for the new field.

4.2. (gdevpdtt.c, gdevpdtt.h) pdf_obtain_parent_type0_font_resource creates
unique type 0 fonts for each descendent in spite of same font name.

4.3 (gdevpdtc.c) pdf_obtain_parent_type0_font_resource needs 
font index as a new argument.

4.4. (gdevpdtt.c) pdf_find_type0_font_resource also takes the new parameter.

With Korea.ps we create 2 font subsets where a single font
would be enough. An optimization may be done with a dynamic
check for encoding conflicts rather than creating another font
for each font index of the CMap. Delaying it for better times.

[src/zfcid0.c src/gdevpdtc.c src/zfcid1.c src/gdevpdtt.c src/zbfont.c src/gdevpdtf.c src/gdevpdtt.h src/gdevpdtf.h]

2007-08-29T09:42:15.384249Z Igor Melichev

Fix (TT font handler) : Place thr True Type interpreter and its data into stable memory (continued 2).

DETAILS :

Bug 688429 "Crash on vmreclaim".

The revision 8209 change is incorrect 
because it effectively frees a memory allocator instance.
Thanks to Henry for pointing this out.

This is the second attempt to fix that...

[src/gxttfb.c]

2007-08-29T09:36:29.695665Z Igor Melichev

Fix (TT font handler) : Place thr True Type interpreter and its data into stable memory (continued).

DETAILS :

Bug 688429 "Crash on vmreclaim".

The revision 8209 change is incorrect 
because it effectively frees a memory allocator instance.
Thanks to Henry for pointing this out.

[src/gxttfb.c]

2007-08-29T07:09:01.667008Z Igor Melichev

Fix (font rendering) : CIDFontType 9 missed PaintType.

DETAILS :

Bug 687970 "PaintType and StrokeWidth ignored with CIDFonts".

To make a decision about filling or stroking,
the old code uses PaintType of the current font,
However with CIDFont 9 it is a Type 1 subsidiary,
which has no PaintType.

The patch implements the 'or' logic for the PaintType of the root font
and the PaintType of the current font. We believe it should 
correctly handle cases when PaintType 2 is set to
a root font or to its descendent. However we have not enough 
practical test cases to test all varuiants.

Particularly, we would like to test a Type 0 font with
2 descendents, each of which is CIDFontType 9
and they have didfferent PaintType.
In such case this patch may need a further improvement.

The desision about filling or stroking a character is done in type1exec_bbox
and in nobbox_finish. The patch also passes a pointer to gs_text_enum_t instance 
to type1exec_bbox to provide the data for the decision.

[src/zfcid0.c src/zchar1.c]

2007-08-28T16:18:27.199037Z Igor Melichev

Fix (pdfwrite) : Uninitialized defaultWidthXwhile while converting a Type 1 font into Type 2.

DETAILS :

Bug 689406 "Valgrind: Uninitialised defaultWidthX in psf_convert_type1_to_type2()".

The last patch appears incomplete and doesn't compile. 
Fixing now.

[src/gdevpsf2.c src/gdevpsf.h src/gdevpsfx.c]

2007-08-28T16:06:12.766158Z Igor Melichev

Fix (pdfwrite) : Uninitialized defaultWidthXwhile while converting a Type 1 font into Type 2.

DETAILS :

Bug 689406 "Valgrind: Uninitialised defaultWidthX in psf_convert_type1_to_type2()".

Thanks to Alex for the problem localization and for the suggested patch.
This change is equivalent to Alex's patch
expect the better documentation. 
See comment in code.

The old code accessed pfont->data.defaultWidthX,
which is never used or initialized elsewhere with a Type 1 font,
because defaultWidthX is a Type 2 feature.

[src/gdevpsfx.c]

2007-08-28T06:34:08.453844Z Ray Johnston

Correct obvious typo in default rgb to cmyk color mapping. It makes
no sense to use the 'g' component to calculate the 'k' for black
generation and undercolorremoval.

[src/gxcmap.c]

2007-08-27T20:44:27.984183Z Igor Melichev

Fix (TT font handler) : Place the True Type interpreter and its data into stable memory.

DETAILS :

Bug 688429 "Crash on vmreclaim".

With the old code gx_ttfReader and ttfInterpreter instances
were prematurely released by 'restore' while 
gs_font_dir and cached_fm_pair instances contain
references to them. Since TT interpreter is a global singleton,
we're safe to store it in stable memory.

[src/gxttfb.c src/gxccman.c]

2007-08-27T01:16:47.532710Z Alex Cherepanov

Change the order of include files to define a macro before it's used.
The undefined macro in the old code passed as a function declaration.

[src/gxshade1.c]

2007-08-27T00:53:59.301536Z Alex Cherepanov

Add HP-UX to the long list of systems that need both time.h and sys/time.h

[src/time_.h]

2007-08-26T23:32:21.633797Z Alex Cherepanov

Cast the pointers to the same type because aC++ compiler cannot compare
pointers of different types.

[contrib/japanese/gdevmjc.c]

2007-08-26T23:24:57.663909Z Alex Cherepanov

Fix a typo in a contributed driver for HP color printers detected by aC++
compiler. Assuming that pointers compare as unsigned values, the fix doesn't
have any run-time effects.

[contrib/gdevcd8.c]

2007-08-23T18:00:19.425565Z Alex Cherepanov

When the same name maps to more than one glyph change the name.
Don't treat /.notdef names specially because glyphs corresponding
to /.notdef names can look different. Bug 689408, customer 770.

DIFFERENCE:
None

[lib/gs_ttf.ps]

2007-08-22T06:38:36.487276Z Suzuki Toshiya

Fix (TT fonts) : Ignore invalid entries in loca table.

DETAILS : 

Some problematic TrueType fonts have loca table that
the offset to a data in glyf table is larger than
the size of glyf table. In previous implementation
since trunk revision 5707 (ghostscript-8.57), when
such invalid entry is found, the font loading procedure
is immediately aborted and invalid font error is
returned. To continue the problematic TrueType object,
the invalid entries of loca tables now are ignored and
the font loading procedure is continued. If all entries
are invalid, the invalid font error is returned.

After the sorting of loca table entries by their values,
the invalid entries with too large offsets are collected
in the end of the sorted loca entries (psortary[]).
By this patch, the sorted loca entries are scanned from
from the end to the beginning, and the number of valid
entry is counted (num_valid_loca_elm). By this number,
the invalid loca entries are initialized to have null
glyph (the data size of glyph is set to 0).

By this patch, bug 689347 is fixed.

[src/gstype42.c]

2007-08-21T22:26:58.681438Z Ralph Giles

Correct more changelog substitution errors. Bug 689388.

[doc/History8.htm doc/Details8.htm]

2007-08-20T17:15:22.306956Z Alex Cherepanov

Fix command list-based devices on 64-bit platforms. Ghostscript always writes
int values to the command list but old code interpreted the bit pattern as a
long int, causing conversion of the negative values to large positive ones.
Bug 689353.

[src/gxclrast.c]

2007-08-20T17:10:51.151066Z Ray Johnston

Use the color lookup cache in wtsimdi_contone_get_bits_rectangle.
This results in a 6% overall performance improvement on the 12
performance test files, and up to a 38% improvement on WW2KA122.prn
Also clean up the MSVC and gcc warnings.  Customer #951.

DETAILS:

There is a note about the allocation of cmyk_buffer relying on
the alignment when using gs_malloc. The note also describes the
method to remove this reliance on the alignment assumption.

[src/gdevwts.c]

2007-08-17T18:50:33.373530Z Ray Johnston

Fix stdint.h related problems with the Cygwin build (gcc 3.4.4)

DETAILS:

There was a workaround for an obsolete version of Cygwin tools that had
u_int32_t (and other types) instead of uint32_t that is standard on linux
and Cygwin stdint.h now. These changes were needed for the PCL, XPS and
language_switch builds -- the gs build worked thanks to autoconf.

[src/unix-gcc.mak src/stdint_.h]

2007-08-17T13:58:12.668319Z Alex Cherepanov

Fully initialize pdf_resource_t object allocated in pdf_alloc_aside()
to avoid a Valgrind warning. Bug 688907.

[src/gdevpdfu.c]

2007-08-17T13:02:19.679286Z Alex Cherepanov

Add missing initialization of txy_fixed_valid field. Since the fixed
coordinates are valid, the patch eliminates possible re-calculation of the
fixed coordinates but doesn't affect the end result. Bug 688914.

[src/gdevpdfv.c]

2007-08-17T04:49:22.864920Z Ray Johnston

This set of changes is an example for users or Artifex customers
that want to intercept the color spaces and perform their own
color space conversion for the CIEBased or ICCBased color spaces,
converting all of these spaces to the PostScript color management
link space "CIE XYZ". There were changes needed to implement this
that transcended the original custom color callback scheme, but
the approach taken is intended to minimize changes to the color
space processing.

Artifex customer #330

DETAILS:

Rather than rely on the hack in gx_cie_to_xyz_alloc that sets the
pis->cie_render to ~0, we establish a separate boolean for this,
cie_to_xyz which indicates that we don't need a CRD (gxistate.h,
gsistate.c, gsciemap.c, gscie.c). Note that the gx_cie_to_xyz_alloc
function is also used in the lab_range function in gdevpdfk.c
to construct an L*a*b* ICC conversion space for the pdfwrite
device.

The 'pclient_color_space_data' is now handled in the ENUM and
RELOC procedures for the gs_color_space base structure shared
by all color spaces (gscspace.c). A side effect of this is that
the pclient_color_space_data structure MUST be allocated with
appropriate GC structure calls an with an appropriate GC type
of macro to identify the structure for the GC and establish
the ENUM and RELOC hooks. This was needed to allow a gs_imager_state
structure to be allocated for the CIE color spaces and to have
both structures to be 'known' to the GC logic.

The CIE_LOAD_CACHE_BODY macro and the gx_install_cie_abc function
are now exported in gscie.h rather than local to gscie.c so that
gsncdummy.c and other custom callback clients can use them.

Finally, the gsncdummy.c module now includes example handling
that allow the graphics library to convert colors to XYZ if
the original color space was one of the CIEBased or ICCBased
spaces. Since CIE XYZ to L*a*b* is a direct conversion, this
allows clients to work with device independent color.

The conversion from XYZ to ICC L*a*b* code exists in gdevpdfk.c
in the function xyz_to_lab() which might be useful enough to
export in the future. For the short term clients can 'clone'
this small function if needed into their own color callback
processing.

Note that -dUseCIEColor (or << /UseCIEColor true >> setpagedevice
PostScript sequence) will mean that all Device* colorspaces also
get mapped through the Default* colorspaces to XYZ (DeviceGray,
DeviceRGB and DeviceCMYK).

[src/gxistate.h src/gscie.h src/gsistate.c src/gsncdummy.c src/gsciemap.c src/gscspace.c src/gscie.c]

2007-08-14T21:28:55.383671Z Ralph Giles

Revert r8187, which is part of the CJKV patch set reverted in r8190.

[src/int.mak]

2007-08-14T20:48:29.233978Z Till Kamppeter

Removed CJK patches.

[examples/cjk src/zchar42.c lib/gs_cidtt.ps src/gxfont42.h src/gstype42.c src/unixinst.mak src/zchar1.c lib/cjkv lib/gs_init.ps]

2007-08-14T18:53:48.875152Z Ralph Giles

Throw an diagnostic error if the wts_plane_* halftone files cannot
be opened. Propagate the error and clean up properly to avoid a 
segfault.

Also #ifdef DEBUG protects some debug printouts to reduce noise.

[src/gdevwts.c src/gdevimdi.c]

2007-08-14T16:18:28.564745Z Ralph Giles

Change the path to the icc link profile to the current working 
directory, the same path used for the wts_* halftone files and
for link.icc in gdevimdi.c. Motivated by simplifying running
the device in regression testing.

[src/gdevwts.c]

2007-08-13T17:07:58.742285Z Ralph Giles

Add the library files from the cjkv to the romfs file list. This 
restores executability of the build with COMPILE_INITS=1 which
was broken by r8185.

[src/int.mak]

2007-08-13T16:00:16.465824Z Till Kamppeter

Fixed DESTDIR support in Koji Otani's CJK patches

[src/unixinst.mak]

2007-08-13T10:08:05.772194Z Till Kamppeter

Added CJK patches from Koji Otani

[src/zchar42.c examples/cjk lib/gs_cidtt.ps src/gxfont42.h src/gstype42.c lib/cjkv/cjkcidcm.ps lib/cjkv/baseutil.ps src/zchar1.c lib/cjkv/cjkvttcf.ps examples/cjk/all_ac1.ps lib/cjkv lib/cjkv/cjkvinit.ps examples/cjk/all_ag1.ps examples/cjk/iso2022.ps examples/cjk/all_aj1.ps examples/cjk/gscjk_ac.ps examples/cjk/all_ak1.ps examples/cjk/all_aj2.ps lib/cjkv/tt11util.ps lib/cjkv/cjkfnmap.ps examples/cjk/gscjk_ag.ps lib/cjkv/tt42util.ps src/unixinst.mak examples/cjk/gscjk_aj.ps examples/cjk/gscjk_ak.ps examples/cjk/article9.ps lib/gs_init.ps]

2007-08-12T17:29:29.699921Z Alex Cherepanov

Use inline and intristic functions to improve the speed of CIE cache set-up.
Bug 689153, customer 850.

[src/gscie.h src/gscie.c]

2007-08-11T03:57:31.402230Z Alex Cherepanov

Change stream keyword handling to accommodate yet another kind of a broken PDF.
Bug 689400, customer 580.

DETAILS:
Valid stream keyword can be followed by (\n) or (\r\n). Invalid PDF files
accepted by Acrobat Reader can insert blank characters or terminate the stream
with (\r). Old code tolerated ( \r) termination, but didn't tolerate ( \r\n).
New code assumes blank characters and (\r) termination at the same time are not
probable and tolerates ( \r\n) or (\r) but not ( \r).

[lib/pdf_base.ps]

2007-08-10T08:15:58.076010Z Henry Stiles

This code change should have been committed in tandem with the change
in revision 8055 (see 8055 log for details).

[src/gxclpath.c]

2007-08-09T18:12:59.257962Z Ray Johnston

Update the testing.cfg.example to match the current (after rev 7854) of
the regression scripts in toolbin/tests. The r7854 had included a
testing.cfg file instead of the example file (see comment for rev 7862).

DETAILS:

I don't really like the difficulty of changing the comparegs directory in
the current way gsconf.py processes the testing.cfg. IMHO, it would make
sense to allow for some of the higher level directory variables to be
used, simplifying changing it for testing from a particular gs checkout
that has been modified. Also having some of the other values able to
be relative to 'root' (for the comparefiles, database, etc.) would be
handy.

A task for later along with better documentation.

[toolbin/tests/testing.cfg.example]

2007-08-08T00:12:49.260263Z Timothy Osborn

Updating CMAP files as per bug report #689386

DETAILS:

See:

ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/00README

for more details.

[Resource/CMap/UniJIS2004-UTF16-V Resource/CMap/UniJIS2004-UTF32-H Resource/CMap/UniJIS2004-UTF8-V Resource/CMap/UniJIS2004-UTF16-H Resource/CMap/UniJIS2004-UTF8-H Resource/CMap/ETenms-B5-V Resource/CMap/ETenms-B5-H Resource/CMap/UniCNS-UTF32-H Resource/CMap/UniCNS-UTF16-H Resource/CMap/UniCNS-UTF8-H Resource/CMap/UniJISX02132004-UTF32-V Resource/CMap/UniJIS2004-UTF32-V Resource/CMap/UniJISX02132004-UTF32-H]

2007-08-07T00:40:18.162968Z Alex Cherepanov

Pacify MSVC 7 run time checks. Change the order of condition checking to avoid
returning an uninitialized value. The code is algorithmically equivalent,
except it doesn't assign anything instead of assigning an uninitialized value.
Bug 689387

[src/gdevpdfd.c]

2007-08-05T13:55:26.215718Z Igor Melichev

Fix (pdfwrite) : A wrong encoding of Metadata.

DETAILS :

Bug 689244 "Wrong encoding of title in metadata for PDF/A".

Thanks to mpsuzuki for preliminary analyzis.

1. See the documentation change.
2. gs_pdfwr.ps converts the specified name into a translation table.
   We believe that popolar encodings translate into single Unicode
   characters, so we don't implement Unicode compositions now.
   This may be a subject of further improvements. In this case
   the generated integer array should use a complex format
   for representing the translation table.
3. The translation table is passed to pdfwrite 
   as a new device parameter DSCEncodingToUnicode.
4. When it is specified, gdevpdfe.c performs the translation
   first into UTF-8, then into XML.
5. The new modules ConvertUTF.c, ConvertUTF.h are obtained from
   Unicode Inc.

[src/gdevpdfx.h src/ConvertUTF.c src/gdevpdfp.c doc/Ps2pdf.htm src/ConvertUTF.h src/gdevpdfe.c src/gdevpdfb.h src/devs.mak lib/gs_pdfwr.ps lib/gs_agl.ps]

2007-08-04T21:42:53.446406Z Alex Cherepanov

Change the order of tests to identify fonts with FID attribute that have been
both scaled and copied. Bug 689390

DETAILS:
Prior to this revision Ghostscript mis-recognized such fonts as scaled-only
in build_gs_font() and rejected with /invalidfont during font validation.

[src/zfont.c src/zbfont.c]

2007-08-04T14:30:04.276917Z Alex Cherepanov

Take rendering intent type from the /Intent key of the CRD created by Adobe
ProcSet "Adobe_AGM_Core 2.0 0" and pass it to the graphic state. Bug 689379

[lib/gs_lev2.ps lib/pdf_ops.ps lib/gs_init.ps]

2007-08-03T16:29:44.050173Z Timothy Osborn

Fix for seg fault caused by undersized buffer as reported in bug report #687397

DETAILS:

Although the patch submitted by the reporter did appear to fix the problem,
it was more masking it than fixing it. While the analysis of the problem
being that ss->Items was too small was correct, the real cause was a rounding
problem in siscale.c/contrib_pixels(). The problem did not happen on my Mac,
but was reproduced up on peeves because of differnces in the way the two
systems perform rounding.

[src/siscale.c]

2007-08-03T15:46:03.840774Z Ralph Giles

Correct a substitution script error in the change logs.

[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]

2007-08-02T08:53:09.078741Z Igor Melichev

Fix (transparency in clist) : Write transparent paths and images to clist as high level objcts.

DETAILS :

Bug 689186 "PDF segfaults or exits with no output".

With the test case the old code creates a 2.5Gb clist file, 
because it transformes transparent paths and images into rectangles.
The new code writes them as high level objects,
so that the clist file reduces to 477Mb.

1. (gdevp14.c) The old code appears to provide all necessary
methods for writing paths and images to clist as high level objects,
but doesn't call them. To activate them we simply replace default implementations
with forwarding methods in pdf14_clist_*_device.

2. (gdevp14.c) The old code sets the lop_pdf14 flag to
the clist reader's imager state. Particularly
it may be set when calling p14dev->pdf14_procs->put_image.
It causes gx_image_enum_begin to fail,
and the image silently dissappers from the output.
We fixed it with resetting the flag immediately before
calling p14dev->pdf14_procs->put_image.
A better way would be to synchronize log_op
in clist_create_compositor, but we don't like to
write it to all bands as other compoitor commands do.

3. (gdevp14.h, gdevp14.c) New fields inserted into pdf14_device_t
to provide a synchronization of encode_color, decode_color, get_color_mapping_procs,
get_color_comp_index with changing color_info. Debugged with pkmraw -r300 Bug688631.pdf .
Without them the 1bpc color conversions 
were called from pdf14_cmap_cmyk_direct with an 8bpc color,
causing an almost white page instead blue axial and radial shadings.

4. (gdevm4.c) The old code defines a wrong color_info for mem_mapped4_device.
It defines 3 components instead the correct value 4 (3 colored and 1 gray).

5. (gdevp14.c) During the clist playback the new code does not change color_info
for the clist writer (p14dev->target->color_info). We marked this change
with the comment :
/* Disabled because *p14dev has no forwarding methods during the clist playback. */
We ise #if 0 because we're not sure why the old code does so.
We suspect it was done by a mistake and has no any effect.
#if 0 will keep it for a while.

More possible optimization :

1. Use pdf14_buf::bbox when back dropping a transparency buffer.
2. Use pdf14_buf::rect to restrict bands which set up the transparency compositor.
   Now it is written to all bands.
3. Write text to clist as high level object.    

[src/lib.mak src/gdevp14.h src/gdevm4.c src/gdevp14.c]

2007-08-02T04:08:11.471770Z Alex Cherepanov

Pacify Valgrind - initialise both operands of the product. Valgrind considers
a product of 0 and an uninitialized value to be uninitialized. Bug 689384.

[src/gximage3.c]

2007-08-02T01:22:14.242094Z Ralph Giles

Update the interpreter library version number to match the one in 
version.mak. The previous commit just improved the comments.

[lib/gs_init.ps]

2007-08-01T23:56:58.305050Z Ralph Giles

Bump the revision number post release.

[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]

2007-08-01T22:38:01.441981Z Ralph Giles

Correct some cut-and-paste typos in the change log update.

[doc/Changes.htm doc/History8.htm]

2007-08-01T22:10:56.427930Z Ralph Giles

Update change logs and the open bug list or final release.

[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]

Version 8.60 (2007-08-01)

This is a new stable release of the Ghostscript codebase. The most significant change is the merge of drivers and other patches from ESP Ghostscript. This version of Ghostscript work with CUPS and is intended to be a replacement for the Easy Software fork going forward. We extend a special thanks to Till Kamppeter and Mike Sweet for making this happen.

In addition to CUPS support, the ESP merge includes a number of other notable changes. The contrib directory of the GPL Ghostscript source tree now includes a much larger complement of drivers. These are not maintained by Artifex Software, Inc. and are not included in the commercially licensed version, but are of great assistance maintaining support for older printers in Linux distribution. The X11 device is now modularized on Linux and Solaris systems when built with GNU ld, meaning this device is compiled as a separate shared object which can be optionally loaded at runtime, allowing the main binary to work on systems without X client support installed.

This release also includes numerous important bug fixes over the previous stable version, as well as improvements to performance, memory footprint, shading and image handling. We recommend upgrading to all users.

The following bugs were open at the time of release:

226943, 430175, 465936, 493348, 535932, 578865, 610478, 614298, 626295, 686747, 686853, 686865, 687011, 687039, 687084, 687095, 687108, 687146, 687193, 687196, 687257, 687271, 687280, 687295, 687297, 687303, 687327, 687342, 687345, 687346, 687375, 687397, 687414, 687475, 687492, 687514, 687520, 687531, 687536, 687559, 687561, 687593, 687595, 687608, 687630, 687650, 687666, 687674, 687677, 687695, 687697, 687702, 687715, 687721, 687728, 687729, 687731, 687775, 687780, 687782, 687793, 687796, 687805, 687814, 687844, 687850, 687887, 687903, 687904, 687907, 687915, 687931, 687950, 687957, 687970, 687974, 687981, 687983, 687988, 688006, 688007, 688022, 688024, 688026, 688032, 688035, 688036, 688042, 688058, 688061, 688064, 688066, 688075, 688081, 688095, 688129, 688130, 688134, 688151, 688152, 688159, 688166, 688184, 688187, 688200, 688203, 688204, 688207, 688210, 688215, 688227, 688239, 688243, 688267, 688269, 688280, 688282, 688283, 688288, 688312, 688317, 688318, 688320, 688333, 688337, 688342, 688358, 688360, 688361, 688363, 688372, 688375, 688378, 688386, 688387, 688389, 688395, 688413, 688427, 688428, 688429, 688434, 688436, 688437, 688440, 688446, 688448, 688468, 688473, 688474, 688475, 688483, 688490, 688495, 688500, 688515, 688517, 688526, 688528, 688533, 688539, 688540, 688542, 688543, 688557, 688565, 688573, 688580, 688581, 688588, 688598, 688601, 688604, 688605, 688610, 688616, 688617, 688619, 688626, 688627, 688633, 688634, 688636, 688637, 688638, 688643, 688646, 688647, 688651, 688653, 688655, 688673, 688674, 688683, 688696, 688697, 688699, 688708, 688709, 688710, 688711, 688714, 688717, 688728, 688731, 688734, 688736, 688739, 688757, 688762, 688770, 688774, 688777, 688778, 688783, 688796, 688797, 688806, 688807, 688811, 688813, 688815, 688818, 688829, 688830, 688834, 688843, 688845, 688846, 688871, 688872, 688876, 688899, 688903, 688904, 688907, 688908, 688909, 688914, 688915, 688916, 688917, 688918, 688919, 688923, 688926, 688928, 688933, 688940, 688942, 688943, 688945, 688949, 688952, 688958, 688969, 688970, 688976, 688978, 688979, 688981, 688983, 688986, 688990, 688992, 688994, 688999, 689003, 689011, 689013, 689014, 689022, 689025, 689028, 689031, 689032, 689036, 689040, 689044, 689046, 689048, 689050, 689053, 689055, 689057, 689058, 689060, 689065, 689068, 689070, 689076, 689077, 689078, 689080, 689081, 689085, 689090, 689092, 689093, 689094, 689098, 689101, 689103, 689104, 689106, 689107, 689111, 689114, 689115, 689116, 689117, 689127, 689128, 689129, 689130, 689132, 689133, 689136, 689137, 689138, 689145, 689146, 689148, 689150, 689153, 689154, 689155, 689159, 689161, 689164, 689167, 689169, 689172, 689174, 689175, 689181, 689182, 689184, 689186, 689188, 689195, 689198, 689199, 689206, 689209, 689210, 689212, 689222, 689224, 689230, 689232, 689236, 689241, 689242, 689244, 689246, 689247, 689248, 689249, 689252, 689253, 689256, 689264, 689265, 689266, 689267, 689273, 689278, 689279, 689280, 689281, 689282, 689283, 689289, 689290, 689291, 689292, 689294, 689295, 689298, 689302, 689304, 689305, 689306, 689308, 689310, 689313, 689316, 689326, 689327, 689331, 689333, 689334, 689335, 689338, 689339, 689340, 689341, 689343, 689347, 689349, 689350, 689351, 689352, 689353, 689354, 689356, 689358, 689359, 689361, 689362, 689363, 689364, 689365, 689367, 689368, 689369, 689370, 689372, 689373, 689374, 689375, 689376, 689378, 689379, 689380, 689381, 689382, 689384, 689385, 689386.

Incompatible changes

The default device on unix-oriented builds has temporarily switched to the bbox device, and is not the x11 device as in the past. The means that running gs from the commandline with no options will no longer display a file. Specify -sDEVICE=x11alpha instead. The change is a side effect of the X11 modularization patch, and will be remedied in a future release.

Changelog

2007-08-01T21:20:57.253476Z Ray Johnston

Fix problem seen with stcolor device where the get_color_mapping_procs
device proc was NULL, causing SEGV. Bug #689371.

DETAILS:

The fix was local to gdevstc.c. The other modules were changed to
add protection in case other devices (such as all of the new devices
in contrib) don't manage to change the get_color_mapping_procs from
the usual default of NULL in the device structure. Rather than
dprintf or error messages that may be supressed with #if DEBUG.
I elected to use eprintf.

Note that the get_color_mapping_procs is usually set up by gdevdflt
gx_device_fill_in_procs, but there are several cases where we don't
know what to do, so we set the gx_error_get_color_mapping_procs.

The detection in gs_fillpage will usually result in a single error
message then we return gs_error_Fatal (-100).

[src/gdevdflt.c src/gdevstc.c src/gxcmap.c src/gspaint.c]

2007-08-01T19:18:12.034589Z Ralph Giles

Update release date and product name for final release.

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

2007-08-01T17:19:50.181574Z Ray Johnston

Fix for gv hang, where an application sends (less than 1023 bytes)
PostScript and expects a response. AppleTalk PAP and some other
interactive viewer front ends may run into this. Bug #689237.

DETAILS:

The autosense is still sort of fragile in that we only process
PostScript immediately without waiting for the .peekstring of
1023 bytes to complete if it begins with "%!" or "%%". The
check for "%%" is needed for gv, conventionally "%!" is more
widely used. Note this really only affects applications using
gs as a process getting data from stdin and expecting immediate
action (response or other processing).

Also note that the %! or %% is only looked for as the first
two characters so that the presence of this in garbage before
an actual PDF won't cause confusion.

[lib/pdf_main.ps]

2007-08-01T04:10:13.989117Z Alex Cherepanov

Fix a misleading typo in an error message: s/UseCUEColor/UseCIEColor/

[src/gdevpdfp.c]

2007-08-01T04:01:06.081994Z Alex Cherepanov

Remove inappropriate PNG_CONST qualifier from a few libpng arrays, where it
adds 2nd const qualifier, which is rejected by MSVC 6. Bug 689383.

[libpng/pngtrans.c libpng/pngerror.c]

2007-07-31T14:19:45.536400Z Alex Cherepanov

Use a correct name for the absolute colorimetric rendering intent. Change the
encoding of the rendering intents in the graphic state to use ICC numbers
from Table 18 (section 6.1.11) instead of the PDF order to reduce re-coding
and confusion. Bug 689377.

[src/gxistate.h lib/pdf_ops.ps src/gsstate.c src/zcolor3.c]

2007-07-31T03:31:13.074828Z Ralph Giles

Update changelogs for the release candidate.

[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]

2007-07-30T20:13:56.963379Z Ralph Giles

Update the libpng version in the top level makefiles to match the new 
1.2.18 source.

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

2007-07-30T20:10:59.397769Z Ralph Giles

Include the libpng 1.2.18 source.

[libpng]

2007-07-30T20:09:22.151026Z Ralph Giles

Remove the old included libpng-1.2.16 to make way for the newer release.
This revision will not build!

[libpng]

2007-07-30T20:02:41.610054Z Ralph Giles

Update the release notes for the upcoming release.

[doc/News.htm src/version.mak]

2007-07-29T16:11:45.078740Z Alex Cherepanov

Ignore named actions in PDF link annotations that refer to a page outside
of the document page range. Bug 689286.

[lib/pdf_main.ps]

2007-07-28T16:13:12.033906Z Alex Cherepanov

Fix a bug in the "LastPage" named action handler that pushed an extra operand
to the stack causing "/rangecheck in pdfmark". Thanks to Heiko Oberdiek for
the patch. Bug 688311.

[lib/pdf_main.ps]

2007-07-27T20:14:35.951213Z Ray Johnston

Apply a long pending patch that only affects an ancient 'alphaimage'
operator (Next display PostScript extension). Bug #592160.

DETAILS:

The bug report didn't include a test file, but reading the spec on
this operator found at:

http://objc.toodarkpark.net/AppKit/Functions/PSOperators.html

it seems that the number of components provided does not account
for the alpha channel. The relevant excerpt is:

Synopsis: pixelswide pixelshigh bits/sample matrix datasrc0 [...datasrcn] multiproc ncolors alphaimage -

Renders an image whose samples include an alpha component. This
operator is similar to the standard colorimage operator. However,
note the following:

    * When supplying the data components, alpha is always given
      last-either as the last data source (datasrcn) if the data
      is given in separate vectors, or as the last element in a
      set of interleaved data.

    * The ncolors operand doesn't account for alpha -- the
      value of ncolors is the number of color components only.

This final note is the justification for the patch.

[src/gxipixel.c]

2007-07-27T04:27:36.603967Z Alex Cherepanov

Add a missing member to the initialiser macro for the device structure of
japanese laser printer vector PDLs. Fix a FPE crash. Bug 689366.

[contrib/lips4/gdevlprn.h]

2007-07-25T05:12:45.877915Z Ray Johnston

Revert patch for rev 7904 which caused regressions (bug 689215).
The fix for this will be committed in a following patch that
fixes 688543 and 689364. Fixes bug 689215.

DETAILS:

The root of the problem is that the filled/stroked areas are
too large (from the fill_adjust value). Unfortunately changing
this to fix these problems causes MANY differences that need
to be examined. Initial examination shows many PROGRESSIONS,
i.e., we are closer to Adobe and from 200 files examined so
far, has not caused dropout (which is consistent with the
analysis).

[src/gdevp14.c]

2007-07-24T22:29:24.445810Z Till Kamppeter

Removed duplicate usage of DESTDIR in cups/cups.mak

[cups/cups.mak]

2007-07-24T22:23:34.891503Z Till Kamppeter

Fixed installation of data files from the contrib/ directory

[src/Makefile.in src/configure.ac]

2007-07-24T21:18:53.099055Z Ray Johnston

Fix for the clip mask of images being too wide for the fixed size
buffer. New size wide enough for 54 inches at 2400 dpi. Problem
seen at 600 dpi with AC405122 from the PS ATS for customer #951.

[src/gxmclip.h]

2007-07-24T20:02:20.813265Z Igor Melichev

Fix (shadings) : Decomposition limit could be too small.

DETAILS :

Bug 689225 "Regression: major differences in 470-01.ps in block 470-03".

This patch improves the tolerance of the shading code to 
a wrong device resolution, which can apparently happen 
when installing a clipper device. Thus is closes a symptom,
but the bottom of the problem is left unfixed.
We do so due to incoming scheduled release.
We opened a separate bug 689365 about a wronmg HWResolution of clipper device.
  

[src/gxshade6.c]

2007-07-17T09:55:56.457439Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 8).

DETAILS :

This fixes (some) gcc warnings in the recently added code (part 2).
  

[src/lib.mak src/gxclrast.c src/gdevpdfi.c src/gxshade6.c src/gxclpath.c src/gxclrect.c]

2007-07-16T21:35:48.939836Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 6).

DETAILS :

This fixes (some) gcc warnings in the recently added code.
  

[src/gxclrect.c]

2007-07-16T21:24:42.764396Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 6).

DETAILS :

This is an initial commit for decomposition of linear color triangles
that the target device can't handle while a clist playback.

The new code is not called with practical cases
because currently we have no devices 
with an intrivial implementation of fill_linear_color_triangle.
We commit this code for future if someone will want
to implement that function in hardware with a smaller number of bits.

To force an execution of the new code
one can change this switch in gxclrast.c :

	if 1 /* Disable to debug gx_fill_triangle_small. */

We debugged the new code with setting this switch to 0.
In this case the decomposition code starts, and calls 
fill_linear_color_triangle again with same arguments
(except converting frac31 colors to 'float', 
rather it doesn't miss precision with comparefiles).
This test works fine with comparefiles.
If the device method would request a further decomposition,
an earlier debugged code works, so we didn't test it now
(Testing it with available implementations would require an additional effort
for rejecting regular triangles by the target device).

For more details see comments in code.

Note the clist playback now calls gxshade6.c .
  

[src/gxshade4.h src/lib.mak src/gxclrast.c src/gxshade6.c src/gxdevcli.h]

2007-07-16T17:39:09.809376Z Ray Johnston

Prevent potential (although unlikely) divide by zero.

[src/gximag3x.c]

2007-07-16T17:25:30.726967Z Ray Johnston

Fix a divide by zero that would show up on linux, but not cygwin.
Seen with 001-01.ps to the x11 device.

[src/gdevmem.c]

2007-07-16T17:06:58.964025Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 5).

DETAILS :

This change is algorithmically equivalent.
It provides methods for decomposition of triangles written to clist.
The purpose is to fix possible gs_error_unregistered in gxclrast.c ln 1498.
The fix itself will be done separately.
  

[src/gxshade4.h src/gxshade6.c]

2007-07-16T16:58:11.366089Z Alex Cherepanov

Make failed dictionary look-up return /undefined instead of /dictfull.
Bug 689360

[src/idict.c src/zfcid1.c]

2007-07-15T17:27:07.515793Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 4).

DETAILS :

Provide a better compression when writing frac31 values to clist.
The new method is based on fact that fractional color values have many zeros in lower bits.
  

[src/gxcldev.h src/gxclrast.c src/gxclrect.c src/gxclutil.c]

2007-07-14T19:18:42.392348Z Henry Stiles

Changes from Neil Muller to support tumble duplex in several deskjet
printers (see 687978).  We have done no testing of these changes.

[src/gdevdjet.c src/gdevdljm.c src/gdevdljm.h contrib/gdevhl12.c]

2007-07-13T18:48:05.145075Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 3).

DETAILS :

1. Use fa->clip for a better Y-range for computing which bands are covered with fill_linear_color_triangle.

2. Provide a right raster op for linear color methods. Currently this change isn't
important because shadings don't use untrivial raster ops.
  

[src/gxclrect.c]

2007-07-13T16:29:03.411589Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 2).

DETAILS :

This fixes Comment #4 of Bug 689344 "Regression: cmyk output broken with banding".

The revision 8020 of gxfill.h doesn't account a case of pcpath==NULL
in gx_default_fill_path.
However the clist reader does such calls with halftoned colors.

[src/gxfill.c]

2007-07-13T12:07:29.877199Z Igor Melichev

Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued).

DETAILS :

This fixes the clist expansion problem for shadings.

The last patch was committed with a wrong revision of gxclrast.c,
which disabled some shading components for development purpose.
  

[src/gxclrast.c]

2007-07-13T01:10:56.469571Z Alex Cherepanov

Make PDF post-processing utilities tolerant to missing Length attribute in
the strean dictionary. Our PDF parser undefines incorrect Length attributes.

[lib/pdfwrite.ps]

2007-07-12T13:34:24.493291Z Alex Cherepanov

Add a few dummy system parameters for compatibility with Adobe products.
Bug 689272, customer 411.

[lib/gs_lev2.ps]

2007-07-11T21:17:39.855676Z Igor Melichev

Banding : Exten\d clist language with trapezoids, linear color trapezoids and linear color triangles.

DETAILS :

This fixes the clist expansion problem for shadings.

1. New functions clist_fill_linear_color_trapezoid, clist_fill_linear_color_triangle
   provide the writing of shading parts into clist
   without a further decomposition into rectangles.

2. gxclrast.c is enhanced with reading the data from 1.

3. gxfill.c needs a special interaction with the clipper device
   for passing the clipping path as a high level object.
   The new request pattern_manage__handles_clip_path
   checks whether the target device can handle a clipping path.
   The clist writer can, so the graphics library first sends the
   clipping path, and then decomposes the shading into
   trapezoids without installing a clipper device.
   Doing so because clipper device can't handle trapezoids.
   See comments in gxclpath.c, gxfill.c .

4. The clist reader installs a clipper device when processes
   trapezoids and linear color triangles. 
   The new flag clipper_dev_open controls that.

5. A new flag gx_device_clist_writer_s::cropping_by_path 
   controls an additional cropping of shading components,
   which fall outside the shading path's bands.
   See comment in gxclpath.c .

6. R_fill_rect_with_const_color is rewritten with linear color functions,
   because the old implementation creates a rectangle, which is not clipped with
   4,5. It gives an invisible slowdown for unbanded rasters.

There are few things, which need further improvements :

1. A better compression for frac31 values in clist. 
   Such values usually have many zeros in ending bits.

2. Crop bands with ybot, ytop, fa->ystart, fa->yend in
   clist_write_fill_trapezoid.

3. The clist reader must handle cases when linear color functions return 0.
   It must perform a decomposition of areas with calling
   appropriate parts of gxshade6.c . The current code returns error,
   which does not happen in practice.
  

[src/gxshade4.h src/lib.mak src/gxclist.c src/gxcldev.h src/gxclist.h src/gdevnfwd.c src/gxshade1.c src/gxfill.c src/gxclrast.c src/gxclread.c src/gxshade6.c src/gxclpath.c src/gxdevcli.h src/gxclrect.c]

2007-07-11T00:26:24.274026Z Ralph Giles

Replace to includes of the system stdlib.h for malloc() with malloc_.h. 
Bug 689320.

[src/gxwts.c src/fapi_ft.c]

2007-07-11T00:19:27.467323Z Ralph Giles

Document that we don't make use of the autoconf function tests, or 
implement any fallbacks.

[src/configure.ac]

2007-07-10T23:30:47.849258Z Ralph Giles

Complete support for DESTDIR in staged installs with the unix makefiles. 
Bug 689277.

[src/unix-dll.mak cups/cups.mak src/unixinst.mak]

2007-07-10T23:00:51.455586Z Ralph Giles

Remove unused and inappropriate ps interpreter includes from the windows
polling interface implementation.

[src/gp_mspol.c src/winlib.mak]

2007-07-10T17:14:09.247898Z Till Kamppeter

Fixed bug 689323: bjc600's gs_closedevice breaks get_page_device and causes NumCopies to barf

[src/gdevcdj.c]

2007-07-07T02:59:08.708092Z Alex Cherepanov

Add a shebang line to afmdiff.awk and use more portable option ( -3 ) to
request 3-column listing. Bug 688621.

[lib/afmdiff.awk]

2007-07-06T16:42:18.448176Z Alex Cherepanov

Explicitly bind setscreen, setcolorscreen, and sethalftone pseudo-operators.
When a pseudo-operator is redefined several times, the last definition is
bound in a final sweep over the systemdict but other definitions aren't.
Bug 689254, customer 661.

[lib/gs_dps2.ps lib/gs_ll3.ps]

2007-07-06T12:18:01.891965Z Igor Melichev

Fix : Restoring high level objects in clist.

DETAILS :

This patch is a part of the clist expansion problem.
With Henry's test foo4.ps it reduces the clist size in 10+ times.

The clist expansion problem appears to be caused by an old unintentional
change, which was done 3 years ago within the psdcmyk project.
The revision 5056 effectively disabled a big part of the clist language:
all high level objects (text, images, paths) were written to clist 
as lots of rectangles. Undoing it now because it is incorrect.
Note that this patch doesn't undo other parts of 5056 change.

With enabling high level objects the psdcmyk device becomes broken.
At least it has problems with text when rendering foo4.ps .
We'll open a separate bug about that. 

Rather this fix is a progression, it causes some regressions with
band devices due to other unknown problems.
There are single pixel differences with comparefiles,
which are not visible to users, but they are important
for regression testing. Since the clist size
is a highly important problem now, we commit this fix, 
and open a new bug about raster differences.

[src/gdevprn.c]

2007-07-06T06:50:15.857933Z Igor Melichev

Fix : Improving documentation for gxclpath.c .

DETAILS :

Bug 689317 "A wrong rendering of a path", Comment #3.

The revision 2948 change to gxclpath.c is not properly documented.
This patch stores assumptions, which are necessary for the
change to be correct.

[src/gxclpath.c]

2007-07-06T06:00:17.432528Z Igor Melichev

Fix : A wrong path filling.

DETAILS :

Bug 689317 "A wrong rendering of a path".

gx_path_merge_contacting_contours didn't account implicit closepath
with non-zero length. Due to that the filling algorithm could
recieve a path with a missed segment. It caused some areas
are missed while filling.

This fix is important for restoring high level clist objects,
which were disabled with rev 5056 change to gdevprn.c .

This fix inserts a line segments at the place of implicit closepath
before merging contours.

Minor change : improving documentation about
gx_path_merge_contacting_contours. 

[src/gxpcopy.c]

2007-07-05T19:04:29.604836Z Till Kamppeter

Let scripts search Ghostscript (or subscripts) in the same directory where they reside, bug 689318.

[lib/printafm lib/eps2eps lib/pdf2dsc lib/gsbj lib/ps2epsi lib/gsdj lib/dumphint lib/gsnd lib/font2c lib/pdfopt lib/pdf2ps lib/ps2pdf lib/gslj lib/pfbtopfa lib/bdftops lib/ps2pdf12 lib/ps2pdf13 lib/ps2pdf14 lib/gslp lib/wftopfa lib/ps2pdfwr lib/ps2ps lib/pphs lib/pf2afm lib/gsdj500]

2007-07-05T18:12:59.492244Z Timothy Osborn

Fix for bug #689312.

DETAILS:

Ghostscript would fail with "Unrecoverable error, exit code 255" when
PaintType 2 tiling patterns were used in jobs run with GraphicsAlphaBits set
to 2 or 4. Fixed by not returning an error from pattern_accum_get_bits_rectangle
when called for a PaintType 2 pattern and the gx_device_pattern_accum bits
field is NULL as the bits field is only used with PaintType 1 patterns.

[src/gxpcmap.c]

2007-07-05T10:57:00.783595Z Till Kamppeter

Let dvipdf support "-R" option, bug  689328.

[lib/dvipdf]

2007-07-05T10:41:52.033081Z Till Kamppeter

Allow spaces in the input file names for pv.sh, bug 689329.

[lib/pv.sh]

2007-07-05T10:31:06.013010Z Till Kamppeter

Use mktemp in ps2epsi, bug 689324.

[lib/ps2epsi]

2007-07-04T22:52:57.119341Z Ralph Giles

Remove an obsolete cvs housekeeping file.

[toolbin/tests/.cvsignore]

2007-07-04T19:52:15.096425Z Ray Johnston

Fix for local ExtGState values that would caused invalidaccess on
printers or RIPS that have any of blackgeneration, undercolorremoval,
colortransfer or halftone in local VM. Customer #534.

DETAILS:

The 'cp2g' procedures used may be useful elsewhere. The version here
uses only "standard" Level 2 PostScript (it cannot use Ghostscript
extensions). Performance isn't critical since it is only used at
initialization.

[lib/opdfread.ps]

2007-07-04T19:09:09.181743Z Alex Cherepanov

Add a newline to a debug printf. Bug 689330.

[src/gdevdflt.c]

2007-07-04T17:30:44.235393Z Ray Johnston

Fix a typo in the jpeg config that resulted in MAX_ALLOC_CHUNK being
too small (0xfff0). Bug 689321.

DETAILS:

While ARCH_SIZEOF_INT was set to '4', it is done in std.h, not arch.h.
Changing to use ARCH_LOG2_SIZEOF_INT instead since this is defined.

[src/gsjconf.h]

2007-07-04T14:11:22.971272Z Alex Cherepanov

Make sed in pstoepsi correctly work independent of the current locale.
In LC_COLLATE=en_US{,.UTF-8} and a bunch of other locales '~' comes before '!'
when sorting, so you really cannot write !-~ but ~-! in those locales.
Bug 689325.

[lib/ps2epsi]

2007-07-03T18:21:38.196871Z Alex Cherepanov

Make the top dictionary in the file generated by pswrite device writable.
Reportedly, setpagedevice writes to a top directory on an Epson printer.
Bug 689315, attachment 3108.

[src/gdevpsu.c]

2007-07-03T12:00:18.641724Z Alex Cherepanov

Fix a harmless typo, replace bitwise '&' with logical '&&' in a couple of
logical expressions. Bug 689315, attachment 3115.

[src/scfd.c src/gdevps.c]

2007-07-02T08:09:03.552980Z Igor Melichev

Extend the clist language with fill_trapezoid. 

DETAILS :

It saves the clist file size with writing a higher level objects.
The old code expands trapezoids with lots of rectangles.


[src/gxclist.c src/gxclpath.h src/gxcldev.h src/gxclrast.c src/gxclrect.c]

2007-07-01T17:18:18.933670Z Alex Cherepanov

Include the system headers first to avoid name conflict between Cygwin
headers and a Ghostscript macro. This works because (1) we don't use
the affected structure, (2) system header files are protected from double
inclusion. Bug 689276.

[src/zimage.c src/zvmem.c src/int.mak src/zfproc.c src/zfile.c src/ztoken.c]

2007-06-30T23:46:18.087581Z Alex Cherepanov

Compare the type of the object cached in the font descriptot with the expected
type and ignore the cache when the types mismatch. The same descriptor can
refer to Font and CIDFont resources if they happen to have the same name and
are not embedded. Bug 689301, customer 870.

DETAILS:
tx_pdf 12.0.112.500 created quite strange PDF file. The file refers to
Palatino font and Palatino CIDFont through the same font descriptor.
Both the font and CIDFont versions are not embedded. There's no rule in PDF
against merging equal objects from unrelated contexts.

Old code cached the font or CIDFont file in the font descriptor.
Re-using the font descriptor for a different type of the object caused the
wrong object to be retrieved from the cache. In turn, this causes /undefined
error later on.

The patch compares the type of the cached object with the expected type
and ignores the cache when the types mismatch. In our case this results in
an attempt to find Palatino CIDFont resource. Since this resource is not
available, the CMap name is used as a default CIDFont resource name for
the given CMap. In this case, /Adobe-Japan1 /CIDFont resource is searched.
When this resource is available, the file finishes normally. Otherwise the
file fails with /undefinedresource in findresource.

[lib/pdf_font.ps]

2007-06-30T12:25:22.298902Z Alex Cherepanov

Replase setglobal operator with .setglobal in Type 1 font support code to make
it bindable during start-up. Bind other standard executable names in the file.
Bug 689311, customer 411.

[lib/gs_type1.ps]

2007-06-30T06:57:44.535512Z Igor Melichev

Fix : Expanding gxcldev.h macros, part 7.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 7th step removes obsolete contours.

[src/gxclimag.c src/gxclrect.c]

2007-06-30T06:41:55.227485Z Igor Melichev

Fix : Expanding gxcldev.h macros, part 6.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 6th step simplifies the flow control
with removing unuseful goto and labels.
Also it updates the documentation
in gxcldev.h .


[src/gxcldev.h src/gxclpath.c src/gxclimag.c src/gxclrect.c]

2007-06-29T20:44:57.917902Z Henry Stiles

Temporarily disable the band complexity code and use the existing
"color used" code to detect non trivial raster operations.

DETAILS:

The band complexity code is to be removed entirely.  It is not correct
and (apparently) the person who implemented it did not realize there
was code in the system to accomplish the same task.  For now we fill
in the band complexity array with (correct) values from
gdev_prn_colors_used().  We are not removing all of the band
complexity now because there are other banding projects in the works.

[src/gxclread.c]

2007-06-29T20:21:42.242166Z Ray Johnston

Fix optimization for 0 and 0xff (non-dithered) colors in the wtsimdi_copy_mono
routine. Also add a (temporary) change to force color==0 to cmyk=0x000000ff
(only 100% black). This would be done differently if the input color were
tagged RGB where presumably text objects would map. This is a reasonable
temporary approach since copy_mono is used for bitmapped text.

Also remove the "SKIP_OUTPUT" compile time #define and add "output_is_nul"
detection of the OutputFile name being nul: or /dev/null to make it easier
to go back and forth between timing runs (to /dev/null) and runs where we
want to look at the output.

DETAILS:

Both the copy_mono optimizations and the mapping of color 0 can be disabled
by removing (or commenting) the #defines above wtsimdi_copy_mono. These are
on by default.

[src/gdevwts.c]

2007-06-29T15:38:25.753618Z Igor Melichev

Fix : Expanding gxcldev.h macros, part 5.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 5th step eliminates FOR_RECTS and END_RECTS macros.
So now all control flow statements are outside macros.

[src/gxcldev.h src/gxclpath.c src/gxclimag.c src/gxclrect.c]

2007-06-29T14:54:20.698917Z Igor Melichev

Fix : Expanding gxcldev.h macros, part 4.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 4nd step eliminates the general form of
END_RECTS_ON_ERROR. Since it is used at once,
we simply expand it and perform some syntactic
simplifications.

Besides that, 2 new macros RECT_ENUM_INIT
and RECT_STEP_INIT prepare further simplifications.

[src/gxcldev.h src/gxclimag.c]

2007-06-29T09:28:27.467512Z Igor Melichev

Fix : Expanding gxcldev.h macros, part 3.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 3nd step collects local variables
of a rectangle enumerator in a single structure
cmd_rects_enum_s.

In the old code the macro FOR_RECTS modifies
function arguments 'y' and 'height'.
It doesn't comply with C-style.htm .
For fixing that this patch renames
function arguments x,y,width,height with
rx,ry,rwidth,rheight.

[src/gxcldev.h src/gxclpath.c src/gxclimag.c src/gxclrect.c]

2007-06-28T22:16:45.367783Z Ralph Giles

Pass -DHAVE_FONTCONFIG through CAPOPT so the fontconfig patch is 
actually enabled by the autoconf build.

DETAILS:

Previously, it was passed through ACDEFS which we don't currently use. 
This line is getting longer; probably we should move to 
platform-specific config files, and manage the autoconf one with 
autoheader.

[src/Makefile.in src/configure.ac]

2007-06-28T22:08:46.177663Z Ralph Giles

Pass EXTRALIBS when linking mkromfs. This is a hack, but the dependency 
on the gp library pulls in a number of other things, and this seems 
safer for the time being.

[src/unix-aux.mak]

2007-06-27T23:19:42.317364Z Alex Cherepanov

Lower the PDF version searched for transparency features to 1.2 to handle
broken PDF files generated by SPIRIT 14.22. Bug 689288, customer 850.

[lib/pdf_main.ps]

2007-06-27T16:48:22.479129Z Ralph Giles

Enable dynamic driver support on Solaris. Patch from Norm Jacobs, Bug 
689307.

[src/configure.ac]

2007-06-27T01:52:29.856489Z Ray Johnston

Fix an out of bounds buffer write in the wts_load_halftone logic and fine
tune the wts_resolve_one color conversion cache hashing for 4K (the default).
Bug 689255 for customer 951.

DETAILS:

Besides fixing the out of bounds logic, I added a 'bufsize' parameter to the
gs_wts_from_buf logic so that we can detect OOB conditions. Note that the
1+hdr_size+cell_size in gx_ht_read_component_wts is retained by this patch
even though it looks bogus (we want to commit the fix so we can send to a
customer, and will look at this later).

In refining the cache stats in the wtsimdi device, the 'fill_empty' case
and the 'collision' case were split to make sure that the hash is decent,
but even 1M cache hits (on ACDsee.prn) only save about 1.5 seconds (out
of 9 seconds). The hash algorithm for smaller collision rates won't really
matter much.


[src/gswts.h src/gxdhtserial.c src/gdevwts.c src/gswts.c]

2007-06-26T20:43:03.119310Z Igor Melichev

Fix : Expanding gxcldev.h macros, part 2.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 2nd step replaces HANDLE_RECT_UNLESS
with macros that don't include goto or return statements.

Besides that, the pattern :

		if (code < 0) {
		    band_code = code;
		    goto error_in_rect; /* ERROR_RECT(code); */
 		}

is replaced with the smaller one :

		if (code < 0 && SET_BAND_CODE(code))
		    goto error_in_rect;

for a better readability.

Some compilers may claim unreferenced label error_in_rect.
To be fixed in the next step.

[src/gxcldev.h src/gxclimag.c src/gxclrect.c]

2007-06-26T16:25:42.642877Z Igor Melichev

Fix : Expanding gxcldev.h macros, part 1.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This first step removes simple macros and optimized macro duplicates.
Removing others to be done in the next step.

Some compilers may claim unreferenced label error_in_rect.
To be fixed in the next step.

[src/gxcldev.h src/gxclpath.c src/gxclimag.c src/gxclrect.c]

2007-06-26T15:58:26.994368Z Till Kamppeter

Replaced the $(install_prefix) from ESP Ghostscript by $(DESTDIR).

[contrib/contrib.mak cups/cups.mak]

2007-06-26T07:08:17.110301Z Ray Johnston

Add logic for a configurable color lookup cache to the wts* devices.
Currently set to 4K (4096 entries). Testing indicates this is a 
reasonable value, adequate for all synthetic/graphics arts pages
and adequate for photos/scanned images.


DETAILS:

The hash function is rather arbitrary, but some experimentation with
more sophisticated hashing doesn't really show much difference since
the color lookup isn't such a high CPU load even on the performance
files which are entirely images. A 4K CLUT achieves 1.4M hits and
even a 64K CLUT size only gets 1.6M hits (out of ~6M pixels) .

[src/gdevwts.c]

2007-06-25T23:56:29.899646Z Ralph Giles

Report the result of the GTK-2.0 configure test. Normalize indentation 
in this section.

[src/configure.ac]

2007-06-23T02:43:31.980612Z Alex Cherepanov

Replace exponential format of a real number with a decimal point format
in PDF writing utilities because PDF doesn't support exponential format.
Bug 689293, customer 932.

[lib/pdfwrite.ps]

2007-06-22T22:05:56.668720Z Till Kamppeter

Small corrections on "./configure" checks for pkg-config.

[src/configure.ac]

2007-06-22T15:44:43.448105Z Till Kamppeter

Added the fontconfig support from ESP Ghostscript

[src/Makefile.in src/configure.ac src/gp_unix.c]

2007-06-20T22:46:08.189858Z Ralph Giles

Clarify the license situation with the ETS patents in the GPL 
distribution.

[src/rinkj/evenbetter-rll.c LICENSE]

2007-06-20T19:46:52.216039Z Ralph Giles

Hack in some support for comparing WX fields with --diff. Incomplete.

[toolbin/afmutil.py]

2007-06-19T16:59:20.420492Z Igor Melichev

Fix : MSVC8 compiler warnings.

DETAILS :

The revision 8075 causes an unuseful type cast.

[src/gsdparam.c]

2007-06-19T16:44:29.490746Z Igor Melichev

Fix (PS interpreter) : "undef" data change was not properly saved.

DETAILS :

Bug 689284 "Abnormal dependence of 'known' on name hash indices".

The "undef" algorithm has an "optimization" branch for packed keys,
which replaces "deleted" elements with "empty" (i.e. unused).
However this data change was not tracked for "restore".
In some rare cases it causes a wrong result for "known", "get", "bind"
and others. Interesting that "dictforall" doesn't miss such keys
when "known" does, but it could enumerate same key several times
with older values.

The bug persists since the repository was created in March 2000.

This change simply saves the changed data for restore.

[src/idict.c]

2007-06-19T11:36:06.688290Z Alex Cherepanov

Add version and revision numbers to %%BeginResource DSC comment generated by
epswrite and pswrite devices. Bug 689285.

[src/gdevpsu.c]

2007-06-19T07:16:20.368343Z Igor Melichev

Fix: Setting a right property on gscicach.c gscicach.h .

[src/gscicach.c src/gscicach.h]

2007-06-19T07:12:43.707003Z Igor Melichev

Fix: Setting a right property on idicttpl.h .

[src/idicttpl.h]

2007-06-19T07:09:42.151414Z Igor Melichev

Fix (PS interpreter) : Replace packed_search_* macros with a template (continued).

DETAILS :

This change is algorithmically equivalent.
The purpose is to improve the debugging technology.
The new variable 'start' allows to observe the value of the starting search index.

[src/idicttpl.h]

2007-06-19T05:51:01.853658Z Igor Melichev

Fix (The filling algorithm) : Improving a condition for visual trace.

DETAILS :

This change affects the debug painting only.
The old code wrongly accounts the case when fill adjustment is set to -1, which means "none".

[src/gxfill.c]

2007-06-19T05:45:58.839755Z Igor Melichev

Fix (PS interpreter) : Replace packed_search_* macros with a template.

DETAILS :

This change is algorithmically equivalent.
The purpose is to improve the debugging technology.
It allows to trace through the packed search code
with Microsoft Developer Studio.

We define a new variable 'wrap'
for reducing 3 macros to a single template.
We believe it shouldn't cause a sensible slowdown.
An alternative is 2 (nested) templates and no new variables.

We noticed that the missing key case is not optimized well.
When the key is missing, the algorithm scans the 
left part of the array 2 times. One time should be enough.
It should be optimized in a separate patch.

[src/idict.c src/idictdef.h src/int.mak src/idicttpl.h doc/Develop.htm src/idstack.c]

2007-06-19T02:39:15.345882Z Alex Cherepanov

Use newly created operator .getpath to implement PDF path handling without
64K limit on the user path imposed by upath, which we had before.
Bug 689123, customer 870.

[lib/pdf_draw.ps doc/Language.htm lib/pdf_ops.ps src/zupath.c]

2007-06-18T17:07:28.482467Z Ray Johnston

Remove the bmpa devices from some builds where it either was left
over (macos-mcp) or snuck back in (configure.ac).

[src/configure.ac src/macos-mcp.mak]

2007-06-18T17:05:33.466587Z Ray Johnston

Fix bmpa and gomni devices to account for changes to mem_*_size
function calling sequences (rev 8056). These were missed since they
were not part of the 'standard' build on most platforms and will
be the 'async' method of gdevprna etc. will be deprecated.

[contrib/gomni.c src/gdevbmpa.c]

2007-06-18T16:37:50.173337Z Timothy Osborn

Need to use maximum of max_gray and max_color to know how many bits are
supported.

DETAILS:

For determining the device color depth, one must check both max_gray and
max_color and use the maximum of the two. For example, with rgb devices
max_gray will be equal to zero. Thanks to Ray for catching my oversite here.

EXPTECTED DIFFERENCES:

None. No alpha bit testing is done in the regression suite.

[src/gsdparam.c]

2007-06-18T15:20:47.700377Z Timothy Osborn

Changing from using log10(x) / Log10(2) to iLog2(x) to compute the base 2 log.

DETAILS:

Making change to conform to gs style.

[src/gsdparam.c]

2007-06-18T06:37:58.394295Z Ray Johnston

Fixes for ulong overflow in memory device buffer sizing that caused
problems with very large (>4Gb on 32-bit machines) page buffer sizes
not invoking clist mode. Also the internal 'mask' image allocation
in ImageType3 would silently wrap around, causing SEGV crashes.

Lastly, the tiff*nc devices are fixed so that they never write to
file when the file will exceed 2Gb (max signed int) since the device
uses 'ftell' to calculate offsets in the file. This last case could
be fixed to use 64 bit file I/O or at least to keep an internal
offset so that multipage tiffs could be > 2Gb as long as each page
was less than 2Gb. Other TIFF devices that compress were not changed
since the probability of overflow is less and we don't want to be
overly agressive about throwing a 'rangecheck' on the basis of the
uncompressed size.

Bugs 688808, 688815 and 689080 for customer 190 (and others).

DETAILS:

The buf_device/bitmap sizing functions now return a success code,
setting the size using a pointer passed as a parameter. A bitmap
that overflows max_ulong now throws gs_error_VMerror so that the
caller can take appropriate recovery action (such as gdevprn using
a clist instead of a page buffer).

The ImageType 3 mask probably needs an internal clist method (such
as was done for the pattern accumulator) to avoid this overflow.

As mentioned above, the TIFF devices, particularly the '*nc' type
(not compressed) could benefit from using 64-bit file I/O calls
for those that want to fill up large hard drives quickly.

[src/gdevdsp.c src/gdevxini.c src/gxclist.c src/gxpcmap.c src/gxccman.c src/gxdevmem.h src/gdevppla.c src/gxmclip.c src/gdevmem.c src/gdevprn.c src/gximag3x.c src/gdevdrop.c]

2007-06-17T17:55:26.407602Z Henry Stiles

Fix 689275.  The slow rop flag was not set to true for ROP 170 (paint
with destination), this is an unexpected problem because it is the
most basic rop that requires setting the "slow rop" flag.  In addition
to fixing the tests in the bug resport The following CETS recorded
differences in automated testing, but only a few have been visually
verified as fixes.

tests/pcl/pcl5ccet/22-13.BIN 
tests/pcl/pcl5ccet/22-20.BIN 
tests/pcl/pcl5ccet/23-11.BIN 
tests/pcl/pcl5ccet/25-04.BIN 
tests/pcl/pcl5ccet/25-05.BIN 
tests/pcl/pcl5ccet/25-06.BIN 
tests/pcl/pcl5efts/fts.2400 
tests/xl/pxlfts2.0/t106.bin 
tests/xl/pxlfts2.0/t202.bin 
tests/xl/pxlfts2.0/t328.bin 
tests/xl/pxlfts3.0/A007.BIN 
tests/xl/pxlfts3.0/A008.BIN 
tests/xl/pxlfts3.0/T106.BIN 
tests/xl/pxlfts3.0/T202.BIN 
tests/xl/pxlfts3.0/T328.BIN 
tests/xl/pxlfts3.0/T336.BIN 
tests/xl/pxlfts3.0/T419.BIN 
tests/xl/pcl6cet/c207.bin 
tests/xl/pcl6cet/c311.bin 
tests/xl/pcl6cet/c313.bin 
tests/xl/pcl6cet/c327.bin 
tests/xl/pcl6cet/c328.bin 
tests/xl/pcl6cet/c419.bin 
tests/xl/pcl6cet/c420.bin 
tests/xl/pcl6cet/c427.bin 
tests/xl/pxlfts/t106.bin 
tests/xl/pxlfts/t202.bin 
tests/xl/pxlfts/t328.bin 
tests/xl/pxlfts/t419.bin 
tests/xl/pcl6cet3.0/C207.bin 
tests/xl/pcl6cet3.0/C311.bin 
tests/xl/pcl6cet3.0/C313.bin 
tests/xl/pcl6cet3.0/C327.bin 
tests/xl/pcl6cet3.0/C328.bin 
tests/xl/pcl6cet3.0/C419.bin 
tests/xl/pcl6cet3.0/C420.bin 
tests/xl/pcl6cet3.0/C427.bin 
tests/xl/pcl6cet3.0/C701.bin 
tests/xl/pcl6cet3.0/C702.bin 
tests/xl/pcl6cet3.0/C704.bin 
tests/customer_tests/Fc707oj2.bin.xl 
tests/customer_tests/Fc70foj3.bin.xl 
tests/customer_tests/cie.out 
tests/customer_tests/circle1.pcl 
tests/customer_tests/fp309oa2.bin 
tests/customer_tests/lj.pcl 
tests/customer_tests/wd309dwf.pcl 
tests/customer_tests/wd30ddwf.pcl 


[src/gxclrect.c]

2007-06-17T00:01:02.174467Z Alex Cherepanov

Fix misleading error message from runlibfile0 that always referred to the last
libfile that was ever STARTED, even if it finished and control returned to
another file. Bug 688738.

DETAILS:
Change runlibfile0 to define ".currentfilename" again after the libfile ends.
The  correct value is kept on the exec stack, by constructing and executing a
procedure with the filename bound into it. Thanks to SaGS for the patch.

[lib/gs_init.ps]

2007-06-16T19:24:22.647261Z Timothy Osborn

Fix to limit GraphicsAlphaBits and TextAlphaBits to legal values.

DETAILS:

Bug 688020 reported that when a user set the GraphicsAlphaBits and TextAlphaBits
to values not supported by the current device unexpected images would be
generated. This fix limits the internal values used to those which are supported
by the current output device.

[src/gsdparam.c]

2007-06-15T18:55:34.118706Z Timothy Osborn

Comment change to reflect name change of the module gsncdemo.c to gsncdummy.c

DETAILS:

See above.

[src/gsnamecl.h]

2007-06-14T22:06:25.996646Z Alex Cherepanov

Implement quoting in GS_OPTIONS environment variable. Bug 688965.

DETAILS:
Old code treated quotes in GS_OPTIONS as regular characters
and not used them for quoting spaces. New code distinguish
between a single already parsed argument, retrieved by a previous
call to arg_next() and unparsed list of arguments from GS_OPTIONS.
Thanks to SaGS for the patch.

[src/gsargs.c src/imainarg.c src/gsargs.h]

2007-06-13T23:21:11.020971Z Igor Melichev

Fix (pdfwrite) : A crash when comparing resources of different types.
Bug 689269 for customer 411. Fix by Ray Johnston.

DETAILS :

pdf_find_same_resource assumed same resource type.
However PDF allows for functions to be either array or dictionary.
Need to compare resource types before comparing their contents.

[src/gdevpdfu.c]

2007-06-13T19:21:47.294205Z Ralph Giles

The translib module now depends on crd decoding and cie support.
Patch from Henry Stiles, needed for the gslt build.

[src/lib.mak]

2007-06-13T16:27:33.371102Z Timothy Osborn

This is a fix for regression bug report 689263.

DETAILS:

Some versions of PhotoShop generate documents that place an extra value on the operand stack and tintTransform replaces it - see bug 549307 for details. Also see the test case of bug 689263. Since GS invokes setcolor as a side-effect of setcolorspace, we must prevent Adobe's hack from pop'ing an extra (significant) item from the operand stack when setcolor is invoked from a setcolorspace context.

The previous patch for bug report 688584, which was committed before I was done with it, was too broad and was undoing Adobe's hack whenever setcolor was invoked (from setcolorspace or otherwise). This change also undoes the previous patch, which was the cause of the error:

Error: /rangecheck in --image--

under the conditions specified in bug report 689263.

[lib/gs_devn.ps lib/gs_cspace.ps]

2007-06-13T02:42:04.178728Z Alex Cherepanov

Fix false detection of circular references in the resource chain. Valid PDF
resource references form a directed acyclic graph but the old code was
checking for a tree. Bug 688479.

[lib/pdf_main.ps]

2007-06-12T20:55:18.217413Z Alex Cherepanov

Avoid an invalidaccess error. Skip execstack elements in the execstack_lookup
procedure for which rcheck returns false. Bug 688934.

[lib/gs_resmp.ps]

2007-06-12T17:12:08.917597Z Igor Melichev

Fix : MSVC8 warnings.

[src/gconf.c src/gdevdjet.c]

2007-06-12T02:41:44.494784Z Ralph Giles

Set native line endings.

[src/gsncdummy.c src/gsncdummy.h]

2007-06-12T02:06:18.488766Z Ralph Giles

Remove LDFLAGS and EXTRALIBS from the mkromfs build line. These were 
inadvertently added during the esp merge and are no longer needed.

[src/unix-aux.mak]

2007-06-11T21:58:13.269101Z Alex Cherepanov

Don't leave ccolor.pattern uninitialized for the null pattern because
this field is enumerated by GC. Bug 689002.

[src/gspcolor.c]

2007-06-10T20:12:02.226861Z Alex Cherepanov

Fix processing of very small PDF files ( < 1024 bytes) that was broken by
rev. 7834 that increased the size of look-ahead buffer to 1024 bytes.

[lib/pdf_main.ps]

2007-06-10T05:21:02.102146Z Alex Cherepanov

Add a work-around for malloc(0) returning a 0 pointer - call malloc(1)
instead. Bug 688532, customer 870.

DETAILS:
This behavior was observer on IBM 4.3 and 5.1. IEEE 1003.1 spec,
which is aligned with ISO C, states:
If the size of the space requested is 0, the behavior is implementation-defined:
the value returned shall be either a null pointer or a unique pointer.

malloc(0) happens when libjasper reads optional tags in the embedded ICC
profile. This doesn't happen too frequently and we can afford to allocate
a few extra bytes.

[jasper/src/libjasper/base/jas_malloc.c]

2007-06-10T05:01:41.885957Z Alex Cherepanov

Fix a memory corruption and a SEGV after applying a filter to a closed stream.
Don't replace an closed stream with invalid_file_stream, which is an open,
0-length stream. Bug 688712.

[src/zfilter.c]

2007-06-10T01:51:33.615609Z Alex Cherepanov

Port recent changes in MSVC build to Borland C build. Fix minor compilation
problems in the components that has not been compiled by Borland C before.

DETAILS:
Although nobody seems to use Borland C, having an alternative compiler
on Windows helps to separatr MSVC errors from Microsoft SDK quirks.

[jasper/src/libjasper/include/jasper/jas_types.h jasper/src/libjasper/jpc/jpc_qmfb.c jbig2dec/os_types.h jasper/src/libjasper/include/jasper/jas_config.h src/bcwin32.mak jbig2dec/config_win32.h src/gdevtsep.c src/genarch.c ijs/unistd_.h src/dwuninst.cpp]

2007-06-09T12:08:12.529992Z Alex Cherepanov

Fix incorrect decompression of large files (>= 16M) by JPXDecode filter
on Windows. Don't open the temporary file in text mode.

[jasper/src/libjasper/include/jasper/jas_stream.h]

2007-06-09T00:16:34.537278Z Ralph Giles

The cups-config script can be installed without the libcupsimage headers.
Check for this and disable gdevcups if the required header isn't available.

[src/configure.ac]

2007-06-08T18:12:46.977956Z Ralph Giles

Update the unix persistent cache implementation to use the new md5 namespace.
This file should have been included in r8032.

[src/gp_unix_cache.c]

2007-06-08T18:03:34.577571Z Ralph Giles

Tell svn to ignore the generated cups scripts.

[cups]

2007-06-08T18:02:05.168482Z Ralph Giles

Namespace the interface calls of our md5 implementation to avoid conflict
with other implementations, for example the one exported by libcups on
MacOS X, or one used by a client which also links to gs as a library.

[src/smd5.h src/gdevpdf.c src/gdevpdfu.c src/md5.c src/smd5.c src/md5.h src/md5main.c]

2007-06-07T04:52:46.418386Z Ralph Giles

Remove an unused clean action.

DETAILS:

This was added as part of the x11 device modularization patch, which
doesn't appear to add any generation of _temp_* files. The Desqview
makefile does, and wctail.mak makes such files in the GLOBJ path,
but cleaning these shouldn't be part of this target regardless.

[src/gs.mak]

2007-06-07T04:44:52.072188Z Ralph Giles

Remove generated cups scripts from the repository.

[cups/pstoraster cups/pstopxl]

2007-06-07T04:40:42.736213Z Ralph Giles

Minor cleanup of the CC_SHARED flag specification.

[src/lib.mak src/unix-gcc.mak]

2007-06-07T03:09:16.997726Z Ralph Giles

Add the new CC_SHARED define to other top-level makefiles that include 
the new modular x11 or vga devices. This corrects the build issue with
ghostpcl.

[src/openvms.mak src/ugcclib.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/openvms.mmk src/os2.mak]

2007-06-06T22:46:38.753757Z Ralph Giles

Add gomni.c, which was omitted by the EPS branch merge.

[contrib/gomni.c]

2007-06-06T22:03:27.059105Z Till Kamppeter

Finally merged in extra functionality of ESP Ghostscript (from branch "gs-esp-gpl-merger")

[libpng/projects/netware.txt libpng/scripts/makefile.gcmmx libpng/contrib/gregbook/writepng.c src/configure.ac contrib/eplaser libpng/contrib/pngminus/makevms.com libpng/contrib/gregbook/readpng2.c libpng/contrib/gregbook/writepng.h libpng/contrib/gregbook/Makefile.unx libpng/scripts/makefile.msc libpng/scripts/makefile.sgi libpng/contrib/gregbook/readpng2.h libpng/contrib/visupng/VisualPng.dsp libpng/projects/beos/x86-shared.txt libpng/KNOWNBUG src/gdevpx.c src/gdevl256.c libpng/projects/cbuilder5/libpng.readme.txt src/gdevvglb.c libpng/scripts/makefile.watcom libpng/contrib/visupng/VisualPng.dsw libpng/scripts/makefile.nommx libpng/scripts/makefile.linux contrib/chp2200 libpng/scripts/CMakeLists.txt contrib/gdevlx50.c libpng/scripts/makefile.acorn lib/gs_init.ps src/gdevlbp8.c libpng/contrib/pngsuite/basn3p01.png libpng/projects/visualc71/zlib.vcproj contrib/gdevbjc_.c libpng/scripts/makefile.elf libpng/scripts/pngw32.rc contrib/japanese libpng/contrib/gregbook/toucan.png libpng/scripts/makefile.mips libpng/projects/visualc71/libpng.sln contrib/gdevbjc_.h libpng/pngrio.c libpng/contrib/gregbook/makevms.com libpng/contrib/gregbook/rpng-win.c libpng/projects/cbuilder5/libpngstat.bpf src/devs.mak libpng/projects/visualc6 contrib/pcl3 contrib/gdevlx7.c libpng/scripts/libpng.pc-configure.in src/gdevdjet.c contrib/defs.h src/gs.mak libpng/contrib/pngsuite/basn0g02.png libpng/README src/Makefile.in libpng/contrib/pngsuite/basn0g04.png libpng/contrib/gregbook libpng libpng/contrib libpng/projects/cbuilder5/libpngstat.bpr libpng/contrib/pngsuite/basn4a08.png libpng/libpngpf.3 libpng/contrib/pngsuite/basn0g08.png src/unixinst.mak libpng/contrib/pngminus/makefile.tc3 libpng/TODO src/gp_unix.c libpng/scripts/descrip.mms contrib/gdevxes.c libpng/contrib/visupng/VisualPng.ico libpng/scripts/makefile.solaris libpng/projects/cbuilder5/zlib.readme.txt libpng/pngwtran.c src/gdevlj56.c libpng/scripts/makefile.hp64 src/gdevdljm.c contrib/gdevcd8.c libpng/contrib/pngminus/png2pnm.sh libpng/contrib/pngminus/pnm2png.sh libpng/contrib/gregbook/wpng.c libpng/pngnow.png libpng/scripts/makefile.bc32 libpng/contrib/gregbook/README contrib/contrib.mak libpng/projects/visualc71/pngtest.vcproj src/gdevdljm.h libpng/scripts/makefile.vcwin32 contrib/gdevcd8.h contrib/gdevdj9.c libpng/contrib/gregbook/rpng2-win.c libpng/scripts/pngw32.def libpng/projects/beos/x86-static.proj libpng/pngget.c libpng/scripts/makefile.os2 libpng/contrib/pngminus/makefile.std libpng/projects/cbuilder5 libpng/scripts/makefile.sunos libpng/projects/wince.txt libpng/contrib/visupng/cexcept.h libpng/libpng.3 libpng/scripts/makefile.ibmc libpng/contrib/gregbook/rpng2-x.c libpng/pngtrans.c libpng/pngwrite.c libpng/contrib/gregbook/LICENSE libpng/pngset.c libpng/scripts/makefile.dj2 libpng/projects/visualc71/README.txt libpng/LICENSE libpng/projects/visualc71/libpng.vcproj libpng/contrib/visupng/VisualPng.png libpng/png.5 src/gconf.c libpng/pngwutil.c libpng/scripts/makefile.openbsd libpng/scripts/makefile.gcc contrib/md2k_md5k libpng/contrib/visupng/VisualPng.rc libpng/scripts/makevms.com libpng/scripts/libpng.pc.in contrib/gdevmd2k.c libpng/contrib/pngminus/pngminus.sh libpng/pngrtran.c libpng/scripts/makefile.freebsd src/unix-dll.mak contrib/lips4 contrib/gdevhl12.c libpng/scripts/makefile.hpgcc libpng/scripts libpng/scripts/makefile.sco src/lib.mak libpng/scripts/makefile.tc3 libpng/scripts/pngos2.def libpng/contrib/gregbook/Makefile.sgi libpng/contrib/pngminus/README cups libpng/scripts/makefile.vcawin32 libpng/contrib/pngsuite/basn2c16.png libpng/contrib/gregbook/readpng.c libpng/contrib/pngminus src/unix-gcc.mak libpng/contrib/pngsuite/basn6a16.png libpng/pngmem.c libpng/png.c contrib/gdevop4w.c libpng/contrib/gregbook/readpng.h libpng/scripts/makefile.64sunu src/version.mak libpng/contrib/pngsuite/basn3p02.png contrib/opvp libpng/projects/beos/x86-static.txt libpng/scripts/libpng-config-head.in libpng/png.h libpng/contrib/pngsuite/basn3p04.png contrib/gdevbjca.c libpng/contrib/pngsuite/basn3p08.png libpng/pngpread.c libpng/Y2KINFO libpng/scripts/makefile.netbsd libpng/projects/beos/x86-shared.proj libpng/pngwio.c lib/gs_setpd.ps libpng/pngrutil.c libpng/projects/visualc6/libpng.dsp libpng/contrib/pngminus/pnm2png.bat libpng/contrib/gregbook/Makefile.w32 libpng/contrib/pngminus/png2pnm.bat libpng/scripts/makefile.darwin libpng/scripts/makefile.hpux libpng/pngbar.jpg libpng/projects/cbuilder5/libpng.bpf libpng/projects libpng/projects/cbuilder5/libpng.bpg libpng/scripts/makefile.sggcc libpng/contrib/gregbook/rpng-x.c libpng/contrib/pngsuite/basn0g01.png libpng/projects/visualc6/libpng.dsw contrib/uniprint libpng/scripts/makefile.std libpng/contrib/pngsuite libpng/contrib/pngminus/pnm2png.c libpng/contrib/pngminus/png2pnm.c libpng/projects/visualc71/README_zlib.txt libpng/scripts/makefile.32sunu libpng/projects/cbuilder5/libpng.bpr libpng/contrib/pngminus/pngminus.bat libpng/contrib/visupng/README.txt libpng/projects/visualc71/PRJ0041.mak libpng/pngerror.c contrib/gdevgdi.c libpng/configure libpng/pngvcrd.c libpng/contrib/visupng/VisualPng.c libpng/scripts/makefile.aix libpng/scripts/makefile.mingw libpng/scripts/makefile.bor libpng/scripts/SCOPTIONS.ppc libpng/contrib/visupng libpng/scripts/makefile.beos libpng/contrib/visupng/PngFile.c libpng/contrib/pngsuite/basn4a16.png libpng/projects/visualc6/README.txt libpng/pngread.c libpng/scripts/makefile.ne12bsd libpng/contrib/pngsuite/basn0g16.png src/gdevpxut.c src/gdevcdj.c contrib/gdevlx32.c libpng/contrib/visupng/PngFile.h libpng/scripts/libpng-config-body.in libpng/INSTALL libpng/pngtest.png libpng/pnggccrd.c libpng/contrib/visupng/resource.h libpng/CHANGES src/gdevpxut.h libpng/scripts/libpng-config.in src/gdevxalt.c libpng/libpng-1.2.16.txt libpng/example.c contrib/lxm3200-tweaked libpng/scripts/makefile.so9 libpng/scripts/makefile.intel libpng/pngconf.h libpng/projects/beos libpng/scripts/makefile.amiga src/contrib.mak contrib/gdevln03.c libpng/contrib/pngsuite/README libpng/pngbar.png libpng/scripts/makefile.knr libpng/projects/visualc6/pngtest.dsp libpng/scripts/makefile.dec libpng/scripts/libpng.icc libpng/contrib/pngsuite/basn2c08.png src/unix-aux.mak libpng/contrib/pngsuite/basn6a08.png libpng/projects/cbuilder5/libpng.cpp libpng/scripts/makefile.atari libpng/scripts/makefile.cygwin contrib/epson740 libpng/pngtest.c libpng/ANNOUNCE libpng/projects/visualc71 libpng/scripts/smakefile.ppc]

2007-06-05T23:08:49.369051Z Ralph Giles

Remove additional artofcode references and the obsolete Maintain.htm.

[doc/Projects.htm doc/Issues.htm doc/Use.htm doc/Make.htm doc/Readme.htm doc/Testing.htm doc/Develop.htm doc/Maintain.htm]

2007-06-05T23:04:12.844617Z Ralph Giles

Remove artofcode references and update the release process 
documentation.

[doc/Release.htm]

2007-06-05T22:23:38.874733Z Ralph Giles

Update licence headers. Copyright has been transfered from artofcode LLC 
to Artifex Software, Inc.

[src/iplugin.h ijs/ijs_server.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/gdevpdfx.h src/gdevdm24.c 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/gxdhtserial.h src/gxdither.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 toolbin/tests/cmpi.py src/gsfont0.c src/gscscie.c src/zchar42.h src/gdevwts.c src/icfontab.c src/zht1.c src/zpcolor.c src/zdevcal.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/gdevokii.c src/gdevpdtd.c src/zcfont.c src/gdevpdtd.h src/gdevprna.c src/zcolor.c src/oparc.h src/gxhtbit.c 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 lib/gs_cidcm.ps src/gsmemraw.h toolbin/split_changelog.py src/gpmisc.h doc/Lib.htm src/gxline.h doc/Ps-style.htm man/gslp.1 src/ijs.mak src/gserver.c src/gp_psync.c man/de/pdfopt.1 src/gp_os2pr.c src/gdevpsd.c src/gsiomacres.c src/gxclfile.c src/gxfilltr.h man/de/wftopfa.1 man/de/ps2ps.1 src/gdebug.h src/zfile.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/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 jbig2dec/jbig2_image_png.c src/gdevpdfk.c src/gxfont0c.h src/gxhintn1.c 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/gschar.h src/sarc4.c src/gdevpsu.c src/gsptype2.c src/zfcid1.c src/gstrans.c src/sarc4.h src/gdevpsu.h src/gsptype2.h src/gstrans.h src/iestack.h src/gxbitfmt.h src/gxclio.h lib/pdf_rbld.ps 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 jbig2dec/jbig2_priv.h src/wrfont.h doc/Maintain.htm src/sbhc.h man/de/gsnd.1 src/gsdps.h src/spngp.c src/ghost.h jbig2dec/jbig2dec.c 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/gsiparm4.h src/unixhead.mak src/gxiscale.c src/gxbcache.c src/dwinst.cpp src/gxbcache.h src/ibnum.c src/gdevxcmp.c src/estack.h src/ibnum.h ijs/configure.ac src/scfe.c src/gsdcolor.h src/gscompt.h src/gdevxcmp.h src/gxdtfill.h lib/stocht.ps src/gdevlj56.c src/gdevhl7x.c src/gdevos2p.c src/gdevmr8n.c src/gsbitops.c src/gsparam.c src/gxftype.h src/gdevpdfm.c src/gp_unix_cache.c src/imain.c src/gsbitops.h src/gsparam.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/gspenum.h src/sjpx.c src/gxipixel.c src/sjpx.h src/sfilter2.c src/gdevsnfb.c src/gscrd.c src/gxmclip.c src/gxcie.h src/gsio.h src/gscrd.h toolbin/tests/fuzzy.c src/gxmclip.h src/unix-end.mak toolbin/tests/run_parallel src/inobtokn.c toolbin/afmutil.py src/gp_mslib.c src/gdevescp.c src/gsiodev.c src/igc.c src/msvc32.mak src/gdevmacxf.c src/gsfunc0.c jbig2dec/jbig2_arith.c src/igc.h src/jerror_.h src/zdosio.c src/gsfunc0.h jbig2dec/jbig2_arith.h toolbin/jpxtopdf.c src/gdevpsf1.c src/gdevpsds.c src/siscale.c src/gdevpsds.h src/ilevel.h src/gxfill.c src/gsdsrc.c src/siscale.h src/gxclread.c src/gsdsrc.h ijs/ijs_exec_unix.c src/gxfill.h src/iostack.h src/gsdll.c src/gdevmr1.c src/gspath1.c src/gsdll.h src/sjpegc.c src/zfdcte.c src/zfcmap.c doc/Readme.htm toolbin/tests/check_source.py src/gdevbit.c src/gdevfax.c src/gsequivc.c src/gdevfax.h src/gsdevice.c src/gp_wsync.c src/gsequivc.h src/gxclmem.c src/gsdll32.rc src/gshtx.c src/gscparam.c src/gsdevice.h src/gdevpdfo.c src/gdevsj48.c 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 man/de/ps2ascii.1 src/gsmemory.h src/gxband.h src/scfdgen.c src/ttinterp.c src/ttcalc.c src/gsbitmap.h src/gdevtknk.c toolbin/genfontmap.ps src/idsdata.h src/ttinterp.h src/ttcalc.h src/gxfont42.h src/scf.h src/inames.h src/gxidata.c src/gsroptab.c lib/gs_fntem.ps src/gdevm1.c src/gsistate.c src/os2.mak src/gscolor2.c lib/gs_cidfm.ps 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 jasper/configure.ac src/gdevpcfb.c src/gdevvec.c src/dwmain.h src/gdevpcfb.h src/gdevvec.h toolbin/pscet_status.pl src/ostack.h jasper/src/libjasper/jpc/jpc_qmfb.c src/gsrect.h src/sdeparam.c src/idosave.h src/ifrpred.h src/gdevimgn.c src/gdevvglb.c src/gsmdebug.h src/gsovrc.c src/gxshade1.c jbig2dec/jbig2_symbol_dict.c src/gdevm32.c src/scfx.h src/gsovrc.h src/all-arch.mak lib/gs_init.ps jbig2dec/jbig2_symbol_dict.h 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 lib/gs_resmp.ps src/gxfunc.h src/gdevstc.c jbig2dec/jbig2_segment.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/strmio.c src/zfilter.c src/gstype42.c src/strmio.h src/iutilasm.asm src/gsfunc.c src/sbcp.c src/iref.h src/gsfunc.h jbig2dec/jbig2_mmr.c toolbin/encs2c.ps src/sbcp.h jbig2dec/jbig2_mmr.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 jasper/src/libjasper/include/jasper/jas_types.h 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/gdevo182.c src/istkparm.h 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/gsnorop.c src/ttload.c src/gdevmrop.h src/gxfillsl.h src/zcolor3.c src/ttload.h src/gxcpath.c src/tttype.h doc/Unix-lpr.htm src/gxcpath.h src/gdevlxm.c src/gxp1impl.h man/ps2ps.1 jbig2dec/jbig2_generic.c src/rinkj/rinkj-epson870.c jbig2dec/jbig2_generic.h src/rinkj/rinkj-epson870.h jbig2dec/jbig2_image.c src/gxgetbit.h src/gdevabuf.c doc/Source.htm src/md5.c jbig2dec/jbig2_image.h src/gp_mac.c src/zcie.c src/gdevsco.c src/md5.h src/gp_mac.h src/stream.c src/gdevdflt.c src/stream.h src/gsdpnext.h src/gdev8510.c src/gxstroke.c src/gdevpxut.c src/zncdummy.c src/zmisc2.c src/ttmisc.h src/zfunc3.c src/iparam.c lib/jobseparator.ps src/zrelbit.c src/gdevpxut.h src/gxclist.c src/gdevxini.c src/iparam.h Resource/ColorSpace/DefaultCMYK src/gxclist.h src/jbig2.mak src/gdevpsfu.c src/gdevlp8k.c jbig2dec/jbig2_arith_iaid.c src/gdevpdt.c man/font2c.1 src/ttfmemd.c jbig2dec/jbig2_arith_iaid.h src/gdevpdt.h src/gp_dosfs.c ijs/ijs_exec_win.c src/ttfmemd.h src/gpcheck.h src/jasper.mak src/gdevxxf.c src/dwuninst.cpp src/ztype.c src/shc.c src/zshade.c man/ps2ascii.1 Resource/ColorSpace/DefaultGray doc/Use.htm src/opcheck.h src/shc.h src/gdevpdfd.c src/gdevcfax.c src/vdtrace.c src/zicc.c src/gxdda.h src/iscan.c src/vdtrace.h src/gsnotify.c src/iscan.h src/gximage3.c src/srle.c src/zfilterx.c src/gsnotify.h Resource/ColorSpace/TrivialCMYK src/gximage3.h src/gsdll2.rc man/gs.1 src/iparray.h src/memory_.h src/gsuid.h src/wtsimdi.c src/gdevstc2.c src/ziodev2.c src/gsiodevs.c man/eps2eps.1 src/zmisc.c src/gsargs.c src/devs.mak src/gp_win32.c src/gsargs.h src/gsinit.c src/gxttfb.c src/simscale.c src/wmin.mak src/gxttfb.h src/dscparse.c src/winplat.mak src/simscale.h src/gdev3852.c src/dscparse.h src/gp_getnv.c src/gp_wgetv.c src/gdevpxen.h src/gdevadmp.c src/gdevpxat.h src/errno_.h src/zchar2.c src/slzwc.c src/gdevpdfu.c src/ttcommon.h src/gdevp14.c doc/Ps2ps2.htm src/dwinst.h src/sfilter.h src/gdevp14.h src/ifcid.h src/ifont.h src/sisparam.h src/zfmd5.c src/unixlink.mak doc/Psfiles.htm src/zrop.c src/zfjpx.c src/gdevegaa.asm 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 jbig2dec/os_types.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/gdevdfax.c src/gdevdbit.c src/gdevpccm.c ijs/ijs_client_example.c src/gdevpccm.h src/strimpl.h src/gsutil.c src/opextern.h src/gsutil.h src/zimage.c src/gdevcgm.c src/zfimscale.c jbig2dec/jbig2_metadata.c src/gdevtsep.c src/gsfont0c.c doc/Deprecated.htm jbig2dec/jbig2_metadata.h man/de/font2c.1 src/gsht1.c src/gspcolor.c src/gxi12bit.c src/gsht1.h src/iddstack.h src/gspcolor.h src/rinkj/rinkj-config.c 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/icid.h src/gscolor.h src/gdevm56.c src/spsdf.c src/gxpaint.h src/gsfname.c src/spsdf.h src/gsfname.h src/gxalpha.h jbig2dec/jbig2_refinement.c jasper/src/libjasper/base/jas_debug.c src/srlx.h src/gxclipsr.h toolbin/pdf_info.ps 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 src/gdevsunr.c src/gdevpdtc.c src/gxoprect.h src/gsfcmap1.c Resource/Decoding/StandardEncoding src/gswts.c src/gsstate.c src/gswts.h src/ichar1.h src/gxiparam.h src/gsstate.h src/gdevcljc.c doc/Ps2pdf.htm lib/pdf_base.ps 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 lib/prfont.ps src/write_t2.c src/zdps1.c doc/Commprod.htm src/write_t2.h src/zhsb.c src/gxsync.c src/zupath.c src/dstack.h toolbin/gen_ldf_jb2.py 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 jbig2dec/jbig2.c jbig2dec/jbig2.h 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/gdevdevn.c src/gdevpdte.c jbig2dec/configure.ac 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 man/pdf2ps.1 lib/gs_fonts.ps doc/Testing.htm src/gstype1.h src/dwmain.rc src/gxcspace.h src/gscicach.c src/gdevmpla.h src/rinkj/evenbetter-rll.c man/wftopfa.1 src/gscicach.h 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 ijs/ijs_client.c src/gdevpdtv.c ijs/ijs_client.h src/contrib.mak src/rinkj/rinkj-device.c src/gdevpdtv.h src/lwf_jp2.mak src/gsiparm3.h src/gxclpage.c 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 man/dvipdf.1 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/setjmp_.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/gdevjpx.c src/gsserial.c src/string_.h src/gdevcslw.c src/gsjmorec.h src/gsserial.h src/zfdctd.c src/zdps.c src/scanchar.h src/gxpcache.h man/de/pdf2ps.1 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 ijs/unistd_.h 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 jbig2dec/jbig2_huffman.c src/gximag3x.c src/gsgc.h jbig2dec/jbig2_huffman.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 lib/opdfread.ps src/gximask.c src/gdevbbox.h src/iddict.h doc/History2.htm src/gp_stdin.c src/gdevtfax.c src/gdevpjet.c src/gsexit.h src/gendev.c src/gximask.h src/gdevphex.c src/gp.h src/gslparam.h src/ivmspace.h src/gdevtfax.h src/gshtscr.c jbig2dec/jbig2_image_pbm.c src/bench.c src/gsnogc.c ijs/ijs.c src/gdevbmpa.c src/gsnogc.h src/stdio_.h src/tttables.h src/gdevemap.c ijs/ijs.h src/gp_sysv.c jasper/src/libjasper/include/jasper/jas_debug.h src/gsrefct.h src/iastruct.h man/de/dvipdf.1 src/gdevbjc.h src/gdevpsf2.c jbig2dec/jbig2_arith_int.c src/gzht.h doc/Develop.htm src/gxcvalue.h jbig2dec/jbig2_arith_int.h src/sstring.c lib/mkcidfm.ps src/gxpath.c src/scfparam.c src/sstring.h src/gdevupd.c src/iconf.c src/gxpath.h src/interp.c src/zcrd.c src/dwnodll.c src/iconf.h doc/C-style.htm src/gdevm40.c src/dwdll.c src/interp.h man/ps2pdfwr.1 src/dwdll.h src/gsiodisk.c src/sjpegd.c src/gspath2.h src/dvx-tail.mak src/gdevpsim.c src/errors.h src/gp_msprn.c src/gxino12b.c src/gdevmgr.c src/gxacpath.c src/gdevpdfp.c src/gslib.c src/ziodev.c src/gdevmgr.h src/iccinit0.c src/sdcte.c doc/Release.htm src/zfunc0.c src/ifont1.h src/gxccache.c src/gslib.h 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 jbig2dec/jbig2_hufftab.h jbig2dec/jbig2_text.c src/gdevm2.c src/gxhintn.h src/gsiorom.h src/ifilter2.h src/gspath.c src/gdevwddb.c src/gxpcopy.c src/gspath.h src/gscolor3.c src/gdevdjet.c man/gsnd.1 src/gscolor3.h src/gxfapiu.c src/zpath1.c src/rinkj/rinkj-dither.c doc/History3.htm src/gxfapiu.h src/gdevm24.c src/gp_unix.c src/rinkj/rinkj-dither.h src/inamedef.h jbig2dec/config_win32.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/gdevpm.h src/gdevbmpc.c src/gschar0.c Resource/ColorSpace/DefaultRGB src/iht.h src/zdevice.c src/gscie.c src/gscencs.h src/gxi16bit.c src/ifapi.h src/zimage2.c src/gscie.h src/iastate.h src/pipe_.h src/gxbitops.h src/ipacked.h src/gsncdummy.c src/gpsync.h src/gsfunc3.c src/gswin.rc src/gdevperm.c src/gsncdummy.h 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/openvms.mmk src/sa85d.h src/gp_stdia.c src/zcolor2.c src/gdev3b1.c src/gxttf.h src/ttconf.h src/genht.c src/zgeneric.c man/de/printafm.1 src/gxclrect.c src/gxarith.h src/gsshade.c src/gsshade.h src/msvclib.mak src/gsicc.c src/zcid.c src/dwsetup.cpp src/gdevp2up.c src/dwuninst.rc src/gsicc.h src/gdevpdfr.c src/gdevppla.c src/zmisc1.c src/gdevppla.h src/gsdevmem.c src/wccommon.mak src/gxfcopy.c src/gdevpsft.c src/gxfcopy.h src/gdevtfnx.c src/gsmisc.c src/gxicolor.c src/gdevm4.c src/ldf_jb2.mak src/gxpageq.c src/winint.mak src/gsdparam.c man/ps2pdf.1 doc/Details8.htm doc/Make.htm src/gxpageq.h src/gxdevrop.h src/gsstype.h src/gdevprn.c src/gdevcif.c lib/gs_resst.ps src/gxdevndi.c doc/History4.htm toolbin/tests/check_comments.py src/gdevprn.h src/gxdevndi.h src/iesdata.h src/dxmain.c src/gdevpdfc.c src/iapi.c ijs/ijs_server_example.c src/spngpx.h src/gdevpdfc.h src/gdevherc.c src/iapi.h src/btoken.h src/zcharout.c toolbin/tests/gscheck_fuzzypdf.py 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 jbig2dec/memcmp.c src/gscoord.c src/idict.h src/gxcolor2.h src/macos_carbon_d_pre.h toolbin/pre.tcl src/gscoord.h src/genarch.c src/gscedata.c doc/Projects.htm src/gxcindex.h src/gscpm.h src/gp_nsync.c src/gscedata.h src/gdevmr2n.c src/gdevdgbr.c src/gdevdsha.c src/zlib.mak src/gdevxcf.c lib/gs_fapi.ps 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/gsimage.c src/ipcolor.h 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/sidscale.c src/rinkj/rinkj-byte-stream.h src/gsflip.h src/sidscale.h src/gdevdljm.c src/zdpnext.c src/geninit.c src/gdevdljm.h src/zusparam.c src/gdevjbig2.c man/pfbtopfa.1 src/gxchrout.c src/gximage4.c src/gxchrout.h src/gxshade6.c src/gxcoord.h jbig2dec/jbig2_page.c 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/zalg.c 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 man/de/ps2pdf.1 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 lib/gs_cidtt.ps src/gsos2.rc src/gximage.c man/printafm.1 src/gdevx.h src/gsmemlok.h src/ziodevs.c src/unixansi.mak ijs/Makefile.am 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 man/pdfopt.1 src/gsjconf.h src/gsfcid.c src/zstack.c src/gsfont.c src/gsropc.h src/gsfont.h lib/gs_ttf.ps src/isave.c doc/History6.htm src/isave.h src/gdevm64.c src/zdict.c jbig2dec/sha1.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/smtf.c src/ttfinp.h src/x_.h src/gdevtifs.c src/gshsb.h man/pf2afm.1 src/smtf.h src/gdevtifs.h src/gximono.c src/fapiufst.c Resource/Decoding/Latin1 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 ijs/ijs_server.c src/gsgdata.c]

2007-06-05T21:28:32.480500Z Igor Melichev

Fix (shadings) : Optimize path manipulations for shading fill (continued 3).

DETAILS :

This patch finaly removes gs_shading_fill_path and its relatives.
Also gx_dc_shading_path_add_box is now private.
This change is algorithmically equivalent.

[src/gsptype2.c src/gsshade.c src/gsptype2.h src/gsshade.h src/gscolor3.c]

2007-06-05T21:10:17.034292Z Igor Melichev

Fix (shadings) : Optimize path manipulations for shading fill (continued 2).

DETAILS :

This is the 2nd step for the elimination of gs_shading_fill_path.
It excludes that function from high level devices.

After the last patch, ps2write is only device that calls gs_shading_fill_path
while converting a shading into an image.
This patch replaces that call with a call to gs_shading_do_fill_rectangle.

This patch also fixes the revision 8017 regression
with the change to gdevpdfi.c .

Minor changes :

1. lcvd_fill_rectangle_shifted_from_mdev appears to be same as lcvd_fill_rectangle_shifted.
   Removing the 1st one.

2. path_scale appears almost same as gx_path_scale_exp2_shared.
   Removing the 1st one.

3. In gdevpdfd.c, when the scale isn't dividing by 4,
   the old code chooses a smaller scale by X.
   The new code dies by Y for a better view.
   It may cause minor differences in raster.
   
4. We're not sure why lcvd_get_clipping_box_from_target was used sometimes.
   It looks incorrect. Replaced with lcvd_get_clipping_box_shifted_from_mdev. 

5. gx_cpath_scale_exp2_shared didn't scale list->xmin, list->xmax.

6. gx_cpath_copy is defined and not used.
   Saving it from a dead branch, because it may be useful in future.

[src/gsptype2.c src/gsshade.c src/gxcpath.c src/gxpath.h src/gdevpdfd.c src/gsshade.h src/gxfill.c src/devs.mak src/gdevpdfi.c]

2007-06-03T22:33:12.851834Z Igor Melichev

Fix (shadings) : Optimize path manipulations for shading fill (continued).

DETAILS :

The last patch breaks 'clippath'. Fixing it now.

[src/gxcpath.c]

2007-05-31T17:25:52.270926Z Igor Melichev

Fix (shadings) : Optimize path manipulations for shading fill.

DETAILS :

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

While filling a shading, the old code 
converts the clipping path into a path, then 
converts it to a clipping path for intersecting it
with the filling path and with the shading BBox.
These manipulations are neccessary due to the
interface restrictions for gs_shading_fill_path,
which doesn't pass a clipping path.
It causes (1) a bad performance and (2)
a wrong fill adjustment, because the conversion 
of a path to a clipping path and back to path 
is not identity due to fill adjustment.

The new code is a 1st step for the elimination of gs_shading_fill_path.
This patch excludes this function for raster devices.
Excluding it for higth level devices will be a next step.

The new code moves path manipulation outside the
shading color painting. Now all 3 pathes
(the filling path, the clipping patrh, and the shading BBox)
are processed in gxfill.c . The painting 
is done with gs_shading_do_fill_rectangle,
which does not manipulate with pathes.

The patch modifies gx_image_fill_masked_end
to comply with the new inplementation of
gs_shading_do_fill_rectangle when a mask
is converted into a clipping path. 

Another optimization avoids the generation
of a filling path for 'shfill'.
Accorgong to PLRM, shfill deals with clipping path,
but it was converted into a path due to 
internal Ghostscript constraint for the device interface.
When the device implements fill_path with
the default method gx_default_fill_path,
the conversion to a path is not necessary.

To make use of this fact for optimization, the graphics library
needs to know, whether the output device uses the default
function gx_default_fill_path. This patch introduces a new response
for pattern_manage, which is named 'pattern_manage__shfill_doesnt_need_path'.
The device must respond with 1 if it does not need a path.
The patch provides implementations for raster devices and
for forwarding devices. If some device provides an instandard
fill_path method, the optimization won't work for it
(i.e. it will work as before - will recieve a path for shfill)
unless it provides a proper response to pattern_manage__shfill_doesnt_need_path . 

A minor change to gdevpdfb.c fixes a paranoid compiler warning
about a possible use of unubnitialized data.

[src/lib.mak src/gsptype2.c src/gsshade.c src/gxcpath.c src/gdevdflt.c src/gxpath.h src/gdevpdfb.c src/gsptype2.h src/gsshade.h src/gximask.c src/gdevnfwd.c src/gxfill.c src/gxdevcli.h src/gscolor3.c]

2007-05-30T06:05:43.128239Z Ray Johnston

Change built-in compression threshold for memory based clist to
improve performance.

DETAILS:

The (example) compression threshold used with BAND_LIST_STORAGE=memory
is much to small to represent current embedded devices (where we expect
to not have a disk). On one customer's (#951) performance test files,
this change shows an overall 9.2% performance increase, ranging as high
as 20% on one file. For this test suite, even 22M is enough to avoid
compression.

The intent is that the compression threshold be a dynamic value that
uses current "real time" memory available in the printer rather than
some arbitrary fixed value. If the clist writer logic waits for all
potential renderer/reader tasks to stop and free their clist RAM,
then the need to compress becomes even less likely.

[src/gxclmem.c]

2007-05-28T18:47:29.004635Z Ray Johnston

Fix for Segv with psdcmyk device when a job specifies DeviceGray.
Test file 477-04.ps, Bug #689179.

DETAILS:

Thanks for this patch from "fatty" at po'twenty-nine'.lcv.ne.jp (email
mangled to avoid this being harvested for spam.

[src/gdevpsd.c]

2007-05-28T16:58:07.064568Z Alex Cherepanov

Fix indeterministic behavior in fuzzy raster match that can cause premature
exit and miss all the differences. Encountered on GNU+Linux, i686, GCC 4.1.2.

[toolbin/tests/fuzzy.c]

2007-05-28T05:35:14.685193Z Ray Johnston

Primarily fix for wtsimdi problem with wts dithering phase shift at
band boundaries (add band_offset_x, band_offset_y), adding band_offset_x
and band_offset_y to the device structure and corresponding initializer
changes. Also clean up gdevwts.c MSVC warnings, and add a fast check to
gdevbit.c for /dev/null (mirroring a much older change for Windows
"nul:" device) OutputFile that aids in benchmarking. Fixes bug #689245
for customer #951.

DETAILS:

Running with the wtsimdi device at default banding now matches the
results with a single band (the wtsimdi device sets BandingAlways,
so this can only be verified if the -dBandHeight= and -dBufferSpace=
options are set large enough for a full page.

[src/gdevwts.c src/gxdevice.h src/gdevbit.c src/gxclread.c src/gxdevcli.h]

2007-05-28T05:13:25.622030Z Ray Johnston

Change names of some functions so that NOPRIVATE still works.

[src/gdevdevn.c]

2007-05-27T19:15:04.334298Z Ray Johnston

Use standard __WIN32__ predefined macro along with NT to identify
Microsoft compiler based builds.

[imdi/arch.h]

2007-05-27T19:11:52.872937Z Ray Johnston

Add missing default definition of IMDI source. Add conditional
to watcw32.mak to allow build command line override.

[src/openvms.mak src/watcw32.mak]

2007-05-27T19:03:52.349026Z Ray Johnston

Fix missing dependencies for the witsimdi.dev

[src/devs.mak]

2007-05-27T18:51:35.172106Z Igor Melichev

Fix (shadings) : Account inner poles for computing a tensor shading flattening.

DETAILS : 

While computing the neccessary decomposition level by
the parameter u, the old code ony accounted the curvity
of the patch boundary. However tensor patches may have 
a very curved interior with a slightly curved boundary.
This patch improves the raster in such cases.

[src/gxshade6.c]

2007-05-27T17:59:43.657554Z Igor Melichev

Fix : More tolerance for bogus tintTransform.

DETAILS : 

Bug 688584 provides a test case, when tintTransform
replaces an extra value on operand stack. 
It allows to know whether tintTransform is called.
We believe it is an incorrect Postscript,
but the file is created QuarkXPress: pictwpstops filter 1.0,
from customer 582, so we need to be tolerant.

[lib/gs_devn.ps]

2007-05-27T16:39:19.788230Z Igor Melichev

Fix (shadings) : Optimize filling a radial shading extension.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The test case includes multiple radial shadings, 
which paint an extansion only.
This patch optimizes the case when the paint area is
strongly inside the radial shading extension.
In this case the shading rasterization is replaced with
painting a pure color.

1. The new function R_fill_rect_with_const_color is the main worker.
2. The old patch_color_to_device_color function is renamed into 
   patch_color_to_device_color_inline.
3. patch_color_to_device_color is made public for R_fill_rect_with_const_color.

[src/gxshade4.h src/gxshade1.c src/gxshade6.c]

2007-05-26T13:13:33.983826Z Alex Cherepanov

Dont't enumerate /Threads attribute when it has null value.
Bug 689250

[lib/pdfopt.ps]

2007-05-24T22:05:57.168544Z Igor Melichev

Fix (shadings) : A bug in tensor patch size formula caused extra or missewd subdivisions.

DETAILS : 

See the formula for L.
Also inserted some debug drawing, which are disabled.

As a secondary effect, this patch may close problems
related to wedge vertex buffer overflow.

[src/gxshade6.c]

2007-05-24T18:46:03.324950Z Igor Melichev

Fix : Remove a redunDan Cobyt definition of gs_error_interrupt.

DETAILS : 

Also fixed MSVC warning in gsncdummy.c .

[src/int.mak src/interp.c src/ierrors.h]

2007-05-24T18:06:57.635194Z Igor Melichev

Fix (shadings) : Reuse shadings while a PDF interpretation.

DETAILS : 

Bug 689211 "PDF interpreter creates redunDan Cobyt shadings".

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The test case defines 79 shadings. While interpreting it 
the old code calls zbuildshading2 9600+ times.

1. Improved resolveshading with reusing old shadings (pdf_draw.ps).
2. Improved 'sh' with reusing old shading dictionaries (pdf_draw.ps).
3. Renamed gx_currentciecaches with gx_unshare_cie_caches,
   because the old name does not comply to the function body.
4. Defined a new function gx_currentciecaches.
5. The macro CIE_CHECK_RENDERING is replaced with a new function 
   gx_cie_check_rendering_inline. The new code also checks 
   the consistency of cie_joint_caches with the color space
   by checking the id, and requests refilling the cache if necessary.
   Note it can cause the PS interpreter callout with EncodeLMN, etc.
6. IMPORTANT: The new field gs_shading_params_t::cie_joint_caches
   saves the pointer to gs_state::cie_joint_caches.
   It is used in .shfill - see zshade.c .
   Debugged with Bug688631.pdf .
7. NOTE: *gs_shading_params_t::cie_joint_caches may be left unreleased
   when the shading releases. The garbager will release it.
   This happens with PS interpreter only.
8. NOTE: We do not make cie_joint_caches be a property of color space,
   rather it would look natural. The reason is that this large structure 
   is needed to save with shadings only. Saving it for any color space
   would spend too big RAM.
9. NOTE: Due to historic reason gs_setcolorspace leaves cie_joint_caches
   unchanged. It may cause problems when gx_color_space_needs_cie_caches
   is true. Postscript interpreter has a special workaround for it in
   gs/lib/gs_cspace.ps . Other interpreters may need an additional support
   when they use CIE spaces directly or indirectly. 
   Likely this feature is not properly documented.
10. NOTE: The change to pdf_draw.ps cases an additional RAM expence for
   PDF interpretation. It is caused by saving all built shadings
   until the document finishes. It includes the expence for extra copies of
   cie_joint_caches. The new procedure .free_page_resources frees
   shadings from page Resources after page finishes.
   However this patch does not implement that for 
   other local resources, such as form Resources, etc.
   It may need a further improvement.

[lib/pdf_main.ps src/lib.mak src/gsshade.c src/zshade.c src/gscie.h src/int.mak src/zcrd.c src/gsshade.h src/gxcie.h lib/pdf_draw.ps src/gsciemap.c src/gsicc.c src/gscie.c src/gscolor3.c]

2007-05-23T23:33:45.298718Z Ray Johnston

Change the .ppm output from the wtsimdi device to write a P6 with
a max value of 255 (instead of 1). Some viewers assume a max value
of 255, so the previous output looked all black. A max value of 255
works with all known viewers.

[src/gdevwts.c]

2007-05-23T20:27:42.841035Z Alex Cherepanov

Add support for /UserUnit. Also fix some related bugs that stayed
in the way while testing it. Patch from SaGS.
Bug 688124 from customet 870, bug 688359.

[lib/pdf_main.ps doc/Use.htm lib/pdf_draw.ps]

2007-05-23T18:51:55.128091Z Alex Cherepanov

Fix handling of uncompressed contect streams with incorrect Length parameter
or missing endstream operator. Use operator obj as one more way to detect
the end of the stream. Bug 689239.

[lib/pdf_main.ps lib/pdf_draw.ps]

2007-05-22T20:50:15.623551Z Timothy Osborn

Adding missing header line.

DETAILS:

gsncdummy.c needs to include ierrors.h in order to use errors defined therein.

[src/gsncdummy.c]

2007-05-21T22:08:07.611194Z Ralph Giles

Define IMDISRCDIR in the top level makefiles and pass this through to
the compile lines in devs.mak. This the the correct fix for the issue
addressed in revisions 7970 and 7971.

[src/bcwin32.mak src/ugcclib.mak src/gs.mak src/macosx.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/devs.mak src/os2.mak src/watclib.mak]

2007-05-21T15:11:52.121008Z Alex Cherepanov

Fix uninitialized cxs.present as detected By Valgring on Bug687846.ps test file
and nullpage device.

[src/zchar1.c]

2007-05-21T14:48:53.469788Z Till Kamppeter

Corrected imdi path

[src/devs.mak]

2007-05-21T14:38:22.247440Z Till Kamppeter

Made the definitions of IMDISRC and IMDISRCDIR platform-independent and also
working when the source tree is in a directory not named "gs".

[src/devs.mak]

2007-05-21T06:40:28.742110Z Henry Stiles

Back out the changes associated with 7715 and 7773.  This fix is
probably wrong, it only masks an underlying problem by disabling high
level images and it slows down many jobs.  I believe the problem was
misunderstood from the outset but I don't clearly understand the svn
change log, it reads:

   Fix for banding of some images not matching non-banding output.
   Added check for an invariant that the translation matches in the 
   two matrixes used in rendering.  In this case the non-high level image
   path is taken.  A better solution would be to a single matrix, as this will
   increase the display list size for some files.

It is not clear what "single matrix" means.  There is one ctm
associated with the image and one associated with the graphics state,
both must be used by either the high level image code or the default
image machinery.  The change checked that graphics (imager) state ctm
translation components matched the translation components that map
image space to device space.

[src/gxclimag.c]

2007-05-19T17:08:04.593395Z Alex Cherepanov

Remove unused and incorrect definitions of stdin, stdout, stderr buffer sizes.

[src/iminst.h]

2007-05-16T21:04:35.033996Z Igor Melichev

Fix (shadings) : Shorten a radial shading when it is larger than paint area.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The test case includes multiple radial shadings, 
which are 100+ times larger than the path bbox.
This patch replaces such shadings with a smaller shading,
which paints the bbox with same color
(a minor color difference is possible due to rounding errors).

See comment in code.

[src/gxshade1.c]

2007-05-16T02:56:12.508768Z Alex Cherepanov

Don't issue a warning for PDF TrueType fonts without /Encoding because
it is optional even for non-symbolic fonts. Bug 689205.

[lib/pdf_font.ps]

2007-05-15T13:12:02.777397Z Alex Cherepanov

Use operator oforce instead of exec to evaluate indirect references to
/OutputIntents members for consistency with the existing code. Bug 689233.

[lib/pdf_main.ps]

2007-05-14T18:51:03.604183Z Ralph Giles

Correct keyword substitution.

[src/gdevwts.c]

2007-05-14T16:36:23.969410Z Igor Melichev

Fix (PDF interpreter) : Failed with an indirect OutputIntents element.

DETAILS : 

Debugged with running debug build of ppmraw with the test file of Bug 689189.
The test case includes this :

	/OutputIntents[1135 0 R]

[lib/pdf_main.ps]

2007-05-14T15:22:29.642029Z Ralph Giles

Revert the gs-esp merge down, as there are still some build issues.

[contrib/gdevmd2k.c contrib/gdevxes.c contrib/gdevgdi.c src/configure.ac contrib/lips4 contrib/eplaser contrib/gdevhl12.c src/gdevlj56.c src/gdevdljm.c src/lib.mak contrib/gdevcd8.c src/gdevpx.c src/gdevl256.c contrib/contrib.mak src/gdevvglb.c src/gdevdljm.h contrib/gdevcd8.h cups src/unix-gcc.mak contrib/gdevdj9.c src/gdevcdj.c src/gdevpxut.c contrib/chp2200 contrib/gdevlx50.c contrib/gdevlx32.c contrib/gdevop4w.c src/gdevpxut.h lib/gs_init.ps src/gdevlbp8.c contrib/gdevbjc_.c contrib/opvp contrib/japanese contrib/gdevbjca.c src/gdevxalt.c contrib/lxm3200-tweaked contrib/gdevbjc_.h contrib/gomni.c src/contrib.mak src/devs.mak lib/gs_setpd.ps contrib/pcl3 contrib/gdevlx7.c contrib/gdevln03.c src/gdevdjet.c src/gconf.c contrib/defs.h src/gs.mak contrib/uniprint src/Makefile.in src/unix-aux.mak contrib/md2k_md5k src/unixinst.mak contrib/epson740 src/gp_unix.c]

2007-05-14T09:34:52.443458Z Till Kamppeter

Merged in extra functionality of ESP Ghostscript (from branch "gs-esp-gpl-merger")

[contrib/gdevmd2k.c contrib/gdevxes.c contrib/gdevgdi.c src/configure.ac contrib/lips4 contrib/eplaser contrib/gdevhl12.c src/gdevlj56.c src/gdevdljm.c src/lib.mak contrib/gdevcd8.c src/gdevpx.c src/gdevl256.c contrib/contrib.mak src/gdevvglb.c src/gdevdljm.h contrib/gdevcd8.h cups src/unix-gcc.mak contrib/gdevdj9.c src/gdevcdj.c src/gdevpxut.c contrib/chp2200 contrib/gdevlx50.c contrib/gdevlx32.c contrib/gdevop4w.c src/gdevpxut.h lib/gs_init.ps src/gdevlbp8.c contrib/gdevbjc_.c contrib/opvp contrib/japanese contrib/gdevbjca.c src/gdevxalt.c contrib/lxm3200-tweaked contrib/gdevbjc_.h contrib/gomni.c src/contrib.mak src/devs.mak lib/gs_setpd.ps contrib/pcl3 contrib/gdevlx7.c contrib/gdevln03.c src/gdevdjet.c src/gconf.c contrib/defs.h src/gs.mak contrib/uniprint src/Makefile.in src/unix-aux.mak contrib/md2k_md5k src/unixinst.mak contrib/epson740 src/gp_unix.c]

2007-05-12T18:25:57.733948Z Alex Cherepanov

Avoid a Valgrind warning about uninitialized memory and fix a potential
memory access violation where look-up of the last value of the interpolation
table caused access past the end of the table.

[src/gscie.h]

2007-05-12T17:09:18.524416Z Alex Cherepanov

Avoid a Valgrind warning and fix an error in debugging statistics collection,
where 0-th element of the table can be used before being assigned a value.

[src/gdevm24.c]

2007-05-12T15:46:44.945538Z Alex Cherepanov

Avoid a Valgrind warning about overlapping argumemts of memcpy().
Don't assign a structure to itself.

[src/gxhintn.c]

2007-05-12T14:55:02.729921Z Alex Cherepanov

Fully initialize stream_jpxd_state structure to avoid Valgrind warnings and
bogus results when the state is printed on error. Bug 688877.

[toolbin/vg_bugs.supp src/sjpx.c]

2007-05-12T10:05:30.414975Z Russell Lang

Recognise another variant of nmake when building for Windows x64 with MSVC 8
Restore documentation about building for Windows 64-bit,
erroneously removed by an earlier commit.

[doc/Make.htm src/msvc32.mak]

2007-05-11T22:29:09.072983Z Ralph Giles

Bump the version number and date after the 8.57 release. We're skipping
to 8.60 for the next release because of some reorganization to the 
source tree and the merge of the ESP Ghostscript patch set, both 
scheduled for the next release.

[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]

2007-05-11T18:51:29.956384Z Ralph Giles

Update release notes and changelog.

[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]


Version 8.57 (2007-05-11)

This is a stable release in the 8.5x series of Ghostscript. In addition to the usual bug fixes, there are specific performance and quality improvements in the areas of patterns, shading and image filtering.

Also new in this release is an implementation of the Well Tempered Screening algorithm in an output device, using Graeme Gill's IMDI library for efficient color mapping.

The following bugs were open at the time of release:

226943, 430175, 465936, 493348, 530011, 535932, 578865, 592160, 610478, 614298, 626295, 686747, 686853, 686865, 687011, 687039, 687084, 687095, 687108, 687146, 687193, 687196, 687257, 687271, 687280, 687295, 687297, 687303, 687327, 687342, 687345, 687346, 687375, 687397, 687414, 687445, 687475, 687484, 687492, 687514, 687520, 687531, 687536, 687559, 687561, 687593, 687595, 687608, 687630, 687650, 687666, 687674, 687677, 687680, 687695, 687697, 687702, 687715, 687721, 687728, 687729, 687731, 687775, 687780, 687782, 687793, 687796, 687805, 687814, 687844, 687850, 687887, 687903, 687904, 687907, 687915, 687931, 687950, 687957, 687960, 687970, 687974, 687978, 687981, 687983, 687988, 688006, 688007, 688020, 688022, 688024, 688026, 688032, 688035, 688036, 688042, 688054, 688058, 688061, 688064, 688066, 688075, 688081, 688095, 688124, 688129, 688130, 688134, 688151, 688152, 688159, 688166, 688184, 688187, 688200, 688203, 688204, 688207, 688210, 688215, 688227, 688239, 688243, 688267, 688269, 688280, 688282, 688283, 688288, 688295, 688311, 688312, 688317, 688318, 688320, 688323, 688332, 688333, 688337, 688339, 688342, 688358, 688359, 688360, 688361, 688363, 688372, 688375, 688378, 688386, 688387, 688389, 688395, 688400, 688410, 688413, 688427, 688428, 688429, 688434, 688436, 688437, 688440, 688446, 688448, 688468, 688473, 688474, 688475, 688477, 688479, 688483, 688490, 688493, 688495, 688500, 688515, 688517, 688518, 688526, 688528, 688532, 688533, 688539, 688540, 688542, 688557, 688565, 688573, 688580, 688581, 688584, 688588, 688598, 688601, 688604, 688605, 688610, 688616, 688617, 688619, 688621, 688626, 688627, 688633, 688634, 688636, 688637, 688638, 688643, 688646, 688647, 688651, 688653, 688655, 688671, 688673, 688674, 688683, 688696, 688697, 688699, 688708, 688709, 688710, 688711, 688712, 688714, 688717, 688728, 688730, 688731, 688734, 688736, 688738, 688739, 688757, 688762, 688770, 688774, 688777, 688778, 688783, 688796, 688797, 688806, 688807, 688808, 688811, 688813, 688815, 688818, 688829, 688830, 688834, 688843, 688845, 688846, 688870, 688871, 688872, 688876, 688877, 688878, 688899, 688903, 688904, 688907, 688908, 688909, 688914, 688915, 688916, 688917, 688918, 688919, 688923, 688926, 688928, 688933, 688934, 688940, 688942, 688943, 688945, 688949, 688952, 688958, 688965, 688969, 688970, 688976, 688977, 688978, 688979, 688981, 688983, 688986, 688990, 688992, 688994, 688999, 689002, 689003, 689011, 689013, 689014, 689022, 689025, 689028, 689031, 689032, 689036, 689040, 689044, 689046, 689048, 689050, 689053, 689055, 689056, 689057, 689058, 689060, 689065, 689068, 689070, 689076, 689077, 689078, 689080, 689081, 689085, 689090, 689092, 689093, 689094, 689098, 689101, 689103, 689104, 689106, 689107, 689111, 689114, 689115, 689116, 689117, 689123, 689127, 689128, 689129, 689130, 689132, 689133, 689136, 689137, 689138, 689145, 689146, 689147, 689148, 689150, 689153, 689154, 689155, 689159, 689161, 689164, 689167, 689169, 689170, 689172, 689174, 689175, 689179, 689181, 689182, 689184, 689186, 689188, 689189, 689195, 689198, 689199, 689205, 689206, 689209, 689210, 689211, 689212, 689215, 689216, 689221, 689222, 689223, 689224, 689225, 689230.

Incompatible changes

There are no known incompatible changes at this point.

Changelog

2007-08-01T21:20:57.253476Z ray

Fix problem seen with stcolor device where the get_color_mapping_procs
device proc was NULL, causing SEGV. Bug #689371.

DETAILS:

The fix was local to gdevstc.c. The other modules were changed to
add protection in case other devices (such as all of the new devices
in contrib) don't manage to change the get_color_mapping_procs from
the usual default of NULL in the device structure. Rather than
dprintf or error messages that may be supressed with #if DEBUG.
I elected to use eprintf.

Note that the get_color_mapping_procs is usually set up by gdevdflt
gx_device_fill_in_procs, but there are several cases where we don't
know what to do, so we set the gx_error_get_color_mapping_procs.

The detection in gs_fillpage will usually result in a single error
message then we return gs_error_Fatal (-100).

[src/gdevdflt.c src/gdevstc.c src/gxcmap.c src/gspaint.c]

2007-08-01T19:18:12.034589Z giles

Update release date and product name for final release.

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

2007-08-01T17:19:50.181574Z ray

Fix for gv hang, where an application sends (less than 1023 bytes)
PostScript and expects a response. AppleTalk PAP and some other
interactive viewer front ends may run into this. Bug #689237.

DETAILS:

The autosense is still sort of fragile in that we only process
PostScript immediately without waiting for the .peekstring of
1023 bytes to complete if it begins with "%!" or "%%". The
check for "%%" is needed for gv, conventionally "%!" is more
widely used. Note this really only affects applications using
gs as a process getting data from stdin and expecting immediate
action (response or other processing).

Also note that the %! or %% is only looked for as the first
two characters so that the presence of this in garbage before
an actual PDF won't cause confusion.

[lib/pdf_main.ps]

2007-08-01T04:10:13.989117Z alexcher

Fix a misleading typo in an error message: s/UseCUEColor/UseCIEColor/

[src/gdevpdfp.c]

2007-08-01T04:01:06.081994Z alexcher

Remove inappropriate PNG_CONST qualifier from a few libpng arrays, where it
adds 2nd const qualifier, which is rejected by MSVC 6. Bug 689383.

[libpng/pngtrans.c libpng/pngerror.c]

2007-07-31T14:19:45.536400Z alexcher

Use a correct name for the absolute colorimetric rendering intent. Change the
encoding of the rendering intents in the graphic state to use ICC numbers
from Table 18 (section 6.1.11) instead of the PDF order to reduce re-coding
and confusion. Bug 689377.

[src/gxistate.h lib/pdf_ops.ps src/gsstate.c src/zcolor3.c]

2007-07-31T03:31:13.074828Z giles

Update changelogs for the release candidate.

[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]

2007-07-30T20:13:56.963379Z giles

Update the libpng version in the top level makefiles to match the new 
1.2.18 source.

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

2007-05-11T17:06:15.247707Z Ralph Giles

Update the product name for release.

[src/gscdef.c]

2007-05-11T17:03:51.074953Z Ralph Giles

Update release date.

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

2007-05-11T17:02:29.404037Z Ralph Giles

Update the libpng version listed in the top-level makefiles.

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

2007-05-11T16:53:33.148016Z Ralph Giles

Install the libpng 1.2.16 source release.

[libpng]

2007-05-11T16:48:03.952583Z Ralph Giles

Move the included libpng out of the way.

[libpng]

2007-05-11T15:33:41.202626Z Ralph Giles

Correct the keyword substitution property key.

[toolbin/pscet_status.pl]

2007-05-11T13:33:33.031639Z Ralph Giles

Try again to fix the Id keyword line.

[toolbin/pscet_status.pl]

2007-05-11T09:39:41.369263Z leonardo

Fix (shadings) : Removing a dead code from radial shadings.

DETAILS : 

It's a rudiment from an antique annula-based radial shading algorithm.
R_fill_state_t was filled and never used.
This change is algorithmically equivalent.

[src/gxshade1.c]

2007-05-09T21:58:25.788526Z Ralph Giles

Covert gdevwts.c to native line endings and turn on keywork 
substitution.

Also convert a C++-style comment. It looks like this line
can actually be removed.

[src/gdevwts.c]

2007-05-09T21:51:57.598496Z Ralph Giles

Add Id lines and associated properties to some recent script additions.

[toolbin/ocheck.py toolbin/pscet_status.pl]

2007-05-09T21:47:00.539315Z Ralph Giles

Add recent new files to the documenation index.

[doc/Develop.htm src/gscicach.c src/gscicach.h]

2007-05-09T19:55:01.401845Z Alex Cherepanov

Make AcroForm rendering a non-default option because it is not yet 
fully implemented and causes raster differences. Bug 689197.

[lib/pdf_main.ps doc/Use.htm]

2007-05-09T18:45:56.177217Z Ralph Giles

Point to bugzilla instead of the old bug-report email address in the 
help text. Also remove the unused constant defining the address.

[src/imainarg.c]

2007-05-09T15:45:54.143921Z leonardo

Fix (shadings) : The decomposition limit must depend on resolution.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The old code limits the decomposition of a shading with 1 pixel.
It gives a good precision for low resolution devices,
such as display with 72dpi. However for high resolution devices the
decomposition limit may be bigger, because tinny parts are not visible.
Now we make it be dependent on the device resolution.
It speeds up the high resolution rendering with quickly varying colors.
The worker formula is :

	decomposition_limit = float2fixed(HWResolution / 72)

With 300 dpi the file "self-intersect2.ps" renders a few worse 
near the self-intersection. It may be visible when viewing the 
ppmraw output with a monitor. We think it's a reasonable tradeof
for the performance. Actually the monitor performs 
a significant zoom when viewing "actual pixels",
because the monitor's resolution is much smaller.
The quality degradation shouldn't be visible with a 300 dpi printer.

[src/gxshade4.h src/gxshade6.c]

2007-05-09T10:12:29.054433Z Till Kamppeter

Protect expression "$Id: Details8.htm 8566 2008-03-01 00:42:04Z giles $" against being replaced by SubVersion (bug #689093).

[doc/gsdoc.el]

2007-05-09T06:37:44.288003Z Marcos Woehrmann

Added entries to alias Arial to ArialMT and TimesNewRoman to TimesNewRomanPSMT.  This is useful when running on 
windows.

[lib/Fontmap.GS]

2007-05-09T03:21:39.704394Z Ralph Giles

Temporarily revert the KRGB support patch for the IJS device. There
were some build problems, and also there's a known segfault in some
situations. This will be worked on after the 8.57 release.

[src/gdevijs.c]

2007-05-08T19:47:48.994751Z Ralph Giles

Implement KRGB raster support in the IJS device. Patch from David 
Suffield.

Details:

This patch implements a separate black plane and does simple text and 
line art detection based on the drawing source. This results in cleaner 
output for IJS drivers which support it.

[src/gdevijs.c]

2007-05-08T18:26:47.239521Z Till Kamppeter

Makes ijs/ working with automake 1.10

DETAILS:

This is a pure bug fix, so lets get this into 8.57.

[ijs/autogen.sh]

2007-05-08T18:23:54.589216Z Till Kamppeter

Fixed file properties

[src/version.mak]

2007-05-08T18:13:10.044227Z Till Kamppeter

Back out everything after rev 7909

[contrib/gdevmd2k.c contrib/gdevxes.c contrib/gdevgdi.c src/configure.ac contrib/lips4 contrib/eplaser contrib/gdevhl12.c src/gdevlj56.c ijs/autogen.sh src/gdevdljm.c src/lib.mak contrib/gdevcd8.c src/gdevpx.c src/gdevl256.c contrib/contrib.mak src/gdevvglb.c src/gdevdljm.h contrib/gdevcd8.h contrib/cups src/unix-gcc.mak contrib/gdevdj9.c src/gdevpxut.c src/gdevcdj.c contrib/chp2200 contrib/gdevlx32.c contrib/gdevlx50.c contrib/gdevop4w.c src/gdevpxut.h lib/gs_init.ps src/gdevlbp8.c src/version.mak contrib/opvp contrib/gdevbjc_.c contrib/japanese contrib/gdevbjca.c src/gdevxalt.c contrib/lxm3200-tweaked src/version.mak.in contrib/gdevbjc_.h contrib/gomni.c src/contrib.mak src/devs.mak lib/gs_setpd.ps contrib/pcl3 contrib/gdevlx7.c contrib/gdevln03.c src/gdevdjet.c src/gconf.c contrib/defs.h src/gs.mak contrib/uniprint src/Makefile.in src/unix-aux.mak contrib/md2k_md5k src/unixinst.mak contrib/epson740 src/gp_unix.c]

2007-05-08T17:44:46.931200Z Till Kamppeter

Makes ijs/ working with automake 1.10

[ijs/autogen.sh]

2007-05-08T17:43:12.186735Z Till Kamppeter

Added duples support to the PCL-XL ("pxlmono"/"pxlcolor") output devices

[src/gdevpx.c src/gdevlj56.c src/gdevpxut.c src/gdevpxut.h]

2007-05-08T17:41:29.378446Z Till Kamppeter

Support for the CUPS Raster output device in the lib/*.ps files

DETAILS:

CUPS-related changes, overtaken from ESP Ghostscript:

Define option "-dNOMEDIAATTRS" to turn off the default (but
unimplementable) media selection policies for setpagedevice. This is
used by CUPS to support the standard Adobe media attributes. Without
this option the behavior of Ghostscript stays as before.

Due to the fact that it is not possible to properly implement the
selection policies from a Ghostscript driver, the default policy was
changed to "7" (impose) to avoid numerous problems with printing
within CUPS...

Bug fix:

Martin Lottermoser, author of the "pcl3" driver writes in
contrib/pcl3/doc/gs-mods.txt, section C1:

There is a bug in ghostscript's default configuration for the
undercolour removal and black generation functions. It shows up when
printing PostScript documents using the RGB colour space ("setrgbcolor" or
"sethsbcolor") on a device where the CMYK space is the native colour space;
this is the case for pcl3 if you specify "-sColourModel=CMYK". The bug
results in black being printed as a mixture of cyan, magenta, and yellow.

The bug is simply fixed by replacing the line
   { pop 0 } dup setblackgeneration setundercolorremoval
with the following line:
   {} dup setblackgeneration setundercolorremoval


[lib/gs_setpd.ps lib/gs_init.ps]

2007-05-08T17:30:26.894961Z Till Kamppeter

src/version.mak --> src/version.mak.in (part of build system patch)

[src/version.mak.in src/version.mak]

2007-05-08T17:29:31.725620Z Till Kamppeter

Build system extensions for support of CUPS Raster, OpenPrinting
Vector, X11 driver modularizationm, and for easy selection of drivers

DETAILS:

The build system has all necessary checks added for the additional
drivers (especially for CUPS Raster and OpenPrinting Vector) and has
functionality to easily select the drivers to be built in. Especially
one can also build a Ghostscript with none of the extra drivers from
the contrib/ directory by supplying the option "--disable-contrib" to
"./configure".

Other additional options are "--with-drivers" to select drivers and
"--with-fontpath" to easily add the system's font locations (call the
system's Ghostscript with "gs -h" and add the paths shown in the end
of the output),

"./configure" also auto-detects whether the X drivers can be
modularized.

For correct building of the CUPS filters the definition of the version
number was moved from src/version.mak to ./configure (or
src/configure.ac).

The build rules for Omni are removed from src/contrib.mak, as
gdevomni.c is present in the contrib/ directory. So its build rules
belong into contrib/contrib.mak.

Use "./configure --disable-contrib" to make a Ghostscript without
anything from the contrib/ directory, for example for commercially
licensed distribution.

[src/Makefile.in src/configure.ac src/contrib.mak src/unixinst.mak src/gdevlbp8.c src/version.mak]

2007-05-08T17:16:47.444481Z Till Kamppeter

Conditionals to avoid conflicts with the drivers "bjc880j", "lips2p",
"lips4", and "lips4v" in contrib/

DETAILS:

some data structures in src/gdevlbp8.c got extended for the
above-mentioned drivers. To avoid conflicts the original structures
need to be deactivated. This patch adds the needed conditionals for
that.

[src/gdevlbp8.c]

2007-05-08T16:52:11.701719Z Till Kamppeter

All third-party built-in and Uniprint drivers listed in the OpenPrinting database

DETAILS:

To avoid the users or the distribution package maintainers to patch
Ghostscript for getting support for a certain printer model this patch
contains all known (by OpenPrinting) built-in and Uniprint printer
drivers. So compiling Ghostscript with all these drivers gives a
complete Ghostscript without need of recompilation for adding support
for a printer.

Also the OpenPrinting Vector ("opvp", "oprp") and CUPS Raster output
("cups") are included, to have all the three current interfaces (the
third is the already included IJS) for modular drivers as required by
the upcoming LSB 3.2.

Notes:

Built-in printer drivers for Ghostscript are obsolete. Do not write
any new built-in drivers for Ghostscript. Use the interfaces IJS, CUPS
Raster, or OpenPrinting Vector for your new printer
drivers. Volunteers for moving these third-party drivers into
OpenPrinting Vector modules are welcome.

Do not compile the contrib/ directory for commercial-licensed
distribution of Ghostscript, the licenses of many of these drivers do
not allow this.

[contrib/japanese/doc/gs261j.txt contrib/japanese/dviprlib.h contrib/cups/pxlmono.ppd contrib/japanese/doc/gdevmjc.txt contrib/pcl3/doc/gs-pcl3.ref contrib/eplaser contrib/japanese/doc contrib/japanese/doc/gdevcd8.txt contrib/uniprint/Stc680pl.upp contrib/pcl3/eprn/mediasize.c contrib/pcl3/BUGS contrib/japanese/doc/README.gs550j contrib/pcl3/eprn/mediasize.h contrib/pcl3/ppd/gs-6.50.ppd contrib/pcl3/ppd/gs-pcl3-unspecold.ppd contrib/pcl3/src/contrib.mak-7.00.add contrib/lxm3200-tweaked/LICENSE contrib/lxm3200-tweaked/Z12-Z31-QuickSetup contrib/japanese/dmp_init.ps contrib/pcl3/eprn/pagecount.c contrib/chp2200 contrib/uniprint/Stc740p.upp contrib/gdevlx50.c contrib/lxm3200-tweaked/RELEASE_NOTES contrib/pcl3/src/pcl3opts.c contrib/pcl3/src/gdevpcl3.c contrib/pcl3/eprn/pagecount.h contrib/pcl3/src/pclsize.c contrib/pcl3/ps/margins-LetterRotated.ps contrib/gdevbjc_.c contrib/pcl3/ppd/gs-pcl3-hpdj400.ppd contrib/epson740/printerdb_rh6.0 contrib/japanese contrib/pcl3/src/pclsize.h contrib/gdevbjc_.h contrib/pcl3/ppd/gs-pcl3-hpdjportable.ppd contrib/cups/cups.mak contrib/uniprint/Stc670pl.upp contrib/cups/pxlcolor.ppd contrib/pcl3/ppd/gs-pcl3-hpdj660c.ppd contrib/pcl3 contrib/gdevlx7.c contrib/uniprint/bjc6000a1.upp contrib/pcl3/eprn/eprnrend.c.orig contrib/pcl3/ppd/gs-5.50.ppd contrib/defs.h contrib/pcl3/eprn/eprnparm.c contrib/pcl3/doc/how-to-report.txt contrib/japanese/doc/dj505j.txt contrib/japanese/gdevml6.c contrib/japanese/escp_24.src contrib/japanese/gdevlbp3.c contrib/uniprint/stc740ih.upp contrib/eplaser/gdevescv.c contrib/uniprint/Stc680p.upp contrib/uniprint/s400a1.upp contrib/epson740/upp-HowTo-to-be contrib/gdevxes.c contrib/japanese/gdevj100.c contrib/eplaser/gdevescv.h contrib/lips4/gdevlips.c contrib/japanese/doc/gdevj100.txt contrib/lips4/gdevlprn.c contrib/uniprint/Stc760pl.upp contrib/lips4/gdevlips.h contrib/pcl3/ppd/fonts.ppd contrib/uniprint/Stp870p.upp contrib/uniprint/PM820p.upp contrib/pcl3/ps/dumppdd.ps contrib/pcl3/src/zmedia2.c-6.51.diff contrib/lips4/gdevlprn.h contrib/pcl3/ppd/gs-common.ppd contrib/gdevcd8.c contrib/contrib.mak contrib/pcl3/ppd/gs-pcl3-hpdj1120c.ppd contrib/japanese/doc/cdj880.txt contrib/gdevcd8.h contrib/japanese/dmp_site.ps contrib/cups/gdevcups.c contrib/pcl3/src/contrib.mak-6.50.add contrib/japanese/doc/gdevmd2k.txt contrib/gdevdj9.c contrib/cups/pstoraster contrib/japanese/doc/gdevmag.txt contrib/lips4/gdevl4r.c contrib/lxm3200-tweaked/README contrib/lips4/gdevl4v.c.orig contrib/lips4/gdevl4v.c contrib/pcl3/ps/margins-A4Rotated.ps contrib/pcl3/ppd/gs-pcl3-hpdj540.ppd contrib/pcl3/doc/notes.bbl contrib/epson740/ps-to-printer.fpi_rh5.2 contrib/pcl3/doc/notes.tex contrib/pcl3/README contrib/pcl3/LGPL contrib/pcl3/ppd/gs-6.01.ppd contrib/chp2200/AUTHORS contrib/uniprint/PM760p.upp contrib/opvp/opvp_media.def contrib/uniprint/Stc777pl.upp contrib/uniprint/Stp720pl.upp contrib/japanese/gdevnpdl.c contrib/pcl3/src/contrib.mak-5.50.add contrib/epson740/README contrib/md2k_md5k contrib/pcl3/ps/margins-Env10Rotated.ps contrib/uniprint/PM760pl.upp contrib/uniprint/Stc670p.upp contrib/japanese/gdevmag.c contrib/cups/pstopxl contrib/japanese/gdev10v.c contrib/gdevmd2k.c contrib/cups/pstoraster.in contrib/chp2200/COPYING contrib/pcl3/ppd/gs-pcl3-hpdj510.ppd contrib/uniprint/Stc740pl.upp contrib/lips4 contrib/pcl3/src/zmedia2.c-6.01.diff contrib/gdevhl12.c contrib/pcl3/ppd/gs-pcl3-hpdj550c.ppd contrib/md2k_md5k/README.jis contrib/pcl3/ppd/catppd contrib/japanese/doc/Gdevlips.htm contrib/pcl3/ppd/gs-6.51.ppd contrib/pcl3/doc contrib/pcl3/pcl3.tar.sig contrib/cups contrib/japanese/gdevespg.c contrib/japanese/gdevalps.c contrib/pcl3/NEWS contrib/japanese/doc/gdevml6.txt contrib/gdevop4w.c contrib/pcl3/ppd/README contrib/uniprint/Stc760p.upp contrib/pcl3/eprn/eprnfs.c contrib/opvp contrib/gdevbjca.c contrib/pcl3/ppd/gs-pcl3-hpdj600.ppd contrib/gomni.c contrib/uniprint/Stp720p.upp contrib/pcl3/doc/gs-mods.txt contrib/uniprint/sipixa6.upp contrib/opvp/gdevopvp.c contrib/pcl3/src/zmedia2.c-5.50.diff contrib/pcl3/src/zmedia2.c-6.50.diff contrib/pcl3/ppd/gs-pcl3-hpdj680c.ppd contrib/pcl3/eprn/eprnrend.c contrib/pcl3/ps/margins-A4.ps contrib/pcl3/src/contrib.mak-6.01.add contrib/uniprint contrib/pcl3/src/pcl3opts-de.msg contrib/japanese/doc/djgpp.txt contrib/japanese/gdevdmpr.c contrib/japanese/doc/gdevlbp3.txt contrib/pcl3/doc/pcl3opts.html contrib/japanese/doc/gdevdmpr.txt contrib/japanese/doc/gs261j.euc contrib/chp2200/INSTALL contrib/pcl3/ppd contrib/cups/pstopxl.in contrib/pcl3/src contrib/pcl3/ppd/gs-pcl3-hpdj500c.ppd contrib/uniprint/Stc777p.upp contrib/gdevgdi.c contrib/pcl3/ps/margins-EnvDLRotated.ps contrib/japanese/gdevp201.c contrib/japanese/doc/gdevp201.txt contrib/pcl3/ppd/gs-7.00.ppd contrib/pcl3/ps/margins-Letter.ps contrib/uniprint/bjc6000b1.upp contrib/pcl3/lib/if-pcl3 contrib/pcl3/eprn contrib/opvp/opvp_common.h contrib/cups/pstoraster.convs contrib/pcl3/lib contrib/pcl3/src/pclcap.c contrib/uniprint/Stp870pl.upp contrib/pcl3/doc/gs-pcl3.1 contrib/japanese/gdevfmlbp.c contrib/pcl3/src/contrib.mak-6.51.add contrib/japanese/doc/gdevalps.txt contrib/gdevlx32.c contrib/pcl3/src/pclcap.h contrib/pcl3/src/pclgen.c contrib/pcl3/ps contrib/pcl3/src/pcl3opts-en.msg contrib/uniprint/s400b1.upp contrib/japanese/doc/gdev10v.txt contrib/japanese/gdevmjc.c contrib/epson740/printerdb_rh5.2 contrib/pcl3/ppd/gs-pcl3-hpdj500.ppd contrib/pcl3/src/pclgen.h contrib/lxm3200-tweaked contrib/pcl3/doc/pcl3opts.ref contrib/uniprint/sharp.upp contrib/japanese/gdevmjc.h contrib/pcl3/src/pclscan.c contrib/pcl3/src/zmedia2.c-7.00.diff contrib/pcl3/eprn/gdeveprn.c contrib/pcl3/ps/calign.ps contrib/pcl3/src/pclscan.h contrib/gdevln03.c contrib/pcl3/ppd/gs-pcl3-common.ppd contrib/pcl3/ppd/gs-pcl3-hpdj3xx.ppd contrib/pcl3/eprn/gdeveprn.h contrib/pcl3/lib/example.mcf contrib/pcl3/src/pclcomp.c contrib/pcl3/ppd/gs-pcl3-unspec.ppd contrib/pcl3/ps/levels-test.ps contrib/pcl3/doc/pcl3opts.1 contrib/pcl3/ppd/gs-pcl3-hpdj8xxc.ppd contrib/uniprint/PM820pl.upp contrib/japanese/gdevrpdl.c contrib/epson740 contrib/japanese/doc/gdevfmlbp.txt contrib/pcl3/lib/cups-pcl3 contrib/pcl3/doc/gs-pcl3.html contrib/japanese/gdevfmpr.c contrib/pcl3/doc/reports.txt contrib/japanese/dviprlib.c]

2007-05-08T16:33:45.043492Z Till Kamppeter

Addition of support for some older japanese-market PCL Printers

DETAILS:

Adds the output devices:

dj505j: HP DeskJet 505J
ljet4pjl, lj4dithp: HP LaserJet 4V/4LJ
picty180: NEC PICTY180 (PC-PR101J/180)

This patch was part of ESP Ghostscript for several years and did not
cause any problems there.

[src/gdevdjet.c src/gdevdljm.c src/gdevdljm.h src/contrib.mak src/gdevcdj.c]

2007-05-08T16:26:19.557957Z Till Kamppeter

Modularization of the X11 output devices into dynamic libraries

DETAILS:

This patch allows to compile Ghostscript in a way that the X11 screen
display output devices can be seperated into a dynamically linkable
library, so that these devices can be put in a separate binary package
in Linux distributions. This way the distributions can be installed
with GhostScript and without the X libraries, which is important for
headless print servers.

This feature is only available for Unix with GCC (selected by the
Makefile).

Ghostscript will be compiled without built-in X11 support and with an
extra X11.so file containing the X11 support. One can install
Ghostscript with or without X11.so then, it will always work. It
detects the presence of X11.so automatically and makes the X11 output
devises available if X11.so is present (see "gs -h").

Small disadvantage: With modularized X11 support the "x11" device will
not stay the default one. "bbox" will be the default then. Use "gs
-sDEVICE=x11 ..." then.

This patch is used since mid 2001 in ESP Ghostscript and has never
caused any problems or bugs related to the modularization.

[src/gconf.c src/lib.mak src/gdevl256.c src/gdevxalt.c src/gs.mak src/gdevvglb.c src/Makefile.in src/unix-gcc.mak src/unix-aux.mak src/devs.mak src/unixinst.mak src/gp_unix.c]

2007-05-07T21:53:44.031582Z Ralph Giles

Remove unneeded header references to the interpreter. This file is part 
of the graphics library. Also clean up the dependencies in the makefile.

[src/lib.mak src/gsncdummy.c src/gsncdummy.h]

2007-05-07T21:31:43.787169Z leonardo

Fix (shadings) : Implement a color index cache.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

This change is algorithmically equivalent.
The old code redundantly converts client colors
to device colors. This patch implements a cache for 
the conversion in the new module gscicach.h .
It works for contone devices only.

For the test case it reduces the number of color conversions 
in 20+ times. However a rocket speeding up is not obtained.

This patch is an experimental one.
We have got an alternative approach,
which is more complicated but works for any device.
The alternative is to pass converted colors through the decomposition recursion.
We commit this now mainly for archiving purpose.
To disable it replace the call to gs_color_index_cache_create with NULL.

[src/gxshade4.h src/lib.mak src/gscicach.c src/gscicach.h src/gxshade6.c]

2007-05-07T19:45:03.500615Z Alex Cherepanov

Trap input errors when reading PDF content streams and issue a warning.
Acrobat Reader silently ignores such errors. Bug 689026, customer 850.

[lib/pdf_base.ps]

2007-05-07T17:42:00.368595Z Timothy Osborn

Fixing a bounding box pixel rounding issue in pdf14_begin_transparency_group.

DETAILS:

The transparency group bounding box calculation was using a different rounding
method than is being used for images. This caused the problem file in bug
report #688543 to display unwanted gray vertical lines to the left and right of
a transparency group. This fix is to use the same "Center-of-pixel Filling Rule"
that is applied to images to avoid this type of problem.

[src/gdevp14.c]

2007-05-07T10:33:00.607664Z leonardo

Fix (functions) : Improving the documentation for make_interpolation_tensor.

[src/gsfunc0.c]

2007-05-07T08:48:12.997512Z leonardo

Documenting how to profile Ghostscript with MSVC6 (continued).

DETAILS :

Fixing a misprint.

It's still a preliminary edition.
A documentation specialist should improve it.

[doc/Develop.htm]

2007-05-07T08:10:13.225741Z leonardo

Documenting how to profile Ghostscript with MSVC6.

DETAILS :

It's a preliminary edition.
A documentation specialist should improve it.

[doc/Develop.htm]

2007-05-05T19:20:34.952465Z Alex Cherepanov

Undefine /Length in the stream dictionary when the value is incorrect to
distinguish streams of 0 and unknown length. Old code re-defined incorrect
length as 0. Bug 689208, customer 770.

[lib/pdf_base.ps toolbin/pdf_info.ps]

2007-05-04T21:23:03.556389Z Timothy Osborn

Minor change to make the source code more accurate.

DETAILS:

A parameter was being moved into the pdf buffer structure under a comment that
indicated the parameter wasn't being used. During my testing for bug #688543
I discovered the parameter was being used. Therefore I moved the line to be
above the comment to better reflect reality.

[src/gdevp14.c]

2007-05-04T04:18:47.247543Z Alex Cherepanov

Move allocation of a large structure from the stack to the heap to avoid
C stack overflow on Windows NT that allocates 12K less of the stack
space than requested by the application. Bug 688998.

[src/gdevpdfp.c lib/pdf_draw.ps]

2007-05-04T00:15:08.895805Z Ray Johnston

Previous version was too aggresive with image interpolation to
1-bit per component (bpc) devices. Now we downsample using the
'special' image filter that prevents dropout on 1bpc devices and
use the "Mitchell" image filter for upscaling to those devices
when the scale factor (in X and Y) is at least 4:1. This prevents
upscaling on 1:1 images as well as near 1:1 where the results
would probably be poor quality.

[src/gxiscale.c]

2007-05-03T15:13:26.865969Z Alex Cherepanov

Avoid a Valgrind warning about ovelapping arguments in memcpy().
Don't assign a structure to itself.

[src/gxhintn.c]

2007-05-02T21:20:41.869528Z leonardo

Fix (shadings) : Extra subdivision of axial and radial shadings.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The old code wrongly mapped shading function arguments
fro axial and radial shadings. It caused an
extra subdivision by U when the color function requires
to subdivide by V.

[src/gxshade4.h src/gxshade1.c src/gxshade6.c]

2007-05-02T19:12:52.030634Z leonardo

Fix (shadings) : The color space linearity check didn't account the color precision.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

Since the color space represents color with precision 1/255,
the shadings code must not try to obtain a better precision.
This patch accounts the color quantum in is_dc_nearly_linear.

[src/gscspace.c]

2007-05-02T18:18:29.002307Z leonardo

Fix (shadings) : Always adjust smoothness according to the minimal color precision.

DETAILS : 

Since the color space represents color with precision 1/255,
the shadings code must not try to obtain a better precision.
However the old code sometimes used the unadjusted value.
This patch defines an uniform way to access the adjusted smoothness.

[src/gxshade6.c]

2007-05-02T12:33:09.355227Z leonardo

Fix (shadings) : Early skip parts that fall outside the clipping box.

DETAILS : 

This improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The patch implements a bbox intersection code pattern to
several decomposition functions. It speeds up those shadings, 
in which the shading area is significantly larger 
than the clipping box.

Rather it speeds up the test case,
it needs a further improvement for shading functions.
A small noize (being lesser than shading smoothness) to be ignored
while a function monotonity check.

Minor changes :
1. In some functions the old bbox intersection code 
   becomes more uniform.
2. bbox_of_points moved up.

[src/gxshade6.c]

2007-05-01T23:55:23.394938Z Alex Cherepanov

Pacify Valgrind. Initialize an uninitialized variable that is used in
conditional expression but doesn't affect the end result. Bug 688910.

[toolbin/vg_bugs.supp toolbin/vg_okay.supp src/gxipixel.c]

2007-05-01T22:51:27.306035Z Alex Cherepanov

Pacify Valgrind. Initialize an uninitialized variable that is used in
calculations but doesn't affect the end result in this case.

[src/gximono.c]

2007-05-01T20:52:58.020607Z leonardo

Fix (shadings) : wedge_vertex_list_elem_buffer overflow.

DETAILS : 

Bug 689189 "PDF fails with /unregistered in --shfill--".

The estimation for wedge_vertex_list_elem_count_max
assumed a division of 1 side per level.
However triangle_by_4 divides 3 sides at once. 
Now we increase the buffer size according to that,
see comment in code for details.
It increases the buffer size from 110K to 220K.

We tried to implement a new function triangle_by_2
to keep the old buffer size,
triangle_by_2 must be the topmost worker for fill_triangle.
This function appears almost same as triangle_by_4,
except it divides the biggest side only.
We discontinued this effort because
we don't like the code duplication,
which only saves 100K of RAM,
and gives lots of minor raster differences.

This patch fixes the failure,
but the performance with the test case appears unsatisfactory.
It sould be a subject of a separate patch.

[src/gxshade6.c]

2007-04-30T19:08:16.584376Z Ray Johnston

Fix typo in 7887. Local regression testing missed this -- was seen in 
nightly run. This was part of the "optimization" in the 4 component
source color case.

[src/gxiscale.c]

2007-04-29T00:34:16.918957Z Ray Johnston

Fix structure problem (this could have caused out-of-bounds access).

[src/gdevwts.c]

2007-04-28T22:17:19.957831Z Ray Johnston

Implementation of a new non-linear image filter that prevents dropout
when images are scaled down to a 1-bit per component device. Bugs
689147 for customer 531 and image quality problem for customer 780.
This filter is used whenever /Interpolate == true (or -dDOINTERPOLATE
command line option is used) and the image is being scaled down on
a 1-bit per component device.

Interpolation throughput of gray or cmyk images is also improved by
a factor of about 2:1 (depending on the data content) even when
the standard Mitchell filter is used. The performance improvement
when using this new filter is even higher since the filter itself
uses less CPU time.

DETAILS:

This filter uses the darkest of the image pixels that are within a
device pixel, rather than the default behaviour which uses the PS
'center of pixel' rule (i.e., whichever image pixel covers the
center of the device pixel is used to color the device pixel).

The center of pixel rule can result in missing narrow black
lines or single dots in patterns when a source image is scaled down.

One side effect of this filter is that narrow white features or
small white areas in patterns can be lost, effectively darkening
the result. For now the customers needing this are not concerned
with small white-on-black areas becoming solid black. Many real
world printers tend to do this anyway due to 'dot gain'.

If we encounter the need for preserving small white areas, we
can change the filter somewhat to prevent this effect.

[src/sidscale.h src/gxdda.h src/lib.mak src/siinterp.c src/gxiscale.c doc/Develop.htm src/sisparam.h src/sidscale.c]

2007-04-28T21:55:23.077958Z Ray Johnston

Add missing comment (brief description line).

[src/gdevwts.c]

2007-04-26T23:46:30.659099Z Ray Johnston

Fix regression tools to remove dependency on PYTHONPATH since
the environment variable method isn't very convenient for those
running local regressions and add those python files from
peeves:/home/regression/python to this directory (under svn).

[toolbin/tests/README toolbin/tests/run_nightly toolbin/tests/myoptparse.py toolbin/tests/main.py]

2007-04-25T20:00:00.200965Z Timothy Osborn

Fix for slow PDF performance reported in bug report #688830.

DETAILS:

The function read_create_compositor was calling top_up_cbuf every time it was
called. For some jobs this caused a large number of relatively large memory
movements in the memmove call of top_up_cbuf. By only calling top_up_buf
when actually necessary, the problem job took approximately 1/2 the time it
did previously.

[src/gstparam.h src/gxclrast.c src/gdevp14.c]

2007-04-25T05:50:33.064031Z leonardo

Fix (TT fonts) : Allow sfnts string breaks inside TT tables.

DETAILS : 

The old code is based on an antique Adobe constraint
"the strings must begin at TrueType table boundaries, or
at individual glyph boundaries within the glyf table".
In novadays many of 3d party software do not follow it.
We're dropping this constraint from GS code
because we tired fixing user problems with it. 

This change is algorithnically equivalent for fonts,
which follow the constraint.

This change replaces ACCESS macro 
(sll 3 definitions through Ghostscript sources)
with a new macro READ_SFNTS, which copies data to a local buffer,
and checks the length of the buffer.
We believe that the performance flaw is not sensible
and it worths the improved stability.
Correspondingly local pointer variables,
which were used with ACCESS macro,
are replaced with local buffers.
Sorry for keeping old names inspite of the popular convention -
we do not want too many changes in a single patch 
to simplify its review.

In some places the new data copying could be eliminated because
the old code already copies the data. 
We do not optimize it now,
becauase we want to simplify the patch review.
We believe that modern compilers can optimize it.

The new code still have few points,
which are based on the antique constraint.
One example is names in name table.
Will do further improvements someday.
The new code signals an error if
the constraint is used and not satisfied
(the old code doesn't with unpredictable result).

[src/gxfcopy.c src/gxfont42.h src/gsfcid2.c src/gstype42.c src/gdevpsft.c]

2007-04-25T03:28:32.022759Z leonardo

Fix (TT fonts) : Allow 'loca' elements to be broken into parts with 'sfnts' strings.

DETAILS : 

Bug 689038 "GS doesn't display T42 font correctly.".

The Type 42 specification reads that 'sfnts' strings must not break TT tables.
Exactly, "the strings must begin at TrueType table boundaries, or
at individual glyph boundaries within the glyf table".
However the test case is another example when a 3d party software 
"LilyPond 2.11.10" doesn't follow this constraint. 
We prefer to handle such font data, 
because we have not enough control for fonts in wild.

The new function gs_type42_read_data is factored out
from the old code of default_get_outline.
Due to that we believe that the change to default_get_outline
is algorithmically equivalent.

This patch does not propagate error codes from
gs_type42_read_data in get_glyph_offset. 
This is done intentionally for keeping the patch simpler, 
and for keeping the behavior closer to the old one. 
It simplifies the regression testing.
Propagating the error codes should be a next step.

[src/gstype42.c]

2007-04-24T16:21:21.866752Z leonardo

Fix (TT fonts) : Could write past len_glyphs array.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Thanks to SaGS for noticing this problem.

[src/gstype42.c]

2007-04-24T00:16:14.934585Z leonardo

Fix (TT fonts) : Do not consider overlapped glyps while computing glyph length.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Thanks to SaGS for idea to drop an old hewristic
after a *stable* sorting is applied.
See comment in code.

[src/gstype42.c]

2007-04-23T23:59:01.979981Z Alex Cherepanov

Partly implement AcroForm feature: all fields that provire appearance
streams and text fields with variable text. Bug 687498.

DETAILS:
Although the sample file renders identically to Adobe Acrobat, many things
are not yet coded.
- other types of annotations without appearance streams
- XML formatted text
- multi-line text
- combed text
- right-aligned or centered text with non-0 word and character spacing.

[lib/pdf_main.ps lib/pdf_draw.ps lib/pdf_ops.ps]

2007-04-23T21:46:19.686175Z leonardo

Fix (TT fonts) : A faster computation of glyph lengthes.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Thanks to SaGS for idea to apply a *stable* sorting algorithm
for computing len_glyphs. See comment in code.

[src/gstype42.c]

2007-04-23T19:31:20.353885Z Henry Stiles

Margin adjustments courtesy of jbrown@cs.ucsd.edu.  We have no way of
testing this change since we do not have a Laserjet II.  Bug #688054.

[src/gdevdjet.c]

2007-04-23T18:04:55.781264Z leonardo

Fix (p*mraw devices) : Removing an incorrect debug printing (continued 2).

DETAILS : 

See comment in code.

[src/gdevpbm.c]

2007-04-23T17:38:16.893357Z leonardo

Fix : Provide alternative char codes in a CIDDecoding resource (continued).

DETAILS : 

Removing an unused variable.

[src/zcid.c]

2007-04-23T13:27:47.091654Z leonardo

Fix : Provide alternative char codes in a CIDDecoding resource.

DETAILS : 

Bug 689168 "Wrong Symbol displayed from MS-PGothic".
See the documentation change.

Note : FAPI implemented this feature with Decoding resource a long ago,
but it was not documented in Language.htm .

The old documentation about CIDDecoding in Language.htm appears incorrect.
The dictionary values were not strings.
They were arrays of integers.

[lib/gs_ciddc.ps doc/Language.htm src/zcid.c]

2007-04-23T06:42:08.584860Z leonardo

Fix (p*mraw devices) : Removing an incorrect debug printing (continued).

DETAILS : 

Revision 7869 fails with any PDF file.
Fixing it now.
See comment in code.

[src/gdevpbm.c]

2007-04-22T22:00:22.158968Z Alex Cherepanov

Fix MSVC 7 warnings about unused variables and unreferenced labels.

[src/zalg.c]

2007-04-22T20:25:22.439569Z leonardo

Implementing high level patterns, step 10.

DETAILS : 

gx_pattern_tile_is_clist crashed with empty tile.
Debugged with CET 09-34.PS .

[src/gxpcmap.c]

2007-04-22T20:19:02.249842Z leonardo

Fix (p*mraw devices) : Removing an incorrect debug printing.

DETAILS : 

Since revision 7795 the debug build of the old code prints "0 strings:" 
to stderr when interpreting any PDF file.
The release code doesn't do that. This printing is not controlled by any option.
Besides that, if a device parameter OutputIntent is specified,
the debug printing code accesses string parts by constant indices 
with no checking the string length, so it causes a potential crash.

Removing this code portion now because (1) we believe that
the debug and release build must generate same stderr by default,
and (2) we need a stable code with no dependence on the OutputIntent value.

Since Use.htm doesn't specify an useful -Z option to control this printing,
we believe that the device must implement anothe device parameter to control it.

[src/gdevpbm.c]

2007-04-22T17:55:56.827285Z leonardo

Implementing the PS operator .sort in C language.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Patch from SaGS.

The old PS implementation of lib\gs_init.ps::.sort uses a 
slow O(n^2) algorithm. Plus, array indexing operations are lenghty 
in PostScript. It seems to me this was initially written to sort 
the very few "%disk*%" names, so speed was irrelevant. Now, it is 
used to sort 'loca' tables (in some damaged TTFs). 

The patch implements the heap sort algorithm from the programmer's 
bible. This algorithm is guaranteed to be O(n log n) in the worst 
case. Variable's names are those from Knuth's book. Labels denote the 
algorithm's steps.

The implementation retains the maximum generality for the predicate, 
i.e. it can be anything that is able to compare 2 objects on the 
o-stack and leave a bool in their place. The predicate is not 
restricted to what's available to a FunctionType 4 function.

[src/zalg.c src/int.mak lib/gs_init.ps]

2007-04-22T11:50:25.863066Z leonardo

Fix (TT fonts) : A faster seeking through 'sfnts' array.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Patch from SaGS.

src\zfont42.c::string_array_access_proc() is now caches
the string index used last, and starts the next search from there. 
This info in stored together with the ref to 'sfnts', and 
consists of index of the string (.mru_sfnts_index) and total number 
of data bytes that precede this string (.mru_sfnts_pos).

If passing NULL for the 2 new parameters, string_array_access_proc() 
beheaves at it did before and starts the search from the beginning.

Otherwise it does one of:
- search forward from the mru string (possibly returning data from 
  it, without actually skipping anything), if new position >= 
  current's string starting position;
- search backwards from current string if requested position is in 
  the 2nd half of the fragment before the current string;
- search forward from the beginning if in 1st half.

The old garbager descriptor for gs_type42_data_s assumed
'ref' fields only. Now it is changed to account new fields,
which are not 'ref'.

[src/zfcid1.c src/zbfont.c src/ifont.h src/zfont42.c src/ifont42.h]

2007-04-21T02:33:44.148360Z Alex Cherepanov

Fix all warnings generated by MSVC 6 & 7 except the warnings matching
"C4018|C4244|jbig2dec|jasper" regular expression.

[src/dwimg.h src/lib.mak src/iscannum.c src/windows_.h src/gdevwpr2.c src/gp_mswin.c src/sfxstdio.c src/gdevpdfe.c src/gp_msprn.c src/dwdll.c ijs/unistd_.h src/dwsetup.cpp]

2007-04-19T15:04:51.253884Z Thomas DiGennaro

Integrate make_testdb.py with new environment,
including testing.cfg and python procedures in other scripts.
make_testdb.py supports creation of a testdata.db with checksums
generated by running gs build in HEAD/ and installed in gshead/.

[toolbin/tests/README toolbin/tests/make_testdb toolbin/tests/make_testdb.py]

2007-04-18T00:23:49.202468Z Alex Cherepanov

Fix a few warnings generated by GCC 4.1.2.

[src/gxttfb.c src/gdevpbm.c src/gdevpsdi.c src/gspath1.c src/zchar.c src/ttinterp.c]

2007-04-17T18:39:39.936412Z leonardo

Fix : A bug in device_cpath_accum_enum_ptrs.

DETAILS : 

Bug 689177 Another heap corruption (issue 2).

gx_device_clip::list.head was never enumerated.
The bug was intriduced in rev 7120 (5 months, 3 weeks ago) by leonardo.

[src/gxacpath.c]

2007-04-17T17:57:43.141720Z Ralph Giles

Remove the inadvertently added instance of testing.cfg; it clobbers 
local configs. Changes should instead be made to testing.cfg.example, 
with the expectation that users will copy that to testing.cfg and
edit to suit.

[toolbin/tests/testing.cfg]

2007-04-17T14:28:46.266428Z leonardo

Implementing high level patterns, step 9.

DETAILS : 

This fixes the bug 688396, step 9
It switches on the clist-based implementation of patterns.
We arbitrary set the 1Mb threshold for large patterns.
The threshold is not perfect - see (3) below.

Rather it fixes the bug, we would like to do further improvements someday :

1. Large uncolored patterns are not implemented. Need a color substitution forwarding device.
2. Get rid of non_gc_memory in the pattern clist.
3. For CET tests the choice of image-based or clist-based representation must be smarter than 
   MAX_BITMAP_PATTERN_SIZE threshold. While rendering a small pattern to memory device,
   check whether PaintProc applies another apttern. If so, discard the image and
   convert to the clist representation with running PaintProc at second time.
   Need a special forwarding device for the pattern color detection.
4. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of imagemask inside a pattern stream with ppmraw -r600 245-13.ps, 269-01.ps
5. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of image inside a pattern stream with pkmraw -r600 035-07.ps
6. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a minor coordinate difference (+-1 pixel) appeared with pkmraw -r600 244-01.ps
7. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   the rendeting is slow with pkmraw -r600 245-13.ps, 269-01.ps 
8. (time optimization) clist_init is called twice when creating a clist-based pattern.
9. (time optimization) While a clist playback for a large pattern cell,
   set the bbox for the current clipping path for the clist device,
   to allow a faster skipping of elements outside the bbox.
10. (space optimization) Store pattern stream in the pattern cache memory; properly 
   account the stream size while computing the cache memory usage.
11. (space optimization, 32K per pattern) Purge and free clist buffer 
   (which includes a tile cache) when a clist-based pattern is not active
   between reading and writing. Why the tile cace is a property of a clist object ?
   We would like to have a single global tile cache.

[src/gxpcmap.c]

2007-04-17T14:09:50.996301Z leonardo

Implementing high level patterns, step 8.

DETAILS : 

This is a preparation for fixing the bug 688396, step 8

This change is algorithmically equivalent :
the new behavior is temporarily disabled with 
MAX_BITMAP_PATTERN_SIZE macro.

The revision 7856 appears incorrect in the part 
"Disables tile cache for clist-based patterns.".
As a consequence, the revision 7855 appears incorrect in the part 
"2. Releases the clist buffer when the clist writer completes with a pattern stream.".

This patch fixes that.
It allocates a half of 32K buffer for clist writer stream,
and another half for tile cache.

When building with MAX_BITMAP_PATTERN_SIZE 0,
the clist-based pattern code pased the testing with 
ppmraw -r600 comparefiles 
and pkmraw -r600 comparefiles. 
Rather this testing detected few problems,
we believe that they're not important for the bug 688396.

This code needs further improvements :
1. Large uncolored patterns are not implemented. Need a color substitution forwarding device.
2. Get rid of non_gc_memory in the pattern clist.
3. For CET tests the choice of image-based or clist-based representation must be smarter than 
   MAX_BITMAP_PATTERN_SIZE threshold. While rendering a small pattern to memory device,
   check whether PaintProc applies another apttern. If so, discard the image and
   convert to the clist representation with running PaintProc at second time.
   Need a special forwarding device for the pattern color detection.
4. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of imagemask inside a pattern stream with ppmraw -r600 245-13.ps, 269-01.ps
5. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of image inside a pattern stream with pkmraw -r600 035-07.ps
6. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a minor coordinate difference (+-1 pixel) appeared with pkmraw -r600 244-01.ps
7. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   the rendeting is slow with pkmraw -r600 245-13.ps, 269-01.ps 
8. (time optimization) clist_init is called twice when creating a clist-based pattern.
9. (space optimization) Store pattern stream in the pattern cache memory; properly 
   account the stream size while computing the cache memory usage.
10. (space optimization, 32K per pattern) Purge and free clist buffer 
   (which includes a tile cache) when a clist-based pattern is not active
   between reading and writing. Why the tile cace is a property of a clist object ?
   We would like to have a single global tile cache.

[src/gxclist.c src/gxclbits.c src/gxpcmap.c]

2007-04-17T06:55:36.784240Z leonardo

Implementing high level patterns, step 7.

DETAILS : 

This is a preparation for fixing the bug 688396, step 7.

This patch fixes the Bug 689176  
"Infinite loop in gxpcmap.c ln 680.",
which was introduced with revision 7853
In gx_pattern_cache_add_entry mbits was reset
before revision 7853 when "the pattern completely fills its box",
and it was not after the revision 7853.
Thus the revision 7853 appears not algorithmically equivalent
rathen than expected.

This change restores the correct behavior,
and improves gx_pattern_cache_free_entry
for an easier monitoring of a pattern cell memory size
with a C debugger.

This code needs further improvements :
1. Large uncolored patterns are not implemented.
2. Get rid of non_gc_memory in the pattern clist writer.
3. clist_init is called twice when creating a clist-based pattern.

[src/gxpcmap.c]

2007-04-17T00:25:38.792981Z Timothy Osborn

This is a patch for bug report #689171.

DETAILS:
With this fix, DeviceN colors with a DeviceCMYK base color, will be treated as
DeviceCMYK in regards to overprint.

[src/gscdevn.c]

2007-04-17T00:02:10.771224Z leonardo

Fix : gs_copydevice2 crashed on error.

DETAILS : 

This problem has been occasionally detected while working on large patterns.
If an error happens in finish_copydevice, the function gs_copydevices
first closes the device copy, then releases its stype.
However a device usually provides a finalization method,
which releases stype automatically. Thus it has been released twice,
causing a crash in gs_free_object.

[src/gsdevice.c]

2007-04-16T23:55:59.056841Z leonardo

Implementing high level patterns, step 6.

DETAILS : 

This is a preparation for fixing the bug 688396, step 6.

This change is algorithmically equivalent :
the new behavior is temporarily disabled with 
MAX_BITMAP_PATTERN_SIZE macro.

This patch :
1. Implements the memory cleanup when a clist-based pattern cache entry purges.
2. Disables tile cache for clist-based patterns.
3. Disables the processing of uncolored patterns as large patterns.

This code needs improvements :
2. Large uncolored patterns are not implemented.
3. Get rid of non_gc_memory in the pattern clist writer.

[src/gxclist.c src/gxpcmap.c]

2007-04-16T18:53:12.628313Z leonardo

Implementing high level patterns, step 5.

DETAILS : 

This is a preparation for fixing the bug 688396, step 5.

This change is algorithmically equivalent :
the new behavior is temporarily disabled with 
MAX_BITMAP_PATTERN_SIZE macro.

This patch :
1. Implements the tiling.
2. Releases the clist buffer when the clist writer completes with a pattern stream.
3. Cleans warnings from Cygwin/gcc build.
4. Fixes a compilation error in gxpageq.c .

This code needs improvements :
1. The memory cleanup is not done when the clist-based pattern cache entry purges.
2. Large uncolored patterns work as colored (not tested yet).
3. Get rid of non_gc_memory in the pattern clist writer.

[src/gsptype1.c src/gxpageq.c src/lib.mak src/gxpcmap.c src/gsptype1.h src/gxpcolor.h src/gxfill.c src/gxp1fill.c]

2007-04-16T14:45:42.497063Z Thomas DiGennaro

Checkin the work on regression, search, testfiles.  Mostly Python scripts.
See README files for documentation of use and structure.

[toolbin/tests/dump_checksum.py toolbin/python toolbin/tests/gscheck_testfiles.py toolbin/tests/dump_checksum_plus.py toolbin/tests/update_baseline toolbin/tests/check_source.py toolbin/tests/gssum.py toolbin/tests/gscheck_all.py toolbin/tests/dump_checksum_raw.py toolbin/tests/find_unique_file.py toolbin/tests/rasterdb.py toolbin/tests/gscheck_fuzzypdf.py toolbin/search/README toolbin/testfiles toolbin/search toolbin/tests/get_baselines toolbin/tests/build_revision.py toolbin/tests/run_regression toolbin/tests/compare_checksumdb.py toolbin/tests/gsconf.py toolbin/tests/testdiff toolbin/tests/dump_testdb toolbin/tests/gsvalidate.py toolbin/tests/update_baseline.py toolbin/tests/make_baselinedb.py toolbin/tests/gscheck_raster.py toolbin/tests/update_pdfbaseline toolbin/tests/gsparamsets.py toolbin/tests/validate.py toolbin/tests/gstestutils.py toolbin/tests/compare_checksums.py toolbin/tests/regen_filelist.py toolbin/tests/run_nightly.py toolbin/tests/regen_baseline.py toolbin/tests/gstestgs.py toolbin/tests/run_regression.py toolbin/tests/get_baselines.py toolbin/tests/testdiff.py toolbin/tests/updatelistpdf.py toolbin/tests/gscheck_pdfwrite.py toolbin/tests/updatelist.py toolbin/tests/run_series.py toolbin/tests/get_baseline_log.py toolbin/tests/collate.py toolbin/tests/testing.cfg]

2007-04-16T11:02:19.661421Z leonardo

Implementing high level patterns, step 4.

DETAILS : 

This is a preparation for fixing the bug 688396, step 4.

This change is algorithmically equivalent :
the new behavior is temporarily disabled with 
MAX_BITMAP_PATTERN_SIZE macro.

The patch implements patterns with clist.
The choice between the old and the new implementation
is being controlled with MAX_BITMAP_PATTERN_SIZE macro.
When the pattern tile size is bigger, it writes the pattern
command stream into a clist object, which then
is stored into the pattern cache.
The pattern instantiation is done with the clist playback.

This code needs improvements :
1. It does not perform the tiling. Just renders a single instance of the pattern cell.
2. The memory cleanup is not done when the pattern cache entry purges.
3. Uncolored patterns work as colored.
4. Need to optimize with releaseing the clist buffer when
   the pattern clist writer completes.
5. Get rid of non_gc_memory in the pattern clist writer.

We commit this patch now because we need to merge 
data structures with the "band_complexity_array patch" (see rev 7847).

[src/gxclmem.c src/lib.mak src/gxclist.c src/gxpcmap.c src/gxcldev.h src/gxclmem.h src/gxclist.h src/gxpcolor.h src/gxp1fill.c src/zpcolor.c src/gxclread.c]

2007-04-16T02:50:57.803705Z Alex Cherepanov

Use right capitalization for compiled resources: s/Procset/ProcSet/

[src/openvms.mak src/int.mak src/Makefile.in]

2007-04-16T02:26:14.232909Z Alex Cherepanov

Scan numbers in the range of 2147483648..4294967295 in PDF Encrypt dictionary
as unsigned integers for compatibility with Acrobat Reader.
Bug 689010, customer 870.

[lib/pdf_main.ps src/iscan.c src/iscannum.c src/int.mak src/iscan.h src/iscannum.h src/ztoken.c]

2007-04-15T07:01:59.507361Z Henry Stiles

This fix is associated with closed bug 689139 and was not checked in
when that bug was closed due to a bookkeeping mistake.  It adds
attributes needed to parse the pxl color treatment operator.  There is
no implementation associated with these new attributes so no change is
expected.

[src/gdevpxen.h]

2007-04-15T06:38:02.809649Z Henry Stiles

The paper size was hard coded to A4 instead of using the paper size in the
printer device state.  Thanks to Leif Harcke for the patch.  The HP
and Canon color printer drivers are not tested so there are no
expected regression differences.

[src/gdevcdj.c]

2007-04-15T05:42:43.102974Z Henry Stiles

The range of runcode32 was not correct.  The specification says 3
(not 2) should be added to the run length.  See the JBIG2 spec, Table
29 in section 7.4.3.1.7 (Symbol ID Huffman table decoding).  Fixes
688009 for customer 670.

[jbig2dec/jbig2_text.c]

2007-04-14T14:08:04.439060Z Timothy Osborn

Fix for the band_complexity_array overflow issue. First reported in bug
report #689165. Also encountered by me when running the test file for bug
report #688830.

DETAILS:
The band_complexity_array array of a clist reader device was being statically
allocated with 100 elements. As the requirement is 1 element per band,
jobs requiring more than 100 bands could cause an abnormal termination
of ghostscript or some other failure. The array is now allocated dynamically
with 1 element per band.

[src/lib.mak src/gxclist.c src/gxcldev.h src/gxclist.h src/gdevprn.c src/gxclread.c]

2007-04-11T18:21:07.628832Z Timothy Osborn

Adding src/gsncdummy.[ch] and src/zncdummy.c to the Color Mapping section of Develop.htm

[doc/Develop.htm]

2007-04-11T18:15:35.603892Z Timothy Osborn

Adding svn keywords

[src/gsncdummy.h]

2007-04-11T18:08:02.032998Z Timothy Osborn

Adding svn keywords

[src/gsncdummy.c src/zncdummy.c src/gsncdummy.h]

2007-04-11T15:25:52.638692Z Timothy Osborn

svn newbie mistake. Did not mean to grab the lib folder items.*

[lib/pdf_main.ps lib/pdf_draw.ps lib/pdf_ops.ps lib/pdfopt.ps]

2007-04-11T15:20:44.560137Z Timothy Osborn

gsncdemo.* are now named gsncdummy.*

[lib/pdf_main.ps src/gsncdemo.c lib/pdf_draw.ps lib/pdf_ops.ps lib/pdfopt.ps]

2007-04-10T17:13:41.025532Z leonardo

Implementing high level patterns, step 3.

DETAILS : 

This is a preparation for fixing the bug 688396, step 3.
This change is algorithmically equivalent.
It encapsulates the initialization of gx_device_pattern_accum fields 
inside gx_pattern_accum_alloc, so that its clients must not deal
with a specific type of a pattern accumulation device.

Note: the 2 previous steps has a different title than
"Implementing high level patterns". 
They to be renamed.

[src/gxpcmap.c src/gxpcolor.h src/zpcolor.c]

2007-04-10T06:54:36.984146Z leonardo

Make the memory clist implementation to build always.

DETAILS : 

This is a preparation for fixing the bug 688396, step 2.
The memory clist implementation now builds unconditionally,
because it will be used for large patterns.
The file clist implementation builds if and only if it is requested with 
BAND_LIST_STORAGE=file .
See comment added into lib.mak .
clist_init_io_procs implements the choice.

Minor changes : io_procs are made const.
clist_io_procs_file, clist_io_procs_memory, allocateWithReserve are made local.

[src/gxclmem.c src/lib.mak src/gxclfile.c src/gxclist.c src/gxband.h src/gxclread.c src/gxclio.h]

2007-04-09T20:50:20.646460Z Alex Cherepanov

Interpret PDF PageLabels dictionary and include the labels in %%Page comments
in the PS file. Thanks to Jason McCarty for the patch. Bug 688071.

[lib/pdf2dsc.ps]

2007-04-09T08:54:30.839959Z leonardo

Implementing clist i/o virtual functions.

DETAILS : 

This is a preparation for fixing the bug 688396.
This change is algorithmically equivalent.

The old code defines macros for substituting
memfile_* procs to clist_* procs when 
the makefile option BAND_LIST_STORAGE is set to 'memory'.
Instead that, the new code defines a new structure clist_io_procs_t,
stores the procs into it, and chooses 
an implementation by the module initialization mechanizm.
The new function clist_init_io_procs works for that.

We would like to define the procs as virtual methods
of *clist_file_ptr, but it needs to change the logics
of clist_fopen, clist_fclose with allocating an
auxiliary structure. We would like to make this improvement 
as a separate patch in order to simplify the
regression testing and debugging.

[src/gxclmem.c src/gxpageq.c src/lib.mak src/gxclfile.c src/gxclist.c src/gxclmem.h src/gxpageq.h src/gxclist.h src/gdevprn.c src/gdevprna.c src/gxband.h src/gxclread.c src/gxclio.h src/gxclpage.c src/gxclutil.c]

2007-04-09T03:18:38.528054Z Alex Cherepanov

Remove unused static rendering procedures for 16-bit samples identical to the
corresponding 12-bit procedures. Fix bug 687399.

[src/gxi16bit.c]

2007-04-08T18:45:58.681482Z Alex Cherepanov

Make annotation handler more robust. Ignore annotations without /Subtype
entry and issue a warning.

[lib/pdf_draw.ps]

2007-04-08T18:23:38.107786Z Alex Cherepanov

Increase the size of %stdin buffer to support larger lookahead requests and
look for for %PDF- tag in the first 1024 bytes of the file. Fix bug 687125,

[lib/pdf_main.ps lib/pdf_base.ps src/ziodevs.c src/ziodevsc.c]

2007-04-08T17:55:40.402009Z leonardo

pscet_status.txt : Improving assignments.

[doc/pscet_status.txt]

2007-04-07T20:07:46.466482Z Ray Johnston

Add missing calls needed to properly send data to the printer on
Windows. Thanks to Luke Bakken for this fix. Bug 687250.

DETAILS:

Tested on Windows XP, built with MSVC 8 (Visual Studio 2005).
As Luke writes in the bug comment #5, this patch is derived
from Microsoft documentation at:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_93g2.asp

[src/gp_msprn.c]

2007-04-07T01:58:38.533291Z Alex Cherepanov

Make the spot function in the high resolution halftone a readable procedure
to accomodate CET 29-05-01. Move Berthold K.P. Horn's copyright message into
the body of the function to keep them together at all times.

[doc/pscet_status.txt lib/gs_init.ps]

2007-04-06T15:58:56.468981Z Alex Cherepanov

Following Adobe implementation don't restore the operand of --begin--
when it overflows the dictionary stack. Fix CET 20-02-02.

DETAILS:
Implement the approach suggested by L. Peter Deutsch.

- Change the check_dstack macro in dstack.h so it works the same as
  check_estack in estack.h -- i.e., if the current dstack block is full,
  call ref_stack_extend and then only return an error if
  ref_stack_extend fails.
- Change the handling of e_dictstackoverflow in interp.c so it works
  the same as e_execstackoverflow -- i.e., it doesn't try to extend the
  stack.
- Change the implementation of zbegin in zdict.c to work like
  check_dstack. I.e., if the current dstack block is full, call
  ref_stack_extend; if ref_stack_extend returns e_dictstackoverflow, pop
  the operand from the ostack before returning the error code.

With this approach, the interpreter does not have to know anything about
special handling of dictstackoverflow, and the right thing happens in
the special case of the 'begin' operator.

[doc/pscet_status.txt src/zdict.c src/dstack.h src/interp.c]

2007-04-06T10:17:36.503282Z leonardo

Fix : MSVC8 warnings.
Also replaced cumbersome type casts and fixed ambiguous naming in gxclread.c .

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

2007-04-06T04:17:48.623209Z Henry Stiles

make gdevdevn a dependency of the transparency library since it
gdevp14 now depends on it.

[src/lib.mak]

2007-04-06T04:11:32.256255Z Henry Stiles

force the wts device to always band.

[src/gdevwts.c]

2007-04-06T04:11:00.512053Z Alex Cherepanov

Accept a perfectly valid 0-length pattern stream. Work around a strange
restriction on 0-length target string in the readstring operator.
Fix bug 689162.

[lib/pdf_draw.ps]

2007-04-06T02:43:19.702262Z Timothy Osborn

Splitting graphics library from interpreter portion of the sample custom color callback

[src/gsncdummy.c src/zncdummy.c src/gsncdummy.h]

2007-04-06T02:39:31.953398Z Timothy Osborn

Splitting graphics library from interpreter portion of the sample custom color callback

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

2007-04-05T21:34:09.306348Z Ralph Giles

Add #ifdef protection to some new debug printouts for the OutputIntent 
parameter.

[src/gdevpbm.c]

2007-04-05T17:36:43.783101Z Alex Cherepanov

Fix compilation on MSVC 6. Add a best effort simulation of C99 __func__
keyword on older compilers.

[src/lib.mak src/gdevdbit.c src/gserror.h]

2007-04-05T01:29:14.432997Z Henry Stiles

fixes a UMR that was caused by a typo.

[src/gdevwts.c]

2007-04-03T16:08:49.165033Z Stefan Kemper

Committing Raph's wtsimdi device

DETAILS:

-r600 -sDEVICE=wtsimdi does a performance optimized clist reader that either directly halftones 
or uses an intermediate rgb buffer to do non-trivial ROPS correctly then post halftones 
on a per band basis.

Uses icc color profiles to convert to device color.  
Uses wts halftone algorithm.

The device reads in a link icc profile from "link.icc", and WTS
halftone files from wts_plane_[0123]. It generates a ppm file that
can be used to visualize the halftoned file (it is prepared from the
CMYK bits in the procedure write_pkmraw_row in gdevwts.c - if an
actual device is available, that routine should be modified to produce
data for the device).

  This device _does_ switch on a per-band basis between continuous
tone pathways (true branch of the "if" statement in
wtsimdi_create_buf_device) and halftone, based on whether there are
rops. That is the major point of the work.

This is not yet production ready, but is useful for performance and integration work.

Known issues:

1. Banding only, low res non-banding will crash,
the device is intended for printer resolution halftoning, at 600dpi
The halftones are designed for 600dpi.

2. Color profiles and halftone screens are not in romfs,
These need to be copied into the same object/binary directory
that the application is in for now.
./pspcl6 and ./wts_* and ./*.icc in the same directory.
Failure to find these files will crash.

3. Halftone phase not set correctly in halftone band.

4. copy_mono doesn't optimize all-0 and all-1 colors as much as it
should - it can avoid processing the screen at that point.

5. halftone mode implemented only for rgb color model, not CMYK.

6. size of band_colors_used[] array is statically determined

[src/gxwts.c src/gxclist.c src/gxdevbuf.h src/gxwts.h src/gxclist.h src/gxgetbit.h src/gdevwts.c src/gdevdbit.c src/gxbitfmt.h src/gxclread.c src/gdevpng.c src/gxclutil.c src/gxclimag.c src/gxcldev.h src/gdevppla.c src/gdevprn.c src/gdevppla.h src/gswts.c src/gdevprn.h src/gxclpath.c src/gxclrect.c]

2007-04-02T22:34:51.451596Z Alex Cherepanov

Change CET 17-06-02 to AOK. Ghostscript generates correct results
at 300 dpi and above.

[doc/pscet_status.txt]

2007-04-02T21:43:37.719440Z Alex Cherepanov

Change CET 17-04-02 and 17-05-02 to AOK. Ghostscript generates correct results
at 300 dpi and above.

[doc/pscet_status.txt]

2007-04-02T18:25:44.568365Z leonardo

Fix (pdfwrite) : a composite font with a Type 3 descendent and FMapType 2 (continued).

DETAILS :

Patch from SaGS with minor improvements.
Bug 688639 " pdfwrite: a composite font with a Type 3 descendent and FMapType 2".
The last patch deosn't correctly accommodate the code from SaGS.

[src/gdevpdtc.c]

2007-04-01T21:46:50.065374Z leonardo

Fix (pdfwrite) : a composite font with a Type 3 descendent and FMapType 2 

DETAILS :

Patch from SaGS with minor improvements.
Bug 688639 " pdfwrite: a composite font with a Type 3 descendent and FMapType 2".
See comment #13 in the bug report.

[src/gdevpdtc.c]

2007-04-01T19:14:49.835812Z leonardo

Fix (ps2write) : Device initialization problems.

DETAILS :

Patch from SaGS with a minor improvement.
See bug 688856 comments 11,12,13 for details.

[src/gdevpdfx.h src/gdevpdfp.c src/gdevpdfd.c src/gdevpdfb.h lib/gs_pdfwr.ps]

2007-04-01T18:27:55.285455Z leonardo

pscet_status.txt : Closing 11-16-8, which appears eventually fixed; Passing 17-04-2 to Alex.	

[doc/pscet_status.txt]

2007-04-01T07:39:25.772162Z Ray Johnston

Fix typo that caused undefined during build.

[src/gdevrops.c]

2007-04-01T07:06:00.179365Z leonardo

Fix : MSVC warnings.

DETAILS :

The custom color callback patch was not accommodated to
the color space reference count patch.

[src/gscie.h src/gscscie.c src/gxcspace.h src/gscsepr.c src/gscspace.c src/gsicc.c src/gspcolor.c src/gscdevn.c src/gscie.c src/gscolor2.c]

2007-03-29T23:26:10.038260Z Alex Cherepanov

Change CET 09-56-03 to OK. Ghostscript matches Tek360 checksum. CPSI-based
PhotoPrint product is wrong again.

[doc/pscet_status.txt]

2007-03-29T00:53:36.234691Z Alex Cherepanov

Don't store part of the state of readhexstring in not yet written bytes
of the target string to avoid the string modification when the operator
fails and the stack is restored. Fix CET 23-20-01.

DETAILS:
Pack the state into a single 32-bit word for the convenience of reusing
the procedures that take a single integer value as a state.

DIFFERENCE:
No other CET or Comparefiles differences.

[doc/pscet_status.txt src/zfileio.c]

2007-03-28T16:03:31.220336Z Alex Cherepanov

Propagate CloseSource or CloseTarget flags to the temporary stream
created by filter_ensure_buffer(). Fix CET 23-12k-02.

DIFFERENCE:
No other CET or Comparefiles differences.

[doc/pscet_status.txt src/zfilter.c]

2007-03-27T22:44:40.516433Z Alex Cherepanov

Change the status of CET 17-01-07, 17-02-06, and 17-02-07 to AOK.
Ghostscript matches Tek and Distiller 5, CPSI is wrong here.

[doc/pscet_status.txt]

2007-03-27T17:39:51.715201Z Alex Cherepanov

Make FontBBox a required attribute in CPSI compatibility mode.
PLRM says that it's a required attribute and recent Adobe interpreters
enforce this. Fix CET 15-11.

[doc/pscet_status.txt src/zchar.c]

2007-03-27T02:55:14.620042Z Alex Cherepanov

Change the status of CET 11-18-6 to AOK. Adobe interpreters have obvious
rendering bugs that are hard to simulate in Ghostscript.

[doc/pscet_status.txt]

2007-03-26T00:36:09.521618Z Alex Cherepanov

Clear a Purify warning. Fix yet another case where a non-0-terminated string
was directly used as a sscanf() argument, causing an access to the wild core.

[src/gdevpdfm.c]

2007-03-25T21:58:01.514677Z Alex Cherepanov

Add a new option for ignoring an Encoding entry of a True Type font dictionary.
Work around the bug 688596.

DETAILS:
This patch provides a workaround for PDF documents that include an incorrect
Encoding entry for a True Type font dictionary. Using the new command line
option -dIgnoreTTEncoding one can force the PDF interpreter to use an encoding
specified in the 'cmap' table of embedded True Type fonts. When it is
specified, the Encoding dictionary is not tested for PDF comformity.

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

2007-03-25T20:16:59.028603Z Alex Cherepanov

Clear a Purify warning. Search for the EOD marher not earlier than
the start of the data buffer.

[src/sa85d.c]

2007-03-25T17:47:16.863668Z Alex Cherepanov

Don't check current row position in the mask of the image type 3x
when the mask is not defined. Fix an infinite loop.
Fix the bug 688912, and a part of the bug 689138.

[src/gximag3x.c]

2007-03-25T14:48:19.599692Z Alex Cherepanov

Fix an off-by-one error in the glyph array sorting logic detected by Purify.

[src/gxfcopy.c]

2007-03-25T04:18:56.724059Z Alex Cherepanov

Clear a Valgrind warning. Initialize a buffer overshot area in CCITTFaxDecode
filter. Bug 688905.

[src/scfd.c]

2007-03-24T17:28:22.209822Z Timothy Osborn

Changing C++ comments to C format comments

[src/gdevp14.c]

2007-03-24T16:31:23.728641Z Alex Cherepanov

Fix C++ -style variable definition introduced by the previous commit,
which is not supported by older compilers: MSVC 6, gcc 2.96.

[src/gscspace.c]

2007-03-23T13:56:11.260385Z Timothy Osborn

Custom color hooks code merge

[src/gsimage.c src/gstext.c src/gscscie.c src/gdevtsep.c src/gxdcolor.h src/gsciemap.c src/gsicc.c src/gscdevn.c src/gscie.c lib/pdf_main.ps src/gdevdsp.c src/gdevpsd.c src/lib.mak src/gdevdflt.c src/gsncdemo.c src/gsdps1.c src/gdevdevn.c src/zusparam.c src/gxdevice.h src/gdevdevn.h src/iparam.c src/zfapi.c lib/pdf_ops.ps src/gsstate.c src/gdevp14.c src/gxclist.c src/gxcmap.c src/gsstate.h src/gdevp14.h src/ztrans.c src/gstrans.c src/gxblend.c src/gdevpbm.c src/gstrans.h src/gxclip.c src/gxblend.h src/gscspace.c src/gsnamecl.c src/gdevrops.c src/gscolor2.c src/zcolor3.c src/gdevpnga.c src/gscspace.h src/gxistate.h src/gsnamecl.h src/gsdparam.c src/gdevbbox.c src/gxclipm.c src/gxcie.h src/gdevnfwd.c src/gdevprn.c src/gspaint.c src/gscsepr.c src/gsutil.c src/gxclip2.c src/gxdevcli.h]

2007-03-21T01:48:30.497976Z leonardo

Fix (PDF interpreter, pdfwrite) : Transparently pass unusialrenedering modes.

DETAILS :

Bug 689124 "Converting PDF to PDF makes text non-selectable"

The old code transformed a text with unusual rendering mode
into outlines.

1. When the current device is pdfwrite,
   the new code of PDF interpreter doesn't emulate 
   unusual rendering modes. (Patch from Alex).

2. pdfwrite transparently passes unusual rendering modes.

[src/gdevpdtt.c lib/pdf_ops.ps]

2007-03-19T04:27:34.509606Z Ralph Giles

Correct a typo in the indexed colorspace support for the luratech JPX 
decoder.

[src/sjpx_luratech.h]

2007-03-15T02:13:09.397460Z Alex Cherepanov

Reset the dashed line array at initgraphics. Fix CET 09-28-01.

[doc/pscet_status.txt src/zgstate.c]

2007-03-15T00:49:11.591683Z Ralph Giles

Update an additional version number.

[doc/News.htm]

2007-03-15T00:44:21.345487Z Ralph Giles

Bump the revision number after the 8.56 release.

[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]

Version 8.56 (2007-03-14)

This is a stable release in the 8.5x series of Ghostscript. It contains a numerous bug fixes and improvements. Most significantly, comformance with the Quality Logic CET suite for Postscript has been improved, and a special 'gs_cet.ps' prefix file can be sent with a job to produce output closer to that of the reference implementation.

This is our first release since Ghostscript 8.54. The 8.55 version number was skipped to avoid confusion with a GNU release.

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, 687084, 687095, 687108, 687125, 687146, 687193, 687196, 687219, 687229, 687231, 687250, 687257, 687271, 687280, 687295, 687297, 687303, 687316, 687327, 687342, 687345, 687346, 687375, 687397, 687399, 687414, 687445, 687460, 687475, 687484, 687492, 687498, 687514, 687520, 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, 687844, 687850, 687863, 687887, 687899, 687903, 687904, 687907, 687915, 687919, 687931, 687950, 687957, 687960, 687970, 687974, 687977, 687978, 687981, 687983, 687988, 688006, 688007, 688009, 688020, 688022, 688024, 688026, 688032, 688035, 688036, 688042, 688054, 688058, 688061, 688064, 688066, 688071, 688072, 688075, 688081, 688095, 688108, 688124, 688129, 688130, 688134, 688151, 688152, 688159, 688166, 688184, 688187, 688200, 688203, 688204, 688207, 688210, 688215, 688225, 688227, 688239, 688243, 688267, 688269, 688274, 688280, 688282, 688283, 688288, 688291, 688295, 688311, 688312, 688317, 688318, 688320, 688323, 688332, 688333, 688337, 688338, 688339, 688342, 688358, 688359, 688360, 688361, 688363, 688372, 688375, 688378, 688383, 688386, 688387, 688389, 688395, 688396, 688400, 688410, 688413, 688425, 688427, 688428, 688429, 688434, 688436, 688437, 688440, 688446, 688448, 688468, 688473, 688475, 688477, 688479, 688483, 688490, 688493, 688495, 688500, 688515, 688517, 688518, 688526, 688528, 688532, 688533, 688539, 688540, 688542, 688543, 688557, 688565, 688573, 688580, 688581, 688584, 688588, 688596, 688598, 688601, 688604, 688605, 688610, 688616, 688617, 688619, 688621, 688626, 688627, 688633, 688634, 688635, 688636, 688637, 688638, 688639, 688643, 688646, 688647, 688651, 688653, 688655, 688671, 688672, 688673, 688674, 688683, 688696, 688697, 688699, 688708, 688709, 688710, 688711, 688712, 688714, 688717, 688728, 688730, 688731, 688734, 688736, 688738, 688739, 688740, 688755, 688757, 688762, 688770, 688777, 688778, 688796, 688797, 688806, 688807, 688808, 688809, 688811, 688813, 688814, 688815, 688818, 688826, 688828, 688829, 688830, 688834, 688843, 688845, 688846, 688856, 688858, 688870, 688871, 688872, 688876, 688877, 688878, 688899, 688903, 688904, 688905, 688906, 688907, 688908, 688909, 688910, 688912, 688914, 688915, 688916, 688917, 688918, 688919, 688920, 688923, 688924, 688925, 688926, 688928, 688933, 688934, 688940, 688942, 688943, 688945, 688949, 688952, 688954, 688958, 688965, 688969, 688970, 688971, 688976, 688977, 688978, 688979, 688981, 688983, 688986, 688990, 688991, 688992, 688994, 688998, 688999, 689001, 689002, 689003, 689010, 689011, 689013, 689014, 689016, 689021, 689022, 689025, 689026, 689028, 689031, 689032, 689036, 689038, 689040, 689041, 689044, 689046, 689048, 689050, 689053, 689055, 689056, 689057, 689058, 689060, 689065, 689068, 689070, 689076, 689077, 689078, 689080, 689081, 689085, 689090, 689092, 689093, 689094, 689098, 689101, 689103, 689104, 689105, 689106, 689107, 689111, 689114, 689115, 689116, 689117, 689122, 689123, 689124, 689126, 689127, 689128, 689129, 689130, 689131, 689132, 689133, 689134, 689136, 689137, 689138.

Incompatible changes

There are no known incompatible changes at this point.

Changelog

2007-03-15T00:02:10.064485Z Ralph Giles

Handle empty log messages.

[toolbin/split_changelog.py]

2007-03-14T21:35:45.571769Z Ralph Giles

Remove romfs.dev from FEATURE_DEVS_ALL. It is no longer optional.

[src/Makefile.in]

2007-03-14T21:15:00.798517Z Ralph Giles

Update revision, dates, and list of open bugs for release.

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

2007-03-13T22:40:29.048961Z leonardo

Fix (stroking) : Apply the right math for computing always_thin,

DETAILS :

The old code estimated the line width with 
an empiric formula, which doesn't look well defined.
Replacing it with a right math.
See comment in code.

[src/gxstroke.c]

2007-03-13T22:35:51.420875Z leonardo

Fix (stroking) : Apply the right math for computing always_thin,

DETAILS :

The old code estimated the line width with 
an empiric formula, which doesn't look well defined.
Replacing it with a right math.
See comment in code.

[doc/pscet_status.txt src/gxstroke.c]

2007-03-11T20:47:13.652729Z leonardo

pscet_status.txt : Closing 11-06-5.

[doc/pscet_status.txt]

2007-03-11T17:43:34.501551Z leonardo

Fix (user paths) : Wrong current point after uappend closepath.

DETAILS :

The old code missed the subpath starting point after uappend.
Also removing the code for copying current point from path 
in user path operations, because gs_upmergepath now performs this job fine.

[doc/pscet_status.txt src/gspath.c src/zupath.c]

2007-03-11T16:29:11.261904Z Alex Cherepanov

Rename "ref dash_pattern" to avoid confusion with "float dash_pattern[]".

[src/zgstate.c src/igstate.h]

2007-03-11T13:46:54.105020Z leonardo

Fix : MSVC compiler warnings.

DETAILS :

The patch
http://ghostscript.com/pipermail/gs-cvs/2007-March/007345.html
is incomplete.
More const qualifiers are now removed.

[src/zimage.c src/gxiparam.h src/gxcmap.c src/iimage.h src/gximage.c src/gximage1.c src/gximage3.c src/gsipar3x.h src/gximage4.c src/gxclrast.c src/gximag3x.c src/gdevpdfi.c src/gsiparam.h src/gsiparm3.h src/gsiparm4.h]

2007-03-11T09:10:05.985706Z leonardo

pscet_status.txt : Improving assignments.

[doc/pscet_status.txt]

2007-03-09T20:41:25.398262Z Ray Johnston

Add a utility to dump out information about PDF files. Fix
for customer #259.

DETAILS:

This is intended as an example since most customers will want
specific info, but it also is slightly handy.

We may want to do 'pdf_info' scripts and .bat files in lib/
but these can be added later.

   usage: gs -dNODISPLAY -q -sFile=____.pdf [ options ] toolbin/pdf_info.ps

          where "options" are:
          -dDumpMediaSizes          MediaBox and CropBox for each page
          -dDumpFontsUsed           List fonts used
          -dShowEmbeddedFonts       only meaningful with -dDumpFontsUsed

Sample 'full' output looks like:


examples/annots.pdf has 6 pages.
Title: Microsoft Word - Links.doc
Author: August D. Coby
Creator: ADOBEPS4.DRV Version 4.24
Producer: Acrobat Distiller 4.0 for Windows
CreationDate: D:20000420231130Z
ModDate: D:20040413162329-07'00'

Page 1 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 2 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 3 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 4 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 5 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 6 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]

Fonts Used:
ArialMT
IBKJPF+ArialMT
JBAHHI+ArialMT

[toolbin/pdf_info.ps]

2007-03-08T17:24:28.272086Z Raph Levien

Remove unnecessary zeroing out of reference count of indexed color space
map structure. Eliminates warnings when run with -Z?

[src/zcsindex.c]

2007-03-08T00:27:45.225750Z Ray Johnston

Missing (yet another) dependency -- string_.h. It probably was not
a problem.

[src/int.mak]

2007-03-07T21:22:02.986768Z Ralph Giles

Update the makefile with new header dependencies added in r7198.

[src/int.mak]

2007-03-07T20:35:24.409027Z Stefan Kemper

Fix image banding error with high level images ctm.

Fixes ridt91.eps (ppmraw/300dpi/banded)

[src/gxclimag.c]

2007-03-07T00:12:53.750515Z Timothy Osborn

Changed assignment from Igor to Tim for items marked same-as some items already marked OK.

[doc/pscet_status.txt]

2007-03-06T21:40:32.469232Z leonardo

Fix (Type 1 interpreter) : Account the replaced side bearing in setcurrentpoint.

DETAILS :

When the side bearing is replaced with Metrics or Metrics2,
the old code didn't account that while executing setcurrentpoint,
so that further outline poles go to wrong (unreplaced) coordinates.
Fixes CET 16-03-2.

[doc/pscet_status.txt]

2007-03-06T21:37:14.025835Z leonardo

Fix (Type 1 interpreter) : Account the replaced side bearing in setcurrentpoint.

DETAILS :

When the side bearing is replaced with Metrics or Metrics2,
the old code didn't account that while executing setcurrentpoint,
so that further outline poles go to wrong (unreplaced) coordinates.
Fixes CET 16-03-2.

[src/gstype1.c src/gstype2.c src/gxtype1.c src/gxtype1.h]

2007-03-06T19:46:12.663281Z Ralph Giles

Resolve version control Id line issues flagged by the regression run.

[doc/pscet_status.txt src/gxhintn1.c doc/Testing.htm doc/Psfiles.htm lib/jobseparator.ps]

2007-03-06T17:24:58.366068Z leonardo

Fix (TT interpreter) : memory leaks with PCL (continued).

DETAILS :

The last patch doesn't compile with gcc due to a redundsnt typedef.

[src/gxttfb.c]

2007-03-06T14:35:00.233763Z leonardo

Fix (TT interpreter) : memory leaks with PCL.

DETAILS :

1. The old code created gx_ttfMemory instance per font,
   but only the first one is used. Others are leaks.
   The new code create one instance per font directory.
   The new field gs_font_dir::ttm works for that.

2. For proper lock count on memory errors, don't call Context_Destroy 
   if Context_Create was not called.

3. In ttobjs.c don't use exec->current_face for accessing ttfMemory,
   because PCL closes fonts when they are not active
   in the TT interpreter. The new field Execution_Context::memory
   works for that.  

[src/gxfcache.h src/gxttfb.c src/gsfont.c src/ttfmemd.c src/ttfmain.c src/ttobjs.c src/ttobjs.h]

2007-03-05T21:50:20.543548Z Raph Levien

Remove stray debug print that was left in previous commit (colorspace
refcount patch).

[src/gscscie.c]

2007-03-05T21:09:35.951840Z Raph Levien

Non-backwards compatible change: use consistent reference count allocation
discipline for color spaces. Previously, color spaces were allocated on
stack, on the heap, as sub-structures within other color space structures,
and were very commonly copied. Reference counting was used for the "params"
block of some, but not all, color spaces, but there were correctness
problems with that logic.

In addition, a number of "const" qualifiers have been removed, because
the action of bumping the reference count on an object is not consistent
with the C semantics of const.

This change is required to resolve problems with enhancement 688924. It
should also help with memory leaks.

Other clients, such as the PCL interpreter, will require changes to be
compatible. For simple device colorspaces, the change to gs_setcmykcolor()
(gscolor1.c) is representative of the code change required.

[src/gsimage.c src/zimage.c src/zshade.c src/gslibctx.c src/gscscie.c src/gdevpdfb.c src/gdevpdfc.c src/gdevpdfg.c src/gxclrast.c src/zpcolor.c src/zicc.c src/gspcolor.c src/gdevps.c src/gdevpdfi.c src/gsicc.c src/gscdevn.c src/zcssepr.c src/gdevpdfk.c src/zcie.c src/gdevpdfg.h src/lib.mak src/gsicc.h src/gscdevn.h src/zcspixel.c src/gsrefct.h src/gdevpsdi.c src/gdevpdfv.c src/zcolor.c src/gscolor.c src/gsiparam.h src/gxshade6.c src/gscssub.c src/gdevp14.c src/gsstate.c src/gxclpath.c src/gsptype1.c src/zcsdevn.c src/gscpixel.c src/gxcmap.c src/gsptype1.h src/icsmap.h src/gsistate.c src/gscpixel.h src/gxshade.c src/gximag3x.c src/zcsindex.c src/gscspace.c src/gscolor1.c src/gscolor2.c src/zcolor2.c src/gscolor3.c src/gscspace.h src/gxistate.h src/gscolor2.h src/gxpcmap.c src/gxcspace.h src/gxcdevn.h src/gxcolor2.h src/gscsepr.c src/gscindex.h src/gscsepr.h]

2007-03-05T17:12:51.517731Z Timothy Osborn

Reassinged shading issues to Igor

[doc/pscet_status.txt]

2007-03-05T05:30:38.914444Z Raph Levien

Make sure that memory for jpeg_decompress_data gets allocated from the
same memory as the stream structure that owns it. Previously, the
stream structure would be allocated in global, and the jddp in stable
local, which is a violation of GC invariants. Fixes bug 689118, which
was a GC crash in the regression file H00216q.pdf.

[src/zfdctd.c]

2007-03-04T21:31:28.032123Z leonardo

pscet_status.txt : Closing 11-24-3 .

[doc/pscet_status.txt]

2007-03-04T18:25:04.375026Z Alex Cherepanov

Fix X mirroring for all color modes of the interpolated image.
The mirroring was missing from non 8 bits/colorant modes resulting
in the mirrored output images.

[src/gxiscale.c]

2007-03-04T17:08:25.140696Z leonardo

Fix (user paths) : Remove the uneven behavior with uappend.

DETAILS :

1. uappend was fixed to ignore the incorrfect placement of ucache 
   in the CPSI compatibility mode. 
   However in contradiction to other user path operators,
   CPSI has no uneven behavior with uappend, 
   so changing upath back to the regular behavior.

2. Don't change current point if uappend fails.
   Likely it was an inaccuracy in a recent patch.

3. Change other user path assignment for more efficiency.

[doc/pscet_status.txt src/zupath.c]

2007-03-04T16:41:00.611078Z Ray Johnston

Free up any previous line_ptrs in a memory (image) device before
allocating new ones. This allows multiple calls to setup_buf_device
without leaking memory (as seen with the PCL allocator that does
not have garbage collection).

[src/gdevprn.c]

2007-03-04T16:37:32.768972Z Ray Johnston

The index file should not be compressed. It is small, and if it ever did
get compressed, it would SEVERELY impact performance since the entire
list gets processed on every band.

[src/gxclist.c]

2007-03-03T03:51:56.270202Z Alex Cherepanov

Fix a stack nix-up that occured when cm operator was used inside BT/ET block.
Bug 688985, customer 580.

[lib/pdf_draw.ps]

2007-03-02T05:55:00.252985Z Henry Stiles

accommodate parsing of undocumented color treatments (689100) which
appear to have no effect.

[src/gdevpxen.h]

2007-03-01T20:17:09.177569Z leonardo

Fix (pdfwrite) : Handle a text with degenerate CTM.

DETAILS :

The old code failed with undefinedresult when writing
a text to output with degenerate CTM. 
The new code writes it somehow to provide searchability.
See comment in code.
Such text is not visible in rendering.
We don't care about 'Tj' optimization
because such cases are rare.

[src/devs.mak]

2007-03-01T20:15:49.273788Z leonardo

Fix (pdfwrite) : Handle a text with degenerate CTM.

DETAILS :

The old code failed with undefinedresult when writing
a text to output with degenerate CTM. 
The new code writes it somehow to provide searchability.
See comment in code.
Such text is not visible in rendering.
We don't care about 'Tj' optimization
because such cases are rare.

[src/gdevpdts.c]

2007-03-01T15:27:39.443405Z leonardo

Fix (graphics) : Imprecise current point after drawing an arc (continued).

DETAILS :

The old code uses 'fixed' representation for an angle of an arc.
It appears insufficiently precise.
The new code performs the angle computations in doubles.
The patch intentionally doesn't change the algorithm. 

[doc/pscet_status.txt src/gspath1.c]

2007-03-01T12:50:10.538308Z leonardo

Fix (fuzzy.c) : An incorrect image difference format for multipage files.

DETAILS :

The old code created a single header for the image difference,
which describes the first page only. Further pages were written
with no header. 

Also the output buffer length was incorrect
when pages have different sizes. 
It caused heap corruption.

The new code creates a new file for each page difference.

[toolbin/tests/fuzzy.c]

2007-03-01T02:26:03.339465Z Alex Cherepanov

When a chain of decoding filters encounters EOF, close the last filter in
the chain. This seems to contradict PLRM3 but matches the observed behavior
of Adobe interpreters. Bug 688745, customer 384.

DETAILS:
Contrary to PLRM3, Adobe interpreters close disk files and filters equaly.
Old Ghostscript code was inconsistant and closed the first and the last
filters in the chain, or the last 2 filters depending whether the first file
is a disk file or a filter.

[src/stream.c]

2007-02-28T18:49:49.409416Z leonardo

Fix (fuzzy.c) : Multipage files processed incorrectly.

DETAILS :

When ppmraw writes several pages into a single file, it places a header before 
each image data. The old fuzzy.c does not expect headers, and reads headers as image data. 
This change provodes parsing an own header for each page.

[toolbin/tests/fuzzy.c]

2007-02-28T17:03:28.849858Z Alex Cherepanov

Validate arguments of the operator startjob. Fix CET 31-10-02.

[doc/pscet_status.txt lib/gs_lev2.ps]

2007-02-27T21:11:08.978663Z leonardo

Fix (graphics) : Imprecise current point after drawing an arc.

DETAILS :

1. gs_arc_add_inline took current point from fixed point coords in path. 
   Implementing PRECISE_CURRENTPOINT for it.

2. gs_imager_arc_add made private because it changes the interface
   and none of our interpreters call it.

3. pis->subpath_start is set from arc if a path starts with an arc.

[doc/pscet_status.txt src/gspath1.c src/gspath.h]

2007-02-26T16:24:17.305323Z Alex Cherepanov

Fix indeterministic behavior of fuzzy.c with -w > 1. Initialize the rest of
the window buffer that would be uninitialized before half_win lines is read.

[toolbin/tests/fuzzy.c]

2007-02-25T20:46:03.985068Z Alex Cherepanov

Set upper font cache limit to 1e8 bytes in CPSI compatibility mode.
Fix CET 27-02-01.

[doc/pscet_status.txt src/gsfont.c]

2007-02-25T19:26:44.964185Z Alex Cherepanov

Fix MSVC-specific code added to fuzzy.c in the rev. 7743.

[toolbin/tests/fuzzy.c]

2007-02-25T19:13:16.641987Z Stefan Kemper

Banding fix where triangles where incorrectly detected and rendered
as parallelograms when rendering out of the clist.  Triangles are only used
to fill bevel joins so this occurs infrequently, and the use of fuzzy 
comparisons will hide all but the largest stroke width errors.  

Corrects many pcl CET banding/nobanding differences:
28-01 
28-02
28-03
28-04
28-05
28-06
28-07
28-10
29-01		   
29-02
29-08
29-10
29-11
30-01
30-04
30-16
30-19
30-23
31-01
31-02
31-03
31-04
31-05
31-06
31-07
31-08
31-09
31-10
31-11
32-01
32-02
34-03
36-04
36-05

[src/gxclrast.c]

2007-02-25T13:58:08.233607Z leonardo

Fix (fuzzy.c) : Further improvements.

DETAILS :

1. The old code read past EOF.
   It happens because the EOF condition doesn't appear when reading
   the last byte of a page, which is the last byte of the file.
   Actually EOF happens when attempting to read bytes after the last
   byte of a page. It caused the old code to think that an extra
   page presents at file end, and to perform a dummy comparizon of the extra page
   as it would appear with repeating the last raw of the file.
   Due to that the old code consumes nearly twice CPU time than neccesary.
   Fixed with comparing the file position with the file legth in image_pnm_feof.

2. image_get_rgb_scan_line didn't return an error code when
   insufficient data presents in the file.

3. Optimized fuzzy_diff_images with using memcmp for
   a faster comparizon of rows. Skip the heavy analyzis of differences
   when entire rows are equal.

[toolbin/tests/fuzzy.c]

2007-02-25T05:06:47.526811Z Alex Cherepanov

Clean up pscet_status.txt and add comments to a few entries.

[doc/pscet_status.txt]

2007-02-25T02:09:12.060125Z Alex Cherepanov

In Level 3, operator setscreen takes the value of AccurateScreens from the user
parameter even with the dictionary argument. PLRM p682. Partly fix CET 09-49-02

[doc/pscet_status.txt lib/gs_dps2.ps]

2007-02-24T15:32:48.711895Z Alex Cherepanov

Set /errorinfo to null in the error handler when it undefined.
Fix missing 'null' in CET 09-47c and 09-47j.

[doc/pscet_status.txt lib/gs_init.ps]

2007-02-23T23:03:23.452670Z Ray Johnston

Fix memory leak (PCL) due to extra gstate creation. PS did not leak thanks
to the Garbage Collector.

DETAILS:

If a pattern PaintProc did a gsave/grestore the grestore would detect that
the base graphics state did not have an underlying 'saved' graphics state
and would create one (due to the need for PostScript to always have two
graphics states on this graphics state stack/list). When gx_pattern_load
freed the graphics state it created, the (possible) underlying graphics
state would not get freed. Since the PostScript allocator (that supported
garbage collection) would locate and free the unconnected graphics state
this was not seen with PostScript.

The gs_state_free_chain function was created in case there are other clients
that need this function (pdfwrite ?)

[src/gsstate.h src/gxpcmap.c src/gsstate.c]

2007-02-23T22:05:37.560889Z Alex Cherepanov

Use stricter validation of the pattern dictionary parameters to
match CET 18-02c and 18-02d.

DETAILS:
In particular, don't accept the degenerative matrix, unnormalized, or empty
bounding box. The difference in the operand stack in CET 18-02c is not yet
fixed. Adobe doesn't restore operands of rectfill operator when an error
happen in the PaintProc procedure but Ghostscript does.

[doc/pscet_status.txt lib/gs_lev2.ps src/zpcolor.c lib/pdf_ops.ps]

2007-02-23T18:32:39.440312Z Timothy Osborn

Changed status to AOK for 09-47B-11 Test05 and Test06

[doc/pscet_status.txt]

2007-02-23T17:31:15.655333Z Timothy Osborn

Changed status to AOK for 09-47B-11 Test10 and Test11

[doc/pscet_status.txt]

2007-02-23T17:04:07.479609Z Timothy Osborn

Changed status to AOK for 09-47B-10 Test10 and Test11

[doc/pscet_status.txt]

2007-02-23T13:29:37.822169Z L. Peter Deutsch

Changes the 'token' operator so it does not pop the operand on an
invalidaccess error, for Adobe compatibility.

[src/ztoken.c]

2007-02-22T15:39:15.380404Z Alex Cherepanov

Set bottom limit of 100000 on the font cache size in the compatibility
mode to match Adobe interpreters.  Partial fox for CET 27-07-01.

[doc/pscet_status.txt src/gsfont.c]

2007-02-22T03:10:49.737762Z Alex Cherepanov

Don't include systemdict, globaldict, and userdict into the array of
dictionaries that is pushed to the operand stack on dictstackoverflow.
Partly fix CET 20-02-02.

[doc/pscet_status.txt src/interp.c]

2007-02-22T00:39:53.016232Z Ray Johnston

Previous CPSI_PPM files had been run with a (bogus) RenderingIntent
ProcSet in force that (among other things) redefined the 'show' op
as a procedure. This ProcSet appears to be a method to use different
color matching depending on the type of imaging operation (fill, stroke,
show, image, shfill).

The casper.ghostscript.com:/home/ray/PSLL3/CPSI_PPM directory is now
updated with the results obtained when the RenderingIntent ProcSet is
disabled. The interesting thing is that many pages that CPSI previously
could not render now work (some that did render now do not) and that
GS now matches several more files than previously. 

The status indicates "OK" where GS matches CPSI (close enough) and
removes the 'cpsi missing' where we now have CPSI results available.
Some pages are changed to "DIFF" status and assigned, indicating that
a fix (or an intelligent review) is needed.

Please email me with any questions.

[doc/pscet_status.txt]

2007-02-21T22:16:53.963317Z Alex Cherepanov

Change the parameter validation order in execstack to match CET 20-03.

[doc/pscet_status.txt src/zcontrol.c]

2007-02-21T20:24:45.557583Z Ray Johnston

Fix regression on 124-01.ps. Emulate bizarre Adobe behavior so that the
procedure operand of a 'for' is not executed when BOTH the initial value
and the increment are 0 (or 0.0). Seen with CET 28-07 and FTS 124-01
and verified with custom test file against CPSI.

EXPETECTED DIFFERENCES:

None (this time).

[src/zcontrol.c]

2007-02-21T15:02:42.033266Z Ray Johnston

Fix for language_switch build 'invalidrestore. Allow filter allocation in
systemVM as needed by .runstring and .runstringbegin in gs_init.ps. This 
fixes problem intoduced by rev 7629.

EXPECTED DIFFERENCES.

None. Note that CET 23-12W that was fixed with rev 7629 is OK with this
change since the 'use_space' is not limited by 'save_space'.

[src/zfilter.c]

2007-02-21T14:43:50.287589Z Alex Cherepanov

Make redefined /quit a procedure to match CET 28-10-01.

[doc/pscet_status.txt lib/gs_lev2.ps]

2007-02-21T01:14:19.825556Z Alex Cherepanov

Reclassify CET 23-12W-4 as OK. 

[doc/pscet_status.txt]

2007-02-21T00:16:24.688423Z Ray Johnston

Fix CET 28-05-2, Adobe CPSI and Tek do not execute procedure if increment
value is 0. The PLRM does not mention increment value == 0.

EXPECTED DIFFERENCES.

None.

[doc/pscet_status.txt src/zcontrol.c]

2007-02-20T23:54:19.102684Z Alex Cherepanov

Require resource category to be a name in the findresource operator.
Convert 1st operand to a name if it's a string. Fix CET 23-13-04.

[doc/pscet_status.txt lib/gs_res.ps]

2007-02-20T23:35:19.366880Z Alex Cherepanov

Fix CET 20-23-01 - undefine /deviceinfo from systemdict in gs_cet.ps

[doc/pscet_status.txt lib/gs_cet.ps]

2007-02-20T20:54:55.794850Z Alex Cherepanov

Reclassify 20-27-1 as AOK. Contents of $error is device-dependent.

[doc/pscet_status.txt]

2007-02-20T19:38:26.900624Z Ralph Giles

Minor modifications to the parallel job launch script. Take an -r option 
to mark the report with a revision number, and add more stats to the 
output.

[toolbin/tests/run_parallel]

2007-02-20T19:25:10.472981Z Ray Johnston

Update comments on some pages and change some assignments to Alex that
are error message differences. Two more pages resolved.

[doc/pscet_status.txt]

2007-02-20T16:40:21.043788Z Timothy Osborn

Changed status to OK for 09-47I-3 Test11

[doc/pscet_status.txt]

2007-02-20T16:25:41.041973Z Timothy Osborn

Editing change for 09-47B-7, Test01 and Test02

[doc/pscet_status.txt]

2007-02-20T16:23:39.231043Z Timothy Osborn

Changed status to AOK for 09-47B-7, Test01 and Test02

[doc/pscet_status.txt]

2007-02-20T03:55:36.436290Z Alex Cherepanov

Fix CET 29-02 - increment page count after copypage operation.

[doc/pscet_status.txt lib/gs_init.ps]

2007-02-19T20:22:08.118775Z Stefan Kemper

Fix for banding of some images not matching non-banding output.
Added check for an invariant that the translation matches in the 
two matrixes used in rendering.  In this case the non-high level image
path is taken.  A better solution would be to a single matrix, as this will
increase the display list size for some files.

Fixes banding differences in:

035-01.ps
148-11.ps
148.16.ps
1_2001.pdf
455690.pdf
Bug687832.pdf
Bug687840.pdf
a.pdf
adesso4.pdf
bc_02a01_cal.pdf
dave.pdf
file2.pdf
foo.pdf
john_clippedimage.pdf
messenger.pdf
messenger16.pdf
ngnews1.pdf
rotate180.pdf
rotate270.pdf
rotate90.pdf

pcl5ccet/15-03.BIN + ufst
  

[src/gxclimag.c]

2007-02-19T06:16:13.609799Z Ray Johnston

Change 35_all-6 to OK since regression testing shows that it is now OK.

[doc/pscet_status.txt]

2007-02-19T03:19:41.021316Z Alex Cherepanov

Move redefinition of product, version, revision, and serialnumber in CET
prologue from userdict to systemdict to meet CET 20-15-01.

[doc/pscet_status.txt lib/gs_cet.ps]

2007-02-19T00:38:04.570312Z Alex Cherepanov

Reproduce the algorithm used by Adobe to grow the dictionary
to match CET 20-01-01.

[doc/pscet_status.txt src/idict.c]

2007-02-17T15:55:51.631627Z Alex Cherepanov

Reclassify 20-25-01 as OK because it matches Tek and PhotoPrint is
clearly wrong here.

[doc/pscet_status.txt]

2007-02-17T14:14:09.648281Z Alex Cherepanov

Throw /invalidfont error when glyph 0 is accessed but it is missing from
the type 32 font,

DETAILS:
CET 35_all-12 checks, among other things, how glyphshow operator handles
type 32 fonts without glyph 0. This patch add a check to the BuildGlyph
procedure of type 32 font for the missing 0 glyph that throws /invalidfont
error. The offending command name is retrieved from the text enumeration
structure using a new operator: .getshowoperator

[doc/pscet_status.txt src/zcharx.c src/int.mak src/zfont32.c lib/gs_typ32.ps]

2007-02-16T20:40:10.924118Z leonardo

pscet_status.txt : Improving some assignments.

[doc/pscet_status.txt]

2007-02-16T19:46:05.775757Z Henry Stiles

assign unassigned problems.  Add NF category.  NF means "not fixing"
in the near term.  It should be used if we don't have short term plans
to fix a problem.

[doc/pscet_status.txt]

2007-02-16T19:08:03.918575Z Ralph Giles

Improve the encapsulation of the raster db by adding exists() and 
mtime() methods instead of checking the stored files directly in
the caller.

[toolbin/tests/rasterdb.py toolbin/tests/gscheck_raster.py toolbin/tests/gscheck_pdfwrite.py]

2007-02-16T15:27:49.350851Z leonardo

Fix (stroking) : An imprecise miter limit check. Thanks to
Ray Johnston for analyzing this problem and identifying the type
of fix.

DETAILS :

The old code used cap points for computing the miter tangent.
However cap points do not precisely represent the stroke direction
due a rounding to 'fixed'.

The new code uses the precise stroke direction. The new field
partial_line::vector is used to pass the direction for zero length
dashes.

[doc/pscet_status.txt src/gxstroke.c]

2007-02-16T13:25:42.400099Z Alex Cherepanov

Fix error reporting in CET 35_all-06. Add font type 32 to the check for CIDFont
resources, which was missing from the rev. 7574 patch. 

[doc/pscet_status.txt src/zchar.c]

2007-02-16T07:44:07.172841Z leonardo

Fix (type 1 hinter) : An inaccurate estimation of matrix precision.

DETAILS :

The old code doesn't account the Y scale due to a misprint.
It is risky of a fixed overflow while transforming a glyph
to the device space. We didn't detect such glitches in practice.

[src/gxhintn.c]

2007-02-15T10:58:50.217005Z Ralph Giles

Further atomicize the output of the test result lines.

[toolbin/tests/gstestutils.py]

2007-02-15T07:59:50.909402Z leonardo

Fix (type 1 hinter) : An improvement for very small matrices.

DETAILS :

Debugged with this :

/Courier findfont 0.000000000000000000000000000000001 scalefont setfont
72 72 moveto
(ASDFGGH) show
showpage

In fraction_matrix__set the old code computed this->bitshift = 137,
and then 

	this->denominator = 1 << this->bitshift 
	
gave a nonsnse result 512. 
Here is the assembler code for the latter statement built with MSVC8 :

	mov         ecx,dword ptr [eax+14h] 
	shl         edx,cl 

It simply drops higher bytes.
Looks as MSVC compiler bug.

The new code replaces it with strong zero.

[src/gxhintn.c]

2007-02-15T03:43:27.194732Z Alex Cherepanov

Clear the current point in strokepath operator when the original path is empty
to match CET 11-21-07 and 11-28-09.

[doc/pscet_status.txt src/gspaint.c]

2007-02-14T20:47:43.847581Z leonardo

pscet_status.txt : Consider 18-02G-1 as a possible duplicate of 12-01-5.

[doc/pscet_status.txt]

2007-02-14T18:23:43.641152Z Alex Cherepanov

Avoid large memory allocation that can happen when random data are recognized
as a binary object sequence. Add a preliminary syntax check before allocation
of a reference array for a binary object sequence. Bug 688833, customer 1130.

[src/iscanbin.c]

2007-02-14T18:19:39.165881Z Ralph Giles

Updates the the parallel regression running. Construct a report out of 
the log dump, and add a commandline option to run make_testdb instead of 
run_regression.

[toolbin/tests/run_parallel]

2007-02-14T17:31:05.436990Z Henry Stiles

Add analysis from Jan that might be useful in addressing 12-01-05.

[doc/pscet_status.txt]

2007-02-13T21:44:37.122483Z leonardo

Fix (type 1 hinter) : Consider quazi-degenerate CMT as degenerate.

DETAILS :

This improvement is done for PCL tests 18-08.BIN, 18-09.BIN .

[src/gxhintn.c]

2007-02-12T20:12:44.367608Z Timothy Osborn

Changed status to AOK for 09-34-2, 09-34-3, 09-34-7, 09-34-12, 09-34-15, 12-02-18, 12-05-3, 12-07B-10

[doc/pscet_status.txt]

2007-02-12T14:06:50.930532Z Alex Cherepanov

Change the order of allocations because alloc_save_change_alloc() leaves
alloc_change_t structure it allocates in the state that causes SEGV in GC
if where member is not initialized. Bug 688833, customer 1130.

DETAILS:
Allocation of alloc_change_t structure without further initialization happened
when allocation of a new run of references failed. The latter may be easily
triggered by interpretation of random bytes as a binary object sequence.

[src/ialloc.c]

2007-02-12T12:02:52.582461Z leonardo

Fix (interpreter) : Must not remove cshow, kshow procedure operands.

DETAILS :

This improvement is done for CET 13-12-4.

[doc/pscet_status.txt src/zchar.c]

2007-02-12T08:28:32.685785Z leonardo

Fix (interpreter) : Provide a right execution stack on *show errors.

DETAILS :

This improvement is done for CET 13-12-4.
The old code left --%op_show_continue-- on estack when error occors in kshow.

The new code defines a nes field gs_tect_enum_s::enum_client_data,
which stores the initial operator. If an error happens,
op_show_restore puts the initial operator on estack
instead the continuation operator.

Left hand type casts :

	*(op_proc_t *)&penum->enum_client_data = zshow

used to quiet MSVC compiler warnings about function<-->data casts.

[src/gstext.c src/zchar.c src/gxtext.h]

2007-02-11T09:45:31.388669Z leonardo

pscet_status.txt : Improving some inaccurate assignments.

[doc/pscet_status.txt]

2007-02-11T09:00:04.714548Z leonardo

pscet_status.txt : Taking text/character rendering problems 11-07-1, 16-03-2, 16-03-3 .

[doc/pscet_status.txt]

2007-02-09T16:56:36.182205Z Stefan Kemper

Fix logic expression error preventing -dLeadingEdge=[2,3] from running.

[src/gsdparam.c]

2007-02-08T21:07:22.862698Z leonardo

Fix (interpreter) : Early check for degenerate CTM in 'kshow'.

DETAILS :

Debugged with CET 13-12-4.
Note here we don't fix all *show operators,
but provide a minimal change for CPSI compatibility against CET tests
(gstext.c).

Minor change : a misspelled comment in gxchar.c .

[src/gxchar.c src/gstext.c]

2007-02-08T13:33:56.049298Z leonardo

Fix (interpreter) : 'noaccess' must be idempotential operator.

DETAILS :

Debugged with CET 24-09-1.

Also removing an obsolete comment.

Occasionally discovered a regression with 20-15-1.

[doc/pscet_status.txt src/ztype.c]

2007-02-07T21:42:46.099570Z Alex Cherepanov

Check the content of the /Encoding array when the font is created
to detect invalid fonts early and match CET test 16-04-01.

[doc/pscet_status.txt src/zbfont.c]

2007-02-07T17:19:23.733270Z leonardo

Fix (interpreter) : 'definefont', 'show', 'setcachedevice' error inconformity (continued).

DETAILS :

The previous patch has been committed from a wrong revision of ztype.c.

[src/ztype.c]

2007-02-07T16:44:43.843090Z leonardo

pscet_status.txt : Taking 13-12-4 because I fixed a similar problem.

[doc/pscet_status.txt]

2007-02-07T16:30:26.521710Z leonardo

Fix (interpreter) : 'definefont', 'show', 'setcachedevice' error inconformity.

DETAILS :

1. The old code throws different errors than CPSI 
   when a FontMatrix is zero (gstext.c, gxchar.c).

2. With CPSI 'noaccess' trows 'invalidaccess' with read-only dictionaries (ztype.c).

3. 'definefont' must return a read-only object (see PLRM) (gs_fonts.ps).

Debugged with CET 13-13-6, 13-15-3.

[doc/pscet_status.txt src/gxchar.c src/gstext.c lib/gs_fonts.ps src/ztype.c]

2007-02-07T09:39:44.364923Z leonardo

pscet_status.txt : Restoring 09-36-5 as it was in rev 7617.

[doc/pscet_status.txt]

2007-02-07T09:30:56.041828Z leonardo

pscet_status.txt : Restoring 09-36-5 as it was in rev 7617.

[doc/pscet_status.txt]

2007-02-06T11:07:48.194380Z leonardo

Fix (TT font loader) : Removing a dead code.

DETAILS :

This change is algorithmically eauivalent :

    <00030001> .findcmap {
      something1
    } {
      something2
      <00010000> .findcmap {
        something3
      } {
        something4
        <00030001> .findcmap {      %removed
          UNREACHABLE               %removed
        } {                         %removed
          somthing5
        } ifelse                    %removed
      } ifelse
    } ifelse

beacuse something* don't affect .findcmap, and the latter has no side effect .
Actually it dead a long ago.

[lib/gs_ttf.ps]

2007-02-06T09:50:48.237761Z leonardo

Fix (TT font loader) : Account PDF Encoding with embedded symbolic TT fonts 
that include cmap platformID=3 specificID=1 .

DETAILS :

Bug 689083 "PDF embedded TrueType fonts display with wrong characters".

Embedded fonts have symbolic flag and Encoding entry.
In this case PDF 1.6 spec requires to ignore Encoding 
and to create a translation table based on cmap 3.0 or 1.0 .
However the test document does not provide these cmap tables,
so it falls into the "dafault" case (PDF spec 1.6 page 403) :

  "If a character cannot be mapped in any of the ways described above, 
  the results are implementation-dependent."

The old code applied AdobeGlyphList for this case.
It appears different than Acrobat 7 does.
This patch accounts the document's Encoding entry.

Thus the Adobe's implementation dependent behavior appears
to be contradicting to general Adobe's requirement for symbolic fonts.

Please note that ignoring the document's encoding
may give a wrong searchability if the document does not provide ToUnicode.
This one does provide, but we believe that's not general.

[lib/gs_ttf.ps]

2007-02-06T03:26:52.252449Z Alex Cherepanov

Pad short look-up table in the Indexed color space with 0's in PDF documents
when the table comes from a stream. Bug 688987, customer 580.

DETAILS:
Adobe Acrobat 5 detects that the look-up table is short when the table is
a string, unfiltered stream, or ASCIIHexDecode'd stream. When the stream is
FlateDecode'd the length of the decoded data is ignored and the raw memory
in the buffer is used. In most cases it's 0. We pad all streams and pass
strings intact.

[lib/pdf_draw.ps]

2007-02-05T17:21:59.005556Z Ray Johnston

One now AOK, minor cleanup on a few other comments.

[doc/pscet_status.txt]

2007-02-05T16:58:07.399023Z leonardo

Fix (PDF interpreter) : Allow 2-byte ToUnicode CMap for 1-byte fonts.

DETAILS :

Bug 689073 "conversion to PDF fails with rangecheck error".

First, the supplied test case is definitely incorrect.
because it's ToUnicode cmap defines bfchar codes,
which fall outside any code space range defined in the CMap.
Particularly there are 1-byte bfchar codes,
and codespace defines 2-byte codes only.

Second, The PDF spec 1.6. page 472 reads :
"The CMap file must contain begincodespacerange and endcodespacerange
operators that are consistent with the encoding that the font uses. 
In particular, for a simple font, the codespace must be one byte long."
The test case those operators define a 2-byte space for a simple font.

However Adobe handles this document, so we provide a tolerance
for 1-byte fonts. It appears pretty simple : don't substitute
Encoding names for codes over the Encoding length.

Note that codes over the Encoding length appear unuseful
for the test document. In same time they appear consistent 
with codespacerange, so there exist a theoretical possibility that
same CMap is used with another 2-byte font. 
Therefore we keep 2-byte codes intact.

Note that ToUnicode CMap appears unuseful for both
the original and the converted document,
because they use standard glyph names only.
Possibly Adobe don't issue an error due to that.

[lib/pdf_font.ps]

2007-02-04T16:19:41.222295Z leonardo

Fix : MSVC doesn't implement snscanf (continued).

DETAILS :

The last revision doesn't compile with MSVC6,7, 
so this is a better one.
Patch from SaGS.

[src/gp_mswin.c]

2007-02-03T13:30:24.964773Z leonardo

Fix : MSVC doesn't implement snscanf.

DETAILS :

The revision 7672 doesn't compile with Microsoft Visual C++ 2005,
because this compiler doesn't properly define snprintf.

The function snsprintf is a part of the C standard ISO/IEC 9899:1999 (E),
so we decided to define it in the Windows platform-dependent module.
Possibly we'll need a further improvement for other Windows compilers.

Minor change : fixed an MSVC cast warning in iscan.c,
which has been introduced in revision 7672.

[src/iscan.c src/gp_mswin.c src/stdio_.h]

2007-02-03T06:27:14.527305Z L. Peter Deutsch

Updates status to reflect r7672.

[doc/pscet_status.txt]

2007-02-03T06:22:04.579686Z L. Peter Deutsch

Adds an error string and error object to the token scanner state, and an
error object to interpreter contexts, to allow operators to set an arbitrary
object as the "error object" ($error.command) for a PostScript error, and to
allow the token scanner in particular to set special error objects for
syntax errors.  Fixes PS3 CET 23-32-4; partially fixes 21-11-6 and 23-32-2.

[src/icontext.c src/iscan.c src/icstate.h src/interp.c src/iscan.h src/iscanbin.c src/ztoken.c]

2007-02-02T20:29:28.504740Z Ralph Giles

Turn off the strict aliasing warnings in the autoconf gcc build.

Details:

This is slightly dangerous because it can flag real problems the 
optimizer will trip over. However, Ghostscript's method of implementing 
inheritance through macro expansion in structure definitions generates 
hundreds of (not problematic) warnings because the compiler doesn't 
actually trace through to verify that the referenced members are at the 
same offset.

We cannot fix this easily without making the code much more convoluted, 
so in the interests of noticing and fixing other warnings, we've decided
to turn off this particular check.

[src/configure.ac]

2007-02-02T18:54:09.120798Z Alex Cherepanov

Move decryption filter past /SubFileDecode filter installed by
the /resolvestream procedure and remove redundant /SubFileDecode
filter before decryption. The latter didn't handle the case when
the stream length was incorrect. Bug 688722, customer 700.

[lib/pdf_base.ps lib/pdf_sec.ps]

2007-02-02T18:24:56.631552Z leonardo

Fix (FAPI) : A wrong encoding for the font SymbolMT.

DETAILS :

Bug 689049 "ufst fonts not rendering symbol italic greek fonts".

[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PCLPS2]

2007-02-02T04:47:29.781117Z leonardo

Fix (memory management) : Make the NO_INVISIBLE_LEVELS feature be permanent.

DETAILS :

This change is algorithmically equivalent,
It removes some macros, which are not longer in use.

For details about NO_INVISIBLE_LEVELS see
http://ghostscript.com/pipermail/gs-cvs/2006-April/006467.html
Now we believe that NO_INVISIBLE_LEVELS feature 
has been tested enough (during 10 monthes) to become permanent.

Two obsolete macros alloc_restore_state_step, alloc_forget_save
are expanded and removed.

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

2007-02-01T19:48:10.557550Z Alex Cherepanov

Generate unique names and create a new Charstrings entries for all
elements of the encoding array that need it. Bug 688613, customer 1110.

DETAILS:
Old code did this only for FirstChar..LastChar range. Other characters were
added when they were missing in FirstChar..LastChar and dropped otherwise.

[lib/pdf_font.ps]

2007-02-01T17:37:59.714396Z leonardo

Fix (memory management) : Propagate error codes from mark_allocated.

DETAILS :

This change is algorithmically equivalent,
except it returns error code rather than crash
when mark_allocated detects a heap damage.

The old code implemented "assert" with emitting a segfault.
However it's not fully portable,
because some platforms may have no memory protection at all.

The core of the change is in mark_allocated.
Others just an interface changes for passing error codes.

[src/isave.h src/zvmem.c src/isave.c]

2007-02-01T03:06:58.503326Z Alex Cherepanov

Bring TrueType font recognition in .loadfontfile procedure up to
the level of resourcefont procedure in the PDF interpreter. Identify
files starting with <00010000>, (true), (typ1), (ttcf) as TrueType
fonts.

[lib/gs_ttf.ps]

2007-02-01T02:09:25.308943Z Alex Cherepanov

Change the status of 09-56-1 to AOK.  /GenericImagesetter and
/AppleMonitor are sample CRD's left in the final product by a sloppy OEM.
Ghostscript doesn't have nor need them.

[doc/pscet_status.txt]

2007-01-31T22:02:34.998982Z Alex Cherepanov

When Tf refers to an unknown resource name, use the resource name as a font
name. This fully recovers the given sample file and avoids fatal PostScript
errors in other cases. Bug 689037.

[lib/pdf_font.ps]

2007-01-31T21:32:33.370701Z leonardo

pscet_status.txt : Updating 09-47K-5.

[doc/pscet_status.txt]

2007-01-31T20:20:51.337129Z leonardo

Fix : gcc warnings.

DETAILS :

The revision 7659 change appears imperfect,
because it caused a new warning.
Thanks for Peter L. Deutsch for pointing this out.

[src/gdevpdfm.c]

2007-01-31T18:27:26.594065Z Ralph Giles

Remove -Wcast-qual since we cannot easily remove many of these 
warnings.

[src/configure.ac]

2007-01-31T12:49:22.229510Z leonardo

Fix : Cygwin/gcc warnings.

[src/gdevpdfm.c src/vdtrace.h src/gxhintn.c src/gdevpdtc.c src/gdevpsf2.c src/gsdps1.c src/gdevbit.c src/sjpx.c src/gxclrast.c src/ttinterp.c src/ttcalc.c src/gxpath.c]

2007-01-31T07:01:37.959449Z L. Peter Deutsch

Fixes a bug in the DCTDecode filter that could cause segvs (bugs 689064,
689065, 689066).  This fix parallels r3097 for DCTEncode.

[src/zfdctd.c]

2007-01-31T00:09:21.445386Z leonardo

Fix (True Type renderer) : Allow TTC format 2.

DETAILS :

Patch from Tor Andersson.

[src/ttfmain.c]

2007-01-30T00:16:34.929061Z L. Peter Deutsch

Documents reduced diffs in 30-07-3 and 30-08-3 (due to -dLOCALFONTS).

[doc/pscet_status.txt]

2007-01-29T10:58:45.949654Z leonardo

Fix (True Type renderer) : Account glyph bbox when setting up the cache device (continued).

DETAILS :

The patch 
http://ghostscript.com/pipermail/gs-cvs/2007-January/007142.html 
appears incomplete. This one fixes that.

[src/zfcid1.c]

2007-01-28T16:53:40.876356Z L. Peter Deutsch

Update 09-56-3.

[doc/pscet_status.txt]

2007-01-27T22:47:05.784106Z L. Peter Deutsch

Marks 13-05-3 as AOK.

[doc/pscet_status.txt]

2007-01-27T22:21:53.454207Z L. Peter Deutsch

Updates 20-14-1 to reflect CPSI/Tek discrepancy (gs is OK).

[doc/pscet_status.txt]

2007-01-27T22:19:38.871909Z L. Peter Deutsch

(empty)

[doc/pscet_status.txt]

2007-01-27T22:16:46.326515Z L. Peter Deutsch

Changes the first argument of the object_type procedure for gs_memory_t
structures from gs_memory_t * to const gs_memory_t *, to clear up a couple
of compiler warnings.

[src/gsmemlok.c src/gsmalloc.c src/gsmemret.c src/gsalloc.c src/iutil.c src/gsmemory.h]

2007-01-27T20:14:52.445142Z L. Peter Deutsch

Fixes two harmless compiler warnings.

[src/iscanbin.c src/sdcparam.c]

2007-01-27T13:53:57.786714Z Alex Cherepanov

Fix a bug, introduced in rev. 7513, that caused /undefined in setpagedevice
when -dNOBIND flag was in effect and a similar bug in restore.

[lib/gs_dps1.ps lib/gs_setpd.ps]

2007-01-26T16:49:00.711282Z Alex Cherepanov

Move image interpolation tweaks from gs_init.ps which runs after pdf_draw.ps
to gs_img.ps which runs before pdf_draw.ps. This way, image operator can be bound
in pdf_draw.ps subject to NOBIND/DELAYBIND flages. Bug 688890, customer 1110.

[lib/gs_img.ps lib/pdf_draw.ps lib/gs_init.ps]

2007-01-26T16:33:54.732615Z Ray Johnston

Fix some gcc compiler warnings.

[src/gsiorom.c]

2007-01-26T16:17:07.791783Z L. Peter Deutsch

Cleans up a couple of compiler warnings.

[src/idstack.c src/isave.c]

2007-01-26T15:07:50.030216Z Alex Cherepanov

Minor clean-up of pscet_status.txt for better parsing.

[doc/pscet_status.txt]

2007-01-26T14:58:58.339198Z L. Peter Deutsch

Updates doc to reflect fixes made by r7642.

[doc/pscet_status.txt]

2007-01-26T01:11:52.301371Z L. Peter Deutsch

Makes FontDirectory (including Local, Global, and Shared) read-only, using
.forceput, .forceundef, and superexec where necessary to modify them.
superexec now affects undef and .setmaxlength as well as put; .dictcopynew
is renamed .forcecopynew and will store into a read-only dictionary, just
like .forceput.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE required for
fixing numerous diffs in the PS3 CET.

[src/zdict.c lib/gs_dps1.ps lib/gs_fonts.ps src/zgeneric.c lib/gs_init.ps]

2007-01-25T11:10:07.381566Z leonardo

pscet_status.txt : Misprints in 11-19-6 .

[doc/pscet_status.txt]

2007-01-25T11:04:35.971950Z leonardo

pscet_status.txt : (1) Updating 11-19-6 related pages, (2) Passing FontDirectory to Peter.

[doc/pscet_status.txt]

2007-01-24T02:19:24.701691Z Ray Johnston

Change some files to OK that match CPSI that hadn't been updated
due to an error in Ray's regressionthe toolchain from a while ago.
(Problems in toolchain have been resolved).

[doc/pscet_status.txt]

2007-01-24T01:54:13.435614Z Ray Johnston

Change some 09- group tests that were incorrectly reviewed to DIFF (until
Igor can determine whether or not they are a GS problem). At the best they
need to be AOK since GS differs from both CPSI and Tek.

Change some others to OK or AOK to reflect recent improvements detected
during regression testing.

[doc/pscet_status.txt]

2007-01-23T13:42:42.135988Z leonardo

Fix (pdfwrite) : A crash when /OUT pdfmark refers to undefined node.

DETAILS :

Bug 688927 "ps2pdf segfaults on inconsistent subordinate Count parameter in bookmark pdfmarks".

The test document is incorrect, but we must not crash with it.

1. Inserted a check into pdfmark_write_outline.
2. Propagated error code from pdfmark_write_outline.
3. With the test case an error message contained a wrong device name (imain.c).

[src/gdevpdfm.c src/imain.c src/gdevpdf.c]

2007-01-22T23:23:20.791601Z L. Peter Deutsch

Fix a problem created by r7629 (invalidaccess with shading patterns with a
file data source).

[lib/gs_ll3.ps]

2007-01-22T15:44:31.388315Z leonardo

Fix (pdfwrite) : Handle an invalid Type 3 font that misses setcharwidth, setcachedevice[2].

DETAILS :

Bug 688895 "ps2pdf aborts with "Error: /unregistered in --show--"".

The test document embeds an invalid Type 3 font : the character /s32 calls neither
setcachedevice nor setcachedevice2 nor setcharwidth. 

PLRM3 page 339 reads :

[beg quote]
BuildGlyph must execute one of the following operators to pass width and
bounding box information to the PostScript interpreter. This must precede 
execution of any path construction or painting operators describing the glyph.

setcachedevice establishes a single set of metrics for both writing modes, and
requests that the interpreter save the results in the font cache if possible.

setcachedevice2 (LanguageLevel 2) establishes separate sets of metrics for 
writing modes 0 and 1, and requests that the interpreter save the results in the font
cache.

setcharwidth passes just the glyph's width (to be used only once), and 
requests that the glyph not be cached. This operator is typically used only if the glyph
description includes operators to set the color explicitly.
[end quote]

Adobe appears to handle such fonts silently in both Postscript and PDF.
This patch provides same behavior. 

The difference from the old code appears pretty small :
the old code set the charproc_accum flag while executing pdf_text_set_cache,
and the new one does when entering the substream.
The new code even more natural.

In the PDF output, for incorrect glyphs the Width array element 
is set to zero, and d0, d1 operators are not written into the charproc.

Printing a warning about the incorrect charproc appears difficult
due to the necessity to suppress redundant messages.
It needs to add a new field into the gs_font structure.
We do not like to modify the general gs_font structure for such small reason.
Postponing this change until it is requested in prcatice.

[src/gdevpdtt.c src/gdevpdti.c]

2007-01-22T14:34:04.454804Z leonardo

Fix : MSVC8 build of revision 7630 crashes in zupath.

DETAILS :

Herre are rules from "INTERNATIONAL STANDARD cISO/IEC ISO/IEC 9899:1999 
(E) Programming languages - C" :

unary-expression: unary-operator cast-expression
cast-expression: unary-expression
unary-expression: postfix-expression
postfix-expression: postfix-expression ++

Thus *pnargs++ analyzes as *(pnargs++) .

[src/zupath.c]

2007-01-22T10:29:52.528717Z leonardo

Fix (PS interpreter) Discontinue the interpretation on interrupt.

DETAILS :

Bug 688817 "Endless 'interrupt in interrupt' with GSAPI".

When a GSAPI client tries to stop GS by returning a negative value 
from the polling callback function, GS enters an infinite loop 
handling cascading "interrupt" exceptions.

Thanks to SaGS for the patch.

[doc/API.htm src/interp.c]

2007-01-22T07:55:43.384402Z Henry Stiles

Changes to reflect Peter's CET report.

[doc/pscet_status.txt]

2007-01-22T03:26:28.018030Z L. Peter Deutsch

Fixes bug: writeobject/printobject didn't zero out the 'unused' fields in
marks and nulls.  (PS3 CET 23-36-2)

[src/zbseq.c lib/gs_btokn.ps src/iscanbin.c]

2007-01-22T02:44:19.583444Z L. Peter Deutsch

Fixes bug (PS3 CET 17-0[1-5]-3): if a user path ended with extra operand
values, they were not popped from the stack.

[src/zupath.c]

2007-01-21T17:53:13.749920Z L. Peter Deutsch

Fixes the ReusableStreamDecode filter so that it allocates the stream in the
correct VM (per the PLRM3), rather than the current VM, even when it is
necessary to read the entire contents of the source into a string.  (PS3 CET
23-12W-2) Also fixes filters in general so that they allocate the stream in
the correct VM, rather than always allocating in local VM if the current VM
is local.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.

[src/zfilter.c lib/gs_frsd.ps src/zfrsd.c]

2007-01-21T09:36:41.173881Z leonardo

Fix (Type 1 hinter) A crash while recognizing a missed flex.

DETAILS :

Bug 688931 "gs segfaults in t1_hinter__fix_missed_flex".

The old code didn't check whether a contour has
enough poles for flex.

[src/gxhintn.c]

2007-01-21T09:35:30.219957Z leonardo

Unwind 7625 due to wrong log message.

[src/gxhintn.c]

2007-01-21T03:37:46.930537Z Alex Cherepanov

Apply standard font substitutions in lib/pdf_fonts.ps::TTfonts 
only for fonts that are not already known to the PS intrepreter. 
This allows to customize font substitutions via the Fontmap.

The change affects only TrueType fonts that are NOT embedded 
(less portable PDFs, for which GS already gives a warning).
Bug 688901, patch from SaGS.

[lib/pdf_font.ps]

2007-01-20T20:44:36.957513Z leonardo

Fix (pdfwrite) Don't reassign object ID for shared descendent fonts.

DETAILS :

Bug 689054 "pdfwrite : missed object".

The old code erroneusely assigned object ID at second time
when a descendent CID font is shared with several Type 0 fonts.

[src/gxhintn.c]

2007-01-20T18:39:23.028704Z leonardo

Fix (pdfwrite) Don't reassign object ID for shared descendent fonts.

DETAILS :

Bug 689054 "pdfwrite : missed object".

The old code erroneusely assigned object ID at second time
when a descendent CID font is shared with several Type 0 fonts.

[src/gdevpdtf.c]

2007-01-20T12:12:17.802265Z leonardo

pscet_status.txt : Updating 29-05-1.

[doc/pscet_status.txt]

2007-01-20T12:09:37.803100Z leonardo

pscet_status.txt : Updating 29-05-1.

[doc/pscet_status.txt]

2007-01-20T11:33:47.048661Z leonardo

pscet_status.txt : Updating 11-19-6 related pages.

[doc/pscet_status.txt]

2007-01-20T00:40:23.279249Z Alex Cherepanov

Adobe interpreters report simple errors in undefineresource operator but
report more complicated errors in the executable name. We are trying to
reproduce this. CET 23-33.

[doc/pscet_status.txt lib/gs_res.ps]

2007-01-19T14:00:14.789036Z Alex Cherepanov

Adobe interpreters have resourcestatus operator but report errors in the
executable name. We do the same now.

[doc/pscet_status.txt lib/gs_res.ps]

2007-01-19T04:09:50.480586Z L. Peter Deutsch

Updates the PDF interpreter for the change in the 'token' operator (r7616),
which now may or may not pop its operand if an error occurs.

[lib/pdf_base.ps lib/pdf_rbld.ps]

2007-01-18T20:25:30.206946Z leonardo

Provide the CPSI compatibility for strokepath.

DETAILS :

This is 1st of 2 closely related changes to gxstroke.c .
It changes behavior in the CPSI compatibility mode only.
The main workers are stroke_add_compat, stroke_add_initial_cap_compat.

The strokepath contours are always positive rather some
older CPSI versions generate negative ones in some circumstances.
We believe that positive contours only is the correct behavior,
because it complies with other contours such as arcs or
character outlines. Otherwise non-zero winding rule filling
gives an unexpected result when combining various paths in a
single path.

[doc/pscet_status.txt src/gxstroke.c]

2007-01-17T21:10:47.794679Z L. Peter Deutsch

For Adobe compatibility (PS3 CET 23-32), changes the token scanner so that
it pops the source operand from the stack and retains a copy of it
internally.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE: it affects all
callers of scan_token (see src/iscan.h and src/itoken.h), and it also
changes the error behavior of the 'token' operator (the operand is no longer
on the stack if the error is detected during scanning, e.g. syntaxerror).

[src/imain.c src/iscan.c src/itoken.h src/ziodev.c src/interp.c src/iscan.h src/inobtokn.c src/iccfont.c src/iscanbin.c src/imainarg.c src/ztoken.c src/iscanbin.h]

2007-01-17T19:59:36.495603Z Ray Johnston

Fix for (yet another) a PDF file that does not meet Adobe's PDF spec,
but Adobe Reader opens silently. In this case there is an Annotation
that is missing the required /N (Normal Appearance) entry. Bug 689045
for customer 531. Thanks to "SaGS" for this fix.

[lib/pdf_main.ps lib/pdf_draw.ps]

2007-01-17T06:09:38.193145Z L. Peter Deutsch

Removes an unneeded inclusion of interp.h in zfile.c.

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

2007-01-17T04:50:36.979684Z Henry Stiles

23-12E-2 fix/analysis from Peter.

[doc/pscet_status.txt]

2007-01-17T03:36:18.909547Z L. Peter Deutsch

Fixes bug (PS3 CET 23-32-4): immediately evaluated names in binary object
sequences were treated as literal (not evaluated).

[src/iscanbin.c]

2007-01-16T17:07:06.634739Z leonardo

Revert strokepath to revision 7213.

DETAILS :

This is 1st of 2 closely related changes to gxstroke.c .

We intend to provide a full CPSI compatibility for
strokepath in the CPSI compatible mode.
Recent chages do not provide it.
Therefore we unwind to the last clean revision,
which we had before starting PS CET compliance.
We will commit a fully different implementation
as the next patch.

This change restores the gxstroke.c revision 7213,
which we had immediately before the 7464 change.
Thus it effectively unwinds the following changes :
Revision 7464 Fri Dec  8 02:22:36 2006 UTC by leonardo 
Revision 7488 Mon Dec 11 00:56:42 2006 UTC by lpd 
Revision 7501 Wed Dec 13 04:15:29 2006 UTC by leonardo 
Revision 7563 Thu Jan  4 18:36:37 2007 UTC by ray 

Rather this change does regress pscet_status.txt,
we don't update pscet_status.txt with this it.
Will update it in the next related patch.

[src/gxstroke.c]

2007-01-16T03:28:39.350220Z Ray Johnston

Fix for regressions introduced with rev 7217 (returning proc as array
rather than packedarray for PS CET 09-33-5.PS. Fixes FTS 050-01.ps and
246-01.ps.

[lib/gs_dps2.ps]

2007-01-15T16:05:00.071592Z leonardo

pscet_status.txt : Updating 16-01-1 and related pages.

[doc/pscet_status.txt]

2007-01-15T11:22:36.413144Z leonardo

Provide the CPSI compatibility for Type1 subglyph placement (continued 3).

DETAILS :

This change is algorithmically equivalent.
It provides a better data naming and documentation.

1. save_lsb is renamed into compound_lsb.
2. Improved some comments.

[src/gstype1.c src/gxtype1.c src/gxtype1.h]

2007-01-15T10:59:56.313683Z leonardo

Provide the CPSI compatibility for Type1 subglyph placement (continued).

DETAILS :

This change is algorithmically equivalent.
It provides a better data naming and documentation.

1. save_asb is renamed into asb.
2. Improved comments for asb_diff, adxy.
3. Used adxy in the overall_x_offset formula in stead save_adxy.
   The letter is a temporary cell for passing seac info across
   the baze glyph.

[src/gstype1.c src/gxtype1.h]

2007-01-15T10:56:38.302709Z leonardo

Provide the CPSI compatibility for Type1 subglyph placement (continued).

DETAILS :

This change is algorithmically equivalent.
It provides a better data naming and documentation.

1. save_asb is renamed into asb.
2. Improved comments for asb_diff, adxy.
3. Used adxy in the overall_x_offset formula in stead save_adxy.
   The letter is a temporary cell for passing seac info across
   the baze glyph.

[src/gxtype1.c]

2007-01-13T18:40:16.945779Z L. Peter Deutsch

Fixes some long-standing data-dependent bugs in the CCITTFaxDecode filter
caused by incorrect initialization.  PS3 CET 23-12E-2.  Also cleans up some
formatting.

[src/scfd.c src/scfe.c src/scfx.h]

2007-01-12T22:15:32.979541Z Russell Lang

Remove old 16-bit Windows code.

[src/gs16spl.c src/gs16spl.rc src/dwmain16.def doc/Develop.htm src/gswin386.rc src/gs16spl.def]

2007-01-12T21:08:02.193820Z Ray Johnston

Mark more files found that had been previously fixed that were still
DIFF. Mark 12-07C-7 OK since it matches Tek hardcopy (no thin lines).

[doc/pscet_status.txt]

2007-01-12T10:23:50.245821Z leonardo

Provide the CPSI compatibility for Type1 subglyph placement.

DETAILS :

Debugged with CET 16-01-1 16-02-1 16-10-1 16-10-2.

The new 'seac' offset formula 'overall_x_offset'
has been empirically derived from placements of
the "round" accent subglyph in the CPSI rendering. 

[doc/pscet_status.txt]

2007-01-12T10:23:19.005476Z leonardo

Provide the CPSI compatibility for Type1 subglyph placement.

DETAILS :

Debugged with CET 16-01-1 16-02-1 16-10-1 16-10-2.

The new 'seac' offset formula 'overall_x_offset'
has been empirically derived from placements of
the "round" accent subglyph in the CPSI rendering. 

[src/gstype1.c src/gxtype1.c src/gxtype1.h]

2007-01-11T18:55:08.974207Z Ray Johnston

Updates for pages fixed as of rev 7598.

[doc/pscet_status.txt]

2007-01-11T10:52:11.037894Z leonardo

pscet_status.txt : Closing issues which appear fixed with rev 7542.

[doc/pscet_status.txt]

2007-01-11T00:01:03.763372Z L. Peter Deutsch

Changes user paths so that in CPSI mode, setbbox appends a moveto only if
the path is otherwise empty.  Fixes a regression in PS3 CET 11-17 caused by
r7512.

[src/zupath.c]

2007-01-10T20:20:52.346731Z Alex Cherepanov

Adobe interpreters appear to accept sampled images in the pattern
color space using the base color space instead of the pattern space.
We do the same in the compatibility mode to meet CET 12-07a-12.

[doc/pscet_status.txt src/zimage.c src/zimage3.c src/iimage.h src/int.mak src/ztrans.c]

2007-01-10T17:04:22.171453Z leonardo

pscet_status.txt : Assigning the 29-05-1 regression.

[doc/pscet_status.txt]

2007-01-10T14:55:01.076741Z leonardo

pscet_status.txt : Taking assignment for strokepath problems.

[doc/pscet_status.txt]

2007-01-10T14:47:52.238215Z leonardo

Implementing a smart filling rule.

DETAILS :

With CET 16-01.PS CPSI fills some contours with the even-odd rule,
and others with non-zero rule.

We implement a new rule, which counts signed even-odd numbers 
for each contour independently, and then summarizes them.

The new rule works for all characters in CPSI mode only.
Probably we don't need it for True Types,
but currently the filling algorithm doesn't recieve
the information about the font type.
Will do later on necessity.

For a faster result we generate more 4 instances of
TEMPLATE_spot_into_trapezoids, which deal with the smart winding only.

Removing Raph's hack about even-odd filing rule for Type 1 (zchar1.c).
The new rule perfectly works instead that together with
the contour sign adjustment, which was inplemented few days ago.

The new array line_list::windings stores winding numbers per contour.
The macro ADVANCE_WINDING computes the smart winding rule.
We wouild like to optimize it (to get a smaller portable code),
suggestions are welcome.

[doc/pscet_status.txt src/gxfilltr.h src/gxfill.c src/zchar1.c src/gxfill.h]

2007-01-10T02:15:52.050522Z L. Peter Deutsch

Adds some PLRM-required but formerly missing legality checks for binary
object sequences, mostly for the benefit of PS3 CET 23-32-2.

[src/ibnum.h src/iscanbin.c src/ibnum.c]

2007-01-09T23:41:08.403891Z leonardo

Type 1 hinter : Implementing a contour sign normalization, part 6.

DETAILS :

Bug 687826 "some glyphs filled in".
This old bug contains more test cases,
which allowed to improve the algorithm.

1. gx_intersect_small_bars returned a root,
   which appears outside the bar 1. 
2. A wrong index in t1_hinter__intersect_curve_bar. 
3. A wrong index in t1_hinter__contour_intersection.
4. Increased MAX_NORMALIZING_CONTOURS to 5 as in the '%' sign.
6. The check for contours number was wrong in 
   t1_hinter__fix_contour_signs.

[src/gxhintn1.c src/gsmisc.c]

2007-01-09T21:15:01.944411Z leonardo

Type 1 hinter : Implementing a contour sign normalization, part 5.

DETAILS :

Removes bugs from the last patch.
It finaly closes Bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)",
but CET 16-01.PS still has problems.

1. 'e2' was wrong - Debugged with a.pdf .
2. (optimization) Return if no nesting contours.
   nesting_sum works for that.
3. Removed the check "this->subglyph_count <= 1",
   which was entirely wrong.   
4. In zchar1.c restoring Raph's trick about 
    using even-odd filling rule in the CPSI compatible mode.
   It was unintentionally removed by the last patch.
   No, we don't want it to live prmanently,
   but now it's not the right time for removing it.

[src/gxhintn1.c src/zchar1.c]

2007-01-09T18:40:39.016764Z leonardo

Type 1 hinter : Implementing a contour sign normalization, part 4.

DETAILS :

This fixes the bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)".

The new code recognized wrong contour signs
for non-resident Type 1,2,11 fonts
and fix contour signs with reversing wrong contours.

[src/lib.mak src/gxhintn.c src/gxhintn1.c doc/Develop.htm src/gxhintn.h src/zchar1.c]

2007-01-09T18:36:48.563296Z leonardo

Type 1 hinter : Implementing a contour sign normalization, part 3.

DETAILS :

This is continuation of the preparation for fixing the bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)".

This change is algorithmically equivalent.
It factors out gx_intersect_small_bars from the shading code.

[src/lib.mak src/gxfixed.h src/gsmisc.c src/gxshade6.c]

2007-01-09T14:19:27.902081Z L. Peter Deutsch

Fix a typo in the description of 23-12U-1 (which is now fixed).

[doc/pscet_status.txt]

2007-01-09T01:54:00.530728Z L. Peter Deutsch

Changes the token scanner so that ^D is not a self-delimiting character when
scanning a string.  This still treats ^D as a self-delimiting end-of-job
marker when reading from a file, while matching CPSI on PS3 CET 21-11-2.

[src/iscan.c lib/gs_pdfwr.ps]

2007-01-09T01:39:44.244785Z Henry Stiles

Update to reflect Peter's fixes and analyis.  Also reassign color
problems to Raph.

[doc/pscet_status.txt]

2007-01-08T22:02:29.175398Z Ray Johnston

Updates from regressions, Assign some previously unassigned pages,
correct some 'bad entry' lines (seen by the perl script).

Note there have been many pages that had significant differences
previously marked OK, that are now fixed. We may need to recheck
some of the high difference count pages that have no explanation
(such as "matches Tek hardcopy").

[doc/pscet_status.txt]

2007-01-08T20:12:52.623854Z Ray Johnston

Make sure there is a default value (0) for DEBUGSYSM. Fixes an non
debug syntax error seen by nmake.

[src/msvccmd.mak]

2007-01-08T15:04:53.833474Z leonardo

Type 1 hinter : Implementing a contour sign normalization, part 2.

DETAILS :

This is continuation of the preparation for fixing the bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)".

This change is algorithmically equivalent -
the new stuff works idle.
It define necesary data structures and flows
for storing information about subglyphs.
The implementation itself will be a next step.

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

2007-01-08T12:50:48.444121Z leonardo

Type 1 hinter : Implementing a contour sign normalization, part 1.

DETAILS :

This is a preparation for fixing the bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)".

Several fonts in wild appear to violate the Type 1
restriction for inner contours to be of negative sign.
They cause a wrong rendering of some glyphs,
such as 'o' in the test case. Rather we consider
those fonts to be incorrect, we need a workaround for them
because this annoying problem appears too frequently.
At last CET 16-01.PS defines such font.

We assume that True Types always have right contours,
because (1) we didn't meet such cases in practice.
We also assume that resident fonts always have right contours,
bvecause resident fonts usually don't come from wild.

Therefore we need 4 working modes for type 1 hinter :
1. "pass_through" : no hinting, no contour adjustment.
   Works for resident fonts of a big size,
   and/or when the target is the path bbox accumulator.
2. "disable_hinting" : no hinting, contour ajdustment is on.
   Works for non-resident Type 1 fonts of a big size,
3. The hinting is enabled, the contour adjustment is disabled.
   Works for not-big non-resident fonts except True Types.
   We want to save CPU time expense from the contour adjustment.
4. The hinting is enabled, the contour adjustment is enabled.
   Works for not-big embedded Type 1 fonts.

This change is algorithmically equivalent.
It define necesary flags and data flows,
which will be used in the implementation.
The implementation itself will be a next step.

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

2007-01-08T05:50:33.566930Z L. Peter Deutsch

Cleans up a couple of compiler warnings.

[src/geninit.c]

2007-01-08T04:15:31.387003Z Alex Cherepanov

Change status of CET 12-13-5 to OK. The test works for me. There's no
differences around 30 and 31 in left column or anywhere else. The checksum
matches too.

[doc/pscet_status.txt]

2007-01-07T21:05:45.304456Z Ray Johnston

Update to reflect improvements from rev 7563 (strokepath fix). Thanks to
Tim Osborn for this fix. Minor revision to analysis on some that still have
other problems in addition to the strokepath.

Note that a few pages that should have been classified DIFF had substantial
difference counts due to the strokepath incompatibility. These remain as
OK, but the status line now reads "Fixed by rev 7563."

[doc/pscet_status.txt]

2007-01-07T17:44:41.459825Z leonardo

Fix (shadings) : Ignore a huge BBox.

DETAILS :

Bug 689027 "Error: /rangecheck in --.buildshading2--".

A buggy software "xFlow Normalizer 1.0" created a huge shading BBox.
Adobe appears to ignores it silently.
In this case the clipping box sets a natural extent for the shading.

[src/gsshade.c]

2007-01-07T06:48:38.482771Z Ralph Giles

Code cleanups. Add a license, and move some things into functions. This 
version has not been tested.

[toolbin/tests/run_parallel]

2007-01-07T06:47:46.661532Z Ralph Giles

Check in rough script for launching a parallel regression run on an 
OpenPBS-based cluster queuing system. This script runs 'upnodes' and 
chooses a likely target and job size, generates comparefiles.* and 
testing.cfg.* for each node, then submits the job.

Output is returned as a file in the launch directory 
'run_regression..e' when the run is finished.

[toolbin/tests/run_parallel]

2007-01-07T06:42:22.794330Z Ralph Giles

Changes to the regression tools to facilitate parallel runs.

DETAILS:

Add a scratchdir entry to testing.cfg to specify where temporary files
should be created instead of using the current working directory. 

Override various TextTestResult methods to print 'checking...result'
all at once instead of waiting while the job runs to reduce log 
mangling. The old behaviour was helpful behavior in an interactive 
serial run, but not running in batch mode.

If the PBS_NODENUM environment variable is set, use it to select a 
custom testing.cfg.

If PBS_NODENUM is set, only run the source tests when it is zero to
avoid duplicating these.

[toolbin/tests/gscheck_raster.py toolbin/tests/gstestutils.py toolbin/tests/gscheck_pdfwrite.py toolbin/tests/run_regression toolbin/tests/testing.cfg.example toolbin/tests/gsconf.py]

2007-01-06T20:35:32.380662Z leonardo

Fix : 'show' must throw error when the current font is a CID font resource.

DETAILS :

Only 'glyphshow' is allowed when the current font is a CID font resource,
except for a cshow procedure - see comment in op_show_finish_setup.

Debugged with CET 32_all.PS page 14.

[doc/pscet_status.txt src/zchar.c]

2007-01-06T19:16:16.587431Z leonardo

pscet_status.txt : Improve some syntax/analyzis/assignments.

[doc/pscet_status.txt]

2007-01-06T08:01:06.162417Z Ralph Giles

Correct a typo.

[toolbin/tests/check_source.py]

2007-01-06T07:46:31.224903Z Ralph Giles

Exempt the jobseparator scriptlet from the Id line check.

[toolbin/tests/check_source.py]

2007-01-06T07:46:01.131216Z Ralph Giles

Exempt the jobseparator scriptlet from the Id line check.

[lib/jobseparator.ps]

2007-01-06T07:42:52.202240Z Ralph Giles

Add and Id line and appropriate properties to gs_cet.ps.

[lib/gs_cet.ps]

2007-01-05T21:23:35.938833Z leonardo

Fix : Cygwin/gcc warnings.

[src/zimage.c src/gxfcopy.c src/zcharx.c src/int.mak src/ttfmain.c src/gstext.h src/gdevpdti.c]

2007-01-05T20:44:21.517052Z leonardo

Fix (True Type renderer) : Account glyph bbox when setting up the cache device.

DETAILS :

Debugged with CET 34_all.PS page 4.
An embedded True Type font has an incorrect FontBBox :
parts of glyphs appear outside it. Uniting it with
glyph bbox helps. However using glyph bbox only
doesn't work for Dynalab fonts, so this change includes
a voluntary solution which unites FontBBox and glyph bbox.

This patch slightly change the prototypes of 
gs_type42_data_s::get_outline and gs_font_cid2_data_s::get_outline,
and their implementations. We believe that this change
must be compatible, except a case of a wrong walue was passed 
to 'wmode' argument. The PCL group must check that 
it never pass other values than 0 or 1.
In the new code the 'wmode' argument is replaced
with options enum, and other values require a bigger
array for the last argument. See commenmts in code
and the extended implementation in gs_type42_default_get_metrics.

The function zchar42_set_cache has been re4written 
to simplify its understanding. Now it accounts
the glyph bbox. We noticed that the old code 
with WMode 1 set 'w' equal to horizontal width,
which looks incorrect. The new code sets the vertical width.
Also the old code did an unuseful call to get_metrics
when WMode=1 and the vertical metric presents in the font.

The function gs_type42_default_get_metrics has been removed
due to low use. The new code replaces it with pfont->data.get_metrics.
We didn't find calls to it from the PCL code.

[doc/pscet_status.txt src/zchar42.c src/gxfont42.h src/gstype42.c src/gxfcid.h]

2007-01-05T05:19:34.969963Z Henry Stiles

Changes required for gslite release.  The new error macros did not
work with MSVC version 8.  There are still portability issues with
these macros that preclude regular use in ghostscript but they are
used by a few clients that have "looser" portability requirements.
gp_mslib.c (probably dead code) did not compile.

[src/gp_mslib.c src/gserror.h]

2007-01-05T01:53:32.094694Z Alex Cherepanov

Change the status of CET 13-03-04 and 13-12-06 to OK.
Ghostscript matches Tek hardcopy; PhotoPRINT is wrong here.

[doc/pscet_status.txt]

2007-01-05T00:48:11.270570Z Alex Cherepanov

Change the order of argument checking in awidthshow operator. Check that the
character code is in the range 0 to 255 for the base fonts. Fix CET 13-02-05. 

[doc/pscet_status.txt src/zchar.c]

2007-01-04T18:36:37.189208Z Ray Johnston

Fix stroke line cap and line join for Adobe compatibility. Fixes PS CET pages:
09-24-2 09-25-2 09-26-2 09-27-3 09-30-3 09-33-3 09-38-2 09-40-23 09-41-2 09-42-5
09-43-5 09-44-5 09-48-2 09-49D-1 09-52-2 09-53-5 09-54-6 09-57-14 11-07-5 11-21-3
11-28-2 13-13-8. Thanks to Timothy Osborn for this fix.

DETAILS:

There is a slight performance impact (6%) so a follow-up change will be developed
that only generates the new style (Adobe compatible) paths when we are doing the
"strokepath" operation, not for normal "stroke".

[src/gxstroke.c]

2007-01-04T15:48:57.600517Z Alex Cherepanov

Change the order of argument checking in widthshow operator. Check that the
character code is in the range 0 to 255 for the base fonts. Fix CET 13-26-04. 

[doc/pscet_status.txt src/zchar.c]

2007-01-03T14:39:50.977219Z leonardo

pscet_status.txt : Updating status for 34_all-4.

[doc/pscet_status.txt]

2007-01-03T14:38:47.322215Z leonardo

pscet_status.txt : Updating status for 34_all-4.

[doc/pscet_status.txt]

2007-01-03T10:50:15.001696Z leonardo

pscet_status.txt : Updating status for 38-01-1.

[doc/pscet_status.txt]

2007-01-03T10:30:52.705972Z leonardo

Fix : Adding OrigFont to CIDFont resources for CPSI conformity.

DETAILS :

Debugged with CET 33_all.PS .

[doc/pscet_status.txt lib/gs_cidfn.ps]

2007-01-03T09:58:15.957518Z leonardo

pscet_status.txt : Updating status for 23-36-2.

[doc/pscet_status.txt]

2007-01-03T08:43:12.193598Z leonardo

pscet_status.txt : Fixing some misprints.

[doc/pscet_status.txt]

2007-01-03T08:33:48.854716Z leonardo

pscet_status.txt : Updating status for 21-11-2.

[doc/pscet_status.txt]

2007-01-02T22:03:43.389414Z Ray Johnston

Update with some fixes found during regression of rev 7534.

[doc/pscet_status.txt]

2007-01-02T19:58:30.890285Z Ray Johnston

Fix for yet another broken PDF that AR handles silently, specifically, a
/Count value of 0 for the Pages tree. When the Count is 0, find the page
count by walking the Pages tree. Bug 689008 for customer 580 and 460.

[lib/pdf_main.ps]

2007-01-02T15:05:34.582481Z leonardo

pscet_status.txt : Updating status for 18-02G-1.

[doc/pscet_status.txt]

2007-01-02T15:02:58.997085Z leonardo

pscet_status.txt : Updating status for 18-02G-1.

[doc/pscet_status.txt]

2007-01-02T14:22:21.841353Z leonardo

pscet_status.txt : Updating status for 18-01A-1.

[doc/pscet_status.txt]

2007-01-02T11:36:03.990718Z Russell Lang

Update the Windows INF file to allow the Ghostscript PPD to be
installed on 64-bit Windows.

[lib/ghostpdf.inf]

2007-01-02T10:05:09.465463Z leonardo

pscet_status.txt : Updating status for some files.
Delaying glyph rendering problems because they require 
a deep development. Marking them with "Assign:-".

[doc/pscet_status.txt]

2007-01-02T04:58:50.214832Z Alex Cherepanov

Implement setucacheparams, ucachestatus using MaxUPathItem user parameter
to match CET 27-05-02. The test results mow match Tek 360 hard copy.

[doc/pscet_status.txt lib/gs_dps2.ps lib/gs_lev2.ps]

2007-01-01T10:13:59.639678Z leonardo

pscet_status.txt : Updating status for 14-12-3.

[doc/pscet_status.txt]

2007-01-01T03:55:18.804213Z Alex Cherepanov

CET 13-10-5 is marked as Works for me in rev. 7543

[doc/pscet_status.txt]

2007-01-01T03:00:15.457477Z Russell Lang

Remove documentation about Windows printing to LPT1: because it 
hasn't worked since we ceased to include gs16spl.exe.
Prevent attempts to use -sOutputFile="LPT1:" on Windows because 
it locks up.

[doc/Use.htm src/gp_mswin.c doc/Install.htm]

2006-12-31T22:14:23.520668Z Russell Lang

Remove Windows 16-bit and Win32s printer code.  
Update release year in Windows installer to 2007.

[src/bcwin32.mak src/dwsetup.rc src/winint.mak src/watcw32.mak src/gp_mswin.c src/gp_msprn.c]

2006-12-31T17:50:40.948265Z leonardo

Fix : Early check a text to font compatibility.

DETAILS :

Running CET 14-03.PS page 2, CPSI trows a rangechek with no painitng charaters.
However Ghostscript performs the check immediately before
rendering a character. If the check fails in a middle of the text,
the preceding charaters are painted. 

The new code scans entire text before rendering a character.
We do so in CPSI compatibility mode only,
because we don't want a performance flaw for
dual scanning in the Ghostscript native mode.

1. gs_text_size is renemed into gs_text_count_chars 
   for a better reflection of its semantics.

2. The check in zyshow is made conditional
   depending on CPSI_mode. This is an improvement
   for the last patch, which is not related to 
   the current problem (zcharx.c).

3. Inserted the text scanning into op_show_finish_setup
   (zchar.c).

4. After we did all bove, 14-01.PS got cycled in alloc_char_in_chunk.
   This effect occasionally depends on 1-3 because 
   they change the cache memory map.
   Fixed with inserting the call to gx_free_cached_char into gxchar.c .

5. gs_text_count_chars was implemented with gs_text_begin,
   which appears too heavy for the simple text decomposition.
   Particularly it caused a proiblem with stringwidth,
   because gs_text_begin establishes an extra save level
   for stringwidth. The new code calls gs_text_enum_init 
   instead gs_text_begin. Due to that gs_text_count_chars 
   is moved to gxchar.c, which defines default_text_procs privately. 

[doc/pscet_status.txt src/gxchar.c src/gstext.c src/zcharx.c src/zchar.c]

2006-12-30T22:58:47.430654Z Ralph Giles

Record the regression run time in the nightly report.

[toolbin/tests/run_nightly]

2006-12-30T13:31:18.340006Z leonardo

Fix : Don't check type of extra width elements with yshow.

DETAILS :

CET 13-29.PS page 2 defines a longer width array
then the text requires, and CPSI silently ignores extra elements.
So yshow needs to compute exact number of characters 
to know how many elements to load and type check.

The new function gs_text_size is factored out from the
recently added code so that zcharx.c can share it.

Minor change : Improving a comment in gspaint.c,
with another issue recently discovered.
It's not related to the yshow problem.

[doc/pscet_status.txt src/gstext.c src/zcharx.c src/gstext.h src/gspaint.c]

2006-12-30T11:50:34.673289Z Alex Cherepanov

Updating status for 11-20-9

[doc/pscet_status.txt]

2006-12-30T11:06:55.417315Z leonardo

pscet_status.txt : Updating status for 13-23-1.

[doc/pscet_status.txt]

2006-12-30T10:40:18.858942Z leonardo

pscet_status.txt : Updating status for 10-15-2 (final).

[doc/pscet_status.txt]

2006-12-30T09:08:31.731942Z leonardo

pscet_status.txt : Updating status for 10-15-2.

[doc/pscet_status.txt]

2006-12-30T06:15:56.641068Z Ray Johnston

Note some pages that now have no differences as detected during
regression testing.

[doc/pscet_status.txt]

2006-12-29T20:59:39.890840Z leonardo

Fix : The CPSI compatibility for 'clippath' starting point.
pscet_status.txt : A better classification for strokepath problems.

DETAILS :

Debugged with :
CET 13-22.ps page 6, the item much13;
CET 11-11.PS page 6, the item much13
See comment in code.

[doc/pscet_status.txt src/gsdps1.c]

2006-12-28T13:08:56.928281Z leonardo

pscet_status.txt : Passing more problems to ray since they have same reason - 
either strokepath ending point, or clippath starting point.
For details see comments added into pscet_status.txt .

[doc/pscet_status.txt]

2006-12-28T09:51:38.919829Z leonardo

pscet_status.txt : Changing assignment for 13-22-6 cash25 as discussed with Ray.

[doc/pscet_status.txt]

2006-12-27T18:27:55.782637Z leonardo

Fix : 'clippath' didn't set the current point.

DETAILS :

The bug has been introduced when we implemented the current point in 'double'.
It caused an inconsistent result when 'show' follows 'clippath',
because 'show' still uses pgs->ppath->position.
Debugged with CET 13-22.ps page 6, the item much13. 

We would like to avoid the usage of pgs->ppath->position,
but currently we nave no time for a complete analyzis.
Delaying it for better times. See bug 689031.

[src/gspath.c]

2006-12-27T11:59:15.544173Z leonardo

pscet_status.txt : A better analyzis for 13-20-6, 13-22-6.

[doc/pscet_status.txt]

2006-12-26T05:29:37.040603Z Alex Cherepanov

Calculate the old bounding box using the function that takes into account the
bounding box set by setbbox operator.

DETAILS:
This patch doesn't affect any reported bugs, CET test or regression test files.
Before the patch the following (correct) program didn't run on Ghostscript:
0 0 moveto 0 0 1000 1000 setbbox 100 100 105 105 setbbox 0 0 moveto 100 100 lineto

[doc/pscet_status.txt src/gsdps1.c]

2006-12-25T18:11:49.235030Z Alex Cherepanov

Record the fact that 11-13-4 works in rev. 7527.

[doc/pscet_status.txt]

2006-12-25T07:43:44.555732Z leonardo

pscet_status.txt : A better analyzis for recent regression, assigning to the author.

[doc/pscet_status.txt]

2006-12-24T11:46:11.723531Z leonardo

Fix (font renderer) : Expand the Type 3 character box to negative coordinates.

DETAILS :

setcachedevice, setcachedevice defines a box for clipping a character image.
According to Postscript specification, "If any marks fall outside this
bounding box, the result is unpredictable." (See PLRM3 page 659).

Some CET tests defines a Type 3 characters, which have the bbox
[0 0 1000 1000] and then execute "10 10 1000 1000 rectstroke" for 
painting the character. Some parts of that rectangle fall slightly 
outside the box, but both CPSI and Tek paint them.

When caching a character, the old Ghostscript code expands the character box to
increasing coordinates. It allows to paint charater elements,
which fall slightly outside the box. However the old code doesn't
expand to negative (decreesing) direction, causing an asymmetric behavior.
For example in CET 13-18.PS a Type 3 charater missed its elements
depending on the device initial matrix : with display device
the character doesn't miss elements, but with ppmraw device 
(which has initial matrix with mapping Y upside down)
the character missed a horizontal line, which with 600dpi falls to 
t5he pixel coordinate Y=-1.

This patch provides the box expansion in all 4 directions.
Rather the problem happens mainly with Type 3 fonts
the patch changes the behavior for all font types.

Note : Some characters may occupy a bigger space in the cache,
so the memory map changes.

Note2 : We're not sure why the old code expands the box
in 2 pixels. Likely 1 pixel is a strong expansion, 
and another one compensates an inaccurate rounding.
We don't change it now to minimize raster differences.

[doc/pscet_status.txt src/gxchar.c]

2006-12-24T08:31:52.050751Z leonardo

pscet_status.txt : A better analyzis for few problems.
Note some regressions appeared.

[doc/pscet_status.txt]

2006-12-22T19:59:43.737163Z Ray Johnston

Properly handle ASCII85EncodePages=true for the Contents streams. This was
not implemented previously. Bug #689030 for customer #1.

[src/gdevpdfu.c]

2006-12-21T17:10:15.748193Z leonardo

pscet_status.txt : A better analyzis for few problems.

[doc/pscet_status.txt]

2006-12-21T01:15:17.469745Z Ralph Giles

Remove Copying.htm from the documentation. It is no longer relevant now 
that the tree is GPL.

[doc/Copying.htm doc/Readme.htm doc/Release.htm]

2006-12-20T04:44:43.534483Z leonardo

pscet_status.txt : An improved analysis for few problems.

[doc/pscet_status.txt]

2006-12-20T04:38:57.997599Z leonardo

pscet_status.txt : An improved analysis for few problems.

[doc/pscet_status.txt]

2006-12-18T23:03:42.655320Z Raph Levien

Fix: Don't read past end of input image stream in simscale.c. Fixes
bug #689029.

[src/simscale.c]

2006-12-18T17:56:27.005565Z leonardo

Fix (TrueType renderer) : Always access metrics via get_metrics callback.

DETAILS :

This change is important for PCL interpreter.
Some PCL downloadable fonts have no hmtx, vmtx tables
and define glyph metrics externally.
Likely we missed this functionality when attached
the TrueType bytecode interpreter from FreeType.

For both Postscript and PCL the new code is not equivalent 
to old one when processing a composite glyph
with grid fitting. For each subglyph, the old code sets phantom points
with the subglyph's metrics. The new code does with the glyph's metrics. 
We believe that the old code was not correct because its grid fitting 
can wrongly account the placement of a subglyph in the main glyph.
Rether we didn't find a practical case when it happens.

We can't directly access the font's get_metrics callback from ttfmain.c,
therefore we introduce an intermediate callback ttfReader::get_metrics.
It happens because TrueType bytecode interpreter doesn't compile
with Ghostscript headers. 

[src/gxttfb.c src/ttfmain.c src/ttfoutl.h]

2006-12-18T05:00:00.292210Z leonardo

Fix  : Removing a dead code about USE_ttfReader.

DETAILS :

USE_ttfReader was introduced for PCL needs due to a poor design.
Novadays PCL code doesn't use it - sets always true.

[src/gxfcopy.c src/gxccman.c src/gxfont42.h src/gstype42.c src/zfont42.c]

2006-12-17T13:56:52.138834Z leonardo

Fix (shadings) : A fixed overflow happened while computing a color (continued).
THIS IS INCOMPATIBLE CHANGE : The device virtual method 
fill_linear_color_scanline now restores the semantics, 
which was defined before revision 7510. 
In other words, this incompatible change reverts 
the recent incompatible change.

DETAILS :

Debugged with CET 12-14O.PS SpecialTestJ02Test12.

A scanline gradient could overflow because 
the pixel span may be few wider than the spot span
due to pixel rounding.
To prevent the overflow, we base the color proportion
on the last pixel inside the span.
See comments in code.

We decided to remove "half color values"
(which were introduced in revision 7510)
from the device interface because 
they bring an extra complexity.

[src/gdevdsha.c src/gdevddrw.c]

2006-12-17T00:26:30.159180Z Russell Lang

Remove obsolete references to Windows 3.1 and Win32s.

[doc/Use.htm doc/Make.htm doc/Source.htm doc/Install.htm]

2006-12-16T22:02:38.700510Z Ray Johnston

Add a simple (one line) file that can be used bwtween files on the command line
or files run with the 'run' operator to execute the systemdict version of the
^D (ctrl-D) action to end an encapsulated job and start a new one.

This is needed since some PS files redefine <04> to a no-op (such as the PS CET
and the PSCRIPT5 Windows driver). This can be used with or without -dJOBSERVER,
but <04> is a no-op unless -dJOBSERVER is used.

[lib/jobseparator.ps]

2006-12-16T20:41:10.316519Z Ray Johnston

Fix setpagedevice /Install procedure handling so that a error from the Install
will restore the previous (presumably correct) Install and apply the Policies
for the error handling. Also fix the .execinstall so that the plumbing will
leave a predictable number of elements on the stack in case of an error.
Bug #689020 for customer #661.

DETAILS:

The .execinstall needed fixing since it could leave one extra element on the
operand stack, but sometimes it would not. The oparray_cleanup of the error
handling _would_ restore the op stack to the point where .execinstall was
invoked, but at that point, the procedure operand was part of the old stack
count. This meant that if the Install procedure pushed something on the op
stack before getting the error, it would be there after the 'stopped', but
if it didn't push anything, the stacks would be the same as if the exec was
OK.

By duplicating the procedure prior to the exec in .execinstall, we insure
that there will always be that value on the stack when stopped returns
'true'. Normal execution doesn't change and will pop the extra value created
by the 'dup'.

EXPECTED DIFFERENCE:

None.

[lib/gs_setpd.ps]

2006-12-15T18:08:57.832104Z L. Peter Deutsch

Fixes several user path problems: upath didn't signal nocurrentpoint for
empty paths in CPSI mode; appending an empty user path didn't set current
point in CPSI mode. (PS3 CET 13-27-3, 13-28-4, 13-29-3)

[src/zupath.c]

2006-12-15T18:06:08.730263Z L. Peter Deutsch

Fixes bug: gs_upmergepath didn't propagate the imager state current_point
members.

[src/gspath.c]

2006-12-15T01:58:02.667973Z leonardo

Fix (shadings) : A fixed overflow happened while computing a color.
THIS IS INCOMPATIBLE CHANGE : The device virtual method 
fill_linear_color_scanline now gets half color values 
as the gradient parameters.

DETAILS :

Debugged with CET 12-14O.PS SpecialTestJ02Test12.

A scanline gradient could overflow because 
the pixel span may be few wider than the spot span
due to pixel rounding.
Rather the expansion is always pretty small, it could cause
an int32_t overflow when storing the right limit pixel color
(which actually is never riched, because the filling algorithm
never paints the right boundary). However it caused a wrong
result in some cases.

See comments in code.

[doc/pscet_status.txt src/gdevdsha.c src/gdevddrw.c]

2006-12-14T21:40:07.608049Z leonardo

Fix (shadings) : Align coordinate data and color data to byte boundary (continued).

DETAILS :

Debugged with CET 12-14O.PS page 2.
The recent patch for the subject appears incomplete.
After debugging with more tests (ShadingType 5), 
the parameter align_color_data appears always false and goes away.

[doc/pscet_status.txt src/gxshade.c src/gxshade4.c src/gxshade.h]

2006-12-14T20:24:33.168948Z Ray Johnston

Mark some fixes detected in regression run (exact fix rev unknown -- probably
from lpd). Note that 23-12W-2 now has only a single difference.

[doc/pscet_status.txt]

2006-12-14T19:40:32.852985Z L. Peter Deutsch

For Adobe compatibility, makes 'show'-type operators signal nocurrentpoint
immediately, rather than when rendering the first character, if there is no
current point. (PS3 CET 13-27-3, 13-28-4, 13-29-3, and possibly others)

[src/gstext.c]

2006-12-14T16:28:49.465661Z leonardo

Fix (pdfwrite) : Improve the handling of SMask.

DETAILS :

The old code writes "/SMask 0 0 R" when a GState with no SMask
folows another with SMask.

Bug 689023 "regression fails with /rangecheck in --run--".
Debugged with Bug688631.pdf .

[src/gdevpdfg.c]

2006-12-14T15:50:54.428992Z L. Peter Deutsch

Changes {x,y,xy}show to check at the beginning whether the widths array is
large enough, rather than detecting this on the fly, for Adobe
compatibility. (PS3 CET 13-27-3, 13-28-4, 13-29-3)

[src/gstext.c]

2006-12-14T13:54:09.094929Z leonardo

Fix (Resource machinery) : Place temporary 'resourceforall' data into the local VM.

DETAILS :

This is an improved version of the 7449 change, 
which has been unwinded in the revision 7487,

The old code placed them into global VM,
rather some their elements may be in local VM.
Fixes the cash06 diff in PS3 CET 30-07-3.

Thanks to L. Peter Deutsch for locating the wrong code parts.

[lib/gs_resmp.ps lib/gs_res.ps lib/gs_cidcm.ps]

2006-12-13T21:18:20.233553Z L. Peter Deutsch

Fixes bug: if the source of a ReusableStreamDecode filter was a string, the
filter did not appear to be closed after executing closefile.  (PS3 CET
23-12W-6)

[src/stream.c]

2006-12-13T07:31:41.174327Z Henry Stiles

reassignments to Peter.

[doc/pscet_status.txt]

2006-12-13T04:15:29.131303Z leonardo

Fix (stroking) : The CPSI compatibility about the strokepath starting point (continued).

DETAILS :

The last patch allocates an insufficient buffer for gs_join_triangle.
It caused a wrong resiult with PCL.

[src/gxstroke.c]

2006-12-13T01:45:35.876588Z Ralph Giles

Add recent new source files to the documentation.

[doc/Develop.htm doc/Psfiles.htm]

2006-12-13T01:06:05.344921Z leonardo

Fix : Line join was missed at 'closepath'.

DETAILS :

Debugged with CET 12-12.PS page 10.

[src/gxpdash.c]

2006-12-13T00:58:41.577412Z leonardo

Fix : A CPSI compatibility for 'rectstroke'.

DETAILS :

Debugged with CET 12-12.PS page 8, 10.

PLRM doesn't specify the contour starting point for 'rectstroke'
when the rectangle width and/or height is negative.
CPSI and the old Ghostscript appear to produce different results, 
which is important with dashing. The patch provides the CPSI
compatibility when CPSI_mode is true.

[doc/pscet_status.txt]

2006-12-13T00:26:05.505126Z Ralph Giles

Reenable the jpxparmfix call, after making it check specifically for a 
JPXDecode filter. Adding a ParmDict to filters that don't take 
parameters caused problems with some PDF files. Bug 688869.

[lib/pdf_base.ps]

2006-12-12T10:22:38.092916Z Russell Lang

Windows documentation updates.

[doc/API.htm doc/Install.htm]

2006-12-12T06:26:11.719558Z L. Peter Deutsch

Fix some misspellings ("schedulled"), and remove a duplicate .undef.

[lib/gs_init.ps]

2006-12-12T04:25:21.491153Z leonardo

Fix : A CPSI compatibility for 'rectstroke'.

DETAILS :

Debugged with CET 12-12.PS page 8, 10.

PLRM doesn't specify the contour starting point for 'rectstroke'
when the rectangle width and/or height is negative.
CPSI and the old Ghostscript appear to produce different results, 
which is important with dashing. The patch provides the CPSI
compatibility when CPSI_mode is true.

[doc/pscet_status.txt src/gsdps1.c]

2006-12-12T02:43:40.792357Z L. Peter Deutsch

Fixes bug: the ReusableStreamDecode filter treated Intent values other than
0..3 as errors, rather than as equivalent to 0. PS3 CET 23-12V-1

[src/zfrsd.c]

2006-12-11T20:28:37.478193Z Ray Johnston

Mark as OK two pages fixed by rev 7489. Note that improvements were made on
the following: 23-12G-1, 23-12L-1, 23-12M-1, 23-12N-1, 23-12O-1, 23-12P-1.

There were no regressions on the PS CET as a result of rev 7489 changes to
the filter pipeline handling.

[doc/pscet_status.txt]

2006-12-11T17:30:53.980862Z L. Peter Deutsch

Fixes bug: the PNG predictor filters produced incorrect data for the last
pixel of each row.  (The encoder and decoder had matching bugs, so
encode+decode produced the correct result!)  Fixes a diff in PS3 CET
23-12U-1.

[src/spngp.c]

2006-12-11T04:48:55.149758Z L. Peter Deutsch

Raises the maximum value of Colors for PNG and PDiff filters from 16 to 60,
to prevent rangechecks in some PS3 CET 23-12{L,M,N,O,P}.

[src/zfdecode.c src/spngpx.h src/spdiffx.h]

2006-12-11T01:28:57.882333Z L. Peter Deutsch

Fixes bug: closing a filter pipeline with more than one adjacent temporary
stream (such as a compression filter with a predictor whose target was a
procedure) failed to flush all intermediate buffers, causing failures in PS3
CET 23-12*.  NOTE: This code (stream.c:swritebuf) is extremely delicate.
Regression checking is essential!

[src/stream.c]

2006-12-11T00:56:42.572973Z L. Peter Deutsch

Removes 3 compilation warnings.

[src/gxpath.h src/gxstroke.c]

2006-12-10T20:25:51.293218Z Stefan Kemper

This is a reversion to r7448
The 7449 commit created a regression where the 
language switch build wouldn't initialize. 

[lib/gs_resmp.ps lib/gs_res.ps lib/gs_cidcm.ps]

2006-12-10T19:50:24.509997Z Henry Stiles

Updates from Peter.

[doc/pscet_status.txt]

2006-12-10T09:52:06.915864Z leonardo

A better analyzis for 12-12.PS .

[doc/pscet_status.txt]

2006-12-09T08:54:37.108427Z Russell Lang

Partial fix for bug 687981, changing the PPD only for Windows 2k/XP.
The INF changes for Windows 95 etc. are not included in this change.

[lib/ghostpdf.ppd]

2006-12-09T08:42:56.477752Z leonardo

Update CET test status for 12-08A-5, 12-08A-6, 12-11-4.

[doc/pscet_status.txt]

2006-12-09T08:32:28.403891Z leonardo

Fix : A wrong 'frac' color comparison caused an incorrect 12 and 16 bpc image rendering.

DETAILS :

Debugged with CET 12-07C.PS page 15 and disassembling gxi12bit.obj .

The old code wrongly computed how many 'long' values are needed to store 4 'frac' values. 
When sizeof(long)==4 and sizeof(short)==2 it gives 1.
However the right answer is 2.
Due to that the old code thinks that 'frac' colors are equal 
when they differ in 3d or 4th component.

[doc/pscet_status.txt]

2006-12-09T08:09:19.842018Z Russell Lang

Change Windows installer release date to 2006 and update disk space
requirements.

[src/dwsetup.rc]

2006-12-09T08:03:44.150164Z Russell Lang

Fix bug 688749 silent/unattended uninstaller.
Add silent uninstall option to MS-Windows ghostscript uninstaller.
Reformatted part of the code to make it match the GSview uninstaller,
on which it was based.  For a silent uninstall, use
  uninstgs.exe "path\to\uninstal.txt" -q

[src/dwuninst.cpp]

2006-12-09T07:39:00.107617Z leonardo

Fix : A wrong 'frac' color comparison caused an incorrect 12 and 16 bpc image rendering.

DETAILS :

Debugged with CET 12-07C.PS page 15 and disassembling gxi12bit.obj .

The old code wrongly computed how many 'long' values are needed to store 4 'frac' values. 
When sizeof(long)==4 and sizeof(short)==2 it gives 1.
However the right answer is 2.
Due to that the old code thinks that 'frac' colors are equal 
when they differ in 3d or 4th component.

[src/gxi16bit.c src/gxi12bit.c]

2006-12-09T06:17:34.671935Z Alex Cherepanov

Following PLRM 3 handle instances of CIDFont resource in findfont, 
definefont and undefinefont. Partly fix CET 32_all, 33_all, 34_all, 25_all.

[doc/pscet_status.txt lib/gs_res.ps]

2006-12-09T05:04:05.073394Z Russell Lang

Fix bug 688932 mswinpr2 doesn't clear temporary files.
Unwanted temporary file was being recreated during page output.  
We now delete the temporary file when the device is closed.

[src/gdevwpr2.c]

2006-12-09T04:24:39.562906Z Russell Lang

Fix bug 688930 mswinpr2 allocates wrong memory size for DEVMODE.
A printer DEVMODE structure is usually bigger than sizeof(DEVMODE)
due to printer private extra data.  Allocate the correct size
DEVMODE to include this private data.
Remove old Windows 3.1 and Win32s code.

[src/gdevwpr2.c]

2006-12-09T00:14:28.954169Z Alex Cherepanov

Validate the argument of execuserobject and undefineuserobject before trying to
access UserObjects (which may be undefined) to match CET 31-03 and 31-11.

[doc/pscet_status.txt lib/gs_dps2.ps]

2006-12-08T23:08:31.381404Z Alex Cherepanov

Report /rangecheck instead of /limitcheck from defineuserobject when the index
exceeds 65535 to match CET 31-02.

[lib/gs_dps2.ps]

2006-12-08T22:23:13.575044Z Alex Cherepanov

Report /rangecheck instead of /limitcheck from defineuserobject when the index
exceeds 65535 to match CET 31-02.

[doc/pscet_status.txt lib/gs_dps2.ps]

2006-12-08T21:47:01.938606Z Russell Lang

Change MS-Windows installer to identify itself as GPL not AFPL Ghostscript.

[src/dwsetup.rc src/winint.mak src/gp_wgetv.c src/dwsetup.def src/dwuninst.def src/dwreg.c src/dwsetup.cpp src/dwuninst.cpp]

2006-12-08T21:45:06.679656Z leonardo

Update CET test status for 12-04-5.

[doc/pscet_status.txt]

2006-12-08T19:31:55.276122Z Ray Johnston

Disable the jpxparmfix at the point of invocation since it causes many
PDF files to fail with /undefined in --run--.

[lib/pdf_base.ps]

2006-12-08T18:27:14.429697Z Alex Cherepanov

CET 31-01-08 and 31-01-09 expect the last defined idiom instance to be
effective when several of them match. PLRM says it's undefined.

[doc/pscet_status.txt]

2006-12-08T15:30:10.567087Z Alex Cherepanov

Increase maximum depth of the procedure matching in idiom recognition
to meet CET 31-01-05 and Adobe implementations.

[doc/pscet_status.txt src/zmisc3.c]

2006-12-08T14:38:26.687662Z Tor Andersson

Fix some errors in the TTC table parsing.

[src/gstype42.c]

2006-12-08T12:00:09.393817Z leonardo

Fix : Wrong current point after uappend.

DETAILS :

Debugged with CET 11-22.PS page 1.

PLRM doesn't clearly specify what should be the current point after uappend,
but very likely it is the last point of the appended path.
CPSI does so, and we follow it.

[doc/pscet_status.txt src/zupath.c]

2006-12-08T04:03:13.743254Z Alex Cherepanov

CET 20-01-2 is re-classified AOK; CPSI modifies the content of the array
arguments, if any, when operator >> fails. Ghostscript matches Tek and
Distiller 5. This is a bug in CPSI we don't want to reproduce.

[doc/pscet_status.txt]

2006-12-08T02:22:36.640014Z leonardo

Fix (stroking) : The CPSI compatibility about the strokepath starting point.

DETAILS :

Debugged with CET 11-21.PS page 10.

PLRM doesn't specify a starting point for strokepath result.
Now we choose same point as CPSI does.
It appears important if a further drawing depends on current point,
and/or when a dashing is applied to strokepath.

We don't keep the old algorithm because it is not useful.
Supporting two modes (the CPSI compatible mode and the GS native mode)
would be too complicated with no good reason.

[doc/pscet_status.txt src/gxstroke.c]

2006-12-08T00:31:05.623591Z Alex Cherepanov

CET 13-20-2 is re-classified OK; The CPSI-based PhotoPRINT SE product
has CSL installed and cannot be used as a reference here.

[doc/pscet_status.txt]

2006-12-07T17:27:20.192504Z Alex Cherepanov

CET 11-13-4 fails because Ghostscript upath doesn't detect
nocurrentpoint condition.

[doc/pscet_status.txt]

2006-12-07T17:17:35.743899Z L. Peter Deutsch

Fixes bug: makepattern didn't create all of its structures in local VM.
(two diffs in PS3 CET 30-07-3)

[lib/gs_lev2.ps]

2006-12-07T15:56:26.139005Z Alex Cherepanov

Fix MIN_INTVAL handling in the operator mul. CET 25-13.

[doc/pscet_status.txt src/zarith.c]

2006-12-06T23:48:07.446016Z Ralph Giles

Copy the /ColorSpace key (if any) from a stream dictionary into the
DecodeParms, so the JPXDecode filter implementation can access it.

Pass this key through the JPXDecode filter implementation when
the ColorSpace is Indexed to the underlying jasper implementation,
requesting that it return raw palette indexes instead of the
fully decoded image. This is necessary when the overriding PDF image
colorspace is itself paletted.

Bug 688869 for customer 531.

[src/int.mak src/sjpx_luratech.h src/zfjpx.c lib/pdf_base.ps src/sjpx.c src/sjpx.h]

2006-12-06T23:40:57.941542Z Ralph Giles

Raise the debugging level required for reporting the raw decode option key.

[jasper/src/libjasper/jp2/jp2_dec.c]

2006-12-06T23:13:19.707391Z Ralph Giles

Update the product name to GPL Ghostscript. File omitted from r7447.

[src/gscdef.c]

2006-12-06T22:25:01.101686Z Ralph Giles

Add a 'raw' option key to jp2_decode() to pass the raw palette
data back to the client without applying the included palette
for indexed images or otherwise remapping the data. Required
for Colorspace override when embedded in PDF documents.
Partial fix for bug 688869.

[jasper/src/libjasper/jp2/jp2_dec.c jasper/src/libjasper/jpc/jpc_dec.c]

2006-12-06T22:23:19.182804Z Ralph Giles

Change the included license text to refer to the GPL.
Omitted from r7446.

[LICENSE]

2006-12-06T22:01:38.950715Z Alex Cherepanov

All failures in CET 24-13-3 are caused by writable FontDirectory.

[doc/pscet_status.txt]

2006-12-06T19:59:48.793585Z Alex Cherepanov

Modify gs to match 12-14c test case:
- check that the function domain covers all of the shading domain.
- do this test early - before checking other parameters.
- tweak error handling in shfill on PostScript level to match the test.

[doc/pscet_status.txt src/zshade.c lib/gs_ll3.ps src/zfunc.c src/zfunc3.c src/ifunc.h]

2006-12-06T01:33:52.778741Z L. Peter Deutsch

Fixes bug: currentcolorscreen attempted to copy a screen procedure even if
it wasn't readable.

[lib/gs_dps2.ps]

2006-12-05T14:51:16.744559Z Ray Johnston

Change pages fixed by Peter detected in last regression run as improvements.

[doc/pscet_status.txt]

2006-12-05T04:16:20.081512Z L. Peter Deutsch

Changes the initial halftone screen procedure from a packedarray to an
array, to pacify PS3 CET 09-49D.

[lib/gs_init.ps]

2006-12-05T03:28:09.927677Z L. Peter Deutsch

Fixes bugs: many places in the implementation of resourceforall did not
always create temporary objects in local VM, which is necessary because some
of their elements may be in local VM.  Fixes the cash06 diff in PS3 CET
30-07-3.

[lib/gs_resmp.ps lib/gs_res.ps lib/gs_cidcm.ps]

2006-12-04T22:25:49.788684Z Ray Johnston

Close some 'setflat' issues as AOK where GS is close, but better at each
resolution. Now that CPSI implements setflat, the differences in Adobe
implementations justifies GS differing (slightly) as well. Cases where
GS is worse (less smooth) than CPSI and Tek still need analysis.

Reassign 09-24-2 group of problems to Ray.

[doc/pscet_status.txt]

2006-12-04T21:41:08.335595Z Ralph Giles

Update the product name to "GPL Ghostscript" and bump the version number
for the upcoming release to avoid confusion with the GNU 8.55 release.

[lib/gs_init.ps src/version.mak]

2006-12-04T21:17:43.624240Z Ralph Giles

Remove the APFL and add the GPL to reflect our now-GPL development practice. For the record, this tree has been GPL licensed since the 8.54 release, but this is now explicit.

[doc/Readme.htm doc/Public.htm doc/Commprod.htm doc/COPYING doc/gs-vms.hlp]

2006-12-04T18:17:42.359489Z Ray Johnston

Mark a few other tests as "OK" after CPSI fixed to implement 'setflat'.
and add a note to a timing dependent output.

[doc/pscet_status.txt]

2006-12-04T17:34:45.126523Z Ray Johnston

Mark some 'setflat' issues as OK. I will be replacing some of the CPSI
output after "unlocking" setflat (so that CPSI implements, rather than
ignoring setflat). Also remove (*JS) that didn't mean anything. Update
explanation on 30-01-1 from Peter.

[doc/pscet_status.txt]

2006-12-04T15:16:22.671661Z Alex Cherepanov

Accept packed arrays for the /Size element of the shading dictionary and
everywhere else where dict_int_array_param() is called. CET 31-01-06

[doc/pscet_status.txt src/idparam.c src/zimage3.c src/zfsample.c src/idparam.h src/zfunc.c src/zfunc0.c src/zfilterx.c]

2006-12-03T16:02:51.520019Z L. Peter Deutsch

For Adobe compatibility (PS3 CET 23-07 and 23-13-5), changes findresource,
defineresource, undefineresource, and resourcestatus so that errors
occurring within these operators, except for a possible initial
stackunderflow, report the (executable) operator name, rather than the
operator object, as the command a.k.a. error object.

[lib/gs_res.ps]

2006-12-03T15:52:19.386596Z Alex Cherepanov

Avoid floating point division by 0. Catch the case when all components
of the matrix equal to 0.

[src/gxhintn.c]

2006-12-03T15:52:07.896094Z L. Peter Deutsch

For Adobe compatibility (PS3 CET 09-56-1), changes findcolorrendering so
that errors report /findcolorrendering, not --findcolorrendering--, as the
command a.k.a. error object.

[lib/gs_lev2.ps]

2006-12-02T07:24:01.485014Z L. Peter Deutsch

Fixes bug: save objects are simple in LL1 and LL2, but composite in LL3, so
restore must treat save objects on the stack differently depending on the
languagelevel.  (PS3 CET 30-04-2, and some file in the PS2 tests, actually
care about this.)

[src/isave.h src/zvmem.c]

2006-12-02T06:34:29.338937Z L. Peter Deutsch

Fixes two bugs related to PS3 CET 23-07-1: Failure to find a resource
category signalled undefinedresource rather than undefined (PLRM3 bottom of
p. 105), and always reported --findresource-- as the error command rather
than the correct one.

[lib/gs_res.ps src/interp.c lib/gs_init.ps]

2006-12-01T23:17:00.226511Z Tor Andersson

Add an argument to select a specified subfont to gs_type42_font_init. This argument is only used for truetype collection (TTC) font files.

[src/gxfcopy.c src/gxfont42.h src/gstype42.c src/zfont42.c]

2006-12-01T01:34:22.593578Z L. Peter Deutsch

Corrects an error in a comment (BitsPerComponent should be Colors).

[src/spdiff.c]

2006-12-01T00:27:39.971017Z Ralph Giles

Recommit changes from r7237 so we have continuous history.

Fixes and analysis from Peter.

[doc/pscet_status.txt]

2006-12-01T00:22:19.531380Z Ralph Giles

Recommit changes from r7235 so the file has continuous history.

A couple of reassignments and fixes from Peter.  See the diffs for details.

[doc/pscet_status.txt]

2006-12-01T00:19:02.366674Z Ralph Giles

Replace pscet files with copies linked to imported history.

[doc/pscet_status.txt toolbin/pscet_status.pl]

2006-12-01T00:16:33.505703Z Ralph Giles

Move pscet files out of the way to make room for versions with history.

[doc/pscet_status.txt toolbin/pscet_status.pl]

2006-11-30T22:52:33.785536Z Henry Stiles

fixes and analysis from Peter.

[doc/pscet_status.txt]

2006-11-30T21:01:19.024704Z L. Peter Deutsch

Fixes a bug that could cause a SEGV when reading binary token arrays on
systems where sizeof(ref) > 8 (e.g. 64-bit systems).

[src/iscanbin.c]

2006-11-30T20:41:53.369215Z Henry Stiles

Move the cet bug list and the script for tallying bug statistics from
the pscet_status.txt file to the public release.  Also includes a
couple of reassignments and fixes from Peter.  See the diffs for
details.

[doc/pscet_status.txt toolbin/pscet_status.pl]

2006-11-30T17:30:17.006076Z L. Peter Deutsch

Fixes bug: setcolorrendering returned CRD names as strings rather than names.

[lib/gs_lev2.ps]

2006-11-30T17:11:55.853083Z L. Peter Deutsch

Fixes bug: In case of an error, setvmreclaim and setvmthreshold reported an
error in setuserparams rather than the correct operator.

[lib/gs_lev2.ps]

2006-11-30T07:48:31.178531Z L. Peter Deutsch

Fixes bug: printobject and writeobject didn't signal an /undefined error if
currentobjectformat was 0.

[lib/gs_btokn.ps]

2006-11-30T05:38:43.886406Z Raph Levien

Match arbitrary-seeming CPSI behavior (when CPSImode is set) regarding
incorrect ucache placement causing typechecks with some but not all
upath operations. Fixes 11-28-5 and improves 11-22-3.

[src/zupath.c]

2006-11-29T01:33:19.060235Z leonardo

Fix (pdfwrite) : Don't write min_int as XHeight.

DETAILS :

Bug 689009 "Ghostscript generated pdf/a file has an XHeight of -2147483648". 

The old code doesn't check whether XHeight is successfully computed for the font.
However some font subsets simply have no characters for its computation.
In this case the old algorithm writes min_int, which works
for internal needs of the algorithm. We believe that using zero
instead min_int is safe because fonts usually place characters over the base line.
If all chars appear below the base line, the zero value 
won't be written due to the logics for default values in 
write_FontDescriptor_common.

Thanks to Marcos for the perfect bug localization.

[src/gdevpdtd.c]

2006-11-28T00:46:03.167492Z Raph Levien

Silently accept incorrect ucache placement in CPSI compatibility mode.
Fixes CET 11-23-3 and (partly) 11-24-3 and 11-25-3.

[src/zupath.c]

2006-11-27T23:56:22.186441Z Raph Levien

Reverses order of subpaths in gx_path_copy_reversed, which is the
implementation of the reversepath operator. PLRM3 says that the order
of subpaths is unspecified, but CPSI reverses them, while old GS had
them in the same order as the original path. Fixes CET 11-05-6, 11-14-5,
11-22-7, and 11-28-11.

[src/gxpath2.c]

2006-11-27T23:21:36.941749Z leonardo

Fix (pdfwrite) : A wrong font substitution for glyph variations.

DETAILS :

Bug 688967 "Problem with converting PS file with barcode font to PDF".

The old code doesn't check for possible encoding conflict
when sharing a charproc from another font. The current font could already
have another charcproc for same char code.

[src/gdevpdti.c]

2006-11-26T05:51:17.751153Z Ray Johnston

Fixes for CET's. Halftone dummy lpi and angle are real for Adobe. Also
setdash must return typecheck for wrong type top operand even if there
is no second operand (09-36-3).

[lib/gs_init.ps]

2006-11-24T21:53:27.264413Z Ray Johnston

Return 'undefinedresult' rather than 'rangecheck' for MININT / -1 to match
Adobe CPSI and Tek on CET 25-09

[src/zarith.c]

2006-11-24T21:18:42.311047Z Ray Johnston

Fix typo in previous commit (commit from a non-working directory after testing on
another system).

[src/zarith.c]

2006-11-24T21:13:30.086309Z Ray Johnston

Check for rangecheck condition BEFORE doing the divide. Prevent FP exception
on MSVC-6/x86. Fixes problem causing CET 25-09.ps to abort.

[src/zarith.c]

2006-11-23T19:01:20.626083Z leonardo

Fix : Skip images outside the clipping path.

DETAILS :

Bug 689000 "Ghostscript generates very large PDF file compared to Distiller".


1. New functions gx_cpath_rect_visible, is_image_visible
   check whether the image is entirely clipped out.

2. A new flag gx_image_enum_common_s::skipping stores that fact.

3. If so happens, interpreter checks whether the image
   has string datasources only. Such images may be safely skipped 
   from the interpretation (zimage.c).

Note : This optimization works for ImageType 1 only - see comment 
in is_image_visible. Unfortunately We have no time to improve this now. 
Need to analyze why does gs_image2_t need a floating size of the source image.

[src/gsimage.c src/lib.mak src/zimage.c src/gxiparam.h src/gxcpath.c src/gxpath.h src/gximage.c]

2006-11-23T15:01:16.838484Z Alex Cherepanov

Trap errors from setpattern implementation and re-throw them as
setpattern errors. Fix CET 09-47c-01.

[lib/gs_lev2.ps]

2006-11-23T14:14:38.062916Z Alex Cherepanov

Throw rangecheck when nocurrentpoint is detected during a user path
appending to the current path. This improves error reports from
CET 11-22, 11-24, 11-25, 11-27, 11-28.

DETAILS:
With this fix committed Ghostscript matches Distiller 5 but CPSI and Tek
ignore most of the errors in user path.

[src/zupath.c]

2006-11-22T20:22:57.190253Z Ray Johnston

Read the JBIG2 Global Context from the stream as an array of strings to
create the correct size bytestring for .jbig2makeglobalctx. Bug 689005
for customer 870.

DETAILS:

The /Length element of the the stream dict is the uncomressed size.
This example used FlateDecode on the Global context (which is sort of
dumb because except for the headers, most of the symbol dict is already
compressed -- in this case it saved a whole 36 bytes = 0.2%).

Tested with a smaller string (2000 instead of 60000) since the test
file only needed 18654 bytes.

[lib/pdf_base.ps]

2006-11-22T19:56:29.243165Z leonardo

Fix (shadings) : Radial shadings sometimes missed Extend.

DETAILS :

Debugged with CET 09-47I.PS SpecialTestH08Test06.

The old code wrongly computed parameter range for the extent,
when there exist 2 tangenting circles. 
In this case the visible part of the extent prolongues to the farest circle.
The old code restricts the extent with the nearest circle.

[src/gxshade1.c]

2006-11-22T02:03:00.217845Z Ray Johnston

Fix 09-33-5 -- return the screen procedure as an array instead of packedarray.

[lib/gs_dps2.ps]

2006-11-22T01:26:37.628128Z Ray Johnston

Fix for 09-29-1 -- force result from BG, UCR procs to always be a real.

[lib/gs_devcs.ps]

2006-11-21T21:16:21.705841Z Ray Johnston

Fix stackunderflow on 09-13.ps caused by mistake in rev 7124.

DETAILS:

Detected as a regression on the PS CET files.

[lib/gs_cspace.ps]

2006-11-21T20:21:34.907928Z Ray Johnston

Fix for ILLEGAL (\000) (r) file case seen with 23-09.ps 

[src/sfxstdio.c]

2006-11-19T14:36:42.834356Z leonardo

Fix (filling) : Very long lines sometimes painted in a wrong direction.

DETAILS :

Debugged with CET 11-14.PS : (next 3E9 dup moveto 1 dup lto fini) .

A fixed overflow happened in gxstroke.c .
To work around it we subdivide long segments into 2 parts
before applying the stroking algorithm.

1. The hew function gx_path_has_long_segments checks for long segments.
2. The function gx_path_copy_reducing now breaks long segments into 2 parts. 
3. gxstroke.c is changed to apply (1) and (2).
4. Note that (2) also affects the filling algorithm, 
   rather it is not related to the test case.
   It had problems with long segments also,
   at least gx_default_fill_trapezoid must not be called with 
   very long setgments, because it computes coordinate differences.

[src/gxpath.h src/gzpath.h src/gxpflat.c src/gxstroke.c src/gxpcopy.c]

2006-11-18T21:44:30.894785Z leonardo

Fix (filling) : Very long lines were missed sometimes.

DETAILS :

1. The flattening iterator subdivided very long lines into 2 segments
   against a fixed overflow. It appears not sufficient due to an
   unrelated code optimization. The new code does in 4 segments (gxpflat.c).
   See comments in code.

2. When finding a path's Y-minimum, the old code didn't account that
   most parts of a segment may fall outside Y-band (gxfill.c).

Debugged with CET 11-11.PS : (next 10 10 moveto 3E9 3E9 lineto fini) .

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

2006-11-18T01:50:21.560089Z leonardo

Fix (shadings) : Align coordinate data and color data to byte boundary.

DETAILS :

Debugged with CET 09-47K.PS SpecialTestJ02Test05 and
09-47K.PS SpecialTestJ02Test05 
The old code didn't align to byte boundary.
PLRM requires to align "each vertex data" to byte boundary.

Howebver PLRM doesn't clearly explains, what does "each vertex data" mean.
We make GS to be compatible to CPSI with CET tests.
From these tests we know that it wants to align color data when there is no flag,
and to align the flag only, when it presents. Actually we also align
whenever a vertex ends, because it looks reasonable.

We didn't find practical tests for all cases allowed by PLRM,
so this logick may need a further improvement.

[src/gxshade.c src/gxshade4.c src/gxshade.h src/gxshade6.c]

2006-11-17T23:58:38.951291Z leonardo

Fix (shadings) : Restrict shading function data with the shading function Domain.

DETAILS :

1. Restricts the function argument data (CET 09-47M.PS, SpecialTestL04Test04);
   CPSI appears to restrict shading function data with no warning.
   The old code throws a rangecheck.

2. Restricts color data with the color space Domain for triangle mesh shadings.
   The old code did not. Changing it to work same as for patch shadings.

[src/gxshade.c src/gxshade4.c]

2006-11-17T05:28:16.982839Z Alex Cherepanov

Validate the argument of setcolorspace before trying to process it.
Catch errors from setcolorspace and re-throw them from shfill.
Fix CET 12-14d.

[lib/gs_ll3.ps lib/gs_cspace.ps]

2006-11-16T16:45:12.812952Z Alex Cherepanov

Return a read-only dictionary from currenthalftone.
Partial fix for CET 09-12-01.

[lib/gs_dps2.ps]

2006-11-16T15:33:00.738256Z Alex Cherepanov

Pass the arrays with correct attributes to setdash and setcolortransfer
in gs_cet.ps to match Tek printer. Fix CET 09-07, 09-08, 09-22.

[lib/gs_cet.ps]

2006-11-16T11:12:36.928665Z leonardo

Fix (functions) : Provide a tolerance for insuffitient Domain elements 
(CPSI compatibility mode only).

DETAILS :

This change has no effect without "true .setCPSImode".
When it is executed, the missed Domain elements are padded with zeros,
extra elements are silently ignored.
Patch from Alex inproved by Leo. 

[src/zfunc3.c]

2006-11-16T10:38:44.129650Z leonardo

Fix : A minor bug in the visual trace code.

[src/vdtrace.c]

2006-11-15T23:59:58.494757Z Ray Johnston

Remove deprecated cs_get_default_color (an editting mistake).
Thanks to Dan Coby for spotting this.

[lib/gs_ciecs3.ps]

2006-11-15T16:17:19.366589Z Ray Johnston

Return 60.0 0.0 as Adobe dummy values with Halftone dict (real not int)
Fixes 09-05-6

[lib/gs_dps2.ps]

2006-11-15T16:15:30.494892Z Ray Johnston

Set the correct default value for CIEBasedDEF and CIEBasedDEFG colorspaces.
PLRM p. 233 states value is to be as close to 0.0 as is valid in RangeDEF[G].
Fixes 09-03-3

[lib/gs_ciecs3.ps lib/gs_cspace.ps]

2006-11-15T16:12:42.807313Z Ray Johnston

Return real instead of int from tint transform as Adobe does. Fixes 09-02-2

[lib/gs_sepr.ps]

2006-11-14T10:08:04.014362Z leonardo

Fix (shadings) : A non-contiguous color function could cause infinite recursion,

DETAILS :

It didn't check the quadrangle size when dividing it by a big color difference.

[src/gxshade6.c]

2006-11-13T21:12:10.733371Z leonardo

Fix (shadings) : Don't fill ShadingType 1 when the region is outside the function domain.

DETAILS :

Debugged with 09-47G-1.PS SpecialTestF02Test01 .
The old code returned rangecheck when it must not paint anything except Background.
It happened due to an attempt to check the function monotonity outside its domain.

[src/gxshade1.c]

2006-11-13T19:05:22.830209Z Ray Johnston

Prevent 'repeat' extension from sneaking into FunctionType 4 of PDF's we
create.

DETAILS:

When the device is 'pdfwrite' we don't allow the 'repeat' control operator
in FunctionType 4 functions. The 'check_psc_function' will return a
rangecheck error if this is attempted. We don't need to worry about other
devices such as ps2write since it doesn't emit DeviceN tint transforms
(the only way we can currently get the 'repeat' operator into a PSC
function). To prevent indexing past the end of op_names in calc_put_ops,
we throw a rangecheck if one ever sneaks in.

Note that in theory, since we the opdfread uses the full PS interpreter
to process FunctionType 4, we *could* handle 'repeat', but the calc_put_ops
will prevent that (for now).

Note that this means that attempting to convert 09-31.ps or 09-34.ps into
PDF will not succeed in generating the FunctionType 4, and will throw a
rangecheck in the tint transform when trying to generate a sampled function
that is too large. All other devices, including ps2write, will show the
correct result since the FunctionType 4 tint transform is interpreted in
Ghostscript (which handles its own 'repeat' extension).

[src/gsfunc4.c src/zfunc4.c]

2006-11-13T17:05:42.548481Z leonardo

Fix (shadings) : Remove colors from C stack, part 10.

DETAILS :

The patch
http://ghostscript.com/pipermail/gs-cvs/2006-November/006955.html
appears wrong in the part 1.
This patch fixes that.

[src/gxshade6.c]

2006-11-13T16:38:14.371701Z leonardo

Fix (shadings) : Remove colors from C stack, part 9.

DETAILS :

Removing unuseful comments.

[src/gxshade6.c]

2006-11-13T16:32:10.419581Z leonardo

Fix : Cygwin/gcc warnings.

DETAILS :

Missed a function prototype.

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

2006-11-13T16:22:51.306913Z leonardo

Fix (shadings) : Remove colors from C stack, part 8.

DETAILS :

Fixing Cygwin/gcc warnings.

[src/gxshade6.c]

2006-11-13T16:10:41.692230Z leonardo

Fix (shadings) : Remove colors from C stack, part 7.

DETAILS :

This is the 7th step of fixing the bug 688955 
"64K stack overflows with shadings".
This change is algorithmically equivalent.
We hope this is the last step, which closes the bug.

1. Optimize reserve_colors_inline;
2. Remove 'assert'.
3. Disable the consistency check in release_colors_inline for faster sesult and smaller code.
4. Provide a consistency check at end of a shading fill in term_patch_fill_state.

[src/gxshade4.h src/gxshade1.c src/gxshade4.c src/gxshade6.c]

2006-11-13T15:34:00.738868Z leonardo

Fix (shadings) : Remove colors from C stack, part 6.

DETAILS :

This is the 6th step of fixing the bug 688955 
"64K stack overflows with shadings".
This change is algorithmically equivalent.

1. Remove the color_stack_ptr0 argument from various functions.
2. Rename the color_stack_ptr1 variable into color_stack_ptr.

[src/gxshade4.h src/gxshade1.c src/gxshade4.c src/gxshade6.c]

2006-11-13T14:42:19.588343Z leonardo

Fix (shadings) : Remove colors from C stack.

DETAILS :

This is the 5th step of fixing the bug 688955 
"64K stack overflows with shadings".

Cigwin/gcc yields warning for the last patch,
some of which may be harmful.

[src/gxshade6.c]

2006-11-13T14:32:07.933998Z leonardo

Fix (shadings) : Remove colors from C stack.

DETAILS :

This is the 4th step of fixing the bug 688955 
"64K stack overflows with shadings".
This change is algorithmically equivalent.

Providing a color stack pointer field in the shading fill state structure.
When some colors are reserved, we advance the color stack pointer.
A new function release_colors work for releasing them.

This patch inserts some asserts, which to be removed soon.

[src/gxshade4.h src/gxshade1.c src/gxshade4.c src/gxshade6.c]

2006-11-13T11:18:36.886321Z leonardo

Fix (shadings) : Remove colors from C stack.

DETAILS :

This is the 3nd step of fixing the bug 688955 
"64K stack overflows with shadings".
This change is algorithmically equivalent.

1. New functions reserve_colors_inline, reserve_colors work with
   the color stack in heap. 

2. Currently the color stack pointer is saved at each
   recursion level for simplifying the debugging.
   We intend t move it later to the shading fill state structure.
   Currently it is passed via most function calls as a new argument.

3. In automatic data the colors change type
   from a structure to pointer.

4. Since we want to keep colors be constant while 
   the heavy decompositioin recursion, we made
   the local color pointers point to const data.
   Therefore a new argument is added to some functions,
   which construct colors and therefore need
   a non-conmst access. Thise changes are commented with
   "providing a non-const access".

5. Minor change : cs_is_linear changes the 1st argument type to 'const'
   (gscspace.c, gxcspace.h).

[src/gxshade4.h src/gxcspace.h src/gxshade.c src/gxshade1.c src/gxshade4.c src/gscspace.c src/gxshade.h src/gxshade6.c]

2006-11-13T11:04:18.319919Z leonardo

Fix (shadings) : A better average color when filling a triangle.

DETAILS :

Due to a misprint, the old code wrongly computed the average color 
from 3 colors of triangle vertices.

Minor change : pfs->color_stack_limit is int rather than a pointer,
so NULLL isn't a good initilizer.

[src/gxshade6.c]

2006-11-12T22:18:04.834342Z Ray Johnston

Add 'repeat' as an pseudo-operator for FunctionType 4. Needed for PS CET
09-31 and 09-34 that use it in the tint transform for DeviceN with 110 and
250 components.

DETAILS:

Since Type 4 functions are a PDF feature, extending the control operators
to include 'repeat' doesn't create any PS incompatibility.

[src/gsfunc4.h src/gsfunc4.c src/opextern.h src/zfunc4.c src/zcontrol.c]

2006-11-10T12:18:42.454752Z Alex Cherepanov

Return floating point values for some cases of currentgray, currentrgb, and
currentcmyk operator that are implemented in PostScript.
Fix CET 09-10.ps, 09-19.ps.

[lib/gs_patrn.ps lib/gs_cspace.ps]

2006-11-09T20:05:09.172995Z leonardo

Fix : Cygwin/gcc warnings

[src/gxccman.c src/gdevbit.c src/devs.mak]

2006-11-09T19:25:53.845531Z leonardo

Fix : Provide a single color stack for entire shading.

DETAILS :

This is the 2nd step of the preparation for fixing 
the bug 688955 "64K stack overflows with shadings".
This change is algorithmically equivalent.

1. Ading fields into patch_fill_state_t for representing a color stack in heap.

2. Initialize and finalize them in gxshade6.c . 
   Currently they work idle.

3. Provide a single patch_fill_state_t instance for all
   meshes/patches of a shgading (gxshade1.c). 
   It allows to handle a single color stack 
   for all meshes/patches of a shading.

3. Document the shortened color representation in gxshade4.h .

Most subclasses of shading_fill_state_common are now rudiments,
but we keep them for a while to minimize the patch.
Note A_fill_state_s is not longer a subclass of it.

[src/gxshade4.h src/gxshade1.c src/gxshade4.c src/gxshade6.c]

2006-11-09T02:28:13.502287Z Alex Cherepanov

Trap errors from findfont, etc. and re-throw them as selectfont errors.
Partial fix fot CET 13-16.ps

[lib/gs_dps1.ps]

2006-11-09T01:54:18.338382Z Alex Cherepanov

Change the order of argument checking in kshow operator.
Partial fix fot CET 13-12.ps

[src/zchar.c]

2006-11-09T01:11:30.297156Z Alex Cherepanov

Following Adobe example accept 1-component multiple data sources in imahemask.
Match CET 12-08b.ps

[src/zimage.c]

2006-11-08T20:01:48.930089Z Ray Johnston

A couple of minor additions to match CPSI. Mostly just to show customers
that these are device specific values they may want to set themselves.

[lib/gs_cet.ps]

2006-11-08T17:59:48.588441Z leonardo

Fix (shadings) : Improving radial gradients.

DETAILS :

The old code has a bug when painting an extent for an obtuse cone.
Then filling the wider extent, it also painted the extent near the apex.
It happened due to a trick with representing the view of the constant color cone
with triangles. This problem is visible with 09-47I.PS page 7 Test11.

Another problem relates to the representation of circles with
2d order besiers. The old code did not account the approximation error of
the representation, causing a "stair" between the extent and the cone.
The stair may be visible when painting a big cone with a sloped tangent.

These two problems were introduced with Revision 2524 
on Apr 18 08:12:56 2002 UTC by jeong. When the "new" shading
algorithm was implemented 2+ years ago,
they were not noticed and has been ported to the "new" algorithm.

This patch paints the extent as a regular annulus
concatenated with a circle, which "closes" the wider extent.
The circle is taken so that its tangent points fall outside 
the view rectangle. The "closing" circle is necessary because the
annulus may be thinner than the view rectangle.

[src/gxshade1.c]

2006-11-08T16:13:35.888122Z Alex Cherepanov

Make UniqueID error reporting match Adobe's. Partial fix for 13-05.PS.

[src/idparam.c]

2006-11-08T13:36:18.319314Z leonardo

Fix : Rearrange gs_client_color_s to allow saving RAM from color components.

DETAILS :

This is a preparation for fixing the bug 688955 "64K stack overflows with shadings".
See comments in cope.

[src/gsccolor.h]

2006-11-08T12:55:36.512197Z Alex Cherepanov

Set errorinfo for Background key in shading dictionary. Clear some
issurs detected by CET 09-47G.PS and 09-47H.PS.

[src/zshade.c]

2006-11-08T12:30:45.541199Z leonardo

Fix (shadings) : Improving radial gradients.

DETAILS :

1. Extend was missed sumetimes due to a wrong formula in R_outer_circle.
2. Must paint nothing when both radii are zero.

[src/gxshade1.c]

2006-11-07T23:30:31.983202Z Ralph Giles

Prepend $(DESTDIR) to unix 'make install' paths for the convenience of 
packagers. This assumes make will substitute an empty string for 
undefined makefile variable, but this is a widespread convention.
Bug 688948.

[src/unixinst.mak]

2006-11-07T19:49:18.274457Z Ralph Giles

Remove the deprecated ps2write.bat, which does not work. ps2ps2.bat is 
the correct script to invoke. Bug 688977.

[lib/ps2write.bat]

2006-11-07T18:52:46.763208Z Ray Johnston

Turn on CPSI mode for CET runs. This mode uses the CPSI cmyk_to_rgb
conversion and 'eofill' for Type1 characters.s

DETAILS:

This improves the difference count for 250 pages and only increases
the difference count for 6 pages. I've reviewed all regressions and
the changes are not important. Of the 250 pages that are improved,
The 250 improvements will be analyzed and those that were DIFF or
AOK will be changed to OK if they now match closely enough.

[lib/gs_cet.ps]

2006-11-07T15:55:45.038514Z Alex Cherepanov

Use standard vector product formula to decide whether the 2 tangent lines
in arct operator are collinear. Fix CET 11-03.

[src/gspath1.c]

2006-11-07T12:52:11.415127Z leonardo

Fix (gs_cet.ps) : Patch 'setsmoothing' for a better view of shadings in CET tests (continued).

DETAILS :

Fixing a misprint in the last patch.

[lib/gs_cet.ps]

2006-11-07T12:46:34.330897Z leonardo

Fix (gs_cet.ps) : Patch 'setsmoothing' for a better view of shadings in CET tests.

DETAILS :

CET tests execute "1 setsmoothing", which allows a 100% color error
while a shading rasterization. We patch 'setsmoothing' to make
the shadings be painted with the default smoothing.
It appears closer to what CPSI does.

[lib/gs_cet.ps]

2006-11-07T03:50:09.475944Z Alex Cherepanov

Adjust error reporting from sethalftone to match CET 09-40.
Fix an error in sethalftone redefinition. Halftone can read from
the current file; sethalftone cannot be redefined as { pop } .

[lib/gs_dps2.ps lib/gs_ll3.ps]

2006-11-07T01:13:42.489161Z Alex Cherepanov

Fix CET 09-32:
Adjust error reporting from setcolorrendering to match the test.
Make TransformPQR a required parameter, as specified by the PLRM.

[lib/gs_lev2.ps src/zcrd.c src/zcie.c]

2006-11-06T18:58:56.541927Z leonardo

Fix (shadings) : The monotonoty check for Stitching function was wrong.

DETAILS :

It partially fixes 09-47D.PS and other tests.

1. The function itself didn't set the non-monotonic dimension mask.
2. The shading code erroneusely exchanged dimensions when checking the color monotonoty.

[src/gsfunc3.c src/gxshade6.c]

2006-11-06T12:33:12.321244Z Alex Cherepanov

Partialy fix CET 13-05:
- Trap errors in definefont procedure and re-throw them as definefont errors.
- Throw "invalidaccess in definefont" error for the no-access font dictionary
  instead of invalidfont that happens without the check. 
- Silently ignore invalid /FID attribute.

[lib/gs_fonts.ps lib/gs_res.ps src/zbfont.c]

2006-11-05T04:14:18.656525Z Alex Cherepanov

Adjust error reporting from findfont procedure to match Distiller and CET
13-06.PS.tek360 . The PhotoPrint product is clearly wrong here leaving
a few objects on the stack besides the arguments when findfont fails.

[lib/gs_res.ps]

2006-11-05T03:00:15.616716Z Alex Cherepanov

Adjust error reporting from findencoding procedure to match Adobe.
Make "null ... findresource" throw /typecheck instead of /undefinedresource .
Fix CET 13-06.PS

[lib/gs_res.ps]

2006-11-04T17:05:22.998270Z Alex Cherepanov

Change attributes of the array form of the device color spaces.
Fix a bug in HSB to RGB conversion introduced in rev. 7124.
Simplify equality testing of color spaces: names match corresponding
array forms, all other match when color space arrays are equal.
Accept float value as a color value for an indexed color space.
Fixes CET 09-06.PS and many other test cases.

[lib/gs_indxd.ps lib/gs_cspace.ps]

2006-11-04T15:23:19.316020Z Alex Cherepanov

Fix error reporting for setdevparams operator, CET 27-08.

[lib/gs_lev2.ps src/ziodev2.c]

2006-11-04T14:11:05.665517Z Alex Cherepanov

Accept negative value for MinFontCompress user parameter and silently
substitute with 0. Intercept setuserparams errors and re-throw them as
setcacheparams errors. Partial fix for CET 27-07.ps.

[lib/gs_lev2.ps src/gsfont.c src/zusparam.c]

2006-11-04T05:59:16.045180Z Ray Johnston

Increase the number of DeviceN components we can handle to at least
250 (which is needed by CET 09-03, 09-06, ...). Both GS_CLIENT_COLOR_MAX_COMPONENTS
and MAX_VSTACK depth are needed since we use Type 4 functions to handle DeviceN colors.

[src/gsccolor.h src/gsfunc4.c]

2006-11-04T05:51:14.333525Z Ray Johnston

Make the Device color spaces arrays instead of packedarrays for Adobe
compatibility. CET 09-03, 09-06 and others.

[lib/gs_cspace.ps]

2006-11-04T04:02:22.614110Z Alex Cherepanov

Accept negative argument for setcachelimit operator and silently substitute
with 0. Intercept setuserparams errors and re-throw them as setcachelimit
errors. Fix CET 27-06.ps.

[lib/gs_lev2.ps src/gsfont.c src/zusparam.c]

2006-11-03T20:47:10.212392Z Raph Levien

Fix: Change /.OrigFont key to /OrigFont to match (undocumented) Adobe
behavior. Fixes CET 15-04-1 et al and 16-08-1. Note: test file
Bug687615.ps depends on old undocumented behavior, but has been patched
in the comparefiles repository.

[lib/gs_fonts.ps src/gdevpdtt.c src/zbfont.c]

2006-11-03T20:43:13.567715Z Raph Levien

Fix: Fixes clipsave/cliprestore nested with gsave operations. Correct
behavior is to save clipstack into saved gstate, and clear the clipstack
in the current graphics state, as clarified in PLRM3. Fixes 450-01.ps and
CET 09-54-2 et al, and 11-06-2.

[src/gsstate.c]

2006-11-03T19:20:58.328736Z Alex Cherepanov

Make arcto and arct operators throw undefinedresult when the start point
or the end point is the same as the center making calculation of the
tangent impossible. Fix CET 11-04.ps.

[src/gspath1.c]

2006-11-03T06:28:15.169508Z Ray Johnston

Fix some typo's editting blunders. No code change.

[src/gsmisc.c src/zmisc.c]

2006-11-03T05:45:05.987701Z Ray Johnston

Implement dynamic configuration of previous compile options that are needed
for CPSI compatibility running the PS CET.

DETAILS:

While a 'state' variable to control this is preferred to a global, the
gs_device or gs_imager_state is not propagated through all of the color
functions. For example, the place where USE_ADOBE_CMYK_RGB was used with
#if to select the color, even though there was a 'pis', it was called
with NULL at times. Default will remain the same as the current gs.

The other option controlled with .setCPSImode is the Type 1 fill method.
While eofill is the Adobe spec method needed for CPSI compatibility, 
the w.n. 'fill' method is needed for some Type1's created from TT fonts
that don't properly handle inadvertent crossings (and other bad fonts).

The "true .setCPSImode" will be added to the lib/gs_cet.ps to improve
CET CPSI compatibility.

PCL is not affected since it does not have CMYK colors and doesn't handle
Type1 fonts.

[src/gsmisc.c src/zmisc.c src/zchar1.c src/gxdcconv.c]

2006-11-02T19:42:47.894000Z leonardo

Fix (imagemask) : An optimization for imagemask with a shading color, continued 2.

DETAILS :

Cygwin/gcc warnings in the last patch.

[src/lib.mak src/gspcolor.h src/gximask.c]

2006-11-02T19:19:23.740183Z leonardo

Fix (imagemask) : An optimization for imagemask with a shading color, continued.

DETAILS :

This is a performance fix for 09-47D-3 .
It is a similar optimization as a recent one for imagemask, 
rather this one applies to different cases, which are not directly related to 
to Postscript operator imagemask. The cases are :
- filling a cached character with a shading color;
- filling a FAPI character with a shading color;
- rendering an imagemask while a clist playback (for future. 
  currently never happens with shadings).

This patch adds new modules gximask.c and gximask.h,
which factor out the common code for the mentioned cases.
The code is taken from the last patch for imagemask,
with minor restructurization.

The new function gx_image_fill_masked must be called
from the graphics librari instead a direct call
to the device virtual method fill_mask. 
It checks for the shading color and inserts the clipping device,
which represents the mask. 

Note that the clipping device always decompose a shading color,
so inserting the clipping device before it won't cause a problem.
However it needs some care when rendering to a high level device.

The clip accumulator device had no fill_mask virtual method.
This patch adds the default implementation 
for the proper work of gx_image_fill_masked.

[src/gsimage.c src/lib.mak src/gxacpath.c src/int.mak src/gximask.c src/gxccache.c src/gzcpath.h src/gxclrast.c src/gximask.h src/zfapi.c]

2006-11-01T21:18:41.176742Z leonardo

Fix : When filling a path with a shading, the filling rule was missed. 

DETAILS :

1. Unwing the rev 7114 patch due to a significant slowdown
   for filling a path with a shading (gxfill.c).

2. A minor change to gxfill.c : removed a redundant assignment to fo.lop .

3. The old code always used the non-zero winding rule,
   because gx_cpath_to_path misses the winding rule
   when called from gx_default_fill_path.
   See commet in code.
   This is the real fix for the problem.

4. pcpath->rule sometimes was not initialized when pcpath->path_valid is true (gxcpath.c)

We don't like that gx_default_fill_path creates a big clipping path,
which then converts into a path, which then is being intersected 
with a rectangle and/or parallelogram(the shading BBox) in gs_shading_fill_path.
The biggest time expence in this chain is the sorting a lot of 
rectangles when gx_cpath_intersect_path_slow applies the filling
algorithm to compute the intersection. In many cases the 
the rectangle is simply the bounding box of the path,
but it still needs the clipping path planarization, because 
the "planarized" property isn't stored in the path structure.

We tried to optimize against it, but didn't succeed with no raster differences.
Delaying that optimization for better times.
Due to a short time frame we need to make this patch smaller and simpler.
 

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

2006-11-01T19:58:48.174934Z Ray Johnston

Add prototypes for _ftelli64 and _fseeki64 for MSVC 6 builds. Allows
> 2Gb clist when building with MSVC 6. Bug 688394 for customer 330.

DETAILS:

Even though the functions are in the run time library (at least with
service pack 6), they aren't documented and aren't in the include
files. Without the prototypes, the functions are presumed to return
and 'int' so the sign gets extended for offsets > 0x7ffffff.

Tested with customer's file at 180dpi where the clist size gets up
to 2.7Gb.

[src/gp_mswin.c]

2006-11-01T04:31:35.972287Z Henry Stiles

This file should have been included in the previous checkin.  gs is
now an external repository and changes have to be checked in
explicitly.

[src/gdevpxop.h]

2006-11-01T01:05:01.781266Z Alex Cherepanov

Change order of operand checking in setfileposition to match CET 23-28.ps

[src/zfileio.c]

2006-11-01T00:44:39.318388Z Alex Cherepanov

Make resourcestatus throw typecheck when resource category is not a name.
Partial fix for CET 23-26.ps, page 4.

[lib/gs_res.ps]

2006-10-31T23:21:22.115009Z Alex Cherepanov

Change the order of argument checking in renamefile operator and the error
code returned for renaming bare devices such as (%stdin) to match CET 23-23.ps

[src/gsfname.c src/zfile.c]

2006-10-31T21:30:03.431760Z Alex Cherepanov

Change the order of argument testing in readline operator to match CET 23-22.ps

[src/zfileio.c]

2006-10-31T21:00:30.566372Z L. Peter Deutsch

Fixes a bug: 'bind' would affect non-writable ordinary arrays, rather than
doing nothing per the PLRM.  ('bind' still affects packed arrays, per the
PLRM.)  Fixes a discrepancy in PS3 CET 31-01-2.

[src/zmisc.c]

2006-10-31T20:58:38.108340Z L. Peter Deutsch

Fixes a bug that caused certain 1-operand math operators to return typecheck
rather than stackunderflow if the stack was empty.  Fixes a discrepancy in
PS3 CET 25-05-1.

[src/iutil.c]

2006-10-31T17:36:29.458383Z Alex Cherepanov

Change the order of argument checking for readstring operator to satisfy CET
23-21.ps . In general, CET prefers other errors over stack underflow when
there is a choice. Ghostscript was originally designed to do the opposite.

[src/zfileio.c]

2006-10-31T04:29:18.220326Z L. Peter Deutsch

Makes 0 0 exp return 1.0 rather than signalling undefinedresult, to match
Adobe interpreters.  Fixes a discrepancy in PS3 CET 25-07-1.

[src/zmath.c]

2006-10-30T22:20:55.924215Z Alex Cherepanov

Fully check an setcolor operand before trying to access a new one to match
CET 09-30 and 09-48 error reporting. Down, not across.

[lib/gs_cspace.ps]

2006-10-30T21:57:56.999671Z Ray Johnston

Tolerate some missing keys in a CMap (previously we only allowed for missing
CMapName). Missing /CodeMap and /CIDSystemInfo now tolerated for PS CET 23-25
and others.

DETAILS:

Note a CMap with missing CodeMap can't really be used. It is just accepted
for CPSI compatibility.

[lib/gs_cmap.ps]

2006-10-30T21:53:44.580966Z Ray Johnston

Remove Localization Resource since CPSI doesn't define this. PS CET 23-25
and others.

[lib/gs_cet.ps]

2006-10-30T21:47:51.298314Z leonardo

Fix : Don't replace FDArray for a built CIDFontType 0.

DETAILS :

Debugged with 32_all.PS .

The old code didn't check whether a CIDFontType 0 is being built
at second time and erroneusely replaced FDArray in it.
It causes FDArray to be prematurely released with "restore"
when the font is not, causing a heap inconsistency.

This quick fix avoids the FDArray replacement.
However it leaves some work for the garbager.
A better fix should perform a better cleanup -
see comment in code. Delaying it for better times.

[src/zfcid0.c]

2006-10-30T18:20:09.692598Z Alex Cherepanov

Fix decoding of the indexed color space in the smooth shading.
Adjust error codes to satisfy CET 12-14a, 12-14b 12-14e, 12-14f, 12-14g
Change gs_errorinfo_put_pair() to take char* instead of byte* a
more common type and move all errorinfo-related functions to idparam.c
because they are most often used with dictionary parameter functions.

[src/zimage.c src/idparam.c src/zshade.c src/int.mak src/interp.c lib/gs_ll3.ps src/idparam.h src/gxshade.c src/interp.h]

2006-10-30T14:54:34.519781Z Stefan Kemper

Comment change.

gsargs::arg_push_string changes the parsing algorithm to parse on 
spaces.  This is a side effect of changing the depth of the arg_list.  
Currently only the postscript -c option uses this parsing scheme.
 
No Differences.

[src/gsargs.h]

2006-10-27T11:49:01.166620Z leonardo

Fix : MSVC warning.

DETAILS :

char** --> char*
Don't know how it compiles with various compilers.
In any case it was definitely wrong.

[src/gsiorom.c]

2006-10-27T00:04:16.218261Z Alex Cherepanov

Don't modify the destination string of cvs and cvrs operators on
failure. Change the returned error codes to suit the CET tests
24-05.PS and 24-06.PS .

DETAILS:
Adobe enterpreters have a bug when "1234556789 10 ( ) cvrs"
restores the stack as "123456789 ( ) ( )" Ghostscript doesn't have
this bug, which is affects 24-05.PS checksums.

[src/zfileio.c src/iutil.c src/iutil.h src/ztype.c]

2006-10-26T23:10:05.159422Z Raph Levien

Fix: make out-of-bounds string DataSource reads return 0 bytes, rather 
than UMR. Spec calls for /rangecheck, but CPSI silently returns garbage. 
Improves 09-47B page 12 (focus on test 6), but exact match to CPSI is
probably not feasible.

[src/gsdsrc.c]

2006-10-26T22:14:01.743778Z leonardo

Fix (TT font reader) : Obtain Unicode codes from Encoding glyph names of a special format.

DETAILS :

Bug 688946 "Problem reading PDF file with Arabic font".

We think we observe an undocumented Adobe feature.
This patch has no strong theoretic foundation.
It is created empirically.

An embedded True Type font has no some glyph names in its 'post' table,
but they present in Encoding Differences. 
The glyph names look as uniXXXX where XXXX is 4 hexadecimal digits.
The corresponding character codes can't be translated into
glyph indices neither with AdobeGlyphList, nor with 'post',
nor by the identity or another simple mapping to Unicode.

We conclude that Adobe recognizes such names and
obtains Unicode codes from them, and then translates
them with 'cmap'. We think it is only possible correct method for
the supplied test case. This patch implements it.

1. Passed Encoding as prebuilt_encoding for symbolic fonts (pdf_font.ps).

2. When a symbolic font has an Unicode 'cmap',
   account glyph names from its Encoding (the change to .pdfcharkeys in gs_ttf.ps)
   while composing CharStrings.

3. Modified .addglyph with conversion of uniXXXX names into Unicode codes.

4. The new mapping is allowed only with cmap 3.1.
   Debugged with Bug688467.ps .

[lib/pdf_font.ps lib/gs_ttf.ps]

2006-10-26T08:26:31.673716Z leonardo

Fix : Specialize the build_char function argument type (continued).

DETAILS :

Removing another cast related to the last patch
(An MSVC warning).

[src/lib.mak src/gxfcopy.c]

2006-10-26T07:53:20.323680Z leonardo

Fix : Specialize the build_char function argument type.

DETAILS :

The ghostpcl project yielded a potentially harmful
warning about a type cast. It occurs a cast from 
a class to subclass. We could not provide a dynamic check in there,
so we analyzed why it needs such cast. The reason appears 
an inaccurate design in the graphics library, and we fix it now.

[src/gxchar.c src/gstext.c src/gxfcopy.c src/gxfont.h]

2006-10-26T07:07:58.608985Z leonardo

Fix : MSVC warning in the last patch.

DETAILS :

Fixed an inaccurate type cast.

[src/interp.c]

2006-10-26T05:36:39.854227Z L. Peter Deutsch

Fix: /bind load printed --.bind-- rather than --bind--. Partly fixes a
discrepancy in PS3 CET 31-01-2.

[lib/gs_ll3.ps]

2006-10-26T04:39:35.686300Z L. Peter Deutsch

Replace inexact decimal literals in the HSB<->RGB algorithms with more exact
computed values, so that (e.g.) 0.2 1 1 sethsbcolor currenthsbcolor returns
0.2 1 1.  Fixes problems in PS3 CET 09-41-4.

[lib/gs_cspace.ps]

2006-10-26T01:03:53.154097Z Raph Levien

Implementation of imagemask scaling. Fixes CET 09-24 page 3 and many 
other instances of the interpolated "turkey" bitmap. This implementation
mostly matches Adobe, but differs in one bit; further analysis of the
Adobe algorithm would be necessary to make it match 100%.

[src/lib.mak src/zfimscale.c src/simscale.c src/int.mak lib/gs_img.ps src/simscale.h]

2006-10-25T17:01:48.042147Z Alex Cherepanov

Add a routine to create and store [/key any] array in $error.errorinfo for
better conformance with Adobe PS interpreters. This routine will be called
from many places that reports errors in dictionary parameters. Use the new
routine to fix one case of error reporting in the inage operator.
Bug 688956.

[src/zimage.c src/int.mak src/interp.c src/interp.h]

2006-10-25T12:10:09.905326Z Alex Cherepanov

Normalize bounding box retrieved from PostScript BBox parameter in the
shading dictionary because Adobe interpreters accept denormalized box.
Bug 688937, customer 200.

[src/zshade.c]

2006-10-24T15:13:03.211241Z leonardo

Fix (imagemask) : An optimization for imagemask with a shading color.

DETAILS :

This is a partial performance fix for 09-47L.PS .
It fixes the biggest performance flaw,
but a further optimization is still wanted.

The patch converts the image into a clipping path and then
renders entire shading at once through the clipping path.
The old code rendered entire shading color many times for 
each rectangle of the mask.

1. The clip list accumulator device is made publicly accessible.

2. Provided a garbager descriptor for clip list accumulator device structure. 

3. When an imagemask needs to render with a shading color,
gs_image_begin_typed replaces the target device with 
the clip list accumulator device.

4. To provide a correct work of (3),
inserted a hook into gx_dc_pattern2_fill_rectangle,
which forwards the operation back to the device method.
It is done because normally that function calls
copy_mono with imagemak. Instead that, we need to accumulate 
rectangles for the clipping path.

5. Introduced a new signal pattern_manage__is_cpath_accum,
which is used to detect the clip path accumulator device
under a forwarding device. Such case happens in (4)
when it renders a cached character with a shading color.

6. gs_image_cleanup performs the main work for rendering
the shading color through the clipping path.
Note that we need to pass the device color to it,
therefore it gets a new gs_state argument.
(Well, one may think that it can be passed 
in a new field of gs_image_enum.
Actually that's not safe because an erroneus Postscript program 
can change the current graphic state and
release the old one. After that the pointer
will point to the released structure and
cause a heap inconsistency).

[src/gsimage.c src/gsptype1.c src/lib.mak src/zimage.c src/gsptype2.c src/gxcpath.c src/gxacpath.c src/gsimage.h src/gxcpath.h src/gxccache.c src/gzacpath.h src/gdevpdfi.c src/gxdevcli.h]

2006-10-24T12:22:14.551224Z Tor Andersson

A conditionally compiled mechanism to allow cached characters
to be locked out from eviction. A cached character has a reference
count, which if non-zero will prevent the cache slot to be evicted.

This is needed for the GSLite API.

[src/gxfcache.h src/gxccman.c]

2006-10-23T11:17:11.666646Z leonardo

Fix : Repair the character cache logics with persistent cache entries (continued).

DETAILS :

Cygwin/gcc yielded unpleasant warnings.

[src/gxfcache.h src/gxccman.c src/gxstroke.c]

2006-10-22T18:58:27.280592Z L. Peter Deutsch

Fixes bug: xshow/yshow/xyshow checked the length of the widths array
incorrectly, and the outcome of the check was ignored.  Partially fixes a
discrepancy in PS3 CET 13-27/28/29.

[src/gxchar.c src/gstext.c src/gstext.h]

2006-10-22T17:58:51.962128Z L. Peter Deutsch

Fixes bug: the user path operators didn't check encoded user paths to make
sure that the operand string/array and operator string allowed read access.
Partially fixes a discrepancy in PS3 CET 13-29-3.

[src/ibnum.c src/zupath.c]

2006-10-21T22:38:11.960157Z L. Peter Deutsch

Changes exec, stopped, and .stopped so that if the object to be executed is
noaccess and executable, the invalidaccess error occurs with the object
still on the operand stack.  Fixes an Adobe incompatibility in PS3 CET
28-14-1.

[src/zcontrol.c]

2006-10-20T01:12:42.025502Z Raph Levien

FIX: Fixes CET 18-02A p4 and others. Optimization for filling shadings
by installing a clipper device with the path, and rendering complex 
color through it, does not produce correct results when fill rule is
eofill. This patch simply disables the optimization in the case of
eofill. We should probably look at why the optimized code produces
incorrect results, as that may affect correctness of eoclip, not to
mention the performance issues.

[src/gxfill.c]

2006-10-18T13:32:51.500333Z Ray Johnston

Fix error returned from currentdevparams. Fixes PS LL3 CET 27-03. Thanks
to Noriyuki Matsushima for this patch.

[src/ziodev2.c]

2006-10-18T07:01:10.427208Z Dan Coby

Fix for 688880 Encrypted PDF can not be processed.

DETAILS:

The problem file specifies both V = 1 and and a Length = 128
bits in the encryption dict.  This is contradictory since page 93 of
the PDF 1.6 spec says that if V = 1 then the key length should be
40 bits.

This change ignores the the Length value if V = 1.  This matches the
observed behavior with Adobe Acrobat 7.0.

[lib/pdf_sec.ps]

2006-10-17T13:33:02.347582Z leonardo

Fix (gs_main_finit) : Provide a right finalization for the language switch project.

DETAILS :

It needs to finalize 
without closing the output device
and without closing the graphics library and files,
because other interpreters may work with them
after the Postscript interpreter closes.

[src/imain.c]

2006-10-16T15:30:51.595142Z leonardo

Fix (memory management) : Restore the memory wrapper code consistency.

DETAILS :

It was broken during the ghostpcl project merging :

1. The USE_RETRY_AND_LOCKING_MEMORY_WRAPPERS code was inconsistent.
2. The !USE_RETRY_AND_LOCKING_MEMORY_WRAPPERS code caused 
   a MSVC compiler warning due to an inaccurate type cast.

[src/gsmalloc.c]

2006-10-16T15:08:20.540609Z leonardo

Fix : Repair the character cache logics with persistent cache entries.

DETAILS :

Important character caching problems have occasionally detected
while merging with the ghostpcl branch :

1. The ttfReader never released in PCL when a font has a valud XUID.

1.1. The new function gs_clean_fm_pair_attributes,
     is called when a font is being released by 'restore',
     but its cached characters continue to live in the cache.
     This function releases those font-matrix pair attributes,
     which may point to the font. When the font has 
     True Type data, it releases ttfReader and ttfFont.

1.2. The function gs_purge_font_from_char_caches
     is now called from gs_font_finalize,
     which is called from 'restore' and from the garbager.
     It allows gs_clean_fm_pair_attributes to be called
     from 'restore'. Note that when it is called from
     the garbager, it works idle because the method
     'free' is disabled while the garabarer runs
     for same allocator.

1.3. The new flag gs_font::is_cached prevents a redundant
     work of gs_purge_font_from_char_caches,
     when it is called from font_restore and from
     gx_font_finalize. Therefore the argument of 
     gs_purge_font_from_char_caches is now non_const.

1.4. With the new code, cached characters
     for fonts with valid XUIDs persist 
     across a document/job end. They may be reused
     when a next document/job renders same font-matrix .
     There is no way to purge cache between jobs 
     besides destructing entire cache and allocating it anew.

1.5. The new function gs_purge_font_from_char_caches_completely
     is coded for those clients, which 
     don't need the feature 1.4.

1.6. Clients (such a PCL interpreter) must immediately call
     gs_purge_font_from_char_caches or
     gs_purge_font_from_char_caches_completely,
     whenever they release a font immediately.
   
2. Cached characters were dropped from cache on 'restore'
   while a font has a valid XUID and can appear again afrer 'restore'.
   It happened because the old code called gs_purge_font_from_char_caches
   from font_restore due to its cache elements point to
   the font's XUID, which is being released.

2.1. Copy the XUID to a stable memory in gx_add_fm_pair.

2.2. Release it in gs_purge_fm_pair.

2.3. Disable the related code portion in font_restore.

2.4. The new function gx_attach_tt_interpreter
     is factored out from gx_add_fm_pair.
     Now it is also called from gx_lookup_fm_pair
     (with an intermediate function gx_provide_fm_pair_attributes)
     when a persistent pair is being associated with 
     a new font having same XUID.

[src/gxfcache.h src/gsfont.c src/gxccman.c src/zfont.c src/gxccache.c src/gxfont.h]

2006-10-16T12:50:05.195523Z leonardo

Fix (Resource machinery) : Improve working with ROM file system.

DETAILS :

1. Consider %iodevice% paths as absolute when combining a resource file name (gs_res.ps).
2. A minor code cleanup : Remove gp_file_name_combine_patch
   (an algorithmically equivalent change).
3. A minor code cleanup : Improve zfile_name_is_absolute
   (an algorithmically equivalent change).

[lib/gs_res.ps src/zfile.c src/zfile1.c]

2006-10-15T17:19:45.555905Z Ray Johnston

Fix for bug 688929 -- Genoa test 412-01.ps defines a couple of Type 42 fonts
without anything in the 'sfnts'. This hack switches it to a Type 3. This is
harmless for normal files since the check is quick and is only executed when
fonts are loaded.

[lib/gs_typ42.ps]

2006-10-13T01:14:58.600115Z leonardo

Fix (FAPI) : Restore the functionality and the documentation, which were broken with commitments 6998 7077 7078.

DETAILS :

1. The reentrant UFST was not tested yet.
2. We noticed a problem with -dTextAlphaBits=4, which to be fixed separately.

[src/fapiufst.c src/gxfapiu.c src/gxfapiu.h]

2006-10-13T00:02:34.922456Z leonardo

Fix (clist) : CCITTFaxDecode consumed extra byte.

DETAILS :

Debugged with ghostpcl ppmraw -r216 c327.bin .

This patch is based on my understanding of the problem,
which was obtained within a short time frame.
Therefore I'm, not sure that all statements of this comment
are necessarily correct.

The old code didn't write the EOD sequence for CCITTFax data.
Such behavior was designed many years ago in order to write 
a smaller clist output. A year ago the CCITTFaxDecode filter 
was improved with a workaround for an incorrect behavior of 
Adobe Acrobat, which writes an EOD when it is not required 
(see the gs revision 6123).
The workaround looks ahead for EOD and consumes it if it appears.

However doing that improvement, nobody took care about the
clist reader, which didn't write EOD and catenates other data
after CCITTFax data. If the subsequent data occasionally look as EOD,
they are erroneusely consumed by CCITTFaxDecode, 
and the clist reader continues with a wrong position.
It caused unpredictable behavoir and stochastic crashes.

This patch forces writing the CCITTFax EOD for clist. 
Maybe it's not the best fix, but it is what we can do
within the short time frame.

[src/gxclutil.c]

2006-10-11T21:12:53.047803Z leonardo

Fix (spot analyzer) : Clean pointers when closing.

DETAILS :

This is a minor code cleanup.
The garbager never deals with those pointers.
We clean them just against a heedache for those,
who reads that code.

[src/gzspotan.c]

2006-10-11T20:06:11.668976Z leonardo

Fix (memory manager) : gs_heap_free_object could break itself.

DETAILS :

See comment in code.
Debugged with ghostpcl 18-21.BIN .

[src/gsmalloc.c]

2006-10-11T18:50:08.977036Z Ray Johnston

Fix 'bound_0_1' procedure to return 'real' rather than 'int'.
Fixes CET 09-02.PS

[lib/gs_cspace.ps]

2006-10-11T18:12:10.866136Z Stefan Kemper

removing c++ comment.

Warning changes to gsmalloc.c have broken the -K set max heap usage option.

[src/gsmalloc.c]

2006-10-11T05:54:04.315501Z Ray Johnston

Add gs_cet.ps to the %rom%lib/ directory so that it will be found without
problems when running the PS CET conformance which needs this file.

Later we might remove it from the %rom%lib/ but it doesn't really take up
much space and it will prevent 'file not found' failures.

[src/int.mak]

2006-10-11T02:57:22.469112Z Ray Johnston

Initial version of 'startup' file to configure Ghostscript to match the
Adpbe CPSI to run CET tests.

[lib/gs_cet.ps]

2006-10-10T22:43:56.823756Z Stefan Kemper

Commenting out the memory wrappers retrying and locked.
This will obviously cause concern and testing for gs, 
on the other hand it simplifies the memory allocations
and removes some significant issues with memory cleanup
when multiple jobs are run together in a language switch
environment.

[src/gsmalloc.c]

2006-10-10T18:16:22.525231Z leonardo

Fix (PS interpreter) : Dont print "Returning error -102." that is not an error.

DETAILS :

The debug build printed "Returning error -102.".
-102 == e_InterpreterExit is not an error.
Don't print the confusing message.

[src/interp.c]

2006-10-10T18:00:19.925286Z leonardo

Fix (stroking) : Zero lengh dashes have been missed, part 2.

DETAILS :

1. Unwinding the revision 7094 change.

2. Fixing an antique bug, which persists since the repository was created.
   When computing the orientation of an isolated zero length stroke
   (near the code "const segment *end = psub->last;"),
   the old code erroneusely takes the direction to
   the last point of the previous subpath. 
   With recent changes it caused a wrong longitude adjustment
   for some PCL documents.
   Documented the right invariant in new comment.

3. The flag zero_length was wrong when a non-zero
   length segment follows a zero length segment.

4. Zero length strokes were missed with dot_length != 0
   and a non-trivial dash pattern (gxpdash.c, lib.mak).
   It's another case when PCL could miss dots.


[src/lib.mak src/gxpdash.c src/gxstroke.c]

2006-10-10T10:03:37.323396Z leonardo

Provide a handling of true Unicode fonts.

DETAILS :

Bug 688897 "Unicode fonts in Postscript" for the customer #130.

1. Define a new Ordering = Unicode for handling Unicode character sets.

2. Define a new Registry = Artifex for distinguishing those
   character sets from other Postscript vendors, 
   which do not define such character sets yet.

3. Define a new Identity-UTF16-H CMap for identity mapping
   from Unicode UTF16 to CIDs with the Unicode character set.

4. As a part of CIF font emulation with True Types,
   add the Unicode.Unicode entry to the .CMapChooser table,
   which actually is an identity translation (gs_ciddc.ps).

6. Extend the gs/lib/cidfmap syntax with handling
   Registry = Artifex (gs_fntem.ps).

7. Force embedding Artifex CMap into PDF (gsfcmap.c).

8. Account the knowledge that an Artifex Unicode CMap
   may be used for generating a ToUnicode CMap (zfcmap.c).

9. Document all that in gs/doc .

10. Bug: range.size was not initialized when creating
   an identity ToUnicode CMap (gsfcmap.c).

A PDF generated with this patch appears
not searchable with Adobe Acrobat,
and it cannot extract the text properly.
Not sure why. Likely it's another Adobe bug.

[Resource/CMap/Identity-UTF16-V lib/gs_ciddc.ps Resource/CMap/Identity-UTF16-H doc/Use.htm src/gdevpdtc.c src/gsfcmap.c src/zfcmap.c lib/gs_fntem.ps]

2006-10-06T18:53:35.444836Z Stefan Kemper

Stepping on Igor's stroke code fully expecting him to review it.
This is the copy of the stroke code Igor originally gave the PCL team.

The code it is replacing loses data and produces stray lines.

[src/gxstroke.c]

2006-10-06T16:54:37.190610Z Ray Johnston

Change to make color values be 'real' instead of sometimes 'integer' types
for PS CET 09-02 and MANY other pages.

DETAILS:

Since this is at the PS level, not the graphics lib, it shouldn't affect
PCL.

Note that 09-02 still shows a single instance of '0' instead of '0.0'.
I am continuing to track that down.

[lib/gs_devcs.ps src/zcolor.c]

2006-10-06T15:25:15.662720Z Stefan Kemper

Merge from pcl tree.

The freeing of the rop_dev and clip_dev in an image enum now 
unhooks forwarding devices prior to freeing otherwise there 
are memory leaks.

The rational behind the direct frees used here verses 
the more normal reference counting of graphic library objects 
has apparently been lost.  

[src/gxidata.c]

2006-10-06T15:20:13.457027Z Stefan Kemper

Removing incorrect unsetting of device color when the device isn't a 
bit tagging device.  The bit tagging code shouldn't affect other devices.


[src/gspaint.c]

2006-10-06T15:18:10.804229Z Stefan Kemper

Changing a logging error into a return error that will be ignored later.

This makes the -Z# debugging output more usable.


[src/gdevdflt.c]

2006-10-06T15:16:00.887988Z Stefan Kemper

Merge changes from pcl tree.

PSI_INCLUDED is used to signal that gs is not at the top of the system but
rather is part of a language switching build.

In this case the outputing of pages and management of the device is not 
completely under postscript's control.

[src/zdevice.c]

2006-10-06T15:12:52.976332Z Stefan Kemper

Merge fix from pcl tree, 
writing a display list with a contone device seg faulted.

[src/gxclimag.c]

2006-10-06T14:08:05.588652Z Stefan Kemper

Restore code that is required for raster ops. 


[src/gxdcolor.c]

2006-10-05T01:45:56.126213Z Alex Cherepanov

Pacify Valgrind. Copy a non 0-terminated PS string to a local buffer to avoid
scanning past the end of the string. Bug 688882.

[src/gdevpdfr.c]

2006-10-05T01:09:35.392689Z Alex Cherepanov

Following Acrobat Reader 5, ignore everything outside of begincmap..endcmap
Bug 688812, customer 170.

[lib/pdf_font.ps]

2006-10-05T01:00:55.479409Z Alex Cherepanov

Avoid the operand stack overflow. Construct CharStrings ductionary without
.dicttomark operator. Bug 688802, customer 130.

[lib/gs_ttf.ps]

2006-10-05T00:47:54.384597Z Alex Cherepanov

Use correct transformation matrix for calculating the current point movement
for PDF text rendering mode 3. Bug 688756, customer 700.

[lib/pdf_ops.ps]

2006-10-04T13:29:44.744703Z Alex Cherepanov

Fix a reference to an incorrect bug number in toolbin/vg_bugs.supp

[toolbin/vg_bugs.supp]

2006-10-04T12:30:21.555827Z Alex Cherepanov

Fix off-by-one error in the PDF font subset prefix generator that
mixed in an uninitialised byte when the object size was odd.
This error caused indeterministic PDF generation and Valgrind warnings.
Bug 688911.

[src/gdevpdtb.c toolbin/vg_bugs.supp]

2006-10-04T11:09:21.389337Z Alex Cherepanov

Use open_device procedure to identify the type of the device instead of the
standard gs_object_type() because gs_cpath_accum_device is allocaded on
the stack i.e. has no block header with a descriptor but has dev->memory set
like a heap-allocated device. Bug 688874.

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

2006-10-03T18:08:37.387486Z leonardo

Fix (pdfwrite) : Pacify Valgrind with not touching an uninitialized data.

DETAILS :

Bug 688873 "pdfwrite :Valgrind reports uninitialized data".

The old code checked penum->text.x_widths, penum->text.y_widths
and shifted them forth and back when they are uninitialized.
It was not harmful because those pointers were not defererenced.
Also space.s_char was checked when unitialized. 
In those cases it should not be accessed.

[src/gdevpdtc.c src/gdevpdte.c]

2006-10-03T00:31:14.024018Z Ralph Giles

Port additional UFST initialization changes from ghostpcl trunk.

[src/fapiufst.c]

2006-10-02T23:26:12.368734Z Ralph Giles

Port UFST-related changes from the ghostpcl tree, r2472 to r2532. This
introduces gx_UFST_init() and _fini() functions, and make both PCL and 
PS ufst initialization use these functions instead of calling ufst
directly, so that the same ufst config is shared between the two.

Also, update the copyright headers, and defined a needed enum entry for 
UFST MicroType fonts.

[src/gxfapiu.c src/gxfapiu.h src/gxftype.h]

2006-10-02T23:21:05.393683Z Ralph Giles

Set normal eol and keyword substitution flags.

[src/gxfapiu.c src/gxfapiu.h]

2006-10-02T19:02:30.811324Z Ralph Giles

Make gs_image_common_init() a proper public function since it is called 
by the PCL interpreter.

[src/gsimage.c src/gsimage.h]

2006-10-02T14:10:53.409280Z Stefan Kemper


Add boolean USE_ttfReader to gs_type42_font_init()
In general this is always set true.  If this is set false the caller
will disable the attachment of ttfReader for dynalab ttf font hinting 
and the caller is expected to do all the gs_type42 font initialization
that was required prior to the addition of ttfReader to the code. 

Add an early out from gs_type42_font_init() that bypasses some table 
generation that isn't needed when USE_ttfReader is false.  Pulling the
return statement here will reenable this code and is harmless except for 
some small memory leaks.

Currently only the PXL downloaded ttf fonts use the false case init,
to render fonts with UFST not with FAPI ufst.

NO expected pdf or ps or pcl differences since the code path is identical.
  

[src/gxfcopy.c src/gxccman.c src/gxfont42.h src/gstype42.c src/zfont42.c]

2006-09-28T05:56:04.096363Z Ralph Giles

Add an error callback to the example jasper applications. Previously they
always failed (or succeeded) silently.

DETAILS:

The fprintf() calls were replaced with jas_eprintf() in this code along
with everywhere else, but no actual callback was installed, so the 
applications weren't able to give any feedback at all. So we now provide
a simple callback that just passes the message on to stderr as is appropriate
for a library client.

[jasper/src/appl/imgcmp.c jasper/src/appl/jasper.c jasper/src/appl/jasper_sdl.c jasper/src/appl/imginfo.c jasper/src/appl/jiv.c]

2006-09-27T20:37:41.367020Z Ralph Giles

Duplicate JPX image channels if the cmap box has multiple references to
satisfy the expectations of later parsing. Bug 688869.

DETAILS:

A paletted jpx image must contain a 'cmap' box that describes how to
build the output image channel by channel out of some combination of
decoded image components, which can be used either directly, or mapped
through a component of the included palette.

Previously, jasper created a new image component whenever a palette 
mapping was satisfied, but did nothing when the cmap specified a decoded
component was meant to be used directly. This created two problems: first
the cmap value was ignored, so if the direct mapping output channels were
in a different order from the decoded components, the would not be marked
correctly. Second, if multiple channels were mapped from the single decoded
component, this was not recorded and the image passed up from the decoder
would be "missing" a channel because component lookups don't go through
the decoded cmap table.

As I read the specification, we should really be creating a completely new
image by applying the cmap data to the decoded image. However, for PDF we
need access to the raw indexed image component before palette application,
and just duplicating directly references components within the same image
is a less invasive change.

[jasper/src/libjasper/jp2/jp2_dec.c jasper/src/libjasper/base/jas_image.c jasper/src/libjasper/include/jasper/jas_image.h]

2006-09-25T21:50:55.223674Z Ralph Giles

Correct a typo in the previous revision.

[src/configure.ac]

2006-09-25T21:45:34.607229Z Ralph Giles

Have the configure script check for fopen64 before using it.
Bug 688394.

DETAILS:

We use this as a shorthand to check for the marked *64() stdio
calls, and based on that define HAVE_FILE64, which is used in 
the unix platform code to select whether to call the marked
or normal FILE code when _LARGEFILE64_SOURCE is not defined.

This is required on MacOS X which does not provide fopen64()
and friends (or O_LARGEFILE) but nevertheless implements 
reasonable large file support with the normal routines on 
32-bit architectures without defining _LARGEFILE*_SOURCE.

The result should be the same with the autoconf build on
architectures where the previous code worked, including 
linux and cygwin. When building manually without passing
-DHAVE_FILE64, or on platforms that don't provide the 
marked 64-bit versions, we will now fall back to the 
vanilla functions, and so the bug may re-occur there. This
is better than failing to link on such platforms, which
was the previous behavior.

[src/Makefile.in src/configure.ac src/gp_unifs.c]

2006-09-24T23:50:46.301070Z Alex Cherepanov

Fix calculation of the PDF font subset prefix. This change has little effect,
except enabling previously unreachable code and generating different prefixes
in some cases.

[src/gdevpdtb.c]

2006-09-24T13:22:31.256099Z Alex Cherepanov

New version of vg_bugs.supp for the recent Valgrind and gcc. This file covers
all bugs detected on the regression test suite except the bugs in the system calls
and CRTL, which are difficult to suppres in the platform-independet way.

[toolbin/vg_bugs.supp]

2006-09-22T17:42:33.433152Z Alex Cherepanov

Change s/stream/strm/ to fix a MSVC 6 warning: C4224: nonstandard extension
used: formal parameter 'stream' was previously defined as a type.

[src/gp_iwatc.c src/gp_macio.c src/gp_mswin.c src/gp_os2.c src/gp_unifs.c src/gp.h src/gp_vms.c]

2006-09-22T00:51:32.310174Z leonardo

Fix : Cygwin/gcc warnings.

[src/gdevpdtt.c src/gdevpdtw.c src/devs.mak]

2006-09-21T20:24:01.154825Z leonardo

Fix (pdfwrite) : Don't use sscanf on a non 0-terminated PS strings.

DETAILS :

This redoes the revision 7062 change due to MSVC compiler warning.

The old code has 2 unpleasant hings :
1. MSVC yelds a warning about breaking 'const'.
2. It assumes no spaces at end of a serialized pdfmark argument value.

The new code should be clean.
 

[src/gdevpdfm.c]

2006-09-21T19:21:48.437020Z leonardo

Fix (pdf14 device) : Properly intersect rects when composing transparency buffers (continued).

DETAILS :

Bug 688631 "PDF segfault".

The old code supposed : the higher buffer, the smaller rect.
Not shure why. The test sample includes the opposite case.

Tha last patch for the subject appears incomplete.
 

[src/gdevp14.c]

2006-09-21T12:36:25.384099Z leonardo

Fix (pdfwrite) : Wrinting a PDF/A, convert True Type fonts into CIDFontType2 (continued 2).

DETAILS :

This completes the fix the bug 688790  
"pdfwrite : The PDF/A conversion needs to re-encode texts".

Adobe PDF/A preflight tool appears to check whether all glyphs
in the font have corresponding entries in W, W2 or Width array.
This includes unused glyphs and .notdef .
This patch implements creating a W array element for
.notdef when a Type 42 font is being converted into CIDFontType2.

Besides that, before this patch, when converting a Type 42 into
CIDFontType2, the W array was not written at all,
because pdf_write_embedded_font did not know about the conversion.
Adding a new argument to it for passing that information.

[src/gdevpdtb.c src/gxfcopy.c src/gdevpdtd.c src/gdevpdtt.c src/gdevpdtb.h src/gdevpdtw.c src/gxfcopy.h]

2006-09-20T18:26:17.744657Z Alex Cherepanov

Fix Valgrind warnings: (1) don't use sscanf on a non 0-terminated PS strings.
Temporaty replace the last character of the string with '\0' before scanning.
(2) Don't assign a structure to itself. Check for this case and skip the
assignment. Bug 688890.

[src/gdevpdfm.c src/gshtscr.c src/gdevprn.c]

2006-09-20T12:01:04.572458Z leonardo

Fix : pdfinflt.ps didn't work with some files.

DETAILS :

This is a minimal change for my current need.
This patch relates to the bug 687796, but doesn't fix it.

[toolbin/pdfinflt.ps]

2006-09-19T23:48:03.361024Z Ralph Giles

Correct a typo that cause jpx decoding to fail for all files.

[jasper/src/libjasper/jp2/jp2_dec.c]

2006-09-19T23:45:43.473583Z Ralph Giles

Propagate error messages from the jasper library.

[src/lib.mak src/sjpx.c]

2006-09-19T19:40:20.717813Z leonardo

Fix (pdfwrite) : Wrinting a PDF/A, convert True Type fonts into CIDFontType2 (continued).

DETAILS :

This is a partial fix the bug 688790  
"pdfwrite : The PDF/A conversion needs to re-encode texts".

This is a code restructurization against missed function prototypes.
The change is algorithmically equivalent.

[src/gdevpdtf.c src/gdevpdtw.c src/gdevpdtf.h src/gdevpdtw.h]

2006-09-19T18:59:10.571301Z leonardo

Fix (pdfwrite) : Wrinting a PDF/A, convert True Type fonts into CIDFontType2.

DETAILS :

THis is a partial fix the bug 688790  
"pdfwrite : The PDF/A conversion needs to re-encode texts".

PDF/A doesn't allow True Type fonts with Encoding Differences.
Therefore we convert such fonts into CIDFontType2.
The main work is done with 2 functions :
pdf_convert_truetype_font_descriptor and
pdf_convert_truetype_font.
See comments in code about the conversion algorithm.

Minor change (gdevpdtw.c) : The old code always compressed CIDToGIDMap.
The new code does dependently on the CompressFonts distiller parameter.
Except that, for a non-PDFA run the code change should be equivalent.

Now the font conversion works, but Adobe preflight tool
reports missed glyphs by unknown reason.
Will need a separate patch for that.

[src/gdevpdfx.h src/gdevpdtd.c src/gdevpdtf.c src/gdevpdtw.c src/gdevpdfb.h src/gdevpdtf.h]

2006-09-19T16:08:49.517323Z Alex Cherepanov

Work around a bug in the image operator, which doesn't always restore the
operand stack when it fails.
Bugs  688532, 688646, 688672, 688736, 688740, 688899.

[lib/pdf_draw.ps]

2006-09-19T09:55:25.954073Z leonardo

Fix (pdfwrite) : Uninitialized variables.

DETAILS :

1. ps_encoding_index sometimes was not initialized in gdevpdtt.c .
   Bug 688898 "ps2pdf segfaults in gdevpdtt.c: pdf_reserve_char_code_in_pdfont ()".

2. Cygwin/gcc reports a possibly uninitialized variable in gdevpdfu.c .
   Actually the compiler is not enough clever.

3. Removed unused variables in gdevpdtt.c .

[src/gdevpdtt.c src/gdevpdfu.c]

2006-09-19T08:20:45.476798Z leonardo

Fix (pdfwrite) : Generalize pdf_finish_font_descriptors (continued).

DETAILS :

This is a preparation for the bug 688790  
"pdfwrite : The PDF/A conversion needs to to re-encode texts".
The last patch appears incomplete.
This adds the pdf_resource_type_t parameter to pdf_finish_resources,
and defines pdf_convert_truetype_font_descriptor for future implementation.

This change is algorithmically equivalent.

[src/gdevpdtd.c src/gdevpdtf.c src/gdevpdfu.c src/gdevpdtw.c src/gdevpdtd.h src/devs.mak src/gdevpdtf.h]

2006-09-19T07:12:54.902919Z leonardo

Fix (pdfwrite) : Generalize pdf_finish_font_descriptors.

DETAILS :

This is a preparation for the bug 688790  
"pdfwrite : The PDF/A conversion needs to to re-encode texts".
It generalizes pdf_finish_font_descriptors to
pdf_finish_resources. Also define a stub for
pdf_convert_truetype_font.

This change is algorithmically equivalent.

[src/gdevpdtd.c src/gdevpdfu.c src/gdevpdtw.c src/gdevpdtd.h]

2006-09-19T03:55:34.654291Z Ralph Giles

Add the PDF/A and PDF/X prefix source files to the installed library 
file list. Bug 688861.

[src/unixinst.mak]

2006-09-19T02:33:01.156102Z Ralph Giles

Add a few new files to the unix makefile installation target. In 
particular, opdfread.ps is needed by the ps2write device. We also
install the new ps2ps2 convenience script for invoking it. Bug 688861.

[lib/ps2ps2 src/unixinst.mak]

2006-09-19T02:21:59.699240Z Ralph Giles

Correct a broken link. Fixes bug 688896.

[doc/Ps2pdf.htm]

2006-09-16T02:31:46.612720Z Alex Cherepanov

Change s/steram/stream/ introduced in rev. 7040 and causing compile errors
on old versions of MSVC. Bug 688893.

[src/gp_mswin.c src/gdevpdfi.c]

2006-09-14T17:29:56.804569Z Alex Cherepanov

Copy a non 0-terminated PS string to a local buffer to avoid scanning past
the end of the string. Also fix a few compiler warnings.
Bug 688882.

[src/gdevpdfp.c]

2006-09-14T17:19:41.966384Z Alex Cherepanov

Pacify Valgrind. Initialize penum->planes[i].source.data in gsimage.c
These pointers are enumerated during garbage collection.
Bug 688886.

[src/gsimage.c]

2006-09-14T12:15:43.242134Z leonardo

Fix (type1 hinter) : Delayedly adjust matrix precision with sbw data.

DETAILS :

Bug 688875 "type1 hinter: Valgrind reports uninitialized data".

The old code initializes matrices after importing data from sbw instruction.
If an sbw argument is big, t1_hinter__adjust_matrix_precision
adjusts the ctmf matrix coeffitients, which appear uninitialized
at that time. 

In most cases the bug has no consequences besides bothering Valgrind.
Only a harmful case was a big glyph width after small coordinates of all outline poles.
We don't know whether it practically appears.

The new code delays the accounting sbw arguments for the
time when all poles are imported. At that time ctmf
is definitely initialized, and the trailing moveto
already accounted the glyph width. So it only needs to account
the glyph origin for the case when its coordinate is 
a big negative number (a pretty rare case though).

[src/gxhintn.c]

2006-09-14T04:31:59.160662Z Ralph Giles

Make the gs configure check the exit code of the jasper configure script 
and print an error if it fails, avoiding a later build error if 
jas_config_ac.h is not generated. Patch from Marcos H. Woehrmann. 
Closes bug 688887.

[src/configure.ac]

2006-09-14T02:07:08.908291Z Ralph Giles

Check for a jpx image decoding fewer than the expected number of 
channels, returning an error instead of a segfault. Work around
for bug 688869, customer 531.

[jasper/src/libjasper/jp2/jp2_dec.c]

2006-09-14T01:57:35.708945Z Ralph Giles

Add correct copyright header and revision Id to some recently added 
files. Also set native eol-style.

[src/strmio.c src/wtsimdi.c src/strmio.h src/gdevimdi.c]

2006-09-13T17:23:29.059613Z leonardo

Fix (pdfwrite) : CIDFontType2 must not embed into PDF 1.2 .

DETAILS :

Bug 688889 "pdfwrite : CIDFontType2 must not embed with CompatibilityLevel=1.2".

The last patch fixed it incorrectly : it skips the font embedding 
rather than converts the font into a non-CID.
This patch does convert the font into a Type 3 bitmap font.

[src/gdevpdtt.c src/gdevpdtf.c]

2006-09-13T11:59:10.663495Z leonardo

Upgrading the clist file access with 64 bits file access.

DETAILS :

Bug 688394 "clist playback of large pdf image segfaults".

clist file position variable changed type to int64_t.
 

[src/gxclmem.c src/gxclfile.c src/gxclist.c src/gxcldev.h src/gxclmem.h src/gxband.h src/gxclread.c src/gxclio.h src/gxclutil.c]

2006-09-13T11:57:46.585499Z leonardo

Implementing a 64 bits file access.

DETAILS :

This is a preparation for a fix for 
bug 688394 "clist playback of large pdf image segfaults".

This is a preliminary implementation.
Now it compiles for MSVC8, Linux/gcc .
For other platforms/compilers it is stubbed with 32 bits file access.

This patch requires to define  -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
compiler options on Linux in Makefile .

We could not figure out why Cygwin/gcc defines fopen64, ftello64, fseeko64,
and then cannot link them. We didn't find imlementations of those functions 
in C libraries.
 

[src/lib.mak src/gp_iwatc.c src/gp_macio.c src/gpmisc.c src/gp_mswin.c src/gpmisc.h src/gp_os2.c src/gp_unix.c src/gp_unifs.c src/gp.h src/gp_vms.c]

2006-09-13T11:56:34.416452Z leonardo

Unwinding the revision 7038 due to wrong log message.

[src/lib.mak src/gp_iwatc.c src/gp_macio.c src/gpmisc.c src/gp_mswin.c src/gpmisc.h src/gp_os2.c src/gp_unix.c src/gp_unifs.c src/gp.h src/gp_vms.c]

2006-09-13T11:36:29.213707Z leonardo

Fix : Cygwin/gcc warnings.

DETAILS :

This includes fixes for potentionally harmful warnings :

Uninitialized variable : interp.c, zupath.c .

Missing function prototype : zfile.h, stream.h (for sfxstdio.c),
 

[src/lib.mak src/gp_iwatc.c src/gp_macio.c src/gpmisc.c src/gp_mswin.c src/gpmisc.h src/gp_os2.c src/gp_unix.c src/gp_unifs.c src/gp.h src/gp_vms.c]

2006-09-13T03:18:02.411968Z L. Peter Deutsch

Fixes a minor logic bug relating to handleerror introduced by rev 6970.

[lib/gs_init.ps]

2006-09-13T00:08:23.753905Z leonardo

Fix (pdfwrite) : Improve the encoding choice for 'glyphshow'.

DETAILS :

Bug 688889 "pdfwrite : CIDFontType2 must not embed with CompatibilityLevel=1.2".
Also fixing the test case of the bug 688857 with CompatibilityLevel=1.4
(some characters were converted into outlines).

1. Embedded a CMap, which is not allowed in PDF 1.2 (gdevpdtc.c).

2. CIDFontType2 must not embed inro PDF 1.2 (gdevpdtf.c).

3. Improved pdf_make_text_glyphs_table_unencoded about the choice of
   character codes for converting /name glyphshow into a PDF text (gdevpdtt.c).
   See comments in code.

[src/gdevpdtc.c src/gdevpdtt.c src/gdevpdte.c src/gdevpdtf.c src/gdevpdtf.h]

2006-09-12T05:07:58.847657Z Ralph Giles

Move the debugging information to a single line to reduce log noise.

[src/mkromfs.c]

2006-09-11T20:26:01.824717Z Ralph Giles

Check in working files for the GPL imdi (integer multi-dimensional 
interpolation) library for color mapping. This is needed by the imdi
device. Port from the ghostpcl tree.

[imdi/arch.h imdi/imdi.c imdi/Jamfile imdi/imdi.h imdi/imdi_imp.h imdi/imdi_k.c imdi/cctiff.c imdi/LICENSE imdi/imdi_k.h imdi/imdi_tab.c imdi/config.h imdi/imdi_gen.c imdi/README imdi/cgen.c imdi/imdi_tab.h imdi/copyright.h imdi imdi/imdi_gen.h]

2006-09-11T07:02:18.845878Z L. Peter Deutsch

Replaces the unnecessary extra 'stopped' around uses of .completefont
(introduced in 7017) with uses of .errorexec, which was created for exactly
this purpose; restructures .completefont slightly so if .buildfontxxx
signals an error, that error will be reported rather than invalidfont.
(This behavior matches the Adobe interpreters.)

[lib/gs_fonts.ps]

2006-09-11T03:32:51.278989Z L. Peter Deutsch

Makes zbuildfont0 generate a rangecheck error if the Encoding of a
SubsVector-based font is not large enough for the entire code space, for
greater Adobe compatibility.  (The graphics library only causes an error if
a show operator would actually reference an element beyond the end of the
Encoding.)

[src/zfont0.c]

2006-09-11T03:29:39.283562Z L. Peter Deutsch

Makes kshow generate invalidfont if the current font is a composite font,
per PLRM.  (The graphics library does enforce this restriction, but in
gs_kshow_n_init, not in gs_kshow_begin, and the interpreter uses the
latter.)

[src/zchar.c]

2006-09-10T22:24:31.060699Z leonardo

Fix : pfont->uid.xvalues uses a wrong allocator 

DETAILS :

Bug 688883 "pfont->uid.xvalues uses a wrong allocator".

In the old code build_gs_simple_font allocates uid in the current memory, 
but few moments later build_gs_sub_font changes the current space to the space 
of the font dictionary, and allocates the font structure in it.

The new code allocates the font's uid in same space as the font dictionary.

[src/zbfont.c]

2006-09-10T15:55:10.276590Z Alex Cherepanov

Pacify Valgrind. Initialize an uninitialized variable and break up an
expression, which, after overly aggressive optimization, causes an access
to uninitialized memory. Partial fix for the bug 688845.

[src/sfxstdio.c src/zcontrol.c]

2006-09-10T15:16:03.635497Z Ray Johnston

Change to use 'export' rather than 'checkout' to decrease the size of the
local directory. We don't need the .svn tree for the test.

[toolbin/search-svn-revs]

2006-09-09T19:22:14.993650Z Alex Cherepanov

Use an integer format to print uint32_t value instead of a long format.
We don't support 16-bit platforms but we do support 64-bit platforms where
uint32_t and long are of different size. Bug 688860.
	

[src/mkromfs.c]

2006-09-08T17:14:10.868705Z Dan Coby

Fix for matrix operation floating point accuracy differences in the
CET 10-xx.ps files.

DETAILS:

This fix adds casts to float to produce the same floating point results
from matrix calculations as expected by the CET.

[src/gsmatrix.c src/gscoord.c]

2006-09-07T11:59:03.339408Z leonardo

Fix (pdfwrite) : Provide a conservative choice of BaseEncoiding.

DETAILS :

Bug 688823 "large files embedding AndaleMonoWTG".

The old code choosen BaseEncoding for each text string independently 
on others. It caused creating multiple font copies due to encoding conflict.
The new code implements a new font resource property 
preferred_encoding_index to make the choice be conservative
in case of multiple possibilities.

[src/gdevpdtt.c src/gdevpdtf.c src/gdevpdtf.h]

2006-09-07T06:41:20.228510Z Ray Johnston

Fix rangecheck problem (688841) and wrong .notdef appearance (688803)
for customer #130.

[lib/gs_ttf.ps]

2006-09-05T21:08:03.225425Z leonardo

Fix (pdf14 device) : Properly intersect rects when composing transparency buffers.

DETAILS :

Bug 688631 "PDF segfault".

The old code supposed : the higher buffer, the smaller rect.
Not shure why. The test sample includes the opposite case.
 

[src/gdevp14.c]

2006-09-04T22:47:41.607858Z Alex Cherepanov

Add Valgrind error suppression files for Ghostscript and 3rd party libraries to
gs/toolbin .

[toolbin/vg_bugs.supp toolbin/vg_okay.supp]

2006-09-04T12:50:36.207010Z leonardo

Fix (stroking) : Zero lengh dashes have been missed, part 1.

DETAILS :

Bug 688838 "stroking: A zero length dash missed".
Bug 687720 "Zero length lines must not stroke" (recently reopened).

This patch defines a new path element type dash_segment,
and uses it for internal needs of the stroking algorithm.

The old code skipped zero length dashes with a non-round cap.
It appears incompatible to Adobe CPSI.
The new code renders zero length dashes with any cap type,
if the path is not degenerate.

The new type of path segment works for storing the path tangent
at the dash start point. The tangent can't represent with a small line segment
(as it tried in old hacks) due to insufficient precision of 'fixed'.

In subpath_expand_dashes the branch "within epsilon of the end
of the dash element" have been changed for a better Adobe compatibility
with looking ahead for a zero length dash pattern.
When a zero length dash fall to a path corner,
the old code choosen the direction of the next segment (after the corner).
The new code (as Adobe compatibile) chooses the direction of the last segment
(before the corner).

In the old code of gx_stroke_path_only_aux we don't understand the branch
"if (pgs_lp->dot_length != 0) break;"
It look contradicting to the comment above it.
Leaving it as it is, but the condition has been changed to 
(pgs_lp->dot_length != 0 && pseg->type != s_dash)
to comply with the new logic. Likely dot_length is now a rudiment.

The old code arbitrary applied a horizontal stroke adjustment for 
zero length dashes. The new code uses the direction of the path tangent.
Due to that some dashes got ununiform shapes, and we improved 
the stroke adjustment against undiserable regression with PixelisAd.pdf.
The new code adjusts horizontal and vertical strokes,
each stroke by both directions X and Y, if the dash length
is greater than 1 pixel, and the dash is isolated. 
Otherwise the transversal adjustment applies only.

The old code did not render zero length subpathes 
when .setdotlength was called with a non-zero argument.
It happens since Revision 4173.
The new code restores the correct behavior, which is important
for the PCL interpreter.

An unfixed problem :
When a dash pattern is very short, 
the last dash of a segment appears ununiform due 
to accumulating a significant rounding error.
This problem to be fixed separately in order to
simplify the regression analyzis.

Note that this patch doesn't provide an HP LazerJet compatibility,
which orients zero length dashes at path corner differently than Adobe.
Also HP LazerJet doesn't paint zero length pathes with round caps as PLRM3 specifies.

[src/lib.mak src/gxpdash.c src/gxpath.h src/gzpath.h src/gxstroke.c src/gxpcopy.c src/gxpath.c]

2006-09-04T11:40:17.503680Z leonardo

Fix (ps2write) : Didn't write the OPDFRead procset.

DETAILS :

This patch includes 3 things :

1. In gdevpdfd.c : A temporary fix for Bug 688856  
"Problems with ps2write (see comment #5)".
We keep the bug open because it still requires our
attention about the order of initialization events.

2. In gdevpdtt.c : Allow writing True Types with glyph indices over 255.
The old code is compatible to a bug in Adobe reader 3,
which is irrelevant to ps2write. The new code 
keeps the old logic with pdfwrite and skips the check
with ps2write.

3. In opdfread.ps : .max was undefined.

This patch helps to work on the customer bug 688790  
"pdfwrite : The PDF/A conversion needs to to re-encode texts"
 

[src/gdevpdtt.c lib/opdfread.ps src/gdevpdfd.c]

2006-09-01T23:23:22.779504Z Ralph Giles

Port in progress IMDI device from the gs853merge branch.

DETAILS:

This implements a contone device that does accurate colorspace 
transforms based on ICCLib/Argyle IMDI. This is work in progress
by Dan Coby. It expectes the imdi source code off the gs top-level;
this define IMDISRCDIR is in devs.mak, but should be moved to the
top level makefile as with the other 3rd party library sources.

Committing to trunk so as not to lose the work when the merge branch 
goes away. New development should happen here.

[src/wtsimdi.c src/devs.mak src/gdevimdi.c]

2006-09-01T23:16:13.866145Z Ralph Giles

The official resource path is Resource/Font not Resource/Fonts

[src/Makefile.in]

2006-08-31T21:56:16.536344Z Dan Coby

Fix for 'invalid restore' in CET test file 16-04.ps.

DETAILS:

There are were complications.  1)  The procedure .completfont was not properly
signalling an error when it occured.  2)  This procedure is used from both
definefont and findfont.  We need the error to be indicated as coming from
the appropriate procedure.

The fix for this problem is to fix .completefont to properly report errors
and to add stopped contexts around each of the invocations of .completefont,
loading the errorname from .completefont and calling signalerror again with
the appropriate procedure name.

[lib/gs_fonts.ps]

2006-08-31T10:34:11.431819Z leonardo

Fix : Improving the documentation about computing a text object tag in gspaint.c .

DETAILS :

It's how I understand it while communicating with Stefan and Henry.
I'll post it to code review for possible further improvements.
 

[src/gspaint.c]

2006-08-31T09:53:51.102347Z leonardo

Fix : Cygwin/gcc warnings.

DETAILS :

This includes fixes for potentionally harmful warnings :

Uninitialized variable : interp.c, zupath.c .

Missing function prototype : zfile.h, stream.h (for sfxstdio.c),
 

[src/gxi16bit.c src/gxhintn.c src/zstack.c src/stream.h src/interp.c src/files.h src/gswts.c src/gdevjpeg.c src/zupath.c]

2006-08-30T19:04:15.573176Z L. Peter Deutsch

Adds an Id line, accidentally omitted on initial checkin.

[toolbin/ocheck.py]

2006-08-30T18:38:50.635148Z Ralph Giles

Print the hostname and architecture of the machine running the 
regression to better distinguish multiple reports. This calls
common unix tools and may therefore reduce portability.

Also, print something to acknowledge empty fields in the report.

[toolbin/tests/run_nightly]

2006-08-30T16:37:43.892868Z L. Peter Deutsch

Adds a new tool, ocheck.py, for analyzing the dependency structure of object
modules.  (It was originally created for detecting references from the
library to the PostScript interpreter.)  While written in Python, it
requires GNU-compatible 'nm' and 'objdump' programs, and also uses Python's
subprocess module, so it may only run on Unix/Linux systems.

[toolbin/ocheck.py]

2006-08-30T00:24:55.621075Z Ralph Giles

Port Stefan Kemper's object tagging work from the gs853merge branch of 
the ghostpcl tree. This implements a simple and somewhat ad hoc method 
of generating tag bits (as for RGBK generation) marking text and vector 
vs image pixels.

DETAILS:

This conflicts with Dan Coby's fix for bug 688638 in r6702. Dan will 
resolve the conflict as part on new work he's doing on the code.

[src/lib.mak src/gstext.c src/gdevbit.c src/gspaint.c src/devs.mak src/gsutil.c]

2006-08-29T15:38:38.438783Z leonardo

Fix : MSVC compiler warning.

[src/strmio.c]

2006-08-29T04:45:22.639369Z Ray Johnston

Port changes over from the gs853merge tree to allow building a graphics
lib with strmio, but without any interpreter modules (PCL6).

[src/stream.h src/sfxstdio.c src/files.h src/zfile.c src/stream.c]

2006-08-29T04:26:49.196416Z Ray Johnston

Add missing dependency for sarc4 filter module in pdfwrite. Needed when
PDF interpreter is not included, but pdfwrite is.

[src/devs.mak]

2006-08-29T04:23:40.404599Z Ray Johnston

Set s->position to aero initially so that sftell before any other operation
will be correct. Reformat prototypes in strmio.h to single line format.

[src/strmio.c src/strmio.h]

2006-08-29T03:43:36.531545Z Ralph Giles

Port jpeg device scale and translate functions from GhostPCL.

DETAILS:

This patch adds four new parameters to the jpeg devices. In addition to 
Quality, one can now set float parameters ViewScaleX, ViewScaleY, 
ViewTransX, and ViewTransY so set a scale and offset to use when 
rasterizing the page.

This patch also expands some of the device parameter macros and cleans 
up the comments. 

[src/gdevjpeg.c]

2006-08-26T19:13:58.371290Z Dan Coby

Fix for CET test file 18-02F.ps.  The makepattern operator creates a pattern
dictionary that contains an 'Implementation' entry. The PLRM 3rd says the
following about the contents of the Implementation entry:  "The type and
value of this entry are implementation-dependent."  However 18-02F.ps page 2
expects that this entry be an array and that the second element of the array
be a gstate.  We are making GS compatible with what the CET expects.

[lib/gs_lev2.ps]

2006-08-26T00:43:26.480835Z Ralph Giles

Fix comment formatting.

[src/gsptype1.c]

2006-08-23T01:42:29.044863Z Ray Johnston

Fix missing return of combined string length and add missing return cundition
documentation.

[src/gpmisc.c]

2006-08-21T20:37:48.696370Z Ray Johnston

Handle IODevice specifications in file name in gp_file_name_combine_generic
by detecting leading '%' and returning the filename unchanged. The file_name_
combine logic is platform dependent, but IODevices don't use the same rules,
so an IODevice prefix can't be meaningfully processed.

DETAILS:

IN theory, a %os% header should be treated differently, but for now handle
this as an IODevice case. This means that a %os% prefix can be used to avoid
processing such as changing A/../B to B.

[src/gpmisc.c]

2006-08-19T17:33:54.163240Z Ray Johnston

Revert previous change that could cause an infinite loop until I can
figure out this "file_name_combine" logic in order to handle the %device%
syntax without the hang.

[src/gpmisc.c]

2006-08-18T10:34:25.106987Z leonardo

Fix (pdfwrite) : Quiet the heal validation procedure.

DETAILS :

See comment in code.

[src/gdevpdtt.c]

2006-08-18T07:56:59.656655Z leonardo

Fix : MSVC8 compiler warnings.

DETAILS :

gs_lib_ctx_get_non_gc_memory_t is called in sfopen and the result is passed to
file_open_stream, which assumes non-const.

A better fix would be to assume gs_memory_te to be const for allocators
and for functions and for structures which pass it transparently to allocators.
Actually allocators modify only a subclass data,
so that 'const' may be safely broken inside the allocator method
when casting to the subclass.
The garbager modifies exactly gs_memory_t pointers,
but it is NOT called from allocators.

The "better" fix requires changes to lots of modules,
so we choose the easiest fix for now.

Minor changes : 
1. Unuseful variable in fapiufst.c unintentiopnally contributed with the last patch.
2. "const char *" to "const byte *" warning in strmio.c .

[src/strmio.c src/gslibctx.c src/fapiufst.c src/gslibctx.h]

2006-08-18T04:42:11.979343Z Ray Johnston

Modifications to switch to "strmio" stream I/O so that we can read from
either OS file system or IODevice files (such as %rom% file system).
Also remove unneeded i_ctx_p from fapi_*_instantiate functions (so that
we don't need the PS interpreter). The strmio functions are now included
in the graphics lib build (always).

Change fapiufst to use strmio instead of FILE * file IO. A separate change
is needed in UFST code to do this (fc_dafil.*)

Add UFST_ROMFS_ARGS to add the fco's to the %rom% file list. Note that the
UFST_ROMFS_ARGS are not defined in any top level makefile in the gs tree
but are used by the language_switch build where they have been tested.

Remove some 'hard coded' paths in the fapiufst module (F:/...)

[src/iplugin.h src/lib.mak src/strmio.c src/int.mak src/fapiufst.c src/strmio.h src/gpmisc.c lib/gs_fapi.ps src/iplugin.c lib/FAPIconfig-FCO src/fapi_ft.c]

2006-08-18T04:04:48.484817Z Ray Johnston

Refactor several FILE stream related routines to sfxstdio.c so that zfile
will not be needed in order to use strmio functions coming soon. We want
to be able to use strmio without the PS interpreter.

[src/stream.h src/sfxstdio.c src/zfile.c]

2006-08-17T15:27:55.324234Z leonardo

Fix (resource machinery) : 'resourceforall' truncated names of file-based resources.

DETAILS :

Bug 688737 "'resourceforall' truncates names of file-based resources".
Thanks to SaGS for the good analyzis done in the bug report.

When enumerating file-based resources, the library
enumerates resource file paths and then needs to
decompose a file path into a directory name and the resource name.
The resource name, which matches the specified template,
is always a suffix of the path. Thus to know the resource name,
one needs to compute the length of the suffix.
However the latter is not trivial
due to mixing 2 syntacies : the Postscript template string syntax,
and the file path syntax of the underlying operating system.

To know the suffix length, the old code computed
the difference of the directory path template length,
and the template argument length.
Hoewver the directory path length in not equal to
the directory path template length if the patch
includes symbols, which need an escapement when converting
a string to a template string.

The new code passes lengthes of source directory paths though the
.generate_dir_list_templates procedure, so that they don't need to 
restore from the generated templates. 
The patch enhances the function with inserting source length between the
generated template list elements. The new function
gets an additional boolean operand, which tells whether to insert
lenthes or not. The enhanced function is renemaed into
.generate_dir_list_templates_with_length .
The old name .generate_dir_list_templates is defined for
the backward compatibility as a specialization of the new function.
The new function works for ResourceForAll .

[lib/gs_res.ps lib/gs_init.ps]

2006-08-16T17:23:10.339348Z leonardo

Fix (font renderer) : Clean up the character cache after a character rendering fails.

DETAILS :

When a character rendering fails, the old code leaves 
character data allocated in the cache but the character
is not added to the hash table. It breaks a global invariant
(1 to 1 correspondence of hash table entries and cached characters),
which is assumed by other cache accessors. As a result it 
causes an infinite loop when the function alloc_char_in_chunk 
is later called for another character and needs to release cache 
space from the "incomplete" character. 
Thanks to Peter L. Deutsch for analyzis.

The infinite loop occurance looks pretty stochastic because 
it depends on many factors, such as cache size and sizes rendered of glyphs.

The new code performs a cache cleanup 
when leaving a character rendering with error code.
See comments in code for more details.

This fix changes the prototype of gs_type42_append,
which is called from the PCL interpreter.
It should fix the problem with True Type fonts
in the PCL interpreter.

For type 1 fonts the cleanup code is a part of the PS interpreter
rather than a part of the graphics library.
It is not harmful because PCL interpreter doesn't render Type 1 fonts.
A better fix needs to modify the prototype of 
type1_exec_init and store the gs_show_enum pointer into the gs_type1_state instance,
to provide the cleanup in type1_continue_dispatch.
It would look ugly, so we don't do it now without a strong necessity.

Debugged with CET tests 13-12.PS, 13-22.PS .

[src/lib.mak src/zchar42.c src/gxfont42.h src/int.mak src/gstype42.c src/zchar1.c]

2006-08-16T00:09:37.858838Z Dan Coby

The ustrokepath operator has an optional matrix parameter.
This matrix is concatenated to the CTM.  The specified path
is then stroked.  This change restores the original CTM after
the path has been stroked.  Fixes the much25 test on page 2
of the CET test file 10-15.ps.

[src/zupath.c]

2006-08-14T23:05:38.304015Z Ralph Giles

Enable COMPILE_INITS by default in the autoconf build, as suggested by 
Ray Johnston.

[src/configure.ac]

2006-08-14T22:47:33.394093Z Ralph Giles

Fix a type size issue that prevented mkromfs from running correctly on 
64 bit machines. Bug 688792.

[src/mkromfs.c]

2006-08-14T22:08:43.391773Z Dan Coby

Add operand type checks and length checks for the currentmatrix,
identmatrix, and setmatrix operators.  This is done to match
error types expected by the CET.  10-03.ps page 2 tests
currentmatrix.  10-06.ps page 1 tests identmatrix.  10-14.ps
page 2 tests setmatrix.

[lib/gs_init.ps]

2006-08-14T12:54:58.867665Z Alex Cherepanov

Report rangecheck or typecheck errors rather than undefined when the image type
is not known. Partial fix for 12-07a.ps and 12-08b.ps .

[lib/gs_img.ps]

2006-08-14T09:46:08.791598Z Alex Cherepanov

Return undefinedresult instead of rangecheck from dict_int_null_param()
and dict_uint_param() procedures when the key is not found.
Partial fix for 12-07a.ps and 12-08b.ps .

[src/idparam.c]

2006-08-13T03:28:06.727937Z Alex Cherepanov

Emulate sequential operand checking for colorimage operator.
Reject strings of different length as multiple date sources for sampled images.
Fix a typo in img_unbuild_image_dict procedure.

[src/zimage.c lib/gs_img.ps]

2006-08-11T19:44:11.724459Z leonardo

Fix : gs_fillpage passed a low level color to high level devices.

DETAILS :

This was occasionally detected while working on the bug 688641.
gs_fillpage inaccurately checked whether the device can handle high level colors,
and sometimes passed low level color instead high level color.
It happens so because gx_hld_is_hl_color_available works only after a color is set.

We don't expect a behavior change for pdfwrite, ps2write from this patch, 
because they ignore the initial page fill, which gs_fillpage performs.
Other devices don't handle high level color, so the change doesn't affect them also. 

[src/gspaint.c]

2006-08-11T17:50:36.791125Z leonardo

Fix (pdfwrite) : A stronger condition for skipping the initial fill with a white color.

DETAILS :

Bug 688641 "pdfwrite is_in_page is broken, leads to spurious transparency".

The old code skept any number initial fills with a white color.
The new code skips only if the filling box is entire page.
Also the condition about nested streams (sbstack_depth == 0) was wrong for ps2write.

[src/gdevpdfd.c]

2006-08-11T13:09:34.153091Z leonardo

Fix (type 1 hinter) : Prevent an infinite loop on an incorrect contour.

DETAILS :

Bug 688676 "Ghostscript 8.53 enters infinite loop rendering a font".

The old code inaccurately worked with 'closepath' segments when 
trying to apply a hint.

[src/gxhintn.c]

2006-08-11T11:48:47.724620Z leonardo

Fix (pdfwrite) : Upgrading the documentation about AutoFilter*Images.

[doc/Ps2pdf.htm]

2006-08-10T11:13:34.225727Z leonardo

Fix (pdfwrite) : Wrong xref : Unuseful object ID when a font is not really used in the document.

DETAILS :

Bug 688824 "invalid xref table from pdfwrite",

The old code reserved an object ID for the FontFile object
when the font is set but no text rendered with the font in the document.
The new code skips creating the FontFile object if
no object ID assigned to the font descriptor.

[src/gdevpdtd.c]

2006-08-10T07:37:45.977950Z leonardo

Fix : MSVC8 compiler warnings.

[src/gdevdflt.c src/zfunc0.c]

2006-08-09T17:48:58.178137Z Raph Levien

Fix: Change pdfwrite pattern bbox to use PDF compliant syntax for float
bbox coordinates, rather than sprintf %g. Fixes (reopened) bug #688167.

[src/gdevpdfv.c]

2006-08-09T01:29:21.048118Z L. Peter Deutsch

Changes the equality algorithm for FontID objects to match Adobe
interpreters (we think).  NOTE: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE
(but one that is unlikely to have any adverse consequences).

[src/iutil.c]

2006-08-09T00:32:12.853814Z Dan Coby

Fix for 688822 failure to repair broken xref table.

DETAILS:

The given test file has problems.  The file was not mangled.  the
application that created the file has some problems.  However Acrobat
7.0 is able to display the file.

The file does not specify the application which created the file.

The file misspells the key word startxref (it says startref).  The
xref location is given as 54593016.  The file only has 2,210,991 bytes.
The the location is off by over a factor of 20.

The fix consists of making the xref rebuild logic tolerant of the
misspelling and verifying that the given xref location is within the
file.

[lib/pdf_main.ps lib/pdf_rbld.ps]

2006-08-09T00:17:29.773469Z Dan Coby

Change the error reporting to match the CET expected values for CET
test file 10-01.ps page 3.  We now correctly report stackunderflow
and type checks on this page.

[src/iutil.c]

2006-08-09T00:11:09.435929Z Ray Johnston

Remove an optimization that doesn't make a measurable difference in
preparation for restructuring FILE * stream functions into the graphics
library (out of zfile.c).

[src/zfile.c]

2006-08-08T16:04:53.066224Z L. Peter Deutsch

Fixes a just-introduced bug in the stackunderflow case of the user path
operators.

[src/zupath.c]

2006-08-07T17:26:14.883418Z Alex Cherepanov

Makes ifelse and if operators check the type of the topmost argument before
checking other arguments.

[src/interp.c src/zcontrol.c]

2006-08-07T08:38:34.292323Z L. Peter Deutsch

Makes error returns from ineofill (and many other user path operators) match
Adobe interpreters.

[src/zupath.c]

2006-08-06T20:36:34.745839Z Alex Cherepanov

Makes dictstack check for the array size before checking for the access status.

[src/zdict.c]

2006-08-06T14:13:41.382704Z Alex Cherepanov

Return typecheck rather than invalidaccess when given a literal
array instead of a procedure.

[src/iutil.c]

2006-08-06T01:34:32.877045Z Alex Cherepanov

Makes rectfill, rectstroke, and rectclip generate typecheck rather than
rangecheck when given an argument of the wrong size or content.

[src/zdps1.c src/ibnum.c]

2006-08-05T04:33:11.593911Z L. Peter Deutsch

For greater Adobe compatibility, moves all non-standard entries out of
errordict: the handler for unknownerror to a new gserrordict (known to the
interpreter), and .GShandleerror to systemdict.  Similarly, moves making
errordict entries for optional features (including Level 2) to the feature
implementation file, so that e.g. the DPS entries don't appear in non-DPS
systems.

[lib/gs_dps.ps lib/gs_dps2.ps src/interp.c src/ierrors.h lib/gs_init.ps src/gserrors.h]

2006-08-05T03:17:54.678058Z Alex Cherepanov

Makes astore generate invalidaccess rather than typecheck when
given a packed array.

[src/zarray.c]

2006-08-05T02:16:49.849366Z L. Peter Deutsch

When an error occurs within an operator procedure, arranges for the 'error
object' to be the pseudo-operator rather than the current interpreter
object, to mimic the behavior of primitive operators, for greater Adobe
compatibility.  This can be overridden locally for callouts such as from
filenameforall or resourceforall, using the new .errorexec operator.

[src/iconf.c src/interp.c src/opextern.h lib/gs_init.ps]

2006-08-04T22:48:53.701035Z L. Peter Deutsch

Adds braces around the body of the new return_with_error_tx_op macro, to
avoid an ambiguous 'else'.

[src/interp.c]

2006-08-04T21:43:08.671407Z Alex Cherepanov

Makes astore to a 0-length array valid regardless of the array access status.

[src/zarray.c]

2006-08-04T18:28:19.632057Z Alex Cherepanov

Makes roll operator generate stackunderflow rather than rangecheck when 
there's not enough elements on the stack.

[src/zstack.c]

2006-08-04T18:11:09.614818Z Alex Cherepanov

Makes index operator generate stackunderflow rather than rangecheck when 
there's no element on the stack pointed by the argument.

[src/zstack.c]

2006-08-04T17:29:08.193973Z Alex Cherepanov

Makes copy operator generate rangecheck rather than stackunderflow when given
a negative argument.

[src/zgeneric.c]

2006-08-04T16:55:18.531677Z L. Peter Deutsch

Makes the array operator return limitcheck rather than rangecheck if the
requested size is too large.

[src/zarray.c]

2006-08-04T15:46:34.786064Z L. Peter Deutsch

Makes packedarray generate stackunderflow rather than rangecheck when given
a too-large positive argument.

[src/zpacked.c]

2006-08-04T15:20:42.125769Z L. Peter Deutsch

Replaces relevant uses of index by .argindex, and adds a few other checks,
so that pseudo-operators will cause a stackunderflow rather than a
rangecheck when given too few arguments.  Only the following init files have
been modified: gs_{btokn,dps1,dps2,init,lev2}.ps -- many more require
updating.  However, since the only reason for this change is to satisfy the
Genoa test suite, further updates can be done as needed.

[lib/gs_dps1.ps src/zstack.c lib/gs_dps2.ps lib/gs_lev2.ps lib/gs_btokn.ps lib/gs_init.ps]

2006-08-04T14:07:13.211741Z Alex Cherepanov

Work around a bug in "MSVC .net 2005 express" CRTL, which doesn't support
"%+02d" format.

[src/iutil.c]

2006-08-04T04:22:48.633454Z Alex Cherepanov

Set the correct error object when special operators (x_add, etc.) fail.

DETAILS:
If control reaches the special operators (x_add, etc.) as a result of
interpreting an executable name, iref points to the name, not the
operator, so the name rather than the operator becomes the error object,
which is wrong.  We detect and handle this case explicitly when an error
occurs, so as not to slow down the non-error case.

[src/interp.c]

2006-08-04T04:08:45.729436Z Alex Cherepanov

Re-format the exponent in floating point numbers to satisfy Genoa CET test.

[src/iutil.c]

2006-08-03T05:43:28.564474Z L. Peter Deutsch

Fixes bug: several dictionary operators (known, undef, where) did not cause
a typecheck error if the 'key' argument was a null.

[src/idict.c src/zdict.c src/idict.h]

2006-08-03T05:10:23.146390Z L. Peter Deutsch

On Level >=2 systems, makes .undef a synonym for undef rather than vice
versa, to produce Adobe-compatible stack traces on errors.

[src/zdict.c lib/gs_dps1.ps]

2006-08-02T21:38:04.138968Z L. Peter Deutsch

Fixes eq and ne so that an array is never eq to a packedarray, even if both
have zero length.

[src/iutil.c]

2006-08-02T21:10:17.237822Z L. Peter Deutsch

On Level >=2 systems, makes .dicttomark a synonym for >> rather than vice
versa, to produce Adobe-compatible stack traces on errors.

[src/zdict.c lib/gs_lev2.ps]

2006-08-02T21:08:57.885732Z L. Peter Deutsch

Removes dpsnext from the default FEATURE_DEVS, since the presence of
deviceinfo creates an Adobe incompatibility in Genoa PS LL3 CET 20-23.

[src/Makefile.in]

2006-08-02T19:47:26.316967Z Dan Coby

Fix for 'invalid restore' in CET 09-47n.ps.

DETAILS:

The test file has a very bad call to the setpattern operator.
For this pattern, setpattern is expecting both the pattern dict and
a set of four color values.  None of the color values are present.
THe pattern color space processing logic was roling the stack to
verify that the color values are either integers or reals.  This
correctly produces an error.  However the stack was left disordered.
This resulted in the invalid restore since the pattern dict (local
memory) was still of the stack when the restore was executed.

Note:  The first attempt at a fix involved trying to use the procedure
check_num_stack (which is used by all of the other color spaces).
Instead of rolling the stack, a mark was placed and the color values
were copied to the top for check_num_stack.  If an error was detected
then a cleartomark was done.  This fails with the given test file since
there are marks in the stack where the color values should be.  Thus
the cleartomark did not clear to the proper mark.

The final solution involves sinply checking the type of the color values
inline instead of rolling the stack and using check_num_stack.

[lib/gs_patrn.ps]

2006-08-02T18:08:56.997894Z L. Peter Deutsch

Makes "(/) token" correctly return an empty name rather than causing a
syntaxerror.

[src/iscan.c]

2006-08-02T18:05:32.494329Z L. Peter Deutsch

Changes cvs for reals: 'e' is no longer changed to
'.0e', and 0.0001 (a boundary case) now converts to '0.0001'
rather than '1.0e+04'.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for
compatibility with Adobe interpreters.

[src/iutil.c]

2006-08-02T12:29:12.940833Z L. Peter Deutsch

Changes pathbbox from an operator procedure to an operator, in order to
match the stack trace (on an error) from Adobe interpreters (checked by the
Genoa CET).

[src/zpath1.c lib/gs_init.ps]

2006-08-02T04:35:45.952210Z L. Peter Deutsch

Pops arguments off the stack if an error occurs while interpreting a user
path (for Adobe compatibility); enforces the user path order requirements
(ucache must come first if at all, setbbox must come first or immediately
after ucache, setbbox is required).

[src/zupath.c]

2006-08-02T01:14:35.678026Z Alex Cherepanov

Make string operator error reprorting similar to Distiller's.

[src/zstring.c]

2006-08-02T00:47:25.925799Z Alex Cherepanov

Make putinterval operator error reprorting similar to Distiller's.

[src/zgeneric.c]

2006-08-01T22:43:34.939677Z Alex Cherepanov

Make get operator error reprorting similar to Distiller's.

[src/zgeneric.c]

2006-08-01T21:12:02.550966Z Alex Cherepanov

Make forall operator error reprorting similar to Distiller's.

[src/zgeneric.c]

2006-08-01T18:52:57.821971Z Alex Cherepanov

Make copy operator error reprorting similar to Distiller's.

[src/zgeneric.c]

2006-08-01T16:55:54.568960Z Alex Cherepanov

Make anchorsearch error reprorting compatible with Distiller.

[src/zstring.c]

2006-08-01T01:10:30.751173Z Ralph Giles

Require transparency support when building the graphics library.

DETAILS:

Prior to this change, Ghostscript would not build without translib.dev
because the ADDCOMP pdf14trans line in libs.dev, which defined the device
but did not pull in its implementation. Normally this happens through 
pdf.dev.

A better fix might be to move the pdf14trans line to pdf.dev and let
those needing transparency support outside of pdf add translib.dev
explicitly to FEATURE_DEVS.

[src/lib.mak]

2006-08-01T00:06:02.095465Z Ralph Giles

MD5 is required by the persistent cache implementation on unix. Add it to the platform dependency list.

[src/unix-aux.mak]

2006-07-31T18:49:16.317202Z Ralph Giles

Pass a 32-element string to cvrs in instances where the int could be more 
than 32 bits on some architectures. After a sketch by L. Peter Deutsch,
Closes bug 688794.

DETAILS:

An  in the Ghostscript ps interpreter is a C long, and so on 64 bit Linux, for example, it will be 64 bits, which in these instances require more than 8 characters for representation in hex. We use 32 characters (128 bits of hex) to be on the safe side.

The PLRM says the size of an int is implementation dependent. It can also be argued that it assumes this is 32 bits. In fact, one of the Genoa tests fails with longer ints. We choose to follow the clearest statement here, that the size is up to us.

[lib/pdf_font.ps lib/gs_ttf.ps]

2006-07-31T17:39:29.043892Z Ralph Giles

Remove the 'dosdefault' stamp file, whose creation causes problems on 
MS Windows 9X. Closes bug 688816.

[src/msvccmd.mak]

2006-07-31T02:39:25.938560Z L. Peter Deutsch

Makes gs match an apparent bug in Adobe interpreters, which cause an
invalidaccess error when 'exec'ing a noaccess literal (other than
dictionaries).  Fixes a "failure" in Genoa PS3 CET 24-09.

[src/zcontrol.c]

2006-07-31T02:38:14.326304Z L. Peter Deutsch

Makes gs match the behavior of Adobe interpreters, which allow executing
noaccess on a readonly or noaccess dictionary, even though Red Book 3 says
that changing the access of a read-only dictionary is not allowed.  Fixes a
"failure" in Genoa PS3 CET 24-09.

[src/ztype.c]

2006-07-28T06:22:57.072635Z leonardo

Fix (pdfwrite) : Incorrect image conversion with CompatibilityLevel=1.2 .

DETAILS :

Bug 688766 "Wrong graphics after ps2ps2 conversion."
Bug 688772 "Bad PDF generated with -dCompatibilityLevel=1.2"

Patch from SaGS.

1. pdf_begin_typed_image() did not synchronize the clipping path in some cases (gdevpdfi.c).
2. Delayed the synchronization for after checking the matrix singularity
   against writing an unuseful clipping before a skipped image. 
2. write_image_with_clip improiperly placed the 2nd and further subimages
   due to dropping the image's 'cm' with the subimage's 'Q'.
3. gx_image_enum_begin computed a wrong clipping box.
   In the new code pdf_setup_masked_image_converter installs
   a better get_clipping_box method, which is implemented 
   with the new function lcvd_get_clipping_box_shifted_from_mdev.
4. pdf_image3_make_mcde passed the clipping path to a memory device,
   which uses a different coordinate system. The new code does not
   pass the clipping path (gdevpdfi.c) and uses the device clipping box instead.

For more details see Bug 688766.

[src/gdevpdfx.h src/gdevpdfd.c src/gdevpdfi.c]

2006-07-28T01:23:29.511044Z Dan Coby

Fix for pages 4, 5, 13, 14 of the CET test file 12-02.ps.
This file creates colorimages with a size of zero.  The CET
expects that these colorimages will be ignored.

[lib/gs_img.ps]

2006-07-27T07:06:36.388322Z Dan Coby

Fix for segv in CET files 32-32.ps and 22-11.ps.  Both
files use binary object sequences with an object type of
'user name' however no user names have been defined.
The fix consists of checking for this situation and returning
an e_undefined error.  (The choice of error is because CPSI
also returns a 'undefined' error.

[src/iscanbin.c]

2006-07-27T01:15:59.601586Z Alex Cherepanov

Accept string values of page device, halftone, and rendering intent names.
PLRM specifies that all these values can be names or strings.
Bug 688776.

[lib/gs_lev2.ps]

2006-07-26T05:03:57.276453Z Dan Coby

Fix for CET test file 12-14c.ps.  This file was seg faulting.
The cause was some uniniitalized pointers that were being
freed when given invalid function parameters.  (The test file
was verifying the handling of invalid functions.)

[src/zfunc0.c]

2006-07-25T18:29:43.943994Z Ray Johnston

Fix CIDFontType 4 (FontType 32) handling so that read-only font dicts
can be used. Fixes PSLL3 CET 35-02.ps 'invalidaccess in -put-'.

[lib/gs_typ32.ps]

2006-07-23T19:25:14.174116Z Ralph Giles

Remove the requirement for HAVE_LONG_LONG to be defined before generating
ARCH_LOG2_SIZEOF_LONG_LONG. Since this was added, we've begun requiring
both signed and unsigned 64 bit types. Almost all platforms with a 64 bit
int provide long long, so this defaulting to on is a better approach.

We make an exception for MSVC which we support and which does not provide
'long long'. The requirement for a 64 bit type is taken care of by a matching
platform-specific #ifdef section in stdint_.h.

To add support for other such platforms, add another platform option to this
#ifdef and a corresponding section to stdint_.h.

Bug 688805 for customer 613.

[src/genarch.c]

2006-07-21T20:48:22.048908Z Ray Johnston

Add in aliases for glyphs that have the same Unicode value in the Adobe
Glyph List version 2.0. If both names are defined (presumably unique)
don't change them. If either name is known, make the other name an alias.
Bug 688799 and 688800 for customer 130.

[lib/gs_ttf.ps]

2006-07-20T22:35:31.758145Z Raph Levien

Finishes implementation of LeadingEdge parameter, primarily intended for
rotating pages to fit paper tray orientation. The LeadingEdge parameter
is an Adobe-defined setpagedevice parameter, and can be set by 
PostScript code for explicit control over rotation, or can be set by the
device to reflect device knowledge of the tray orientation (the 
mechanism for the latter is documented in Drivers.htm). This patch
completely replaces the old TrayOrientation parameter, which had similar 
goals but was not standard, and fixes some problems with that 
implementation.

[src/gsdparam.c src/gdevdflt.c doc/Drivers.htm src/gxdevice.h doc/Language.htm lib/gs_setpd.ps src/gsdevice.c src/gxdevcli.h]

2006-07-20T19:18:25.263338Z leonardo

Fix : Cygwin/gcc warned unuseful variables.

[src/zfont0.c src/zbfont.c src/gdevpdfg.c]

2006-07-20T18:57:07.315529Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 28.

DETAILS :

Disable a debug-purpose code, which unintentionally left in the last patch.

[src/fapiufst.c]

2006-07-20T18:50:28.389414Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 27.

DETAILS :

Provide a static list of FCO handles,
which are useful for a multilanguage embedded systems.

We define a storage for 2 handles because currently we need only 2 ones -
one for Windings and another for all other fonts.
FCO plugin does not go to this list, because it
doesn't define a font.

[src/lib.mak src/fapiufst.c src/gxfapiu.c src/gxfapiu.h]

2006-07-20T06:45:50.863988Z Ray Johnston

Establish alias glyph names (instead of replacement names) for example
Ldotaccent as an alias for Ldot. Bug 688799 for customer 130.
--this line, and those below, will be ignored--

m    gs_ttf.ps

[lib/gs_ttf.ps]

2006-07-19T22:52:24.858615Z Dan Coby

Fix for 688788 /rangecheck in resolveR.

DETAILS:

The file is damaged and has to have it xref table rebuilt.

Ralph Giles correctly guessed the cause of the problem
with his comment:
  "The file is corrupted by the addition of a leading
   newline; after removing the initial '0x0d 0x0a'
   character sequence the file renders fine. This offset
   is apparently confusing the xref table repair."

We have a value called PDFoffset which indicates the amount
of white space at the beginning of a file.  This value is
added to all xref table entry file locations when they are
referenced.  The xref rebuild logic was creating xref
locations which give the file position without considering
the value of PDFoffset.  The fix consists of simply subtracting
the values of PDFoffset from the xref object locations when
the xref tables are rebuilt.

[lib/pdf_rbld.ps]

2006-07-19T22:38:15.499527Z Dan Coby

Fix for 688787 /undefined in /BXlevel.

DETAILS:

The given test file has definite problems.  Most of the
xref entries are off by one byte.  Several of the xref
entries are off by thousands of bytes.  However the worst
problem is the value given for startxref.  This value
is off by tens of thousands of bytes.

The xref rebuild logic needs to find the final trailer
dictionary.  It uses the startxref value to find this
dictionary.  Since the file is damaged the rebuild logic
does not simply assume that the trailer dictionary is at
the given location.  Instead this logic compares ithe value
to the size of the file.  If less than one half of the size
of the file then we search at the beginning of the file.
This generally works for 'linearized' PDF files.  Othewise
the rebuild logic search for the last trailer dict in the
file.  This works for most non linearized files.

This file indicates that the trailer dict should be at
the start of the file.  However the trailer dict is at
the end of the file.  The fix consists of searching at
the end of the file when a trailer dict is not found at
the start of a file.

[lib/pdf_rbld.ps]

2006-07-17T19:11:34.040541Z leonardo

Fix (pdfwrite) : Support OS/2 table version 2 in True Type fonts.

DETASILS :

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

Bug 688536 "/invalidfont in --show-- when trying to convert the PDF file".
Patch from Alex with an improvement against regressions.

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

2006-07-13T21:35:15.090210Z leonardo

Fix (pdfwrite) : A further improvement for the text rotation logic.

DETASILS :

Bug 688793 "document pages rotated with Ghostscript, not with Acrobat"

This patch implements Raph's suggestion how I understand it.

[beg quote]
There are two issues here. First, the document-global viewing_orientation info
isn't being copied into the page-specific info. [skipped]

Second, when the inferred text rotation and the dsc orientation can't match
(i.e. are off by an odd multiple of 90 degrees), precedence is given to the text
rotation. [skipped]

[Skipped] reverse the precedence so that if
both dsc orientation is set and text rotation is inferred, use the dsc value.
[end quote]

See the bug 688793 for more details.

I marked the change with Bug688793 macro
because I can't say that I fully foresee its consequences.
The mark will help to analyze problems if any appear.

[src/gdevpdf.c]

2006-07-13T12:37:03.107591Z leonardo

Fix : MSVC8 compiler warnings.

[src/ziodevsc.c]

2006-07-13T12:25:38.449013Z leonardo

Fix (True Type font loader) : A wrong encoding created when no 'post' presents.

DETAILS :

Bug 688789 "incorrect encoding displayed using ArialUnicodeMS".

The old code in .charkeys computes (with dropping minor details) :
    CharStrings = glyphencoding^-1
    Encoding = cmap*glyphencoding

It is correct when 'post' presents due to glyphencoding = post,  
and post maps glyph indices to glyph names.

In the test case (with no 'post') .charkeys must compute (with dropping same details) :
    CharStrings = glyphencoding^-1 * cmap
    Encoding = glyphencoding
because glyphencoding is stubbed with an encoding.

I'm not sure why the old code worked so long with no problem.
Likely every font manufacturers loved to define 'post'.
Now we got one which doesn't.

BTW, I guess an useful optimization would be to replace 'numloca'
with a better estimation. In the test case it appears too big,
so we process a huge trash and then drop it.
The better estimation, the smaller time consumption.

Another useful optimization is marked with
"% a stub for a while. Must skip the entry."
in the new code. Dalaying it for better times.

Inserted a debug printing for CharStrings.
Using it one can se how big trash it processes.

The old code truncates Encoding if it is longer than 'loca'.
It appears wrong with the new CharString composition logics
- creates a tool short Encoding for fonmts in bug_687457.pdf .
The truncation has been removed from .charkeys .
It should work fine because recently we improved
C code about acessing glyphs outside 'loca' -
see the revision 6874.

The test case to be added to comparefiles.

[lib/gs_ttf.ps]

2006-07-13T05:38:11.096275Z Dan Coby

Remove a mixture of DOS and Unix style line endings.

[src/gsnamecl.c]

2006-07-13T01:16:11.812282Z Ray Johnston

Remove (now) superfluous stdout_buf and stderr_buf areas from main instance
(no longer needed -- buffers are allocated when stdio is opened).

[src/iminst.h]

2006-07-12T21:46:07.133984Z Ray Johnston

Clean up some gcc warnings created by last commit.

[src/imain.c src/sfxstdio.c src/zfproc.c src/ziodevsc.c]

2006-07-12T21:30:00.448371Z Ray Johnston

Change stdio callback mechanism to call directly from the stream processing
function, not requiring a CALLC callout all the way back through the interp
to 'imain.c' This simplifies some of the calling and is more efficient.

DETAILS:

gsapi_ and/or gsdll_ clients will see no difference.

[src/imain.c src/interp.c src/zfileio.c src/zfproc.c src/ziodevs.c src/ziodevsc.c src/files.h src/iminst.h src/ierrors.h]

2006-07-12T21:24:01.592491Z Ray Johnston

Refactor 'file_prepare_stream' for use by non-PS (graphics library only)
clients such as gsiorom (the %rom% device can be used by non-PS builds).

[src/sfxstdio.c src/zfile.c]

2006-07-12T21:19:34.152242Z Ray Johnston

Header file missed on previous commit to refactor 'file_prepare_stream'
for use by graphics library (no PS interpreter) clients (gsiorom.c).

[src/stream.h]

2006-07-12T21:15:11.292479Z Ray Johnston

Get rid of deprecated %static% device. This has been replaced by the more
efficient and versatile %rom% device.

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

2006-07-12T17:59:16.470870Z leonardo

Fix (pdfwrite) : More PDF/A-1b complience, continued 6.

DETAILS :

Bug 688783 "commit 6892 mis-uses the TZ environmental".

Completely removed the time zone computation because
it's not working properly with some compilers.
Always write the UTC time instead.
It looks compliant with all PDF/A, PDF 1.6, ANSI C and 
http://www.w3.org/TR/NOTE-datetime standards.

[src/gdevpdf.c]

2006-07-12T12:24:10.438308Z leonardo

Fix (pdfwrite) : More PDF/A-1b complience, continued 5.

DETAILS :

Bug 688783 "commit 6892 mis-uses the TZ environmental".

An improved code with using CRTL functions to compute the tize zone.
This works on both my local Windows and on Linux on peeves.

[src/gdevpdf.c]

2006-07-12T11:26:28.547453Z leonardo

Fix (pdfwrite) : More PDF/A-1b complience, continued 4.

DETAILS :

Bug 688783 "commit 6892 mis-uses the TZ environmental".

An improved code with using CRTL functions to compute the tize zone.
Thanks to SaGS for suggestion.

[src/gdevpdf.c]

2006-07-11T21:32:55.057296Z leonardo

Fix (pdfwrite) : More PDF/A-1b complience, continued 3.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight", part 2.
Bug 688783 "commit 6892 mis-uses the TZ environmental".

Use CRTL functions to compute the tize zone.
Thanks to SaGS for suggestion.

[src/gdevpdf.c doc/Ps2pdf.htm src/devs.mak]

2006-07-10T11:00:18.723002Z Tor Andersson

remove the null memory context argument to errprintf in gs_throw_imp that was accidentally left in from when the function was ported over from ghostpcl.

[src/gsmisc.c]

2006-07-09T14:04:23.380577Z Ralph Giles

Compile in read support when building libpng. It is needed for XPS 
parsing.

[src/libpng.mak]

2006-07-07T17:22:51.824275Z Ray Johnston

Fix gcc reported problems.

[src/mkromfs.c]

2006-07-07T00:26:45.026656Z Ray Johnston

Correct typo in header that MSVC ignores.

[src/files.h]

2006-07-06T23:59:24.561744Z Ray Johnston

Fix missed edit to remove RESOURCE_LIST from top makefiles.

[src/msvclib.mak]

2006-07-06T21:32:50.019697Z Ray Johnston

Several %rom% related improvements. Add PSRESDIR macro to define the location
of the Resource/ path during the build. Remove the RESOURCE_LIST from the top
level makefiles (list now only in src/int.mak). Correct the font path to the
Adobe standard Resource/Font. Change the GS_LIB_DEFAULT to include Resource/Font
rather than the useless Resource path.

Change the %rom% device to return a custom 'block' stream that decompresses
by blocks into the buffer so that the entire file is never decompressed into
a 'string' for a sread_string type stream. The 'file_prepare_stream' is now
exported for use by gsiorom.c.

DETAILS:

That wasn't enough ?

One hack is that the s->file pointer in the stream_s is used to hold the pointer
to the node header in the %rom% file system. This seemed to make some sense.
Unlike the FILE * structure (which is somewhat opaque), there is no dynamic
state info in a node -- the s->position and read pointer within cbuf are enough
to allow read_process, seek, and available procs to operate.

The buffer is slighty larger than the ROMFS_BLOCKSIZE to allow for some data
(up to 256 bytes) not being consumed from the buffer when read_process is
used to refill the buffer. This way we can decompress directly into the cbuf
(at the correct point, of course) and avoid another buffer and copy. This
also means that each 'block' is always at or near the front of cbuf. After
a seek, the block will load at the beginning of cbuf (assuming we did not
already have the requested pos in the buffer).

As with 'file' type streams, the s->read_id is bumped so that the stream
access functions will see the file as 'invalid' (read_id won't match rsize).
The cbuf is also freed when the file is closed (to prevent leaks in a non
GC memory system).

NOTE: IT IS THE CALLER'S RESPONSIBILITY TO FREE THE STREAM RETURNED BY THE
romfs_open_file() function using the memory in the s->memory allocator. In
PostScript, since the -file- ref can be passed around among objects, the
GC is relied upon to free when no further references exist.


[src/gsiorom.c src/watcw32.mak src/macosx.mak src/int.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/bcwin32.mak src/ugcclib.mak src/unix-gcc.mak src/msvc32.mak src/macos-mcp.mak src/files.h src/zfile.c src/watclib.mak]

2006-07-06T17:12:15.527898Z Stefan Kemper

Fix null ptr dereference committed on rev 6866

DETAILS:

In the case where gx_alloc_char_bits is called with a null
device pointer the default of 72 dpi is used.

[src/gxccman.c]

2006-07-06T11:10:42.178658Z Alex Cherepanov

Replace empty MediaBox or CropBox box with a box that is equal to the current
page size. Bug 688744, customer 384.

[lib/pdf_main.ps]

2006-07-06T00:24:31.497014Z Alex Cherepanov

Modify cmap table handling routines to support a large ( >= 64K ) table
represented as an array of strings.
Bug 688688, customer 562.

[lib/gs_ttf.ps]

2006-07-05T21:06:53.575845Z leonardo

Fix (pdfwrite) : More PDF/A-1b complience, continued 2.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight", part 4.

This is an experimental patch, which drops the setting of
the symbolic flag for fonts in PDF/A documents.
Doing so because the Acrobat preflight tool 
doesn't allow Encoding for symbolic True Type fonts.

The decision for setting the symbolic flag for most fonts has been
done a long ago, and currently we cannot reconstruct all the related history.
We suspect that in novadays that decision appears obsolete.
We commit this patch to allow an accumulation of information
about how this flag affects 3d party software.

[src/gdevpdtd.c src/gdevpdtd.h]

2006-07-05T20:28:10.067306Z leonardo

Fix (pdfwrite) : More PDF/A-1b complience, continued.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight", part 3.

1. Substitute the DeviceRGB color space.
2. Write the instance ID into the pdfaid item.
3. /Type/Metadata/Subtype/XML is required for metadata stream dictionary.

[lib/gs_devcs.ps src/gdevpdfe.c]

2006-07-05T18:17:52.450829Z Alex Cherepanov

Use /PageSize from the currrent page device dictionary when the /MediaBox pget
fails. Bug 688771, customer 581.

[lib/pdf_main.ps]

2006-07-05T14:03:49.473556Z leonardo

Fix (pdfwrite) : More PDF/A-1b complience.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight", part 2.

1. Always embed all fonts when writing a PDF/A document.
2. Provide a precize time and time zone (see the documentation change included).
3. Wrtte an OutputConditionIdentifier.
   
See the documentation change for details.

[src/gdevpdf.c doc/Ps2pdf.htm src/gdevpdtf.c src/gdevpdfe.c lib/PDFA_def.ps src/devs.mak]

2006-07-05T10:26:03.786036Z leonardo

Fix (pdfwrite) : Write out the PDF/A compliance label.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight".
Patch from Eduard Tiganas.

[src/gdevpdfe.c]

2006-07-04T23:13:13.666885Z Ralph Giles

Modularize the soname and link flags for the unix shared library build
to facilitate use on different platforms.

[src/unix-dll.mak]

2006-07-04T21:31:43.405686Z Alex Cherepanov

Increase the operand stack size limit to the current working maximum = 65414.
Bug 688764.

DETAILS:
PostScript stack cannot exceed the size of a PostScript array (65535) because
the stack is copied to an array when the stack overflows.

The stack space is allocated in blocks. The stack overflow is checked when the
new block is allocated. If the MaxOpStack is set close enough to 65535 the
actual stack size exceeds 65535 at the moment of stack overflow.

This condition is detected when the stack is copied to an array during
stackoverflow processing, causing a low level stack dump. 

[lib/gs_init.ps]

2006-07-02T11:50:18.654475Z Alex Cherepanov

Fix calculation of the index in the DecodeDEF[G] table. The old code rendered
wildly different colors when the range of RangeDEF[G] was not close to 1.
Bug 688763.

[src/gsciemap.c]

2006-07-01T15:08:30.368356Z Ray Johnston

Replace $Id lines inadvertently removed.

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

2006-06-30T20:00:21.389005Z Ray Johnston

Changes to make the JOBSERVER and exitserver operate correctly. This is
essential to proper CET and FTS execution.

DETAILS:

The primary changes to allow exitserver to work from files, stdin, strings
and executive mode were making sure that the strings, procedures and
files (or subfildecode filters) were all in "system vm" which is always
a 'stable' memory immune from save/restore (curing the /invalidrestore
errors previously seen). To support executive mode, the statementedit
and lineedit IODevices always allocate in system VM (imemory_system) as
well.

Also changed was to omit the grestoreall in .startnewjob after the
restore since this would go back to the previous 'null' device and
close the device we want (e.g. x11 or display).

This relates to bug 688312, which I will close after determining if
there is any other documentation needed. Also this fixes #201952 which
was previously closed as WONTFIX.

Note that with -dJOBSERVER Ghostscript (unlike ghostpcl) will run the
-c string or the files on the command line or the input to the GS>
prompt as an encapsulated job and multiple files on the command line
will NOT be treated as separate jobs. File that contain a ^D (0x04)
at the end _WILL_ restore the VM state and start a new encapsulated
job for subsequent interpreter actions.

To run an inital file in 'exitserver' mode (affecting the permanent
server state), the -c "true 0 startjob pop" -f can be used prior to
the file. To run files as individual encapsulated jobs (when it is
not known if the job ends with ^D) simply add a file that contains
a ^D between each job on the command line. For example, if '04' is
a file that contains a ^D:

gs -dJOBSERVER x.ps 04 y.ps 04 z.ps -c "true 0 startjob quit"

Also note above that since 'quit' is defined as 'stop' in order to
actually quit you have to go to exitserver mode first (true 0 startjob)
or use the -dBATCH option.

[src/imain.c src/zfilter.c lib/gs_lev2.ps src/ziodev.c src/opextern.h src/zdevice.c src/zfile.c lib/gs_init.ps src/zsysvm.c]

2006-06-30T19:14:40.807461Z Ray Johnston

Clean up memory when the gsapi_delete_instance is called. Prevents leaks
from repeated invocations of ghostscript gsapi_ instances. Bug 688181.

[src/iapi.c]

2006-06-29T04:25:55.982235Z Alex Cherepanov

Add support of AdjustWidth parameter to tiffg32d and tiffg4 devices.
Bug 688748.

DETAILS:
According to Devices.htm, all black-and-white TIFF devices support AdjustWidth
parameter, but tiffg32d and tiffg4 didn't, always adjusting the page size.
The user had no way to switch off this, possibly undesired, feature.

[doc/Devices.htm src/gdevtfax.c]

2006-06-29T04:07:16.134871Z Alex Cherepanov

Add embedded OpenType support to the PDF interpreter.
Bug 688729, customer 700.

DETAILS:
According to the OpenType specification, OTTO tag is used only when the font
file has CFF data. We need to add more checking if we encounter OTTO fonts with
TTF data.

[lib/pdf_font.ps lib/gs_cff.ps]

2006-06-28T20:24:34.110786Z leonardo

Fix (pdfwrite) : Improve the filter choice logic.

DETAILS :

Bug 688773 "/JPXEncode always used when -dCompatibilityLevel=1.5".

"[Color|Gray|]AutoFilterStrategy = /JPEG2000" applied when 
"AutoFilter[Color|Gray]Images == false".

[src/gdevpsdi.c]

2006-06-28T16:29:52.237586Z leonardo

Fix (pdfwrite) : Luratech filters must not apply to indexed images.

DETAILS :

1. The old code erroneusely sets up the image compression chooser
   for Indexed images (gdevpdfi.c).

2. Don't allow the lossless JPXEncode for indexed images (gdevpsdi.c).
   (This change has no effect with no Luratech).

[src/gdevpsdi.c src/gdevpdfi.c]

2006-06-28T09:57:13.290010Z leonardo

Fix (TT font loader) : Work around a wrong specificID.

DETAILS :

The test document includes a name record with platformID=3, specificID=768.
We could not find a dicument, which allows such combination,
and we believe it is incorrect.
This patch implements a general workaround for strings,
which consist of 2-byte characters, each of which has a zero leading byte.

Bug 688769 "pdfwrite : an Incorrect embedded font object".

[lib/gs_ttf.ps]

2006-06-28T00:45:47.790609Z leonardo

Fix (pdfwrite) : Preserve ToUnicode for Type 0 fonts when re-distilling a PDF.

DETAILS :

The old code didn't account ToUnicode CMaps of Type 0 fonts in PDF documents :
1. It attached GlyphNames2Unicode after defonefont happens, so that C code never got it.
2. gdevpdtc.c didn't check Type 0 fonts for GlyphNames2Unicode.

The fix consists of 2 parts :
1. The new code in gs/lib factors out an auxiliary function .composefontdict from composefont .
   That function is called before .processToUnicode in pdf_font.ps for Type 0 font.
2. The new code in gs/src factors out the new function get_GlyphNames2Unicode,
   which now works for Type 0 fonts also. The change to gdevpdtc.c
   checks whether a Type 0 fonts has GlyphNames2Unicode.
   If a Type 0 font has GlyphNames2Unicode, it comes from a PDF, 
   and thus descendent fonts have no GlyphNames2Unicode.

Minor change : Don't search Resource/Decoding/Unicode for CIDs
when composing a ToUnicode CMap, because that resource translates glyph names only.

Bug 688768 "pdfwrite: missing ToUnicode".

[src/bfont.h lib/pdf_font.ps src/gdevpdtc.c src/zfont0.c src/zbfont.c lib/gs_cmap.ps]

2006-06-27T18:05:59.082925Z leonardo

Fix (pdfwrite) : Don't create a group from an image with SMask.

DETAILS :

An image with SMask is implemented in the PDF interpreter with creating a
temporary internal transparency group (see doimagesmask in pdf_draw.ps).
The old code copyed that group to the PDF output when re-distilling a PDF.

This patch implements the new key .image_with_SMask
for the .begintransparencygroup dictionary operand for
designating the internal group, and the flags :
	gx_device_pdf_s::image_with_SMask
	gs_transparency_group_params_s::image_with_SMask
	gs_pdf14trans_params_s::image_with_SMask
for passing this info to gdevpdft.c .

Bug 688767 "pdfwrite: bad transparency group".

[src/gdevpdfx.h src/gstrans.c src/ztrans.c src/gdevpdft.c src/gstparam.h lib/pdf_draw.ps src/gdevpdfb.h src/gstrans.h]

2006-06-26T17:57:55.566936Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 27.

DETAILS :

Fix the FreeType bridge to compile with the new FAPI interface definition.

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

2006-06-26T17:01:42.828008Z leonardo

Fix (pdfwrite) : Improve the documentation about generating a PDFX document.

DETAILS :

Fixes the part of the bug
688463 "Overprint can not render with with -dUseCIEColor",
which is related to PDFX (the comment #11).

[doc/Ps2pdf.htm]

2006-06-23T19:15:03.500541Z Ray Johnston

Substantial performance improvement on Windows platforms to
JPEG2000/JPXDecode filter made by making jasper 'seek' work
within the buffer.  Bug 688073 and 688758 for customer #531.

DETAILS:

This wasn't a very big change, but by avoiding going to the OS
for 'seek' operations, the Windoze performance was improved
>40 fold. On linux this doesn't make any improvement but the
OS must be a lot more efficient (I'm actually surprised by
this). The time for the customer file with 688758 runs in
10 seconds (at 40dpi x11) on peeves before and after the fix.
On my Windoze 2.8Ghz P4 (peeves is 3.2GHz P4) the time is
43 seconds after the fix.

[jasper/src/libjasper/base/jas_stream.c jasper/src/libjasper/include/jasper/jas_stream.h]

2006-06-21T22:33:35.061227Z leonardo

Fix (CIDFontType 1) : Check for GDBytes elements to point past the 'loca' table end.

DETAILS :

Bug 688669 "/invalidfont in --@0x100194e0--".

The old code didn't check GDBytes consistency, taking occasional data
past the 'loca' table with an occasional result.

Note that the change to z11_CIDMap_proc in zfcid1.c trows exception,
which is handled by the procedure %Type11BuildGlyph
in gs_cidfn.ps with substituting .notdef .

The test document embeds an incorrect True Type data for the font OBMKGG+H2gtrM. 
The True Type header specifies the size of 'loca' table equals to 12 bytes. 
In the sfnts array it is a separate string with the array index 2.
Then it renders the glyph index 3 accessing outside the loca table. 
It hapens while rendering the text :

/TT5 1 Tf
0.365 0 TD
<0001>Tj

Probably the problem happens because 2 font descriptors (43 0 obj and 38 0 obj, 
which correspond to local font names /TT4 and /TT5) refer to same single font data 39 0 obj. 
This data is an embedded font subset, which is enough for /TT4 and has no 
glyphs for /TT5. This problem to be reported to Adobe Distiler 6, 
which created the test document. Is the version 7 better ?
(can't check due to no Postscript source).

In the test case .notdef is the CID 0 and defined in the font as a hollow box.
Don't know why Adobe doesn't print it in the test document.
That's another story. The font doesn't define a space character.

[src/zfcid1.c src/gstype42.c]

2006-06-21T11:17:27.414299Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 26.

DETAILS :

Provide a locking of a global static UFST instance
for a multilanguage embedded systems.

[src/fapiufst.c src/gxfapiu.c src/gxfapiu.h]

2006-06-20T17:16:59.040107Z leonardo

Fix (FAPI Font resource, CIDFont emulation) : Relative paths with FAPIconfig-FCO.

DETAILS :

Set current directory as a font file search origin.

[lib/FAPIconfig-FCO]

2006-06-20T16:55:22.666128Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 25.

DETAILS :

Provide the configuration with no Type 1 and no True Type parsers
for a compatibility with the PCL build.

[src/fapiufst.c]

2006-06-20T16:31:15.616110Z leonardo

Fix (UFST resource handling) : Provide an uniform way for specifying FAPI font map and configuration.

DETAILS :

1. The new command line argument FAPIfontmap specifies a FAPI font map file.
   The old argument FCOmap has been removed. 

2. The new command line argument FAPIcidfmap specifies a FAPI font map file.
   The old code hardcoded a particular value.

3. FAPIfontmap may include both general records, and special record groups for
   describing FCO elements. 
   
See the documentation change for details.

[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 doc/Use.htm doc/Develop.htm lib/FAPIfontmap lib/FAPIconfig lib/gs_fapi.ps lib/FAPIconfig-FCO lib/FCOfontmap-PCLPS2]

2006-06-20T15:04:05.008037Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 24.

DETAILS :

Remove dead development branches.

[src/fapiufst.c]

2006-06-20T14:49:58.556233Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 23.

DETAILS :

Account the replaced Mrtrics when the renderer can't handle it.
It was a real bug in the FAPI client.

[src/zfapi.c]

2006-06-20T12:35:33.822923Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 22.

DETAILS :

Implementing the design bounding box expansion and warnings
against cropping glyphs when caching.

[src/ifapi.h src/fapiufst.c src/zfapi.c]

2006-06-20T09:51:08.611471Z leonardo

Fix (FAPI) : The cache device had a wrong HWResolution.

DETAILS :

It was set to 72 dpi independently on the target device.
Ghostscript font renderer doesn't rely on it, but UFST does.
Due to that UFST generated different rasters with and without NOCACHE.

[src/gxchar.c src/gxccman.c]

2006-06-20T09:46:21.713177Z leonardo

Fix (FAPI Font resource, CIDFont emulation) : Always convert FontName into a name (continued).

DETAILS :

The last patch appears incomplete.

[lib/gs_fntem.ps]

2006-06-20T09:37:23.049325Z leonardo

Fix (FAPI Font resource, CIDFont emulation) : Always convert FontName into a name.

DETAILS :

The old code could create fonts with a string as the FontName or CIDFontName value.
It caused an invalidaccess when the string is local and the font dictionary is global.
Debugged with alphabet.ps .

[lib/gs_fntem.ps]

2006-06-20T08:48:27.280806Z leonardo

Fix (FAPI Font resource, CIDFont emulation) : Load resident fonts into global VM (continued).

DETAILS :

The last patch appears incorrect in the part 3 :
[beg quote]
3. A minor change in gs_type1.ps creates FontInfo in same VM
   where the font dictionary resides. 
[ebnd quote]
and caused pdfwrite regressions.

This path fixes that.

[lib/gs_type1.ps]

2006-06-19T01:36:39.845267Z leonardo

Fix (FAPI Font resource, CIDFont emulation) : Load resident fonts into global VM.

DETAILS :

1. MakeInstance creates instances in global VM.

2. A bug in gs_fntem.ps : accessed "1 index" instead "0 index".
   Apparently they were always equal. Now they are not.

3. A minor change in gs_type1.ps creates FontInfo in same VM
   where the font dictionary resides. 

Debugged with 129-01.ps .

[lib/gs_cidtt.ps lib/gs_fntem.ps lib/gs_fapi.ps lib/gs_type1.ps]

2006-06-18T23:40:16.946225Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 21.

DETAILS :

A bug in the FAPI client :
Truncate the "~GS~" suffix, which the PDF interpreter adds
when creating extended glyph names.

Debugged with ADOBE1-4.pdf .

[src/zfapi.c]

2006-06-18T21:38:33.730811Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 20.

DETAILS :

An UFST bug tolerance about the .nmotdef appearence.
See comment in code.

[src/fapiufst.c]

2006-06-18T20:03:50.504209Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 19.

DETAILS :

An UFST bug tolerance about the hollow box design scale.

[src/fapiufst.c]

2006-06-18T19:25:03.018019Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 18a.

DETAILS :

Adjust symbolic Decodings with UFST 5.0 specifics.

[Resource/Decoding/FCO_Dingbats Resource/Decoding/FCO_Symbol Resource/Decoding/FCO_Wingdings]

2006-06-15T20:52:37.321465Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 18.

DETAILS :

1. Outline fonts ignored Stroke Width ( a real bug in the FAPI client code ).
2. Fixing missed pixels in outline fonts.

[src/fapiufst.c src/zfapi.c]

2006-06-15T10:41:20.991984Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 17.

DETAILS :

Provide the UFST callback dispatching for the language switching project.
See comment in code.

Actually thois restores the old gxfapi.c (which was recently removed) 
with minor modifications, and the module name is changed
for a better reflection of the purpose.

[src/lib.mak src/int.mak src/fapiufst.c doc/Develop.htm src/gxfapiu.c src/gxfapiu.h]

2006-06-14T21:03:34.912427Z Ralph Giles

Turn on Id keyword substitution and native line endings.

[lib/winmaps.ps]

2006-06-14T09:41:33.338945Z leonardo

Fix (UFST resource handling) : Provide alternative FCO map files. 

DETAILS :

1. The new command line argument FCOmap specifies an FCO map file.
   The old code hardcoded FCOfontmap.

2. Addint new FCO map files FCOfontmap-PCLPS2, FCOfontmap-PCLPS3, FCOfontmap-PS3
   for various FCO files. The old file FCOfontmap to be removed.

3. The new command line argument FCOfontfile2 works for locating the Wingdings FCO file.

[doc/Develop.htm]

2006-06-14T09:35:49.305252Z leonardo

Fix (UFST resource handling) : Provide alternative FCO map files. 

DETAILS :

1. The new command line argument FCOmap specifies an FCO map file.
   The old code hardcoded FCOfontmap.

2. Addint new FCO map files FCOfontmap-PCLPS2, FCOfontmap-PCLPS3, FCOfontmap-PS3
   for various FCO files. The old file FCOfontmap to be removed.

3. The new command line argument FCOfontfile2 works for locating the Wingdings FCO file.

[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 doc/Use.htm lib/gs_fapi.ps lib/FCOfontmap lib/FCOfontmap-PCLPS2]

2006-06-14T08:25:03.916153Z leonardo

Fix (FAPI) : Implement a lazy font object acquisition, part 2.

DETAILS :

The old code creates a font object per character
due to a complex protocol of gs_show_enum.
Rather font renderers usually cache font objects,
the data format accommodation appears too expensive.

Main change : 
1. FAPI_do_char uses I->face to check whether
   it is same font-matrix request as for a previous call.
   If so, it uses the old font object stored in the renderer.

Minor changes :
2. enum FAPI_descendant_code_s is defined for clarity instead an int type.
3. Interface functions drop the subfont and bVertical operands.
   They are moved into FAPI_font structure, which was passed by 
   a neighbour argument.
4. The new function release_typeface takes care for a complete cleanup
   in a single code portion.

[src/ifapi.h src/fapiufst.c src/fapi_ft.c src/zfapi.c]

2006-06-14T05:03:07.378642Z leonardo

Fix (FAPI) : Implement a lazy font object acquisition, part 1.

DETAILS :

The old code creates a font object per character
due to a complex protocol of gs_show_enum.
Rather font renderers usually cache font objects,
the data format accommodation appears too expensive.

This change is algorithmically equivalent.
It moves necessary data to the renderer interface structure,
so that it may be useful for lazy font object creation.

The new structure FAPI_face stores a "key" for
requesting a font-matrix pair from a renderer.
It is reserved for further improvements.

[src/ifapi.h src/int.mak src/fapiufst.c src/fapi_ft.c src/zfapi.c]

2006-06-14T02:12:47.303815Z Alex Cherepanov

Use more aggressive PDF identification. Consider PDF every file that has
"%PDF-1." not preceeded by "%!PS" in the first 127 bytes of the file.
Bug 688743.

[lib/pdf_main.ps]

2006-06-14T00:23:19.323225Z Alex Cherepanov

Fix broken definition of customcolorimage.
Bug 688750.

[lib/gs_lev2.ps]

2006-06-13T17:01:52.331288Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 16.

DETAILS :

Provide a working mode with no *.ss files and/or with no FCO plugin.

[src/fapiufst.c]

2006-06-12T22:07:57.059825Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 15.

DETAILS :

Fixed file paths on Linux.

[src/fapiufst.c src/zfapi.c]

2006-06-08T17:59:04.960338Z Ray Johnston

Add code in getencoding to accept an array for the Encoding in a Font dict.
Only a name or dictionary are legal PDF. Bug 688741.

DETAILS:

Adobe Acrobat Reader lists "Encoding: Standard" for this font, but we get
the correct results by using the Encoding array given in the font.

[lib/pdf_font.ps]

2006-06-08T01:46:13.481025Z Alex Cherepanov

Fix string overflow in cvrs on 64-bit systems. Suppress the sign expansion of
unique ID. Bug 688725.

[lib/gs_ttf.ps]

2006-06-08T01:26:36.293278Z Alex Cherepanov

Make the pointer the last element of gs_pixel_image_t structure.
Otherwise, on LP64 platforms, the padding at the end of the structure
overwrites the 1st member of the derived structure when the base structure
is assigned to the derived structure.
Bugs 613909, 688725.

[src/gximage3.c src/gsiparam.h]

2006-06-07T19:20:14.417139Z Ray Johnston

Fix handling of TrueType fonts with a large number of glyphs in the 'post'
table. Bug 688723 for customer number #130.

DETAILS:

First, avoid using the 'postfirst' string to scan the post table.
Second, avoid putting a large array on the op stack when building
the 'postnames' and 'glyphencoding' arrays (pre allocate them and
simply 'put' the values in). Third, don't create dummy names for
.notdef glyphs when building up the CharStrings dict.

With all of these changes, the TT font with 16000 actual named
glyohs can be loaded as a Type 42 font and doesn't overflow the
current default MaxOpStack (50000) or the 64K name limit when
EXTEND_NAMES=0 (the default).

In the future, if we see a font with too many named glyhs, we
may get a 'limitcheck in --cvn--' which will tell us we need to
build with EXTEND_NAMES=1. At that time we can decide if we want
to increase the default for EXTEND_NAMES.

[lib/gs_ttf.ps]

2006-06-07T15:26:51.814233Z Ralph Giles

Correct the copyright holder and Id keyword after the licese header reversion.

[src/md5.c src/md5.h]

2006-06-03T06:34:51.036122Z leonardo

Fix (Font resource machinery) : Improve finding encodings in gs_fntem.ps (issue 2).

DETAILS :

It's a temporary work around the bug 688710 "Fix the Encoding resource category"
for the UFST integration project.

[lib/gs_fntem.ps]

2006-06-02T18:50:15.915729Z Dan Coby

Make capture_spot_equivalent_cmyk_colors global.

[src/gsequivc.c src/gsequivc.h]

2006-06-02T01:37:20.018191Z Alex Cherepanov

Fix an infinite loop on 64-bit platforms; make the size of max_import_coord to
be as big as the size of the 'fixed' type.
Bug 688724.

[src/gxhintn.h]

2006-06-01T15:45:30.982915Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 15.

DETAILS :

Improving the font mapping.

[lib/FCOfontmap]

2006-06-01T14:09:52.659638Z leonardo

Add Wingdings Encoding, Decoding resource files.

[Resource/Encoding/Wingdings Resource/Encoding Resource/Decoding/FCO_Wingdings]

2006-06-01T13:44:48.615495Z leonardo

Fix (Font resource machinery) : Improve finding encodings in gs_fntem.ps .

DETAILS :

It's a temporary work around the bug 688710 "Fix the Encoding resource category"
for the UFST integration project.

[lib/gs_fntem.ps]

2006-06-01T11:42:08.068704Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 14.

DETAILS :

Returning the hack about rendering a space instead hollow box.
See comment in code.

[src/fapiufst.c]

2006-06-01T07:50:53.652962Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 13.

DETAILS :

Fix the replaced left side bearing.
Debugged with 093-01.ps, the box 093-03.

[src/zfapi.c]

2006-06-01T06:16:00.401809Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 12.

DETAILS :

Add a dependency missed in the last patch.

[src/int.mak]

2006-06-01T01:54:55.252144Z Alex Cherepanov

Clean up the code that opens starting arg files (@ files). Use iodev_default
when it is available. Otherwise use the staticly initialized %os% device.
Bug 688720.

[src/gsiodev.c src/zfile.c]

2006-06-01T00:09:21.528804Z Alex Cherepanov

Fix FPE in t1_hinter__set_stem_snap() on Alpha. Don't process stem snap
elements when there's none. Bug 688727.

[src/gxhintn.c]

2006-05-31T17:10:39.858313Z Stefan Kemper

Revert copywrite notices for public domain code used by ghostscript.

[src/gdevsgi.h src/gdevifno.c src/md5.c src/gdevsgi.c src/md5.h src/md5main.c src/gdev4693.c src/gp_vms.c]

2006-05-31T15:29:52.122361Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 11.

DETAILS :

1. AgfaUFST plugin is renamed into UFST, because the manufacturer (Monotype Imaging) separated from Agfa.
2. Provide loading UFST plugin with UFST_PlugIn command line option.
3. The command line option UFSTdir is renamed into UFST_ssdir
4. Adjust FCOfontmap to PCLPS2 fonts.
5. Improve comments for EF_SUBSTHOLLOWBOX_TYPE.

[doc/Use.htm doc/Make.htm lib/FAPIcidfmap src/fapiufst.c lib/FAPIfontmap lib/gs_fapi.ps lib/FCOfontmap]

2006-05-31T14:51:47.948908Z Ralph Giles

In generating the changelog files in the documentation, treat "DIFFERENCES:"
the same as "EXPECTED DIFFERENCES:". Also trim everything from the log message
after this point since that section is of ephemeral interest. Bug 688715.

Note that this means nothing important should be placed after such a section heading.

[toolbin/split_changelog.py]

2006-05-31T01:21:42.643282Z Ralph Giles

Minor release documentation updates.

[doc/Release.htm]

2006-05-31T00:44:40.105558Z Ralph Giles

macos-mcp.mak is now distributed with all releases.

[doc/Make.htm]

2006-05-31T00:24:37.164443Z Ralph Giles

Merge license clarifications from the GPL Ghostscript 8.51 release 
documentation.

[doc/Fonts.htm doc/Commprod.htm]

2006-05-30T13:56:04.780494Z Alex Cherepanov

Fix incorrect element size argument of qsort(), that causes SEGV on
platforns with sizeof(void *) != sizeof(int) since rev. 6669.
Bug 688721.

[src/gxfcopy.c]

2006-05-26T14:09:02.598171Z Tor Andersson

Ignore errors when zlib streams fail on the checksum. Fixes bug 688716.

[src/szlibd.c]

2006-05-25T10:51:09.698836Z leonardo

Fix (Font resource machinery) : Apply general methoid for finding a font substitute.

DETAILS :

If a font isn't found, the old code loads Courier definted in Fontmap.GS .
This causes problems with FAPI, which defines its own Courier in
FAPIfontmap.

The new code re-starts the search from the top of the 
resource substitution logic, which may be enhanced multiple times with
Font resource category redefinition, particularly with MappedCategoryRedefiner.

[lib/gs_fonts.ps]

2006-05-25T07:12:51.456665Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 10.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

Fixing Cygwin/gcc warnings.

[src/fapiufst.c]

2006-05-25T06:53:55.033342Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 9.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

This patch provides building and running with both UFST_REENTRANT 0 and UFST_REENTRANT 1.

[src/fapiufst.c]

2006-05-25T05:37:45.106052Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 8.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

1. Implementing PaintType 2 for fonts.

3. Fixed wording in a comment in fapiufst.c .

[src/ifapi.h src/fapiufst.c src/zfapi.c]

2006-05-25T05:09:21.683800Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 7.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

1. Fixing another problem with coordinate rounding - see comments in code.

2. Removing unused variables.

3. A minor code cleanup in zfapi.c : removed a rudimentary check that never suceeds.

[src/fapiufst.c src/zfapi.c]

2006-05-24T18:23:16.110633Z Ralph Giles

Cast character values to (unsigned char) before calling isprint() and
friends. They are designed to work only with ASCII characters, but
some implementations support passing 8 bit character data but only
if it is positive to avoid conflict with a (-1) definition of EOF.
Thus we should cast to map the high characters from negative to
positive values on systems where char is signed by default. Bug
687529.

[icclib/icc.c src/dscparse.c src/gsmisc.c src/imainarg.c]

2006-05-24T18:11:33.648730Z Ralph Giles

Define specific compilers for the jbig2 and jpx libraries so their
CFLAGS are passed to the compiler first. This should prevent version
skew problems when building on systems with other versions of the
same headers installed elsewhere.

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

2006-05-24T17:19:27.863933Z Ralph Giles

Move a negation inside the test(1) exprepression for better portability.
Fixes bug 688713.

[lib/ps2epsi]

2006-05-24T13:31:11.438055Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 6.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.
Fixing minor problems with coordinate rounding.

[src/fapiufst.c src/zfapi.c]

2006-05-24T12:12:41.294216Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 5.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

Completely remove gxfapi.c, gxfapi.h .
Now FAPI is the interpreter part and doesn't need a special module in the graphics library.
Also UFST bridge is now fully reentrant.

[src/lib.mak src/gxfapi.c src/fapiufst.c src/gxfapi.h]

2006-05-24T11:15:26.002807Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 4.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.
The change corresponding to the UFST patch with improved subglyph placement.

1. Fixed a bug about text size when rendering comparefiles/two_encodings.ps .
(changes related to orig_FontMatrix).

2. Implementing a command line option for UFSTdir for specifying a 
symbol set file directory for UFST. See change to doc/Use.htm
about user interface.

For doing (2) we pass a parameter to the ensure_open method of
a FAPI server plugin. Note it is a string, therefore Postscript code
must serialize complex parameters. Now it's not complex
because we pass a single option to a single plugin.

[src/ifapi.h doc/Use.htm src/fapiufst.c lib/gs_fapi.ps src/fapi_ft.c src/zfapi.c]

2006-05-24T07:12:33.924004Z leonardo

Fix : 'space' charater was missed in Unicode Decoding resource.

[Resource/Decoding/Unicode Resource/Decoding/FCO_Unicode]

2006-05-23T12:13:59.337888Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 3.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

The change corresponding to the UFST patch with improved subglyph placement.

[src/fapiufst.c]

2006-05-23T07:13:03.590113Z leonardo

UFST bridge : Implementing FCOfontmap to simplify running UFST with resident fonts only.
See the documentation change included in this patch.

[lib/xlatmap lib/gs_fapi.ps lib/FCOfontmap]

2006-05-23T07:04:16.420792Z leonardo

UFST bridge : Upgrading to UFST 5.0, part 2.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

1. Providing ununique character codes in Decoding resources (ifapi.h, zfapi.h).
   The old field FAPI_char_ref::char_code is now depricated,
   but we still provide the backward compatibility.
   FAPI_char_ref::char_codes will work instead FAPI_char_ref::char_code.
   UFST bridge and FreeType bridge don't implement ununique character codes yet.
   This feature isn't debuged but stored for further developemnt.

2. Improving the 'xlatmap' handling for Microtype font type (fapiufst.c).

3. Enlarde the decodingID field (fapiufst.c).

4. Preserve Decoding if it is specified in the fomt dictionary.

5. Fixing FONTCONTEXT data for FCO font type (fapiufst.c).

6. Obtaining design_bbox with USBOUNDBOX feature of UFST 5.0.
   It requires a patch to UFST 5.0.   

[src/ifapi.h src/fapiufst.c src/zfapi.c]

2006-05-23T06:48:01.451051Z leonardo

UFST bridge : More decoding resources since FCOs assume slightly different encodings.

[Resource/Decoding/FCO_Dingbats Resource/Decoding/FCO_Symbol Resource/Decoding/FCO_Unicode]

2006-05-21T02:36:04.902497Z Ralph Giles

Update release documentation somewhat to reflect current practice.

[doc/Release.htm]

2006-05-21T02:21:48.624607Z Ralph Giles

Bump version number after the 8.54 release.

[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]

2006-05-20T20:29:29.474563Z Ralph Giles

Merge changes from the 8.54 branch to support svn in the release 
utilities.

[toolbin/pre.tcl toolbin/split_changelog.py]

2006-05-20T20:27:09.924280Z Ralph Giles

Merge documentation updates from the 8.54 release branch. This updates 
the release date and changelogs.

[doc/History7.htm doc/Projects.htm doc/History8.htm doc/Use.htm doc/Readme.htm doc/Maintain.htm doc/Deprecated.htm doc/Source.htm doc/Install.htm doc/Changes.htm doc/Copying.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm doc/Commprod.htm doc/Release.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm doc/Fonts.htm doc/Ps2ps2.htm doc/Develop.htm doc/Ps2pdf.htm doc/Helpers.htm doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm doc/News.htm doc/Make.htm doc/Details8.htm doc/Testing.htm doc/Unix-lpr.htm doc/Ps-style.htm doc/C-style.htm doc/History1.htm doc/History2.htm doc/History3.htm doc/History4.htm doc/Details.htm doc/Ps2epsi.htm doc/History5.htm doc/History6.htm]

2006-05-19T01:19:20.532036Z Alex Cherepanov

Allocate scanline_buffer for DCTDecode filter in stable memory to prevent it
from being freed twice: by restoring the state before the filter was used for
reading and by closing the filter.
Bug 688694 from the customer 632.

[src/sdctd.c]

2006-05-18T16:51:54.327153Z Ray Johnston

Change example code so that users/customers that copy it will avoid the
memory leak mentioned in bug 688599.

[src/gs.c]

2006-05-17T23:31:29.652305Z Dan Coby

Fix for 688675  Reading / Converting PDF File created with Adobe
Lifecycle Designer 7.0.

DETAILS:

The test file has xref tables with incorrect generation numbers for
serveral entries.  The xref verification logic finds the mismatch
between the generation numbers specified in the xref and the generation
numbers in the objects.  It then attempts to requild the xref table.
This fails since the xref rebuild logic does not handle rebuilding
compressed object streams.  As a result the file cannot be displayed.

The fix consists of three parts.

1.  Change the xref verification logic to exit if compressed object
streams are detected.  I am not attempting to recover objects in
compressed object streams since anything that damages a file will
generally trash any compressed data.

2.  Change the logic which checks the generation number to simply
print a warning but to continue.  Previously this logic would print
a warning and then reject the object. Rejecting an object generally
causes an error to occur as the PDF interpreter attempts to use the
object.  The warning message was also enhanced to print both the
expected and actually generation numbers.  The given test file
produces about 400 warning messages.

3.  Enhance the comments for the print_xref.

Note:  Thanks to Alex for his work in determining that the file can be
processed if these changes are made.

[lib/pdf_main.ps lib/pdf_base.ps lib/pdf_rbld.ps]

2006-05-17T19:55:41.010790Z Ray Johnston

Fix for yet another non-spec PDF that Adobe Acrobat Reader handles silently.
(missing whitespace after 'endobj'). Bug 688695 for customer 580.

DETAILS:

Since the extra checking for /endobj.*/ only happens when we are about to
issue 'Unknown operator' tokenerror, the performance impact of this hack
is non-existent for valid PDF files.

[lib/pdf_base.ps]

2006-05-17T18:39:07.604408Z Ralph Giles

Use pkg-config to request linking with GTK 2 in the unix dll build
instead of the older gtk-config with specifies GTK 1. This will break
the (generally unsupported) dll build on very old systems but fixes
it for most current and near future platforms. Bug 688701.

[src/unix-dll.mak]

2006-05-17T18:34:00.699127Z Ralph Giles

Enable the cfax device in the default autoconf build for the convenience
of free users. This is required to use Ghostscript to drive capifax devices.

DETAILS:

In general we don't enable random devices used by a subset of users, but
we already include the three raw fax devices, so it isn't worth objecting
to a fourth. CAPI fax is commonly used over ISDN in Europe.

In the future we'd like to support device selection from the configure
commandline, similar to what is done in ESP Ghostscript. With that it
would be reasonable to remove most of the little-used devices since
package build systems will have a standard way to select their set, and
we will have a standard way to enable all supported devices for testing.

[src/Makefile.in]

2006-05-17T18:06:04.522955Z Ralph Giles

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.

[src/std.h src/setjmp_.h src/genarch.c]

2006-05-17T15:24:29.868984Z Ralph Giles

Add recent new files to the listing in the developer documentation.

[doc/Develop.htm]

2006-05-17T15:14:51.387610Z Ralph Giles

Set native eol-style and and enable Id keyword substitution.

[lib/FCOfontmap]

2006-05-17T11:34:54.678587Z leonardo

UFST bridge : Copyright banner and RCS line have been missed in the last commit.

[lib/FCOfontmap]

2006-05-17T11:33:20.081655Z leonardo

UFST bridge : Copyright banner and RCS line have been missed in the last commit.

[lib/FCOfontmap]

2006-05-17T11:29:55.042925Z leonardo

UFST bridge : Copyright banner and RCS line have been missed in the last commit.

[lib/FCOfontmap]

2006-05-17T11:23:20.989390Z leonardo

UFST bridge : Implementing FCOfontmap to simplify running UFST with resident fonts only.
See the documentation change included in this patch.

[doc/Use.htm lib/gs_fapi.ps lib/FCOfontmap]

2006-05-17T04:50:12.217865Z Ray Johnston

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.

[src/idict.c]

2006-05-16T09:56:13.829816Z leonardo

UFST bridge : Upgrading to UFST 5.0 .

DETAILS :

This code change doesn't affect a regular build with no UFST bridge,
except an unimportant change to lib.mak .

This revision allows the UFST bridge to compile and work somehow.
This revision of UFST bridge was not systematically tested.

UFST 5.0 doesn't implement design bbox for non-FCO fonts,
therefore it is stubbed with Em box. 
In this case glyphs are cropped. 
For FCO fonts the implementation of USBOUNDBOX in UFST 5.0
appears incomplete, and it needs our patch to work properly.
The change to UFST 5.0 code is not included here.

[src/lib.mak src/ifapi.h src/gxfapi.c src/fapiufst.c src/gxfapi.h src/zfapi.c]

2006-05-15T22:07:53.891632Z Raph Levien

Commits setjmp_.h, which I left out of the previous patch.

[src/setjmp_.h]

2006-05-15T21:29:29.006940Z Ralph Giles

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

[jbig2dec/jbig2_text.c]

2006-05-15T20:35:29.086193Z Ralph Giles

Ignore common generated files.

[jasper jasper/src/libjasper/pgx jasper/src/libjasper jasper/src/libjasper/include/jasper jasper/src/libjasper/base jasper/src/libjasper/mif jasper/src/libjasper/jpc jasper/src/libjasper/bmp jasper/src/libjasper/jpg jasper/src/appl jasper/src/libjasper/include jasper/src jasper/src/libjasper/ras jasper/src/libjasper/pnm jasper/src/libjasper/jp2 jasper/src/msvc]

2006-05-15T20:27:21.734326Z Ralph Giles

Remove a generated source file from the included jasper library.

[jasper/src/libjasper/include/jasper/jas_config_ac.h]

2006-05-15T18:44:16.729159Z Raph Levien

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

[src/lib.mak src/sjpegd.c src/sjpege.c src/sdct.h src/ttinterp.c src/ttobjs.h src/sjpegc.c]

2006-05-12T23:39:33.380797Z Ralph Giles

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

[doc/Make.htm]

2006-05-12T23:17:47.022921Z Ralph Giles

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

[doc/Language.htm]

2006-05-12T22:47:54.173109Z Ralph Giles

Add commented out line for manually enabling the luratech build with 
autoconf.

[src/Makefile.in]

2006-05-12T22:23:14.706617Z Ralph Giles

Always make read progress is s_jbig2encode process when there is data
available. Fixes bug #688658.

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

2006-05-11T04:59:24.800767Z Dan Coby

Fix for 688686 segfault in find_bit_map().

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.

[src/gdevdevn.c]

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 8566 2008-03-01 00:42:04Z 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]

2006-02-06T11:04:12.919537Z leonardo

Fix (pdfwrite) : Allow instandard glyph names when synthesising an Encoding for 'glyphshow'.

DETAILS :

Bug 688017 "ps2pdf problem with CFF fontset resources".

The old code emited 'rangecheck' when glyphshow uses a glyph name,
which doesn't appear in Postscript font Encoding.
It hapens so due to the old code forces standard glyph names,
because other old procedures were restricted with them.
As result, such glyphs converted to rasters.

The modern code is not restricted with standard glyph names,
so we simply pass instandard ones when can't find a standard one.

EXPECTED DIFFERENCES :

Bug688154.ps

[src/gdevpdtt.c]

2006-02-05T14:25:24.143977Z leonardo

Fix  : Removing 'assert' from gxccman.c (continued).

DETAILS :

Add missing braces in the error code propagation introduced in rev. 6555.

EXPECTED DIFFERENCES :

None.

[src/zfont.c]

2006-02-04T03:56:37.709032Z Alex Cherepanov

Following FreeType 2 implementation, ignore incorrect SHC command.
Bug 688501

EXPECTED DIFFERENCES :
None

[src/ttinterp.c]

2006-02-04T00:23:59.520737Z Dan Coby

Fix for 688177 Eliminate the 64 bit pixel size limit.

DETAILS:

This change implements a scheme for compressing colorant values into
a gx_color_index.  For details of the compression scheme, see comments
before the devn_encode_compressed_color in src/gdevdevn.c.  With this
change, a maximum of 64 colorants are supported.

[src/gdevpsd.c src/gdevdflt.c src/gsccolor.h src/gdevtsep.c src/gdevdevn.c src/gsovrc.c doc/Devices.htm src/devs.mak src/gdevdevn.h]

2006-02-03T23:42:57.853736Z Ralph Giles

Correct a typo in the previous commit. jas_dump_image must be protected 
by #ifdef DEBUG to prevent unused variable warnings.

[src/sjpx.c]

2006-02-03T23:30:24.204851Z Ralph Giles

Code cleanup. Remove unused headers and report decoded image parameters 
through -Zw instead of with general or -Zs debug prints.

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

2006-02-03T15:45:13.779132Z leonardo

Fix  : Removing 'assert' from gxccman.c .

DETAILS :

Doing so by Stefan's and Raph's requests.
Changes to other modules propagate error codes.

EXPECTED DIFFERENCES :

None.

[src/isave.h src/gxfcache.h src/imain.c src/zvmem.c src/gsfont.c src/gxccman.c src/zfont.c src/gsfont.h src/gxccache.c src/isave.c]

2006-02-03T15:40:42.652558Z leonardo

Fix  : Removing 'assert' from gzspotan.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gzspotan.c]

2006-02-03T15:39:14.475213Z leonardo

Fix  : Removing 'assert' from siscale.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/siscale.c]

2006-02-03T15:37:47.547536Z leonardo

Fix  : Removing 'assert' from gxcht.c, gxdhtserial.c

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gxcht.c src/siinterp.c src/zcfont.c]

2006-02-03T15:35:25.138745Z leonardo

Fix  : Removing 'assert' from gxdhtserial.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gxdhtserial.c]

2006-02-03T15:34:27.957959Z leonardo

Fix  : Removing 'assert' from gsfunc0.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gsfunc0.c]

2006-02-03T15:33:21.731016Z leonardo

Fix  : Removing 'assert' from gsfcmap.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gsfcmap.c]

2006-02-03T15:32:12.047666Z leonardo

Fix  : Removing 'assert' from gdevpsft.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gdevpsft.c src/gdevpxut.c]

2006-02-03T13:13:55.222042Z leonardo

Fix  : Removing 'assert' from the FreeType FAPI bridge.

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/write_t1.c src/write_t2.c src/fapi_ft.c]

2006-02-03T12:52:24.873880Z leonardo

Fix  : Removing 'assert' from gdevpsf1.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gdevpsf1.c src/gdevpdfc.c src/gdevddrw.c]

2006-02-03T12:40:42.456435Z leonardo

Fix  : Removing 'assert' from gxpflat.c .

DETAILS :

Doing so by Stefan's and Raph's requests.
Changes to other modules propagate errors form gxpflat.c .

EXPECTED DIFFERENCES :

None.

[src/lib.mak src/gxfilltr.h src/gzpath.h src/gxfill.c src/gxpflat.c src/gxfillsl.h]

2006-02-03T12:39:01.222510Z leonardo

Fix  : Removing 'assert' from gdewddrw.c, gxdtfill.h .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gxdtfill.h src/gdevddrw.c]

2006-02-03T12:35:10.242248Z leonardo

Fix  : Removing 'assert' from gxshade1.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gxfdrop.c]

2006-02-03T12:34:09.374887Z leonardo

Fix  : Removing 'assert' from gxshade1.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gxshade1.c]

2006-02-03T09:55:00.285432Z leonardo

Fix (font machinery) : Remove the dependency of the graphics library code on the PS interpreter code.

DETAILS :

This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gxfcopy.c src/gxfont42.h src/gstype42.c src/zfont42.c]

2006-02-02T22:22:38.927751Z leonardo

Fix (pdfwrite) : Devcice parameters placed in a wrong memory space.

DETAILS :

Bug 688531 "Segmentation fault running pdfwrite from 219-01.ps".

1. See comment in code.
2. Inserted gs_device_pdf::pdf_memory initialization into gdev_pdf_put_params,
The old code initializad in pdf_open, which is called after gdev_pdf_put_params.
We keep the old initialization because the PCL intrepreter may use it.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfp.c]

2006-02-02T22:21:42.095676Z leonardo

Unwinding the last patch due to wrong log message.

[src/gdevpdfp.c]

2006-02-02T22:12:18.484170Z leonardo

Fix  : Removing 'assert' from gxshade6.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfp.c]

2006-02-02T20:00:35.433481Z Ray Johnston

Use the TT font 'Full Name' (name id #4) if the PS name (id #6) is not present.
Related to Bug 688523 for customer 580.

[lib/gs_ttf.ps]

2006-02-02T12:14:33.590232Z leonardo

Fix : A wrong CTM in clist after a create compositor command.

DETAILS :

When a create compositor command is written to clist,
the imager state copy was not updated in the clist writer device,
causing a further CTM desyncronization.
It caused a wrong clist playback for the bands affected by the compositor.

Debugged with GS_Stroke_error.pdf, bugsample.pdf, Bug687724.pdf 
with the patch for 688518 applied.
Have no tests for observibg this bug without the patch for 688518.

EXPECTED DIFFERENCES :

None,

[src/gxclimag.c]

2006-02-02T00:46:28.135273Z Ralph Giles

Update the makefiles for the lwf_jp2 source v1.03 and ldf_jb2 source v2.04.

[src/ldf_jb2.mak src/lwf_jp2.mak]

2006-02-01T22:27:32.766702Z Ralph Giles

Include for reference a script to generate ldf_jb2.mak from the source 
directories, since the file list fluctuates somewhat from version to 
version.

[toolbin/gen_ldf_jb2.py]

2006-02-01T21:13:48.761011Z leonardo

Fix  : Removing 'assert' from gxshade6.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c]

2006-02-01T20:56:40.633246Z Ray Johnston

Make the initial summary line say "ERROR" instead of "DIFFER" if
we get a non-zero exit code during pdfwrite checking.

[toolbin/tests/gstestutils.py]

2006-02-01T18:47:36.861536Z Ralph Giles

Raise the limit of the size of the complete regression beyond which it is not included to 300 KB.

[toolbin/tests/run_nightly]

2006-02-01T18:19:21.935317Z Ralph Giles

Remove an unnecessary terminal '\' in the definition of JAS_EXCF_ which causes problems with make 
in SGI Irix. Closes bug 688529.

[src/jasper.mak]

2006-02-01T10:09:25.288062Z leonardo

Fix (font machinery) : Dereferenced NULL in gx_add_char_bits.

DETAILS :

Bug 688527 "A crash (a null pointer deref) in gx_add_char_bits".

Type 3 fonts are not included into the dir->orig_fonts list.
So the list may be empty.

EXPECTED DIFFERENCES :

None.

[src/gxccman.c]

2006-01-30T21:41:02.804104Z Ralph Giles

Rename HAVE_LDF_JB2 and friend to USE_LDF_JB2 since this is a directive
more than just an availability test.

[src/zfjbig2.c src/zfjpx.c]

2006-01-30T10:49:52.354325Z Ralph Giles

Move the definition of the 3rd party library include paths for the jbig2 
and jpeg2k implementations back into gs.mak.

DETAILS:

Although it makes more sense to define these in the makefile for each 
library, they are also needed for building the calling code in the 
graphics library and interpreter. This causes a circular dependency
with tools such as nmake which perform variable resolution in a 
single-pass.

[src/gs.mak src/jbig2.mak src/ldf_jb2.mak src/lwf_jp2.mak src/jasper.mak]

2006-01-30T10:30:53.447513Z Ralph Giles

Split the JPXDecode filter build at the interpreter level so the correct 
include path is used.

[src/int.mak]

2006-01-30T09:20:34.569051Z Ralph Giles

Correct build path errors in the Luratech makefiles.

[src/ldf_jb2.mak src/lwf_jp2.mak]

2006-01-30T08:51:04.157759Z Ralph Giles

Add the new Luratech makefiles to the MSVC and MacOS CodeWarrior builds.

[src/macos-mcp.mak src/winlib.mak]

2006-01-30T08:47:30.163980Z Ralph Giles

Rename jbig2_luratech.mak to ldf_jb2.mak to make upstream conventions.

[src/Makefile.in src/ldf_jb2.mak src/jbig2_luratech.mak]

2006-01-30T07:55:21.176824Z Ralph Giles

Initial check in of a makefile for building the Luratech LWF JPEG 2000 
CSDK source as part of Ghostscript, and add it to the autoconf build. 
Also associated cleanup.

[src/lib.mak src/Makefile.in src/lwf_jp2.mak src/jbig2_luratech.mak]

2006-01-30T06:41:14.593860Z Ralph Giles

Add hooks for passing license keys to the Luratech jpeg2k and jbig2 
implementations, for those linking against CSDK builds that require
this.

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

2006-01-30T06:39:50.565912Z Ralph Giles

Include jbig2_luratech.mak in the autoconf build.

[src/Makefile.in]

2006-01-30T06:39:02.652740Z Ralph Giles

Switch the choice of JBIG2Decode and JPXDecode stream implementations
based on a preprocessor define.

[src/zfjbig2.c src/zfjpx.c]

2006-01-30T06:37:31.179455Z Ralph Giles

Minor build variable rearrangement and clean up related to the Luratech 
JBIG2 decoder integration.

[src/lib.mak src/gs.mak src/int.mak src/jbig2.mak src/jasper.mak]

2006-01-30T05:34:32.468930Z Ralph Giles

Initial check in of a makefile for building the Luratech LDF JBIG2 CSDK
source as part of Ghostscript.

[src/jbig2_luratech.mak]

2006-01-29T23:54:46.647329Z Ralph Giles

Fix a missing dependency in the new sjbig2 build rules.

[src/lib.mak]

2006-01-29T23:36:18.372226Z Ralph Giles

Update the autotools makefile for the jbig2/jpeg2k indirection changes.

[src/Makefile.in]

2006-01-29T23:31:07.833789Z Ralph Giles

Introduce a level of indirection so the builds for the two different 
jbig2 and jpeg2k implementations can coexist. Also, add jasper to the 
OS/2 and OpenVMS builds, and update the OpenVMS makefiles now that the 
third-party libraries are included with the source release.

[src/openvms.mak src/watcw32.mak src/macosx.mak src/dvx-gcc.mak src/jbig2.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/lib.mak src/ugcclib.mak src/gs.mak src/unix-gcc.mak src/msvc32.mak src/macos-mcp.mak src/wccommon.mak src/watclib.mak]

2006-01-29T21:58:57.475609Z Ralph Giles

Rename the jasper-oriented top-level makefile elements to the more
generic JPX.

[src/lib.mak src/gs.mak src/int.mak src/Makefile.in src/msvc32.mak src/macos-mcp.mak src/jasper.mak src/winlib.mak]

2006-01-29T21:04:26.485513Z leonardo

Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 6.

DETAILS :

This finally completes the fix for the bug 688513 "pdfwrite: redundant CharProcs elements.".
It repairs minor defects of last patches.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c src/gdevpdtf.c src/gdevpdti.c src/devs.mak src/gdevpdti.h]

2006-01-29T19:35:26.757129Z Ralph Giles

Improve the documentation for the CAPOPT unix makefile variable.

[src/macosx.mak src/Makefile.in src/unix-gcc.mak]

2006-01-29T18:06:11.349450Z leonardo

Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 5.

DETAILS :

This completes the fix for the bug 688513 "pdfwrite: redundant CharProcs elements.".

1. Moving char_name from the charproc structure to pdf_char_proc_ownership_t,
because charprocs with different glyph names may have same command stream.

2. pdf_is_charproc_compatible is changed to a weaker condition
to allow to merge char procs with different names.
However we prefer fonts with a compatible encoding, which are attached to same PS font, 
in order to prevent mixing glyphs from various fonts.

3. charproc_compatibility_data_t is defined to reduce the gx_device_pdf::find_resource_param bogus.

4. pdf_char_widths_from_charprocs is a new function for reconstructing
real_width when a PDF Type 3 font is attached to another PS font.
Due to historical reason, real_width is a property of the attachment,
rather in novadays it should be a property of PDF font.
It happens because a PDF font may migrate to another PS font due to charproc merging,
especially in case of glyph variations.

5. The condition for involving pdf_find_same_charproc has been changed 
in pdf_end_charproc_accum to a weaker one, to allow to merge with charprocs from other fonts.
With the old condition a charproc didn't merge when appears in a font at the first time,
so it never merged with ones from other fonts.

6. Added a marking of glyph names in pdf_char_proc_ownership_t for the garbager.

7. Now we mark glyph names for garbager for all simple fonts,
except synthesised bitmap fonts (which use char codes instead glyph names).
The old code did for non-bitmap Type 3 only, and theretore it can have an indeterminizm
with other simple font types.

8. Minor change to gsstruct.c :
Added gs_*_st_strings1_ptrs4 and moved gs_*_st_strings1_ptrs1 
for a better code grouping.

This change causes a minor dirrefernce in raster with Bug687660a.ps with pdfwrite at 72 dpi.
It happens because the space glyph appears same for two fonts, which form a single text,
so that the font change appears some earier. However it causes the representation
of a glyph position to change from an absolute coordinate (in user points) 
to the Tj offset operand (in the 1000-unit scale). 
It causes a 1 pixel noize (the glyph shift) due to a different rounding.

EXPECTED DIFFERENCES :

pdfwrite at 72 dpi :
Bug687660a.ps 

[src/gdevpdfx.h src/gdevpdtt.c src/gdevpdtf.c src/gsstruct.h src/gdevpdtw.c src/gdevpdti.c src/gdevpdtt.h src/devs.mak src/gdevpdti.h]

2006-01-29T17:48:58.910034Z leonardo

Fix (font machinery) : Inaccurate condition in zfont_mark_glyph_name.

DETAILS :

The old condition passes standard encoding indices as Postscript name indices.
It could cause a crash in the garbager.

EXPECTED DIFFERENCES :

None.

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

2006-01-29T08:08:11.685892Z Ralph Giles

Initial checkin of /JBIG2Decode filter support based on the
proprietary Luratech implementation.

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

2006-01-29T01:12:20.057028Z Ralph Giles

Initial checkin of /JPXDecode filter support based on the 
proprietary Luratech implementation.

This version uses the system malloc and only handles 8-bit-
per-component images without channel subsampling.

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

2006-01-29T01:04:43.551064Z Ralph Giles

Rearrange code for clarity.

[src/sjbig2.h]

2006-01-27T21:58:27.997608Z Ralph Giles

Make ps2epsi create a temporary file more securely in an owner-locked 
directory. Closes bug #687243.

[lib/ps2epsi]

2006-01-27T19:52:13.853680Z leonardo

Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 4.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change moves char_code and the font reference from the charproc structure 
to pdf_char_proc_ownership_t.

The function pdf_is_same_charproc has been reorganized due to the data structure change,
and the condition become weaker - not accoutning character codes
and Postscript glyph id.

With this change pdf_end_charproc_accum performs an untrivial charproc substitution
with 238-01.ps due to a weaker condition for charproc equality
But we still have an example (t1.ps from the bug 238-01.ps),
which needs a further improvement.

Adding gx_dfevice_pdf::find_resource_param is bogus.
Would like to do without it, but don't want to enlarge the patch.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfx.h src/gdevpdtt.c src/gsstruct.h src/gdevpdfb.h src/gdevpdti.c]

2006-01-27T17:55:49.774445Z Ray Johnston

Handle indirect object reference for CIDSystemInfo element. Bug 688515
for customer 870.

[lib/pdf_font.ps]

2006-01-27T09:45:38.491381Z leonardo

Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 3.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change is algorithmically equivalent.
It defines a new type pdf_char_proc_ownership_t for
representing a many-to-many correspondence
of charprocs to fonts. But this patch still keeps
the old many-to-one constraint to simplify the testing.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfx.h src/gdevpdti.c src/gdevpdtf.h]

2006-01-27T08:12:27.899649Z leonardo

Fix (pdfwrite) : Remove pdf_begin_char_proc_generic.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change is algorithmically equivalent.
It inlines pdf_begin_char_proc_generic.
pdf_begin_char_proc_generic is an old attempt to factor out
a common portion of code for bitmap (synthesised) and non-bitmap fonts,
but that attempt appeared unuseful.

EXPECTED DIFFERENCES :

None.

[src/gdevpdti.c]

2006-01-26T13:18:07.717021Z leonardo

Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 2.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change is algorithmically equivalent.
It drops last asserts and simplifies the code with them.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c]

2006-01-26T13:07:55.087988Z leonardo

Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 1.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change is algorithmically equivalent.
It moves the Type 3 character code computation from pdf_text_set_cache
to a portion, which works before performing the interpreter callout
for executing a Postscript charproc. Doing so to exclude the necessity 
of storing the character code in pdf_char_proc_t.

We inserted additional asserts to define invariants explicitely.
We'll remove them after regression testing.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c src/gdevpdtt.h]

2006-01-26T10:29:36.328224Z leonardo

Fix (pdfwrite) : Prevent extra encoding elements (continued).

DETAILS :

Bug 687669 "pdfwrite : extra encoding elements with a Type 3 font".
Cleaning Cygwin/gcc warnings from the last patch.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c]

2006-01-26T10:21:40.117753Z leonardo

Fix (pdfwrite) : Prevent extra encoding elements.

DETAILS :

Bug 687669 "pdfwrite : extra encoding elements with a Type 3 font".

The old code created encoding elements for entire text
with no regard to font changes. Some fonts got extra encoding elements 
for glyphs, which were moved to another font.

1. Converting pdf_encode_string into pdf_encode_string_element
   with dropping the text characters cycle.

2. Call it in process_text_modify_width, process_text_return_width
   immediately before processing a character.

3. pdf_encode_process_string is renamed into pdf_process_string_aux
   (because now it is an auxiliary function for pdf_process_string).

4. Few function prototype changes done to pass necessary data
   to pdf_encode_string_element.

After this reorganization a part of scan_cmap_text
appars to duplicate a part of pdf_encode_string_element.
Delaying a further reorganization for better times. 

EXPECTED DIFFERENCES :

None.

[src/gdevpdtc.c src/gdevpdte.c src/gdevpdtt.h]

2006-01-26T08:20:39.942266Z leonardo

Fix (pdfwrite) : Optimize cos_dict_put_copy.

DETAILS :

The old implementation produced a lot of garbage due to redundant 
adding same key-value pair to a cos_dict_t instance.
It happens because cos_dict_put_copy first creates a copy of the value in the heap.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfo.c]

2006-01-25T23:06:08.925944Z Ralph Giles

Correct a syntax error.

[toolbin/tests/run_nightly]

2006-01-25T22:14:19.978978Z leonardo

pdfwrite : Implementing composite fonts with Type 3 descendents (continued).

DETAILS :

Fixing a heap damage bug in the last patch,
which appeared due to inaccurate commitment of a wrong file state.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c]

2006-01-25T21:51:22.137980Z leonardo

pdfwrite : Implementing composite fonts with Type 3 descendents.

DETAILS :

Bug 687875 "pdfwrite : Type 0 FMapType 9 font with a Type 3 descendent converts to bitmaps".
Bug 687298  "(pdfwrite) composite font with Type 3 descendent".

The old code converted such fonts into bitmap fonst.
The new code converts them into multiple Type 3 fonts ;

A. If a composite font uses a CMap mapping,
the Type 3 font descendent may use any CID from the CMap.
Therefore such single Type 3 font is being converted into
multiple Type 3 fonts, each of which is restricted
with 256 characters by the PDF specification.

B. If a composite font has multiple Type 3 descendents,
each descendent form a separate Type 3 font in the PDF output
(or multiple fonts if it falls into both cases (A) and (B)).

This is a case-driven implementation, which is done with adding special branches into 
scan_cmap_text and process_text_modify_width for handling the failed cases.
Other new cases (which we have no samples for) may may need further improvements.

EXPECTED DIFFERENCES :

pdfwrite :
020-01.ps
Bug687845.ps

[src/gdevpdfx.h src/gdevpdtc.c src/gdevpdtt.c src/gdevpdte.c src/gdevpdti.c src/gdevpdtt.h]

2006-01-25T21:29:44.622210Z leonardo

Fix (pdfwrite) : Incorrect computation of a FMapType 9 text size.

DETAILS :

The old code didn't update pte->current_font before calling pdf_update_text_state,
and the matrix computation in scan_cmap_text was bug-to-bug compatible.

This is a preparation for fixing the bug 687875 
"pdfwrite : Type 0 FMapType 9 font with a Type 3 descendent converts to bitmaps".

EXPECTED DIFFERENCES :

None.

[src/gdevpdtc.c]

2006-01-25T19:42:55.998332Z leonardo

Fix : A minor modularity improvement.

DETAILS :

This change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/zchar.c]

2006-01-25T19:22:19.285423Z Ralph Giles

Remove the errpage.ps utility. It is not being used by developers and is no longer functional. 
Bug #688511.

[lib/errpage.ps]

2006-01-25T18:18:31.504275Z Ralph Giles

Include the complete list of regressions in the report if it is less than 40 KB.

[toolbin/tests/run_nightly]

2006-01-25T18:04:36.499424Z Ralph Giles

Improve error reporting.

[toolbin/tests/run_nightly]

2006-01-25T18:01:09.701817Z Ralph Giles

Add usage messages.

[toolbin/tests/make_two_versions toolbin/tests/make_two_pdfversions]

2006-01-25T04:50:25.532213Z Ray Johnston

Add required 'quit' execution to avoid prompt thus requiring a double 'quit'.
Bug 688497.

DETAILS:

This was inadvertently removed when I thought it was not needed and was a
result of a cut-and-paste mistake. This commit will now serve to document
that the extra line _is_ needed.

EXPECTED DIFFERENCES:

None.

[src/imain.c]

2006-01-23T20:25:12.430841Z Ralph Giles

Repeat the reference to autogen.sh in the Unix-specific build 
instructions. Bug #688504.

[doc/Make.htm]

2006-01-23T18:08:18.107243Z Ralph Giles

Use the local MAX() macro instead of the MSVC implicit max() in fuzzy.c 
for portability. Also, add parentheses to silence a GCC warning.

[toolbin/tests/fuzzy.c]

2006-01-23T17:39:54.710146Z Ralph Giles

Infix .pdf. in the output of make_two_pdfversions.

[toolbin/tests/make_two_pdfversions]

2006-01-23T13:29:30.215782Z leonardo

Fix (ps2write) : Incorrect xref offsets.

DETAILS :

Bug 688502 "Incorrect xref table in the PDF stream generated by ps2write".
The old code calculated offsets from the beginning of the PS file.
We generate xref to allow a verification with PDF viewers.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfx.h src/gdevpdf.c src/gdevpdfu.c src/gdevpdfb.h]

2006-01-22T03:02:40.596096Z Alex Cherepanov

Add backward-compatible glyph names for new TTF glyphs. For instance,
/mu1 (micro symbol) is aliased to /mu (greek letter).
Bug 688265

EXPECTED DIFFERENCES :
None

[lib/gs_ttf.ps]

2006-01-21T17:32:17.337421Z Alex Cherepanov

Increase the halftone cache size to improve the performance of large
halftone cells.
Bug 687525

EXPECTED DIFFERENCES :
None


[src/gzht.h]

2006-01-20T08:20:17.716374Z leonardo

Fix : Unwinding the 6449 change (Fix detection of hexadecimal encoding in eexec portion of Type 1 fonts).

DETAILS :

The fix for the Bug 688385 caused a regression with fonttest.pdf.
Unwinding it now.

EXPECTED DIFFERENCES :

fonttest.pdf should restore.

[lib/pdf_font.ps]

2006-01-20T07:52:45.171824Z leonardo

Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.

[src/gxi16bit.c src/gscdevn.h src/gxccman.c src/int.mak src/zfsample.c src/gxicolor.c src/gxclrast.c src/zcolor.c src/gxi12bit.c src/gdevp14.c]

2006-01-20T06:43:12.729752Z leonardo

Fix (pdfwrite, PDF/X) : Implement TrimBox, BleedBox and related Distiller parameters.

DETAILS :

Bug 688443 "TrimBox values should be customizable for PDF/X document".

Patch from Gunnar Ritter with minimal adoptation and a minimal testing.
We added sscanf to acquire TrimBox from Postscript.

EXPECTED DIFFERENCES :

None.

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

2006-01-20T06:38:30.009975Z leonardo

Fix (pdfwrite, PDF/X) : Implement TrimBox, BleedBox and related Distiller parameters, continued.

DETAILS :

Bug 688443 "TrimBox values should be customizable for PDF/X document".
Patch from Gunnar Ritter.


Adobe PDF Creation Settings, 7/27/05, p. 111:

[beg quote]
PDFXTrimBoxtoMediaBoxOffset

	Supported by: Distiller

	Type: array

	UI name: Set TrimBox to MediaBox with offsets (units)

	Default value: [0.00000 0.00000 0.00000 0.00000]

	If both the TrimBox and ArtBox entries are not specified
	in the page object, TrimBox is set to MediaBox with
	offsets. Offsets are specified as [left right top bottom].
	All numbers must be greater than or equal to 0.0. TrimBox
	offsets place TrimBox entirely inside MediaBox.

	NOTE:This setting is ignored if PDFXNoTrimBoxError is true.
[end quote]



EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c]

2006-01-19T18:51:22.949228Z Ray Johnston

Previous patch had matrix1 matrix2 operands exchanged so scaling by cmmatrix was
wrong. This now works for resolutions other than 72. Bug 688485 for customer 850.

[lib/pdf_draw.ps]

2006-01-19T12:08:23.013531Z leonardo

Fix (pdfwrite) : Don't embed unused fonts.

DETAILS :

Bug 688106 "Unused fonts embedded in PDF".
Bug 688380 "pdfwrite: Type 3 fonts with empty CharStrings".


1. Delay font object id assignation until it is used with synch_text_state.
2. Same for font descriptors.
3. Writing a stream resource list, skip ones with no id.
4. Writing font descriptors, skip ones with no id.
5. Same for font objects.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfx.h src/gdevpdts.c src/gdevpdtd.c src/gdevpdte.c src/gdevpdtf.c src/gdevpdfu.c src/gdevpdtw.c src/gdevpdtd.h src/gdevpdtf.h]

2006-01-19T00:21:28.720381Z Ralph Giles

Correct a typo in the usage.

[toolbin/tests/update_specific]

2006-01-19T00:18:05.626817Z Ralph Giles

Accept '-r ' as well as a date spec to the 
update_specific script. Bug 688498.

[toolbin/tests/update_specific]

2006-01-18T21:01:50.698782Z Alex Cherepanov

Print error messages, don't leave them on the stack.
Bug 688491

[lib/gs_ttf.ps]

2006-01-18T13:08:41.803688Z leonardo

Fix (pdfwrite, PDF/X) : Implement TrimBox, BleedBox and related Distiller parameters.

DETAILS :

Bug 688443 "TrimBox values should be customizable for PDF/X document".

Patch from Gunnar Ritter with minimal adoptation and a minimal testing.
We added sscanf to acquire TrimBox from Postscript.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfx.h src/gdevpdf.c src/gdevpdfp.c src/gdevpdfb.h]

2006-01-18T05:10:22.427953Z Ralph Giles

Apply assert patch for CMYK JPEG 2000 images from bug 688142.

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

2006-01-17T17:56:36.138363Z Ray Johnston

Apply a SubFileDecode filter to streams if the Length is valid. This prevents
reading past the end of data for filters that are not terminated, expecting
the PDF Length or 'endstream' to terminate the data. Bug 687435 for customers
780 and 870. Thanks to Alex Cherepanov for this patch.

DETAILS:
Since the Length on some broken PDF's is wrong (a warning will be issued),
this patch will not fix the case where the Length is wrong and the stream
is not terminated.

EXPECTED DIFFERENCES:

None. (according to Alex).


[lib/pdf_base.ps]

2006-01-17T13:43:24.915413Z leonardo

Fix (pdfwrite) : Loss of graphics with GraphicsAlphaBits > 1.

DETAILS :

Bug 688417 "Setting -dGraphicsAlphaBits when using -sDEVICE=pdfwrite causes loss of graphics".

1. Propagate error codes from psdf_get_bits through alpha buffer device methods.
2. Print error message in psdf_get_bits if GraphicsAlphaBits > 1.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdu.c src/gdevabuf.c src/gspaint.c]

2006-01-17T08:37:48.515251Z leonardo

Fix (type 1 interpreter) : c1_hsbw of the main subglyph was replaced with one from the glyph.

DETAILS :

Bug 688453 "gs8.53 renders certain fonts incorrectly".

EXPECTED DIFFERENCES :

normal : Bug687489.ps

[src/gstype1.c src/gxtype1.h]

2006-01-17T05:13:50.629958Z leonardo

Fix (type 1 interpreter) : Improve the mlodularity about seac data.

DETAILS :

This change is algorithmically equivalent.
It is a praparation for bug 688453.

1. seac_flag is moved from Type 1 hinter (gxhintn.h) to Type 1 interpreter (gstype1.h). 
2. Type 2 interpreter (gstype2.c) appears not depending on seac_flag.

EXPECTED DIFFERENCES :

None.

[src/gstype1.c src/gstype2.c src/gxhintn.c src/gxtype1.c src/gxhintn.h src/gxtype1.h]

2006-01-17T00:26:20.734768Z Ralph Giles

Use an explicit target for ps2write.dev, depending on pdfwrite.dev.

DETAILS:
 
Previously, the pdfwrite.dev target just created a dummy ps2write.dev
file without all the dependencies, since ps2write is just an extension
of pdfwrite and depends on much of the same source.

However, this caused problems with parallel builds, and failed badly if 
a user requested ps2write without pdfwrite in the top-level makefile.

[src/devs.mak]

2006-01-16T23:30:44.016752Z Ray Johnston

A better approach to avoid having uninstallpagedevice free a device that needs
closing. Bug 688494. Thanks to leo for the suggestion.

DETAILS:

Increment the rc_assign prior to the .uninstallpagedevice to insure that the
device is still around afterwards so we can call gs_closedevice on it. Many
devices don't need the closedevice, but some might.

[src/imain.c]

2006-01-16T19:08:58.896938Z Ralph Giles

Remove gsmalloc.h from source files that no longer use gs_malloc() or 
gs_memory_default.

[src/lib.mak src/zfdctd.c src/zfdcte.c src/int.mak src/sdctc.c src/sdctd.c src/sdcte.c src/szlibc.c src/szlibd.c src/szlibe.c]

2006-01-16T17:25:29.114707Z Ray Johnston

Make sure that the final gs_closedevice isn't called on a device that has been
freed during the final .uninstallpagedevice. Bug 688494.

DETAILS:

The overprint device or other compositors can (under some circumstances) have
a reference count of 1 when the gs_lib_finit is called, which means that the
'nulldevice' operator executed by the .uninstallpagedevice will free the
compositor when the rc_assign to the graphics state is performed.

To avoid an operation on a pointer to freed memory, don't attempt to close
the device if the ref_count prior to the unistallpagedevice was 1.

EXPECTED DIFFERENCES:

None.

[src/imain.c]

2006-01-16T14:06:57.132584Z leonardo

Fix (pdfx) : Registered printing conditions don't need an ICC profile.

DETAILS :

Bug 688476 "PDF/X-3 without ICC profile".

We could got more knowledge from http://www.color.org/IPA_2003-11_PDFX.pdf .
The main one is the RegistryName key, which we didn't see before. 

Rather PDFX_def.ps becomes complicated, currently we don't try to
simplify the user interface because we've got insufficient
information about user requirements to it.

EXPECTED DIFFERENCES :

None.

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

2006-01-16T11:48:41.730324Z leonardo

Fix (type 1 interpreter) : ce1_setcurrentpoint was wrong in a subglyph.

DETAILS :

Bug 688481 "wrong rendering of Type 1 font".

1. ce1_setcurrentpoint didn't account the position of a subglyph in the glyph.
   The bug was contributed with attaching the new Type 1 hinter
   (gstype1.c rev. 1.23, 1.13).
2. (minor change) A wrong condition for opening a visual trace in gxhintn.c . 

EXPECTED DIFFERENCES :

None.

[src/gstype1.c src/gxhintn.c]

2006-01-16T05:44:16.806614Z Ray Johnston

Update the PDF text matrix basis (TextSaveMatrix) when a 'cm' occurs within a
BT/ET section. Bug 688485 for customer #850.

DETAILS:

Apparently this is rare -- none of the previous regression tests had this case
(a 'cm' inside a BT/ET section). The 'missing' Arabic text was actually outside
the clipping path, so nothing was painted.

EXPECTED DIFFERENCES:

None. I ran the PDF subset of the regression suite and none of the files had
this.

[lib/pdf_draw.ps]

2006-01-16T05:22:18.914647Z leonardo

pdfwrite : Implementing DeviceN attributes, part 1.

DETAILS :

Bug 688406 "pdfwrite : wrong overprint color from Altona_Visual_1v2a_x3.pdf".

This is a partial implementation for DeviceN attributes in pdfwrite.
It is restricted with information, which the graphics library currently provides.
For a complete implementation need a complete fix for Bug 688413.

1. Added a writing of attributes Colorants in gdevpdfc.c .
2. Don't write a resource list for resourceOther, because they are not real PDF resources.

EXPECTED DIFFERENCES :

pdfwrite Bug687660a.ps 

[src/gdevpdfc.c src/gdevpdfu.c src/devs.mak]

2006-01-15T13:42:29.836501Z leonardo

Use a floating point representation for a huge Type 3 text width.

DETAILS :

Bug 687822 "/limitcheck in --setcharwidth--".

We guess the test document uses huge characters for metric computations
rather than for a real rendering.

When a text has a big width (and therefore it is not cached),
we use a new field gs_show_enum::wxy_float instead wxy,
because the latter overflows.
We implement it for Type 3 only due to no other test cases.

EXPECTED DIFFERENCES :

None.

[src/gxchar.c src/gxchar.h]

2006-01-13T22:09:55.060982Z stefan

dprintf format string repair.

[src/zfcid0.c]

2006-01-13T21:59:13.702725Z stefan

Added printf format string argument checking under gcc to std.h

Corrected or commented existing errors.

NB: gx_color_index maybe 4 or 8 giving interesting results to printf
that choose to do:  "color is %lx", color  


[src/gdevxcmp.c src/gxi16bit.c src/std.h src/zfcid0.c src/gdevpsf2.c src/gsfcmap1.c src/gsmemory.c src/gxpflat.c src/gxicolor.c src/gxi12bit.c src/gdevp14.c src/stream.c]

2006-01-13T20:56:57.627440Z leonardo

Fix (pdfwrite) : Type 3 font indeterminizm.

DETAILS :

Bug 688379 pdfwrite: "an indeterministic behavior with Bug687660a.ps" from Comment #21. 

During a garbage collection Type 3 font glyph names were not marked.
Therefore they could be collected and later get different name indices.
Several fonts could be gererated from a single Type 3 font.

EXPECTED DIFFERENCES :

pdfwrite Bug687660a.ps 

[src/gdevpdtt.c src/gdevpdtf.c src/gdevpdtf.h]

2006-01-13T19:19:26.202800Z Ray Johnston

Minor cleanup to remove a line that was left in from a cut-and-paste when this
call was added. Discovered during bug 688487.

[src/imain.c]

2006-01-13T08:29:47.649971Z Dan Coby

Fix for 688487 A crash from garbage collector pointer validation.
This is an addition to 688413 DeviceN under implements 'attributes'

DETAILS:

The GC validation problem was caused by the DeviceN attribute list elements
not being freed.  These list elements contained Separation color spaces.
The color spaces contained a 'map' element which was being freed.  The
GC validation logic was detecting the that the color spaces were pointing
to a freed item.

The fix consists of adding a reference count to the gs_device_n_attributes
structure plus the appropriate logic for incrementing/decrementing.

The name of the DeviceN attributes list was changed to colorants per
Igor's request.

[src/gscspace.h src/gxcdevn.h src/gscdevn.c]

2006-01-12T12:02:56.192425Z Alex Cherepanov

Fix an out of range subscript in Gimp (XCF) export device and a few minor
issues identified by Intel C++ .
Bug 687292

[src/imain.c src/gxfcopy.c src/gdevxcf.c src/zcolor.c]

2006-01-12T11:43:04.185594Z Alex Cherepanov

Fix detection of hexadecimal encoding in eexec portion of Type 1 fonts.
Bug 688385

DETAILS:

The old code that detected hexadecimal encoding appeared to do the reverse.
It worked because PDF is defined to use binary encoding only in the eexec
portion of the font and conversion to hex won't spoil the binary stream.

However, conversion to hex breaks hexadecimal streams. The proposed patch
adds more precise checking for the hexadecimal encoding similar to
the checking algorithm in the eexec operator.

[lib/pdf_font.ps]

2006-01-12T07:10:34.762843Z Ralph Giles

Virtualize the global ctx pointer so it can be replaced by different 
implementations at the stream level.

[src/zfjbig2.c src/sjbig2.c src/sjbig2.h]

2006-01-12T07:09:08.418655Z Ralph Giles

Remove an unused funtion. This was used but the now removed ARCH_CACHE_* 
logic.

[src/genarch.c]

2006-01-12T00:42:19.645669Z Dan Coby

Fix for 688488 Since Jan 7 2006, many regression files get 'typecheck in --execfunction--'

DETAILS:

The commit for 688413 introduced a new problem.  If the attributes dictionary contains a reference to a separation color space which had already been resolved, then a conflict occured with the processing of the alternate tint transform function.  This patch eliminates the conflict by creating a new copy of the DeviceN color space array and the attributes array when the color space is resolved.

[lib/pdf_draw.ps]

2006-01-11T13:20:01.631161Z Alex Cherepanov

Move back-up CharString construction procedures (RD, ND, ...) to a special
dictionary and put it below userdict to avoid warnings when the font
defines them in userdict.
Bug 688464


DETAILS:

Some broken fonts forget to define CharString construction procedures because
non-PostScript font rasterizers don't detect this error. Ghostscript has
a back-up definitions of the procedures that do their job and issue a warning.

Other correct but old-fashioned fonts define CharString construction procedures
in userdict. We had the back-up procedures defined above userdict, where they
preempted the userdict definitions and issued a bogus warning. This patch moves
the definitions below userdict.

[lib/pdf_font.ps]

2006-01-06T23:27:45.066243Z Ralph Giles

Update the regression code to use the new SVN repository. This also includes some 
other minor fixes. The new version of update_specific hasn't been tested.

[toolbin/tests/run_nightly toolbin/tests/testing.cfg.example toolbin/tests/update_specific toolbin/tests/gstestgs.py]

2006-01-06T19:10:31.983184Z Dan Coby

Remove "#if 1" that crept into the last commit.

[src/gscdevn.c]

2006-01-06T19:08:06.688571Z Ralph Giles

Remove the lowercase versions of some of the less common arch.h #defines in favor 
of uppercase versions as per C-style.

[src/gxobj.h src/gxcmap.c src/gxbitmap.h src/gxfarith.h src/siscale.c src/imainarg.c src/gdevdbit.c src/iref.h src/gxclutil.c src/std.h src/gsmalloc.c src/zusparam.c src/gxfixed.h src/gxbitops.h src/ipacked.h src/gxbcache.h src/ibnum.c]

2006-01-06T19:01:15.497779Z Ralph Giles

Remove the check for files not listed in CVS.

DETAILS:

This no longer works since we've switched to subversion for version control. The 
check could of course be ported, but the object was the detect files that had 
either accidentally been left out of a commit, or files that might slip into a
release unintentionally. The 'svn status' command is an effective and more 
commonly used check for the former, and our policy of building releases from
a clean export of the tag eliminates the other.

[toolbin/tests/check_dirs.py]

2006-01-06T18:56:33.954639Z Dan Coby

Partial fix for 688413 DeviceN under implements 'attributes'

DETAILS:

This patch implements the passing of DeviceN attribute color spaces into the graphics library.  The patch consists of the following pieces:

1. In lib/gs_devn.ps:  Attribute color spaces are processed like another color space and then .attachattributecolorspace is called to associate the attribute color space with a DeviceN color space.

2. In lib/pdf_draw.ps: Logic wa added to resolve references to attribute color spaces in PDF DeviceN color spaces.

3. In src/zcsdevn.c and src/gscdevn.c: The implementation of the .attachattributecolorspace is done.

4. Header files were modified to add the attribute color space structures and fields.

5. GC enumeration and relocation logic was added.

[src/zcsdevn.c src/gscspace.h src/gxcdevn.h lib/gs_devn.ps lib/pdf_draw.ps src/gscdevn.c]

2006-01-06T18:54:32.653218Z Ralph Giles

Add the PDFA_def prefix file to the file documentation.

[doc/Psfiles.htm]

2006-01-06T12:27:00.677606Z Alex Cherepanov

Implementation of the remaining TN 5044 operators,
Bug 688268

[lib/gs_lev2.ps]

2006-01-04T22:01:24.416332Z Ralph Giles

Remove the unused ARCH_CACHE defines and the code in genarch.c that 
creates them. Bug 688469.

DETAILS:

The cache detection was both slow and unreliable, especially given the 
spread of cpu and memory speeds now available. Furthermore, no use was
being made of these attempted cache size measurements. We have therefore
removed them as a simplification.

Choosing the blocksize of large inner loops can indeed be a good 
technique, but this is a case of premature optimization. Moreover,
it's usually better to test at run time with the actual algorithm
in question than try to work from a general number.

[src/std.h doc/Make.htm src/genarch.c]

2005-12-30T20:35:22.773764Z Ralph Giles

Ignore generated files in the jasper subtree.

[jasper jasper/src/libjasper/pgx jasper/src/libjasper jasper/src/libjasper/include/jasper /trunk/gs jasper/src/libjasper/base jasper/src/libjasper/mif jasper/src/libjasper/jpc jasper/src/libjasper/bmp jasper/src/libjasper/jpg jasper/src/appl jasper/src/libjasper/include jasper/src jasper/src/libjasper/ras jasper/src/libjasper/pnm jasper/src/libjasper/jp2 jasper/src/msvc]

2005-12-29T01:11:43.615008Z Alex Cherepanov

Clean-up temporary parameter files created by batch files.
Bug 688471

[lib/ps2ps2.bat lib/ps2ps.bat]

2005-12-28T20:48:32.669903Z Ralph Giles

Apply Raph's patch to handle broken channel specifications.

[jpeg/jdmarker.c]

2005-12-28T20:46:39.574800Z Ralph Giles

Copy the IJG jpeg-6b source from /tags/.

[jpeg]

2005-12-28T20:45:24.158383Z Ralph Giles

Remove our local jpeg in favor of one copied from tags.

[jpeg]

2005-12-28T20:39:05.309532Z Ralph Giles

Copy in tagged zlib and libpng source.

[libpng zlib]

2005-12-28T20:37:11.865745Z Ralph Giles

Remove local copies of zlib and libpng in favor of ones copied from /tags/

[libpng zlib]

2005-12-28T20:11:05.093674Z Ralph Giles

Convert .cvsignore settings.

[src/.cvsignore ijs src .cvsignore contrib/pscolor/.cvsignore /trunk/gs contrib/pscolor ijs/.cvsignore]

2005-12-28T19:56:24.767413Z Ralph Giles

Enable Id keyword substitution on appropriate files.

[src/iplugin.h src/gdevm48.c src/gsgdata.h lib/pfbtopfa.ps src/configure.ac src/gdevmsxf.c src/gsropt.h src/gdevmem.c man/ps2epsi.1 src/gdevmem.h src/zvmem.c src/write_t1.c jasper/src/libjasper/base/jas_seq.c src/rm.cmd src/gstrap.c src/icstate.h src/gxxfont.h src/write_t1.h lib/gs_epsf.ps src/gstrap.h src/gzacpath.h src/gscssub.c src/gdevcgmx.h src/gp_msdos.c src/gdevlbp8.c src/gdevpdfx.h src/gdevdm24.c src/zcsdevn.c src/dwsetup.rc src/gxdhtserial.c src/icie.h src/zcontext.c src/gscssub.h zlib/contrib/ada/buffer_demo.adb jasper/src/libjasper/include/jasper/jas_malloc.h src/gdevpdts.c src/ccfont.h src/gxdither.h src/gxdhtserial.h src/cp.cmd lib/gslp.ps src/gdevpdts.h src/macsystypes.h src/gxclutil.c lib/font2c.cmd src/gxcomp.h lib/level1.ps src/echogs.c lib/lpgs.bat src/oper.h doc/History7.htm src/zchar42.c toolbin/tests/cmpi.py lib/gs_lev2.ps src/gscscie.c src/gsfont0.c src/zchar42.h src/icfontab.c src/zht1.c toolbin/gssubst src/zpcolor.c src/zdevcal.c src/gdevpdfi.c src/zcssepr.c doc/Install.htm src/ifont42.h src/sdcparam.c lib/markhint.ps zlib/uncompr.c src/bcwin32.mak doc/Issues.htm src/sdcparam.h jasper/src/libjasper/jpc/jpc_math.c src/gdevpdtd.c src/gdevokii.c src/zcfont.c src/gdevprna.c src/gdevpdtd.h toolbin/makefonts.tcl jasper/src/libjasper/include/jasper/jas_cm.h src/zcolor.c src/gxhtbit.c src/oparc.h jasper/src/libjasper/jp2/jp2_cod.c src/sfxfd.c src/gdevprna.h lib/caption.ps jasper/src/libjasper/jp2/jp2_cod.h src/gp_mspol.c src/dwuninst.h src/gpmisc.c src/ttconfig.h src/ireclaim.c toolbin/pdfinflt.ps src/gxstdio.h src/gsmemraw.h src/gpmisc.h lib/gs_cidcm.ps toolbin/split_changelog.py doc/Lib.htm src/gxline.h lib/bdftops.cmd lib/FAPIconfig doc/Ps-style.htm man/gslp.1 toolbin/tests/check_docrefs.py jbig2dec/Makefile.am lib/traceimg.ps src/ijs.mak src/gserver.c src/gp_psync.c toolbin/tests/update_baseline man/de/pdfopt.1 src/gp_os2pr.c src/gsiomacres.c src/gdevpsd.c src/gxclfile.c man/de/wftopfa.1 src/gxfilltr.h man/de/ps2ps.1 src/gdebug.h lib/viewpcx.ps toolbin/tests/gsconf.py src/zfile.c jasper/src/libjasper/jpc/jpc_bs.c src/gdev4693.c src/gxchar.c lib/gs_indxd.ps jasper/src/libjasper/jpc/jpc_bs.h src/gxchar.h src/gsfcid2.c src/gsline.c src/gsalloc.c doc/Helpers.htm lib/dumphint src/gsline.h src/gsalloc.h src/gsiparm2.h src/gxfont0.h lib/gs_ksb_e.ps lib/ps2pdf.cmd src/gdevmeds.c src/gs16spl.c src/gdev4081.c src/gdevmeds.h src/srdline.h src/dpmain.c src/wctail.mak src/winlib.mak jasper/src/libjasper/jp2/jp2_enc.c doc/History8.htm src/szlibx.h src/zmath.c jbig2dec/jbig2_image_png.c toolbin/tests/make_two_pdfversions src/gdevpdfk.c lib/jispaper.ps src/gxfont0c.h src/iimage.h jasper/src/libjasper/jp2/jp2_dec.c src/gxpcolor.h src/gdevpdtf.c doc/Xfonts.htm src/gp_unifn.c src/gdevddrw.c src/gschar.c src/gdevpdtf.h src/gdevddrw.h src/gdevpsfm.c src/sarc4.c lib/traceop.ps src/gschar.h src/gdevpsu.c src/gsptype2.c src/zfcid1.c src/sarc4.h src/gstrans.c src/gdevpsu.h src/gsptype2.h src/catmake zlib/crc32.c src/gstrans.h src/iestack.h src/gxbitfmt.h src/gxclio.h lib/pdf_rbld.ps src/gstype2.c src/itoken.h lib/pdf2ps.bat lib/gs_dscp.ps src/inameidx.h src/gxhldevc.c lib/gs_devn.ps zlib/contrib/iostream2/zstream.h src/gxhldevc.h lib/pdfopt.ps src/sfxboth.c src/gp_macio.c src/wrfont.c src/sbhc.c lib/viewps2a.ps src/gsdps.c src/zfont1.c src/wrfont.h src/sbhc.h doc/Maintain.htm jbig2dec/jbig2_priv.h man/de/gsnd.1 lib/gs_dbt_e.ps src/gsdps.h src/spngp.c src/ghost.h jbig2dec/jbig2dec.c toolbin/tests/check_all.py doc/gs.css toolbin/tests/gsutil.py src/gxalloc.h src/gsmatrix.c src/gxsamplp.h lib/cidfmap src/istruct.h src/gdevpsf.h src/gsmatrix.h src/zdouble.c src/dwreg.c jasper/src/libjasper/include/jasper/jas_getopt.h src/spdiff.c src/gxfcmap1.h lib/pf2afm.cmd jasper/src/libjasper/base/jas_string.c src/dwreg.h src/scommon.h src/gdevpdtw.c src/gdevpdtw.h src/unixhead.mak src/gsiparm4.h lib/ps2ascii.ps src/gxiscale.c lib/gs_ce_e.ps src/gxbcache.c src/dwinst.cpp src/gxbcache.h src/ibnum.c lib/gs_type1.ps lib/gsnup.ps src/gdevxcmp.c src/ibnum.h src/estack.h src/scfe.c ijs/configure.ac lib/eps2eps.cmd src/gscompt.h src/gsdcolor.h src/gxdtfill.h src/gdevxcmp.h lib/stocht.ps src/gdevlj56.c src/gdevhl7x.c src/gdevos2p.c src/gsparam.c src/gsbitops.c src/gdevmr8n.c lib/gs_pdfwr.ps 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 lib/gs_ccfnt.ps jasper/src/libjasper/base/jas_cm.c src/zfont42.c lib/Fontmap.ATB doc/Language.htm jasper/src/libjasper/pnm/pnm_cod.c src/smd5.c src/spdiffx.h jasper/src/libjasper/pnm/pnm_cod.h src/smd5.h src/gs16spl.rc src/gxhttype.h lib/Fontmap.ATM src/gspenum.h src/sjpx.c lib/unix-lpr.sh lib/ps2epsi.bat lib/decrypt.ps src/gxipixel.c src/sjpx.h src/sfilter2.c src/gdevsnfb.c src/gdevifno.c src/gscrd.c src/gxmclip.c src/mv.cmd src/gxcie.h src/gsio.h lib/gs_cspace.ps src/gscrd.h src/gxmclip.h toolbin/suite.tcl lib/pftogsf.bat lib/uninfo.ps src/unix-end.mak jbig2dec/Makefile.in src/inobtokn.c toolbin/afmutil.py src/gp_mslib.c lib/Fontmap.Sol zlib/minigzip.c src/gsiodev.c src/gdevescp.c src/igc.c src/msvc32.mak src/gdevmacxf.c src/gsfunc0.c jbig2dec/jbig2_arith.c src/igc.h src/jerror_.h src/zdosio.c toolbin/tests/testdiff src/gsfunc0.h jbig2dec/jbig2_arith.h toolbin/jpxtopdf.c src/gdevpsf1.c src/gdevpsds.c src/siscale.c src/gdevpsds.h lib/gs_img.ps src/gsdsrc.c src/gxfill.c src/ilevel.h src/siscale.h src/gxclread.c src/gsdsrc.h src/gxfill.h toolbin/tests/gstestgs.py lib/pdf2ps src/iostack.h lib/gs_kanji.ps lib/stcolor.ps src/gsdll.c src/gdevmr1.c lib/Fontmap.Ult src/gspath1.c jasper/src/libjasper/pnm/pnm_enc.c doc/Details.htm src/gsdll.h src/sjpegc.c src/zfdcte.c lib/ps2ascii.bat src/zfcmap.c doc/Readme.htm src/gdevfax.c src/gdevbit.c toolbin/tests/check_source.py 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/gsdevice.h src/gdevsj48.c src/gdevpdfo.c jasper/src/libjasper/pnm/pnm_dec.c src/gsbittab.c src/gxclmem.h src/macos_carbon_pre.h src/sdctd.c src/gsmemory.c src/gshtx.h src/gdevpdfo.h src/gsbittab.h src/ifwpred.h src/gdevcdj.c doc/Devices.htm src/gsmemory.h man/de/ps2ascii.1 src/files.h src/gxband.h src/scfdgen.c src/ttinterp.c src/ttcalc.c src/gsbitmap.h src/gdevtknk.c toolbin/genfontmap.ps src/idsdata.h src/ttinterp.h src/ttcalc.h src/gxfont42.h src/scf.h src/gsroptab.c lib/gs_fntem.ps src/gxidata.c src/inames.h src/gsistate.c src/gdevm1.c src/os2.mak src/gscolor2.c lib/gs_cidfm.ps src/gzline.h src/gscolor2.h lib/bdftops src/gsmalloc.c src/ttfmain.c lib/errpage.ps src/ivmem2.h src/gsmalloc.h src/gscindex.h src/gxiodev.h toolbin/makewin.tcl src/gp_macpoll.c src/dwmain.c src/gdevpcfb.c jasper/src/libjasper/bmp/bmp_cod.c src/gdevvec.c src/dwmain.h src/gdevpcfb.h jasper/src/libjasper/bmp/bmp_cod.h lib/gs_statd.ps src/gdevvec.h src/ostack.h src/gsrect.h jasper/src/libjasper/jpc/jpc_qmfb.c src/sdeparam.c src/idosave.h src/gdevvglb.c src/gdevimgn.c src/ifrpred.h jasper/src/libjasper/jpc/jpc_qmfb.h lib/impath.ps src/gsmdebug.h zlib/contrib/ada/zlib-thin.adb src/gsovrc.c src/gxshade1.c lib/ps2ps src/gdevm32.c jbig2dec/jbig2_symbol_dict.c src/gsovrc.h src/scfx.h src/all-arch.mak lib/gs_init.ps jbig2dec/jbig2_symbol_dict.h src/gsparams.c src/bfont.h src/idparam.c src/gdevbjcl.c src/gdevpsdu.c src/dvx-gcc.mak src/gsparams.h src/idparam.h src/gp_mswin.c src/gdevdsp2.h src/gxblend.c zlib/contrib/ada/zlib-thin.ads src/gdevbjcl.h src/gp_mswin.h src/gxblend.h src/gp_os2.c src/zcolor1.c zlib/trees.c lib/ps2ps2.bat src/math_.h src/gp_os2.h lib/gs_resmp.ps src/gdevstc.c lib/printafm.ps src/gxfunc.h jbig2dec/jbig2_segment.c src/macos-fw.mak src/ialloc.c src/gdevstc.h src/ialloc.h jasper/src/libjasper/jpc/jpc_mqcod.c src/gserrors.h src/sjpege.c jasper/src/libjasper/jpc/jpc_mqcod.h man/de/pdf2dsc.1 zlib/ChangeLog 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 lib/pfbtopfa src/idebug.c src/igcstr.h src/rm.bat src/idebug.h toolbin/tests/run_regression src/gsht.c lib/gs_lgx_e.ps src/ifont2.h src/gdevpsdf.h src/gdevm16.c src/gsht.h src/scantab.c src/gxfapi.c src/zfilter.c jasper/src/libjasper/bmp/bmp_enc.c src/gstype42.c src/gxfapi.h src/iutilasm.asm src/gsfunc.c src/cp.bat src/sbcp.c jasper/src/libjasper/base/jas_image.c src/iref.h jbig2dec/jbig2_mmr.c src/gsfunc.h toolbin/encs2c.ps src/sbcp.h zlib/zconf.h lib/font2c.bat jbig2dec/jbig2_mmr.h src/gdevtrac.c src/gp_ntfs.c src/libpng.mak zlib/contrib/ada/zlib.adb src/gdevatx.c lib/docie.ps src/zfproc.c src/gs_dll_call.h src/dmmain.c lib/acctest.ps jasper/src/libjasper/bmp/bmp_dec.c src/istream.h doc/Ps2epsi.htm src/gs.c src/zdevice2.c jasper/src/libjasper/include/jasper/jas_types.h src/iscannum.c src/sjbig2.c src/gdevpdfb.c src/iscannum.h src/gscrdp.c src/gspmdrv.c zlib/contrib/ada/zlib.ads src/dmmain.r src/sjbig2.h toolbin/tests/gscheck_all.py src/gdevpdfb.h src/gsfemu.c src/inamestr.h src/gxclrast.c src/gdevxres.c src/gscrdp.h src/gspmdrv.h src/zfile1.c src/zimage3.c src/istkparm.h src/gdevo182.c src/zcspixel.c src/zarith.c src/gximage1.c lib/xlatmap src/msvctail.mak src/gsfunc4.c src/isdata.h src/gxclpath.c jasper/src/libjasper/jpc/jpc_mqenc.c jasper/src/libjasper/base/jas_malloc.c src/gsfunc4.h src/gxcmap.c src/gxclpath.h jasper/src/libjasper/jpc/jpc_mqenc.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 zlib/contrib/ada/mtest.adb src/tttype.h src/gxcpath.c jasper/src/libjasper/jpc/jpc_mqdec.c doc/Unix-lpr.htm src/gxcpath.h lib/bdftops.bat jasper/src/libjasper/jpc/jpc_mqdec.h src/gxp1impl.h src/gdevlxm.c man/ps2ps.1 lib/Fontmap.GS src/rinkj/rinkj-epson870.c jbig2dec/jbig2_generic.c lib/eps2eps src/rinkj/rinkj-epson870.h jbig2dec/jbig2_generic.h jasper/src/libjasper/jpc/jpc_cod.h jbig2dec/jbig2_image.c lib/gs_ciecs3.ps src/gxgetbit.h src/gdevabuf.c doc/Source.htm src/md5.c jbig2dec/jbig2_image.h src/gp_mac.c src/gdevsgi.c jasper/src/libjasper/jpg/jpg_cod.h src/zcie.c src/md5.h src/gdevsco.c src/stream.c src/gp_mac.h lib/pdf_main.ps src/gdevsgi.h src/gdevdflt.c src/stream.h src/gsdpnext.h src/gdev8510.c lib/pdfwrite.ps src/gxstroke.c src/gdevpxut.c src/zmisc2.c src/zfunc3.c src/ttmisc.h src/iparam.c toolbin/tests/dump_testdb src/zrelbit.c src/gdevpxut.h src/gxclist.c src/gdevxini.c src/iparam.h lib/printafm Resource/ColorSpace/DefaultCMYK src/gxclist.h src/jbig2.mak src/gdevpsfu.c src/gdevlp8k.c jbig2dec/jbig2_arith_iaid.c man/font2c.1 doc/Htmstyle.htm src/gdevpdt.c lib/gsnd.bat src/ttfmemd.c lib/ps2pdf.bat jbig2dec/jbig2_arith_iaid.h src/gdevpdt.h src/gp_dosfs.c src/ttfmemd.h lib/dumphint.ps src/gpcheck.h src/jasper.mak src/ztype.c src/dwuninst.cpp lib/ps2ascii src/gdevxxf.c src/shc.c src/zshade.c man/ps2ascii.1 Resource/ColorSpace/DefaultGray doc/Use.htm src/opcheck.h src/shc.h lib/gsndt.bat src/gdevpdfd.c toolbin/tests/gssum.py src/gdevcfax.c src/zicc.c src/vdtrace.c src/gxdda.h src/vdtrace.h src/iscan.c src/iscan.h src/gsnotify.c toolbin/precheck.tcl toolbin/errlist.tcl src/gximage3.c lib/wftopfa lib/pfbtopfa.bat src/srle.c lib/gs_icc.ps src/zfilterx.c Resource/ColorSpace/TrivialCMYK src/gsnotify.h src/gximage3.h src/gsdll2.rc man/gs.1 src/memory_.h src/iparray.h jasper/src/libjasper/jpc/jpc_enc.c lib/gs_wl1_e.ps src/gsuid.h jasper/src/libjasper/jpc/jpc_enc.h Resource/Decoding/Unicode src/gdevstc2.c src/ziodev2.c man/eps2eps.1 src/gsiodevs.c lib/gs_sym_e.ps src/zmisc.c src/gsargs.c src/devs.mak src/gp_win32.c lib/ppath.ps doc/gsdoc.el src/gsargs.h src/gsinit.c src/gxttfb.c src/wmin.mak jasper/src/libjasper/jpc/jpc_flt.h jasper/src/libjasper/jpc/jpc_dec.c src/gxttfb.h src/winplat.mak src/dscparse.c src/gdev3852.c jasper/src/libjasper/jpc/jpc_dec.h src/dscparse.h src/gp_getnv.c lib/gs_dps1.ps zlib/contrib/ada/test.adb jasper/src/libjasper/jpc/jpc_t1cod.c src/gp_wgetv.c src/gdevpxen.h jasper/src/libjasper/jpc/jpc_t1cod.h src/gdevadmp.c src/gdevpxat.h src/zchar2.c src/errno_.h lib/wrfont.ps src/slzwc.c src/gdevpdfu.c src/ttcommon.h src/gdevp14.c src/sfilter.h src/dwinst.h doc/Ps2ps2.htm lib/pf2afm.bat l