2005-10-20 19:46 Ray Johnston

Update doc files and version files for 8.53 release.

[doc/API.htm 1.53, doc/Bug-form.htm 1.49, doc/Bug-info.htm 1.49, doc/C-style.htm 1.55, doc/Commprod.htm 1.41, doc/Copying.htm 1.39, doc/DLL.htm 1.43, doc/Deprecated.htm 1.20, doc/Details8.htm 1.24, doc/Develop.htm 1.159, doc/Devices.htm 1.90, doc/Drivers.htm 1.58, doc/Fonts.htm 1.51, doc/Helpers.htm 1.44, doc/History1.htm 1.39, doc/History2.htm 1.39, doc/History3.htm 1.39, doc/History4.htm 1.39, doc/History5.htm 1.41, doc/History6.htm 1.56, doc/History7.htm 1.44, doc/History8.htm 1.29, doc/Htmstyle.htm 1.44, doc/Install.htm 1.56, doc/Issues.htm 1.52, doc/Language.htm 1.98, doc/Lib.htm 1.43, doc/Maintain.htm 1.50, doc/Make.htm 1.90, doc/News.htm 1.168, doc/Projects.htm 1.67, doc/Ps-style.htm 1.37, doc/Ps2epsi.htm 1.42, doc/Ps2pdf.htm 1.88, doc/Ps2ps2.htm 1.7, doc/Psfiles.htm 1.68, doc/Readme.htm 1.71, doc/Release.htm 1.95, doc/Source.htm 1.39, doc/Testing.htm 1.37, doc/Unix-lpr.htm 1.39, doc/Use.htm 1.136, doc/Xfonts.htm 1.39, doc/gs-vms.hlp 1.37, man/dvipdf.1 1.37, man/font2c.1 1.37, man/gs.1 1.38, man/gslp.1 1.37, man/gsnd.1 1.37, man/pdf2dsc.1 1.36, man/pdf2ps.1 1.38, man/pdfopt.1 1.36, man/pf2afm.1 1.37, man/pfbtopfa.1 1.38, man/printafm.1 1.37, man/ps2ascii.1 1.37, man/ps2epsi.1 1.35, man/ps2pdf.1 1.42, man/ps2pdfwr.1 1.41, man/ps2ps.1 1.44, man/wftopfa.1 1.37, src/gscdef.c 1.58, src/version.mak 1.87]

2005-10-20 19:42 Ray Johnston

Remove trailing ^M () characters.

[src/gdevbmp.c 1.12, src/slzwd.c 1.7]

2005-10-20 18:51 Raph Levien

Fixes broken compile on amd64 platforms (see bug #688047 for details).
This patch should be safe on all platforms with 32-bit longs, and is
my best guess as to the right thing to do on Tru64 (where long is 64
bits).

[src/tttypes.h 1.3]

2005-10-20 13:04 Igor Melichev

Fix (pdfwrite) : Suppress floating point number format in pdfmark operands (continued 2).

DETAILS :

Bug 688167 "change of real number fomat from fixed to exponential format".

The last patch doesn't correctly handle numbers between 1e-7 and 1e-2.

EXPECTED DIFFERENCES :

None.

[lib/gs_pdfwr.ps 1.52]

2005-10-18 20:31 Igor Melichev

Fix (pdfwrite) : Suppress floating point number format in pdfmark operands (continued).

DETAILS :

Bug 688167 "change of real number fomat from fixed to exponential format".

This improves the patch
http://ghostscript.com/pipermail/gs-cvs/2005-September/005717.html
with writing small reals in a fixed point number format.

We did it after Raph's request in Comment #5 of the bug 688167.
But we don't see a visible difference against the old implementation with any viewer.
Therefore we believe that we shouldn't have done it (as we did before the implementation).
Storing it now mainly for archiving purpose.

If this change causes a problem, the author has no objection for unwinding it.

EXPECTED DIFFERENCES :

None.

[lib/gs_pdfwr.ps 1.51]

2005-10-18 09:05 Igor Melichev

Fix (pdfwrite) : Indexed colors were distorsed with encryption.

DETAILS :

Bug 688313 "pdfwrite : image colors depend on encryption".

The old code applied encryption with a wrong (zero) object id to
the palette of the indexed color space. After a viewer decrypts
the palette with a right object id, colors appear wrong.

1. Use the PS string encoding instead the hexadecimal string encoding
while converting the palette to PDF format (gdevpdfc.c).
It provides a correct work of the part 3 below.
See also part 4 below.

2. Don't apply encryption when adding the palette
to cos object (gdevpdfc.c, devs.mak).
The old code was hacky, and new one is based on a general convention.

3. Apply encryption with a right object id
to the string which represents the palette
when writing the cos object to the output PDF file.
This is an implicit consequence of
using the PS string encoding in the part 1
due to a general convention about
applying encryption when writing cos objects to the output file.

4. Disable writing hexadecimal strings because their
encryption is not yet implemented (gdevpdfu.c).

The generated PDF may become longer in 1-2 kilobytes per palette
due to PS encoding is less effective for palettes.
This could be optimized with implelenting an encryption method
for hexadecimal encoded strings in pdf_put_encoded_hex_string,
and undo the part 1. The method should apply 3 filters :
hexadecimal string decode, arc4 encode, hexadecimal string encode,
because cos object stores strings in the outer format.
Delaying this optimization for better times.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.140, src/gdevpdfc.c 1.54, src/gdevpdfo.c 1.35, src/gdevpdfu.c 1.89]

