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.63 (2008-08-01)

This is the fourth scheduled release in the stable Ghostscipt 8.6x series. It corresponds to the 1.53 release of GhostPDL.

Approximately 238 bugs have been fixed since version 8.62. Of particular note are robustness and performance improvements with large files, invalid PDF, and font handling.

The major new feature of this release is multithreaded rendering. This can be requested by passing -dNumRenderingThreads=n on the command line. The input document is first parsed, and then each page is split into n bands which are rendered concurrently. This can provide a significant reduction in processing time on multi-core systems.

Images are now always interpolated in their source colorspace. This improves correctness for XPS documents and avoids bypassing the custom color management callbacks for interpolated images. Interpolation and color management are both expensive operations, so this affects performance with large images. The effect can be positive or negative depending on the file and the target resolution. If performance is a problem, we suggest running with -dNOINTERPOLATION.

Support for OpenPrinting Vector devices has been upgraded to version 1.0.

There are two new devices in this release, both experimental. Behdad Esfahbod has contributed a cairo output device which uses the cairo graphics library to generate PDF, SVG, EPS, or PNG files, based on the requested filename extension. The svgwrite device directly outputs Scalable Vector Graphics, the W3C XML vector graphics format. Both support only vector art at this point; text and images will not be represented efficiently.

The following bugs were open at the time of release:

226943, 430175, 465936, 493348, 535932, 578865, 614298, 626295, 686747, 686853, 686865, 687000, 687011, 687084, 687095, 687146, 687193, 687257, 687271, 687280, 687295, 687297, 687303, 687327, 687375, 687414, 687475, 687492, 687514, 687520, 687536, 687561, 687593, 687608, 687630, 687650, 687666, 687674, 687677, 687695, 687697, 687702, 687715, 687721, 687728, 687729, 687731, 687775, 687780, 687782, 687793, 687796, 687805, 687850, 687887, 687903, 687904, 687915, 687931, 687950, 687957, 687981, 687983, 688007, 688022, 688024, 688026, 688032, 688036, 688042, 688058, 688061, 688064, 688066, 688081, 688095, 688129, 688130, 688151, 688159, 688166, 688184, 688187, 688204, 688207, 688210, 688215, 688227, 688267, 688269, 688280, 688288, 688312, 688318, 688320, 688333, 688342, 688359, 688361, 688363, 688372, 688378, 688386, 688387, 688389, 688395, 688413, 688436, 688437, 688440, 688448, 688473, 688475, 688483, 688495, 688500, 688515, 688528, 688533, 688539, 688540, 688542, 688557, 688565, 688573, 688580, 688581, 688588, 688601, 688604, 688605, 688616, 688617, 688619, 688627, 688636, 688638, 688647, 688651, 688653, 688655, 688673, 688696, 688697, 688699, 688708, 688709, 688710, 688714, 688717, 688728, 688731, 688736, 688739, 688757, 688770, 688774, 688777, 688778, 688797, 688818, 688829, 688843, 688846, 688871, 688872, 688876, 688908, 688918, 688919, 688923, 688926, 688933, 688942, 688943, 688949, 688952, 688958, 688969, 688976, 688978, 688986, 688990, 688994, 688999, 689003, 689011, 689013, 689022, 689025, 689028, 689031, 689032, 689040, 689044, 689046, 689048, 689057, 689058, 689060, 689070, 689076, 689077, 689078, 689080, 689081, 689093, 689094, 689098, 689116, 689128, 689129, 689130, 689133, 689137, 689145, 689146, 689148, 689150, 689153, 689154, 689161, 689167, 689174, 689184, 689188, 689195, 689198, 689199, 689209, 689222, 689224, 689230, 689236, 689247, 689248, 689252, 689253, 689264, 689278, 689279, 689280, 689283, 689289, 689290, 689295, 689304, 689305, 689308, 689313, 689331, 689335, 689340, 689341, 689358, 689361, 689363, 689370, 689376, 689378, 689392, 689396, 689402, 689418, 689419, 689421, 689422, 689423, 689431, 689438, 689439, 689444, 689450, 689451, 689456, 689460, 689462, 689463, 689471, 689484, 689487, 689489, 689490, 689498, 689500, 689502, 689506, 689507, 689509, 689512, 689518, 689521, 689522, 689546, 689547, 689549, 689554, 689557, 689559, 689560, 689561, 689563, 689566, 689567, 689571, 689573, 689574, 689581, 689583, 689584, 689585, 689591, 689592, 689595, 689598, 689601, 689606, 689610, 689616, 689618, 689623, 689625, 689627, 689628, 689632, 689636, 689641, 689652, 689653, 689654, 689657, 689658, 689663, 689666, 689669, 689670, 689674, 689681, 689682, 689684, 689689, 689690, 689691, 689692, 689697, 689698, 689702, 689704, 689705, 689709, 689710, 689711, 689715, 689716, 689721, 689722, 689725, 689726, 689727, 689729, 689734, 689737, 689741, 689747, 689752, 689756, 689758, 689759, 689760, 689761, 689767, 689769, 689772, 689773, 689775, 689778, 689781, 689786, 689789, 689790, 689792, 689793, 689794, 689799, 689801, 689805, 689808, 689816, 689817, 689820, 689822, 689823, 689826, 689834, 689835, 689836, 689840, 689842, 689849, 689850, 689851, 689853, 689856, 689858, 689859, 689860, 689861, 689862, 689865, 689868, 689869, 689870, 689871, 689872, 689877, 689878, 689879, 689880, 689881, 689883, 689885, 689890, 689891, 689895, 689901, 689902, 689903, 689904, 689905, 689909, 689910, 689914, 689915, 689916, 689917, 689922, 689923, 689928, 689929, 689930, 689931, 689933, 689935, 689937, 689938, 689939, 689940, 689941, 689942, 689943, 689947, 689950, 689951, 689952, 689954, 689955, 689957, 689961, 689966, 689968, 689969, 689970, 689972, 689974, 689975, 689980.

Incompatible changes

The maximum number of color components has been reduced to 8 (from 252) as a performance improvement. Eight is the largest number commonly used and the largest number for which we support continuous tone images. Users with special needs can restore the previous behavior by setting the GS_CLIENT_COLOR_MAX_COMPONENTS preprocessor symbol to the required number of components at compile time.

The -Z: debugging option now uses 'realtime' instead of 'usertime' when reporting timing information on unix-like systems. This has always been the case on windows-like systems.

Obsolete makefiles for the DesqView environment have been removed.

Changelog

2008-08-01T17:53:17.331788Z Ralph Giles

Bump the product name an date for the 8.63 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 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/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]

2008-07-31T21:06:50.284451Z Ralph Giles

Update change logs for 8.63rc3.

