Ghostscript change history (detailed)

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]