2005-10-18 07:58 Igor Melichev

Fix (pdfwrite) : Propagate error codes from pdf_write_value.

DETAILS :

This is a preparation for fixing the bug
688313 "pdfwrite : image colors depend on encryption".

In cases when no error happens, this code is algorithmocally equivalent.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfo.c 1.34, src/gdevpdfu.c 1.88, src/gdevpdfx.h 1.138]

2005-10-17 19:23 Igor Melichev

Fix (pdfwrite) : /BP pdfmark could create dead PDF objects (continiued).

DETAILS :

Bug 687560 "Invalid PDF if /BP pdfmarks with non-unique /_objdef".

1. Prevent a potential crash while dereferencing NULL.
2. Don't put unnamed objects into local_named_objects.

Thanks to SaGS for pointing these problems out.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.50]

2005-10-12 17:59 Igor Melichev

Fix : Don't instantiate pattern when rendering to null device.

DETAILS :

Bug 688308 "Error: undefined; OffendingCommand: .type1execchar".

The test case executes cshow or kshow with intrevene changing
the current color space, causing a color load callout from fill_with_rule
_after_ the callout completes. After that the check
ctile->depth == dev->color_info.depth in gx_pattern_cache_lookup fails
(not sure why - probably due to gsave-grestore in the pattern procedure).
This patch skips entire character drawing when the device is null,
so that those cumbersome stuff isn't envolved.

EXPECTED DIFFERENCES :

None.

[src/gsdevice.c 1.25, src/gspaint.c 1.10, src/gxdevcli.h 1.41]

2005-10-12 11:05 Igor Melichev

Implementing a pointer stability validation in the garbager, continued.

DETAILS :

This patch is currently disabled, so the change is syntactically equivalent.

Bug 688226 "The garbager must check a pointer stability.".

This fixes a minor bug in the last patch.

EXPECTED DIFFERENCES :

None.

[src/ilocate.c 1.14]

2005-10-12 10:45 Igor Melichev

Implementing a pointer stability validation in the garbager.

DETAILS :

This patch is currently disabled, so the change is syntacticly equivalent.

Bug 688226 "The garbager must check a pointer stability.".

This patch extends the object header with a space order number field,
and compares the origin and the destination order numbers for each pointer
while validating the heap. The enhanced object header is still
within 16 bytes with the 32-bits architecture. See ialloc_validate_pointer_stability
about the order number definition.

This patch detected so many problems while running any document,
as we can't enable it now. It is disabled with IGC_PTR_STABILITY_CHECK
macro defined in gxobj.h .

EXPECTED DIFFERENCES :

None.

[src/gsalloc.c 1.24, src/gxalloc.h 1.12, src/gxobj.h 1.7, src/ialloc.c 1.8, src/ilocate.c 1.13]

2005-10-12 08:16 Igor Melichev

Fix (pdfwrite) : Skip a clip path, which is set by setcachedevice (continued after July 28 205).

DETAILS :

Bug 687678 "pdfwrite : A Type 3 character cut-off".
Bug 688327 "incorrect masking fill in pdfwrite".

The old patch for this problem appears to define a too weak
condition for recognizing a clipping set by setcachedevice, sectachedevice2.

Now we think that a special stuff for this condition isn't needed because
the condition may be united with the contition for "setcharwidth" :
both things need to skip the clipping path, which was set exactly by
setcachedevice, sectachedevice2 or setcharwidth.
Checking the rectangle coordinates is not relevant.