[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/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/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2008-07-29T20:35:41.916113Z Ray Johnston

Fix problem with NumRenderingThreads>0 with devices that request data from
the bottom up such as the 'bmp*' devices. Bug 689985.

[src/gxclthrd.c]

2008-07-29T19:11:31.677116Z Alex Cherepanov

Add support to NULL pointers in t_structs or t_astructs objects to execstack
operator. Thanks to Ken for the analysis. Bug 689535.

DETAILS:
The issue is to do with devices handling patterns as high-level objects, which
is why it affects pdfwrite (which can handle patterns itself) but not regular
rendering. In zpcolor.c, pattern_paint_prepare(), there are two control paths,
one for devices which handle patterns as high-level objects, and one for
devices which don't. If the device can't handle high level objects, we install
a pattern accumulation device.

In this case, the flag internal_accum is set, we create the pattern accumulator
device and open it:

    if (internal_accum) {
	gs_memory_t *storage_memory = gstate_pattern_cache(pgs)->memory;

	pdev = gx_pattern_accum_alloc(imemory, storage_memory, pinst,
"pattern_paint_prepare");
	if (pdev == 0)
	    return_error(e_VMerror);
	code = (*dev_proc(pdev, open_device)) ((gx_device *) pdev);
...
...
}

Later the two control paths rejoin and we put some objects on the execution
stack:

    push_mark_estack(es_other, pattern_paint_cleanup);
    ++esp;
    make_istruct(esp, 0, pdev);

Now notice that we construct the structure on esp using pdev, but we *don't*
create pdev if we can handle patterns, so its left as NULL and we end up
pushing an empty t_struct.

Leo's question in comment 10 is whether this is legal, the answer appears to be
yes, but its debatable. 

In pattern_paint_finish we do this:

    gx_device_forward *pdev = r_ptr(esp - 1, gx_device_forward);

    if (pdev != NULL) {
	gx_color_tile *ctile;
	int code = gx_pattern_cache_add_entry((gs_imager_state *)igs,
					  pdev, &ctile);

That is, if the structure *isn't* NULL we do something with it, we ignore it if
it is NULL. Either way we then do this:

    esp -= 3;

Removing all the objects from the execution stack that we added. Notice that
the structure we pushed onto the execution stack isn't actually 'executed', its
just data used by the pattern handler.

Now, all this works just fine in normal practice, however the job here uses a
CIEBased colour space, and being from an Adobe application it tries to set the
ColorRendering. Since we don't implement a ColorRendering resource category,
this causes an error (handled in a stopped context).

The default error handler uses execstack, and this is where the actual error
finally occurs, because execstack can't handle the empty structure.

[src/zcontrol.c]

2008-07-29T18:06:37.196198Z Ralph Giles

Update change logs for 8.63rc2.

[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/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/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2008-07-29T11:01:11.006826Z Russell Lang

Allow compilation with Microsoft Visual Studio 2008 (VC 9.0).
Include lib files in the Windows installer when using COMPILE_INITS=1.

[src/winint.mak src/msvc32.mak]

2008-07-28T22:23:04.128314Z Michael Vrhel

Fix for Bug 689983.  This was introduced with the source space interpolation code.  Fixes indexing direction in source data when we have indexed data, interpolation and a negative xx value in the geometric transformation.

[src/gxiscale.c]

2008-07-28T20:44:43.542926Z Ralph Giles

Update change logs for 8.63rc1.

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

2008-07-28T19:41:25.163173Z Ralph Giles

Fix a syntax error from r8548.

This wasn't noticed because double.dev isn't part of the default build.

[src/zdouble.c]

2008-07-28T18:58:41.634974Z Ralph Giles

Update release date and product name for 8.63rc1.

[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 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 man/pdf2ps.1 man/ps2pdf.1 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]

2008-07-28T18:55:01.811159Z Ralph Giles

Update news for 8.63rc1.

[doc/News.htm]

2008-07-28T12:01:51.595271Z Alex Cherepanov

Fix extraction of the default subfile from PDF file collection on save
level 0. Export the file name as a PS name from PDF interpreter instance
to protect the name from restore. Bug 689981.

DETAILS:
Exporting this value as a global composite object doesn't work when PDF
interpreter runs on the save level 0. If we ever implement processing of
multiple files from PDF collection the interface will need some changes.

[lib/pdf_main.ps]

2008-07-28T10:10:53.373341Z Igor Melichev

Fix (clist writer) : Improve the logic about zero tile id.

DETAILS :

Thanks to Peter for participation. See comment in code.

[src/gxclrect.c]

2008-07-28T07:52:42.264750Z Igor Melichev

Fix (printer) : A check for buffer space overflow was dramatically overestimated.

DETAILS :

In the old code :

    new_height < max_ulong/(mem_space + (new_height * pdf14_trans_buffer_size))

Where pdf14_trans_buffer_size is (raster * NUM_PDF14_BUFFERS).

equivalent to :

    
    new_height * (mem_space + (new_height * (raster * NUM_PDF14_BUFFERS))) < max_ulong


equivalent to :

    new_height * mem_space + new_height * new_height * raster * NUM_PDF14_BUFFERS < max_ulong


So it counts new_height quadratically, but it must be the linear multiple by the raster.

Debugged with the test case of the bug 689982.
It creates a 15Mb raster, but could not switch off the banding
even with -dMaxBitmap=1000000000 .

[src/gdevprn.c]

2008-07-27T21:06:38.633515Z Igor Melichev

Fix (shading) : Empty clipping was entirely lost.

DETAILS :

Bug 689982 "A wrong shading raster".

The old code doesn't account that gx_cpath_from_rectangle
may normalize the given rectangle.

[src/gxfill.c]

2008-07-27T19:10:02.737363Z Ralph Giles

Metadata updates for the new zfile header.

[src/zfile.h doc/Develop.htm]

2008-07-27T16:07:30.174721Z Ray Johnston

Remove (complete) duplication of the contents. Cosmetic change only.

[src/zfile.h]

2008-07-27T16:01:28.177923Z Igor Melichev

Fix (clist) : Skip writing unuseful data with linear color triangle.

DETAILS :

This fixes a minor problem what was discovered while working on 
bug 689918 "Ghostscript 8.62 and 8.63 segmentation fault".

cmd_write_trapezoid_cmd wrote an unused data to clist when 
processing a linear color triangle. The variables ybot, ytop are never used
while a clist interpretation. In same time the data are not initialized
in that case, so they imply an indeterministic content and length of the clist. 

[src/gxclrast.c src/gxclrect.c]

2008-07-27T09:38:42.451745Z Igor Melichev

Fix (True Type font loader) : Can't work around unsorted 'loca' when 'loca' is not loaded.

DETAILS :

Bug 689893 "Regression: CID font emulation is broken." 

A work around against unsorted 'loca' and its recent improvements
assume that 'loca' presents in sfnts. It is not true
when a CID font is emulated with a True Type disk font,
because in that case the font machinery delay loading
'loca' and 'glyp' elements until a real request from a document.
For more details see comments added in code.

[src/bfont.h src/zfcid1.c src/gstype42.c src/zfont42.c]

2008-07-27T09:29:37.311275Z Igor Melichev

Fix (PDF interpreter) : A temporary work around huge images with a soft mask.

DETAILS :

Bug 689080 "PDF Crash with Transparency at 2880 dpi".

 
This is a temporary workaraound for the problem,
see comment in code.

With this patch the test case doesn't crash,
but it needs  -dBufferSpace=500000000 to complete in 15 minutes
on Core 2 Duo 2.4 MHz with debug build.
The test case is pretty big anyway - it generates a 4.2 gigapixel raster.

Thankls to Ray for obtaining the buffer space from a device.

I think the old code is incorrect because it looks applying the
mask two times : first when installing a mask buffer with
.begintransparencymaskimage in doimagesmask, and second time when
processing a Type 103 image in C code. The raster difference
is likely caused by that. I don't perform a deeper analyzis,
because it's a temporary fix which needs to be replaced soon.
All that is written in this paragraph are not sure,
because there is no time for a deeper analyzis before 8.63 release.
When we'll complete Type 103 images (with rasterizing after clist
and with a proper handling in pdfwrite), .begintransparencymaskimage
will likely go away.

[lib/pdf_draw.ps]

2008-07-27T07:03:42.852634Z Russell Lang

When building the Windows installer with COMPILE_INITS=1, 
do not include the Resource and lib initialization files as
separate files in the installer zip archive.

[src/winint.mak]

2008-07-27T02:52:11.521293Z Alex Cherepanov

Fix direct access to a subfile in the %rom% file system by reusable
stream. Bug 689976, customers 661, 580.

DETAILS:
1. Open the source file of the reusable stream as a general stream,
   rather than an os-based file stream.
2. Take into account file_offset member when accessing the stream.

[src/zfile.h src/gsiorom.c src/int.mak src/zfrsd.c src/zfile.c]

2008-07-25T22:51:14.900519Z Russell Lang

Change Windows installer to remove "GPL Ghostscript Fonts" target.
Ghostscript now includes fonts in the Resource directory, 
and no longer needs the fonts previously installed in 
"C:\Program Files\gs\fonts".

[src/dwsetup.rc src/winint.mak src/dwsetup.h src/dwsetup.cpp]

2008-07-25T01:10:39.451286Z Alex Cherepanov

Use reusable stream when the data stream of type 0 function doesn't fit into
a string. Bug 689978, customer 770.

[lib/pdf_draw.ps]

2008-07-24T17:28:51.809318Z Ralph Giles

Fix source style warnings from the nightly regression.

[src/aes.h doc/Develop.htm toolbin/clusterpush.sh]

2008-07-24T02:06:07.385871Z Michael Vrhel

Clean up of // comment in code and debug ifdef that should have been removed for r8868

[src/gxiscale.c]

2008-07-24T00:42:06.095459Z Ralph Giles

Change the XYSSL AES implementation to better match our conventions.

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

2008-07-24T00:42:04.729720Z Ralph Giles

Change the XYSSL AES implementation to build in isolation.

[src/aes.c]

2008-07-24T00:42:02.863201Z Ralph Giles

Replace Brian Gladman's AES implementation with a no-advertising BSD
version from XYSSL 0.9. Used with permission of Christophe Devine.

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

2008-07-24T00:42:01.337493Z Ralph Giles

Fix some compile problems in Brian Gladman's AES implementation
and disable 'on the fly keying' routines we don't need.

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

2008-07-23T23:29:39.935990Z Michael Vrhel

Fix for Bug 689246.  When performing interpolation, the interpolation is now performed in the source colorspace as opposed to the device space.  Custom color callback is no longer bypassed by direct concretization as it was previously.

DETAILS:

Previous code would take device color 8 bit values and do the interpolation.  That portion of the code is the same.   For cases where we have nondevice color the handling is now different.  Indexed colors are mapped to their base space and interpolated.  This is followed by a remap operation.  Device independent colors are interpolated followed by a remap operation.  

Note that for cases where there is a significant enlargement occurring and we are not in a device color space, there can be a performance cost due to current inefficiencies in our color remapping operations.  This can be costly if you have a CMYK CRD MLUT for example.  There is currently a project underway to improve the efficiency of the color flow.  For the current time, if this is an issue, improved speed can be achieved by invoking -dNOINTERPOLATION

[src/lib.mak src/gxiscale.c src/gxcolor2.h src/gximage.h src/gscindex.h src/gscolor2.c]

2008-07-23T22:52:50.086155Z Ray Johnston

Fix possible use of uninitialized variable 'mem_space'. Compute the value
when no-transparency is in effect prior to adding in the space needed for
transparency. Thanks to Michael Vrhel for spotting this.

[src/gdevprn.c]

2008-07-23T21:55:21.014656Z Igor Melichev

Fix (graphics) : Write tile id into a pattern clist (continued).

DETAILS :

Bug 689818 "Regression: Test file imagemask-with-pattern.ps fails with banding and pbmraw ".

The last patch appears incomplete, now fifing it.

[src/gxclrast.c]

2008-07-22T21:03:07.709088Z Ray Johnston

Turn off the NOISY 'VERBOSE' setting by default.

[src/rinkj/rinkj-epson870.c]

2008-07-22T18:32:34.998275Z Ray Johnston

Change the default GS_CLIENT_COLOR_MAX_COMPONENTS to 8 (down from 252).
This improves the performance for files with many images. This limits
the number of DeviceN components and the number of separations that
can be generated in the default build and causes 'limitcheck' errors
on CET tests that attempt to set a 250 component DeviceN space.

THIS IS NOT BACKWARDS COMPATIBLE, but the change in ths single file
so this can readily be rebuilt by customers that need more components
or anyone that demands conformance to this implementation dependent
result on the CET. Note that not all Adobe implementations support
250 components as CPSI does.

Currently only the tiffsep and psdcmyk devices can generate more than
8 separations, and then only when USE_COMPRESSED_ENCODING is used to
fit more than 8 components in a 64-bit color value.

This partly reverts rev 7159.

[src/gsccolor.h]

2008-07-22T14:23:25.922113Z Ken Sharp

Fix (pdfwrite): limit checking of CIDfonts for 'fixed width' property.

Details:
Bug 689963 "Infinite loop converting PostScript to PDF"

In fact the loop is not infinite, but it does take a long time. When checking to see if a
font is non-proportional, ie all glyphs have the same width, and the font is a CIDFont, we
did not stop testing when the CID exceeded the maximum CID in the font instance. Instead
we continued to the full CID range (0xffffffff). Because the TrueType code returns a
default for missing glyphs if the font was truly non-proportional then it would take a
long time to search the entire range.

(zfcid1.c): In z11_enumerate_glyph, check the requested CID against the CIDCount for the
font. Return a rangecheck if we exceed it.

I believe only pdfwrite uses this code currently.

[src/zfcid1.c]

2008-07-22T06:24:14.072316Z Igor Melichev

Fix (graphics) : Write tile id into a pattern clist.

DETAILS :

Bug 689818 "Regression: Test file imagemask-with-pattern.ps fails with banding and pbmraw ".

The old code doesn't write a tile id when writing the tile to clist,
because the clist interpreter doesn't use tile id.
This causes a failure after we implemented clist-based patterns.
While playing back a pattrn clist to a page clist writer device, 
the clist writer does need a tile id
for choosing an entry of an internal hash table.

Actually the failure happens due to a strange check 
"tile->id != gx_no_bitmap_id" in 
clist_strip_tile_rectangle in gxclrect.c ln 479.
It is not clear what it was intended for.
When a tile id is zerfo, the check skips writing tile size to clist,
so that a zerodevide happens during the clist playback.
 
We decided to provide meanful ids 
because the clist writer needs them anyway.
Fixing the check to be a subject of a separate patch
(if a fix is really necessary).

This patch simply writes tile id when the clist
is for a pattern. A new nacro IS_CLIST_FOR_PATTERN(cdev)
Defines the condition for that. 
Some internal functions change prototypes
with adding a new boolean argument for_pattern to know
whether a clist is for a pattern.

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

2008-07-21T23:23:13.534369Z Ralph Giles

Update the license statement for Kevin Hartig's hana fonts.

They are now under the SIL Open Font License 1.1 with reserved font
names Calligraphic-Hiragana and Calligraphic-Katakana.

See Bug 688674 for the relicensing declaration.

[lib/Fontmap.GS]

2008-07-21T20:22:21.005889Z Ray Johnston

Remove obsolete and probably non-working support for ancient DesqView (DOS
multi-taksing). This probably should have been dropped when we dropped 16-bit
support.

[src/dvx-tail.mak src/dvx-gcc.mak src/dvx-head.mak]

2008-07-21T18:55:31.311238Z Alex Cherepanov

Wrap string data source into a procedure when /ImscaleDecode filter is
installed, to ensure repeated reading of the string when the imagemask
needs more data than has the string. Allocate new composite objects
with the same global status as old ones. Bug 689889, customer 330.

[lib/gs_img.ps]

2008-07-18T20:53:54.538069Z Ray Johnston

Fix for Seg fault caused by wrap around of an unsigned long. Seen at 600 dpi
to pkmraw with Bug689369.pdf and -dBufferSpace=32000000.

DETAILS:

While the pdf14_trans_buffer_size was small enough, the mem_space calculation
would wrap around.

[src/gdevprn.c]

2008-07-17T20:11:52.225244Z Ray Johnston

Increase the default threshold for using the (much slower) pattern clist accumulator.
The 32Mb threshold is tolerable for most host systems and this can be modified during
the build with -DMAX_PATTERN_BITMAP_SIZE=___ (possibly using the makefile XCFLAGS).

Only embedded systems may want to set this to a smaller value.

This is a temnporary workaround for bug 689966. Improving the performance of the
pattern clist accumulator will be considered a future enhancement.

[src/gxpcmap.c]

2008-07-17T05:51:19.136291Z Ray Johnston

Update documentation to describe multi-threaded rendering (NumRenderingThreads)
and improve the documentation about the clist/banding parameters and the effect
on performance. Addresses issues raised in bug 689668.

[doc/Use.htm doc/Language.htm]

2008-07-17T02:34:01.869133Z Ralph Giles

Write pure white as a background in the pngalpha device. Bug 689934.

Details:

Russell Lang reports this caused problems originally, but it seems to 
work now, so reverting the behaviour per his request.

[src/gdevpng.c]

2008-07-16T17:19:29.238633Z Igor Melichev

Fix (transparency) : A mask buffer could left unreleased due to banding.

DETAILS :

Bug 689944 "Reference to free object".

See comment in code. 

[src/gdevp14.c]

2008-07-16T15:00:17.682927Z Alex Cherepanov

Ignore out-of-range UniqueID in embedded Type 1 PDF fonts. Bug 689973.

[lib/pdf_font.ps]

2008-07-15T20:29:13.383262Z Ralph Giles

Remove the obsolete pnga device. Bug 689971.

This was a test framework used in the development of the PDF 1.4
compositor. It's no longer used.

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

2008-07-15T13:27:29.996709Z Alex Cherepanov

Cache the pattern instance in the PDF pattern object to prevent reprated
pattern instantiation and improve performance. Bug 689896, customer 531.

[lib/pdf_ops.ps]

2008-07-14T18:53:40.636598Z Marcos H. Woehrmann


Allows the Epson AcuLaser device output to be sent to a pipe (closes bug 689953).

Thanks to j@uriah.heep.sax.de (Joerg Wunsch) for the patch.

[contrib/eplaser/gdevescv.c]

2008-07-13T22:06:19.770532Z Henry Stiles

Rop devices now require access to an allocator instance.  Fixes crash
in running pxl fts file T326.BIN with a halftoning device.  The bug
was reported by a potential customer and a bugzilla report was never
filed.

[src/gdevrops.c]

2008-07-12T01:43:13.151852Z Alex Cherepanov

Use /.notdef instead of null in the array of PostScript names of TTF glyphs.
This saves the trouble of checking for null values and fixes a case where
a null entry slipped through. Bug 689962, customer 384.

[lib/gs_ttf.ps]

2008-07-11T23:10:56.624279Z Ralph Giles

Restore the 2_fracs image class to the psl2lib device.

It was inadvertently removed in r8828.

[src/lib.mak]

2008-07-11T23:10:55.549110Z Ralph Giles

Make the search for the most recent ghostpcl revision more robust.
Thanks to Henry Stiles for the extra quoting idea.

[toolbin/clusterpush.sh]

2008-07-11T21:10:49.148153Z Ralph Giles

Merge clusterpush changes from the ghostpcl tree.

[toolbin/clusterpush.sh]

2008-07-11T18:00:13.808434Z Ralph Giles

Check return codes of remote commands and abort if there's a problem.

Previously we continued which could confusingly return the wrong
regression report at the end if the connection drops while waiting
for the run to complete.

[toolbin/clusterpush.sh]

2008-07-11T05:06:07.316809Z Alex Cherepanov

TrueType instruction definitions (IDEF) are addressed by a single byte index. 
So there cannot be mode than 256 different instructions. Nevertheless, a
request a for larger array for instruction definitions should not be a fatal
error. Bug 689960, customer 330.

[src/ttobjs.c]

2008-07-10T23:36:00.202299Z Ralph Giles

Add the so build directories to the clusterpush exclude list.

[toolbin/clusterpush.sh]

2008-07-10T23:35:56.971501Z Ralph Giles

Move the interpolation image class from the ps2 dev to the core graphics
library so it is available to all languages.

[src/lib.mak]

2008-07-10T17:00:39.840394Z Ralph Giles

Documentation update: we support Separation, DeviceN and a number of PDF 1.7 features.

[doc/Language.htm]

2008-07-09T22:59:00.503580Z Alex Cherepanov

Use '%PDF-' instead of '%PDF-1.' to recognize PDF files because PDFsharp 0.8.2
generates '%PDF-0.0' and Acrobat accepts this. Bug 689949, customer 384.

[lib/pdf_main.ps]

2008-07-07T14:17:54.881290Z Ken Sharp

Update the documentation for the NOCIE switch, noting that this also affects the CIEBasedDEF
and CIEBasedDEFG spaces, substituting DeviceRGB and DeviceCMYK for the CIE spaces.

[doc/Use.htm]

2008-07-07T13:43:38.233194Z Ken Sharp

Fix warnings from the JPX decoder when using Visual Studio 9.

Details:
A compiler warning was disabled if the MSVC_VERSION variable was exactly 8, changed to
>7 so that it is also disabled for later versions of the compiler

[src/msvccmd.mak]

2008-07-07T08:56:59.749169Z Ken Sharp

Fix (pdfwrite): Images ina DeviceN space with more than 60 inks caused a crash.

Details:
Bug #689864 "Regression: 09-34.PS core dumps with pdfwrite"

When emitting an image, using the Flate encoder, the number of colorants in 
the DeviceN space was not checked against the maximum permitted. Since the 
encoder uses a fixed buffer whose size depends on the maximum number of inks, this
could cause a write beyond the end of the buffer.

(spngpx.h) Increase the maximum number of colorants to 256
(spngp.c) Return error if the number of colorants in the space
          exceeds the maximum permitted.

I can't check the generated PDF file, as no PDF reader seems able to open a PDF 
file with more than 32 inks, the architectural limit in the current version 
of Acrobat.

[src/spngpx.h src/spngp.c]

2008-07-06T00:45:19.690811Z Ray Johnston

Fix address/value problem. How this ever seemed to work, who knows.
Thanks to Matthias Kilian for this patch.

[src/gdevwts.c]

2008-07-04T20:35:41.686667Z Alex Cherepanov

Fix a bug in the error recovery code that handles invalid font streams.
Bug 689936, customer 661.

[lib/pdf_font.ps]

2008-07-04T18:20:44.681886Z Ralph Giles

Parse common color space keys in JPXDecode filtered images and pass them
to the filter, allowing JPX-encoded CMYK images to display properly.
Fixes bug 688807.

DETAILS:

The fundamental issue is that the jasper library does not support the
ISO 15444-2 (JPX) extensions to the JP2 format for handling full ICC
and CMYK color spaces. So while the the PDF image dictionary and the
JPX streams both specify a CMYK ICC profile describing the image, jasper
ignores the extended colr boxes and marks the image as sRGB + an unknown
component, just based on it having three or more components. Our stream
implementation used this information and tried to return RGB pixels when
the graphics library expected CMYK, causing errors or hangs.

Jasper should be amended to handle these extensions. However, since in
PDF a color space in the image's stream dictionary overrides what is in
the stream, I felt implementing the override was the more useful
resolution.

This patch doesn't handle all color spaces, just Device* and ICCBased,
which are the most common. In the case of ICCBased spaces, we try to
look up the alternate, and use that if it is a Device* space; otherwise
we guess based on the number of components.

[src/zfjpx.c src/sjpx.c]

2008-07-03T18:25:55.494578Z Ralph Giles

Clean up the state machine in s_jpxd_process.

DETAILS:

The state machine didn't always respect the calling conventions for
filter process routines, and could return '0' (more input needed) when
'last' was true (no more input exists).

Also, the jas_stream member of the filter state isn't currently
necessary and has been moved to s_jpxd_decode_image(). Originally
it was envisioned that the jas_stream could seek on the filter's
source ghostscript stream and so would need a longer lifetime than
we're currently using. This has now been simplified to a local variable.

[src/sjpx.c src/sjpx.h]

2008-07-03T18:25:54.527696Z Ralph Giles

Fix a hang in s_jpxd_process. Bug 688807.

DETAILS:

The problem file contains a CMYK JPX stream, which jasper does not
recognize, treating it as sRGB with an extra component. This causes
us to try an return 3-component data, and end up looping forever if
only a fraction of the expected pixel is available at the end of a
line.

Check for this event and return an error instead.

[src/sjpx.c]

2008-07-03T18:25:52.592596Z Ralph Giles

Remove trailing whitespace from the jpx stream implementation.

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

2008-07-03T13:03:11.896225Z Igor Melichev

Fix (clist writer) : Indeterminizm writing a degenerate curve.

DETAILS :

Bug 689911 Shifting raster data, Windows MSVC 8 non-debug build. 

In function cmd_put_path the variable 'prev' was wrongly localized 
in the loop body when need to save/pass data from the previous cycle.
It worked fine with debug build, because the compiler 
always commits variables to RAM for debug purpose. 
With release build the variable 'prev' never changes 
because formally speaking the program never uses its value
after it is initialized.

The bug persists since the repository was created on March 9 2000.
The old behavior may be indeterministic.

With MSVC8 the effect is occasionaly visible when a degenerate curve
{x y x y x y x y} is written into clist. 
See the simplified test case attached to the bug report.
 

[src/gxclpath.c]

2008-07-01T10:22:25.835951Z Igor Melichev

Fix (clist writer) : The maximal compositor command size was wrong.

DETAILS :

Bug 689927 "rangecheck in c_pdf14trans_write() causing 'unregistered' error". 

The bug was introduced in revision 8587.
See comments in code.
Thanks to Ray and Marcos for participation.
 

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

2008-06-30T23:56:04.281753Z Ralph Giles

Document the output filename behavior of ps2pdf in the manpage.
Bug 689920.

[man/ps2pdf.1]

2008-06-30T18:15:51.663545Z Ralph Giles

Add a missing header dependency.

[src/lib.mak]

2008-06-30T00:05:40.080596Z Alex Cherepanov

Add one more way to store data of the reusable stream: an array of strings.
Read the input stream into an array of strings during reusable stream
construction and use the array directly as a data storage.
Bug 689476, customer 190.

[src/int.mak src/gxshade.c lib/gs_frsd.ps src/zfrsd.c]

2008-06-28T14:53:32.570212Z Alex Cherepanov

Make /?dblacute and /?hungarumlaut glyph names equivalent in Type 1 fonts.
Add a missing glyph when the font is loaded if another glyph is defined.
Bug 689014, customer 580.

[lib/gs_type1.ps]

2008-06-26T19:17:37.366443Z Alex Cherepanov

Use extended name table by default and adjust the settings to have
up to 1M names of up to 1K characters long. Bug 689913.

[src/inamedef.h src/inameidx.h src/inamestr.h]

2008-06-25T16:18:57.687888Z Marcos H. Woehrmann

Fixed compile for Linux.

[contrib/opvp/gdevopvp.c]

2008-06-24T14:16:29.258940Z Igor Melichev

Fix (graphics) : Clean image enumerator before releasing it.

DETAILS :

Bug 688845 "Segmentation Fault on EPS 2 PDF conversion", comment #38.

Adobe Illustrator creates a Postscript document, 
in which an image data procedure executes 'save',
and the corresponding 'restore' appears after the image end.
DCue to that the image enumerator is freed at a higher save level than
it was allocated, so that gs_free_object works idle. 
Nevertheless pointers must not in the structure,
because they may point to blocks already released
by the client's subclass method for end_image.
Leaving them uncleaned caused a real crash in the garbager - see bug 688845.

The patch defines the new function gs_image_free_enum,
which is intendend for a safe releasing of an image enumerator
from Postscript interpreter.
It cleans the entire subclassed enumerator,
including all possible pointers created by subclasses.
All end_image implementations,
which may be called from Postscript interpreter,
must call this function for releasing image enumerators.

The 'memory' pointer moved from subclasses to gx_image_enum_common.
We believe that in the old code all subclasses define and initialize it.

Working on this patch we suspected memory leaks 
from image enumerators with some devices.
Particularly we suspect that subclasses if gx_device_vector
(pdfwrite, ps2write, etc.) never release image enumerators (not sure).
This patch does not do any attempt to re[pair such leaks, 
because we want the new code doesn't
change the behavour too much in order to simplify the testing.
A work on leaks to be done separately.

[src/gxiparam.h src/gxidata.c src/gsimage.h src/gdevvec.c src/gximage.h src/gximag3x.c src/gdevplnx.c src/devs.mak src/gdevvec.h src/gdevpdfi.c src/gxclimag.c src/lib.mak src/gdevpx.c src/gdevtrac.c src/gdevbbox.c src/gximage1.c src/gximage3.c]

2008-06-22T06:43:28.997699Z Ralph Giles

Rename the svg device to svgwrite to avoid conflict with the SVG interpreter.

The device is still selected as -sDEVICE=svg, just the name used internally
has been changed.

[src/Makefile.in src/gdevsvg.c src/devs.mak]

2008-06-21T14:06:00.424638Z Igor Melichev

Fix (TT interpreter) : A work around a wrong maxPoints.

DETAILS :

Bug 689907 "problem reading PDF: Failed to interpret TT instructions in font 80000001".

The test csae embeds a TT font subset with an incorrect maxPoints.
This is a simple work around that.
 

[src/ttobjs.c]

2008-06-16T16:12:37.522247Z Marcos H. Woehrmann

Updated to latest versions of files from ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/aj16.tar.Z

Closes bug 689735.

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

2008-06-11T16:24:24.671679Z Michael Vrhel

Undoing change introduced in rev 8794.  This change will need to occur after Bug 689889 is handled.   rev 8749 introduced 37 differences in the regression.  

[src/simscale.c]

2008-06-10T20:37:05.090668Z Michael Vrhel

For bug 689888.  This fixes the hang in the while loop.  If end of file occurs during the reading of the stream it is passed along by the filter.  However, proper output does not occur due to a different issue.  Another bug was opened related to this postscript noncompliance of string reading reuse in imaging operators.  See 689889.  

[src/simscale.c]

2008-06-09T23:02:50.347013Z Ralph Giles

Add a modified version of the clusterpush script from the ghostpcl tree.

[toolbin/clusterpush.sh]

2008-06-09T13:46:08.406410Z Alex Cherepanov

Use a dictionary (instead of an array) to represent cmap table in
a TrueType font because the array cannot accept fonts that have both
0x0 and 0xFFFF codes. Bug 689136, customer 870.

[src/icid.h src/zfcid1.c lib/gs_ttf.ps src/zcid.c]

2008-06-09T07:33:57.606022Z Igor Melichev

Fix (stroking) : Prevent unpainted gaps between neighbour strokes that could appear due to stroke adjustment.

DETAILS :

Bug 687974 "pdf file has banding with ghostscript but not with acrobat". 

The test case includes a gradient, which is represented
as a set of paralel strokes. Due to stroke widths equals to fractional pixels, 
stroke adjustment shifts some of them so that
an unpainted gap appears between strokes and the gradient looks striped.
Note the test document is created with Quark Express 4.11 .

This patch implements a hewristic recognizer for parallel contacting strokes
and suppresses stroke adjustment for them. See comments in code 
for more details.

Note that the recognizer data are associated with a device but they
are not a device property. We store them in a device structure because
we haven't got an associated structure in the graphic state,
and we don't want to introduce one now against extra complexity
with memory management. Also the recognizer code
Appears to be distributed along multiple functions and we would like
to apply a better incapsulation. Nevertheless the encapsulation
would cause CPU time expense for multiple small function calls
unless we create new macros. So commonly we're unhappy of
this code but we don't see a better solution.

Also note that the recognizer data is copied from/to clipper
device when the stroking algorithm installs and deinstalls a clipper.
So the data actually is not a property of a device.
Also they're not a part of graphic state because they must live
across gsave/grestore (the test case requires so). 
 

[src/gsimage.c src/gstext.c src/gxdevice.h src/gdevbit.c src/gspaint.c src/gxclip.c src/gxstroke.c src/gxdevcli.h]

2008-06-05T21:52:58.268146Z Ralph Giles

Remove the executable property from the included fonts.

[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/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/NimbusSanL-BoldCondItal Resource/Font/NimbusMonL-BoldObli 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]

2008-06-05T00:26:20.566472Z Alex Cherepanov

Replace incorrect FontMatrix in CFF CIDFont with a most common value to
recover a PDF file that Acrobat 8 manages to shows correctly. Bug 688517.

[lib/gs_cidfn.ps]

2008-05-31T00:57:34.917939Z Alex Cherepanov

Add work-around for PDF files that misspell 'endobj' as 'endjobj'. Bug 689876.

[lib/pdf_base.ps]

2008-05-30T20:25:17.430208Z Alex Cherepanov

Dom't interpret ^D (0x04) as a self-delimeted character in PDF mode because
PDF doesn't need this hack. Bug 689875.

[src/iscan.c]

2008-05-28T21:52:03.844656Z Igor Melichev

Fix (True Type font loader) : Work around incorrect numGlyphs (continued).

DETAILS :

Bug 689516 "problem reading PDF: Failed to interpret TT instructions (ref 7814)".
Bug 689866 "Regression: with TrueType fonts (possibly related to loca); file Bug688467.ps" 

The last patch appears to cause a conflict with the revision 5707 change.
which introduced a hewristic for reapring fonts with unsorted loca.
When sortinmg the full loca (including glyphs behind numGlyps), the test cases
of bugs 688467 and 688461 cause overlapping glyphs,
so that the hewristic gives a wrong glyph length.

This patch improves the hewristic with checking the glyph length
obtained from the unsorted loca, and replaces it only if it looks incorrect.
f
which may need further adjustments.
 

[src/gstype42.c]

2008-05-28T18:16:26.144495Z Ralph Giles

Correct properties.

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

2008-05-28T16:04:01.772433Z Marcos H. Woehrmann

Changed crlf to lf.

[src/sidscale.h src/sidscale.c]

2008-05-28T02:38:35.559910Z Alex Cherepanov

Fix a typo introduced in the rev. 8146 that prevented running PDF files from
stdin. Bug 689847.

[lib/pdf_main.ps]

2008-05-28T00:27:23.734030Z Michael Vrhel

Fix to enable proper custom color callback when indexed images with ICC profiles are used.  Bug 689863.

[src/lib.mak src/gscolor2.h src/gxcie.h src/gsciemap.c src/gscolor2.c]

2008-05-27T20:12:08.164024Z Michael Vrhel

Addition of debug code to dump embedded ICC profiles for external analysis.  

[src/gsicc.c]

2008-05-27T17:07:40.221072Z Alex Cherepanov

Enable printafm to emit a comment with UniqueID, that may be of some use when
investigating versions of fonts used. Thanks to Michail Vidiassov for the
patch. Bug 688610.

[lib/printafm.ps]

2008-05-26T19:04:05.563476Z Ralph Giles

Work around broken JBIG2Decode streams created by several versions of
Xerox WorkCentre. Bugs 689841 and 689852.

In these streams, a segment data length field is written as -1
expecting the decoder to infer it from the length of the remaining
data.

[jbig2dec/jbig2_page.c]

2008-05-25T07:28:53.119264Z Igor Melichev

Fix : MSVC warnings.

DETAILS :

Removed an extra debug printing that prints an unutialized variable.
 

[src/gdevpx.c]

2008-05-25T07:23:38.027951Z Igor Melichev

Fix (True Type font loader) : Work around incorrect numGlyphs.

DETAILS :

Bug 689516 "problem reading PDF: Failed to interpret TT instructions (ref 7814)".

The bug report supplies a PDF document, which embeds a TT font
with a too small numGlyphs. The loca table contains more glyphs and 
they are referenced in a text. The font is incorrect, but Acrobat handles the document.

This patch checks whether there are glyphs behind numGlyphs and 
extends numGlyphs to cover them. Also improved error handling in ttfmain.c .

Besides that, now we print a warning about an incorrect numGlyphs
in release build. The olkd code did with debug buil only.
I believe that users need to know whether a font is broken, and that
its rendering is hewristic.
 

[src/gstype42.c src/ttfmain.c]

2008-05-25T05:45:15.665594Z Alex Cherepanov

Revert the rev. 8509 because it is not needed after rev. 8774 but interferes
with FONTPATH search and memory font resources. Bug 689637.

DETAILS:
Since embedded PDF fints are now not registered as resources, there's no
need to distinguish between disk and memory font resources. Embedded fonts
bypass resource machinery; non-embedded fonts are loaded by name.
 

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

2008-05-25T04:28:23.450067Z Alex Cherepanov

Continue the changes started by the rev. 8772. Remove one more definefont from
embedded TrueType font loader. Bug 689644, customer 243.

[lib/gs_ttf.ps]

2008-05-25T02:17:14.504731Z Alex Cherepanov

Change all shell scripts to treat a single dash '-' as a positional
parameter rather than an option. Bug 689846.

[lib/eps2eps lib/ps2ps lib/dumphint lib/ps2ps2 lib/dvipdf lib/pdfopt]

2008-05-23T05:05:20.013100Z Alex Cherepanov

Use embedded PDF fonts directly. Don't define them as resources and look them
up later by the name. Leave findfont operator for fetching non-embedded fonts
only, which are now unaffected by embedded fonts. Bugs 689510, 689514 from
customer 700.

DETAILS:
CIDFont resources should be handled in a similar way but this part
is not yet implemented.

[lib/pdf_font.ps lib/pdf_ops.ps]

2008-05-23T00:13:50.314402Z Ralph Giles

Implement sync_output as cairo_flush. Patch from Behdad Esfahbod.

[src/gdevcairo.c]

2008-05-22T18:06:22.983939Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued 4).

DETAILS :

The old code assumes that a pattern always fits into the clist writer buffer.
However ppmraw -r400 176-01.ps violates this assumption.
This patch implements a subdivision of a pattern into slices,
each of which is smaller than the buffer size.

1. The new function cmd_get_buffer_space retrives maximal available space
   in the clist writer buffer (gxclutil.c).

2. cmd_put_drawing_color now implements a cycle for slicing big patterns.
   Each slice writes to clist as a separate clist instruction (gxclpath.c).

3. gx_dc_pattern_write_raster drops the constraint that the pattern
   fits into a single buffer (gsptype1.c).

4. The clist interpreter is enhanced with composing a pattern from slices
   (gxclrast.c).

[src/gsptype1.c src/gxcldev.h src/gxclrast.c src/gxclpath.c src/gxclutil.c]

2008-05-22T09:52:18.876353Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued 3).

DETAILS :

Bug 689856 "Regression: 09-34.PS core dumps when banding".

Uninitialized fields in device color after restoring a pattern from clist.
Debugged with
..\..\gs-hd\bin\gswin32c.exe -IF:/AFPL/gs-hd/lib;f:\afpl\fonts -r300 -K1000000 -dMaxBitmap=10000 -dNOPAUSE -dBATCH -sDEVICE=pbmraw -sOutputFile=cur.ppm H:\AuxFiles\CET\09-34.PS

[src/gsptype1.c]

2008-05-21T19:46:53.581581Z Ray Johnston

Change parameters to gdev_prn_allocata_mesmory to explicit width and height to work
around a (suspected) bug in gdev_prn_allocate when new_width and new_height are 0
and the page has transparency. That issue will be adddressed separately.
Crash with multi-threaded rendering reported by customer #850.

[src/gxclthrd.c]

2008-05-21T19:46:47.112573Z Ralph Giles

In r8765 we concluded GS_IMAGE_MAX_PLANES was the same as
MAX_COMPONENTS. Make this change permanent by removing the
MAX_PLANES define entirely.

[src/gsimage.c src/zimage.c src/gxiparam.h src/gdevbbox.c src/gxidata.c src/gximage.c src/gsiparam.h src/gxclimag.c]

2008-05-21T19:46:43.711424Z Ralph Giles

Remove the lowercase "compatibility" versions of the GS_IMAGE_MAX_*
macros.

[src/zimage.c src/gdevtxtw.c src/gsimage.c src/gxiparam.h src/gxidata.c src/gximage.c src/dxmainc.c src/gdevpdtv.c src/gdevpdfb.h src/gdevpdtv.h src/macsystypes.h src/gdevmacttf.h src/gp_mac.h src/gxclimag.c src/iimage.h src/gxsamplp.h src/gdevmacxf.c src/gdevmac.c src/gsiparam.h src/gdevmac.h]

2008-05-21T19:05:31.529144Z Ray Johnston

Reduce the GS_IMAGE_MAX_PLANES to a sane number. The image cannot have more
planes than the number of CLIENT_COLORS we support (plus 1 for alpha).
This cures a stack overflow seen with the multi-threaded rendering on
Windows.

[src/gsiparam.h]

2008-05-21T18:27:42.905572Z Michael Vrhel

Fix for 689811.  Enables custom color callback when banding of images is occurs.

DETAILS:
This was a simple fix which puts the callback structure address into gslib_ctx instead of in the graphic state.  This fixes the customer's issue.  The postscript interface for custom color remains as it was with this commit.  Soon, in the future, we will be changing to a C API interface.  There does remain an issue with respect to object type tagging.  If high level images occur with banding, the object type is different than if there was no banding.  Opening a new bug in regard to this.

[src/gsnamecl.h src/gslibctx.c src/gxcmap.c src/iapi.c src/gslibctx.h src/gsncdummy.c src/gsciemap.c src/gscspace.c src/gsicc.c src/gscdevn.c src/gsnamecl.c src/gscie.c]

2008-05-21T18:13:13.037917Z Ralph Giles

Credit Behdad in the source.

[src/gdevcairo.c]

2008-05-21T13:42:08.542151Z Igor Melichev

Fix (Type 1 hinter) : The missed flex hewristic malfunctioned.

DETAILS :

Bug 689821 "SegFault in gxhintn.c".

The old code is buggy with a wrong index advance along a cyclic buffer range.

[src/gxhintn.c]

2008-05-21T10:12:14.199391Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued 2).

DETAILS :

Bug 689848 "C stack overflow on Windows and hang on linux 176-01.ps".

A patch from Ray, which eliminates an infinite recursion in the clist writer.
A further improvement is coming soon about noodling the big data 
while copying a pattern into a page clist.

[src/gxclutil.c]

2008-05-21T06:46:41.280250Z Ray Johnston

Ensure that the chunk wrapper is used on the non_gc allocator since doing GC
on chunks will be disastrous. This is protection only and causes no difference
since the only current client of the chunk wrapper is the multi-threaded clist
rendering which wraps non_gc_memory.

[src/gsmchunk.c]

2008-05-21T06:40:14.466289Z Ray Johnston

Upon one of our engineer's request, clean up the MSVC warning about use of an
uninitialized variable.

[src/gxclthrd.c src/gxclist.h src/gxclread.c]

2008-05-21T06:35:34.826889Z Ray Johnston

Add some missing information for the clist multi-threaded rendering files and
the chunk memory wrapper. This cleans up (som of) the nightly regression nags.

[doc/Develop.htm]

2008-05-21T01:37:08.729158Z Ralph Giles

Fix the autoconf build when libcairo isn't available.

The device properly disabled in r8752.

[src/configure.ac]

2008-05-21T01:26:49.215021Z Ralph Giles