Therefore the change consists of 2 parts :
1. Unwinding the patch http://ghostscript.com/pipermail/gs-cvs/2005-July/005625.html (IM1358)
   (see also http://ghostscript.com/pipermail/gs-cvs/2005-July/005626.html).
2. Remowing the (control == TEXT_SET_CHAR_WIDTH) check from pdf_text_set_cache,
   so that the "caching" clipping path will be skipped in any case.

Will add Bug688327.ps to comparefiles.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfb.h 1.14, src/gdevpdfd.c 1.71, src/gdevpdfx.h 1.137, src/gdevpdti.c 1.53, src/gdevpdtt.c 1.104]

2005-10-11 10:04 Igor Melichev

Fix (PS interpreter) : Allocate gs_screen_enum in same space as its components.

DETAILS :

Bug 688330 "A dangling pointer in gx_screen_enum.".

The old code allocates gs_screen_enum in current memory space and frees to
the memory space of its components, which is obtained from
the 'setscreen' operand (the spot function).
In the test case the first memory space is local, and the second one is global.
We guess the last statement became true after a recent change to the PDF interpreter.

This patch allocates gs_screen_enum in same space as its components.
The pritotype of zscreen_enum_init has been changed due to no method for
obtaining a space attribute value for iref from a gs_memory_t instance
(well, generally it is impossible, but one could solve if the memory
allocator is a PS interpreter's allocator except stable ones).

We noticed that components of gs_screen_enum have pointers to memory
allocator structures, but don't list them in the related memory descriptors.
We're not sure whether a memory allocator structure may relocate or not -
our investigation through code didn't give an unique answer.
For now we leave component descriptors as they were before the patch.

EXPECTED DIFFERENCES :

None.

[src/iht.h 1.6, src/zht.c 1.8, src/zht1.c 1.7, src/zht2.c 1.14]

2005-10-10 19:09 Igor Melichev

Fix: Cygwin/gcc warninhs.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.139, src/gdevpdfb.c 1.34]

2005-10-10 18:58 Igor Melichev

Optimizing the transparency compositor.

DETAILS :

Bug 688255 "ai7 pdf fails on 7.03, runs for ten + minutes on 8.51".

The old code always allocates a transparency buffers for entire band.
The new code accounts group bbox to minimize buffers.
Due to that buffers appear empty for many of bands.
The time consumption for the test case of the bug 688255 is dropped in about 100 times
(from 8000 seconds to 71 seconds on a 3.07GHz machine, measured with debug build).

1. The transparency bbox computes in pdf14_begin_transparency_group from
   the group bbox and the CTM (gdevp14.c).
2. Handle an empty buffer pdf14_buf_new, pdf14_pop_transparency_group (gdevp14.c).
3. Fixed a bug in the rectangle clipping in
   pdf14_mark_fill_rectangle, pdf14_mark_fill_rectangle_ko_simple.
   The old code didn't sense it because bbox always covered entire band (gdevp14.c).
4. Write the bbox to clist in c_pdf14trans_write and read it in c_pdf14trans_read.
5. The pdf14 compositor needs CTM to transform the group bbox to the device space.
   Forced the writing of CTM to clist before writing the compositor in clist_create_compositor.
   (Sorry, it appears some ugly due to pcte->type->procs.write creates a body
   of a command, but we need to create a set of two commands;
   Another minor optimization - a narrowing the set of bands - is delayed,
   see comments in code in clist_create_compositor) (gxclimag.c).
6. New functions cmd_write_ctm_return_length, cmd_write_ctm are factored out for (5)
   (gxclpath.c, gxclpath.h). This part of the change is algorithmically eqiuivalent.
7. Minor change : fixed coding style of "} else {" in gdevp14.c .

EXPECTED DIFFERENCES :

None.

[src/gdevp14.c 1.35, src/gxclimag.c 1.13, src/gxclpath.c 1.21, src/gxclpath.h 1.13]

2005-10-07 19:49 Ray Johnston

Add missing space in CVS PRE-RELEASE string.

[src/gscdef.c 1.57]

2005-10-07 19:46 Ray Johnston

Bump version after the 8.52 release (to 8.53 CVS PRE-RELEASE).

[doc/News.htm 1.167, lib/gs_init.ps 1.120, src/gscdef.c 1.56, src/version.mak 1.86]