Set properties on the new cairo device source file.

[src/gdevcairo.c]

2008-05-21T01:24:45.439819Z Ralph Giles

Whitespace cleanup. Also comment out the warning about setlogop; this
isn't important for most documents.

[src/gdevcairo.c]

2008-05-21T01:24:44.147836Z Ralph Giles

Don't compare a NULL extension string.

[src/gdevcairo.c]

2008-05-21T01:24:42.046903Z Ralph Giles

Rename the cairo device parameter CairoSurface to CairoOption.

Better handling of libcairo errors.

Add (untested) support for passing a libcairo context pointer
through the CairoContext device parameter for rendering to a
client drawable.

Details:

CairoSurface was renamed with the expectation that it will in
the future take additional options that might not be surface
specific. Also, the CairoSurface name was chosen with the idea
that a client could pass a pointer to an already allocated
cairo_surface_t, but it's just as easy to pass the result
of calling cairo_create() on such a surface as a context
pointer. Therefore we've added CairoContext and renamed the
old CairoSurface parameter to CairoOptions.

The new command line would be:

 gs -sDEVICE=cairo -sCairoOptions=ps -o - test.ps

to set the output format to ps.

[src/gdevcairo.c]

2008-05-21T01:24:40.923940Z Ralph Giles

Protect the use of pkg-config for libcairo.

[src/configure.ac]

2008-05-21T01:24:38.762206Z Ralph Giles

New 'cairo' output device using the libcairo graphics library.
Patch by Behdad Esfahbod.

Details:

This output device uses the LGPL cairo library to create file output in
a variety of formats. Currently supported are png, svg, pdf, ps, eps.

The output format can be specified with the CairoSurface device
parameter. If this parameter isn't set, the device will guess
based on the filename extension given in OutputFile. Thus, these
two command lines are equivalent:

gs -sDEVICE=cairo -sCairoSurface=svg -o tiger.svg examples/tiger.eps
gs -sDEVICE=cairo -o tiger.svg examples/tiger.eps

Other output formats are selected like so:

gs -sDEVICE=cairo -o tiger.png examples/tiger.eps
gs -sDEVICE=cairo -o tiger.pdf examples/tiger.eps
gs -sDEVICE=cairo -o tiger.ps examples/tiger.eps

Only vector drawing is implemented at this point; images and text are
handled by fallback and will not give compact results. The resolution
for rasterization is set by the -r parameter as usual.

[src/Makefile.in src/configure.ac src/gdevcairo.c src/devs.mak]

2008-05-20T20:34:52.772461Z Ray Johnston

Add double inclusion protection to cure nag from nightly regression.

[src/gsmchunk.h src/gxclthrd.h]

2008-05-20T16:18:40.306550Z Ray Johnston

Clean up properties to get rid of nightly regression warnings.

[src/gsmchunk.c src/gxclthrd.c src/gsmchunk.h src/gxclthrd.h src/gdevsvg.c]

2008-05-20T00:52:25.121469Z Alex Cherepanov

Consider Index object in CFF font as empty if the offset element size is
incorrect. Bug 689854, customer 580.

DETAILS:
The rationale behind this decision is that the index is, probably,
not used when it is malformed but the file survives in the wild.

[lib/gs_cff.ps]

2008-05-19T14:47:52.443966Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued).

DETAILS :

Bug 689807 "segfault with 09-34.PS".

The last patch for the subject appears incomplete.
This one allows to write and read null patterns.
Debugged with 09-34.PS .

[src/gsptype1.c]

2008-05-17T21:33:47.003946Z Alex Cherepanov

Permit opening of temporary files in the safe mode. Fix /invalidaccess
error during interpretation of PDF 1.7 file collections in the safe mode.
Bug 689847.

[lib/pdf_main.ps src/zfile.c]

2008-05-17T12:58:01.814886Z Alex Cherepanov

Ignore annotation appearance stream when it has a wrong type i.e. not a
dictionary. Bug 689839.

[lib/pdf_main.ps lib/pdf_base.ps lib/pdf_draw.ps]

2008-05-17T01:02:02.764582Z Alex Cherepanov

Replace various access techniques to PDF annotations with 'knownoget'
in preparation to fix the bug 689839.

[lib/pdf_draw.ps]

2008-05-16T23:34:14.372367Z Ralph Giles

Add support for linecap/join and miterlimit.

[src/gdevsvg.c]

2008-05-16T12:48:24.645580Z Alex Cherepanov

Use PDFScanRules to scan ToUnicode CMap. Fix a case where CMap stream has
a name starting with 2 slashes that should not be parsed as an immediately
evaluated name. Bug 689642, customer 870.

[lib/pdf_font.ps lib/pdf_base.ps]

2008-05-16T00:05:42.149140Z Ralph Giles

Accumulate imaging state changes and write a new group only when
drawing. Add support for the linewidth parameter. We're pretty
close to properly handling tiger and other vector-only files.

[src/gdevsvg.c]

2008-05-16T00:05:41.073469Z Ralph Giles

Correct stroke and fill attribute overrides based on the path type.

Also includes some whitespace cleanup.

[src/gdevsvg.c]

2008-05-16T00:05:40.066267Z Ralph Giles

Store clipping rectangles as a clip path and ignore other non-drawing
paths.

[src/gdevsvg.c]

2008-05-15T21:24:13.840635Z Ralph Giles

Set the document size and scale based on the page size and resolution
from the device parameters.

[src/gdevsvg.c]

2008-05-15T21:24:12.705572Z Ralph Giles

Return proper negative error codes on allocation failure.

Also some minor formatting.

[src/gdevsvg.c]

2008-05-15T21:24:11.342484Z Ralph Giles

Be explicit about clearing the current fill or stroke color when
none is set.

[src/gdevsvg.c]

2008-05-15T16:17:48.102316Z Michael Vrhel

Fix for previous commit.  I had the wrong version number test in the define.

[jbig2dec/config_win32.h]

2008-05-15T16:12:17.999197Z Michael Vrhel

Minor change in JBIG configuration file related to using Visual Studio Version 9 (2008).  stdio.h has a definition for vsnprintf which conflicts with the define in config_win32.h

[jbig2dec/config_win32.h]

2008-05-15T00:00:24.616940Z Marcos H. Woehrmann

Improve white-on-mask drawing mode.

Details:

This patch is provided by Hin-Tak (see bug 688372); his comments:

This is a patch which I have created, to make the pxlmono/pxlcolor driver
bebaves much better in the white-on-mask situation, without breaking
normal drawing.

I haven't quite work out all the details nor understand the
reverse-mask-draw code properly yet, but this patch improves the situation
a great deal, to the point all the icons are shown correctly except for
having its background draw solid white rather than transparent


[src/gdevpx.c]

2008-05-14T23:49:09.954483Z Marcos H. Woehrmann


Add support to pxlcolor and pxlmono for 24 bpp images.

Details:

Previous to this revision the pxlcolor and pxlmono devices would revert
to using gx_default_begin_image() when bits_per_pixel==24, resulting
in very large images.  Now the image data is written directly into the
pxl stream.  In the case of pxlmono the image is converted to 8 bpp via
the lum_*_weight values from gxlum.h.


[src/gdevpx.c]

2008-05-13T19:52:08.912983Z Ralph Giles

Fix an incorrect curveto coordinate.

[src/gdevsvg.c]

2008-05-13T18:47:23.939753Z Ralph Giles

Disable drawing in the SVG output device after the first output_page call.

Even for single-page output we receive an erasepage fill after the showpage
from gdevvec, which overwrites whatever we've drawn. This should be avoided
in a more sophisticated way (ideally in the superclass) but this method is
helpful for current development.

[src/gdevsvg.c]

2008-05-13T18:47:23.279847Z Ralph Giles

Support setting stroke and fill colors.

[src/gdevsvg.c]

2008-05-13T18:47:21.967012Z Ralph Giles

Import the current state of the svg driver. Doesn't work.

[src/Makefile.in src/gdevsvg.c src/devs.mak]

2008-05-13T03:58:10.005759Z Alex Cherepanov

Reduce generation of garbage and the time spent on garbage collection by
placing gstate into the 2nd element of the patterm implementation array
in Adobe compatibility mode only. Ghostscript doesn't use this gstate
at all. Bug 689488.

[lib/gs_lev2.ps src/zmisc.c]

2008-05-11T17:00:17.181464Z Alex Cherepanov

Fix a bug that leaves a junk value on the stack for every empty row on the
page during execution of a redefined showpage. Bug 689832.

DETAILS:
The bug was introduced in rev. 2602 and stayed undetected for a while because
most files don't depend on the contents of the operand stack after executing
showpage.

[lib/ps2epsi.ps]

2008-05-10T22:02:03.546959Z Alex Cherepanov

Ignore OutputIntent attribute if it is not an array; recover a broken PDF file.
Bug 689831.

[lib/pdf_main.ps]

2008-05-09T16:44:54.615805Z Ray Johnston

Fix missing dependency that caused builds that included the 'bmpa' devices
to fail because the locking memory code wasn't included. Currently PCL
builds still had the bmpa devices included, so they failed.

[src/lib.mak]

2008-05-09T14:00:44.027651Z Ralph Giles

uncodes 33 and 34 repeat a zero code length symbol id, not the previous
symbol like runcode 32. Bug 689824.

Thanks to Justin Greer for the fix.

[jbig2dec/config.h jbig2dec/configure jbig2dec/jbig2_text.c]

2008-05-09T04:12:01.814716Z Alex Cherepanov

Reject incorrect ICC profile that has 0 offset in one of the tags
and use alternate color space. Bug 689830.

[icclib/icc.c]

2008-05-09T02:18:14.475665Z Ray Johnston

This is the "final" merge of the mtrender (multi-threaded clist rendering)
branch into the trunk. The default behavior is still the same, i.e., the
clist rendering is done in the same thread as the parsing (main thread).

The 'gsmalloc' memory allocator now ALWAYS uses a mutex to lock accesses
in case it is used by a multi-threaded client. This was determined to
result is less than 1% performance hit on a single threaded client.

Refer to the log messages on the mtrender branch for details on the
design of the multi-threaded clist rendering, but the summary is that
-dNumRenderingThreads=# (default 0) determines the number of background
threads REQUESTED for rendering bands. If the platform doesn't support
threads, or if there is an error starting the threads from the clist_
get_bits_rectangle_mt hook, single threaded rendering will be used.

The number of threads may be less than the requested number if the
number of bands is less than the request, or if there is an error
setting up threads (as many as can be created, up to the request will
be used). The -Z: debug switch emits status messages indicating how
many threads are requested (-dNumRenderingThreads) and the number that
is actually used.

Many files show little if any improvement with multi-threaded clist
rendering since they are dominated by the clist writing time, or by
the time required to write the output. No files seen to date show a
performance hit greater than aobut 3%. Setting NumRenderingThreads
to a count higher than the number of CPU cores available does not
seem to help or hurt much, but there is overhead (per page) with
starting threads and allocating band buffers, so a very large count
is not productive.

The best performance seen on an Intel Core 2 Duo system, on a
particular file is about a 75% performance improvement (completing
the page in 57% of the single threaded time). This time did not
include writing a file (output to /dev/null).

In order to prevent memory mutex (locking) contention from slowing
down multi-threaded clist rendering, each thread uses a 'chunk'
wrapper on NON-GC the non-gc memory allocator. Each chunk allocator
is thread-safe/instantiated, so the locking only occurs on chunk
allocations to the wrapped (target) memory allocator.

The 'BAND_LIST_STORAGE=mmeory' option has been supplemented to allow
multiple concurrent threads to read the clist 'memfile'.

The "autoconf" files (configure.ac and Makefile.in) have been improved
to hook the 'posix' pthreads if available, so linux and Mac OS/X will
be able to support the multi-threaded clist rendering.

[src/gxclist.c src/gsmemlok.c src/gsmchunk.c src/gxclthrd.c src/gxclist.h src/configure.ac src/gsmchunk.h src/gxclthrd.h src/gxclread.c src/lib.mak src/gxclmem.c src/gxclmem.h src/gsmalloc.c src/Makefile.in src/gdevprn.c src/gsmalloc.h src/gdevprn.h]

2008-05-08T21:47:07.355557Z Ray Johnston

Use 'realtime' instead of 'usertime' for -Z: timing information. On some
systems (Windows) these are equivalent, but on linux, 'usertime' is the
time for the current thread which interferes with timing collection on
different threads (multi-threaded rendering did not include any time for
the threads). INCOMPATIBLE CHANGE, but this is only debug info.

[src/imain.c]

2008-05-08T21:28:30.163536Z Ray Johnston

Allow some compile time constants that affect performance to be set as
/D compiler flags (via XCFLAGS makefile macro).

MAX_BITMAP_PATTERN_SIZE controls when the clist pattern accumulator is used,
and on machines with a decent amount of RAM, the default of 1 Mb is too
small and causes the slower clist method to be used too often. Setting this
to 32 Mb is probably better on hosts.

The GS_CLIENT_COLOR_MAX_COMPONENTS default of 252 is needed for Adobe CPSI
compatibility and for RIPS that want to use a large number of DeviceN
colorants, but this increases the size of some allocations and slows down
performance and is much too large for printers. Setting this to 6 or 8 is
probably plenty.

[src/gxpcmap.c src/gsccolor.h]

2008-05-08T20:09:32.433652Z Ray Johnston

Fix MSVC warning -- mismatched type.

[src/zchar42.c]

2008-05-08T19:56:33.932490Z Ray Johnston

Fix gcc warnings, unused variables and type mismatch, implicit declaration.

[src/gximask.c src/gp_unix.c]

2008-05-08T19:35:26.683268Z Ray Johnston

Clean up gcc compiler warnings for unused 'st' and no prototype for
gx_pattern_cache_free (from gxpcolor.h).

[src/gxclrast.c]

2008-05-08T19:10:40.329127Z Ray Johnston

Add support for recursive mutex on posix. Multiple threads that perform
'locking' before calling an object's finalize need this to prevent
deadlock if the finalize calls 'free'. This protection is standard on
Windows, but PTHREAD_MUTEX_RECURSIVE attribute is not available on
many systems.

The method, using pthread_self and pthread_equal, was extracted from
a web information page and tested on linux.

NB: The multi-threaded clist rendering no longer needs this since
the 'chunk' memory wrapper calls the 'finalize' function without
locking, so the deadlock no longer occurs.

[src/gp_psync.c]

2008-05-08T18:56:10.922303Z Ray Johnston

Fix memory leak observed with DEBUG=1 build on mtrender branch. The
'levels' and 'bit_data' of halftones were being leaked when halftones
were set by the clist reader.

DETAILS:

Since the 'dht.rc' was filled with 0's, the rc.memory would cause the
gx_imager_dev_ht_install to copy the order (mem_diff would be true).
The gx_ht_copy_ht_order would make a copy, but the one passed in
was never freed. Since the 'src' component information was cleared
during the install, gx_ht_read_and_install needs to save a copy of
the components so that the orders can be released.

[src/gxdhtserial.c]

2008-05-08T18:40:31.637800Z Ray Johnston

Fix compiler warning due to missing prototype for strncmp.

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

2008-05-07T21:07:53.236295Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation.

DETAILS :

Bug 689579 "Ghostscript generates a very, very large temporary file".

The old code converts pattern fills into lots of constant color rectangles while writing to clist.
The new code writes pattern data to clist and apply pattern during the clist playback.
So here we complete the change started in revision 8655.

New functions gx_dc_pattern_write_raster, gx_dc_pattern_read_raster
implement color serialization for raster patterns.
The old function gx_dc_pattern_write got minor changes about buffer localization.

Minor chabge (gxclimag.c, gxclpath.c, gxclrect.c) : Propagated error codes.

Also fixed a bug occasionally found in gxclrast.c . 
It caused a crash in some unusual conditions.

[src/gsptype1.c src/gxclrast.c src/gxclpath.c src/gxclimag.c src/gxclrect.c]

2008-05-07T21:02:16.625138Z Igor Melichev

Fix (graphics) : Wrong pattern phase when pattern applies to a band with non-zero origin.

DETAILS :

The old code computes pattern phase modulo rep_width, rep_height.
It appears wrong when pattern step is much bigger than the pattern bbox.
Really the bbox determines the painting area as rep_width, rep_height,
but the phase to be computed modulo pattern step.
Besides that, the old code aplies a wrong sign, which is oposite to a band offset.

This bug has no effect with Postscript interpreter, because 
currently patterns never apply after banding,
but it will change with the next patch.
With no banding the phase is always zero.

Other interpreters may need additional improvements
(we suspect they are bug-to-bug compatible).

[src/gsptype1.c]

2008-05-07T09:15:27.593615Z Igor Melichev

Fix (graphics) : Imprecise pattern phase with negative cell origins (continued).

DETAILS :

The old code inaccurately converts floats to integers.
The problem here is that (int)-0.13 == 0 but the math wants -1.
It causes a 1 pixel bias with negative coordinates when argument is not integer.
This isn't a first time when we fix a bug of this kind,
and likely this one is not the last.

This change is important for bug 689579.

Debugged with the following commands :

gswin32c.exe -dMaxBitmap=22000000  -r300 -dNOPAUSE -dBATCH-sDEVICE=ppmraw -sOutputFile=cur-b.ppm 245-07.ps
gswin32c.exe -dMaxBitmap=100000000 -r300 -dNOPAUSE -dBATCH-sDEVICE=ppmraw -sOutputFile=cur-n.ppm 245-07.ps

They must render same raster, but they didn't.

[src/gxp1fill.c]

2008-05-07T06:25:34.508384Z Alex Cherepanov

Repait yet another broken PDF file that abbreviates /Indexed to /I
in the color space array. Bug 689815.

[lib/pdf_draw.ps]

2008-05-06T20:59:54.208603Z Alex Cherepanov

Fix and simplify implementation of operator Q. Collecting the path with
the current ctm and re-playing it with the restored ctm transforms the
path exactly as PDF needs. Bug 689812.

[lib/pdf_ops.ps]

2008-05-05T19:51:17.293996Z Ray Johnston

Eliminate leaks caused by lost 'maskbuf' elements. Only the uppermost
maskbuf is (currently) used by the pop_transparency_group that applies
the mask, but the chain of maskbuf->maskbuf elements was never freed.
This also improves performance (at least for the test case of bug
689534). Customer #870.

[src/gdevp14.c]

2008-05-02T20:13:50.255816Z Igor Melichev

Fix (graphics) : Imprecise pattern phase with negative cell origins.

DETAILS :

The old code inaccurately converts floats to integers.
The problem here is that (int)-0.13 == 0 but the math wants -1.
It causes a 1 pixel bias with negative coordinates when argument is not integer.
This isn't a first time when we fix a bug of this kind,
and likely this one is not the last.

This change is important for bug 689579.
Here is a test for debugging it :

<<
  /PaintType 1
  /PatternType 1
  /TilingType 1
  /BBox [0 0 60 60]
  /XStep 40
  /YStep 60
  /star
  { gsave
    0 12 moveto
    4
    { 144 rotate
      0 12 lineto
    } repeat
    closepath
    fill
    grestore
  }
  /PaintProc
  { begin
    1 0 0 setrgbcolor
    15 15 translate
    star
    0 0 1 setrgbcolor
    30 30 translate
    star
    0 1 0 setrgbcolor
    -30 0 translate
    star
    30 -30 translate
    star
    end
    %.break
  } 
>>
[1 0 0 1 0 0]
makepattern
/Star4 exch def

/Pattern setcolorspace
Star4 setcolor

clippath pathbbox 
exch pop 30 exch
4 copy = = = =
rectfill

showpage

The old code gives different rasters for this test while banded and unbanded rendering.

[src/gxp1fill.c]

2008-05-02T08:07:50.475340Z Ken Sharp

The revision 8621 which reinstated the comments, and updated encs2c.ps to generate them,
placed the Id line in the wrong position relative to the licence and summary comments.

[toolbin/encs2c.ps src/gscedata.h src/gdevpdtv.c src/gdevpdtv.h src/gscedata.c]

2008-05-02T02:19:57.012115Z Ralph Giles

Remove the testing instructions and file index.

This was mostly obsolete, and the automated tests are fairly complete now.

[doc/Testing.htm doc/Readme.htm toolbin/tests/check_docrefs.py]

2008-05-02T01:42:14.506521Z Ralph Giles

Fix various code policy warnings.

[toolbin/msvcxml.bat src/gdevdjet.c src/aes.h toolbin/memory.py src/aes.c]

2008-04-30T19:06:59.803995Z Ralph Giles

Fix some warnings.

[src/gsncdummy.c]

2008-04-30T04:51:02.115275Z Michael Vrhel

Fixed issue with NULL pointer in gsncdummy.c when ICC color space was used in custom color callback.  Also, made the object based coloring an option define and fixed minor header issues.

[src/lib.mak src/gxcmap.c src/gsncdummy.c src/gscspace.c src/gscdevn.c src/gsnamecl.c]

2008-04-30T01:35:18.247997Z Ralph Giles

Fix some warnings.

[src/gdevp14.c]

2008-04-29T06:34:17.581619Z Michael Vrhel

Fix for bug 689806 which was introduced when fixing bug 689803.  The current bug was related to a CIELAB image with a colorspace ICC profile (LAB to LAB).  The image data was incorrectly being normalized between 0 and 1 (float). It is now properly normalized to the range of the CIELAB ICC space.  There still exists an issue with this file as absolute colorimetry should be used.  This is the source of the current difference between AR and GS.  However, the image is no longer black now but should match the GS result prior to rev 8664.

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

2008-04-29T00:31:25.778368Z Alex Cherepanov

Make pf2afm utility friendlier to Windows users: check for .pfa or .pfb
extensions case-insensitively and accept backslash as a path separator.
Bug 689804.

[lib/pf2afm.ps]

2008-04-28T17:48:26.844493Z Alex Cherepanov

Refine calculation of di member of a trap_line structure to avoid integer
overflow when the source operands are big. Bug 689448.

[src/gdevddrw.c]

2008-04-28T16:26:35.071571Z Ralph Giles

Fix a minor header dependency skew.

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

2008-04-28T06:47:28.650051Z Michael Vrhel

Undo accidental commitment of ENABLE_CUSTOM_COLOR_CALLBACK (has callback) code.

[src/gsicc.c]

2008-04-28T05:20:54.026239Z Alex Cherepanov

Implement spacial handling of transfer functions during Gray to CMYK
conversion: ignore transfer functions for non-black components. Bug 688360.

DETAILS:
On this topic, section 7.3 of PRLM-3rd (page 494) says:
"Note: When the current color space is DeviceGray and the output device's
native color space is DeviceCMYK, the interpreter uses only the gray transfer 
function. ... This special case exists for compatibility with existing
applications." There is a similar comment in section 6.3 of the PDF 1.6
spec. (page 456).

[src/lib.mak src/gxcmap.c src/gxcspace.h src/gscspace.c src/gxdevcli.h]

2008-04-27T15:21:10.051210Z Alex Cherepanov

Check the error code early. Fix a SEGV in PDF file with invalid ICC profile
that was introduced by the rev. 8664.

[src/zicc.c]

2008-04-26T04:35:56.962801Z Michael Vrhel

Fix for bug#689803.  Set bounds correctly when input data is LAB and color also includes a colorspace source profile (e.g. LAB to LAB).  

[src/int.mak src/gsicc.c src/zicc.c]

2008-04-23T14:06:11.166309Z Igor Melichev

Fix (graphics) : Convert imagemask into a clipping path when painting a big pattern.

DETAILS :

Bug 689440 "PostScript file generates infinitely large temp file".

In the past we implemented a conversion of imagemask intoi a clipping path 
for a faster painting a shading color. Now we do same for big type 1 patterns.

1. Enhanced the condition in gximask.c for passing big patterns.

2. In gximask.c filter out degenerate rectangles, 
   which can't be painted with gx_device_color_fill_rectangle.

3. Set a pure black color in gsimage.c, 
   because patterns can't convert with gx_device_black.

4. In gxacpath.c added the default copy_mono method 
   to the clip list accumulator device in order to handle 
   imagemask with the pure color set by (3).

5. In gximask.c added a proper setup of device width and height
   to clip list accummulator, because gx_default_copy_mono needs them.

6. In gximask.c gx_device_retain is now called on errors.
   The old code does not call it, and we think it caused memory leaks
   in some rare cases.

This patch changes the behavior with shadings, because the old code paints
imagemask with the shading color to clip list accummulator.
The new code does with pure black, so that now the clipping is not
restricted with the shading area or the shading BBox.
But we believe that the final result should be same 
and the performance should be some faster.

Note we keep the call to gx_dc_pattern2_clip_with_bbox_simple
in gx_image_fill_masked_end rather now it is always idle.
Doing so for the case if this change will need undoing for shadings.

The new code doesn't use the writing of big patterns into clist,
which was done with recent revision 8655. 
That change appears unneccessary for this particular bug. 
However we want to keep it in HEAD branch because it may be useful 
for further impeovements when imagemask produces a too big clipping list.

This patch causes a minor raster difference with Bug688396.pdf .
Delaying it for better times.

[src/gsimage.c src/gxacpath.c src/gsptype1.h src/gximask.c]

2008-04-23T00:30:10.271302Z Alex Cherepanov

Since we always write a complete "classic" xref, the Trailer may need to be
adjusted: (1) remove keys that pertain to xref-streams and hybrid-xref PDFs;
(2) if it's a PDF stream, turn it into a PDF dict by removing keys used for
PDF streams (both standard and GS-specific), and the executable attribute.
Thanks to SaGS for the patch. Bug 688152.

[lib/pdfwrite.ps lib/pdfopt.ps]

2008-04-22T17:18:03.467843Z Ralph Giles

Set native line endings on gsnamecl. This should remedy patch-portability problems.

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

2008-04-21T14:53:38.640663Z Igor Melichev

Enhancement (graphics) : Delay applying big patterns until page clist interpretation.

DETAILS :

This is a preparation for fixing 
the bug 689440 "PostScript file generates infinitely large temp file".

The old code decomposes the imagemask into rectangles,
each of which decomposed the pattern color into a huge list of rectangles.
See more about the old code in Comment #11 of the bug 689440.
Now we delay the decomposition until the page clist playback.

This patch reduces the clist file size for the bug 689440
from 355GB to an acceptable size of 316Mb. A further shortening
is possible as explained in (5) below. But the rasterization time is still
unacceptably long - more than 48 hours. It will be improved
in a next step with converting imagemask with pattern color
into a painting of a pattern color with a mask clip device.

1. The old functions gx_dc_pattern_write, gx_dc_pattern_read actually 
are generic functions for multiple color types,
which simply return an error. Renamed them into 
gx_dc_cannot_write, gx_dc_cannot_read.

2. Implemented new gx_dc_pattern_write, gx_dc_pattern_read for clist-based patterns.
They copy pattern clist data to/from page clist. Currently this code
doesn't try to compress the data, but probably we'll need to do that.

3. Changed a condition in gxclimag.c to pass imagemask
with a clist-based pattern color to clist writer.
Also moved some checks to provide image matrix to be computed
when the new condition is true.

4. Added more functions into gxclist.c, gxclist.h for accessing 
data of a clist-based pattern.

5. gx_dc_pattern_read now constructs pattern cache and stores the
clist-based pattern "tile" to it. The clist reader releases the cache before exiting a band.
We will need an optimization agains redundant writing of patterns into page clist.
This necessary optimization to be done in a next step.

6. Propagated error codes in gxclread.c, gdevfax.c for easier debugging.

7. Improved debug printing in gxp1fill.c to designate
recursive calls to clist interpreter when a clist-based pattern
in interpreted while a page clist playback.

8. Added new accessors into gxpcmap.c, which are needed 
to access pattern cache while a page clist interpretation.

9. Updated dependencies in makefiles. 

10. Fixed the dependenco of gxdcolor.c on gxdevcli_h, which was missed before this change.

11. Added the pattern color type into the list in gxdcolor.c,
because now we need to write it into clist. An old comment
reads that it was not included against unuseful reference to 
pattern stuff in a Postscript Language Level 1 build.
The reference now appears, and this is unfortunate.
We think that level 1 builds are not important in nowadays.
On necessity it may be improved in a separate change.

[src/gsptype1.c src/lib.mak src/gsptype2.c src/gxclist.c src/gxpcmap.c src/gsptype1.h src/gxdcolor.c src/gxclist.h src/gxpcolor.h src/gdevfax.c src/gxdcolor.h src/gxp1fill.c src/gxclrast.c src/gxclread.c src/gxclimag.c]

2008-04-21T11:58:27.801424Z Russell Lang

Change the name of a utility used to build Windows distribution so it doesn't 
get treated as a setup program by Windows Vista.
Change reference to obsolete doc/Public.htm to doc/COPYING.
Allow makefile to recognise a later patch of the Microsoft Visual Studio 2005 
make utility.

[src/winint.mak src/msvc32.mak]

2008-04-20T23:40:49.333141Z Alex Cherepanov

Ignore DSC comments in nested EPS files and data blocks. Thanks to
William Bader for the patch. Bug 689791.

RIFFERENCES:
None

[src/zdscpars.c]

2008-04-20T04:51:21.386273Z Alex Cherepanov

Skip bogus endobj operators inside the object stream.
Bug 689795, customer 870.

RIFFERENCES:
None

[lib/pdf_base.ps]

2008-04-19T18:26:31.622080Z Ray Johnston

Fix a problem when the default transfer function of the target printer
is not in global space. Seen with Konica Minolta (QMS PostScript).
Fixes 'invalidaccess' error caused by attempting to store a 'local'
currentcolortransfer into a 'global' array. NB: The 'cp2g' will then
convert the array to global which is needed to store into InitialExtGState.

[lib/opdfread.ps]

2008-04-19T18:18:34.484562Z Ray Johnston

Add diagnostic information for start of rendering (Outputpage start) so that
parsing as well as rendering time can be observed with -Z: (gs_debug[':'])

[src/zdevice.c]

2008-04-19T12:48:15.825215Z Alex Cherepanov

Fix PDF transmuting utilities. Remove '#' from the list of characters that
may occur in PDF names unescaped. Bug 689770.

[lib/pdfwrite.ps]

2008-04-19T04:49:20.031557Z Alex Cherepanov

Add recognition of abbreviated filter names to the PDF inflation utility.

[toolbin/pdfinflt.ps]

2008-04-19T03:43:21.791168Z Alex Cherepanov

Implement loading of OpenType CFF font as a CIDFont resource in PDF reader.
Bug 689763, customers 531, 850.

DETAILS:
PDF can use OpenType font with ordinary CFF data as a CIDFont. Such a font is
referenced by /CIDFontType2 and may have /CIDToGIDMap table. The following
changes have been done to support this usage.

- A flag that forces CIDFont generation was added to CFF font loader.
- When the flag is on, CFF font is converted to a Type 9 CIDFont.
- The FontSet resource is returned by the value from the font loader
  because it can be of either Font or CIDFont type,
- Since CIDMap has no effect on CIDFont Type 9, CIDToGIDMap is interpreted
  by PDF reader to modify GlyphDirectory to the same effect.
- Unused CIDMap is no longer generated for CIDFontType2 objects that are not
  TrueType CIDFont resources.

[lib/pdf_font.ps lib/gs_cff.ps lib/pdf_ops.ps]

2008-04-17T17:40:05.253185Z Ralph Giles

Use -O0 with the autoconf debug build instead of -O which seems to
hide some symbols.

[src/Makefile.in]

2008-04-17T17:31:57.458743Z Ralph Giles

Allow the ENABLE_CUSTOM_COLOR_CALLBACK preprocessor macro to be set
from the compiler command line.

[src/gsnamecl.h]

2008-04-15T04:47:24.255743Z Alex Cherepanov

Repair broken CFF CIDFont stream generated by "Exstream Dialogue Version
6.2.004m (DBCS)". Bug 689753, customer 353.

DETAILS:
1. The CFF stream has a single Private DICT block but refers to it twice.
New version caches the DICT block that correspond to the Private stream.

2. The operands of ROS operator are too small and correspond to some random
values from the standard string table. The patch doesn't attempt to find
the right values nut converts the fetched names to strings to avoid a
typecheck error during resource handling.

[lib/gs_cff.ps]

2008-04-14T22:57:22.422088Z Michael Vrhel

Fixed Colorspace enumeration order for debug printing.

[src/gscspace.h]

2008-04-10T23:43:36.714953Z Ralph Giles

Increase the static command and path buffers in echogs to deal with
longer build paths. Bug 689788.

[src/echogs.c]

2008-04-10T22:08:20.215716Z Ralph Giles

Use the correct GEN directory references. Bug 689788.

[src/jbig2.mak src/jasper.mak]

2008-04-10T07:38:46.911876Z Ken Sharp

Fix (PDF interpreter): Improve omission of .notdef glyphs.

Details:
Bug #689757 "Extra square characters rendering PDF file".

Improvement to change 8217, makes the test for .notdef more
specific at Igor's suggestion.

Now matches exactly the string ".notdef" or strings beginning
".notdef~GS~" in order to include any .notdef modified by the
PDF interpreter when it appears multiple times in an Encoding.

[src/zchar42.c]

2008-04-10T05:43:43.466565Z Igor Melichev

Enhancement (graphics) : Generalize prototypes of color serialization methods for big color data.

DETAILS :

This is a preparation for fixing 
the bug 689440 "PostScript file generates infinitely large temp file".

The old serialization methods assume that color data can fit into a small buffer.
Now we want to drop this constraint to allow to write big patterns into clist.
See comment in code for details.

This change is algorithmically equivalent.
This patch adds a new argument to color serialization methods.
For a while the new actual parameter is always 0,
and the (untrivial) methods check for it.

[src/gsptype1.c src/gxwts.c src/gxcht.c src/gxdcolor.c src/gxdcolor.h src/gxclrast.c src/gxclpath.c src/gxht.c]

2008-04-09T15:28:45.087056Z Ken Sharp

Fix (PDF interpreter): Optionally omit rendering of /.notdef glyphs
from TrueType fonts.

Details:
Bug #689757 "Extra square characters rendering PDF file".

When rendering glyphs in a TrueType font, and the glyph is not present
in the font, GS (correctly) draws the /.notdef glyph (or glyph ID 0)
instead. Under some conditions, however, Acrobat does not do so, but
does leave a 'gap' apparently corresponding to the width of the
original glyph (if a /Widths array is present), or the width of the
/.notdef glyph.

Exactly what causes Acrobat to do this is unclear. In the thread for
bug 687929 it was suggested that Acrobat was substituting a standard
font with a /.notdef defined as an empty glyph. However changing the
font name had no effect.

Using a pdfwrite-produced PDF file, if I remove the symbolic flag
from the font, and any direct reference to /.notdef in the Encoding
/Differences array, then Acrobat does not display the /.notdef 
glyph. However, starting with a Distiller-produced PDF file, and
either altering the font to symbolic, or adding a direct /.notdef
to the Encoding, or both, makes no difference, Acrobat still does
not render the /.notdef glyph.

The behaviour of Acrobat is probably technically incorrect, but
we need to attempt to render files similarly, if at all possible.
However, since the appearance of a /.notdef is usually indicative
of an error, this has been made optional.

We can't substitute a space glyph for the /.notdef as has been
suggested, because we can't guarantee the existence of a space glyph
(eg Arabic, which has no space) and can't guarantee that the space
makes no marks even if present.

However, we still want to apply the Width of the glyph, so that
spacing works out correctly, if we simply skip the /.notdef glyph
then words may collide, as in the case of the file for this bug.
This means we must run the glyph through the text routines, as the
width is applied there.

A new user parameter '/RenderTTNotdef' controls whether glyphs
named /.notdef in a TrueType font should be rendered or not. This
is also controlled by a systemdict parameter /RENDERTTNOTDEF. The
PDF interpreter will set the user parameter to the same value as
the systemdict parameter, allowing this to be controlled from the
GS command line.

The user parameter defaults to 'true' which renders TrueType /.notdef
glyphs (so that these are properly rendered in PostScript), the 
RENDERTTNOTDEF systemdict parameter defaults to 'false', which is
used by the PDF interpreter to set the user parameter, and therefore
disables rendering of TT /.notdef glyphs in PDF files.

[lib/pdf_main.ps src/icontext.c src/zchar42.c doc/Use.htm src/icstate.h src/zusparam.c lib/gs_init.ps]

2008-04-09T06:16:50.593621Z Alex Cherepanov

Avoid a spurious warning "CS/cs (setcolorspace) operand not a name".
Acept array values for /CS attribute. Bug 689738.

[lib/pdf_draw.ps]

2008-04-08T21:55:08.170308Z Ralph Giles

We no longer have any outstanding port requests. Bug 689745.

[doc/Projects.htm]

2008-04-06T21:42:34.379385Z Alex Cherepanov

Use operator .execn to keep the operand stack size and .pdfcount value
consistent during /BuildChar execution. Operator scn depends on the correct
value of .pdfcount. Bug 688796.

[lib/pdf_font.ps]

2008-04-06T07:53:33.800999Z Alex Cherepanov

Fix PDF empty stack count (pdfemptycount) in the tiling pattern. Operator
scn depends on the correct value of pdfemptycount. This bug was introduced
in the rev. 8308. Bug 689776.

[lib/pdf_draw.ps]

2008-04-04T11:30:17.034942Z Till Kamppeter

Added the new files of OpenPrinting Vector 1.0.

[contrib/opvp/opvp_0_2_0.h contrib/opvp/opvp.h]

2008-04-04T11:28:22.909246Z Till Kamppeter

Updated the OpenPrinting Vector driver interface ("opvp", "oprp") to version 1.0.

[contrib/opvp/opvp_media.def contrib/opvp/opvp_common.h contrib/opvp/gdevopvp.c]

2008-04-04T08:53:57.893326Z Ken Sharp

Fix (pdfwrite): Incorrect cmap aubtables written for 'non-symbolic' TrueType
 fonts, when PDF/A output is enabled.

Details:
Bug #689754 "Substituting .notdef for "german umlauts" when generating PDFA".

Normally when writing TrueType fonts GS emits 'symbolic' TrueType fonts, and
correctly outputs both a 1,0 and 3,0 cmap subtable (with appropriate character
offsets, see section 5.5.5 of recent PDF specs).

However, when PDF/A output is enabled, and the TT font to be output only
contains glyphs from the Adobe Latin set, and these are ordered in
accordance with that set, then we emit a 'non-symbolic' TT font. (For PDF/A
we do not emit 'symbolic' fonts, if the font is not 'non-symbolic' then we
write a CIDFont instead.)

However, when writing the non-symbolic font, we continued to write the same
cmap subtables. Acrobat does not use the 3,0 subtable with non-symbolic fonts,
and falls back to the Mac Roman (1,0) subtable instead. For many glyphs this
works correctly, but if the font is WinAnsi compliant, and the glyph is one
of those for which the character position differs between Mac and Windows,
then the glyph cannot be found by Acrobat.

By writing a 3,1 (Windows Unicode) cmap subtable we can ensure this does not
happen, as Acrobat will use this in preference to the 1,0 subtable.

(gdevpsf.h) Add a new TrueType writing control flag WRITE_TRUETYPE_UNICODE_CMAP
 This is used to control whether we write a 3,0 or 3,1 cmap subtable.

(gdevpdtb.c) When setting options for TrueType font writing, if we are
 writing PDF/A, then set the new flag so we get a 3,1 Unicode subtable.

(gdevpsft.c) Create new boilerplate for a type 6 Mac Roman subtable,
 followed by a type 4 Windows Unicode subtable. Create a new routine
 'write_unicode_cmap_6' which uses the new boilerplate to write this
 kind of subtable. In write_cmap, check if we have been asked to write a
 Unicode cmap subtable, and use the new routine if so. Do not bias the
 character codes if writing a Unicode table.

[src/gdevpdtb.c src/gdevpsft.c src/gdevpsf.h]

2008-04-04T08:39:33.625568Z Ken Sharp

Fix (pdfwrite): code tidy up.

Details:
Bug #689712 "macro expanded unnecessarily and undocumented .h file".

No functional changes, merely code reordering and tidying up.

(encs2c.ps) Modified to write the current license boilerplate and a
 small additional comment referring developers to this file should they
 wish to modify the generated files. Modify the output to gdevpdtv.c
 to #include gdevpdtv.h.

(gscedata.h)
(gscedata.c)
(gdevpdtv.c)
(gdevpdtv.h) Update with output from modified encs2c.ps

(gdevpdtf.h) Remove the 'gs_private_st_basic..' macro, thus preventing
  its unnecessary expansion and inclusion in several .c files.

(gdevpdtb.c) Move the macro 'gs_private_st_basic(st_pdf_base_font...'
  into this module, where it is actually used.

[toolbin/encs2c.ps src/gdevpdtb.c src/gscedata.h src/gdevpdtv.c src/gdevpdtf.h src/gdevpdtv.h src/gscedata.c]

2008-04-04T01:02:17.399302Z Ralph Giles

Add the rinkj driver to the default autoconf build under "ETS" devices.

It's not intended for production use, but this will help prevent
bit rot. Related to bug 689780.

[src/configure.ac]

2008-04-04T01:02:16.708266Z Ralph Giles

Minimal changes to gdevrinkj.c so that it compiles. As far as I can tell,
the version in source control has never worked.

[src/gdevrinkj.c]

2008-04-04T01:02:16.013247Z Ralph Giles

Include stdlib.h for malloc and free in the rinkj device. Bug 689780.

[src/rinkj/rinkj-byte-stream.c]

2008-04-01T00:28:17.665464Z Alex Cherepanov

Fix incorrect scanline length calculation in 1 bit/component images on pswrite
and epswrite devices. The bug was introduced in rev. 8233.
Bug 689771, customer 73.

[src/gdevps.c]

2008-03-31T23:53:28.505732Z Ralph Giles

Don't override the memory pointer set by the client when initializing 
the luratech jpx decoder.

[src/sjpx_luratech.c]

2008-03-31T23:08:41.231868Z Ralph Giles

Do not invoke the s_jpxd_template set_defaults method if it is null.
Fixes bug 689743, whose attachment segfaults with the luratech decoder
for which this method is not implemented.

[src/zfjpx.c]

2008-03-31T23:00:55.454967Z Igor Melichev

Fix (graphics) : Stroke width was wrong for short segments.

DETAILS :

Bug 689742 "Nearly missing dotted lines with anisotropic resolution".

Rather the bug title mentions anisotropic rendering, 
the problem appears with isotropic one as well.
The bottom of the problem is that the function width_is_thin
used the dash longitude to know its direction,
which gives an incorrect (zero) result 
for vertical segments of zero length.

That method became obsolete since revision 7706,
which intorduced the precise dash direction is a special data field.
Using it now for the right computation of the width.

[src/gxstroke.c]

2008-03-28T16:30:25.778081Z Igor Melichev

Fix (graphics) : rectfill applied a wrong path adjustment.

DETAILS :

Bug 689361 "Text has white stripes and missing parts at 100 dpi".

Ghostsctript applies path adjustment as an implementation of
"any part of pixel inside" filling rule. 
However it was wrong for rectfill :
the lower adjustment was too wide, causing extra pixels to paint
when the lower coordinate of the rectangle falls to pixel center.
Besides that, the X adjustment was applied to Y axis.

[src/gsdps1.c]

2008-03-28T06:36:49.751300Z Alex Cherepanov

Improve detection of transparency usage. Search for transparency featires in
the resource chain of annotattion appearance streams.
Bug 689764, customer 531.

[lib/pdf_main.ps]

2008-03-27T08:37:58.577822Z Ken Sharp

Fix (pdfwrite): endstream/endobj not always emitted PDF/A compliant.

Details:
Bug #689755 "Keywords endstream and endobj not always preceded by EOL when generating".

The PDF/A specification mandates that the endstream and endobj operators
are always preceded by an EOL character (in the spec, EOL = carriage return,
linefeed, or carriage return/linefeed pair). 

(gdevpdfb.c)
(gdevpdfu.c)
(gdevpdti.c) Ensure all endstream operators are preceded by a '\n' if we
 are producing PDF/A.
(gdevpdfo.c) Add '\n' to the end of array and dictionary objects in
 cos_array_write and cos_dict_write, if we are producing PDF/A. This
 ensures that endobj is always preceded by a EOL as other object types
 already conform.

[src/gdevpdfo.c src/gdevpdfb.c src/gdevpdfu.c src/gdevpdti.c]

2008-03-26T14:02:02.746186Z Ken Sharp

Fix (vector device): Operation order could result in failure to
apply clipping.

Details:
Bug #689469 "Incorrect clipping operation in vector output".

From the patch supplied by Osamu Mihara. In gdev_vector_stroke_path and
gdev_vector_fill_path, clipping was performed after a number of other
operations. If these failed, the clipping was not applied, apparently
causing problems for some devices (eg OpenPrinting Vector Printer).

(gdevvec.c) Execute the clip operation before other operations to ensure
 that the clip is applied, even if the later operations fail.

[src/gdevvec.c]

2008-03-25T05:26:24.097873Z Alex Cherepanov

PDF font descriptor may be shared between CID and simple fonts. We cache the
font object in the font descriptor dictionary. To prevent collision, use
different keys to store font and CIDFont objects. Improve the fix for the
bug 689301.

[lib/pdf_font.ps]

2008-03-24T20:02:07.895385Z Igor Melichev

Fix (clist writer) : Smaller tiles for strip_copy_rop (continued).

DETAILS :

The old code sometimes tried to write a degenerate rectangles to clist.
It happened since revision 8581 due to inaccurate coding.
Should fix ghostpcl regression happened on March 23, 2008 . 

[src/gxclimag.c src/gxclrect.c]

2008-03-24T04:17:47.859439Z Alex Cherepanov

Equivalent transformation of the PDF font handler to improve readability
in preparation for the PDF font overhaul.

[lib/pdf_font.ps]

2008-03-23T07:50:43.652322Z Igor Melichev

Fix (vector device): %pipe% IO device being opened as seekable (continued).

DETAILS :

Revision 8602 caused an MSVC warning, which is now fixed.

[src/gdevvec.c]

2008-03-22T21:55:00.988313Z Igor Melichev

Fix (clist writer) : Smaller tiles for strip_copy_rop.

DETAILS :

Bug 689588 "Unexpected InternalOverflow in ReadImage".

When strip_copy_rop recieves a big tile, it is being subdivided into line tiles
to fit into the clist buffer. However the line tile can be too big as well.
The new code narrows the line tile with the size of the rectangle to be painted.
For details see comments added into gxclrect.c .

Minor change (gdevddrw.c, gdevmr8n.c) Added visual trace commands for easier debugging.

[src/lib.mak src/gdevddrw.c src/gdevmr8n.c src/gxclrect.c]

2008-03-21T05:07:53.304009Z Igor Melichev

Fix (Windows application) : Provide a better visual trace support interface for use with other interpreters.

DETAILS :

This minor change doesn't change any behavior.

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

2008-03-20T10:20:17.499008Z Ken Sharp

Fix (pdfwrite): pdfwrite embedded TrueType/Type 42 fonts which
specifically forbid embedding.

Details:
Bug #689693 "GS embeds licensed fonts when generating PDF".

For Type 42 fonts, in order to prevent embedding fonts with license
restrictions we need to retrieve and honour the /FSType key if present
in the FontInfo dictionary of the font.

We also need to check the embedding status of TrueType fonts read from disk
in a similar fashion to Type 42 fonts downloaded in the course of the job.

Finally, when writing a TrueType font to a PDF file, we need to preserve any
existing embedding rights by setting fstype appropriately in the OS/2 table.
It is possible to permit font embedding even when the embedding rights
are non zero and we should preserve these.

(gxfont.h) Add a new parameter, EmbeddingRights, and a new flag
	     FONT_INFO_EMBEDDING_RIGHTS, to the gs_font_info structure.

(zfont.c) In zfont_info, if we request the EmbeddingRights, and the font has
          a FontInfo dictionary, retrieve the FSType if present.

(gdevdtf.c) When determining whether a font may be embedded, retrieve the
          font info, check the 'members' structure member after retrieving font info
          to see if the EmbeddingRights member has been updated. Assume embedding
          allowed if the member has not been updated.

(gxfont42.h) Add a new member os2_offset to the gs_type42_data structure, to allow
           us to read from the OS/2 table later.

(gstype42.c) In gs_type42_font_init, when reading the TrueType Table directory, store
           the offset to the OS/2 table.

           In gs_truetype_font_info, if the caller has requested the embedding rights
           and they haven't already been retrieved from an FSType entry in the
           FontInfo dictionary, get the OS/2 table and pull the fstype value from there.

(gdevpsft.c) When writing a TrueType font, and we don't have an OS/2 table to
             copy (appears to always be the case), check to see if we have any
             embedding rights information in the original font, and preserve it if so
             by setting the fstype entry in the OS/2 table.

[src/gxfont42.h src/zfont.c src/gdevpdtt.c src/gstype42.c src/gdevpsft.c src/gdevpdtf.c src/gxfont.h]

2008-03-19T10:09:21.671968Z Ken Sharp

Fix (vector device): %pipe% IO device being opened as seekable.

Details:
Bug #689428 "‘gs -sOutputFile=%pipe%cat’ doesn't work".

Based on the patch supplied by Dan Villiom Podlaski Christiansen. 

(gsdevice.c) in gx_device_open_output_file, if the parsed out iodevice
 is '%pipe%', then open the output 'file' non-seekable.

(gdevvec.c) Not strictly related, but gdev_vector_open_file_options could
 use 'fclose' on a stream opened with gx_device_open_output_file. Altered
 to use gx_device_close_output_file instead.

[src/gdevvec.c src/gsdevice.c]

2008-03-16T22:25:13.694561Z Alex Cherepanov

Handle TT fonts that have short post table with less than 256 glyphs.
Pad the generated Encoding vector with /.notdef glyphs.
Bug 689515, customer 700.

[lib/gs_ttf.ps]

2008-03-15T23:59:48.788786Z Alex Cherepanov

Work around a bug in the PS interpeter by not using nulldevice in the PDF
interpreter where it isn't really needed. Bug 689751.

DETAILS:
PS interpreter seems to fall into an infinite loop running charpath when
the font is composite and the curent device is nulldevice.

[lib/pdf_ops.ps]

2008-03-14T05:40:11.023910Z Marcos H. Woehrmann

Fixed duplexing for ljet3d and ljet4d devices; thanks to karsten@sengebusch.de for the changes.

Fixes bug 687531.

No regressions expected, since neither device is tested by the regression suite.

[src/gdevdjet.c src/gdevdljm.c]

2008-03-13T07:18:46.618081Z Igor Melichev

Fix (graphics) : A bug in the pattern color serialization.

DETAILS :

Patch from Alex mentioned in the bug 689731 and unrelated to that bug.

[src/gsptype1.c]

2008-03-12T22:32:03.336468Z Igor Melichev

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

DETAILS :

Bug 689748 "gs segfaults".

An unitialized variable since rev 8510.
We had no test files for that branch, now got one.

[src/gxfill.c]

2008-03-11T18:32:33.104151Z Ray Johnston

Fix MSVC makefile for the 'Big console mode EXE' case when COMPILE_INITS=1. Also
minor cleanup to gs.mak 'clean' target and redundant dependency in ugcclib.mak.
MSVC build problem noted by customer #531.

[src/ugcclib.mak src/gs.mak src/msvc32.mak]

2008-03-10T02:18:38.654568Z Alex Cherepanov

When the font has no /FontBBox but provides character width through /Metrics
dictionary, use them instead of the calculated width. The old code did so only
when both the width and side bearings were defined. Bug 689740, customer 353.

[src/zchar1.c]

2008-03-09T13:34:51.534239Z Igor Melichev

Fix (transparency) : Transparency compositor device recreation was incorrect.

DETAILS :

This problem was apparently detected when working on another problem.
The pdf14_recreate_clist_device code was wrong.
Regularly we never call that function, because
PDF interpreter creates the transparency compositor device once per page.
Nevertheless we store the right code since it is debugged.

[src/gdevp14.c]

2008-03-07T13:39:35.783627Z Igor Melichev

Fix (bbox device) : box_fill_path needs as path for shfill.

DETAILS :

Since revision 8017 the function gs_shfill includes a branch for 
a faster handling of the Postscript operator shfill,
which does not provide a path to fill. It uses the clipping path instead.
The bbox device appears to be incompatible with that optimization.
This patch adds a special branch to bbox device to handle a shading fill
with no path.

Please note that since revision 8017 the call 
dev_proc(dev, pattern_manage)(dev, gs_no_id, NULL, pattern_manage__shfill_doesnt_need_path) 
must return a proper information about the device's fill_path method. 
In most case it is doe with the default implementation gx_default_pattern_manage, 
but the bbox device ises gx_forward_pattern_manage instead, 
which appears wrong for bbox_fill_path. We decided to add an optomized branch 
rather than apply the slow general method.

[src/gdevbbox.c]

2008-03-07T09:42:38.021120Z Ralph Giles

Correct a default return value. Follow on to Bug 689569.

Also rename a variable to match the jbig2dec version of the same call.

[src/sjbig2_luratech.c]

2008-03-05T23:35:50.165171Z Igor Melichev

Fix (clist) : Some transparency compositor commands don't need CTM.

DETAILS :

The old code writes CTM with each transparency compositor command.
Actually it is only needed with begin_transparency_grup and 
begin_transparency_mask. So we can skip CTM with
when writing other commands to shorten the clist file.

Note clist reader now sets zero CTM when reading transparency
compositor command with no CTM. We believe it is useful because
subsequent graphics objects need to restore CTM of a containing group.

See also comments added in code.

[src/gdevdbit.c src/gdevp14.c]

2008-03-04T20:56:48.308882Z Igor Melichev

Fix (clist) : Crop transparency commands while clist writing, step 4.

DETAILS :

This provides a right group bounding box for transparency masks.
Instead that the old code used the container's group bbox,
which may be much bigger causing a performance leak.

[src/gdevp14.c]

2008-03-03T20:16:06.744980Z Igor Melichev

Fix (images) : Revert an unintentional change to siscale.c .

DETAILS :

When doing the revisoon 8530, a macro was expanded in siscale.c 
for a debug purpose. This change was committed by error,
reverting it now.

[src/siscale.c]

2008-03-03T16:01:12.306842Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 3.

DETAILS :

This really crops transparency compositor commands with bands 
that are covered by the transparency bbox.

Actually the statement above has one exception. When a transparency bbox
covers more that 2/3 of all bands, we still write the commands to 
the "all bands" list for a shorter clist file. We noticed that 
the clist playback time strongly depends on the file size.

1. The new method gs_composite_type_procs_t::get_cropping
replies what bands are covered by the compositor. 
When it gives a non-trivial result, clist_create_compositor
writes the compositor command to those bands,
which are covered with the cropping (Exception :
if too many bands are covered, it writes the command to
the "for all bands" list).

2. Since some bands skip some compositor commands,
while clist reading the association of masks to groups 
becomes more complex. Before this patch each group
was associates with the mask, which was created immediately
before it at same transparency stack level. 
After this patch some groups may be skipped, so that
clist reader may recieve extra masks, because masks are
still use the container's group bbox. For skipping such extra masks
we provide a numeric identifier of a mask, which is named mask_id.
Here is how it works :

2.1. All masks recieve serial numbers (mask_id) while clist writing.
2.2. Each mask command is written with its mask_id.
2.3. Each group command is writen with mask_id, 
     which belongs to the mask that is assocuated with the group.
2.4. While clist playback pdf14_pop_transparency_group checks whether
     the mask amd the group have same mask_id. If not, the mask is extra
     and it must be droped.
2.5. Note the old assiciation logic is still working,
     and it may skip some masks as well.
2.6. If the rasterization happens with no clist, mask_id is always zero.
     In this case the old logics is only working.
     Maybe we'll provide non-zero values someday.
2.7. See comments in code for more details.

3. The method gs_composite_type_procs_t::clist_compositor_write_update
is now some generalized. Before this patch it only updates the clist writer state
with the compositor features. With this patch it also adds 
some information from the clist writer state to the compositor parameters.
Particularly it provides mask_id to the compositor command.
Thus now it updates *both* clist writer and the compositor parameters
to comply each another. For a while, in order to simplify the patch,
the compositor argument is still 'const'. Will need to fix someday.

4. Now we need to save mask_id in a stack that reflects the
transparency nesting. The cropping stack, which was introduced
in the last patch, now works for that. To provide that
we add mask_id to clist_writer_cropping_buffer_s,
and use clist_writer_push_no_cropping to save amsk_id
over inner groups. 

5. state_update(ctm) in c_pdf14trans_clist_write_update is replaced
with code, which updates CTM from the transparency compositor command.
The old code is not fully correct, because it takes CTM from the imager state,
rather we havn't got prcatical cases when it gives a wrong result.

6. drop_compositor_queue now calls adjust_ctm for compositors being dropped.
The old code is incorrect because it can miss a CTM update when 
a compositor sets some CTM and later a non-compositor object
sets same CTM. In this case the clist writer skips the second CTM on writing,
and skipping the first in the clist reader will miss the CTM completely.
We haven't got practical cases for that.

7. Improved some debug printing.

[src/gxclist.c src/gdevdflt.c src/gdevp14.h src/gstrans.c src/gsalphac.c src/gxclist.h src/gxcomp.h src/gsovrc.c src/gstparam.h src/gstrans.h src/gxclrast.c src/gdevp14.c src/gxclpath.c src/gxclimag.c]

2008-03-03T11:57:42.307384Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 2.

DETAILS :

This is a preparation to the next step.

The patch introduces a transparency stack for clist writer,
which saves cropping when entering a transparency group,
and restores when exiting it. The cropping is being narrowed
with transparency group's bounding box.

[src/gxclist.c src/gxcldev.h src/gxclist.h src/gdevp14.c src/gxclpath.c]

2008-03-03T11:42:33.253339Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 1b.

DETAILS :

Removing non-ascii chars that was not detected by MSVC.

[src/gdevp14.c]

2008-03-03T10:13:01.196997Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 1a.

DETAILS :

The last commitment is incomplete, now fixing.

[src/gxclist.h]

2008-03-03T10:11:27.428498Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 1.

DETAILS :

This is a preparation to the next step.
In general, the behavior doesn't change, 
but implementation details differ.

The old code maitains a flag cropping_by_y in the clist writer,
which triggers a cropping of objects by the Y axis.
The old code isn't perfect, because 
it first crops by [cdev->cropping_min, cdev->cropping_max],
and then by [0, cdev->height].

In the new code we unite both croppings into a single one.
For doing that we remove the flag, and provide 
the right interval [cdev->cropping_min, cdev->cropping_max]
in any case. Initially it is [0, cdev->height},
and it is narrowed when a shading bbox is set.
To restore the initial cropping after the shading
is complete, we maintain 2 new fields 
save_croping_min and save_cropping_max.

So now the cropping mechanizm does not depend
on shading, and clients may set a croping when they need. 
We'll use this feature in the next patch.

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

2008-03-03T04:03:51.374416Z Marcos H. Woehrmann


Fix for compression always falling back to no compression in
pclxl_write_image_data(), bug 689732.

Details:

After much tracing of srle.c and gdevpx.c I believe this bug is in
the portion of s_RLE_process() that looks ahead in order to be able
to optimally compress the data.  Rather than attempting to modify the
function and probably breaking something else I'm taking the 99% solution
and just calling s_RLE_process with last set to true instead of false.
This disables the look ahead feature, presumably making the compression
very slightly suboptimal but at least now it works.

This change results in pxl files that are significantly smaller than
before (i.e. the test file associated with bug 689595 is reduced in size
from 1.1 megs to 387k).

[src/gdevpx.c]

2008-03-03T02:57:05.472235Z Ray Johnston

Fix properties

[src/psromfs.mak src/gsromfs0.c]

2008-03-03T01:17:09.063617Z Marcos H. Woehrmann

Fall back to using gx_default_copy_mono() in pclxl_copy_mono() if data_x!=0.

Details:

Fixes bug 688992.  Will increase the size of the generated PXL file in some cases; a better solution would be to modify the pclxl_write_image_data()function to handle data_x!=0.

Expected regressions:

None, pxlmono isn't covered in the regression suite.

[src/gdevpx.c]

2008-03-01T10:18:20.389016Z Ken Sharp

Fix (pdfwrite): problems with type 3 fonts executing 'show'.

Details:
Bug #689685 "OpenType font incorrectly converted to PDF".

The File is from Quark XPress and contains a type 3 font which
executes a 'show' and a 'charpath stroke' with a glyph from a type
1 font. Further, it executes a 'charpath' on this type 3 glyph.

Pdfwrite was unaware, when processing the 'show' that this was
inside a charpath operation, and emitted the shown glyph.

Modified pdfwrtite to be aware that a charpath is in operation, and
to have the graphics library handle any show operations.

(gdevpdfx.h) Add a new flag 'type3charpath' to the gx_device_pdf
  structure.

(gdevpdfb.h) Add an initialiser for the type3charpath flag (also for
  the last_charpath_op which was missed in that change)

(gdevpdtt.c) In gdev_pdf_text_begin, if type3charpath is true, go
straight to the default text processing. Otherwise, check to see
if this is a type 3 font, and the operation is 'charpath'. If so
then create a pdfwrite text enumerator to process the text.

In pdf_text_process, if we have a type 3 font, the operation is charpath
and type3charpath is false, set it to true and go straight to the 
default text handler. When the enumerator is completed, if type3charpath
is true, set it to false.

In pdf_text_process, while handling text, do not start accumulating a
charparoc if type3charpath is set.

Finally, in pdf_text_set_cache, if type3charpath is set, simply execute
the standard cache routine.

[src/gdevpdfx.h src/gdevpdtt.c src/gdevpdfb.h src/gdevpdti.c]

2008-03-01T10:15:02.847745Z Ken Sharp

Fix (pdfwrite): problems with type 3 fonts executing 'show'.

Details:
Bug #689687 "Regression: pdfwrite DEVICE produces bad text".

The File is from Quark XPress and contains a type 3 font which
executes a 'show' and a 'charpath stroke' with a glyph from a type
1 font.

The code for revision 8265 converts these into a '2 Tr' in the
PDF file. However, I missed the case of this occuring inside a font,
resulting in much too large a strokewidth being set. This code takes
account of the font matrix.

NB there is still a potential problem. There is no way currently to tell
the difference between a charproc which explicitly sets a stroke width
and one which inherits it from the prevailing graphics state. Currently
we will write a font which always emits the stroke width at the time
the font was first used. There is no simple way to address this, we
could set the stroke width to an invalid value during the course of a type
3 glyph, and check it before emitting the stroke, but this is dangerous.

However, this seems unlikely to be a real problem in practice, since altering
the stroke width outside the font might result in unpredictable widths
dependent on the point size. I have chosen not to open a bug for the
possible condition at this time.

(gdevpdfd.c) gdev_pdf_stroke_path, if we are converting to a PDF text
rendering mode, and are inside a type 3 font glyph description, take the
font matrix into account when calculating the strokewidth.

[src/gdevpdfd.c]

2008-03-01T01:42:04.749356Z Ralph Giles

Bump the revision after the 8.62 release.

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

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 H. 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 H. Woehrmann

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

[man/de/pdf2dsc.1]

2008-01-09T00:24:50.313955Z Marcos H. 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 H. 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 H. 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 H. 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 H. 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 H. 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.