2004-05-31 06:02 Dan Coby

Correct various compiler warnings from MSVC and gcc.  Fix for 
687441.

[src/gdevdevn.h1.7, src/gdevdevn.c 1.19, src/gdevpsd.c 1.13, src/gsequivc.c 1.2]

2004-05-31 05:34 Ralph Giles

JPXDecode support is only enabled for the autoconf build. Mention this
in the release notes, and add some brief notes to the MSVC makefile
about how to make it build.

[doc/News.htm 1.149, src/msvc32.mak 1.57]

2004-05-31 05:08 Ralph Giles

Update the open bug list in the release notes.

[doc/News.htm 1.148]

2004-05-30 09:50 Russell Lang

Enable separable_and_linear and separable for the display device.
Fixes bug #687442.

DETAILS:
Enable separable_and_linear for gray, RGB and CMYK formats.
The display device needs to explicitly call check_device_separable
because it is closed and reopened when the callback is set,
which causes linear_and_separable to be reset.
Set the gray_index which is not set by check_device_separable.
Prevent the unimplemented DISPLAY_ALPHA_FIRST and
DISPLAY_ALPHA_LAST from being used.
Make it clear that the display_map_rgb_color_rgb and
display_map_color_rgb_rgb functions only work with 8bits/pixel.

[src/gdevdsp.c 1.22]

2004-05-29 21:07 Raph Levien

Added more news items, in preparation for 8.30 release.

[doc/News.htm 1.147]

2004-05-29 02:19 Ralph Giles

Relocate the gxhldevc_h macro out of order so all its dependencies are
available.

[src/lib.mak 1.184]

2004-05-29 02:10 Ralph Giles

Correct a dependency typo.

[src/lib.mak 1.183]

2004-05-29 01:21 Ralph Giles

Update documenation dates and version category for release.

[doc/API.htm 1.42, doc/Bug-form.htm 1.40, doc/Bug-info.htm 1.39, doc/C-style.htm 1.46, doc/Commprod.htm 1.31, doc/Copying.htm 1.30, doc/DLL.htm 1.34, doc/Deprecated.htm 1.11, doc/Details8.htm 1.6, doc/Develop.htm 1.134, doc/Devices.htm 1.77, doc/Drivers.htm 1.46, doc/Fonts.htm 1.41, doc/Helpers.htm 1.34, doc/History1.htm 1.30, doc/History2.htm 1.30, doc/History3.htm 1.30, doc/History4.htm 1.30, doc/History5.htm 1.32, doc/History6.htm 1.47, doc/History7.htm 1.35, doc/History8.htm 1.10, doc/Htmstyle.htm 1.35, doc/Install.htm 1.45, doc/Issues.htm 1.40, doc/Language.htm 1.86, doc/Lib.htm 1.33, doc/Maintain.htm 1.41, doc/Make.htm 1.75, doc/New-user.htm 1.50, doc/News.htm 1.146, doc/Projects.htm 1.57, doc/Ps-style.htm 1.28, doc/Ps2epsi.htm 1.32, doc/Ps2pdf.htm 1.68, doc/Psfiles.htm 1.51, doc/Readme.htm 1.55, doc/Release.htm 1.85, doc/Source.htm 1.30, doc/Tester.htm 1.30, doc/Testing.htm 1.25, doc/Unix-lpr.htm 1.30, doc/Use.htm 1.109, doc/Xfonts.htm 1.30, man/dvipdf.1 1.28, man/font2c.1 1.28, man/gs.1 1.29, man/gslp.1 1.28, man/gsnd.1 1.28, man/pdf2dsc.1 1.27, man/pdf2ps.1 1.29, man/pdfopt.1 1.27, man/pf2afm.1 1.28, man/pfbtopfa.1 1.29, man/printafm.1 1.28, man/ps2ascii.1 1.27, man/ps2epsi.1 1.26, man/ps2pdf.1 1.33, man/ps2pdfwr.1 1.32, man/ps2ps.1 1.35, man/wftopfa.1 1.28, src/gscdef.c 1.43, src/version.mak 1.70]

2004-05-29 01:11 Ralph Giles

Add new rinkj driver files to the index in Develop.htm.

[doc/Develop.htm 1.133]

2004-05-28 23:58 Raph Levien

Add sample setup file for Rinkj driver, more documentation.

[doc/Devices.htm 1.76, lib/rinkj-2200-setup 1.1]

2004-05-28 23:50 Raph Levien

Adds basic documentation for Rinkj driver, update copyright banners.

[doc/Devices.htm 1.75, src/rinkj/evenbetter-rll.c 1.2, src/rinkj/evenbetter-rll.h 1.2, src/rinkj/rinkj-byte-stream.c 1.2, src/rinkj/rinkj-byte-stream.h 1.2, src/rinkj/rinkj-config.c 1.2, src/rinkj/rinkj-config.h 1.2, src/rinkj/rinkj-device.c 1.2, src/rinkj/rinkj-device.h 1.2, src/rinkj/rinkj-dither.c 1.2, src/rinkj/rinkj-dither.h 1.2, src/rinkj/rinkj-epson870.c 1.2, src/rinkj/rinkj-epson870.h 1.2, src/rinkj/rinkj-screen-eb.c 1.2, src/rinkj/rinkj-screen-eb.h 1.2]

2004-05-28 23:26 Dan Coby

This change implements "687431 Add determining equivalent CMYK
colors for spot colors".  This change currently only affects the
psdcmyk device.

DETAILS:

For a description of the implementation see the comments at
the beginning of gsequivc.c.

In addition to the comments in gsequivc.c, the gs_separation
structure was changed to simplify it.  The gs_separation_info
structure was removed and the names filed moved into the
gs_separations structure.

[src/devs.mak 1.114, src/gdevdevn.c 1.18, src/gdevdevn.h 1.6, src/gdevprn.c 1.16, src/gdevpsd.c 1.12, src/gsequivc.c 1.1, src/gsequivc.h 1.1]

2004-05-28 23:09 Ralph Giles

Use ST_MTIME instead of the ctime to determine the date of the last
baseline update. Partial fix for bug 687481.

[toolbin/tests/gscheck_raster.py 1.12]

2004-05-28 23:02 Raph Levien

Initial commit of rinkj (resplendent inkjet) drivers, using ETS screening.

[src/devs.mak 1.113, src/gdevrinkj.c 1.1, src/rinkj/evenbetter-rll.c 1.1, src/rinkj/evenbetter-rll.h 1.1, src/rinkj/rinkj-byte-stream.c 1.1, src/rinkj/rinkj-byte-stream.h 1.1, src/rinkj/rinkj-config.c 1.1, src/rinkj/rinkj-config.h 1.1, src/rinkj/rinkj-device.c 1.1, src/rinkj/rinkj-device.h 1.1, src/rinkj/rinkj-dither.c 1.1, src/rinkj/rinkj-dither.h 1.1, src/rinkj/rinkj-epson870.c 1.1, src/rinkj/rinkj-epson870.h 1.1, src/rinkj/rinkj-screen-eb.c 1.1, src/rinkj/rinkj-screen-eb.h 1.1]

2004-05-28 07:08 Igor Melichev

Fix (PDF interpreter) : Wrong processing of a big CIDToGIDMap.

DETAILS :

Bug 687471 problem with japanese fonts

EXPECTED DIFFERENCES :

None.

[lib/pdf_font.ps 1.66]

2004-05-27 19:05 Igor Melichev

(pdfwrite) : 1. Implementing a dynamic recongnition for Type 3 charproc variations;
2. Bug : Viewer state could desynchronize when entering a charproc accumulation.

DETAILS :

Bug 687472 "barcode wrongly converted to type3 font".

Type 3 glyph variations may appear if BuildChar uses setcharwidth.
If a charproc uses setcharwidth, we perform the charproc accumulation
for each character occurance, and compare the accumulated stream with older
ones if they exist. In the case of exact equality
(including the character name and character code),
the old charproc is used. Othervise we embed a new one.

If the character code was used with another charproc,
we create another PDF font to resolve the conflict.
Thus a single PS Type 3 font may convert into several
PDF Type 3 fonts, and the text may be broken into smaller pieces.
Particularly this happens with the test file of the bug 687472.
Viewers must account that implementing the text serchability.

A new array pdfont->u.simple.s.type3.cached is used to remember whether
a charproc uses setcachedevice[2]. If a character used it at ones,
we assume that all further its occurances to do same.
We think that this assumption is implied by PLRM.

Viewer state was not saved when entering a charproc accumulation,
and was not restored after exiting it (a bug).
This could cause wrong object attributes
and excessive commands written into PDF.
This patch fixes that.

Some PDFs become longer due to excessive ExtGState objects
generated for dropped copies of charprocs.
Opened a new bug 687487 for tracking this issue.

EXPECTED DIFFERENCES :

An unimportant difference with pdfwrite -r72 :
136-01.ps
prob1.pdf
tpc2.ps
xes2ps-problem.pdf

An unimportant difference with pdfwrite -r300 :
260-01.ps
tpc2.ps
xes2ps-problem.pdf

[src/gdevpdf.c 1.94, src/gdevpdfg.c 1.50, src/devs.mak 1.112, src/gdevpdfg.h 1.30, src/gdevpdfj.c 1.31, src/gdevpdfu.c 1.52, src/gdevpdfx.h 1.89, src/gdevpdte.c 1.59, src/gdevpdtf.c 1.36, src/gdevpdtf.h 1.22, src/gdevpdti.c 1.29, src/gdevpdtt.c 1.79, src/gdevpdtt.h 1.23]

2004-05-27 10:28 Igor Melichev

(pdfwrite) : Delaying the charproc insertion until it is accumulated.

DETAILS :

This change is a part of the work on the bug 687472 "barcode wrongly converted to type3 font".
Our intention is to recognize Type 3 glyph variations,
which may appear if BuildChar uses setcharwidth.

For the case of no error while charproc accumulation
this change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c 1.78, src/gdevpdfx.h 1.88]

2004-05-27 10:25 Igor Melichev

(pdfwrite) : Delaying the charproc insertion until it is accumulated.

DETAILS :

This change is a part of the work on the bug 687472 "barcode wrongly converted to type3 font".
Our intention is to recognize Type 3 glyph variations,
which may appear if BuildChar uses setcharwidth.

For the case of no error while charproc accumulation
this change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.93, src/gdevpdti.c 1.28]

2004-05-27 03:22 Ralph Giles

Handle some errors that could halt the regression run.

DETAILS:

When running a raster comparison, the test case generates a ShortDescription
that includes the modification date of the baseline raster date. If no such
file exists, the baseline gs is run to create an entry. However, if that
insertion attempt fails, there is no baseline raster for reference. While
the test case itself handled this properly, the ShortDescription logic did
not, throwing an error that terminated the whole run.

Also, makesum was returning '0' instead of None on failure, which was
incompatible with the use of its return value as a dbm key. It now
returns None in that case, and when it cannot stat the file argument
at all.

[toolbin/tests/gscheck_raster.py 1.11, toolbin/tests/gssum.py 1.7]

2004-05-26 15:49 Ray Johnston

Fix reference count of overprint compositor so that it doesn't get freed
too early. Fixes SEGV of bug #687425 for customer #1110.

DETAILS:

This only showed up when banding was being used.

This only showed up when a high level image was being rendered from the
clist since this installed a 'clipper' device on top of the overprint
compositor. When the clipper device was closed, the finalization proc
decremented the reference count for the 'target' device of the clipper
which was the overprint compositor. When the overprint reference count
was decremented to 0, it was freed even though it was being used by
the clist renderer.

EXPECTED DIFFERENCES:

None.

[src/gxclrast.c 1.28]

2004-05-26 08:44 Igor Melichev

Fix (pdfwrite) : Wrong /Matrix from /BP pdfmark.

DETAILS :

Bug 687430 "Wrong transformation matrix with Form XObjects".
Patch from sags5495 at hotmail dot com (SaGS), adopted by igorm.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.38]

2004-05-26 04:10 Dan Coby

Log message:

Revised fix for 687418 WTS does not work with bitcmyk driver.

DETAILS:

The changes in this revised fix are pretty extensive.  Note:  This
patch includes several items from Russell Lang.  I am including these
since they are required for the proper execution of the patch and
it does not seem reasonable to require possible testers or reviewers
to have to track down and install these patches separately.

The list of changes includes:

1.  Added logic to check_device_separable to also set the gray_index
value.  This suggestion came from Russell Lang.

2.  Add verification that a colorants bits are consecutive.  (from
Russell Lang in:
http://www.ghostscript.com/pipermail/gs-code-review/2004-May/004501.html

3.  Changes to gx_default_encode_color and gx_default_decode_color
to use position and bit count info from the device's color_info data.
(Also from Russell Lang in the previously mentioned submission.)
(See the comments in item 21 below about the gx_default_decode_color
routine.)

4.  Included test routines. (Also from Russell Lang in the previously
mentioned submission.)

5.  Added calls to check_device_separable prior to calls to the
various 'fill_in_procs' routines (gx_device_fill_in_procs,
gx_forward_fill_in_procs, fill_in_procs).  The fill_in_procs routines
use the separable information in choosing default routines for
the encode_color and decode_color routines.  Thus we have a chicken
and egg problem since check_device_separable also uses the device's
encode_color routine.  The test routines from Russell were a great
help in debugging

Also various changes that were found while testing this patch:

6.  The various color deskjet drivers (gdevcdj.c) was incorrectly setting
the dither_grays and dither_colors values to 5 instead of 256.  (I
have no idea why.)  The max_gray and max_color values were set to
being set correctly to 255.

7.  The color deskjet devices (gdevcdj.c) were doing BG and UCR
removal inside of the encode_color routines.  These devices use the
default color_mapping_procs which also do these tasks.  The code in
the encode_color_routine was removed since it could cause conflicts
with the overprint routines.  The code in the encode_color routine
was also using a fixed BG/UCR logic (from PS level 2).

8.  Corrected a problem in the color desk jet decode_color routine
which was always returning zero for the black value.

9.  Changed the casting for values assigned to the std_colorant_names
field.  Note:  MSVC and gcc complain about different conditions.
There does not seem to be a combination that will keep both happy.
This set produces no complaints from gcc.

10.  Corrected the setting of dither_grays and dither_colors for the
devicen device.  Previously this was being set to 1 when it should have
been set to 256.  Found by Russell Lang.

11.  Modified check_device_separable to only check for appropriate
values of the max_gray/dither_grays and max_color/dither_colors
pairs only for gray/color devices.

12.  Added check for encode_color routines which encode zero
bits for a colorant.  Previously this condition would have caused
an infinitely in check_device_separable.  Change suggested by
Russell Lang.

13.  Removed a previous call to set_linear_color_bits_mask_shift
in gx_default_fill_in_procs.  This has been logically replaced by
the calls to check_device_separable which have been added.

14.  Corrected a problem in the ppm_map_rgb_color in gdevpbm.c.
This routine was calling gx_default_encode_color which requires

15.  Corrected problem in pcx256 device which incorrectly setting
the dither_grays and dither_colors values.

16.  Removed the check_process_color_names routine from gdevpsd.c
since it not used.

17.  Modified the dci_alpha_values macro in gxdevcli.h.  This
macro was setting some devices as 'separable' but was not setting
the related color_info fields (comp_shift, comp_bits, comp_mask).
Now this macro sets a devices as 'unknown'.  The check_device_separable
routine will change this for devices which are separable.  Devices
which want to change their process color model need to either set
themselves as 'unknown' and let check_device_separable handle things
or else the device needs to setup its own values for separable
color_info fields.

18.  Added a call to check_device_separable into gdev_x_open in
gdevxini.c.  With this addition, the x11 device is detected as being
sperable.  This is need since the x11 device sets up a color map in
gdev_x_open.  Prior to this, the encode_color routine for he x11 device
returns 0 regardless of its input.

19.  Modified the uniprint device (gdevupd.c) and color laser jet
devices (gdevcljc.) to use 256 instead of 5 for its dither_gray and
dither_color values with devices that have 8 bits per colorant.  This
is appropriate since the the max_gray and max_color values are 255.
(I do not know why these values were being set to 5.  This same error
was found in gdevcdj.c.  My only guess is that it was a typo in gdevcdj.c.
Since this device is recommended as an example of how to code a color
raster device (in Devices.htm), the error was propogated into the
other devices.

20.  Added more comments to gxdevcli.h explaining the use of the
gray_index, max_gray, dither_grays, max_color, and dither_colors
fields in the device color_info structure.

21.  Changed the gx_default_decode_color routine (again).  Russell
Lang created two revisions to this routine as part of his efforts on
this task.  However one version was slow but produced the desired
results.  The second version was faster but its output was slightly
different.  This revision produces the same output as the first
version but does so without the while loops that slowed its operation.

Note:  There is another related submission from Russell Lang that is
not included in this patch.  This consists of changes to the display
device for making it 'separable'.  This change is needed for Igor's
linear shading work.
http://www.ghostscript.com/pipermail/gs-code-review/2004-May/004500.html

[src/gdevcdj.c 1.14, src/gdevcljc.c 1.7, src/gdevcmap.c 1.6, src/gdevdevn.c 1.17, src/gdevdevn.h 1.5, src/gdevdflt.c 1.23, src/gdevdsp.c 1.21, src/gdevmem.c 1.8, src/gdevp14.c 1.23, src/gdevp2up.c 1.6, src/gdevpbm.c 1.11, src/gdevpcx.c 1.7, src/gdevplnx.c 1.9, src/gdevpnga.c 1.9, src/gdevprn.c 1.15, src/gdevpsd.c 1.11, src/gdevrops.c 1.11, src/gdevupd.c 1.15, src/gdevxalt.c 1.11, src/gdevxcf.c 1.7, src/gdevxini.c 1.14, src/gsdevice.c 1.21, src/gslib.c 1.13, src/gxcmap.c 1.20, src/gxdevcli.h 1.32, src/gximag3x.c 1.16, src/gximage3.c 1.13, src/gxpcmap.c 1.12, src/zcolor.c 1.18, doc/Language.htm 1.85]

2004-05-25 10:41 Igor Melichev

Fix (pdfwrite) : Form XObject`s /BBox could contain reals in exponential format.

DETAILS :

Bug 687429 Form XObject`s /BBox may contain reals in exponential format.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.37]

2004-05-25 09:20 Igor Melichev

Fix an MSVC compiler warning.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.58]

2004-05-24 23:35 Ralph Giles

Add a missing header include for gsutil.h which provides the prototype  for bytes_compare(). Corrects a gcc warning.

[src/devs.mak 1.111, src/gdevpdte.c 1.57]

2004-05-24 17:56 Dan Coby

Fix for 687453 Problem with overprinting and shading.

DETAILS:

The given test file is a PDF file.  PDF allows for separate overprint
parameters for stroke and fill operations.  (There are also separate
parameters for other conditions in PDF.)  Usually this is handled by
the PDF interpreter by calling either setfillstate or setstrokestate
at the start of the handler for each operator.  However this call
was missing from the sh (shfill) handler.

[lib/pdf_draw.ps 1.81]

2004-05-24 12:21 Alex Cherepanov

Add /WhiteIsOpaque page device parameter to provide user interface to the
corresponding bbox device flag. Fix a bug introduced in gdevbbox.c v.1.9
(for bug 645531) that left bdev->white and bdev->black uninitialized,
resulting in black objects skipped as white.
Fix bugs 687410, 687478

[src/gdevbbox.c 1.17, doc/Devices.htm 1.74]

2004-05-20 17:06 Igor Melichev

Fix (pdfwrite) : Add Encoding element even if the font has no glyph.

DETAILS :

Debugged with the test file of the bug 687464
"Problem converting from PS to PDF. 2 latin characters did not convert properly." :
different PDFs generated with URW fonts and with Soft Horizon fonts
rather none of them were embeded.

The old code did not add a glyph to Encoding if the PS font has no glyph defined.
Due to that, if the source encoding uses an instand glyph,
the instandard glyph was not written to Differences,
causing a standard glyph erroneusely appeared instead the instandard glyph.
With this patch an Encoding element and a ToUnicode element are created in any case :
either the glyph is defined in the PS font, or not.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.56]

2004-05-20 07:41 Ralph Giles

Apply a recursive 'configure' step to the autoconf build to generate
required code for the jasper library.

DETAILS:

The jasper library also ships with an autoconf build framework for POSIX
systems. Unfortunately, it relies on this framework to generate a header
file with defines describing the local system. This header, located in
jasper/src/libjasper/include/jas_config.h can be generated by hand from
the jas_config.h.in template, but it must be available when we're directly
compiling the source as part of Ghostscript.

We could attempt to construct one of our own, but within the confines
of an autoconf build, using jasper's native configure is more robust.
We could also go ahead and use recursive make to build the library
natively, but we would need a static makefile for non-autoconf builds.

Jasper provides an alternate header, jas_config2.h for use with MSVC.

[src/configure.ac 1.46]

2004-05-20 07:34 Ralph Giles

Add the jasper include path when compiling the JPXDecode filter so the
headers can be found if they're not already installed on the system.
Required to compile in the jasper library source from a fresh distribution
of the third-party library.

[src/int.mak 1.126, src/lib.mak 1.182]

2004-05-19 11:09 Igor Melichev

Documenting the new implementation of shadings.

[doc/News.htm 1.145]

2004-05-18 13:42 Igor Melichev

A new implementation of shadings, step 79.

DETAILS :

Removed unused variables.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.74]

2004-05-18 11:07 Igor Melichev

A new implementation of shadings, step 78.

DETAILS :

Implementing gx_color_map_procs::is_halftoned and use it in shadings
to know whether linear color functions are applicable.

EXPECTED DIFFERENCES :

None.

[src/gdevp14.c 1.22, src/gdevplnx.c 1.8, src/gxcmap.c 1.19, src/gxcmap.h 1.8, src/gxshade6.c 1.73]

2004-05-18 10:36 Igor Melichev

A new implementation of shadings, step 78.

DETAILS :

Implementing gx_color_map_procs::is_halftoned and use it in shadings
to know whether linear color functions are applicable.

EXPECTED DIFFERENCES :

None.

[src/gdevp14.c 1.21]

2004-05-18 09:57 Igor Melichev

Documenting the new implementation of shadings.

[doc/Drivers.htm 1.45]

2004-05-17 17:27 Ralph Giles

Reword the description of the new shading implementation.

[doc/News.htm 1.144]

2004-05-17 12:24 Igor Melichev

A new implementation of shadings, step 77 (release candidate).

DETAILS :

1. A bug in is_quadrangle_color_linear caused an indeterministic choice of subdivision.
2. Provided a better order of filling wedges.
3. Mesh padding now stronger follows the V-boundary of a patch.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"self-intersect2.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"

[src/gxshade6.c 1.72]

2004-05-13 15:24 Alex Cherepanov

Remove unused label.
Partial fix for bug 687441.

[src/gdevwpr2.c 1.16]

2004-05-13 13:03 Igor Melichev

Documenting the new implementation of shadings, step 76.

[doc/News.htm 1.143]

2004-05-13 12:52 Igor Melichev

A new implementation of shadings, step 76.
Switching new radial shadings on.
Radial shadings render in 3...10 times faster.
Radial shadings are not longer restricted with 8bpc.

EXPECTED DIFFERENCES :

"442-01.ps"
"483-01.ps"
"Clarke Tate Manns Chinese.ai"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"

[src/gxshade4.h 1.35]

2004-05-13 12:46 Igor Melichev

A new implementation of shadings, step 75.

DETAILS :

This is a continuation to the previous patch :
  4. Optimized for constant color :
    Fix : pfs->monotonic_color was not properly restored.

EXPECTED DIFFERENCES :

"442-01.ps"
"464-01.ps"
"483-01.ps"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"STEUER-RollingMesh 1(linear).ai"

[src/gxshade6.c 1.71]

2004-05-13 11:40 Igor Melichev

A new implementation of shadings, step 74.

DETAILS :

In the enabled code :

1. Non-linear color quadrangles are subdivided into quadrangles.
   This complies the color approximation with the specified smoothness.
2. Skipped quadrangles and triangles outside the clipping area.
3. Fixed the 'midpoint' formula. It was wrong and coused excessive subdivision.

In the disabled code (NEW_RADIAL_SHADINGS 0 in gxshade4.h) :

1. Debugged Extensions.
2. mesh_padding and wedges with zero length sides were tested.
3. Skipped painting outside the clipping area.
4. Optimized for constant color.

Known problems left :
1. With self-intersecting patches, outer wedges may paint in a wrong order.
This can cause such dropout that a lower part of the patch penetrates
through the upper part in single pixels.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01.ps"
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"self-intersect2.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"

[src/gxshade1.c 1.31, src/gxshade4.h 1.34, src/gxshade6.c 1.70]

2004-05-12 21:33 Igor Melichev

A new implementation of shadings, step 73.

DETAILS :

The new code is disabled with NEW_RADIAL_SHADINGS in gxshade4.h .

The old implementation of the radial shading extensions appears
incompatible with the tensor representation of the radial shading
due to different spatial subdivision. Collisions at extension
boundaries caused dropouts.

Besides that, the old implementation
can't handle the case in which circles contact each another and one
circle is inside another. Also we suspect that with the old implementation
the trailing extension can overlap the shading when represented as "triangles".

This patch implements extensions with tensor patches.
Rather they have a constant color, we need the wedge logics
to work with them. Also we reworked the analyzis of
special cases of mutual placement of the base circles.

The new code works, but there are known problems :

1. Extensions to be tested systematically.
2. Debug mesh_padding and wedges with zero length sides.
3. Skip painting outside the clipping area.
4. Optimize for constant color.
5. Why "STEUER-RollingMesh 2(radial).ai-.pdf" generates so many triangles ?
6. Outer wedges may break the order of painting.

EXPECTED DIFFERENCES :

None.

[src/gxshade1.c 1.30, src/gxshade4.h 1.33, src/gxshade6.c 1.69]

2004-05-12 20:12 Igor Melichev

A new implementation of shadings, step 72.

DETAILS :

1. Another continuation for the bug in LAZY_WEDGES of the step 65 :
"color was desynchronized with vertices when filling a wedge."
Previous attempts to fix it appear wrong.
This one implements entirely different logics.
The division count is now a property of a division point.

2. Fixed the wrong order of colors in ln 2800 in the function "triangles".

EXPECTED DIFFERENCES :

"442-01.ps"
"483-01.ps"

[src/gxdtfill.h 1.26, src/gxshade4.h 1.32, src/gxshade6.c 1.68]

2004-05-12 18:08 Jack Moffitt

Fix regression reports (the previous commit accidentally did the exact
opposite of what we wanted).  Also, cleaned up the way the report is built
so that it is much less confusing.

[toolbin/tests/run_nightly 1.26]

2004-05-12 15:37 Alex Cherepanov

Avoid a numeric exception; throw /rangecheck when .getbitsrect operator is
invoked with raster width = 0.
Fix bug 687223.

[src/zdevice.c 1.8]

2004-05-12 11:33 Igor Melichev

A new implementation of shadings, step 72.

DETAILS :

1. A continuation for the bug in LAZY_WEDGES of the step 65 :
"color was desynchronized with vertices when filling a wedge." :
open_wedge_median did not set l->from_last_side.

2. A bug : Color linearity check missed the shading function linearity check.
Debugged with "MLC2\PROB322-shadings\Clarke Tate Manns Chinese-1.ai.pdf"
(the big yellow radial gradient) and NEW_RADIAL_SHADINGS 1.

EXPECTED DIFFERENCES :

"442-01.ps"
"464-01.ps"
"483-01.ps"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"STEUER-RollingMesh 1(linear).ai"

[src/gxshade6.c 1.67]

2004-05-12 00:04 Alex Cherepanov

Fix some warnings about unused variables and undeclared functions
generated by MSVC with warning level 3. Move the definition of WARNOPT
and add ifdef's.
Partial fix for bug 687441.

[DETAILS]
Although nmake overrides internal definitions when called from command line,
it doesn't do so when the makefile is invoked from Development Studio.

[src/dwimg.c 1.11, src/dwimg.h 1.8, src/dwmain.c 1.16, src/dwmainc.c 1.18, src/dwtrace.h 1.6, src/gdevm64.c 1.2, src/gdevwdib.c 1.8, src/msvc32.mak 1.56, src/msvccmd.mak 1.19, src/unistd_.h 1.11]

2004-05-11 20:48 Alex Cherepanov

GCC with -ffast-math compiles ang/90. as ang*(1/90.), losing precission.
This doesn't happen when the numeral is replaced with a non-const variable.
So we define the variable to work around the GCC problem.
Fix bug 687420.

[src/gsmisc.c 1.16]

2004-05-11 20:26 Alex Cherepanov

Ignore 0-length tables that occur in PDF files generated by Crystal.
Fix bug 687457.

[lib/gs_ttf.ps 1.38]

2004-05-11 11:13 Igor Melichev

A new implementation of shadings, step 70.

DETAILS :

Fixing a bug in fill_wedge_from_list_rec :
wedge vertices can't identify by their coordinates,
because dividing a short bar could get same coordinates as one of its end.
wedge_vertex_list_elem_t::level now works for the identification.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.h 1.31, src/gxshade6.c 1.66]

2004-05-11 10:41 Igor Melichev

A new implementation of shadings, step 69.

DETAILS :

Implementing radial shading with tensor shadings.

The new code is disabled with NEW_RADIAL_SHADINGS in gxshade4.h .
The new code works but it discovered a problem in fill_wedge_from_list_rec :
wedge vertices can't identify by their coordinates.
The problem appears an important bug to be fixed separately.

EXPECTED DIFFERENCES :

None.

[src/gspath.h 1.7, src/gspath1.c 1.9, src/gxshade1.c 1.29, src/gxshade4.h 1.30]

2004-05-06 19:06 Dan Coby

Correct a problem in the fix for 687418 detected by Russell Lang.  Also
make the routine check_device_separable public for use by the display
device.  The prototype is in gxdevice.h.

[src/gdevdflt.c 1.22, src/gxdevice.h 1.17]

2004-05-06 17:19 Dan Coby

Disable the fix for 687418.  This is causing many errors in the regression
tests.  These need to be investigated.

[src/gdevdflt.c 1.21]

2004-05-06 16:26 Jack Moffitt

Repress the full report except on Mondays.

[toolbin/tests/run_nightly 1.25]

2004-05-06 14:01 Igor Melichev

A new implementation of shadings, step 68.
Switching linear color device fucntions on.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01.ps"
"464-01.ps"
"478-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"BEST8-99-Path.fh7.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"self-intersect2.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"

[src/gxshade4.h 1.29]

2004-05-06 13:25 Igor Melichev

A new implementation of shadings, step 67.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
Provided a consistency of 'unlenear' to 'is_color_linear'

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.65]

2004-05-06 13:03 Igor Melichev

A new implementation of shadings, step 66.

DETAILS :

Improving the recognition of linear devices with a hack for a halftone check.
The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
Debugged with pkmraw.
This to be rivised by the color team.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.64]

2004-05-06 12:34 Igor Melichev

A new implementation of shadings, step 65.

DETAILS :

A bug in LAZY_WEDGES :
color was desynchronized with vertices when filling a wedge.

The bug was not detected because
the color difference appears small due to small wedges.
It appears big with USE_LINEAR_COLOR_PROCS 1 with -r300 483-01.ps.

EXPECTED DIFFERENCES :

300dpi :

"442-01.ps"
"446-01.ps"
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"gradmesh.ai"
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"
"442-01.ps"

72dpi:

"442-01.ps"
"446-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"gradmesh.ai"
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"

[src/gxshade6.c 1.63, src/gxshade4.h 1.28]

2004-05-06 08:41 Igor Melichev

A new implementation of shadings, step 64.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

Fixing various problems with linear color :
1. Clipping didn't work with linear color.
2. gx_default_fill_linear_color_scanline missed some clipping by X.
3. Zero smoothness caused an infinite recursion.
4. The number of device color components was wrong.

EXPECTED DIFFERENCES :

None.

[src/gdevdsha.c 1.9, src/gxclip.c 1.14, src/gxshade6.c 1.62]

2004-05-06 07:46 Ralph Giles

Limit the number of timing runs we're willing to do to detect the cache
size, preventing an infinite loop if the os timing calls never measure
appreciable elapsed time. After a patch from Patrick TJ McPhee. Bug 687095.

DETAILS:

It looks like there's a bug in some versions of FreeBSD which cause
time_clear() to always return 0, even though the loop is being run.
This is clearly incorrect behaviour of clock() on these systems,
or the user is mistaken in debugging the problem, since we've been
unable to reproduce. But in either case our code is arguably wrong.

The later measurements will obviously not detect a nonlinearity if
the timing loop continues to return 0. However, they will terminate
at MAX_BLOCK (4MB) and so the misdetection isn't egregious. It was
only the estimation of the measurement error that could loop forever.

[src/genarch.c 1.9]

2004-05-06 06:20 Dan Coby

Make check_device_separable private to avoid a warning from gcc.

[src/gdevdflt.c 1.20]

2004-05-06 05:49 Dan Coby

Fix for 687455.  The overprint logic creates a temporary device which is
used to initialize a set of procedures.  This temp device is only paritally
initialized.  The partially initialized device is being set up as a
forwarding device but the target device is not yet present.  This created
a problem when check_device_separable executed.  This change sets the temp
device to 'not separable' so check_device_separable does not try to do
anything.

[src/gsovrc.c 1.5]

2004-05-06 05:19 Igor Melichev

A new implementation of shadings, step 63.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

Fixing various problems with linear color :
1. Applyed compiler independent data types int32_t.
2. Implemented ends_from_fa with X-independent gradients,
   because the decomposiotion by color linearity breaks
   at coordinates which are not trapezoid corners.
   Added a comment to gxdevcli.h to document it.
3. X-gradient denominator was wrong.
4. X-gradient numerator left wrong from the step 58.
5. gx_default_fill_linear_color_scanline ignored the clipping by X.
6. A_fill_region missed the path bbox.
7. Implemented is_color_linear for a proper subdivision by color.
8. decompose_linear_color now applies a linear color
   instead fill_triangle_wedge. See a comment in fill_triangle_wedge.
   Also for mesh_padding.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.24, src/gdevdsha.c 1.8, src/gdevnfwd.c 1.22, src/gxdevcli.h 1.31, src/gxdtfill.h 1.25, src/gxshade1.c 1.28, src/gxshade6.c 1.61]

2004-05-06 05:17 Igor Melichev

Implementing is_monotonic for cubic interpolation functions (continued 2).

DETAILS :

Some monotonic functions were not recognized.
1. Fix : A bug (identifier conflict) in clamp_poles, dimension_monotonity.
2. Fix : Allow the reversed order of boundaries (gsfunc0.c ln 980-983).

EXPECTED DIFFERENCES :

464-01.ps

[src/gsfunc0.c 1.20]

2004-05-05 23:55 Dan Coby

Fix for 687418 WTS does not work with bitcmyk driver.  This fix
is applicable to most devices.

DETAILS:

WTS screening, overprinting, halftoning for more than five colorants
and the fast halftoning logic need to be able to create gx_color_index
values without using the encode_color routine.  This only works if a
device is 'separable'.  However, by default, most devices indicate
'unknown'.  This change implements a heuristic for checking if a
device is separable.  If so then it also determines the various
related parameter values (comp_shift, comp_bits, comp_mask).

[src/gdevdflt.c 1.19]

2004-05-05 22:52 Ralph Giles

Document that we no longer support loading truetype CJK fonts directly from
/Resources/CIDFont as worked in 7.0x for Japanese fonts. This has been replaced
by the more general, if less convenience, cidfmap mechanism. Closes bug 686949.

[doc/Fonts.htm 1.40, doc/Use.htm 1.108]

2004-05-05 09:45 Igor Melichev

A new implementation of shadings, step 62.

DETAILS :

1. Implemented gx_cspace_is_linear_in_line and applied it for
checking the stripe transversal color lnearity.
2. Generalized 'is_halftoned' to 'unlinear'.
3. is_color_span_v_linear must not apply when 'unlinear'.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.

[src/gscspace.c 1.15, src/gxshade4.h 1.27, src/gxshade6.c 1.60]

2004-05-05 09:02 Igor Melichev

A new implementation of shadings, step 61.

DETAILS :

1. is_color_span_v_linear allows wider stripes.
2. quadrangle_color_change doesn't yield color_change_gradient with USE_LINEAR_COLOR_PROCS.
   Thus it prefers color_change_linear, allowing bigger quadrangles.
Both changes improve the performance.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
In the enabled code removed redundant computations from quadrangle_color_change.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.59]

2004-05-05 09:01 Igor Melichev

Implementing is_monotonic for cubic interpolation functions (continued 1).

DETAILS :

1. Fix : subcurve expression applied wrong signs to t01, t11.
2. Suppress small noize while computing a subcurve.
Both changes recognize more monotonic curves.

EXPECTED DIFFERENCES :

464-01.ps

[src/gsfunc0.c 1.19]

2004-05-05 06:35 Igor Melichev

A new implementation of shadings, step 60.

DETAILS :

Define frac31 with int32_t to minimize compiler dependence.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.

[src/gxdevcli.h 1.30, src/lib.mak 1.181]

2004-05-04 21:31 Ralph Giles

Replace locally-defined (u)int32 typedefs with the stdint_.h types now
that they're universally available. This avoids conflict with typedefs
that are pulled in from sys/types.h on some systems. Bug 687404.

[src/gdevupd.c 1.14]

2004-05-04 18:14 Igor Melichev

A new implementation of shadings, step 59.

DETAILS :

Moved the device pointer from gs_fill_attributes to a separate argument
in order to simplify the implementation of forwarding devices.
A farwarding device 'clipper' works for almost all shadings.

Also fixed a bug in middle_frac31_color from the previous patch.
It was not detected because normally this function isn't called.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.23, src/gdevdsha.c 1.7, src/gdevnfwd.c 1.21, src/gxdevcli.h 1.29, src/gxdtfill.h 1.24, src/gxshade6.c 1.58]

2004-05-04 17:53 Igor Melichev

A new implementation of shadings, step 58.

DETAILS :

Replaced frac32 with frac31 to represent negative color difference.
We could do with frac32 and with additional arguments about the
ending color, but we don't want the performance flaw.
31 bits should be enough precise.
Also removed hacks about fitting negative differences into int32_t.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.22, src/gdevdsha.c 1.6, src/gdevnfwd.c 1.20, src/gxdevcli.h 1.28, src/gxdtfill.h 1.23, src/gxshade6.c 1.57]

2004-05-02 21:24 Ralph Giles

Add recent new files to the listing in the developer documentation.

[doc/Develop.htm 1.132]

2004-05-02 20:30 Ralph Giles

Add the JPXDecode implementation to the list of files in the documentation.

[doc/Develop.htm 1.131]

2004-05-02 19:37 Ralph Giles

Add a missing file to the testsuite documentation.

[doc/Testing.htm 1.24]

2004-05-02 19:26 Ralph Giles

Return the number of failures on exit so an external program can take action on the results. Previously, our tests always returned 0.
----------------------------------------------------------------------

[toolbin/tests/gstestutils.py 1.12]

2004-05-02 19:23 Ray Johnston

Remove dependency on python2.2. Tested with python 2.3.3. Primary problem
was that calendar module no longer has a localtime member, used time instead.

[toolbin/tests/check_all.py 1.6, toolbin/tests/check_comments.py 1.4, toolbin/tests/check_dirs.py 1.9, toolbin/tests/check_docrefs.py 1.10, toolbin/tests/check_source.py 1.10, toolbin/tests/dump_testdb 1.6, toolbin/tests/get_baselines 1.3, toolbin/tests/gscheck_all.py 1.6, toolbin/tests/gscheck_fuzzypdf.py 1.8, toolbin/tests/gscheck_pdfwrite.py 1.20, toolbin/tests/gscheck_raster.py 1.10, toolbin/tests/make_testdb 1.12, toolbin/tests/make_two_pdfversions 1.8, toolbin/tests/make_two_versions 1.13, toolbin/tests/revert_baseline 1.12, toolbin/tests/revert_pdfbaseline 1.10, toolbin/tests/run_nightly 1.24, toolbin/tests/run_regression 1.13, toolbin/tests/testdiff 1.5, toolbin/tests/update_baseline 1.13, toolbin/tests/update_pdfbaseline 1.9]

2004-05-02 19:00 Ralph Giles

Avoid failing when testing.cfg isn't available. This allows check_all.py to be run on a fresh checkout just by passing --gsroot=. on the commandline. Previously this option could only be used to override a required version in testing.cfg

[toolbin/tests/gstestutils.py 1.11]

2004-04-30 22:31 Ralph Giles

Provide a dummy 'make check' target in the autoconf build. Some users have requested this,
and it's available on the GPL 7.0x releases.

[src/Makefile.in 1.35]

2004-04-29 18:51 Dan Coby

Remove some more compiler warnings.  Found by Igor.  687441.

[src/gdevpsd.c 1.10]

2004-04-29 16:18 Igor Melichev

A new implementation of shadings, step 57.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
1. Likely QUADRANGLES 1 appears unusefil. Documenting that.
2. Implementing mesh_padding with linear color.
3. Minor improvements to conmments.
4. Stronger conditions against color stairs in triangle_by_4, color_change_small.

EXPECTED DIFFERENCES :

None.

[src/gxdevcli.h 1.27, src/gxshade4.h 1.26, src/gxshade6.c 1.56]

2004-04-29 13:47 Igor Melichev

A new implementation of shadings, step 56.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
The previous patch appears incomplete. Now fixed.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.h 1.25]

2004-04-29 13:40 Igor Melichev

A new implementation of shadings, step 55.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
Implemented a check whether the device halftones.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.55]

2004-04-29 12:38 Igor Melichev

A new implementation of shadings, step 54.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

1. Color computations were wrong.
2. clist didn't implement linear color functions.
   This patch stubs them, but fill_linear_color_trapesoid should write
   into clist.
3. The clipping rectangle was missed for shading Type 0, 5.

It still has problems with clipping with 446-01.ps .
Also likely we should replace frac32 with frac31 to provide signed values.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.21, src/gdevdsha.c 1.5, src/gdevnfwd.c 1.19, src/gxclist.c 1.13, src/gxdevcli.h 1.26, src/gxdtfill.h 1.22, src/gxshade1.c 1.27, src/gxshade4.c 1.26]

2004-04-29 06:14 Igor Melichev

A new implementation of shadings, step 53.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
This patch implements wedges with a linear color.
USE_LINEAR_COLOR_PROCS 1 passed a simple test with ppmraw.
Other devices are not yet supported due to problems with
checking for a halftoning.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.20, src/gxdtfill.h 1.21, src/gxshade6.c 1.54]

2004-04-29 04:37 Igor Melichev

A new implementation of shadings, step 52.

DETAILS :

Linear color passed a simple test with ppmraw, except wedges.
The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
This patch fixes numerows errors in the desabled code.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.19, src/gdevdsha.c 1.4, src/gscspace.c 1.14, src/gxdtfill.h 1.20, src/gxshade6.c 1.53, src/lib.mak 1.180]

2004-04-28 16:41 Dan Coby

Fix for 687441 New: MSVC warnings.  Correct some warning messages from
MSVC.

[src/devs.mak 1.110, src/gdevpsd.c 1.9, src/gdevdevn.c 1.16, src/gdevdevn.h 1.4]

2004-04-28 15:24 Igor Melichev

A new implementation of shadings, step 51.

DETAILS :
Colors were wrongly converted to frac32. Should do through device color.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
The new code is not debugged yet.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.52]

2004-04-28 09:39 Igor Melichev

A new implementation of shadings, step 50.

DETAILS :

1. gx_default_fill_linear_color_triangle wrongly checked for a large color span.
2. fill_linear_color_* procs were not set for clip devices.
3. cs_is_linear were defined with a wrong argument list.
4. Optimized the prototype of cs_proc_is_linear.
5. Gradient buffers were not allocated in gxdtfill.h .
6. Attaching fill_linear_color_triangle to triangle_by_4 in shadings.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
The new code is not debugged yet.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.18, src/gdevrops.c 1.10, src/gscspace.c 1.13, src/gxclip.c 1.13, src/gxclip2.c 1.10, src/gxclipm.c 1.12, src/gxcspace.h 1.12, src/gxdtfill.h 1.19, src/gxshade4.h 1.24, src/gxshade6.c 1.51]

2004-04-28 05:39 Dan Coby

Implement 687423  Implement SeparationOrder for psdcmyk device.

DETAILS:

The following changes are for implementing the SeparationOrder
parameter for the psdcmyk device.

The change consists of the following:

1.  Several routines which were duplicated in the spotcmyk
and psdcmyk devices were restructured to allow the use of
common subroutines.  As part of this effort the various
common DeviceN related parameters were separated into a
substructure (call devn_params).  This allows the use of
common routines even though the devices do not have the
same overall device description structure.

2.  Changes to the src/gdevpsd.c module for actually collecting
the SeparationOrder parameter data and then using it.  Note:
The treatment of separations is different for the process
color model colorants versus the spot colors.  The colorants for
the process color model do not have their order changed.  The
output file always starts with information for the CMYK channels.
If one of these colorants is not specified in the SeparationOrder,
then the output channel data in the file will simply be 'blank'.
Spot colors follow CMYK data.  They are rearranged.  Only the
spot colors specified are output.

3.  Several checks in src/gdevdflt.c and src/gxcmap.c had to
be removed or modified.  These checks were assuming that a
device with a single component uses a gray process color
model and a device with three components used RGB.

[src/gdevdevn.c 1.15, src/gdevdevn.h 1.3, src/gdevdflt.c 1.18, src/gdevpsd.c 1.8, src/gsdparam.c 1.13]

2004-04-28 04:06 Igor Melichev

A new implementation of shadings, step 49.

DETAILS :

1. gx_default_fill_linear_color_trapezoid wrongly subdivided big areas :
   the edge height was not reduced. It could cause an infinite loop.

2. Removed c_prec, x_prec.

The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.17, src/gxdtfill.h 1.18]

2004-04-28 02:35 Igor Melichev

A new implementation of shadings, step 48a.

DETAILS :

Removing the unused gdevdsha.h .

EXPECTED DIFFERENCES :

None.

[src/gdevdsha.h 1.2]

2004-04-28 02:26 Igor Melichev

A new implementation of shadings, step 48.

DETAILS :

Removing a code of dead development branches.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.h 1.23, src/gxshade6.c 1.50]

2004-04-27 08:26 Igor Melichev

A new implementation of shadings, step 47.

DETAILS :

Implementing gx_default_fill_linear_color_triangle, step 2 :
fixing interface problems.
The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.16, src/gxdevcli.h 1.25]

2004-04-27 08:12 Igor Melichev

A new implementation of shadings, step 46.

DETAILS :

Implementing gx_default_fill_linear_color_triangle.
The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.15, src/gxdevcli.h 1.24]

2004-04-27 06:04 Ralph Giles

Add makefile support for compiling in the jasper JPEG 2000 library,
needed to support the JPXDecode filter in PDF 1.5. Currently only
enabled in the autoconf build, but porting the changes to other top-level
makefiles should now work.

[src/Makefile.in 1.34, src/configure.ac 1.45, src/gs.mak 1.26, src/jasper.mak 1.1, src/lib.mak 1.179]

2004-04-27 06:01 Ralph Giles

Correct two typos in the jasper local source directory detection. It was
erroneously resetting the jbig2dec local source directory and not reporting
the found location correctly.

[src/configure.ac 1.44]

2004-04-27 05:43 Igor Melichev

A new implementation of shadings, step 45.

DETAILS :

Implementing a linear color for filling a trapezoid.
This patch provides necessary data exchange.
The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.14, src/gdevdsha.c 1.3, src/gdevnfwd.c 1.18, src/gxdevcli.h 1.23, src/gxdtfill.h 1.17, src/lib.mak 1.178]

2004-04-23 12:30 Alex Cherepanov

Keep calculation in signed types to avoid conversion of the negative
int to the big positive long, which caused infinite loop on Alpha in
t1_hinter__adjust_matrix_precision() inline function.
Fix bug 687417.

[src/gxhintn.c 1.48]

2004-04-22 06:38 Ralph Giles

Document the use of .setpdfwrite and the relation of vmthreshold to the
accumulation of shared object data in the pdfwrite device. Closes bug
687409.

[doc/Language.htm 1.84, doc/Ps2pdf.htm 1.67, doc/Use.htm 1.107]

2004-04-17 18:30 Igor Melichev

A new implementation of shadings, step 44.

DETAILS :

The function fill_pixel appears unuseful.
Now it is replaced with fill_linear_color_scanline.
This patch also defines a default implementation.

EXPECTED DIFFERENCES :

None.

[src/gdevdflt.c 1.17, src/gdevdsha.c 1.2, src/gdevnfwd.c 1.17, src/gxdevcli.h 1.22, src/gxdevice.h 1.16, src/lib.mak 1.177]

2004-04-15 22:50 Igor Melichev

Implementing color mapping linearity checks, step 2.

DETAILS :

Fix the color index decomposition in gx_cspace_is_linear_in_triangle.

EXPECTED DIFFERENCES :

None.

[src/gscspace.c 1.12]

2004-04-15 17:26 Ray Johnston

Fix to make sure that both stroke (CA) and non-stroke (ca) opacity is set.
Support for customer #32 that wants to create transparent effects in PDF
from PostScript input.

DETAILS:

Previously the opacity was set for one or the other (whichever was first)
and only updated when the value changed. Since the 'state' only retained
a single value, the following PS snippet would not set the CA value as it
should to 0.5. Since we never use the 'b/B' fill + stroke painting methods
(our graphics library currently has no device function for this), a PDF
that contains a 'b' method will be decomposed into a 'f' followed by 's'
operation, setting the opacity from the PDF interpreter's retained ca/CA
between the operations.

PostScript snippet to test this:

<< /CompatibilityLevel 1.4 >> setpagedevice
	% work around rectfill mapping directly to device fill_rectangle
/rectfill { gsave 4 2 roll moveto 1 index 0 rlineto
  0 exch rlineto neg 0 rlineto closepath fill grestore
} bind def
	% Do some background -- not transparent painting mode
0 0 0 setrgbcolor 0 0 600 700 rectfill
.7 .7 .7 setrgbcolor 200 0 400 700 rectfill
1 1 1 setrgbcolor 400 0 200 700 rectfill
	% Go to a transparent painting mode
/Normal .setblendmode .5 .setshapealpha
	% paint some shapes transparently
.9 .8 .1 setrgbcolor 100 100 450 450 rectfill
	% The next stroke is non-transparent w/o the patch
.2 .2 .9 setrgbcolor 50 setlinewidth 50 700 moveto 450 -650 rlineto stroke
.7 .setshapealpha
.9 .3 .3 setrgbcolor 50 setlinewidth 50 50 moveto 450 650 rlineto stroke
showpage quit

[src/gdevpdfg.c 1.49]

2004-04-15 16:47 Ray Johnston

Correction to previous commit that caused Subtype value to be consumed
if it was not a null name. Valid files would fail.

[lib/pdf_font.ps 1.65]

2004-04-14 00:02 Dan Coby

Fix 687189 for bbox_forward_add_rect infinite recursion.
This problem caused segment faults or apparent hangs with
the x11alpha device.  This fix also works for 656414
segfault when using x11alpha

DETAILS:

The problem was due to the bounding box device creating
more and more bounding box devices in the device chain
when the overprint compositor was being used.  The x11alpha
device uses the bounding box device.  The overprint logic
uses the 'create compositor' logic when a change is made
in the status of the overprint or overprint mode parameters.
However a new compositor is not created each time.  Instead
the overprint device simply updates its parameters.  The
bounding box device has its own create compositor.  This
routine would call its target device's create compositor
routine and then wraps a new bounding box device around the
target's compositor.  The combination of many create
compositor calls from the overprint logic and the fact that
the bounding box device adds a new bounding box device
could result in hundreds of bounding devices in the chain.

The fix consists of checking if the bounding box's target
device actually created a new compositor device.  Only when
a new compositor was added is a new bounding box also added
to the chain.

[src/gdevbbox.c 1.16]

2004-04-13 23:25 Dan Coby

Fix for 687402 Missing color on annots.pdf.  This is actually
not an error.  Instead it is due to some confusion about the
displaying of link annotations.

DETAILS:

To prevent confusion, the following two paragraphs of explanation
were added to the first page of the examples/annots.pdf example file.

"IMPORTANT NOTE ABOUT THIS PAGE: This page was created for the testing
 the display of link annotation parameters. The file was created using
 Adobe Acrobat 5.0 (and modified using Acrobat 6.0). The displaying of
 each annotation is specified in the annotation. By default, Acrobat sets
 link annotations so that they are normally displayed by 'viewer'
 applications. They are not normally displayed in printed output. That is
 the case with these annotations.

 Ghostscript checks the display specifications for each annotation. By
 default, Ghostscript assumes that the output is 'printed' if the
 'OutputFile' parameter is defined. Adding '-dPrinted=false' to the command
 line will force Ghostscript to display 'viewer' annotations in all output.
 Adding '-dPrinted=true' will disable the displaying of these annotations."

[examples/annots.pdf 1.2]

2004-04-13 16:32 Ray Johnston

Handle (yet another) invalid PDF that Adobe Acrobat can open. If the
Font /Subtype is / then assume Type1. Also issue a **** WARNING message.
Bug #687422 for Artifex customer #670.

DETAILS:

This is a simple patch, with known limitations if the actual font type
cannot be handled by the buildType1 procedure. Only Type1 and MMfonts
will work correctly. Since the PDF is invalid, we will leave more vigorous
handling until another different PDF file surfaces.

[lib/pdf_font.ps 1.64]

2004-04-10 17:14 Alex Cherepanov

Use ld_length instead of length because RMap is a long dictionary.
Fix bug 687363.

[toolbin/pdfinflt.ps 1.5]

2004-04-09 06:20 Igor Melichev

A new implementation of shadings, step 44.

DETAILS :

Propagate return codes frpom patch_color_to_device_color.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.49]

2004-04-08 16:18 Ralph Giles

Correct DOS line endings accidentally committed to the repository.
Bug 687415.

[lib/dumphint.ps 1.2, src/dwdll.c 1.7, src/dwimg.c 1.10, src/dwnodll.c 1.6, src/errors.h 1.10, src/gp_dosfs.c 1.17, src/gp_vms.c 1.38, src/gscolor.c 1.13, src/gscolor1.c 1.10, src/math_.h 1.7, src/windows_.h 1.6, src/zfont42.c 1.19, toolbin/tests/fuzzy.c 1.14]

2004-04-08 07:59 Igor Melichev

Implementing color mapping linearity checks, step 1.

DETAILS :

Color mapping linearity check rutines will be used to improve
the performance and quality of shadings. They check
whether a color mapping is quazi-linear within a subdomain.
The subdomain is specified as a convex hull of a set of colors.

This patch defines prototypes and the default implemetation.
They are not called and not debugged.
The purpose of this commit is a codebase synchronization before a project switch.

EXPECTED DIFFERENCES :

None.

[src/gscdevn.c 1.16, src/gscolor2.c 1.20, src/gscpixel.c 1.11, src/gscscie.c 1.11, src/gscsepr.c 1.23, src/gscspace.c 1.11, src/gsicc.c 1.13, src/gspcolor.c 1.13, src/gxcspace.h 1.11]

2004-04-07 15:10 Raph Levien

Fix: Disables platfonts when antialiasing is in effect. Improves rendering
quality, and fixes bug 687368.

[src/gxchar.c 1.42]

2004-04-02 14:21 Igor Melichev

Fix (pdfwrite) : /XObject <<-1 0 R>> was written to a pattern dictionary.

DETAILS :

Bug 687396 "PDF Conversion of PS doc fails with large image"
happened to a delayed object ID assignment.
Delay adding the resource until an ID is assigned.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfj.c 1.30]

2004-04-02 07:06 Igor Melichev

Fix : Restoring the non-cache-device constraint in setcolor.

DETAILS :

It was removed by a recent patch, but PLRM3 page 215 requires it.

EXPECTED DIFFERENCES :

None.

[src/gscolor2.c 1.19]

2004-04-02 02:19 Ray Johnston

Dump output from 'attrib -H dosdefault' to the bit bucket (nul:) to
eliminate a potentially confusing warning.

[src/msvccmd.mak 1.18]

2004-04-01 20:39 Igor Melichev

Fix (Type 1 hinter) : Skip empty hint ranges, improved.

DETAILS :

The previous patch caused a regression with 86554321.pdf .
This one fixes that.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.47]

2004-04-01 19:58 Igor Melichev

Fix (Type 1 hinter) : Skip empty hint ranges.

DETAILS :

Bug 687393 "Hang with 8.14 from command line".
The test document embeds a font with a hint mask,
which defines a stem range with 'closepath' only.
t1_hinter__skip_stem couldn't handle this case,
because we exclude 'closepath' from the pole list.
We believe that the font is buggy, but provide a tolerance.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.46]

2004-04-01 13:35 Igor Melichev

Fix : Cygwin/gcc compiler warnings.

DETAILS :

./src/gstext.c:83: warning: suggest explicit braces to avoid ambiguous `else'

EXPECTED DIFFERENCES :

None.

[src/gstext.c 1.17]

2004-04-01 13:23 Igor Melichev

Fix : MSVC6 compiler warnings.

DETAILS :

An "initialized data" warning appeared when MSVC6 performs a release build
with inline optimizations on (The inline optimization inlines small function bodies,
being not marked with the inline keyword).

1. The "uninitialized data" warning in alloc_name_index_is_since_save
in isave.c was a real bug with an indeterministic behavior :
nref.tas.rsize was accessed by names_index_inline from names_string_inline
from alloc_name_is_since_save from alloc_name_index_is_since_save
with no advance initialization.
This bug was not detected because this function is only
invoked when a 'save' unwinds glyph names added to an incremental font,
but doesn't unwind the font - we have no such examples.
IMO existing PS drivers never cvreate such documents.

2. The "uninitialized data" warning in cos_array_add_object appears due to
cos_copy_element_value copies entire 'value' when another variant of an union
has a bigger size and was uninitialized.
The copying of the uninitialized data looks not harmful due to the 'int' type,
but generally it could cause an interrupt on platforms with a tagged memory.
We prefer to suppress the warning with an unuseful initialization,
because the processor time consumption is pretty small and happens not frequently.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfo.c 1.29, src/isave.c 1.10]

2004-04-01 11:43 Igor Melichev

A new implementation of shadings, step 43.

DETAILS :

Defining new device virtual functions for filling with a linear color.
This only defines but never uses them.

EXPECTED DIFFERENCES :

None.

[src/gdevdflt.c 1.16, src/gdevdsha.c 1.1, src/gdevdsha.h 1.1, src/gdevnfwd.c 1.16, src/gxdevcli.h 1.21, src/gxdevice.h 1.15, src/lib.mak 1.176]

2004-04-01 11:30 Igor Melichev

Fix : setcachedevice must not depend on a BuildChar color and on gx_show_text_retry.

DETAILS :

1. The bug 687391 "assert src/gxccman.c:557 again" happened
   because BuildChar changed the current color before
   setcachedevice calls compute_glyph_raster_params,
   and the raster params computed differently than
   during the advance glyph raster cache lookup.

2. Removed
     if (pgs->in_cachedevice)
 	return_error(gs_error_undefined);
   from gs_setcolor,
   because I can't guess it's reason/purpose.
   It looks as a rudiment from a pre-repository versions.

3. The assertion also failed with
   "-dTextAlphaBits=4 -dLastPage=1 comparefiles\xgfddg.pdf".
   In gx_add_cached_char added the case "cc->pair == NULL" :
	    /* gx_show_text_retry could reset it when bbox_draw
	       discovered an insufficient FontBBox and enlarged it.
	       Glyph raster params could change then. */

4. gx_show_text_retry must reset penum->pair due to possible FontBBox change,
   see (3).

5. The cc_set_pair macro to be applied for changing cc->pair
   to provide consistent data for font_dir_reloc_ptrs.

EXPECTED DIFFERENCES :

None with regular regression test.

Normal with -r72 -dTextAlphaBits=4 -dAlignToPixels=0 :

"213-01.ps"
"214-01.ps"
"244-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"258-01.ps"
"270-01.ps"

Normal with -r300 -dTextAlphaBits=4 -dAlignToPixels=0 :

"245-07.ps"
"270-01.ps"

-dTextAlphaBits=2 : not tested.
-dAlignToPixels=1 : not tested.

[src/gscolor2.c 1.18, src/gxccache.c 1.30, src/gxccman.c 1.25, src/gxchar.c 1.41, src/gxtext.h 1.15]

2004-04-01 06:46 Ray Johnston

Fix for premature freeing of a 'image' device (makeimagedevice or the
similar makewordimagedevice). Bug #687227. Thanks to Alex Cherepanov for
the patch.

[src/gsdevmem.c 1.6]

2004-04-01 06:14 Ray Johnston

Fix for inherited MediaBox for the page Group dictionary (transparency).
Bug #687293. Thanks to Felix Pahl for the analysis and fix.

[lib/pdf_main.ps 1.86]

2004-04-01 04:51 Dan Coby

Fix for 687390 GhostScript 8.11 inserts rendering artifacts
with GIFs as source.  The actual problem is an error which
resulted in a pale yellow being shown as a pale pink.  This
occurs when dithering on devices which use a 256 color palette.

DETAILS

The halftoning logic assumes that there are the same number
of shades of each color.  However the 256 color palette
devices were using a 7x7x5 color cube.  I.e. there were 7
shades of red and green, however there were only 5 shades of
blue.  The data in the device's color_info (max_color, max_gray,
dither_colors, and dither_grays) indicated that there were
7 shades.  The halftoning logic, using this information, was
attempting to display the given pale yellow color by dithering
between 6/7ths and 7/7ths of each component.  However the
encode_color routine returned colors which include solid blue
for all cases.  This biased the resulting halftoned color
toward blue.

The fix involves changing the 256 color palette devices to
use a 6x6x6 color cube.  The same routine pc_8bit_map_rgb_color
is used for all of the 256 color palette devices.  Thus the
change consists of modifying this routine and the associated
pc_8bit_map_color_rgb routine.  The specification of each of
the devices has to be changed to represent the change in the
cube size.

[src/gdevbmp.c 1.9, src/gdevcgm.c 1.10, src/gdevp2up.c 1.5, src/gdevpccm.c 1.6, src/gdevpccm.h 1.7, src/gdevpcx.c 1.6, src/gdevpng.c 1.10, src/gdevsvga.c 1.6]

2004-03-25 17:35 Igor Melichev

Fix (PDF interpreter) : Stack balance was broken when a CID font is not embedded.

DETAILS :

It was broken since pdf_font.ps rev.1.59.
Bug 687384 "/invalid font in -dict-".

EXPECTED DIFFERENCES :

None.

[lib/pdf_font.ps 1.63]

2004-03-25 14:46 Igor Melichev

Fix (Type 1 hinter) : Use a weaker condition for horizontal stem recognition.

DETAILS :

Alignment zones were not applied due to a quazy horizontal segment
was not considered as a hiorizontal one. We think that the font
has an inaccurate glyph design, but we provide more tolerance.
Likely Adobe does the same.

Bug 687385 "fonts different heights with 75 dpi".

EXPECTED DIFFERENCES :

72 dpi :

251-01.ps
289-01.ps
455690.pdf
86554321.pdf
alphabet.ps
dave.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
prob.pdf"
RealCities.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf

300 dpi :

033-52-5873.pdf
289-01.ps
455690.pdf
86554321.pdf
alphabet.ps
bulletin.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
pdfopt_bug.pdf
prob.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf

[src/gxhintn.c 1.45]

2004-03-24 23:46 Ralph Giles

Remove an empty '#' line. Closes bug 687377.

[src/stdint_.h 1.3]

2004-03-24 08:56 Ray Johnston

Fix for unnecessary re-link when building on Windows. Bug #687059.

DETAILS:

Since 'dosdefault' was not being made, make always did the link. Create
a dummy "result" being a file named dosdefault and make works as Igor
wants.

[src/msvccmd.mak 1.17]

2004-03-24 07:30 Igor Melichev

Fix (pdfwrite) : TK was written into a charproc.

DETAILS :

Bug 687382 "fonts not printed with pdf 1.4".

EXPECTED DIFFERENCES :

None.
Ghostscript PDF interpreter appears insensible to it. Adobe does.

[src/gdevpdfg.c 1.48]

2004-03-24 07:29 Ralph Giles

Make use of the SYS_TYPES_HAS_STDINT_TYPES define we set in the configure script. After a patch
from Alex Cherepanov. Bug 687377.

Also, adopt elif, since we've been using it elsewhere to no ill effect.

[src/stdint_.h 1.2]

2004-03-24 06:38 Ray Johnston

Fix for incorrect Annotation scaling when an Appearance (/AP) had
scaling that was not unity (1) and the Subtype was not /Stamp.
Fixes Bug #687288 for customer #32.

DETAILS:

The scaling difference in the annotation (object 14 0) was due to
Ghostscript not recognizing the bsiTextStamp annotation Subtype.

Careful reading of the Adobe PDF specification says that if there
is an Appearace stream (/AP dict), then the Form XObject should be
scaled using the method that we perviously only used for /Stamp
Subtype annotations (calcstampscale). The section of the PDF 1.5
Reference Manual is 8.4.4.

The patch is fairly simple, but testing of the regression suite
showed one file, foo.pdf, that was missing the require /Rect entry
in the Annot dict. The patch includes a check and warning for this
problem.

EXPECTED DIFFERENCES:

With this patch, some of the regression files will have slightly
different scaling for some of the annotations, but the differences
are all too small to compare to Adobe. The largest variations are
seen with annots.pdf (our test file) where the scaling ranges from
a low of 0.979191 to a high of 1.01636. The files are:

filename                        scaling range (was 1)
01_001.PDF                      1.0
SyscoCorrugatedprintcard.pdf    1.0 .. 1.00268
annots.pdf                      0.979191 .. 1.01636
rf1025.PDF                      0.998471

IMO, these are all close enough to be considered progressions.

[lib/pdf_draw.ps 1.80]

2004-03-24 06:20 Ralph Giles

Adobe no longer provides a public link to DistillerParameters.pdf. Link to a hopefully somewhat
stable directory from which the inspired user can register and download the documentation.

[doc/Ps2pdf.htm 1.66]

2004-03-24 06:12 Dan Coby

Fix for 687364 rangecheck in buildshading2 from Quark XPress PS file.
This fix involves the creation of the findcmykcustomcolor and
setcustomcolor functions.

DETAILS:

Ray found that the error message was due to an invalid shading
dictionary being given to shfill.  The dictionary has a function
which has a single input and a single output.  The numbers are
determined from the sizes of the Domain and Range arrays.  Since
the shading dictionary is using a DeviceCMYK color space, Ghostscript
is generating a rangecheck since the function does not have four
outputs.

The file is generating an invalid shading dictionary.  Specifically
it generates:

sh:  << /Coords [0 0 0 1] /ColorSpace [/DeviceCMYK] /Function <<
/BitsPerSample 8 /Ra
nge [0 1] /FunctionType 0 /Domain [0 1] /DataSource
(\200\200\200\201\201\202\202\203
\203\204\204\205\205\206\206\207\207\210\210\211\211\212\212\213\213\214\214
\215\215\
216\216\217\217\220\220\221\221\222\222\223\223\224\224\225\225\226\226\227\
227\230\2
30\231\231\232\232\233\233\234\234\235\235\236\236\237\237\240\240\241\241\2
42\242\24
3\243\244\244\245\245\246\246\247\247\250\250\251\251\252\252\253\253\254\25
4\255\255
\256\256\257\257\260\260\261\261\262\262\263\263\264\264\265\265\266\266\267
\267\270\
270\271\271\272\272\273\273\274\274\275\275\276\276\277\277\300\300\301\301\
302\302\3
03\303\304\304\305\305\306\306\307\307\310\310\311\311\312\312\313\313\314\3
14\315\31
5\316\316\317\317\320\320\321\321\322\322\323\323\324\324\325\325\326\326\32
7\327\330
\330\331\331\332\332\333\333\334\334\335\335\336\336\337\337\340\340\341\341
\342\342\
343\343\344\344\345\345\346\346\347\347\350\350\351\351\352\352\353\353\354\
354\355\3
55\356\356\357\357\360\360\361\361\362\362\363\363\364\364\365\365\366\366\3
67\367\37
0\370\371\371\372\372\373\373\374\374\375\375\376\376\377) /Order 1 /Size
[256] >> /S
hadingType 2 >>

The file was sent into Adobe Distiller 6.0.  Inside the resulting
PDF file there is a very different shading dictionary:  Specifically:

/sh: << /ColorSpace [/Separation /MEZZO__1 /DeviceCMYK -array-] /Coords [0 0
0 1] /Function << /Decode [0 1] /FilePosition 460412 /Range [0 1] /Filter
/FlateDecode /BitsPerSample 8 /Encode [0 255] /Length 255 /FunctionType 0
/File -file- /Domain [0 1] /DataSource
(\200\200\200\201\201\202\202\203\203\204\204\205\205\206\206\207\207\210\21
0\211\211\212\212\213\213\214\214\215\215\216\216\217\217\220\220\221\221\22
2\222\223\223\224\224\225\225\226\226\227\227\230\230\231\231\232\232\233\23
3\234\234\235\235\236\236\237\237\240\240\241\241\242\242\243\243\244\244\24
5\245\246\246\247\247\250\250\251\251\252\252\253\253\254\254\255\255\256\25
6\257\257\260\260\261\261\262\262\263\263\264\264\265\265\266\266\267\267\27
0\270\271\271\272\272\273\273\274\274\275\275\276\276\277\277\300\300\301\30
1\302\302\303\303\304\304\305\305\306\306\307\307\310\310\311\311\312\312\31
3\313\314\314\315\315\316\316\317\317\320\320\321\321\322\322\323\323\324\32
4\325\325\326\326\327\327\330\330\331\331\332\332\333\333\334\334\335\335\33
6\336\337\337\340\340\341\341\342\342\343\343\344\344\345\345\346\346\347\34
7\350\350\351\351\352\352\353\353\354\354\355\355\356\356\357\357\360\360\36
1\361\362\362\363\363\364\364\365\365\366\366\367\367\370\370\371\371\372\37
2\373\373\374\374\375\375\376\376\377) /Size [256] >> /ShadingType 2 >>

This dictionary has a Separation color space.  The given function
is a reasonable function to use with the Separation color space.
As Ray mentioned, it is not correct for a DeviceCMYK color space.

The file is generating a different dictionary for the two interpreters.
In the case of Ghostscript, the dictionary is invalid,

Backtracking through the various procsets inside of the given file
shows that is a mess of function definitions, followed by replacement
of the functions with new definitions.  Some of it may be Quarks.
Some of it is labeled:

%%BeginResource: file Jaws_custom_colour_blend_level3_emulation 2.1 0

The results of the search are:

1.  Ghostscript does not define 'setcustomcolor' but Adobe Distiller
6.0 does define it.

2.  The procsets in the file do provide a definition for
setcustomcolor.  Actually the file provides about 16 versions of
setcustomcolor.  However the versions provided in the file do
not work.

The PLRM does not mention setcustomcolor.  However it is
described in Adobe's "Technical Note #5044 Color Separation
Conventions for PostScript Language Programs".  TN 5044 says:

"The following "operators" are not defined in the PostScript
Language Reference Manual, but should be used as pseudo-operators
in your PostScript language output. Separation applications from
Adobe Systems and other vendors will redefine these convention
operators to separate your documents.  Your application should
conditionally define procedures with these special names, as shown
later in this document."

The fix to the problem is to provide the functions:
findcmykcustomcolor and setcustomcolor.  These are placed at the
end of the lib/gs_lev2.ps.  They are placed there because the
implementation requires Separation color spaces which is a level
2 feature.

[lib/gs_lev2.ps 1.31]

2004-03-23 12:30 Igor Melichev

Fix : GenericResourceDir was not listed in PermitFileReading.

DETAILS :

Problems happened when gs/lib is specified with -I, and gs/Resource is not.
Bug 687381 "pdfwrite can't start with -dSAFER -Id:/path/lib".

EXPECTED DIFFERENCES :

None.

[lib/gs_init.ps 1.106]

2004-03-23 06:59 Ralph Giles

Correct a number of warnings.

DETAILS:

Apply const appropriately so gcc doesn't warn about assignment of string
literals.

Remove an inappropriate const in a function argument.

ifdef out the debug printout function since it's not called without
JPX_DEBUG.

[src/sjpx.c 1.8]

2004-03-22 01:23 Ralph Giles

SunOS 5.9 does not properly replace files with ln -sf. Unlink the
existing files instead. Closes bug 687378.

[autogen.sh 1.4]

2004-03-21 22:35 Ray Johnston

Fix for a long standing problem that could cause characters to be dropped
when reading a file with the 'read' operator. Bug #687374 for customer #310.

DETAILS:

This was caused by the zread function reading the character (sgetc)
prior to invoking the 'push' macro which could return with
e_stackoverflow (discarding the character). The stackoverflow can
happen more frequently than at MaxOpStack level since the stack
is allocated as blocks, using the e_stackoverflow to signal the
need to add more stack blocks, then retrying the operation.
Fix for characters dropped from a file when using the 'read' operator.
Bug #687374 for customer #310.

DETAILS:

This was caused by the zread function reading the character (sgetc)
prior to invoking the 'push' macro which could return with
e_stackoverflow (discarding the character). The stackoverflow can
happen more frequently than at MaxOpStack level since the stack
is allocated as blocks, using the e_stackoverflow to signal the
need to add more stack blocks, then retrying the operation.

[src/zfileio.c 1.16]

2004-03-19 10:08 Igor Melichev

Fix (TT interpreter) : Subglyphs could be placed to wrong coordinates.

DETAILS :

1. When a subglyph position is specified with a reference to an outline point,
the index of the point was interpreted wrongly and could use an
undefined data with an indeterministic result.

Bug 687366 "Font missing umlaut".

2. Shifting a subglyph, matrices like [xx 0 0 1 0 0] were misinterpreted as identity.

EXPECTED DIFFERENCES :

Testform.v1.0.2.pdf - a progression with umlaut over 'u' in the word 
"Drummer".

[src/ttfmain.c 1.27]

2004-03-19 09:52 Igor Melichev

Fix (pdfwrite) : Zero text length caused an access to an uninitialized data.

DETAILS :

Detected by Dan with MSVC .NET 2003.
Rather the result did not depend on the data,
the access could cause a floating point interrupt.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.55]

2004-03-19 08:30 Ray Johnston

Fix to implement PDF specification for '/' as a valid name as opposed to
the PS token scanning. Previously //name would be incorrectly scanned as
an immediately evaluated name rather than two names '/' and '/name' which
is correct. Fixes Bug #687277 for customer #440.

DETAILS:

Care is taken to reset the scanner behaviour after a PDF file is finished
and also after an invalid number is scanned. Note that to reset the flag,
the parameter must be set to 'null', not 'false' due to the implementation
in the ztoken.c. Caveat impelementor.

Previously the PDFScanRules was set when an invalid number was found and
was never reset, so this may result is *LOTS* of pdfformaterror messages
for files that have lots of invalid format numbers, but that's what they
get. If this is ever a problem, reseting the PDFScanInvNum can be moved
to pdf_main.ps where PDFScanRules is set to null.

No expected differences.

[lib/pdf_base.ps 1.42, lib/pdf_main.ps 1.85, src/iscan.c 1.17, src/iscan.h 1.9, src/iscannum.c 1.8, src/ztoken.c 1.13]

2004-03-19 05:37 Ralph Giles

Rename the DEBUG_JPX symbol to JPX_DEBUG to match the others we've
defined for the JPXDecode source.

[src/sjpx.c 1.7]

2004-03-19 05:36 Ralph Giles

Correct our YCrCb to RGB conversion code. Subtract the proper bias to
center the chromaticity channels around zero if they are returned
unsigned. Move the clamp routines to after the conversion to RGB where
it does some good. Thanks to Raph Levien for his help with this code.

We now use our conversion code by default, since there are some problems
with the jasper library's conversion on big-endian platforms. The jasper
conversion can be reenabled by defining JPX_USE_JASPER_CM in the
preprocessor.

[src/sjpx.c 1.6]

2004-03-18 17:56 Ray Johnston

Fix name of file in raster directory so that update_pdfbaseline will be
run when needed (when new files are added).

[toolbin/tests/gscheck_pdfwrite.py 1.19]

2004-03-18 16:59 Igor Melichev

A new implementation of shadings, step 43.

DETAILS :

1. An optimization :

If an area has a monotonic color,
each subarea has a monotonic color as well,
so the color monotonity doesn't need to recompute.
Doing so because the color monotonity function is not fast
when appied to a ShadingType 1 with a bicubic color interpolation.

2. Bug: is_color_monotonic returned 'true' when the intrval
has zero width by the 1st coordinate.
This is wrong for with ShadingType 1, which uses a 2-argument function.
( The check was a rudiment from a 1 month old implementation of fn_Sd_is_monotonic,
  which returned 'false' when the low boundary is at the end of some cell,
  and the upper boundary is at the beginning of the next cell.
  Actually this case is a zero width interval and the function must return true.
)

EXPECTED DIFFERENCES :

A minor difference in colors :

442-01.ps
464-01.ps
Clarke Tate Manns Chinese.ai
STEUER-RollingMesh 1(linear).ai

[src/gxshade4.h 1.22, src/gxshade6.c 1.48]

2004-03-18 12:33 Igor Melichev

Implementing is_monotonic for cubic interpolation functions.

DETAILS :

The old code ignores extremes of a cubic interpolation function
(except ones at a cell boundary).
It could cause a wrong rendering of shadings with replacing a
randomly big part of the shading near an extremum with a constant color.
The new code fixes that.

The new code caches the interpolation coefficients.
This may cause problems if the function data stream is
modified after the function is build. Likely this must not cause
problems due to gs/lib caches the stream with ReusableStreamDecode.
Also we don't know practical cases.
POLE_CACHE_IGNORE 1 avoids this problem with some slowdown,
(the slowdown exponentially grows with >=3 arguments,
but again we don't know practical examples with >=3 arguments).

The configuration flag POLE_CACHE allows to revert to the old code.

Bug 687352 "is_monotonic isn't implemented for 3d order sampled function".

EXPECTED DIFFERENCES :

464-01.ps - A minor difference in color.

[src/gsfunc0.c 1.18, src/gsfunc0.h 1.6]

2004-03-17 23:06 Ralph Giles

Clamp and origin shift the chromaticity values in our JPXDecode filter's
YUV to RGB conversion code. This still does not produce correct output
with libjasper's output, but is an improvement. This change affects
disabled code only.

[src/sjpx.c 1.5]

2004-03-16 11:39 Igor Melichev

Fix (pdfwrite) : A floating point interrupt.

DETAILS :

MSVC7 applies a floating point (FP) operations to copy FP data.
This may cause interrupts if the data is not initialized and represent an invalid FP number.

gdev_vector_dopath_segment passed an unitialized data as an argument.
Rather the callee never use them, an interrupt happens while building the argument list.

EXPECTED DIFFERENCES :

None.

[src/gdevvec.c 1.21]

2004-03-16 03:00 Ralph Giles

Use the jasper library's internal color conversion function to convert
non-rgb multicomponent images to sRGB.

DETAILS:

As of jasper 1.701.0 this function does not work correctly on powerpc.
However, it's better than our own routine, which I've had trouble
getting working with the Y(')CbCr samples returned from the library.

[src/sjpx.c 1.4]

2004-03-16 02:16 Dan Coby

Fix for 687337 Zerodivide in cie_cache_mult.  Note:  There
was a typo in the previous fix.

DETAILS:

The direct cause of the problem, and also the reason that we
have not seen this problem in real world files is that the
050-01.ps test file contains the following color rendering
dictionary.

/RenderDict2
12 dict begin
  /BlackPoint [ 0 0 0 ] def
  /ColorRenderingType 1 def
  /EncodeABC [ {} {} {} ] def
  /EncodeLMN [ {} {} {} ] def
  /MatrixABC [ 0 0 0  0 0 0  0 0 0 ] def
  /MatrixLMN [ 0 0 0  0 0 0  0 0 0 ] def
  /RangeABC [ 0 1  0 1  0 1 ] def
  /RangeLMN [ 0 1  0 1  0 1 ] def
  /RangePQR [ 0 1  0 1  0 1 ] def
  /TransformPQR [ {} {} {} ] def
  /WhitePoint [ 1 1 1 ] def

Note:  The matrices full of zeroes do not represent real
world data.  The zero matrices will result in all output
component values being zero no matter what the inputs.

Using this data, Ghostscript uses the given ranges and
matrices to calculate values for DomainABC and DomainLMN.
The results are [0, 0] for each domain.  The domain values
are later used to calculate a scaling factors which is
also 0.  Calculations, which use one of these values as
a divisor, then generate a divide by zero exception.

One option to fix this problem would be to check for zero
before doing any calculations with the scaling factors.
However another and simpler option is to check for the zero
factors when they are crated and set the value to a value
which will not cause the divide problem.  Note:  Even though
we are using a dummy factor (1.0), the zero matrices still
result in zero output values from the calculations.

[src/gscie.c 1.16]

2004-03-16 02:07 Dan Coby

Fix for 687337 Zerodivide in cie_cache_mult.

DETAILS:

The direct cause of the problem, and also the reason that we
have not seen this problem in real world files is that the
050-01.ps test file contains the following color rendering
dictionary.

/RenderDict2
12 dict begin
  /BlackPoint [ 0 0 0 ] def
  /ColorRenderingType 1 def
  /EncodeABC [ {} {} {} ] def
  /EncodeLMN [ {} {} {} ] def
  /MatrixABC [ 0 0 0  0 0 0  0 0 0 ] def
  /MatrixLMN [ 0 0 0  0 0 0  0 0 0 ] def
  /RangeABC [ 0 1  0 1  0 1 ] def
  /RangeLMN [ 0 1  0 1  0 1 ] def
  /RangePQR [ 0 1  0 1  0 1 ] def
  /TransformPQR [ {} {} {} ] def
  /WhitePoint [ 1 1 1 ] def

Note:  The matrices full of zeroes do not represent real
world data.  The zero matrices will result in all output
component values being zero no matter what the inputs.

Using this data, Ghostscript uses the given ranges and
matrices to calculate values for DomainABC and DomainLMN.
The results are [0, 0] for each domain.  The domain values
are later used to calculate a scaling factors which is
also 0.  Calculations, which use one of these values as
a divisor, then generate a divide by zero exception.

One option to fix this problem would be to check for zero
before doing any calculations with the scaling factors.
However another and simpler option is to check for the zero
factors when they are crated and set the value to a value
which will not cause the divide problem.  Note:  Even though
we are using a dummy factor (1.0), the zero matrices still
result in zero output values from the calculations.

[src/gscie.c 1.15]

2004-03-16 01:25 Dan Coby

Fix for 687349 A wrong comment for gx_device_color_s.  This change
modifies the comment on ccolor and the related variable ccolor_valid.

[src/gsdcolor.h 1.14]

2004-03-15 20:47 Ralph Giles

Correctly calculate row offsets for copying JPXDecode filter results so
multi-component images are indexed correctly. Also split the jpxd
process code into several helper functions for readability.

Support subsampled YUV images properly. Subsampled pixels are
replicated, not interpolated. Colorspace conversion from YCrCb to RGB is
still incorrect.

[src/sjpx.c 1.3, src/sjpx.h 1.2]

2004-03-15 09:54 Igor Melichev

MSVC compiler: allowing Precompiled Headers, Incremental Compilation, Edit & Continue.

DETAILS :

These options are applied to debug build only.
They dramatically improve the development technology.

Automated Precompiled Header speeds up the compilation slightly.
For best results should reorganize gs header files.

Incremental Compilation speeds up the rebuilding after editing source code.

Edit&Continue is a powerful tool for debugging. Together with incremental compilation
it allows to regenerate the object code during a debug session,
and continue the debugging with the new code without restarting the program.
Press F10 after you changes source code and enjoy.
F7 resets the session - forget it.
Another related tool is the "Set instruction pointer" debugger command,
which is available only from Tools/Customize/Commands/Debug.
It looks as an yellow arrow with a blue thin curved arrow.
Move it to your toolbar and enjoy.

Also enabled the incremental linking.

YOU NEED TO REBUILD ALL AT ONCE to activate these tools.

Tested with MSVC 6, should also work wirth MSVC 7.
Had no chance to test MSVC 5. A help wanted.

EXPECTED DIFFERENCES :

None.

[src/msvccmd.mak 1.16]

2004-03-14 22:10 Igor Melichev

Fix : A Cygwin/gcc warning.

EXPECTED DIFFERENCES :

None.

[src/zpcolor.c 1.14]

2004-03-14 22:02 Igor Melichev

Fix (PDF interpreter) : CIDMap was wrongly created from CIDToGIDMap.

DETAILS :

CIDMap size was equal to CIDCount, which gs_ttf.ps sets to the number of glyphs.
With a non-Identity CIDToGIDMap it appears wrong,
causing some valid CIDs to be out of range and to print as a notdef character.

Bug 687351 "Embedded TTF font in PDF incorrectly displayed.".

EXPECTED DIFFERENCES :

Bug687351.pdf

[lib/gs_ttf.ps 1.37, lib/pdf_font.ps 1.62]

2004-03-14 22:01 Igor Melichev

Fix (pdfwrite) : Crash after adding a glyph over a preallocated limit of a CIDFontType 2.

DETAILS :

Working on bug 687351 with CAIB_highres_page4.pdf, we detected a set of old bugs.
They caused a heap corruption and crash.
To reproduce the crash apply the patch of the bug 687351 to lib/pdf_font.ps
(that patch will be committed AFTER this one).

1. pdf_resize_resource_arrays was called with a wrong array size (gdevpdtc.c).
2. pdf_resize_resource_arrays did not expand CIDToGIDMap (gdevpdtf.c).
3. gs_type42_glyph_info accepted a wrong type of the return value of get_glyph_index.
4. Copying a CIDFontType 2, CIDCount was wrong (gxfcopy.c).
5. pdf_obtain_cidfont_resource wrongly processed the case of shared font descendents :
   font compatibility was not checked, rather they may have different Metrics,
   Metrics2, CDevProc, CIDMap (gdevpdtt.c).
6. Implemented a dynamic expansion of CIDMap for copied fonts.
7. In font copies CIDMap used the code 0xFFFF for representing unmapped glyphs.
8. Inserted the comment into gdevpdtf.c :
    /* fixme : Likely pdfont->u.cidfont.CIDToGIDMap duplicates
       pdfont->FontDescriptor->base_font->copied->client_data->CIDMap.
       Only difference is 0xFFFF designates unmapped CIDs.
     */
9. same_cid0_hinting must not check FDBytes (gxfcopy.c).

EXPECTED DIFFERENCES :

None.

[src/gdevpdtc.c 1.35, src/gdevpdtf.c 1.35, src/gdevpdtt.c 1.77, src/gstype42.c 1.44, src/gxfcopy.c 1.42]

2004-03-14 11:26 Igor Melichev

Fix (pdfwrite) : XObject's resources were placed wrongly.

DETAILS :

Bug 687350 "Wrong placement for Form XObjects' resources"

For Form XObjects created using /BP pdfmarks, the resources dictionary entries
are placed into the dict part of the XObject itself, instead of being placed
into a dictionary referenced by the /Resources key.

Patch from SaGS (See the bug report).
Thanks to SaGS (Sorry, never got his/her name.).

EXPECTED DIFFERENCES :

Bug687350.ps

[src/gdevpdfm.c 1.36]

2004-03-13 22:31 Ray Johnston

Add support for 16 bit deep images that is part of PDF 1.5.

Expected Differences:

None.

[src/gxi16bit.c 1.1, src/gximage.h 1.7, src/gxino16b.c 1.1, src/gxipixel.c 1.10, src/int.mak 1.125, src/lib.mak 1.175, src/spdiff.c 1.6, src/spdiffx.h 1.5, src/zfdecode.c 1.6, src/zimage.c 1.13]

2004-03-13 18:28 Igor Melichev

Implementing current point with double precision.

DETAILS :

The old code stores the current point in pgs->ppath->position
with the 'fixed' representation in the device space coordinates.
This appears insufficiently precise if a document constructs a path
with multiple 'rlineto' or 'rcurveto'. A significant to error accumulation happens.

We implement the current point with 'double', duplicating pgs->ppath->position
with the new field gs_imager_state::current_point.
We can't replace pgs->ppath->position with the new one due to several reasons :

- Sometimes (in the text processing, in arc processing and in reversepath)
  a new current point is computed when imager state is not accessible.
- Don't want to spend processor time for conversion double to fixed,
  whenever a fixed is needed.
- Don't want to modify many of low level modules;

Text operation always round the current point to 'fixed'.
Note that the convertion from fixed to double is always precise,
therefore we widely use it with text operations.

Thus this improves the precision of moveto, lineto, curveto,
rmoveto, rlineto, rcurveto, but the precision of other operators
left as it was. Likely there is no strong need to improve text operations
due to pixel rounding, but it would be useful to improve arc, arcn, arct, arcto.
However an improvement of arc operations isn't a high priority,
and after this patch becomes a local change.

We removed ppath->outside_position, because
pgs->current_point now effectively handles this feature.
Due to that the rounded pgs->current_point may be unequal to pgs->ppath->position
when the current point is outside the range.

The configuration flag PRECISE_CURRENTPOINT defined in gxstate.h
helps to debug the new code with raster comparizon with the old code.
PRECISE_CURRENTPOINT 0 works same as the old code except the
coordinate clamping. Therefore once tested with the comparison,
the further validation reduced to a validation of the code
swtched by the flag - this part pof code is pretty small.

The mode (PRECISE_CURRENTPOINT 0) **MUST**NOT** go to production
due to the dropped clamping. PRECISE_CURRENTPOINT 1 handles the clamping.

Bug 687359 "Current point is inprecise".

EXPECTED DIFFERENCES :

Almost all comparefiles render differently.

[src/gdevpdtc.c 1.34, src/gdevpdte.c 1.54, src/gdevpdtt.h 1.22, src/gscoord.c 1.9, src/gspaint.c 1.9, src/gspath.c 1.9, src/gspath.h 1.6, src/gspath1.c 1.8, src/gstype1.c 1.31, src/gstype2.c 1.35, src/gstype42.c 1.43, src/gxchar.c 1.40, src/gxistate.h 1.21, src/gxmatrix.h 1.8, src/gxpath.c 1.10, src/gxpath.h 1.13, src/gxstate.h 1.10, src/gzpath.h 1.37, src/gzstate.h 1.10, src/lib.mak 1.174, src/zupath.c 1.9]

2004-03-13 00:33 Igor Melichev

Fix (TT grid fitting) : Hints could be lost.

DETAILS :

When passing hints from the stem recognizer to the hinter,
glyph origin was not properly initialized, causing an occasional shift of hints.
This bug appeared with gxttfb.c revision 1.32.

EXPECTED DIFFERENCES :

72dpi:
01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
budget2.pdf
budget2_ai87.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
ICPconcept.pdf
japan.ps
keyboard.pdf
korea.ps
MagicEye.pdf
S2_Digitalproof-Forum_x3k.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
Type11CDevProc.ps
type42_glyph_index.ps
fonts.pdf
01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
budget2.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
japan.ps

300dpi:
01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
budget2.pdf
budget2_ai87.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
ICPconcept.pdf
Jahr2000.pdf
japan-.ps
japan.ps
01_001.pdf
keyboard.pdf
korea.ps
MagicEye.pdf
S2_Digitalproof-Forum_x3k.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
Type11CDevProc.ps
type42_glyph_index.ps

[src/gxttfb.c 1.33]

2004-03-12 06:53 Igor Melichev

Fix (pdfwrite) : Fall back to the default implementation when the output document can't handle current color.

DETAILS :

This case is important when the output PDF uses a low PDF level.
Particularly if the source file is a PDF 1.4 with a transparency,
and the output is PDF 1.3, which can't represent a transparency.

Bug 687338 "/rangecheck in --fill--".

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.38, src/gdevpdtt.c 1.76]

2004-03-12 01:58 Dan Coby

Fix for 687349 A wrong comment for gx_device_color_s.  This change
modifies the comment on ccolor and the related variable ccolor_valid.

[src/gsdcolor.h 1.13]

2004-03-12 01:55 Dan Coby

Log message:

Implement 687347: Implementation of the PDF encryption feature:
EncryptMetadata.  Past versions of the PDF encryption have always
encrypted metadata.  With this feature it is possible to NOT encrypt
metadata streams.  I.e. By adding '/EncryptMetadata false' to the
encryption dictionary.

DETAILS:

There are two pieces to the implementation:

1.  The calculation of the user password key includes an additional
step of feeding 0xffffffff to the md5 input if EncryptMetadata is
false.  (Ask Adobe, not me.)  The PDF 1.5 spec. says that
EncryptMetadata is an undocumented feature of PDF 1.4.  This
implies that this action needs to be done for values of R in the
Encrypt dictionary of 3 or higher.  However testing with Acrobat
5.0 and Acrobat 6.0 shows that this is not done for R = 3.  Thus
we check for R >= 4.

2.  Testing with Acrobat 5.0 and 6.0 has verified that the encryption
of metadata streams is controlled by EncryptMetadata in both versions.
Thus we check for PDF 1.4 and higher (R >= 3) and if so then we check
the stream type and the EncryptMetadata flag to determine if a stream
needs to be decrypted.

[lib/pdf_sec.ps 1.15]

2004-03-11 14:58 Igor Melichev

Fix : Some Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.109, src/gdevpdfi.c 1.52]

2004-03-11 14:50 Igor Melichev

Fix : Some Sun ONE Studio 7 compiler warnings (Solaris 8).

DETAILS :

Bug 687355 "warnings on Solaris (ghostscript-8.14)".

This fixes all warnings which I understande, except
"implicit function declaration", which probably require
a Solaris-dependent fix to "memory_.h".

EXPECTED DIFFERENCES :

None.

[src/gdevdevn.c 1.14, src/gdevijs.c 1.8, src/gdevnfwd.c 1.15, src/gdevpdfx.h 1.87, src/gdevpng.c 1.9, src/gdevpsd.c 1.7, src/gdevpsdu.c 1.21, src/gdevpsu.c 1.17, src/gdevxcf.c 1.6, src/gscpixel.c 1.10, src/gsdfilt.c 1.9, src/gximag3x.c 1.15, src/szlibd.c 1.7, src/ttfmain.c 1.26]

2004-03-11 07:01 Igor Melichev

Fix : Changing the default value of AlignToPixels to 0.
THIS IS INCOMPATIBLE CHANGE.

DETAILS :

AlignToPixels=0 produces a better results with antialiased text.
This is especially important after the True Type grid fitting is on.

EXPECTED DIFFERENCES :

None.

[doc/Use.htm 1.106, src/gsfont.c 1.32]

2004-03-11 05:36 Ralph Giles

Some systems require a longer link line with the default static jasper.

[toolbin/jpxtopdf.c 1.2]

2004-03-11 05:22 Ralph Giles

Add a simple C program that uses the jasper library to parse JPX (jpeg2k) image files and embed
them in a PDF 1.5 document. Useful for testing as there are few producers available at the moment.

DETAILS:

We make no attempt to parse the required metadata (resolution and so on) ourselves. It would be
simple to add this so that the program can stand alone. On the other hand, jasper is capable of
opening a number of other image formats and encoding them to jpx streams. We don't do that either,
but it would also be easy to add support for so that JPXDecode versions of arbitrary images could
be embedded.

Because of this, it's possible to embed e.g. baseline jpeg data instead of a jpx stream if you
feed the program the wrong file. Caveat executor.

Based on the jpegtopdf program by Tor Andersson.

[toolbin/jpxtopdf.c 1.1]

2004-03-10 19:06 Ralph Giles

Revert documentation change. Apparenlty the problem was that the user
specified an ICC colorspace and it does have an effect with pswrite if
one uses the usual RGB, etc. colorspaces. Bug 687357.

[doc/Use.htm 1.105]

2004-03-10 19:01 Ralph Giles

Clarify that -dNOSUBSTDEVICECOLORS has no effect on the pswrite device.
Bug 687357.

[doc/Use.htm 1.104]

2004-03-10 05:49 Ralph Giles

Correct yet another typo that was preventing the regression from
running.

[toolbin/tests/run_nightly 1.23]

2004-03-10 04:52 Raph Levien

Fix problem with dci.max_components introduced with DeviceN changes.
Closes bug #677383.

[src/gdevijs.c 1.7]

2004-03-09 21:31 Ralph Giles

Check for jpeg, zlib, and libpng headers as well as libraries before
using the shared versions. Bug 687261.

[src/configure.ac 1.43]

2004-03-09 13:30 Igor Melichev

Fix (PDF interpreter) : Wrong metrics when 2 font resources for same embeded font.

DETAILS :

Bug 687308 "Text in PDF Form field renders incorrectly".

The document contains 2 font resources for same embedded font.
PDF interpreter first creates a copy of the font, replacing the metrics with Widths.
Then it creates another copy of the with no replaced metrics. But
it used the first copy (through findfont) instead the original font,
and the Metrics in the second copy appears wrong.

This patch applies pdfcachefont for embedded fonts,
to allow retrieving original fonts for subsequeent font resources.

EXPECTED DIFFERENCES :

None.

[lib/pdf_font.ps 1.61]

2004-03-09 10:38 Igor Melichev

Fix (pdfwrite) : Annotations encrypted with a wrong object id.

DETAILS :

Bug 687333 "pdfwrite: A wrong encryption of bookmarks".

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.35]

2004-03-09 09:31 Igor Melichev

Fix (Type 2 charstrings) : More tolerance and conformity.

DETAILS :

1. Some Type 2 charstrings omit the vstemhm operator before rmoveto,
   even though this is only allowed before hintmask and cntrmask.
   Bug 687311 "could make more sense of invalid stem hints".

2. Subglyph offset was not crrect.

3. Removing an outdated comment.

Thanks to Felix Pahl for these improvements.

EXPECTED DIFFERENCES :

None.

[src/gstype2.c 1.34]

2004-03-09 05:42 Dan Coby

Remove some extra carriage returns (^M) at the ends of lines.  These
keep sneaking into the sources.  Presumably the cause has to do with
copying files from unix to windows or vice versa.

[lib/pdf_base.ps 1.41]

2004-03-08 16:45 Ralph Giles

Correct a typo in the whitelist keyword changes.

[toolbin/tests/run_nightly 1.22]

2004-03-07 12:26 Igor Melichev

Fix : gs_function_is_monotonic computed an unused auxiliary result (continued 3).

DETAILS :

Remove unused variables.

EXPECTED DIFFERENCES :

None.

[src/gsfunc3.c 1.21]

2004-03-07 12:06 Igor Melichev

Fix : gs_function_is_monotonic computed an unused auxiliary result (continued 2).

DETAILS :

1. Remove gs_function_effort_t because it is not longer useful.
2. Update the documentation in comments.

EXPECTED DIFFERENCES :

None.

[src/gsfunc.c 1.10, src/gsfunc.h 1.11, src/gsfunc0.c 1.17, src/gsfunc3.c 1.20, src/gsfunc4.c 1.15, src/gxfunc.h 1.9, src/gxshade1.c 1.26, src/gxshade6.c 1.47]

2004-03-07 12:04 Igor Melichev

Fix : gs_function_is_monotonic computed an unused auxiliary result (continued).

DETAILS :

Bug 687328 fn_is_monotonic_proc_t slows down ShadingType 1 in 3 times

Actually the result appears used while checking the monotonity of
a stiching function. But we believe that it doesn't worth
the processor time expence. I simpler way is to
consider the stitches as a monotonity breaks.

EXPECTED DIFFERENCES :

None

[src/gsfunc3.c 1.19]

2004-03-07 00:02 Igor Melichev

Fix (dropout prevention) : extra pixels at small serifs.

DETAILS :

It appears a long standing bug. It caused a section was not cleaned before reusage.
The reason was an interval to clean was added to the list of a another margin_set.
This bug frequently caused a missed serif suppression (i.e. extra pixels at small serifs).

EXPECTED DIFFERENCES :

A massive rendering difference at small resolutions :

72dpi :

"000040cf.000_60.pdf"
"001-01.ps"
"001-13.ps"
"001-25.ps"
"002-09.ps"
"002-21.ps"
"002-33.ps"
"003-01.ps"
"012-01.ps"
"012-05.ps"
"013-01.ps"
"013-05.ps"
"014-01.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"018-01.ps"
"01_001.pdf"
"021-01.ps"
"023-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"032-01.ps"
"033-01.ps"
"034-01.ps"
"036-01.ps"
"040-01.ps"
"045-01.ps"
"046-01.ps"
"050-01.ps"
"055-01.ps"
"061-01.ps"
"070-01.ps"
"076-01.ps"
"083-01.ps"
"083-05.ps"
"084-01.ps"
"091-01.ps"
"093-01.ps"
"094-01.ps"
"096-01.ps"
"103-01.ps"
"104-01.ps"
"109-01.ps"
"110-01.ps"
"113-01.ps"
"118-01.ps"
"119-01.ps"
"119-10.ps"
"119-16.ps"
"119-47.ps"
"120-01.ps"
"123-01.ps"
"123-05.ps"
"124-01.ps"
"129-01.ps"
"141-01.ps"
"148-05.ps"
"148-11.ps"
"149-01.ps"
"154-01.ps"
"158-01.ps"
"159.pdf"
"162-01.ps"
"166-01.ps"
"169-01.ps"
"169-05.ps"
"170-01.ps"
"176-01.ps"
"177-01.ps"
"181-01.ps"
"184-01.ps"
"192-01.ps"
"200-01.ps"
"205-01.ps"
"205-05.ps"
"206-01.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"215-01.ps"
"219-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"226-01.ps"
"227-01.ps"
"231-01.ps"
"233-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"246-01.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"257-01.ps"
"258-01.ps"
"260-01.ps"
"263-01.ps"
"269-01.ps"
"270-01.ps"
"272-01.ps"
"276-01.ps"
"282-01.ps"
"297-01.ps"
"298-01.ps"
"298-05.ps"
"299-01.ps"
"303-01.ps"
"304-01.ps"
"307-01.ps"
"308-04.ps"
"311-03.ps"
"313-01.ps"
"316-07.ps"
"321-01.ps"
"321-05.ps"
"322-01.ps"
"327-01.ps"
"328-01.ps"
"330-01.ps"
"334-01.ps"
"335-01.ps"
"336-01.ps"
"401-01.ps"
"405-01.ps"
"409-01.ps"
"415-01.ps"
"421-01.ps"
"430-01.ps"
"438-01.ps"
"450-01.ps"
"455690.pdf"
"460-01.ps"
"463-01.ps"
"477-01.ps"
"477-03.ps"
"477-04.ps"
"477-05.ps"
"478-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"86554321.pdf"
"a.pdf"
"aaon97_p7.pdf"
"acrobat.pdf"
"adesso1.pdf"
"adesso5.pdf"
"adesso7.pdf"
"adesso8.pdf"
"AdobeLic.pdf"
"alphabet.ps"
"besttest.pdf"
"brochurep1.pdf"
"bulletin.pdf"
"CAIB_highres_page4.pdf"
"chess.ps"
"CIDembedded.pdf"
"Faktura.pdf"
"Fixed_Original.pdf"
"HeiseiMinStd.pdf"
"japan.ps"
"korea.ps"
"KozukaB-ILEmbed.pdf"
"loremIpsum.pdf"
"mbb-with-space.ps"
"ngnews1.pdf"
"Original.pdf"
"pdftops.pdf"
"prfmm.pdf"
"prob.pdf"
"RealCities.pdf"
"rf1025.pdf"
"RodinCIDEmbed.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"Svd.pdf"
"textsavematrix.pdf"
"tpc2.ps"
"type1-ce1_setcurrentpoint.ps"
"type42_glyph_index.ps"
"waterfal.ps"
"womanface.pdf"

300 dpi :
"000040cf.000_60.pdf"
"001-01.ps"
"093-01.ps"
"a.pdf"
"aaon97_p7.pdf"
"alphabet.ps"
"bug-gstest.pdf"
"chess.ps"
"Fixed_Original.pdf"
"fonttest.pdf"
"HeiseiMinStd.pdf"
"japan-.ps"
"japan.ps"
"KozukaB-ILEmbed.pdf"
"mbb-with-space.ps"
"Original.pdf"
"RodinCIDEmbed.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"tpc2.ps"
"Type11CDevProc.ps"

[src/gxfdrop.c 1.14]

2004-03-06 15:15 Alex Cherepanov

Immediately return the success for 0-length read from a string array.
Don't seek to the offset because it may be invalid in some broken fonts.
Fix bug 687340

[src/zfont42.c 1.18]

2004-03-05 23:25 Igor Melichev

Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.108, src/gdevpdfv.c 1.35, src/gdevpdtt.c 1.75, src/gsfunc0.c 1.16, src/gsfunc3.c 1.18, src/ttfmain.c 1.25]

2004-03-05 22:26 Igor Melichev

Fix : Raster depended on bands, step 4, final.

DETAILS :

This change is algorithmically equivalent.

1. Removed the old code BAND_INDEPENDENT 0.
2. Simplified fill_slant_adjust with removing low useful variables.
3. Optimized the gxfilltr.h template with excluding some branches from the scope of le, re.
4. Renamed function templates with a (new) regular convention.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.117, src/gxfillsl.h 1.4, src/gxfilltr.h 1.6, src/gxfillts.h 1.3]

2004-03-05 15:35 Igor Melichev

Fix : Raster depended on bands, step 3.

DETAILS :

Bug 687222 "Raster depends on bands".

Switching to the new code.
Now trapezoid sides are independent on bands, clipping and scans.
Any trapesoid side is equal to some flattened piece of an outline segment.

A massive difference happens due to the old code recognized low trapezoids as rectangles.
The new code does not because it checks the verticality with longer bars.

EXPECTED DIFFERENCES :

Almost all comparefiles render differently.,
but mist differences are single pixels.
A dozen of files give dual pixel differences.

[src/gxfill.c 1.116]

2004-03-05 14:39 Ralph Giles

correct a typo in the recent comment revision

[doc/Make.htm 1.74]

2004-03-05 14:36 Ralph Giles

add a missing '.' to a comment

[src/msvc32.mak 1.55]

2004-03-05 14:16 Igor Melichev

Fix : Raster depended on bands, step 2.

DETAILS :

Bug 687222 "Raster depends on bands".

For the enabled code this change is algorithmically equivalent.
It fixes rectangle coordinates in the disabled code.

EXPECTED DIFFERENCES :

None.

[src/gxfilltr.h 1.5]

2004-03-05 13:17 Igor Melichev

Fix : Raster depended on bands, step 1.

DETAILS :

Bug 687222 "Raster depends on bands".
This is a continuation for
http://www.ghostscript.com/pipermail/gs-cvs/2004-January/003986.html

This patch defines a configuration flag BAND_INDEPENDENT.
The enabled code should be equivalent to the old one.
The disabled code passes band-independent data for low level functions.
The disabled code is not debugged yet.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.115, src/gxfilltr.h 1.4, src/gxfillts.h 1.2]

2004-03-05 05:37 Ralph Giles

Remove a debug tracing message.

[src/sjpx.c 1.2]

2004-03-04 22:50 Ralph Giles

Add support for our whitelist keyword filter to the regression run.

[toolbin/tests/run_nightly 1.21]

2004-03-04 22:34 Ralph Giles

Improve wording in the MSVC debug flag descriptions.

[doc/Make.htm 1.73]

2004-03-04 22:28 Ralph Giles

Improve wording in a comment.

[src/msvc32.mak 1.54]

2004-03-04 16:41 Igor Melichev

Fix : gs_function_is_monotonic computed an unused auxiliary result.

DETAILS :

Bug 687328 fn_is_monotonic_proc_t slows down ShadingType 1 in 3 times

The function fn_is_monotonic_proc_t computes a result consisting of 2 things :
(1) whether the function is monotonic, (2) if so, whether it is encreesing or
decreesing. The part (2) consumes a huge time and never used. Intending to
cancel it. On necessity clients can compute (2) by calling 'evaluate'.

EXPECTED DIFFERENCES :

Clarke Tate Manns Chinese.ai
STEUER-RollingMesh 1(linear).ai

[src/gsfunc.h 1.10, src/gsfunc0.c 1.15, src/gsfunc3.c 1.17]

2004-03-04 16:27 Igor Melichev

Fix (pdfwrite) : Reject encryption options if no password is specified, improved.

DETAILS :

Bug 687334 "pdfwrite: Encryption with no password".

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.92]

2004-03-04 16:13 Igor Melichev

Fix : "KeyLength" option name was misspelled in the documentation.

EXPECTED DIFFERENCES :

None.

[doc/Ps2pdf.htm 1.65]

2004-03-04 16:13 Igor Melichev

Fix (pdfwrite) : Reject encryption options if no password is specified.

DETAILS :

Bug 687334 "pdfwrite: Encryption with no password".

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.91]

2004-03-04 15:50 Igor Melichev

Fix (pdfwrite) : Floating point aritmetic applied to uninitialized data.

DETAILS :

Rather the result was not used, the oprtation could cause floating point interrupts.
Debugged with test-setweightvector.ps .

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.53, src/gdevpdtt.c 1.74]

2004-03-04 14:34 Igor Melichev

Fix (TT grid fitting) : The glyph trailing moveto got wrong coordinates.

DETAILS :

Advance width was scaled wrongly.

EXPECTED DIFFERENCES :

japan.ps
S2_Digitalproof-Forum_x3k.pdf
Testform.v1.0.2.pdf

[src/gxttfb.c 1.32, src/ttfmain.c 1.24]

2004-03-04 05:06 Dan Coby

Implementation of 687326 Enhancement: Handling of PDF 1.5encryption.

DETAILS:

The PDF 1.5 specification has added several some features for
encryption of PDF documents.

1.  The new encryption changes are indicated by a /R value of
4 in the Encryption dictionary.  Note:  The encryption algorithm
is the same as /R = 3.

2.  The encryption handling for strings and streams may now be
specified independently.  Current possibilities are 'Identity'
and the standard handler.

Note:  There are more encryption features in the PDF 1.5 specification.
HowevertThe only means that I have for generating test files for these
new encryption features is Acrobat 6.0.  This patch will decode files
which are encrypted using Acrobat 6.0.  There is one more feature
(EncryptMetaData) which will be the subject of a separate patch.
Between the features covered by the current patch and the EncryptMetaData
patch, this includes all of the capabilities that are available to a user
of Acrobat 6.0.  Since Acrobat 6.0 is the major producer of files with
these new encryption features, Ghostscript will have the ability to
decrypt files which we are likely to see in the near future.

[lib/pdf_sec.ps 1.14]

2004-03-03 13:53 Igor Melichev

Fix : Shading could cause a floating point exception.

DETAILS :

It caused an a floating point interrupts if they are unmasked.
The problem in gxshade6.c apeared with NEW_SHADINGS with ppmraw -r72 050-01.ps .
The problem in gxshade1.c ln 638 apeared with NEW_SHADINGS with ppmraw -r72 "STEUER-RollingMesh 2*.ai" .
Another one looks as a long standing bug with ppmraw -r72 442-01.ps

EXPECTED DIFFERENCES :

None.

[src/gxshade1.c 1.25, src/gxshade6.c 1.46]

2004-03-03 10:10 Igor Melichev

Fix (TT grid fitting) : AlignToPixels=0 aligned to pixels.

DETAILS :

Bug 687318 'A poor TT grid fitting with TextAlphaBits>1".
This patch doesn't close the bug.
An StdHW, StdVW reconstruction is necesseary for perfect result.
AlignToPixels=0 still gives a varying stem width.

EXPECTED DIFFERENCES :
None.

[src/gxttfb.c 1.31]

2004-03-03 08:16 Igor Melichev

Fix (type 1 hinter) : small resolutions caused a rangecheck.

DETAILS :

Bug 687301 "/limitcheck in --.type42execchar-- at 13 dpi".
When CTM is too small, its rational representation
appears degenerate, and we pass the character with no hinting.

EXPECTED DIFFERENCES :
None.

[src/gxhintn.c 1.44]

2004-03-03 05:14 Dan Coby

Fix for 687274 White areas appear shaded.

DETAILS:

This 'problem' is caused by a 'feature'.  The high resolution transfer
function  deliberately has a piece of logic that forces any shade of gray
that is not pure white (i.e. greater than 0.998) to halftone with at
least one pixel being set in the output.  This keeps nearly white shades
from being washed out.

We have seen several instances in which this 'feature' causes a problem.
The fax output format tiffg4 has been bitten by this problem since it is
commonly used at 204 dpi.

This change removes this feature.

[lib/gs_init.ps 1.105]

2004-03-02 11:47 Igor Melichev

Improving the MSVC debug build options.

DETAILS :

1. The implementation of switches DEBUG and TDEBUG
   in msvc32.mak did not comply to their explanation in comments.
   Bug 687276 "mscv32.mak : DEBUG and TDEBUG don't comply to documentation"

2. Defined a new switch DEBUGSYM :
+ # Setting DEBUGSYM=1 is only useful with TDEBUG=0 for advanced developers.
+ # It includes symbol table information for the debugger to the release build.

3. Updated doc\Make.htm about that.

EXPECTED DIFFERENCES :
None.

[src/msvc32.mak 1.53, src/msvccmd.mak 1.15, doc/Make.htm 1.72]

2004-03-02 10:14 Igor Melichev

Fix (pdfwrite) : Errors were missed processing a shading data stream.

DETAILS :

Bug 687307 "A ShadingType 7 differs from Adobe."
shade_next_flag interpreted a wrong data as End-Of-Data,
so that some wrong documents were passed with no error.

Now pdfwrite handles the bad shading data exception separately from
other errors:  the shading is fully written and the error is signaled
to the PS interpreter after that. Note that other errors terminate immediately
with inconsistent data written to the PDF output. We did the special
processing to provide a better conformity to some buggy Genoa tests,
which paint a shading with a wrong data in a stopped context.

Besides that, we cancelled the default implementation fallback
when pdf_setfillcolor fails. The old implementation caused
shadings to convert into a huge set of rectangles written to PDF.
We believe that signalling an error is the right reaction for this case.

EXPECTED DIFFERENCES :

pdfwrite :
446-01.ps now prints error message to the raster. This is a progression.
483-05.ps now prints error message to stdout. This is a progression.

[src/gdevpdfd.c 1.37, src/gdevpdfg.c 1.47, src/gdevpdfv.c 1.34]

2004-03-02 08:34 Igor Melichev

Fix : Errors were missed processing a shading data stream.

DETAILS :

Bug 687307 "A ShadingType 7 differs from Adobe."
shade_next_flag interpreted a wrong data as End-Of-Data,
so that some wrong documents were passed with no error.

With pdfwrite the logic is different, and we didn't fix it.

EXPECTED DIFFERENCES :

446-01.ps now prints error message to the raster. This is a progression.
483-05.ps now prints error message to stdout. This is a progression.

[src/gxshade.c 1.21, src/gxshade4.c 1.25, src/gxshade6.c 1.45, src/gxshade.h 1.11]

2004-03-01 23:59 Igor Melichev

A new implementation of shadings, step 42.

DETAILS :

Big triangle meshes could overflow wedge_vertex_list_elem_buffer.
See comment in code.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.44]

2004-03-01 12:39 Igor Melichev

A new implementation of shadings, step 41, release candidate 2.

DETAILS :

Implemented intersection_of_small_bars with int64_t,
and improved the documentation about it.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.43]

2004-03-01 10:44 Igor Melichev

A new implementation of shadings, step 40.

DETAILS :

1. Improved various constraints for patch size,
   which are caused by the arithmetic precision.
   Now all them are collected in curve_samples.

2. Improved the documentation about secondary branches.

3. Fixed minor bugs in secondary branches.

3. Improved the formatting with easier distinguishing
   a multiplication " * x" from dereferencing " *x".
   It was important for finding arithmetic constraints.

EXPECTED DIFFERENCES :

SmoothShading.pdf at 300dpi.

[src/gxshade4.h 1.21, src/gxshade6.c 1.42]

2004-02-29 16:59 Igor Melichev

A new implementation of shadings, step 39.

DETAILS :

The previous patch appears wrong. This one replaces it.

Fixed the order of painting pixels : U and V were exchanged.
Debugged with examples attached to the bug 687307.

Besides that, the smoothness condition is changed :
the case with strong equality must not decompose.
A special test for this is 478-01.ps -
now it is decomposed with monotonic intervals only.

EXPECTED DIFFERENCES :

Since the previous patch appears wrong,
here is a difference from a revision before it :

446-01.ps
478-01.ps
483-05.ps
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 3(Final).ai

[src/gxshade1.c 1.24, src/gxshade6.c 1.41]

2004-02-29 14:47 Igor Melichev

A new implementation of shadings, step 38.

DETAILS :

Fixed the order of painting pixels : U and V were exchanged.
Debugged with examples attached to the bug 687307.

EXPECTED DIFFERENCES :

72dpi :

442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
chilis_red.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

300dpi:

289-01.ps
442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
chilis_red.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
Openhuis_pdf_zw.pdf
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

[src/gxshade6.c 1.40]

2004-02-29 13:03 Igor Melichev

A new implementation of shadings, step 37.

DETAILS :

Fixed a bug in LAZY_WEDGES 1 :
fill_wedge_from_list_rec missed non-leaf triangles.

Also defined dbg_wedge_triangle_cnt for debug purpose.

EXPECTED DIFFERENCES :

72dpi :

446-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 3(Final).ai

300dpi:

442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai

[src/gxshade6.c 1.39]

2004-02-28 12:30 Igor Melichev

A new implementation of shadings, step 36.

DETAILS :

Implemented lazy wedges : do not create a wedge,
if both neighbours of a line were divided at same point.
It reduces the number of constant color triangles to fill.

Since this algorithm consumes an exponential RAM of the wedge nesting,
we restrict the wedge nesting with 9. For doing that we enforce
subdivision of large patches into chunks with <=512 pixels length sides
- see LAZY_WEDGES_MAX_LEVEL.

EXPECTED DIFFERENCES :

72dpi :
289-01.ps
442-01.ps
446-01.ps
464-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai

300dpi:
442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

[src/gxshade1.c 1.23, src/gxshade4.c 1.24, src/gxshade6.c 1.38, src/gxshade4.h 1.20]

2004-02-27 09:24 Igor Melichev

A new implementation of shadings, step 35.

DETAILS :

1. Improving the filling order for self-overlapping patches.
The old code filled them wrongly (a bug).
This patches fixes that.
With self-overlapping patches the new code is slower.

2. Improved the numeric error processing in intersection_of_big_bars.
With negative bars the old code could give a bias in fixed_1,
rather negative bars probably never come here.

EXPECTED DIFFERENCES :

442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
chilis_red.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

[src/gxshade6.c 1.37]

2004-02-26 20:55 Igor Melichev

A new implementation of shadings, step 34.

DETAILS :

Improving the ShadingType 1 with applying the generic algorithm.
The generic algorithm is extended for 2-argument functions.

Also fixing the configuration switch DIVIDE_BY_PARALLELS,
which was unintentionally set to 1 by the previous patch.

EXPECTED DIFFERENCES :

289-01.ps
442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
gradmesh.ai

[src/gxshade.c 1.20, src/gxshade1.c 1.22, src/gxshade4.c 1.23, src/gxshade4.h 1.19, src/gxshade6.c 1.36, src/lib.mak 1.173]

2004-02-26 20:10 Ray Johnston

Revert to the correct version of gs_setpd.ps and Use.htm.

DETAILS:

A local CVS problem resulted in an update from a directory that did not
have the changes, causing me to think that the files needed to be
updated, but instead removed the previous update. What a mess!

[doc/Use.htm 1.103, lib/gs_setpd.ps 1.23]

2004-02-26 19:55 Igor Melichev

Fix : A bug in fn_Sd_is_monotonic.

DETAILS :

Monotonic intervals were computed wrongly due to
a wrong cell boundary condition. With no Encode
it overestimated the number of cells in 1.

This patch also extends fn_Sd_is_monotonic for multi-argument functions.
Actually it checks whether both points are within same cell.
This is fine with linear functions,
but for 3d order we would like to check for zero derivatives
within the interval specified by 2 vectors.

EXPECTED DIFFERENCES :

300dpi:

442-01.ps
483-01.ps

[src/gsfunc0.c 1.14]

2004-02-26 07:18 Igor Melichev

A new implementation of shadings, step 33.

DETAILS :

Improves the performance of radial shadings :

For a faster painting, we apply fill adjustment to outer annula only.
Inner annula are painted with no fill adjustment.
It can't cause a dropout, because the outer side of an annulus
gets same flattening as the inner side of the neighbour outer annulus.

For other shadings this chande is algorithmically equivalent.

EXPECTED DIFFERENCES :

A minor difference with axial shadings :
442-01.ps
446-01.ps
483-01.ps
483-05.ps
Altona-Testsuite_p2_S_x3.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai

[src/gxshade.c 1.19, src/gxshade.h 1.10, src/gxshade1.c 1.21, src/gxshade4.c 1.22, src/gxshade4.h 1.18]

2004-02-25 20:38 Russell Lang

Fixes bug 687317.
Fix pdfwrite allowable Permissions for EncryptionR=2.
Fix default Permissions.

DETAILS:
The code was assuming that the extra permissions should be 0's,
when in fact they should be 1's.  The fixed code is a bit more
conservative and requires that all reserved bits match the PDF
specification. Set the default permissions to -4 which allows
everything.

[src/gdevpdf.c 1.90]

2004-02-25 20:37 Ray Johnston

Clean up dict stack after loading an embedded Type1 font from a PDF file.
While the font is buggy, Adobe doesn't complain. Bug #687315.

[lib/pdf_font.ps 1.60]

2004-02-25 20:35 Ray Johnston

Add an option to prevent the 'range' type PageSize from being added to the
InputAttribute dictionary. This option is useful for printers that want the
requested pages to be rotated to fit one of the available page sizes.
Option is -dNORANGEPAGESIZE. Fix for bug #629335.

[lib/gs_setpd.ps 1.22, doc/Use.htm 1.102]

2004-02-25 16:21 Igor Melichev

A new implementation of shadings, step 32.

DETAILS :

1. Implemented axial shading with a Coons patch.
   It gives more regularity with area decomposition and trapping.

2. Optimized tensor shadings for the case when the gradient is
   parallel to the quadrangle sides.

Note that the old code applies 1/2 pixels fill adjustment when
painting stripes of the shading, generating overlapped stripes.
Instead that the new code generates non-overlapping stripes,
and applies a trapping emulation at the shading boundaries with 1/8 pixels.

EXPECTED DIFFERENCES :

A minor difference with axial shadings :
442-01.ps
446-01.ps
464-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
chilis_red.pdf
gradmesh.ai
Openhuis_pdf_zw.pdf
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

An area shift in Testform.v1.0.2.pdf at 72dpi appears due to
the fill adjustment is replaced with the trapping emulation.

[src/gxshade1.c 1.20, src/gxshade4.h 1.17, src/gxshade6.c 1.35, src/lib.mak 1.172]

2004-02-24 22:27 Jack Moffitt

Add support for specifying CVS repository location, which requires a
new configuration key, 'gsconf.repodir'.

[toolbin/tests/testing.cfg.example 1.5, toolbin/tests/update_specific 1.2]

2004-02-24 22:20 Jack Moffitt

Script to update baselines for a specific CVS version of Ghostscript.

The script requires a new configuration key, 'gsconf.fontdir'.

[toolbin/tests/testing.cfg.example 1.4, toolbin/tests/update_specific 1.1]

2004-02-24 19:07 Igor Melichev

A new implementation of shadings, step 31.

DETAILS :

1. Removed an undefined macro call (a portability bug).

2. Disabled some unused functions.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.21, src/gxshade4.h 1.16]

2004-02-24 18:57 Igor Melichev

A new implementation of shadings, step 30.

DETAILS :

1. Triangle meshes were passed to the rasterizer with no color resolved.
   It is assumed to be resolved in advance (a bug).

2. Improved external names with adding a scope prefix.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.20, src/gxshade4.h 1.15, src/gxshade6.c 1.34]

2004-02-24 12:12 Igor Melichev

A new implementation of shadings, step 29 - release candidate 1.

DETAILS :

Switching to the new implementation.
It fixes a number of bugs, works 2.5 times faster and produces a better view.
Also documented secondary development branches.

Bug 687291 "problems in patch_fill".
Bug 687310 "Wrong color interpolation with ShadingType 4,5.".

EXPECTED DIFFERENCES :

446-01.ps
483-05.ps

[src/gxshade4.h 1.14]

2004-02-24 11:57 Igor Melichev

A new implementation of shadings, step 28.

DETAILS :

Removing debug helpers.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.19, src/gxshade4.h 1.13, src/gxshade6.c 1.33]

2004-02-24 11:50 Igor Melichev

A new implementation of shadings, step 27.

DETAILS :

It simplifies visual trace commands with the new macros.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.18, src/gxshade6.c 1.32]

2004-02-24 11:43 Igor Melichev

Improving the visual trace macros.

DETAILS :

It defines a raugh implementation for a temporary trace disabling.

EXPECTED DIFFERENCES :

None.

[src/vdtrace.h 1.12]

2004-02-24 11:08 Igor Melichev

A new implementation of shadings, step 26.

DETAILS :

This patch changes a disabled code only.
It fixes a bug computing ku[3], which missed some wedges,
and improves some visual trace commands.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.31]

2004-02-24 09:57 Igor Melichev

A new implementation of shadings, step 25.

DETAILS :

This patch changes a disabled code only.
This change is algorithmically equivalent.
During a trianglulation it avoids redundant computation
of the color span and the triangle size.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.30]

2004-02-24 09:28 Igor Melichev

A new implementation of shadings, step 24.

DETAILS :

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-February/004243.html
unintentionally switched on the new code.
Now switching it back to the old one.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.h 1.12]

2004-02-24 09:08 Igor Melichev

A new implementation of shadings, step 23.

DETAILS :

This patch changes a disabled code only.

1. Wedges were missed in triangle_by_4.
2. Improved a debug mode in gxshade4.c .
3. Fixed cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.17, src/gxshade6.c 1.29]

2004-02-24 08:14 Igor Melichev

A new implementation of shadings, step 22.

DETAILS :

This patch changes a disabled code only.
It implements a division of a quadrangle into 4 triangles,
like the old code does. It doesn't change the performance
and the view appears slightly better. This mode is useful with
DIVIDE_BY_PARALLELS 0.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.28]

2004-02-24 07:58 Igor Melichev

A new implementation of shadings, step 21.

DETAILS :

This patch changes a disabled code only.
It implements a division of a triangle into 4 triangles,
like the old code does. This appears some slower, but
gives a better view when the smooothness is smaller
than the color resolution.

Minor changes :

- Implemented VD_TRACE_DOWN to gxshade6.c;
- Changed some visual trace commands;
- COLOR_CONTIGUITY specifies a coefficient for divide_triangle_by_parallels.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.h 1.11, src/gxshade6.c 1.27]

2004-02-23 20:41 Ralph Giles

Check for local jpeg library source by looking for the jpeglib.h header
rather than just the jpeg directory. Also try looking for jpeg-6b if the
jpeg fails; this lets us find the source as it unpacks from the upstream
tarball. Patch from ESP Ghostscript.

[src/configure.ac 1.42]

2004-02-23 03:07 Ray Johnston

Add a parameter which prevents the non-standard four element PageSize
entry in the InputAttributes from being included. This prevents problems
with PostScript programs that examine the InputAttributes entries in an
attempt to pick the 'best fit' rather than relying on the setpagedevice
logic. Also most 'real' printer devices don't support arbitrary page
sizes, so automatic rotation is defeated if the range type page size
in included. The option is -dNORANGEPAGESIZE. Bug #629335.

[doc/Use.htm 1.101, lib/gs_setpd.ps 1.21]

2004-02-23 01:44 Ray Johnston

Add the path to the code directory (gsconf.codedir) for invocation of the
update_baseline/update_pdfbaseline.

[toolbin/tests/gscheck_pdfwrite.py 1.18, toolbin/tests/gscheck_raster.py 1.9]

2004-02-22 23:54 Ralph Giles

Initial implementation of the JPXDecode filter using the JasPer library
for decoding the JPEG 2000 data. This version only implements a
postscript-level filter; PDF support will follow in another commit.

DETAILS:

A new FEATURE_DEV, 'jpx.dev', is added to the makefile to enable
support. The jasper library must be available to link with in this case.
The library is autodetected in the autoconf build, but not yet enabled
on other platforms.

The implementation leaves a little to be desired. While JasPer is
robust, it provides no way to connect its internal stream architecture
to ours, so we end up buffering all the data. This seems to be the best
we can do without modifying the library.

We try to handle data from a number of colorspaces, but the spec is a
little vague on what is required. We convert YUV to RGB internally, but
do not handle sub-sampled planes.

[src/Makefile.in 1.33, src/configure.ac 1.41, src/int.mak 1.124, src/lib.mak 1.171, src/sjpx.c 1.1, src/sjpx.h 1.1, src/zfjpx.c 1.1]

2004-02-22 15:11 Igor Melichev

A new implementation of shadings, step 20.

DETAILS :

This fixes an unintentional regression in gxshade4.c,
which appeared from a recent patch.
Also it optimises the access to pis->smoothness.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.16, src/gxshade6.c 1.26]

2004-02-22 14:14 Igor Melichev

A new implementation of shadings, step 19.

DETAILS :

This change is algorithmically equivalent.
It simplifies internal interfaces with the new type quadrangle_patch.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.25]

2004-02-22 13:06 Igor Melichev

A new implementation of shadings, step 18.

DETAILS :

This change is algorithmically equivalent.
It simplifies the interface of fill_triangle_wedge.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.24]

2004-02-22 10:59 Igor Melichev

A new implementation of shadings, step 17.

DETAILS :

This change is algorithmically equivalent.
It simplifies intermodule interfaces with using
shading_vertex_t instead a pair of a point and a color.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.15, src/gxshade4.h 1.10, src/gxshade6.c 1.23]

2004-02-22 09:43 Igor Melichev

A new implementation of shadings, step 16.

DETAILS :

This patch changes a disabled code only.
In the disabled code it fixes the bug 687310
"Wrong color interpolation with ShadingType 4,5.".
In the old code the interpolation is still done in the color space rather than
in the function domain.

EXPECTED DIFFERENCES :

None.

[src/gxshade.c 1.18, src/gxshade.h 1.9, src/gxshade4.c 1.14, src/gxshade4.h 1.9, src/gxshade6.c 1.22, src/lib.mak 1.170]

2004-02-21 18:25 Igor Melichev

A new implementation of shadings, step 15.

DETAILS :

This patch changes a disabled code only.
Optimized the patch decomposition.

1. Triangles are divided along the color gradient.
   Since the color gradient is vector, actually we divide
   along the gradient of the Manhattan"s color norm.

2. Rectangles are divided into 2 triangles by the diagonal
   with smaller color difference.

3. Improved conditions for compiling wedge_buf.

4. Implemented VD_TRACE_TRIANGLE_PATCH.

This revision appears faster than the old code NEW_SHADINGS 0
in about 1.4 times.

A code optimization is wanted. See "fixme" comments.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.13, src/gxshade4.h 1.8, src/gxshade6.c 1.21]

2004-02-20 15:04 Igor Melichev

A new implementation of shadings, step 14.

DETAILS :

This patch changes a disabled code only.
Optimized the trapping emulation.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.12, src/gxshade4.h 1.7, src/gxshade6.c 1.20]

2004-02-20 13:58 Igor Melichev

A new implementation of shadings, step 13.

DETAILS :

1. Aplied the new triangulation to triangle meshes.
2. Enhanced the scope of configuration flags and some structures.
3. Improved visual trace commands.

The trapping emulation appears too slow and should be optimized.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.c 1.11, src/gxshade4.h 1.6, src/gxshade6.c 1.19, src/lib.mak 1.169]

2004-02-20 10:53 Igor Melichev

Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.114]

2004-02-20 10:51 Igor Melichev

A new implementation of shadings, step 12.

DETAILS :

1. Emulated an interpatch trapping for poorly designed documents -
   see 'padding', 'interpatch_padding', 'inpatch_wedge'.
2. Improved some debug helpers (TENSOR_SHADING_DEBUG 1).
3. Removed some unused variables.
4. Improved some comments and C-style.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.18]

2004-02-20 06:46 Dan Coby

Fix for 687279 Linker warnings with Visual Studio 6 and .NET 2003.
The changes consist of removing the keyword INITINSTANCE from the def
files.  The DESCRIPTION lines are changed to a comment and put at the
beginning of the files.

[src/dw32c.def 1.4, src/dwmain16.def 1.2, src/dwmain32.def 1.4, src/dwsetup.def 1.5, src/dwuninst.def 1.5, src/gsdll32.def 1.5]

2004-02-20 00:04 Igor Melichev

A new implementation of shadings, step 11.

DETAILS :

Simplified wedges with wedge_by_triangles.
It makes a big part of the code to be unused with
NEW_TENSOR_SHADING 1 QUADRANGLES 0 POLYGON_WEDGES 0.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.17]

2004-02-19 20:05 Igor Melichev

A new implementation of shadings, step 10.

DETAILS :

1. Implemented a decomposition by triangles.
2. Applied restrict_color to colors, to avoid lots of pieces
   then basic color values are significantly out of range.
   The 483-07 box of 483-05.ps contains such shadings.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.16]

2004-02-19 11:32 Igor Melichev

A new implementation of shadings, step 9.

DETAILS :

1. Inserted some visual trace instructions in the old algorithm.
2. Moved configurations macro definitions upper, to use them in the old code.
3. Remaned NEW_TENSOR_SHADING_DEBUG with TENSOR_SHADING_DEBUG.
4. In the new code fixed the wedge color.
5. Improved the decomposition of bended patches.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.15]

2004-02-19 11:21 Igor Melichev

Improving visual trace macros.

DETAILS :

This patch implements a nesting of trace allowing conditions
specified in different modules, and applies it to the filling algorithm.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.113, src/vdtrace.h 1.11]

2004-02-19 07:44 Igor Melichev

Simplifying the filling algorithm, step C22.

DETAILS :

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-February/004127.html
appears incomplete. This one fixes that.

Bug 687306 "CVS head crashes with pkmraw, 300 dpi, with recent changes."

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.112]

2004-02-18 15:05 Igor Melichev

A new implementation of shadings, step 8.

DETAILS :

This patch changes a disabled code only.

1. is_curve_small uses a better thresholds.
2. is_xy_monotonic_by_v was wrong. Replaced with is_bended.
3. Optimized wedge_trap_decompose.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.14]

2004-02-18 15:00 Igor Melichev

Improving the filling algorithm, step D8.

DETAILS :

Removed floating point arithmetics, which recently appeared by a hack.
A rounding is now done slightly different.

EXPECTED DIFFERENCES :

Normal, 72 dpi :

LD.pdf

Normal, 300 dpi :

012-01.ps
012-05.ps
013-05.ps
032-01.ps
123-01.ps
123-05.ps
205-01.ps

pdfwrite, 72 dpi :

LD.pdf

pdfwrite, 300 dpi :

123-01.ps
123-05.ps
169-13.ps

[src/gxfill.c 1.111, src/lib.mak 1.168]

2004-02-18 14:41 Igor Melichev

Fix: Documented rounding formulas in the character processing.

EXPECTED DIFFERENCES :

None.

[src/fapiufst.c 1.24, src/gxhintn.c 1.43, src/ttfmain.c 1.23]

2004-02-18 09:54 Igor Melichev

Fix (pdfwrite) : Converting an image type 4 into imagemask, a wrong color was written.

DETAILS :

This problem was discovered with ghostpcl and owlfoo.pcl from Stefan.
Thanks to Stefan for detecting it.

This fix is kinda hacky. Let it live for a while, because we want to
study its consequences before applying more efforts.
A right fix should not modify the interpreter graphic state,
but we have no a 'const' copy function for gs_state,
because gx_gstate_clone shares imager state parts.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfi.c 1.51]

2004-02-18 05:35 Dan Coby

Add '!ifndef'/'endif' around varaious parameters in the makefile for the
Borland compiler (bcwin32.mak).  This allows the parameters to be specified
on the command line without editting the makefile.

[src/bcwin32.mak 1.32]

2004-02-17 15:12 Igor Melichev

Fix : MSVC7 wrongly optimizes zpcolor.c .

DETAILS :

It's an aliasing problem in the optimizer.
See comment in code.

EXPECTED DIFFERENCES :

None.

[src/int.mak 1.123, src/zpcolor.c 1.13]

2004-02-16 16:29 Igor Melichev

Improving the filling algorithm, step D7.

DETAILS :

When filling an individual trapezoid, a shortcut
for parallelograms could miss some pixels.

When the left boundary rounds to a vertical line
and the right one does not, for the right boundary it
wrongly applied same zero sampling as for the left one,
in spite of the right boundary can cross pixel centers.

We realize that the shortcut could improve a view
of some parallelograms. But in same time we detected that
in alphabet.ps with 72dpi a parallelogram was replaced
with a wider one, causing a worse view of the character '#'.
So its usefullness is arguable.

Both features can't provide simultaneousely
due to the device interface can't pass a flag whether
an exact coverage is required.
Therefore we drop the shortcut.

EXPECTED DIFFERENCES :

normal 72dpi :

020-01.ps
175-01.ps
1_2001.pdf
289-01.ps
446-01.ps
483-05.ps
86554321.pdf
acrobat.pdf
ADOBE1-4.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
chess.ps
dina3_watermark.pdf
kazmir.pdf
PixelisAd.pdf
RealCities.pdf
spec_gs.pdf
spec_gv.pdf
test.pdf
vsem0093.pdf
xes2ps-problem.pdf
xgfddg.pdf

normal 300dpi :

001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
adesso3.pdf
adesso5.pdf
adesso7.pdf
AdobeLic.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
besttest.pdf
brochurep1.pdf
bugsample.pdf
ca.pdf
CAIB_highres_page4.pdf
chess.ps
dave.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
file.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
japan.ps
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
ngnews.pdf
ngnews1.pdf
Openhuis_pdf_zw.pdf
pdftops.pdf
prfmm.pdf
prob.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test.pdf
test2.pdf
test2a.pdf
textsavematrix.pdf
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf
xngnews.pdf

pdfwrite 72 dpi :

020-01.ps
175-01.ps
1_2001.pdf
446-01.ps
483-05.ps
86554321.pdf
acrobat.pdf
ADOBE1-4.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
chess.ps
kazmir.pdf
PixelisAd.pdf
RealCities.pdf
spec_gs.pdf
spec_gv.pdf
test.pdf
vsem0093.pdf
xes2ps-problem.pdf
xgfddg.pdf

pdfwrite 300 dpi :

001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
adesso3.pdf
adesso5.pdf
adesso7.pdf
AdobeLic.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
besttest.pdf
brochurep1.pdf
bugsample.pdf
ca.pdf
CAIB_highres_page4.pdf
chess.ps
dave.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
file.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
japan-.ps
japan.ps
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
ngnews.pdf
ngnews1.pdf
Openhuis_pdf_zw.pdf
pdftops.pdf
prfmm.pdf
prob.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test.pdf
test2.pdf
test2a.pdf
textsavematrix.pdf
tpc2.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf
xngnews.pdf

[src/gxdtfill.h 1.16]

2004-02-16 15:26 Igor Melichev

A new implementation of shadings, step 7.

DETAILS :

Documenting the current state of the development,
because we need to delay the project.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.13]

2004-02-16 15:06 Ralph Giles

Adapt makefile support for compiling in zlib to support v1.2.x rather
than 1.1.x. Linking to a shared version is unaffected.

DETAILS:

The zlib source was re-arranged from the 1.1.4 to the 1.2.x releases.
While binary compatibility was maintained, and we link just fine to a
separately build dynamic zlib, our custom makefile support for compiling
in the library source no longer works.

Rather than add a 'ZLIB_VERSION' makefile variable and the attendent
configuration costs, we've simply migrated completely to the new (much
faster) 1.2.x series. 1.2.1 is now the minimum version to be used if you
wish to compile zlib as part of Ghostscript.

[doc/Make.htm 1.71, src/zlib.mak 1.8]

2004-02-16 13:51 Igor Melichev

Improving the filling algorithm, step D6.

DETAILS :

The algorithm for for filling an individual trapezoid
used a wrong formula when rounding a coordinate to pixel index.

An intersection of a trapezoid boundary with a scanline
is represented as a rational value, in which the fraction
represent a part of an unit of 'fixed'.
Computing a pixel index, the fraction was ignored.
Due to that the spot sides were biased into about 1/256 pixels.

The bias appears important when some trapezoids are fixed with
swapped coordinate axes, because the bias appears in an opposite
direction to one with unswapped axes. Therefore a decomposition
of a shading missed pixels, which fall exactly into the biased
boundary, causing a dropout.

Here is the analyzis of the old rounding :

We must paint pixels with index i such that

    Xl <= i + 0.5 < Xr

The condition is is equivalent to

    Xl - 0.5 <= i < Xr - 0.5

which is equivalent to

    (is_integer(Xl - 0.5) ? Xl - 0.5 : ceil(Xl - 0.5)) <= i <
    (is_integer(Xr - 0.5) ? Xr - 0.5 : floor(Xr - 0.5) + 1)

(the last '+1" happens due to the strong comparizon '<')
which is equivalent to

    ceil(Xl - 0.5) <= i < ceil(Xr - 0.5)

trap_line represents the intersectiion coordinate as a rational value :

    Xl = xl + e - fl
    Xr = xr + e - fr

gxdtfill.c computes l.x = x0l + (fixed_half - fixed_epsilon).
In our notation it is equal to :

    xl' := xl + 0.5 - e
    xr' := xr + 0.5 - e

Then

    xl = xl' - 0.5 + e
    xr = xr' - 0.5 + e

    Xl = xl' - 0.5 + 2e - fl
    Xr = xr' - 0.5 + 2e - fr

    ceil(xl' - 0.5 + 2e - fl - 0.5) <= i < ceil(xr' - 0.5 + 2e - fr - 0.5)

which is equivalent to

    ceil(xl' + 2e - fl) - 1 <= i < ceil(xr' + 2e - fr) - 1

We have :

    ceil(xl' + 2e - fl) - 1 ==

    (is_integer(xl' + 2e - fl) ? xl' + 2e - fl - 1 : ceil(xl' + 2e - fl) - 1) ==

    (is_integer(xl' + 2e - fl) ? xl' + 2e - fl - 1 : floor(xl' + 2e - fl))

Since -e <= fl < 0, it is equal to

    (is_integer(xl' + e) && e == fl ? xl' + 2e - fl - 1 : floor(xl' + 2e - fl)) ==

    (is_integer(xl' + e) && e == fl ? xl' + e - 1 :
     is_integer(xl' + e) && e != fl ? floor(xl' + 2e - fl)
    !is_integer(xl' + e) && e != fl ? floor(xl' + 2e - fl)
    !is_integer(xl' + e) && e == fl ? floor(xl' + 2e - fl))  ==

    (is_integer(xl' + e) && e == fl ? xl' + e - 1 :
     is_integer(xl' + e) && e != fl ? xl' + e :
    !is_integer(xl' + e) && e != fl ? floor(xl' + e)
    !is_integer(xl' + e) && e == fl ? floor(xl' + e))  ==

    (is_integer(xl' + e) && e == fl ? xl' + e - 1 : floor(xl'))

And the condition is equivalent to

    (is_integer(xl' + e) && e == fl ? xl' + e - 1 : floor(xl')) <= i <
    (is_integer(xr' + e) && e == fr ? xl' + e - 1 : floor(xr'))

But the old code computes

    floor(xl') <= i < floor(xr'))

Thus when is_integer(xl' + e) && e == fl,
it wrongly shifts the rounded boundary in 1 pixel to the left.

EXPECTED DIFFERENCES :

Almost all tests render differently.

Normal 72 dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687207.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
ccc.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
Es001-01.pdf
escher.ps
Faktura.pdf
file.pdf
file2.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
font_issue.pdf
frosch.pdf
golfer.eps
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan.ps
john_clippedimage.pdf
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
laballade.pdf
LD.pdf
LMG-40-7161-RU-DUC-01.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
motor.pdf
mspro.pdf
muur.eps
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
Page01.pdf
pdfopt_bug.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
rotate0.pdf
rotate270.pdf
S2_Digitalproof-Forum_circles.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
si_tg_brochure.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf
Testform.v1.0.2.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
two_encodings.ps
type2accent.pdf
type3xshow.eps
type42_glyph_index.ps
unihaken-color.pdf
vasarely.ps
vsem0093.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

normal, 300dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-02.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687156.ps
Bug687207.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
ccc.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
Encoding.ps
Es001-01.pdf
escher.ps
Faktura.pdf
file.pdf
file2.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
font_issue.pdf
foo.pdf
frosch.pdf
golfer.eps
gs.anotherfailure.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
GS_Stroke_error.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
InstandardBuildChar.ps
Jahr2000.pdf
japan.ps
john_clippedimage.pdf
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
laballade.pdf
LD.pdf
LMG-40-7161-RU-DUC-01.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
motor.pdf
muur.eps
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
Page01.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
probe3.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
ridt91.eps
RodinCIDEmbed.pdf
rotate0.pdf
rotate180.pdf
rotate270.pdf
rotate90.pdf
S2_Digitalproof-Forum_circles.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
si_tg_brochure.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-hyperref.pdf
test.pdf
test2.pdf
test2a.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type2accent.pdf
type3xshow.eps
type42_glyph_index.ps
unihaken-color.pdf
UnusualFontMatrix.ps
vasarely.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

pdfwrite 72dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687207.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
ccc.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
Es001-01.pdf
escher.ps
Faktura.pdf
file.pdf
file2.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
font_issue.pdf
frosch.pdf
golfer.eps
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan.ps
john_clippedimage.pdf
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
laballade.pdf
LD.pdf
LMG-40-7161-RU-DUC-01.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
motor.pdf
mspro.pdf
muur.eps
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
Page01.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
ridt91.eps
RodinCIDEmbed.pdf
rotate0.pdf
S2_Digitalproof-Forum_circles.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
si_tg_brochure.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf
Testform.v1.0.2.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type2accent.pdf
type3xshow.eps
type42_glyph_index.ps
unihaken-color.pdf
vasarely.ps
vsem0093.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

pdfwrite, 300 dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-02.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687156.ps
Bug687207.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
ccc.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
Encoding.ps
Es001-01.pdf
escher.ps
Faktura.pdf
file.pdf
file2.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
font_issue.pdf
foo.pdf
frosch.pdf
golfer.eps
gs.anotherfailure.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
GS_Stroke_error.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
InstandardBuildChar.ps
Jahr2000.pdf
japan.ps
john_clippedimage.pdf
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
laballade.pdf
LD.pdf
LMG-40-7161-RU-DUC-01.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
motor.pdf
mspro.pdf
muur.eps
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
Page01.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
probe3.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
ridt91.eps
RodinCIDEmbed.pdf
rotate0.pdf
rotate180.pdf
rotate270.pdf
rotate90.pdf
S2_Digitalproof-Forum_circles.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
si_tg_brochure.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-hyperref.pdf
test.pdf
test2.pdf
test2a.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type2accent.pdf
type3xshow.eps
type42_glyph_index.ps
unihaken-color.pdf
UnusualFontMatrix.ps
vasarely.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

[src/gxdtfill.h 1.15]

2004-02-16 09:47 Igor Melichev

Improving the filling algorithm, step D5.

DETAILS :

It's a preparation for fixing a problem while filling a single trapezoid.
This change improved a debug drawing.

EXPECTED DIFFERENCES :

None.

[src/gxdtfill.h 1.14]

2004-02-16 09:13 Igor Melichev

A new implementation of shadings, step 6.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.

1. Implemented a debug drawer draw_wedge.
2. dbg_nofill was not properly initialized.
3. Removed a debuging hack.
4. removed unused variables.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.12]

2004-02-16 09:10 Igor Melichev

Improving the filling algorithm, step D4.

DETAILS :

It's a preparation for fixing a problem while filling a single trapezoid.
This change is algorithmicaly equivalent.

EXPECTED DIFFERENCES :

None.

[src/gxdtfill.h 1.13]

2004-02-16 08:21 Igor Melichev

Improving the filling algorithm, step D2.

DETAILS :

It's a preparation for fixing a problem while filling a single trapezoid.
This change is algorithmicaly equivalent.
It branches out the rectangle case and simplifies it.
Some macros are moved by necessity.

EXPECTED DIFFERENCES :

None.

[src/gxdtfill.h 1.12]

2004-02-16 06:01 Dan Coby

Fix for 687294 psdcmyk device does not write resolution correctly to PSD
files.  This change adds a 'ResolutionInfo structure' into the 'Image
Resources' section of the output file.  This structure specifies the
horizontal and vertical resolution of the image.  (Note:  Adobe's support
of asymetric resolutions is poor.)

[src/gdevpsd.c 1.6]

2004-02-15 14:51 Igor Melichev

Fix: Improving the documentation (comments) about the filling algorithm, improved.

DETAILS :

The prevoius change to the comment appears wrong,
i.e. the old expression "x + xf/h + 1"
appears correct due to compute_ldx subtracts h from
the remainder but doesn't add 1 to the integer part,
which is x.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.13]

2004-02-15 11:31 Igor Melichev

A new implementation of shadings, step 5.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
It fixes some dropouts.

1. Improved the documentation (comments).
2. Improved the debug painting with NEW_TENSOR_SHADING_DEBUG.
3. Fixed bugs in the linear equation solver.
4. Improved the wedge generation.
5. Reduced the usage of transpozed coordinates.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.11]

2004-02-15 11:28 Igor Melichev

Fix: Improving the documentation (comments) about the filling algorithm.

DETAILS :

We believe that the comment about "x, xf" was wrong.
Note tha the old expression was "x + xf/h + 1",
and we changed it to "x + xf/h". We believe that
the new one corresponds to the code.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.12, src/gxdtfill.h 1.11]

2004-02-14 11:57 Igor Melichev

A new implementation of shadings, step 4.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
In the new code wedges were wrong.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.10]

2004-02-14 09:04 Igor Melichev

A new implementation of shadings, step 3.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
In the new code fixed internal wegdes.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.9, src/lib.mak 1.167]

2004-02-14 08:44 Igor Melichev

Fix : Visual trace could miss the current color when reinitialized.

EXPECTED DIFFERENCES :

None.

[src/dwtrace.c 1.6]

2004-02-13 17:51 Ralph Giles

Propagate a change from the GS_8_1X branch. AC_CHECK_TYPES takes a
comma-sparated list.

[src/configure.ac 1.40]

2004-02-13 16:43 Igor Melichev

A new implementation of shadings, step 2.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
In the new code fixed the decomposition except wegdes.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.8, src/lib.mak 1.166]

2004-02-13 08:15 Igor Melichev

pdfwrite : NoEncrypt option by a special customer request, improved.

DETAILS :

Improving the condition for empty keys.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfo.c 1.28]

2004-02-13 08:08 Igor Melichev

pdfwrite : NoEncrypt option by a special customer request.

DETAILS :

The implementation isn't fool proof : an inaccurate specification
may generate an inconforming document.

The specified key is not encrypted in any dictionary.
The specification must use an external representation :
a name to be prepended with slash, a string to be bracketed, and so on.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.89, src/gdevpdfo.c 1.27, src/gdevpdfp.c 1.37, src/gdevpdfu.c 1.51, src/gdevpdfx.h 1.86]

2004-02-12 16:29 Igor Melichev

Fix : Intel C and Cygwin/gcc compiler warnings.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtc.c 1.33, src/gxcht.c 1.12, src/gxdhtserial.c 1.4, src/gxht.c 1.15, src/gxttfb.c 1.30]

2004-02-12 15:19 Igor Melichev

Improving the filling algorithm, step D1.

DETAILS :

1. The 'peak' condition was too weak.
   Caused minor differences in rasters with dropout prevention.

2. Expanded loop_fill_trap_np in the inner trapezoid loop.
   This change is algorithmically equivalent.

3. Cleaned the inner loop with moving out the computations if ybot, ytop.
   This change is algorithmically equivalent.

4. Moved the (ybot < ytop) check outside the trapezoid loop.
   This change is algorithmically equivalent.

5. Inserted 'const' into loop_fill_trap_np.

6. Inserted the section "Reserved to improve the banding"
   to simplify experiments with it.

EXPECTED DIFFERENCES :

72dpi :

86554321.pdf
adesso1.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
CAIB_highres_page4.pdf
pstopdf.pdf
smdf.90441.102.pdf
sports.pdf
waterfal.ps

300dpi :

Altona.Page_3.2002-09-27.pdf

[src/gxfill.c 1.110, src/gxfilltr.h 1.3]

2004-02-12 12:05 Igor Melichev

Fix : Some Intel C compiler warnings.

DETAILS :

Bug 687292 "General bugs in ghostscript source".

"double wxy[2]" was a real bug, but this code fragment
never executes with current Ghostscript and GhostPCL interpreters.

EXPECTED DIFFERENCES :

None.

[src/gxfcopy.c 1.41]

2004-02-12 10:28 Igor Melichev

Fix (pdfwrite) : Charproc can change scale before calling setcachedevice.

DETAILS :

Bug 687290 "pdfwrite generate too large glyphs".

To know that CTM changed by a charproc before setcachedevice or setcharwidth,
we set identity CTM before entering the charproc.
If setcachedevice or setcharwidth decides to fall back to
the default implementation, we restore the CTM in there.

The condition in gdevpdtt.c 1931 is changed,
causing minor differences with Bug687044.ps and muur.eps .

We found that a further improvement would be useful for
a better handling of a composite font with a Type 3 descendent.
Opened the new bug 687298 about this issue.
Differences with Bug687044.ps and muur.eps may be related to it.

EXPECTED DIFFERENCES :

A minor shift of glyphs with pdfwrite :

Bug687044.ps
muur.eps

[src/gdevpdf.c 1.88, src/gdevpdfx.h 1.85, src/gdevpdtt.c 1.73]

2004-02-11 11:20 Igor Melichev

Fix : GS_LIB_DEFAULT was wrong on OpenVMS.

DETAILS :

Bug 687258 "(VMS) Illustrator 10 eps with spot color crashes ghostscript".

EXPECTED DIFFERENCES :

None.

[src/openvms.mak 1.35]

2004-02-11 11:00 Igor Melichev

A new implementation of shadings, step 1.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
The new code compiles but never tested.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.7, src/lib.mak 1.165]

2004-02-10 22:31 Ralph Giles

Update our copy of the ijs source to the latest cvs source, which
includes libtool support for building a shared library version. Closes
bug 687278.

[ijs/Makefile.am 1.1, ijs/Makefile.in 1.3, ijs/README 1.2, ijs/autogen.sh 1.1, ijs/configure.ac 1.1, ijs/configure.in 1.2, ijs/ijs.c 1.2, ijs/ijs.h 1.2, ijs/ijs.pc.in 1.1, ijs/ijs_client.c 1.2, ijs/ijs_client.h 1.2, ijs/ijs_client_example.c 1.2, ijs/ijs_exec_unix.c 1.2, ijs/ijs_exec_win.c 1.2, ijs/ijs_server.c 1.2, ijs/ijs_server.h 1.2, ijs/ijs_server_example.c 1.2, ijs/ijs_spec.sgml 1.2, ijs/install-sh 1.2, ijs/unistd_.h 1.2]

2004-02-08 17:35 Igor Melichev

Fix: Improving the decision whether the dropout prevention to be applied.

DETAILS :

1. The old code applied the dropout prevention
if gx_fill_params::adjust = 0.
It worked since the latter was set to 0 only for characters.

Now we intend to discontinue the fill adjustment with shadings,
so the old condition won't be applicable in further revisions.
Therefore we reserve the value -1 of gx_fill_params::adjust
especially for designating characters with a dropout prevention,
and percept it in the filling algorithm (We tried to use
new special flag for designeting characters,
but it requires an enhancement to the clist language.).

2. The old code has a problem with PaintType 2 fonts :
it applied the dropout prevention to strokes.
This patch fixes that with checking PaintType in gxtype1.c .

EXPECTED DIFFERENCES :

A progression with CAT_LOGO.ps due to (2).

[src/gxfill.c 1.109, src/gxistate.h 1.20, src/gxtype1.c 1.36, src/zchar42.c 1.15]

2004-02-08 11:29 Igor Melichev

Simplifying the filling algorithm, step C21.

DETAILS :

Removing the old code DONT_FILTER_SMALL_SEGMENTS 0.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.42, src/gxfill.c 1.108, src/gxfill.h 1.22, src/gxpflat.c 1.40, src/gzpath.h 1.36]

2004-02-08 10:23 Igor Melichev

Simplifying the filling algorithm, step C20.

DETAILS :

Removing the old code SCANLINE_USES_ITERATOR 0.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.41, src/gxfill.c 1.107, src/gxfill.h 1.21, src/gxfillsl.h 1.3, src/gxpcopy.c 1.22, src/gzpath.h 1.35]

2004-02-08 01:46 Igor Melichev

Simplifying the filling algorithm, step C19a.

DETAILS :

Fixing a comment.

EXPECTED DIFFERENCES :

None.

[src/gxdtfill.h 1.10]

2004-02-08 01:41 Igor Melichev

Simplifying the filling algorithm, step C19.

DETAILS :

This is an optimization of the trapezoid algorithm :

1. gx_fill_trapezoid_narrow derives a specialization from
   fill_loop_by_trapezoids__pr.

2. Simplified the GX_FILL_TRAPEZOID template with moving the
   fill_direct check outside the template.

3. Renamed gx_default_fill_trapezoid_as, gx_default_fill_trapezoid_ns,
   gx_fill_trapezoid_narrow.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.11, src/gdevddrw.h 1.4, src/gxdtfill.h 1.9, src/gxfilltr.h 1.2]

2004-02-06 11:05 Igor Melichev

Simplifying the filling algorithm, step C18.

DETAILS :

This is an optimization of the new scanline algorithm.
merge_ranges doesnt need to enumerate flattened pieces of monotonic curves.
Minor change : renamed "monotonic" into "monotonic_y".

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.106, src/gxfill.h 1.20]

2004-02-05 17:59 Igor Melichev

Simplifying the filling algorithm, step C17.

DETAILS :

Do not filter out short flattened segments.

We believe that the old code was not conforming to PLRM due to filtering small
segments after flatteingng a curve.

We believe that the filtering has 2 purposes :

1. Prevent the filling algorythms from zero length segments;
2. Speed up the filling with reducing the number of vertices in a polygon.

The new filling algorithm handles zero length segments with no problem,
and the speeding up appears within 1% except for shadings.
We believe that the rendering quality is more important.

The performance of shadings to be fixed separately.

EXPECTED DIFFERENCES :

This patch causes rendering differences with almost all of comparefiles :

Normal, 72 dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687156.ps
bugsample.pdf
bulletin.pdf
ca.pdf
CAIB_highres_page4.pdf
ccc.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Encoding.ps
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
frosch.pdf
golfer.eps
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan-.ps
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-setweightvector.ps
test.pdf
test2.pdf
test2a.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
Type11CDevProc.ps
Type3stringwidth.ps
type42_glyph_index.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
xgfddg.pdf
xngnews.pdf

Normal, 300dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-02.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
ccc.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Encoding.ps
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
foo.pdf
frosch.pdf
golfer.eps
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
GS_Stroke_error.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-hyperref.pdf
test.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type1-ce1_setcurrentpoint.ps
Type3stringwidth.ps
type42_glyph_index.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

pdfwrite, 72dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687156.ps
bugsample.pdf
bulletin.pdf
ca.pdf
CAIB_highres_page4.pdf
ccc.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Encoding.ps
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
frosch.pdf
golfer.eps
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-setweightvector.ps
test.pdf
test2.pdf
test2a.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
Type11CDevProc.ps
Type3stringwidth.ps
type42_glyph_index.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
xgfddg.pdf
xngnews.pdf

pdfwrite, 300dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-02.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
ccc.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Encoding.ps
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
foo.pdf
frosch.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
GS_Stroke_error.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan-.ps
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-hyperref.pdf
test-setweightvector.ps
test.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

[src/gx.h 1.40]

2004-02-05 16:08 Igor Melichev

Simplifying the filling algorithm, step C16.

DETAILS :

Switching to the new scanline algorithm based on the flattened iterator.
Now both the trapezoid and the scanline algorithm use same flattened path.

Differences in rasters appears due to 2 reasons :

1. An inprecise expressions used in the old algorithm in gx_curve_x_at_y :
the iteration of midpoint_fast accumulates a big rounding error.
The new algorithm have smaller error due to 3*log2(N) fraction bits
while the coordinate accumulation, where N is the number of flattened segments.

2. The old algorithm used inprecise expressions in pco_monotonize.
The new algorithm applies a flattening instead the monotonization.

EXPECTED DIFFERENCES :

Normal, 72 dpi :

012-09.ps
013-09.ps
020-01.ps
027-05.ps
027-13.ps
045-01.ps
093-01.ps
103-01.ps
118-01.ps
165-01.ps
231-01.ps
233-01.ps
251-01.ps
281-01.ps
289-01.ps
308-04.ps
311-03.ps
442-01.ps
483-01.ps
a.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
Bug687207.ps
bugsample.pdf
chilis_black.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps

Normal, 300dpi :

012-09.ps
013-09.ps
020-01.ps
027-13.ps
045-01.ps
093-01.ps
103-01.ps
118-01.ps
136-01.ps
165-01.ps
231-01.ps
233-01.ps
251-01.ps
281-01.ps
289-01.ps
442-01.ps
483-01.ps
a.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
Bug687207.ps
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
xgfddg.pdf

pdfwrite, 72dpi :

012-09.ps
013-09.ps
020-01.ps
027-05.ps
027-13.ps
045-01.ps
093-01.ps
103-01.ps
231-01.ps
233-01.ps
251-01.ps
281-01.ps
308-04.ps
311-03.ps
442-01.ps
483-01.ps
483-05.ps
a.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps

pdfwrite, 300dpi :

012-09.ps
013-09.ps
020-01.ps
027-13.ps
045-01.ps
093-01.ps
103-01.ps
118-01.ps
136-01.ps
165-01.ps
231-01.ps
233-01.ps
251-01.ps
281-01.ps
442-01.ps
483-01.ps
483-05.ps
a.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
Bug687207.ps
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
xgfddg.pdf

[src/gx.h 1.39]

2004-02-05 14:39 Igor Melichev

Simplifying the filling algorithm, step C15.

DETAILS :

This patch changes a disabled code only.
The new scanline algorithm performed extra scans within a sampling band.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.105, src/gxfillsl.h 1.2]

2004-02-04 11:42 Igor Melichev

Simplifying the filling algorithm, step C14.

DETAILS :

Fixing Cygwin/gcc warnings of the previous patch.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.10, src/gxdtfill.h 1.8]

2004-02-04 11:33 Igor Melichev

Simplifying the filling algorithm, step C13.

DETAILS :

This is a code optimization.
It applies templates for generating specialized variants
of generic algorithms used for filling a path.
Also removed 'assret' which are not longer needed.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.9, src/gdevpdtc.c 1.32, src/gxdtfill.h 1.7, src/gxfdrop.c 1.13, src/gxfill.c 1.104, src/gxfill.h 1.19, src/gxfillsl.h 1.1, src/gxfilltr.h 1.1, src/gxfillts.h 1.1, src/lib.mak 1.164]

2004-02-04 10:09 Igor Melichev

Fix (pdfwrite) : provide a compatibility of TEXT_FROM_CHARS to GhostPCL.

DETAILS :

This is a port of a patch from ghostpcl by Henry Stiles.
This btanch never executes with Ghostscript.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c 1.72]

2004-02-02 21:17 Igor Melichev

Allow auto-inline optimization with MSVC.

DETAILS :

MSVC doesn't assume /Ob2 when /O2 is specified.

EXPECTED DIFFERENCES :

None.

[src/msvccmd.mak 1.14]

2004-02-02 20:24 Alex Cherepanov

Perform sign extension on 64-bit platforms.
Partial fix for bug 687029.

DETAILS:
Genoa test suite considers 64-bit integers to be an error. If we decide to
use 32-bit integer arithmetic on any platform this patch should be undone.

[lib/gs_ttf.ps 1.36]

2004-02-02 20:14 Igor Melichev

Simplifying the filling algorithm, step C12.

DETAILS :

This is a code optimization.
Some functions are expanded inline.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.103]

2004-02-02 16:25 Igor Melichev

Simplifying the filling algorithm, step C11.

DETAILS :

This is a code optimization.
It reduces the data copying with removing arguments and local variables
xlbot, xbot, xltop, xtop, y, y1.
Also add_y_line is made inline.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.102]

2004-02-02 14:09 Igor Melichev

Simplifying the filling algorithm, step C10.

DETAILS :

1. Scanline algorithm must not apply to spotan device;
2. Removed low useful macro DOUBLE_WRITE_OK.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.101]

2004-02-02 13:53 Igor Melichev

Simplifying the filling algorithm, step C9.

DETAILS :

This is a code optimization.
Removed unuseful computations of a trapeziod widths.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.100]

2004-02-02 12:29 Igor Melichev

Simplifying the filling algorithm, step C8.

DETAILS :

Reduced outlines for both the trapezoid and the scanline algorithms
should be same. This patch fixes that with dropping few rare cases,
which never appear with our testbase.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.99]

2004-02-02 11:48 Igor Melichev

Simplifying the filling algorithm, step C7.

DETAILS :

This is a preparation for removing the coord_near filter
from the flattening algorithm.

We believe that the the coord_near filter was implemented for
two purposes : (1) prevent the filling algorithm from
zero-height segments, and (2) speed up the filling with
reducing the number of vertices in the polygon.

Now the filling algorithms can handle zero length segments
due to conformity to gx_flattened_iterator.
Thus the reason (1) is not longer important.

The skipping of some vertices speeds up in 3% at 600dpi
rendering with ppmraw to null file.
But sometimes it produces raster distortions,
such as an asymmetric raster for symmetric outlines.
When we fixed the distortions,
the speeding up appears within 0.5%.

We decided to remove the coord_near filter, because so small
echonony of processor time is less important than the distortions.

This patch introduces a new swicth DONT_FILTER_SMALL_SEGMENTS,
and make the compilation of coord_near filter to depend on it.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.38, src/gxfill.c 1.98, src/gxfill.h 1.18, src/gxpflat.c 1.39, src/gzpath.h 1.34]

2004-02-02 08:44 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 14.

DETAILS :

Elements of pdfmark elements were not encryptrd.

Since gs/lib/gs_pdfwr.ps serializes pdfmark elements,
we would like to encrypt them before the serialization.
However it would require to implement a new PS operator to pass the
encription keys from the device to the PDF interpreter.
Since this way appears cumbersome, we decided to
unserialize data in the device. For doing that we implement
a simple parser in pdf_put_composite.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfu.c 1.50]

2004-01-31 00:48 Ralph Giles

[no log message]

[doc/Release.htm 1.84]

2004-01-30 23:12 Ralph Giles

Replace the license header of some of the test scripts with the generic version.

[toolbin/tests/check_all.py 1.5, toolbin/tests/check_comments.py 1.3, toolbin/tests/check_dirs.py 1.8, toolbin/tests/check_docrefs.py 1.9, toolbin/tests/check_source.py 1.9, toolbin/tests/gscheck_all.py 1.5, toolbin/tests/gscheck_fuzzypdf.py 1.7, toolbin/tests/gscheck_pdfwrite.py 1.17, toolbin/tests/gscheck_raster.py 1.8, toolbin/tests/gsconf.py 1.10, toolbin/tests/gssum.py 1.6, toolbin/tests/gstestgs.py 1.22, toolbin/tests/gstestutils.py 1.10]

2004-01-30 08:51 Russell Lang

Document that the copyright year needs to be updated in some
Windows files for each release.

[doc/Release.htm 1.83]

2004-01-30 08:40 Russell Lang

Update copyright date for Windows release to 2004.

[src/dwsetup.rc 1.11, src/winint.mak 1.21]

2004-01-30 07:32 Ralph Giles

Correct the link to History8.htm.

[doc/Readme.htm 1.54]

2004-01-30 04:05 Ray Johnston

Fix typo.

[doc/Use.htm 1.100]

2004-01-29 18:40 Ray Johnston

Change notice in some headers that had been missed during original update
to the unified notice.

[src/gdevdljm.h 1.8]

2004-01-29 18:19 Ray Johnston

Change notice in some headers that had been missed during original update
to the unified notice.

[src/gdevatx.c 1.9, src/gdevdjet.c 1.11, src/gdevdljm.c 1.11, src/gsovrc.c 1.4, src/gsovrc.h 1.3, src/gxoprect.c 1.5, src/gxoprect.h 1.2]

2004-01-29 09:34 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 13.

DETAILS :

1. Disable Encryption version 2 revision 2 with KeyLength > 40
   due to an incompatibility to many viewers.
2. Improves the error message format.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.87]

2004-01-28 16:54 Igor Melichev

Simplifying the filling algorithm, step C6.

DETAILS :

This is a code optimization.
It factors out internal constants.
The change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gxfdrop.c 1.12, src/gxfill.c 1.97, src/gxfill.h 1.17]

2004-01-28 15:08 Igor Melichev

Simplifying the filling algorithm, step C5.

DETAILS :

This is a code optimization.
It simplifies argument lists.
The change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gxfdrop.c 1.11, src/gxfill.c 1.96, src/gxfill.h 1.16]

2004-01-28 09:05 Igor Melichev

Fix (the new TT interpreter) : A bad pointer enumerated relocating gx_ttfReader.

DETAILS :

gx_ttfReader::pfont from a global to a local memory.
Now we set it to a non-NULL value only during a TT data
access, when the garbager is not invoked.

EXPECTED DIFFERENCES :

None.

[src/gstype42.c 1.42, src/gxccman.c 1.24, src/gxttfb.c 1.29, src/gxttfb.h 1.10]

2004-01-27 16:07 Igor Melichev

Fix (TT grid fitting) : A garbager descriptor was wrong.

DETAILS :

It caused a crash running all comparefiles with ppmraw in a single job.

EXPECTED DIFFERENCES :

None.

[src/gzspotan.h 1.6]

2004-01-27 16:05 Igor Melichev

Fix : Partially restoring the old behavior of the filling algorithm.

DETAILS :

When we dropped the compatibility with the patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-January/004061.html,
one case of the flattening condition was not perfect.
Sorry for detecting this late.
Now we put another condition, which differs from both the old and the last one,
but the new one is symmetric and provides lesser distortions.

EXPECTED DIFFERENCES :

This change causes a massive difference,
which may partially undo the difference of the patch mentioned above.
Here is a list of expected differences agains the current CVS HEAD :

normal, 72dpi :

000040cf.000_60.pdf
001-01.ps
01_001.pdf
020-01.ps
027-09.ps
045-01.ps
093-01.ps
109-01.ps
159.pdf
175-01.ps
251-01.ps
281-01.ps
289-01.ps
335-01.ps
336-01.ps
455690.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso7.pdf
adesso8.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
besttest.pdf
budget2.pdf
budget2_ai87.pdf
Bug687044.ps
bulletin.pdf
ccc.pdf
dave.pdf
Dave_Barry.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
Jahr2000.pdf
japan.ps
js.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
Svd.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf

normal, 300dpi :

289-01.ps
a.pdf
adesso6.pdf
Altona-Testsuite_p2_S_x3.pdf
besttest.pdf
Bug687044.ps
bulletin.pdf
BW0696FOLD1FRONT.pdf
fonts.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
keyboard.pdf
mbb-with-space.ps
NIL_0003.pdf
pdftops.pdf
prob.pdf
pstopdfO3.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test_multipage_prob.pdf
waterfal.ps
womanface.pdf

pdfwrite 72 dpi :
000040cf.000_60.pdf
001-01.ps
01_001.pdf
020-01.ps
045-01.ps
093-01.ps
109-01.ps
159.pdf
175-01.ps
251-01.ps
281-01.ps
335-01.ps
336-01.ps
455690.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso7.pdf
adesso8.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
besttest.pdf
budget2.pdf
budget2_ai87.pdf
Bug687044.ps
bulletin.pdf
ccc.pdf
dave.pdf
Dave_Barry.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
Jahr2000.pdf
japan.ps
js.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
Svd.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf

pdfwrite, 300 dpi :

a.pdf
adesso6.pdf
Altona-Testsuite_p2_S_x3.pdf
besttest.pdf
Bug687044.ps
bulletin.pdf
BW0696FOLD1FRONT.pdf
fonts.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
keyboard.pdf
mbb-with-space.ps
NIL_0003.pdf
pdftops.pdf
prob.pdf
pstopdfO3.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test_multipage_prob.pdf
waterfal.ps
womanface.pdf

[src/gxpflat.c 1.38]

2004-01-27 05:10 Ralph Giles

Pass on the CPPFLAGS settings from the configure script into GCFLAGS. Some users expect to be able
to add include paths through the environment this way. Suggestion from Len Makin.

[src/Makefile.in 1.32]

2004-01-26 23:51 Igor Melichev

Simplifying the filling algorithm, step C4.

DETAILS :

In the enabled code this change is algorithmically equivalent.
In the disabled code it provides a variable threshold
for the 'coord_near' predicate.
Doing so because the old scanline algorithm uses a zero threshold.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.95, src/gxfill.h 1.15, src/gxpflat.c 1.37, src/gzpath.h 1.33]

2004-01-26 22:35 Igor Melichev

Updating the ps2pdf documentation.

[doc/Ps2pdf.htm 1.64]

2004-01-26 22:16 Igor Melichev

Simplifying the filling algorithm, step C3.

DETAILS :

The enabled variant of the scanline algorithm was unintentionally
modified by a recent patch. Rather the change was equivalent,
we prefer to clean it.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.94]

2004-01-26 20:54 Ray Johnston

Correct typo -- position of " in example command. Thanks to Ulf-Dietrich
Braumann of Leipzig University for this.

[doc/Ps2pdf.htm 1.63]

2004-01-26 15:27 Igor Melichev

Simplifying the filling algorithm, step C2.

DETAILS :

This change modifies a disabled code only.
It fixes a bug discovered with chilis_black.pdf .

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.93]

2004-01-26 13:20 Igor Melichev

Simplifying the filling algorithm, step C1.

DETAILS :

This starts a neqw series about the scanline algorithm.
The purpose is to use same numeric method as in the trapezoid algorithm.

This change modifies a disabled code only.

1. Defines new switch SCANLINE_USES_ITERATOR in gx.h .
2. Replaces curve_cursor with gx_flattened_iterator in the scanline algorithm.
3. Provides same Y-list contents as for the trapezoid algorithm.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.37, src/gxfill.c 1.92, src/gxfill.h 1.14, src/gxpcopy.c 1.21, src/gzpath.h 1.32]

2004-01-26 13:13 Igor Melichev

Fix : gx_flattened_iterator::last_filtered1_i could left uninitialized.

DETAILS :

It was a bug, which our testbase did not detect.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.91, src/gxpflat.c 1.36, src/gzpath.h 1.31]

2004-01-26 11:15 Igor Melichev

Simplifying the filling algorithm, step B10, final in this series.

DETAILS :

Oops, the previous patch appears not final in B series.
This one is. It removes an obsolete code from gxpcopy.c .

EXPECTED DIFFERENCES :

None.

[src/gxpcopy.c 1.20]

2004-01-25 14:23 Igor Melichev

Simplifying the filling algorithm, step B9, final in this series.

DETAILS :

It finally removes macros, which are not longer useful.
It doesn't change the algorithm.

EXPECTED DIFFERENCES :

None.

[src/gxpflat.c 1.35]

2004-01-25 13:55 Igor Melichev

Simplifying the filling algorithm, step B8.

DETAILS :

It finally drops the compatibility to the old code,
making the result to get the maximal regularity.

Minor change : improved a comment.

EXPECTED DIFFERENCES :

Normal, 72 dpi :

000040cf.000_60.pdf
001-01.ps
01_001.pdf
020-01.ps
027-09.ps
045-01.ps
093-01.ps
109-01.ps
159.pdf
175-01.ps
251-01.ps
281-01.ps
289-01.ps
335-01.ps
336-01.ps
455690.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso7.pdf
adesso8.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
besttest.pdf
budget2.pdf
budget2_ai87.pdf
Bug687044.ps
bulletin.pdf
ccc.pdf
dave.pdf
Dave_Barry.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
Jahr2000.pdf
japan.ps
js.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
Svd.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf

pdfwrite, 72dpi :

000040cf.000_60.pdf
001-01.ps
01_001.pdf
020-01.ps
045-01.ps
093-01.ps
109-01.ps
159.pdf
175-01.ps
251-01.ps
281-01.ps
335-01.ps
336-01.ps
455690.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso7.pdf
adesso8.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
besttest.pdf
budget2.pdf
budget2_ai87.pdf
Bug687044.ps
bulletin.pdf
ccc.pdf
dave.pdf
Dave_Barry.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
Jahr2000.pdf
japan.ps
js.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
Svd.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf

normal, 300 dpi :

289-01.ps
a.pdf
adesso6.pdf
Altona-Testsuite_p2_S_x3.pdf
besttest.pdf
Bug687044.ps
bulletin.pdf
BW0696FOLD1FRONT.pdf
fonts.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
keyboard.pdf
mbb-with-space.ps
NIL_0003.pdf
pdftops.pdf
prob.pdf
pstopdfO3.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
sports.pdf
test_multipage_prob.pdf
waterfal.ps
womanface.pdf

pdfwrite, 300 dpi :

a.pdf
adesso6.pdf
Altona-Testsuite_p2_S_x3.pdf
besttest.pdf
Bug687044.ps
bulletin.pdf
BW0696FOLD1FRONT.pdf
fonts.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
keyboard.pdf
mbb-with-space.ps
NIL_0003.pdf
pdftops.pdf
prob.pdf
pstopdfO3.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test_multipage_prob.pdf
waterfal.ps
womanface.pdf

[src/gxpflat.c 1.34]

2004-01-25 11:49 Igor Melichev

Simplifying the filling algorithm, step B7.

DETAILS :

1. Removed FLATTENED_ITERATOR_HEAVY_SELFTEST 0 because it is unuseful.
2. Simplified gx_flattened_iterator__next_filtered.
   This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gxpflat.c 1.33]

2004-01-25 11:21 Igor Melichev

Simplifying the filling algorithm, step B6.

DETAILS :

The previous patch left some rudinents, removing them now :

1. Switch off the self-testing.
2. Remove gx_check_nearly_collinear.
3. Removed the CURVED_TRAPEZOID_FILL0_COMPATIBLE 0 section from
   gx_flattened_iterator__prev_filtered because it
   can't provide the backscan consistency.

EXPECTED DIFFERENCES :

None.

[src/gxpflat.c 1.32]

2004-01-24 23:49 Dan Coby

Fix for Bug 687255  pcl output shifted to bottom of page.  Correct
the order of the PCL commands at the start of page for the ljet devices.

DETAILS:

This problem surfaced when a previous fix 686815 was made.  That fix
corrected  a line of code which was setting the page seize in the output
file.

With the correct page size being specified in the output file, there were
some side effects.  Setting the page size resets several other items,
including the starting page X and Y offsets.

The fix for this problem consists of simply moving the setting of the page
size three lines earlier in the file.  Now the page size is set prior to
the page X and Y offsets, which are set as part of this line:

       fputs(page_init, prn_stream);

[src/gdevdljm.c 1.10]

2004-01-24 10:45 Igor Melichev

Simplifying the filling algorithm, step B5.

DETAILS :

1. Removed the 'filtered2' subclass of gx_flattened_iterator;
2. Renamed the 'filtered1' subclass to 'filtered'.
3. Removed CURVED_TRAPEZOID_FILL_HEAVY_TEST.
4. Removed the CURVED_TRAPEZOID_FILL0_COMPATIBLE 0 section from
   gx_flattened_iterator__prev_filtered because it
   can't provide the backscan consistency.
5. Made other configuration flags to be local for gxpflat.c .

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.36, src/gxfill.c 1.90, src/gxpflat.c 1.31, src/gzpath.h 1.30]

2004-01-23 17:35 Ray Johnston

Add check for missing raster image before getting the date of the raster.
If raster is missing, run update_***baseline script to generate it since
the file must be new since the last regression run. Bug 687245.

[toolbin/tests/gscheck_pdfwrite.py 1.16, toolbin/tests/gscheck_raster.py 1.7]

2004-01-23 16:46 Igor Melichev

Removed the obsolete configuration switches NEW_TT_INTERPRETER and TT_GRID_FITTING.

DETAILS :

It doesn't change the algorithm.

EXPECTED DIFFERENCES :

None.

[src/gsfont.c 1.31, src/gsfont.h 1.10, src/gstext.c 1.16, src/gstype42.c 1.41, src/gx.h 1.35, src/gxccache.c 1.29, src/gxccman.c 1.23, src/gxchar.c 1.39, src/gxfcache.h 1.25, src/gxfont42.h 1.19, src/gxtext.h 1.14, src/gxttfb.c 1.28, src/zchar42.c 1.14, src/zusparam.c 1.12]

2004-01-23 16:41 Igor Melichev

Fix (the new TT interpreter) : st_gs_text_enum_max_ptrs was wrong.

DETAILS :

This doesn't change the algorithm because this constant is never used.

EXPECTED DIFFERENCES :

None.

[src/gxtext.h 1.13]

2004-01-23 16:35 Igor Melichev

Fix (the new TT interpreter) : A bad pointer enumerated relocating gs_text_enum_s.

DETAILS :

gs_text_enum_s::pair pointed to an array element, rather than to
to an object start. Improving text_enum_enum_ptrs and text_enum_reloc_ptrs
with a special processing of this pointer, being similat to one used in
font_dir_enum_ptrs.

EXPECTED DIFFERENCES :

None.

[src/gstext.c 1.15, src/gxfcache.h 1.24, src/lib.mak 1.163]

2004-01-23 14:05 Igor Melichev

Simplifying the filling algorithm, step B4.

DETAILS :

Removed old configuration flags from gxfill.c .
It doesn't change the algorithm.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.89]

2004-01-23 13:25 Igor Melichev

Simplifying the filling algorithm, step B3.

DETAILS :

1. Removed the disabled code MERGE_COLLINEAR_SEGMENTS 0
2. Removed the disabled code CURVED_TRAPEZOID_FILL 0
3. Removed the dependence on TT_GRID_FITTING from gxfill.c .

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.34, src/gxfdrop.c 1.10, src/gxfill.c 1.88, src/gxfill.h 1.13, src/gxpath.h 1.12, src/gxpcopy.c 1.19, src/gxpflat.c 1.30, src/gzpath.h 1.29]

2004-01-23 12:35 Igor Melichev

Simplifying the filling algorithm, step B2.

DETAILS :

This patch disables the MERGE_COLLINEAR_SEGMENTS section.
It was an old unuseful optimization, which we decided to cancel.
For more information see the log message of the previous patch.

EXPECTED DIFFERENCES :

Normal, 72dpi :

014-13.ps
027-09.ps
036-01.ps
045-01.ps
083-13.ps
175-01.ps
1_2001.pdf
245-01.ps
255-01.ps
268-04.ps
268-05.ps
281-01.ps
298-09.ps
321-09.ps
477-03.ps
86554321.pdf
a.pdf
acrobat.pdf
adesso5.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
ats-3-5-99.pdf
besttest.pdf
brochurep1.pdf
bugsample.pdf
ca.pdf
CAIB_highres_page4.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
dave.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
mbb-with-space.ps
messenger16.pdf
NECPNTD.pdf
prob.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
Svd.pdf
tiger.eps
time1.pdf
vasarely.ps
waterfal.ps
womanface.pdf
xgfddg.pdf

Normal, 300dpi :

Almost ALL FILES RENDER DIFFERENTLY.
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-06.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
acrobat.pdf
adesso1.pdf
adesso3.pdf
adesso5.pdf
adesso7.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
bug-gstest.pdf
bugsample.pdf
bulletin.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
chess.ps
chilis_black.pdf
chstudy.pdf
dave.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Faktura.pdf
file.pdf
fonts.pdf
fonttest.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
p2b-100.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
rotate90.pdf
S2_Digitalproof-Forum_x3k.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
type2accent.pdf
waterfal.ps
wrapper-gs7.pdf
xgfddg.pdf
xngnews.pdf

pdfwrite, 72dpi :

012-09.ps
013-09.ps
014-13.ps
027-09.ps
036-01.ps
045-01.ps
083-09.ps
083-13.ps
175-01.ps
1_2001.pdf
205-05.ps
205-09.ps
245-01.ps
255-01.ps
268-04.ps
268-05.ps
281-01.ps
477-03.ps
86554321.pdf
a.pdf
acrobat.pdf
adesso5.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
ats-3-5-99.pdf
besttest.pdf
brochurep1.pdf
Bug687044.ps
bugsample.pdf
ca.pdf
CAIB_highres_page4.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
dave.pdf
fonttest.pdf
golfer.eps
H00216q.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
mbb-with-space.ps
messenger16.pdf
NECPNTD.pdf
prob.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
Svd.pdf
tiger.eps
time1.pdf
tpc2.ps
waterfal.ps
womanface.pdf
xgfddg.pdf

pdfwrite, 300dpi :

Almost ALL FILES RENDER DIFFERENTLY.
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-06.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
acrobat.pdf
adesso1.pdf
adesso3.pdf
adesso5.pdf
adesso7.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
bug-gstest.pdf
Bug687044.ps
bugsample.pdf
bulletin.pdf
CAIB_highres_page4.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
dave.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Faktura.pdf
file.pdf
fonts.pdf
fonttest.pdf
golfer.eps
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
p2b-100.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
type2accent.pdf
waterfal.ps
wrapper-gs7.pdf
xgfddg.pdf
xngnews.pdf

[src/gx.h 1.33]

2004-01-23 10:05 Igor Melichev

Simplifying the filling algorithm, step B1.

DETAILS :

This starts a new sequence of patches to the filling algorithm.
It's goal is a further simplification.

We deetected that MERGE_COLLINEAR_SEGMENTS 1 section is an old optimization,
which speeds up in 1.3% and complicates the code in 30%.
Besides that, it causes inprecise results with the dropout prevention.
At last, the name "MERGE_COLLINEAR_SEGMENTS" doesn't reflect
its effect : actually it merges segments nearly parallwel to coordinate axis,
which may be unlimitedly long and have an unlimited angle.
Therefore we believe that this optimization is not well defined,
appears unuseful, and to be cancelled.

This patch is a preparation for removing the MERGE_COLLINEAR_SEGMENTS
section. We made this switch global and we bracketed more code sections,
which appear unuseful without MERGE_COLLINEAR_SEGMENTS.

This patch almost is a change to a disabled code.
But the change to gxfill.c ln 1238,1241 goes to the enabled code
and appears algorithmically equivalent :
with MERGE_COLLINEAR_SEGMENTS 1 this branch is equivalent to noop.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.32, src/gxfill.c 1.87, src/gxpflat.c 1.29]

2004-01-22 11:36 Igor Melichev

Fix : A bug in ttfmain.c caused a heap damage.

DETAILS :

Bug 687254 "writing pcl segfaults".

EXPECTED DIFFERENCES :

None with comparefiles.

[src/ttfmain.c 1.22]

2004-01-22 09:22 Igor Melichev

Fix : pco_accurate didn't work for curves with zero derivative.

DETAILS :

Bug 687266 "Accurate curves may be inaccurate.".

EXPECTED DIFFERENCES :

None, because normally PS doesn't use "true .setaccuratecurves".

Testing with "true .setaccuratecurves", got no difference with -r72.
Thus our testbase doesn't contain interesting curves.

[src/gxpcopy.c 1.18]

2004-01-22 09:16 Ralph Giles

Create a new dynamic header 'gconfigd.h' for non-platform-specific defines. Variables like
GS_LIB_DEFAULT which were previously tacked onto the end of gconfig.h have been moved to the new
header. This change is necessary to pass the default path for the persistent cache from the
makefile.

DETAILS:

The persistent cache is implemented in the gp layer, but previously it was illegal to access
gconfig.h from code inside the graphics library, it the sense that the build would fail. This is
because of the crazy way operator definitions are collected in dev files before they are
consolidated in gconfig.h.

We don't want to use gconfigv.h because that header is platform-specific is generated by different
code on every platform. Therefore, while this isn't a real fix for gconfig.h circular inclusion
issue, a new header is reasonably motivated.

[src/gp_unix_cache.c 1.2, src/gs.mak 1.25, src/gscdef.c 1.42, src/iconf.c 1.7, src/int.mak 1.122, src/lib.mak 1.162, src/unix-aux.mak 1.12]

2004-01-21 13:55 Igor Melichev

Fix : Don't apply pco_accurate when filling a path.

DETAILS :

When a path is is being stroked, it first converts to the stroke
outline, and pco_accurate is being applied. When the stroke outline
is being filled, pco_accurate was applied at second time with no
useful reason. When it fills a character, pco_accurate disturbs the
hinted outline. Thus it must not apply with 'fill' in any case.

EXPECTED DIFFERENCES :

None, because normally PS doesn't use "true .setaccuratecurves".

Testing with "true .setaccuratecurves", almost all tests
render differently due to characters, and we believe it's a progression.

[src/gxfill.c 1.86]

2004-01-21 13:38 Igor Melichev

Fix : The dropout prevetion did not work with "true .setaccuratecurves".

DETAILS :

Bug 687265 "adjust_point_to_tangent goes out the bbox".

EXPECTED DIFFERENCES :

None, because normally PS doesn't use "true .setaccuratecurves".

[src/gxpcopy.c 1.17]

2004-01-21 10:17 Igor Melichev

Fix (pdfwrite) : Type 3 characters were missed in the Widths array.

DETAILS :

Bug 687242 "ghostscript generates incorrect pdf file".
A wrong character index was used passing characters to adjust_first_last_char,
causing the domain of the Widths array be smaller than necessary.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.52]

2004-01-20 19:11 Ralph Giles

Replace a fixed-filename tempfile fopen with gp_open_scratch_file() for improved robustness in the
pnga device. Part of the fix for bug 687243.

DETAILS:

This is an experimental device to preserve pdf transparency into a png rasterization and is
distinct from the pngalpha device. I doesn't actually work for me and so may be suffering
from bit rot; however the change compiles and should be correct.

[src/gdevpnga.c 1.8]

2004-01-20 19:05 Ralph Giles

Some additional clarification on the new pdfwrite encryption user parameters.

[doc/Ps2pdf.htm 1.62]

2004-01-20 19:00 Ralph Giles

Improve wording and html formatting of recent documentation additions.

[doc/News.htm 1.142, doc/Ps2pdf.htm 1.61]

2004-01-20 15:08 Igor Melichev

Fix : The PCL interpreter doesn't provide pattern streams (continued).

DETAILS :

1. Restored the PATTERN_STREAM_ACCUMULATION 0 code from gdevpdfv.c revision 1.27.
   It provides a conversion of a pattern tile into a PDF pattern object.

2. Passed have_pattern_streams to corresponding parts of pdfwrite.

3. Added a check for have_pattern_streams into zpcolor.c .
   It is useful for debugging PS interpreter
   with passing have_pattern_streams=false to gs_state_set_client.

With PS interpreter the new code never executes (unless one changes
the call to gs_state_set_client).

EXPECTED DIFFERENCES :

None.

[src/gdevpdfg.c 1.46, src/gdevpdfg.h 1.29, src/gdevpdfv.c 1.33, src/int.mak 1.121, src/zpcolor.c 1.12]

2004-01-20 01:39 Ralph Giles

Correct a typo in the previous commit.

[src/gp_unifs.c 1.17]

2004-01-20 01:24 Ralph Giles

Save the original filename template for use in the error message when mkstemp() fails. According
to the man page mkstemp() can clobber the contents of fname if it does not succeed. Part of the
fix for bug 687243.

[src/gp_unifs.c 1.16]

2004-01-19 23:19 Ralph Giles

Remove some very old scripts which contain /tmp races, a security risk should
someone actually try to use them. Part of the fix for bug 687243.

[lib/pj-gs.sh 1.4, lib/sysvlp.sh 1.4]

2004-01-19 20:15 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 12.

DETAILS :

With no encryption strings in the Info dictionary got excessive brackets.
Bug 687263 "Invalid producer / author / creator fields in PDF".

EXPECTED DIFFERENCES :

None.

[src/gdevpdfu.c 1.49]

2004-01-19 16:52 Igor Melichev

Fix (PDF interpreter) : CropBox computed wrongly.

DETAILS :

Bug 687244 "wrong interpretation of negative mediabox coordinates".
The bug title appears incorrect. Actually the problem is caused by
negative CropBox coordinates.

.pdfshowpage_Install translates the coordinate system
to provide positive coordinates, but pdfshowpage_finish did not
account the translation when writing the CropBox.
Therefore it the resulting CropBox was inconsistent with the painting
when the source CropBox uses negative coordinates.

EXPECTED DIFFERENCES :

A progression with vtm2k.pdf .

[lib/pdf_main.ps 1.84]

2004-01-19 12:32 Igor Melichev

pdfwrite : Merge redundant images (continued).

DETAILS :

Bug 687224 "large pdf file size".

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-January/003988.html
appears incomplete, because it works only with

	<< /EncodeColorImages false >> setdistillerparams

The problem happens due to Decode arrays considered always unequal.
This patch :
1. Implemets cos_array_equal.
2. Applies it properly to subobjects (particularly to Decode).
3. Fixes the function cos_dict_equal - it was asymmetric.
4. Improves the error processing while object comparizon.

EXPECTED DIFFERENCES :

None in rasters, some PDFs become shorter.

[src/gdevpdfo.c 1.26]

2004-01-19 09:41 Igor Melichev

Fix : The PCL interpreter doesn't provide pattern streams.

DETAILS :

gx_pattern_cache_lookup falied when called by the PCL interpreter
because the PCL interpreter doesn't provide high level pattern streams.
Actially the compatibility of the graphics library to the PCL interpreter
was broken since gsptype1.c revision 1.16.

This patch introdices a new argument for the function gs_state_set_client.
Using the argument, a client tells to the graphics library
whether the client provides pattern streams. If not,
the graphics librery emulates the old behavior based
on raster parretns only.

The new flag gs_imager_state::have_pattern_streams stores the
compatibility mode. We would prefer it to be a member of the
graphics library instance, but the instance is not implemented yet.
Storing it to gs_imager_state may cause some undeserable effects,
especially when a device creates a temporary graphic state for
an internal use (the clist device is an example).
We assume that none of devices provides pattern streams,
and this assumption should be reasonable for current applications.

The mechanizm for generating patters streams is still
coded specifically to the PS interpreter in pattern_paint_prepare
in zpcolor.c . This solution to be considered as a temporary one.
We should refactor it into 2 parts : one specific for the PS interpreter,
and another one being common for all applications,
which should be a part of the graphics library.

This patch had passed the regression test with the PS interpreter,
but it was not tested with the PCL interpreter.
Debugging it with PCL to be a next step.

EXPECTED DIFFERENCES :

None.

[src/gsistate.c 1.9, src/gsptype1.c 1.18, src/gsstate.c 1.23, src/gxistate.h 1.19, src/gxstate.h 1.9, src/zgstate.c 1.9]

2004-01-17 20:46 Dan Coby

Fix for "687252 subfiledecode errors on includes greater than the
size of a uint".  In spite of the bug name, the problem is not
related to the actual size of the subfile or to the size of a uint.
The actual problem is a missing required parameter:  EODCount.
However Adobe once again ignores the missing parameter and what is
specified in the PRLM-3rd.

DETAILS:

The given test file has a SubFileDecode filter without the required
EODCount parameter.

Ghostscript is rejecting the test file because the parameter is not
defined.  The RangeCheck error message is the result of the following
piece of code in zfilter.c:

  if ((code = dict_int_param(op, "EODCount", 0, max_int, -1, &count)) < 0)
	 return code;

This sets a default value of -1 for EODCount and then checks it
against the range 0 to max_int.  Thus when EODCount is not found
we get the rangecheck since -1 is outside the allowed range.

In spite of the fact that the EODCount is a required parameter,
Adobe Distiller 6.0, my CP1700PS printer, and CPSI 3010.105 print
this file without complaint.

This fix changes the default value to 0 to match Adobe and adds a
comment explaining why the code differs from the spec.

[src/zfilter.c 1.10]

2004-01-16 12:36 Igor Melichev

Fix (type 1 hinter) : Wrong outline with a huge scale.

DETAILS :

An arithmetic error happened when scaling a glyph to a huge size
(about 100000 pixels), causing a wrong outline.
Actually some coordinate values were replaced with zeros.
Thanks to Jeong Kim for detecting that.

The bug was detected with -r1500 with the test file of
the bug 686975 "Black box when converting to tiff".

Note that the bug report is wrong :
it says that the document with -r150 is bad and -r1500 is good.
Comparing rasters with Adobe we concluded exactly vise versa :
-r150 was compatible and -r1500 was incompatible.
After this patch both resolutions are compatible to Adobe.
Probably the user won't like them due to a bug in the document :
it paints a huge glyph, which is a hundred times bigger than the page size.
The document needs a fix.

EXPECTED DIFFERENCES :

None with comparefiles.

[src/gxhintn.c 1.42]

2004-01-16 09:47 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 11.

DETAILS :

Improving a PDF 1.3 parameter conformity check.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.86]

2004-01-16 09:24 Igor Melichev

Documenting new features of gs8.30 .

DETAILS :

This inserts some new reference points in the documentation.
Maybe someone will like to restructurize it.

[doc/Language.htm 1.83, doc/News.htm 1.141, doc/Ps2pdf.htm 1.60, doc/Use.htm 1.99]

2004-01-16 06:36 Dan Coby

Fix for 687247 x11 device fails with CMYK on 8bit display.

DETAILS:

Inside gxcmap.c, the handling of color mapping for most devices is either
halftoned or direct.  However the x11 device when in 8 bit mode, and
possibly other 256 color devices, use a slightly different path.  First
the color is processed in direct mode.  If a color is not in the palatte
and halftoning is required, then gx_no_color_index is returned as a
color value.  Then the color is processed as being halftoned.  However
this last path was dropped from CMYK colors with revision 8.0.

[src/gxcmap.c 1.18]

2004-01-16 02:31 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 10 - beta release.

DETAILS :

This provides the related documentation.

EXPECTED DIFFERENCES :

None.

[doc/Ps2pdf.htm 1.59]

2004-01-16 02:11 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 9.

DETAILS :

This fixes the key length problem with << /V 2 /R 3 >> .

With << /V 2 /R 2 >> the patched version is still incompatible to Adobe
when Length is not 40, but it appears compatible to XPDF.

This revision can go to beta.
Use << /V 2 /R 2 /Length 40 >> or << /V 2 /R 3 /Length not40 >>
- they both should work.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.85]

2004-01-16 02:02 Igor Melichev

Fix (PDF interpreter) Bug in encryption revision 3.

DETAILS :

It wrongly generated the encryption key with << /V 2 /R 3 >> .

With << /V 2 /R 3 >> the patched version is compatible to Adobe.
With << /V 2 /R 2 >> the patched version is still incompatible to Adobe
when Length is not 40, but it appears compatible to XPDF.

EXPECTED DIFFERENCES :

None.

[lib/pdf_sec.ps 1.13]

2004-01-15 21:44 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 8.

DETAILS :

This fixes minor problems with parameter consistency.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.84]

2004-01-15 17:45 Ralph Giles

Add an RCS Id line to the documentation stylesheet. There's no reason to exempt it.

[doc/gs.css 1.3, toolbin/tests/check_source.py 1.8]

2004-01-15 17:41 Ralph Giles

Add the Freetype Licence text to the exemptions list for RCS Id lines.

[toolbin/tests/check_source.py 1.7]

2004-01-15 17:35 Ralph Giles

Add gp_unix_cache.c to the developer documentation's file listing.

[doc/Develop.htm 1.130]

2004-01-15 16:08 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 7.

DETAILS :

The previous patch wrote a dubugging stub. Removing it now.
Also improving the log messages because this revision appears better than was explained.

It works fine with 40 bits keys and with 128 bits keys.
With other key lengthes it creates PDFs that GS can open with either user or owner password,
but Adobe Reader 6 doesn't open them, reporting a wrong password.
That's a problem though.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.83]

2004-01-15 15:02 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 6.

DETAILS :

1. Provide pdfwrite device parameters for encryption revision 3 (PDF 1.5).
2. Check them for consistency and provide reasonable defaults.
3. Provide the encryption version 2 revision 3 (i.e. 48-128 bits keys).

It works fine with 40 bits keys.
With longer keys it creates PDFs that GS can open with either user or owner password,
but Adobe Reader 6 doesn't open them, reporting a wrong password.
That's a problem though.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.82, src/gdevpdfp.c 1.36, src/gdevpdfx.h 1.84]

2004-01-15 10:09 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 5.

DETAILS :

1. Encrypt strings in CIDSystemInfo.
2. Provide a parent object id writing a cos object.
3. Encrypt strings serializing a cos object.

All comparefiles are now passed.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.107, src/gdevpdf.c 1.81, src/gdevpdfc.c 1.46, src/gdevpdfo.c 1.25, src/gdevpdfo.h 1.18, src/gdevpdfu.c 1.48, src/gdevpdfx.h 1.83, src/gdevpdtf.c 1.34, src/gdevpdti.c 1.27, src/gdevpdtw.c 1.27, src/gdevpdtw.h 1.4]

2004-01-15 09:27 Ralph Giles

Initial commit of the persistent cache implementation. This version supports only the *nix
platform and does not include any eviction logic. Also currently the cache directory and
empty 'gs_cache' index file must be created manually.

DETAILS:

Two new calls have been added to the gp layer: gp_cache_insert() and gp_cache_query(). These
take a byte buffer as a key under which another buffer can be stored or recalled. In addition to
the key, buffers are filed by 'type' which provides a separate namespace for each kind of
data. These types should be one of the GP_CACHE_TYPE_* defines in gp.h.

The query call takes a callback for allocating the buffer to be filled. Thus, all memory
management for the key and value buffers is handled by the client and the query returns
the data (if any) within a single call.

A pair of postscript test operators, .pcacheinsert and .pcachequery are provided in zmisc.c,
however they are disabled by default to prevent access to the cache by malicious postscript
programs. They operate only with the 'test' type, so a denial-of-service attack is the only
real risk; however we anticipate all access will be from C code. Compile with the DEBUG_CACHE
preprocessor symbol to enable these.

Improvements and implementations for other platforms are to follow.

[src/Makefile.in 1.31, src/gp.h 1.27, src/gp_dvx.c 1.11, src/gp_iwatc.c 1.17, src/gp_mac.c 1.15, src/gp_mswin.c 1.23, src/gp_os2.c 1.30, src/gp_os9.c 1.12, src/gp_unix.c 1.13, src/gp_unix_cache.c 1.1, src/gp_vms.c 1.37, src/gs.mak 1.24, src/unix-aux.mak 1.11, src/zmisc.c 1.6]

2004-01-14 18:05 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 4.

DETAILS :

It fixes problems with encrypting strings in Indexed color spaces.
Strings are not encrypted yet.
All comparefiles are now passed except korea.ps .

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.106, src/gdevpdfc.c 1.45]

2004-01-14 16:04 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 3.

DETAILS :

It fixes problems with encryption of streams.
Strings are not encrypted yet (this may affect some color spaces).
Most of Genoa tests now passed.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfj.c 1.29, src/gdevpdfu.c 1.47, src/gdevpdfx.h 1.82, src/gdevpdtb.c 1.23, src/gdevpdti.c 1.26, src/gdevpdtw.c 1.26]

2004-01-14 14:07 Alex Cherepanov

Check for hypot() availability on the configure step, fix the hypot()
replacement macro, and deal with MSVC specially.
Fix bug 687238.

[src/Makefile.in 1.30, src/configure.ac 1.39, src/math_.h 1.6]

2004-01-14 13:45 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 2.

DETAILS :

It implements the encryption of most PDF streams.
Strings are not done yet.
It can process 001-01.ps, but there are problems with other files.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.105, src/gdevpdf.c 1.80, src/gdevpdfo.c 1.24, src/gdevpdfu.c 1.46, src/gdevpdfx.h 1.81, src/gdevpdti.c 1.25, src/sarc4.c 1.10, src/sarc4.h 1.6]

2004-01-14 07:50 Igor Melichev

pdfwrite : Implementing the PDF 1.4 encryption, step 1.

DETAILS :

This defines new pdfwrite device parameters OwnerPassword, UserPassword, KeyLength, Permissions,
and outputs the Encrypt dictionary if OwnerPassword is specified.
PDF data are not encrypted yet.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.104, src/gdevpdf.c 1.79, src/gdevpdfp.c 1.35, src/gdevpdfx.h 1.80, src/sarc4.c 1.9, src/sarc4.h 1.5]

2004-01-14 06:38 Ray Johnston

Fix to prevent setdistillerparams from erasing the page device or reset
the page device parameters. Fixes bugs 563287 and 607425.

DETAILS:

The .putdeviceparamsonly function defined in gs_setpd.ps is designed to
set device properties without clearing or resetting the pagedevice.

Both code snippets execute as expected with this change.

While the 563287 bug report mentions an attached file, it does not
appear to exist anywhere (any more) unless it refers to the little
code snippet.

Expected Differences:

none.

Only one of the regression test files, PT.ps, invokes setdistillerparams
and this invocation doesn't trip over the problem since distiller params
are set before painting anything.

[lib/gs_pdfwr.ps 1.37]

2004-01-13 14:03 Igor Melichev

pdfwrite : Implementing the file ID.

DETAILS :

File ID will be used in PDF encryption.
See comment in pdf_compute_fileID.

A new function s_MD5E_make_stream is defined
to simplify internal interfaces.

I'm not sure about the trick "s->strm = s" in s_MD5E_make_stream.
Want an approval.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.103, src/gdevpdf.c 1.78, src/gdevpdfx.h 1.79, src/lib.mak 1.161, src/smd5.c 1.6, src/smd5.h 1.5]

2004-01-13 07:28 Igor Melichev

Fix (pdfwrite) : Cygwin/gcc compiler warnings.

[src/gdevpdfd.c 1.36, src/gdevpdfo.c 1.23]

2004-01-13 07:28 Igor Melichev

Fix (pdfwrite) : Adobe glitches with a small FontMatrix.

DETAILS :

Bug 687207 "PS file incorrectly converted to PDF".
Actually the PDF was fine but Adobe has a precision problem with small FontMatrix.
This patch adjusts the FontMatrix of a Type 3 font to a reasonable interval.

EXPECTED DIFFERENCES :

None with old comparefiles.

[src/gdevpdte.c 1.51, src/gdevpdtt.c 1.71, src/gdevpdtt.h 1.21]

2004-01-13 05:32 Igor Melichev

Fixing a punctuation inaccuracy in documentation.

[doc/Language.htm 1.82, doc/Use.htm 1.98]

2004-01-13 02:06 Ray Johnston

Fix problems with the "image" device when the palette is an 8-bit gray
palette (uses the image8 device with num_components == 1). Since the
DeviceN changes, changing num_components requires also setting the
gray_index value appropriately. Also the rgb to color mapping function
did not allow for num_components == 1 and used uninitialized values for
the green and blue comonents. Fixes bugs 458261, 686909 and 687204.

DETAILS:

The gray_index value was being left at GX_CINFO_COMP_NO_INDEX, so the
gx_device_has_color macro indicated a color device. This means that
when the gs_initialize_wordimagedevice function changed the num_components
value to 1, the gray_index was incorrect (should be 0 for a gray shade
device).

Also the mem_mapped_map_rgb_color function didn't check for num_components
== 1, thus using uninitialized cv[1] and cv[2] values and getting incorrect
palette selections. Also I optimized the single component case a bit as
well as an "early out" for both color and monochrome when diff == 0 (can't
get any better than a perfect match).

I guess 8-bit monochrome image devices haven't been used much.

Expected Differences:

none. (we don't test ps2epsi in the regression suite).

[src/gdevmem.c 1.7, src/gsdevmem.c 1.5]

2004-01-12 23:16 Ralph Giles

Clarify wording in the updated GridFitTT documentation.

[doc/Language.htm 1.81, doc/Use.htm 1.97]

2004-01-12 23:04 Ralph Giles

Clarify wording and correct some spelling errors in a recent documentation change.

[doc/Ps2pdf.htm 1.58]

2004-01-12 14:35 Igor Melichev

Fix (pdfwrite) : A misprint in the previous patch.

DETAILS :

Don't use the previous revision of gdevpdf.c - it's wrong.

[src/gdevpdf.c 1.77]

2004-01-12 14:28 Igor Melichev

pdfwrite : Merge redundant images.

DETAILS :

Bug 687224 "large pdf file size".

With this change pdfwrite compares images for equality
and merges same images into a single XObject, except for inline images.

A new pdfwrite device parameter MaxInlineImageSize controls
inline images. See gs\doc\Ps2pdf.htm . Use it to disable
inline images if the source document contains multiple redundant
small images.

A new vitrtual function cos_object_t::cos_procs->equal is implemented
for object comparizon. But the current implementation is restricted
with current needs. Particularly it doesn't implement cos arrays,
and assumes equal stream segmentation for equal streams.
To be improved someday.

Note that an image is copied to temporary file before a comparizon.
If the image appears redundant, the current implementation sometimes doesn't
release the space consumed in the temporary file. Therefore the disk must
have enough space for storing all copies. We could improve this using
a smarter method than cos_stream_release_pieces, because an image can interlive
only with same image of an alternative compression.
To be improved someday.

EXPECTED DIFFERENCES :

None in rasters, some PDFs become shorter.

[doc/Ps2pdf.htm 1.57, src/gdevpdf.c 1.76, src/gdevpdfb.c 1.21, src/gdevpdfg.h 1.28, src/gdevpdfi.c 1.50, src/gdevpdfj.c 1.28, src/gdevpdfo.c 1.22, src/gdevpdfo.h 1.17, src/gdevpdfp.c 1.34, src/gdevpdfu.c 1.45, src/gdevpdfx.h 1.78]

2004-01-11 13:53 Igor Melichev

Fix (pdfwrite) : A mangled CFF was written when an Encoding uses 256 glyphs.

DETAILS :

Bug 687217 "pdfwrite erases a certain type1 font when I used 'space' character"
Thanks to Inoue Koich and to Mr. Hirata for the useful information
in the Comment #4 of 687217.

The reason was an old "NYI" :
 	/*
 	 * The count of encoded characters is only a single byte, so we
 	 * have to use a supplement for the last character.
 	 */
 	/****** NYI ******/

This patch implements that.

EXPECTED DIFFERENCES :

None with old compartefiles.
mbb-with-space.ps to be added to comparefiles.

[src/gdevpsf2.c 1.30]

2004-01-11 11:21 Igor Melichev

Fix : removed dependence on bands in the filling algorithm.

DETAILS :

Bug 687222 "Raster depends on bands".
This patch fixes a known dependence, but doesn't include
an attempt to find or fix all possible dependences.
It copmutes a next evaluation point over the top band boundary
as it would be without a banding, store it into line_list::y_break,
and use in proper places of fill_loop_by_trapezoids and fill_loop_by_scan_lines.

EXPECTED DIFFERENCES :

normal, 72dpi -dMaxBitmap=10000 :

None.

normal, 72dpi -dMaxBitmap=30000000 :

None.

normal, 300dpi -dMaxBitmap=10000 :

012-09.ps
036-01.ps
123-05.ps
175-01.ps
226-01.ps
231-01.ps
motor.pdf
Openhuis_pdf_zw.pdf

normal, 300dpi -dMaxBitmap=30000000 :

Openhuis_pdf_zw.pdf

pdfwrite was not tested.

[src/gxfill.c 1.85, src/gxfill.h 1.12]

2004-01-10 18:00 Igor Melichev

Fix (pdfwrite) : Mark copied font's glyph names when reclaiming memory.

DETAILS :

Bug 687187 "pdfwrite can duplicate glyphs embedding a font".
If a font is freed and then reloaded, the glyph names could get different name indices,
if the garbager freed the names before the second loading of the font.
As the result, the copied font could embed duplicated charstrings.

EXPECTED DIFFERENCES :

None.

[src/gxfcopy.c 1.40]

2004-01-10 12:24 Igor Melichev

Fix (pdfwrite) : Improving heuristics in the compression chooser.

DETAILS :

Gradients' area was wrongly computed.
Fixing it and adjust thresholds to comply with the new computation.
Bug 687169 "(pdfwrite) : An imperfect compression choice with dina3_watermark.pdf".

Processing comparefiles, with this patch pdfwrite chooses a compression
closer to the original document.
I noticed 3 tests differing from source :

Fixed_Original.pdf
loremIpsum.pdf
S2_Digitalproof-Forum_x3k.pdf

In all 3 tests the images are like a photo,
so DCT is the right choice rather than the original Flate or LZW.

EXPECTED DIFFERENCES :

After pdfwrite the following tests generate a different raster
due to DCT/Flate changes :

adesso2.pdf
adesso5.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Faktura.pdf
Fixed_Original.pdf
foo.pdf
H00216q.pdf
kazmir.pdf
loremIpsum.pdf
MagicEye.pdf
Original.pdf
S2_Digitalproof-Forum_x3k.pdf
si_tg_brochure.pdf
test.pdf

All them generate a shorter PDF.

[src/gdevpdfj.c 1.27, src/gdevpsds.c 1.10]

2004-01-10 12:12 Igor Melichev

Fix (pdfwrite) : A big stack consumption writing a CFF with many glyphs.

DETAILS :

This is a continuation of the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-December/003887.html .
The test file of the Bug 686875 contains a Type 1 font with 1280 glyphs,
which overflowed tables in the CFF writer.
Now we provide a dynamic allocation of the tables.
Bugs 687212, 687233, 687212.

The table size for CID fonts are still hardcoded.
We believe that they must not be big because
with CID fonts glyph names are not used.

EXPECTED DIFFERENCES :

None.

[src/gdevpsf.h 1.26, src/gdevpsf2.c 1.29]

2004-01-09 14:27 Igor Melichev

Fix : Improving vdtrace macros.

DETAILS :

This fixes the bug 687216 "syntactical problems with vd_* macros",
and implements a reading of the view parameters from an ini file.
It allows to adjust the view without editing GS sources.
The ini file is intentionally made global for all GS installations
to simplify their comparizon.

EXPECTED DIFFERENCES :

None.

[src/dwtrace.c 1.5, src/vdtrace.h 1.10]

2004-01-09 13:40 Igor Melichev

Fix : Some of Sun ONE Studio 7 and Cygwin/gcc compiler warnings.

DETAILS :

Bug 687234 "warnings on Solaris (ghostscript-8.13)"

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.102, src/gdevpdtc.c 1.31, src/gdevpdtt.c 1.70, src/gxpcopy.c 1.16, src/zfapi.c 1.51]

2004-01-09 13:02 Igor Melichev

Fix (pdfwrite) : Empty clip was written into a charproc.

DETAILS :

See comment in gdevpdtt.c .
Bug 687239 "tiling bug in pdfwrite".

This patch also improves a comment in gdevpdti.c .

EXPECTED DIFFERENCES :

None.

[src/gdevpdti.c 1.24, src/gdevpdtt.c 1.69]

2004-01-08 14:02 Igor Melichev

Implementing a True Type grid fitting, step 12, final.

DETAILS :

This patch switches on the new grid fitter,
and provides related changes to the documentation.

Minor change : fixed Cygwin/gcc compiler warnings in gzspotan.c .

EXPECTED DIFFERENCES :

All True type fonts render differently.
They present in the following tests :

01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
budget2.pdf
budget2_ai87.pdf
bugsample.pdf
Faktura.pdf
fonts.pdf
ICPconcept.pdf
keyboard.pdf
MagicEye.pdf
ngnews.pdf
ngnews1.pdf
S2_Digitalproof-Forum_x3k.pdf
test_multipage_prob.pdf
Testform.v1.0.2.pdf
xngnews.pdf
japan.ps
japan-.ps
korea.ps
MyTest5.ps
MyTest6.ps
Type11CDevProc.ps
type42_glyph_index.ps

[src/gx.h 1.31, src/gzspotan.c 1.8, doc/Language.htm 1.80, doc/Use.htm 1.96]

2004-01-07 19:50 Ralph Giles

Unequivocally include stdlib.h in echogs.c to avoid a warning on the Sun ONE Studio 7 compiler as
reported in bug 687234.

DETAILS:

The code in echogs.c calls exit() which is defined in stdlib.h. However it was not including that
header (except) on VMS because of portability concerns, resulting in the reported 'implicit
function definition' warning. The echogs program must be available before genarch runs and the
std.h-based portability headers are available, so wide build support for this code is important.

However, such platforms are now very old and comments elsewhere in the code suggest that any
compiler supporting ANSI prototypes as we now require will also have a stdlib.h that defines
exit(). If this change causes a problem, #ifdef code similar to what was used in gp_unix.c can be
used instead.

[src/echogs.c 1.7]

2004-01-07 11:12 Igor Melichev

Implementing a True Type grid fitting, step 11.

DETAILS :

This patch changes a disabled code only.
It's a furter improvement if the hint generator and the hinter.

1. Improved comments about "overall" hints.

2. Implemented the "autohinting" flag,
   which tells that alignment zones to be guessed from the hint orientation.

3. Implemented a hint orientation for horizontal stems.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.41, src/gxhintn.h 1.19, src/gxttfb.c 1.27]

2004-01-06 20:36 Ralph Giles

Fix a typo in the 64-bit type selection logic. Bug 687237.

[src/configure.ac 1.38]

2004-01-06 13:32 Igor Melichev

Implementing a True Type grid fitting, step 10.

DETAILS :

This patch changes a disabled code only.
It fixes minor problems with hint generation :

1. Implemented an "overall" hint, which
designates an outer side of a glyph,
being nearly parallel to a coordinate axis.
It aligns a stem end rather than stem sides, and
simulates top/bottom alignment zones.
This branch appears low useful and was not enabled.
Maybe will remove it later.

2. Change to gxhintn.c is algorithmically equivalent.

3. The default value of GritFitTT is changed to 2,
because we can't to provide a compatibility
of the autohinted glyph size to the TT interpreter.

4. Improved hint_by_tangent : some slower but a better choice.

EXPECTED DIFFERENCES :

None.

[src/gsfont.c 1.30, src/gxhintn.c 1.40, src/gxhintn.h 1.18, src/gxttfb.c 1.26, src/gzspotan.c 1.7, src/gzspotan.h 1.5]

2004-01-05 23:34 Ralph Giles

Fix some warnings reported by the Sun One Studio 7 compiler (and others). Bug 687228.

[src/devs.mak 1.101, src/gdevdevn.c 1.13, src/gdevpdfc.c 1.44, src/gdevpdtb.c 1.22, src/gdevpsu.c 1.16, src/gp_unifn.c 1.16, src/gsht.c 1.18, src/gxcmap.c 1.17, src/int.mak 1.120, src/lib.mak 1.160, src/zfapi.c 1.50, src/zfile.c 1.40]

2004-01-05 23:06 Ralph Giles

Correct a typo in the checks for stdint fixed-size types. This did not materially affect the
behavior of the configure script. Bug 687235.

[src/configure.ac 1.37]

2004-01-05 22:13 Ralph Giles

Bump the development branch version to 8.30 now that the stable branch has been released as 8.13
and update the date stamp.

[doc/News.htm 1.140, lib/gs_init.ps 1.104, src/gscdef.c 1.41, src/version.mak 1.69]

2004-01-05 19:15 Alex Cherepanov

Transliterate '\0' character in PDF names to "BnZr" instead of
'?' to reduce the chance of name collision.

DETAILS:
TeX generates Type 3 fonts with single character glyph names equal to the
character codes, i.e. /Encoding [(\000) cvn (\001) cvn ... /? ...] . PDF
writer used to transliterate '\0' to '?' because #00 escape is invalid.
This conflicts with /? glyph name, which also occurs in the same font.
Fix bug 687232.

[src/gdevpdfu.c 1.44]

2004-01-05 15:11 Igor Melichev

Implementing a True Type grid fitting, step 9.

DETAILS :

This patch changes a disabled code only.
It fixes minor problems with hing generation.

Now the TT grid fitting is working with TextAlphaBits=1,
but some improvements still would be useful.
TextAlphaBits=1 is not tested yet.

EXPECTED DIFFERENCES :

None.

[src/gxttfb.c 1.25]

2004-01-05 13:05 Igor Melichev

Fix : Removed gx_curve_split due to inprecise implementation.

DETAILS :

The implemetation of gx_curve_split w3as inprecise.
Bug 687177 "gx_curve_split disturbs the bounding box".
Removing it because it is not longer in use.

EXPECTED DIFFERENCES :

None.

[src/gxpcopy.c 1.15, src/gzpath.h 1.28]

2004-01-05 12:52 Igor Melichev

Implementing a True Type grid fitting, step 8.

DETAILS :

1. Renamed monotonize_internal to gx_curve_monotonize.

2. Allowed the curved trapezoid algorithm for non-characters.
   2 fragments changed for this purpose : passed all_bands to intersect_al
   and removed the restriction in gxfill.c ln 482.
   This causes minor differences in rasters listed below.

3. Introduced false_stub for better readability.
   This change is algorithmically equivalent.

4. Improved 2 cases in scan_contour with p.monotonic check.
   The old code was wrong, but our testbase doesn't have
   such cases in characters. Discovered with (2).

5. In gxttfb.c applied a curve monotonization after
   decoding a True Type glyph. It allows to
   apply Type 1 hints to non-monotonic stems.
   This change currently is disabled.

6. Added some initializations to quiet the compiler warnings.

EXPECTED DIFFERENCES :

normal 72dpi :

tiger.eps

normal 300dpi

Es001-01.pdf
shading_prob_800.ps
type3xshow.eps

pdfwrite 72dpi :

027-09.ps

pdfwrite 300dpi :

123-05.ps
Es001-01.pdf
type3xshow.eps

None.

[src/gxfill.c 1.84, src/gxpcopy.c 1.14, src/gxttfb.c 1.24, src/gzpath.h 1.27]

2004-01-05 06:11 Ray Johnston

Fix for fonts being displayed using .notdef character (empty boxes or other
appearance). While the test file doesn't follow the PDF 1.3 or later manual
recommendations for providing a [1,0] cmap for an embedded symbolic TT font,
Adobe Acrobat Reader can display these characters. When the 'post' table
doesn't provide the glyphs required by the /Differences list, try another
cmap [3,0] to get the correct glyph (names and glyph #'s). Bug #686959 for
customer #1060.

DETAILS:

The Adobe PDF 1.4 Reference Manual has some "hints" for producing portable
PDF's, but as far as reading PDF's that don't follow these hints, all that
is said (in section 5.5.5, p.333) is:

    Note: Some popular TrueType font programs contain incorrect encoding
    information.  Implementations of TrueType font interpreters have
    evolved heuristics for dealing with such problems; those heuristics
    are not described here.  For maximum portability, only well-formed
    TrueType font programs should be used in PDF files.

The approach of trusting the 'post' table unless the glyphs given do not
include glyphs that are mentioned in the 'prebuilt_encoding' (Differences),
is a heuristic that works for this file and doesn't interfere with any
other PDF's in the regression test. The thing about heuristics is that
the 'intelligence' they embody is no better than the understanding of the
best solution, so this may crop up again later (but we hope not).

Note that simply using the 00030000 cmap [3,0] format causes the regression
file 'test_multipage_prob.pdf' to fail with some .notdef characters.

[lib/gs_ttf.ps 1.35]

2004-01-04 19:59 Igor Melichev

Fix : monotonize_internal didn't work properly.

DETAILS :

We believe that the new code ever gives monotonic segments,
rather than the old one does not - see
Bug 687210 "a bug in monotonize_internal".

The new code sometimes gives slightly different segments,
because the old code applies an incorrect rounding.
This causes minor differences in rasters.

EXPECTED DIFFERENCES :

normal, 72dpi

a.pdf
ai2.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf

normal, 300dpi

093-01.ps
a.pdf
ai2.pdf
Altona.Page_3.2002-09-27.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf

pdfwrite, 72dpi :

a.pdf
ai2.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf

pdfwrite, 300dpi :

093-01.ps
483-05.ps
a.pdf
ai2.pdf
Altona.Page_3.2002-09-27.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf

289-01.ps was not tested because it fails.

[src/gxpcopy.c 1.13]

2004-01-04 06:12 Igor Melichev

Fix : Trapezoid algorithm could cause topology distortions (continued 2).

DETAILS :

This is a continuation of the recent patch.
This one provides more stability to numeric errors.

This patch brings 3 improvements :

1. the error proportion formula is now applied in all cases
(one of them was missed by the previous patch).

2. since the intersection point isn't equal to AL_X_AT_Y value,
a special care is taken in the dropout prevention code.

3. To provide (2), moved the assignments to x_current, x_next.

EXPECTED DIFFERENCES :

mormal, 72dpi :

169-13.ps
244-01.ps
86554321.pdf

mormal, 300dpi :

012-01.ps
013-01.ps
014-13.ps
032-01.ps
034-01.ps
123-01.ps
123-05.ps
169-13.ps

pdfwrite, 72dpi :

102-01.ps
205-13.ps
244-01.ps
86554321.pdf
waterfal.ps

pdfwrite, 300dpi :

032-01.ps
123-01.ps
123-05.ps
169-13.ps
205-01.ps
205-13.ps
222-13.ps
307-13.ps

289-01.ps was not tested because it fails.

[src/gxfdrop.c 1.9, src/gxfill.c 1.83]

2004-01-04 05:37 Alex Cherepanov

Remove spurious stack adjustment that caused /unmatchedmark
when the font was loaded from Resource/Fonts/ .
Fix bug 687220.

[lib/gs_fonts.ps 1.46]

2004-01-03 18:14 Ralph Giles

Correct a line ending problem.

[src/gp_macio.c 1.33]

2004-01-03 17:50 Igor Melichev

Fix : Trapezoid algorithm could cause topology distortions (continued).

DETAILS :

This is a continuation of the recent patch.
This one provides a better stability to numeric errors :
the point bias is inversedly poroportional to the line slope.

EXPECTED DIFFERENCES :

mormal, 72dpi :

None.

mormal, 300dpi :

123-05.ps
205-05.ps

pdfwrite, 72dpi :

None.

pdfwrite, 300dpi :

None.

289-01.ps was not tested because it fails.

[src/gxfill.c 1.82]

2004-01-03 12:34 Igor Melichev

Implementing a True Type grid fitting, step 7.

DETAILS :

This patch changes a disabled code only.
It implements the enhanced logics for the user parameter GridFitTT,
and provides TT grid fitting by both coordinates.

GridFitTT is documented in gxttfb.c :
+     /*	gs_currentgridfittt values (binary) :
+ 	00 - no grid fitting;
+ 	01 - Grid fit with TT interpreter; On failure warn and render unhinted.
+ 	10 - Interpret in the design grid and then autohint.
+ 	11 - Grid fit with TT interpreter; On failure render autohinted.
+     */

Changes to gs/doc to be done after the new code is enabled.

EXPECTED DIFFERENCES :

None.

[src/gsfont.c 1.29, src/gxfcache.h 1.23, src/gxttfb.c 1.23, src/zusparam.c 1.11]

2004-01-03 10:38 Igor Melichev

Fix : Trapezoid algorithm could cause topology distortions.

DETAILS :

There were 2 types of possible distortions : inversed or self-intersecting trapezoids,
and overlapping trapezoids. Rather they are pretty rare (and a consequtive
pixel miscoverage are extremily rare), they break the topology analyzis with
the spotan device.

The distortion happen due to inprecize computations of line intersections.
The coordinate of the intersection is represented in 'fixed', which can't be
precise in most cases. Therefore the intersection point appear slightly shifted.
The harmful thing was a different shift of the same point for each of
the intersecting lines.

This patch brings 2 improvements :

1. Intersecting 2 lines, assign same X to both.
A special care is taken about vertical lines.

2. After intersections are computed, we check whether the coordinates
appear in a wrong order by X. If so, we fix it with computing the average coordinate
and assigning it to all lines. This must give a correct topology with
a small processor time expense.

Monor change : fixed some Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

mormal, 72dpi :

123-01.ps
222-01.ps
281-01.ps
327-01.ps

mormal, 300dpi :

012-01.ps
013-01.ps
014-13.ps
032-01.ps
083-01.ps
083-05.ps
103-01.ps
118-01.ps
123-01.ps
169-13.ps
205-01.ps
205-05.ps
289-01.ps
298-01.ps
307-13.ps
321-01.ps
adesso1.pdf
motor.pdf

pdfwrite, 72dpi :

102-01.ps
169-13.ps
205-13.ps
222-13.ps
244-01.ps
281-01.ps
298-01.ps
308-04.ps
321-01.ps
321-05.ps
327-01.ps
waterfal.ps
205-13.ps

pdfwrite, 300dpi :

012-01.ps
012-05.ps
013-01.ps
014-13.ps
027-09.ps
083-13.ps
102-01.ps
123-01.ps
123-05.ps
169-13.ps
205-01.ps
205-13.ps
222-13.ps
307-01.ps
307-07.ps
307-13.ps

289-01.ps was not tested because it fails.

[src/gxfill.c 1.81]

2004-01-02 21:05 Ray Johnston

Fix: The (more or less undocumented) superexec operator is supposed to
allow "readonly" directories to be amended. Bug #674421.

[src/zgeneric.c 1.7]

2004-01-02 20:53 Ray Johnston

Remove spurious ^M (ctrl-M == ) characters from the source -- probably
caused by a Windows user performing an update from a file that was not
correctly recognized as DOS vs. UNIX line endings by cvs.

[src/idict.c 1.10]

2004-01-02 18:02 Igor Melichev

Implementing a True Type grid fitting, step 6.

DETAILS :

In the enabled code this change is algorithmically equivalent :
generalized an argument of gx_path__check_curves,
and fixed a design box, wich was not used.

In the disabled code it computes a reasonable flattness for the stem recognition
and exclused an unuseful (and harmful) path copying.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.80, src/gxpath.h 1.11, src/gxpcopy.c 1.12, src/gxttfb.c 1.22, src/ttfmain.c 1.21]

2004-01-02 13:15 Igor Melichev

Fix : A GCC compiler error.

[src/gxfont42.h 1.18]

2004-01-02 13:02 Igor Melichev

Implementing a True Type grid fitting, step 5.

DETAILS :

In the enabled code this change is algorithmically equivalent :
just moved some TT outliner data definitions and refactored ttfOutliner__Outline.

In the disabled code it fixes numerous problems in the TT grid fitting (by the X axis only).
Now it looks working for small characters.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.79, src/gxhintn.c 1.39, src/gxttfb.c 1.21, src/gzspotan.c 1.6, src/gzspotan.h 1.4, src/ttfmain.c 1.20, src/ttfoutl.h 1.13]

2004-01-01 17:01 Igor Melichev

Implementing a True Type grid fitting, step 4.

DETAILS :

This patch changes a disabled code only.
It's a trial implementation of a TT grid fitting (by the X axis only).

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.38, src/gxhintn.h 1.17, src/gxttfb.c 1.20, src/gzspotan.c 1.5, src/gzspotan.h 1.3, src/lib.mak 1.159]

2003-12-31 18:07 Ralph Giles

Add a paragraph to the license statement listing the additional requirements of
the Freetype License.

[LICENSE 1.3]

2003-12-31 17:53 Ralph Giles

Add the text of the Freetype license and references to the freetype project to clarify our
compilance. The new truetype bytecode interpreter is based in part of code made available as part
of Freetype 1.

[doc/Develop.htm 1.129, doc/FTL.txt 1.2, doc/Language.htm 1.79]

2003-12-31 11:12 Igor Melichev

Fix : The character oversampling condition was wrong.

DETAILS :

I can't guess why it was done depending on path. It looks wrong
and gives a different result when recomputed from type1execchar
when the path is reset.
Also penum->current_font to be used rather that pgs->font due to composite fonts.
Bug 687209 "assertion failure when open postscript file".

EXPECTED DIFFERENCES :

None with TextAlphaBits=1.

[src/gxchar.c 1.38]

2003-12-31 06:13 Igor Melichev

Fix (pdfwrite) : Write a smaller Widths array.

DETAILS :

Bug 687186 "(pdfwrite) Embedding a Type 3 font FirstChar is always 0".

EXPECTED DIFFERENCES :

None.

[src/gdevpdtf.c 1.33, src/gdevpdti.c 1.23]

2003-12-31 05:20 Igor Melichev

Fix (pdfwrite) : Pattern resource was not added to Resources of a pattern object.

DETAILS :

This is a partial fix for the bug 687196 "Incorrect PDF produced from Adobe test file pattyp1.ps".
A pattern resource was referred in a pattern procedure (of another pattern) but was not
listed in Resources of the pattern object.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfg.c 1.45]

2003-12-30 17:55 Igor Melichev

Fix (pdfwrite) : Color space resource was not added to Resources of a pattern object.

DETAILS :

Bug 687206 "Could not find colorspace".
A color space resource was referred in a pattern procedure but was not
listed in Resources of the pattern object.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfc.c 1.43]

2003-12-30 17:53 Igor Melichev

Fix (pdfwrite) : Wrote an invalid text matrix.

DETAILS :

While fixing the bug 687206 "Could not find colorspace",
we discovered a problem with comparefiles/tpc2.ps :
"1 0 0 1 0 1.#INF Tm" was written.
The effect was indeterministic due to an access outside an array.
This patch fixes that.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.50]

2003-12-30 11:50 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 24, final.

DETAILS :

This patch switches on the new algorithm.

With comparefiles on Zeon 3.06 the curved algorithm appears in 0.6% slower.
Will be fixed with upgrading the scanline algorithm with gx_flattened_iterator.

EXPECTED DIFFERENCES :

-r300 chilis_black.pdf has a minor difference in raster.

[src/gx.h 1.30]

2003-12-30 08:25 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 23.

DETAILS :

This patch is a code optimization.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.29, src/gxfill.c 1.78, src/gxpflat.c 1.28, src/gzpath.h 1.26]

2003-12-29 15:56 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 22.

DETAILS :

This patch changes a disabled code only.
It optimizes the contour scanner with reducing a data copying.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.77]

2003-12-29 04:35 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 21.

DETAILS :

This patch changes a disabled code only.
It fixes some problems discovered with -r300 and
switches off the self-testing.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.28, src/gxfill.c 1.76]

2003-12-29 04:18 Igor Melichev

Raster depended on the band size (a partial fix).

DETAILS :

The old code used the Y coordinate of a top boundary of a band
as a basis for computing a sampling factor of sloped lines.
Therefore sloped lines generated "stairs" with a dependence of
the phase on the band coordinate.

This patch removes that dependence. Therefore the new banded
raster appears closer to the unbanded raster.
But the banded raster still can be different.
We don't intend to fix it now. We did only a simplest part, which
is neccessary for the current development needs.

This patch also causes some differences, which are not related to the banding.
This happens due to bands and clip boxes come to the filling algorithm
in same data field. The dependence on the clip box is dropped as well.
Particularly it affects shadings, especially radial ones.

EXPECTED DIFFERENCES :

ppmraw -r72 -dMaxBitmap=30000000 :

1_2001.pdf

ppmraw -r72 -dMaxBitmap=10000 :

1_2001.pdf
test.pdf

ppmraw -r300 -dMaxBitmap=10000 :

012-05.ps
013-05.ps
014-05.ps
015-05.ps
027-13.ps
032-01.ps
034-01.ps
036-01.ps
083-05.ps
123-05.ps
123-09.ps
150-01.ps
169-05.ps
175-01.ps
1_2001.pdf
205-05.ps
205-09.ps
220-01.ps
226-01.ps
231-01.ps
245-07.ps
307-07.ps
86554321.pdf
adesso8.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
BEST8-99-Path.fh7.pdf
Bug687044.ps
BW0696FOLD1FRONT.pdf
ca.pdf
colorcir.ps
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
file2.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
knight.pdf
messenger.pdf
messenger16.pdf
Openhuis_pdf_zw.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
test.pdf

ppmraw -r300 -dMaxBitmap=30000000 :

1_2001.pdf
205-05.ps
86554321.pdf
adesso8.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
BEST8-99-Path.fh7.pdf
Bug687044.ps
BW0696FOLD1FRONT.pdf
gs6.0-dragon.pdf
Openhuis_pdf_zw.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
test.pdf

Other modes were not tested.
pdfwrite may have a slightly different differences due to the page size rounding.
289-01.ps was not tested because it fails.

[src/gxfill.c 1.75]

2003-12-28 13:37 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 20.

DETAILS :

This patch changes a disabled code only.
It removes a roudiment of a temporary solution with a late computation of the bounding box.
Debugged with -r300 165-01.ps .

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.74]

2003-12-28 12:57 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 19.

DETAILS :

This patch changes a disabled code only.
It fixes an unitialized variable.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.73]

2003-12-28 12:23 Igor Melichev

Fix : The dropout prevention code could render an occasional raster.

DETAILS :

We discovered that the old filling algorithm has a non-well-defined behavior
when painting a group of contacting vertical stems with dropout prevention.
The result of the old code appears depending on the order of lines in the X list.
However when vertical lines have same X coordinate,
their order was occasional, and the resulting raster appears
deterministically occasional.
A new section in gxfill.c near line 1629 fixes that, see comment in there.

Another included change to a disabled code brings the curved trapezoid algorithm closer
to the uncurved one. It fixes 2 minor problems with horizontal lines.

EXPECTED DIFFERENCES :

This patch causes a minor difference in some rasters,
which we consider as progressions due to lesser dropouts.

(Well, it is arguable whether the old feature is a dropout at all,
but we'd like to have a well defined raster with no dependence
on unimportant things such as which contour point is choosen for the starting point).

Nornal, 72dpi :

	bulletin.pdf
	waterfal.ps
	womanface.pdf

Nornal, 300dpi :

	None.

pdfwrite, 72dpi :

	bulletin.pdf
	womanface.pdf

pdfwrite, 300dpi :

	Not tested.

[src/gxfill.c 1.72]

2003-12-28 08:15 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 17.

DETAILS :

This patch changes a disabled code only.
It implements the banding to the curved trapezoid algorithm.

With this patch with ppmraw with 72 dpi only 3 rasters left
different from the old code :

KozukaB-ILEmbed.pdf  (1 pixel differs)
RodinCIDEmbed.pdf    (3 pixels differ)
womanface.pdf        (9 pixels differ)

So now the new algorithm is almost working.

An useful improvement would be to divide big curves on-fly
(it should be pretty simple with subclassing the gx_flattened_iterator
and regenerating the next curve part from entire curve by
the part index), and to replace curve_cursor with gx_flattened_iterator
in the scanline algorithm.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.71]

2003-12-27 16:58 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 16.

DETAILS :

In the enabled code this patch fixes the vd_get_dc syntax,
which was unintentionally broken by the previous patch.
This change is algorithmically equivalent.

In the disabled code it fixes dropout problems with the curved trapezoid algorithm.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.70]

2003-12-27 15:24 Ray Johnston

Fix missing semicolons inserted by previous commit that prevented
compilation.

EXPECTED DIFFERENCES:

Now it will compile, but since the previous commit was untested, there
may be other algorithmic problems that result in differences.

[src/gxfill.c 1.69]

2003-12-27 09:14 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 15.

DETAILS :

In the enabled code this patch :

1. Refactors add_y_line into 3 functions.
2. Restructurizes end_x_line.
3. Changes the prototype of add_y_list.
4. Implements a new visual trace switch 'F'.
5. Removes 'notes' from gx_flattened_iterator.

This change is algorithmically equivalent.

In the disabled code it allows non-monotonic curves in the trapezoid algorithm.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.27, src/gxfill.c 1.68, src/gxpflat.c 1.27, src/gxfill.h 1.11, src/gzpath.h 1.25]

2003-12-24 03:32 Ralph Giles

Correct a typo in the maintainer-clean target in the legacy unix makefiles.
Thanks to William Bader for catching this.

[src/unix-gcc.mak 1.44, src/unixansi.mak 1.35]

2003-12-23 15:36 Ray Johnston

Move the documentation on handling Unicode high level text into Drivers.htm
which is a developer document instead of Devices.htm which is intended for
users.

[doc/Devices.htm 1.73, doc/Drivers.htm 1.44]

2003-12-22 20:05 Ray Johnston

Still more regressions that produced incorrect (different than 8.12)
rotations. Regressions include 541_623.pdf and others that had Rotate != 0.

DETAILS:

Previous patch detected automatic rotation cases, but missed rotation
cases when Orientation == 1 or == 3.

[src/zmedia2.c 1.15]

2003-12-21 20:56 Ray Johnston

Resolve regression differences caused by rotated page sizes being picked
instead of non-rotated in some cases. Seen with 1_pct_50_bang.pdf and
others.

DETAILS:

The 'rotate' variable was input to the 'make_adjustment_matrix' function,
but the matrix could be rotated even when rotate==0. Instead bias the
best_mismatch value when the matrix is rotated (pmat->xx == 0).

[src/zmedia2.c 1.14]

2003-12-20 17:09 Ralph Giles

Add a newline at the end of a file. Remove a duplicate semicolon at the end of statement.

[src/gxistate.h 1.18, src/zchar1.c 1.35]

2003-12-20 09:28 Ray Johnston

Fix yet another long standing bug in 'match_page_size' logic that could
result in the wrong (too small) media being selected due to comparison
of signed difference versus absolute difference.

[src/zmedia2.c 1.13]

2003-12-19 08:34 Dan Coby

A pair of fixes to the PDF rebuild logic.  The fix in pdf_main.ps corrects
a problem that ws creatd with the PDF 1.5 parser changes.  The fix in
pdf_rbld.ps corrects an unbalanced stack.  This was not fatal but did
leave the string (trailer) on the stack after rebuilding some PDF files.

[lib/pdf_main.ps 1.83, lib/pdf_rbld.ps 1.6]

2003-12-19 05:42 Ray Johnston

Fix setpagedevice problems introduced with previous commit detected by the
regression tests, including 070-01.ps and many others. Also give priority
to lower value slots (match_key.value.intval)

DETAILS:

If there was a match that didn't set a new value in 'best_mismatch' (less
than the original 'LARGE' value), the match_key would be left at 'null',
causing PolicyReport to be executed. The Genoa tests use PolicyReport to
leave a value on the stack that eventually signals 'FAIL' since the count
is greater than expected.

This latest change makes sure that a valid key gets set even when the
best_mismatch value is not relevant.

The lower number slot (%MediaSource) is given priority in the case of a
tie between best_mismatch and mbest.

[src/zmedia2.c 1.12]

2003-12-18 14:58 Igor Melichev

Fix (pdfwrite) : A temporary workaround for limitcheck writing a CFF with many glyphs.

DETAILS :

The test file of the Bug 686875 contains a Type 1 font with 1280 glyphs,
which overflowed tables in the CFF writer. This patch increases the limitation,
but a limitation still presents. Will improve it someday.
Issued a new bug 687212 about that.

EXPECTED DIFFERENCES :

None.

[src/gdevpsf.h 1.25, src/gdevpsf2.c 1.28]

2003-12-18 13:23 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 14.

DETAILS :

This patch changes a disabled code only.

Before this patch the backward iterator works fine, but we are
unhappy of its complexity. Rather it passed the full testing
with comparefiles, a theoretical proof of its correctness is too hard.
Also it highly depends on the old code in MERGE_COLLINEAR_SEGMENTS section,
which doesnt look as a well defined code.

Therefore we went back to the implementation based on a bitmask.
It represents which points were filtered out while the forward iteration.
It consumes some bigger memory (488 bytes per active line),
but we believe that the C stack consupmtion
is still lesser than one in the Type 1 hinter.

Now we bring both implementations into a single revision,
and define a configuration macro FLATTENED_ITERATOR_BACKSCAN
for switching between them.

The KISS principle strongly votes for the bitmask implementation.

This patch also renamed CHECK_BACKSCAN_CONSISTENCY with FLATTENED_ITERATOR_SELFTEST
for a better structurization, and removed some low useful comments.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.26, src/gxfill.c 1.67, src/gxpflat.c 1.26, src/gzpath.h 1.24]

2003-12-17 15:36 Igor Melichev

Fix : Fixed a comment syntax and removed unused variables.

EXPECTED DIFFERENCES :

None.

[src/gxpflat.c 1.25]

2003-12-17 15:27 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 13.

DETAILS :

This patch changes a disabled code only.
It allows gx_flattened_iterator__prev_filtered2 to run from any segment
riched by gx_flattened_iterator__next_filtered2. The old code could
only from the last curve segment. Also implemented a testing procedure for it.

EXPECTED DIFFERENCES :

None.

[src/gxpflat.c 1.24, src/gzpath.h 1.23]

2003-12-17 09:45 Ray Johnston

Add "pa4" page size requested by a user. This is the intersection of
a4 and letter page size, i.e., a4 width and letter length. Bug #553187.

[lib/gs_statd.ps 1.14]

2003-12-17 09:19 Ray Johnston

Remove warnings and reversion to 'int' which could cause wrong decision
for PageSize match.

[src/zmedia2.c 1.11]

2003-12-17 09:12 Ray Johnston

Fix InputAttributes initialization to have the default page size in slot
0, and all page sizes known in statusdict/.pagetypenames included with
the 'fit any' pagesize range last. Fixes bug #617077 and other files
that expect slot 0 to be a valid 2 element PageSize corresponding to the
default.

DETAILS:

As noted, "real" printer devices such as laserjets, and inkjets should
set up their own InputAttributes dictionaries that do not include the
'range' type page size.

If the page size is not an exact match (off by less than 5 points), then
the page size range will take priority. This is in a non-standard area
of Ghostscript, but must be preserved for those that want exact PageSize
such as for generating raster images of a specific dimension. If the
range page size is present, then automatic rotation will not be used.

If a PageSize is present in both orientations, such as [612 792] and
[792 612], then priorty will be given to the slot that matches without
automatic rotation.

EXPECTED DIFFERENCES:

Hopefully, none.

[lib/gs_setpd.ps 1.20, lib/gs_statd.ps 1.13, src/zmedia2.c 1.10]

2003-12-17 02:29 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 12.

DETAILS :

This patch changes a disabled code only.
It provide a tolerance to a bug in monotonize_internal.
See comment in code.

There is an error in the log message of the previous patch.
It should read :
"The compilation mode CURVED_TRAPEZOID_FILL0_COMPATIBLE 0 is not completed."

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.66]

2003-12-16 22:29 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 11.

DETAILS :

This patch contains a minor change to the enabled code, and
a big change to the disabled code.

The change to the enabled code only inserts some new fields
into gx_flattened_iterator, actually defining a subclass.
The enabled code doesn't use them, but provides some initialization.

The change to disabled code defines a backward iterator for
filtered flattened curve segments. Actually we define two ones :

	gx_flattened_iterator__prev_filtered1 - filters points with 'coords_near'
	gx_flattened_iterator__prev_filtered2 - filters points with 'coords_near' and
						'gx_check_nearly_collinear'.

The forward and the backward iterators are made to enumerate same points,
which the old does while flatteining a curve. The old code has
a lot of anomalies, therefore the backward iterators appear
very coplicated. We're planning to drop the compatibility and
simplify the iterators after the curved trapezoid algorithm passes
the compatibility test.

The compilation mode CURVED_TRAPEZOID_FILL0_COMPATIBLE 1 is not completed.
Do not use it with this revision.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.25, src/gxfill.c 1.65, src/gxfill.h 1.10, src/gxpflat.c 1.23, src/gzpath.h 1.22]

2003-12-14 22:32 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 10.

DETAILS :

This patch changes a disabled code only.
It removes CURVED_TRAPEZOID_FILL_SCANS_BACK because we decided to make
this feature permanent.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.24, src/gxfill.c 1.64, src/gxfill.h 1.9, src/gxpflat.c 1.22, src/gzpath.h 1.21]

2003-12-14 04:51 Dan Coby

This is the first pass at the changes to support the PDF 1.5 revisions
to the PDF format.

DETAILS:

The PDF 1.5 revision to the PDF specification contains two major
additions to the format of a PDF document.  Objects can be encoded
in compressed data streams called and object streams.  Xref tables
were also changed to allow the identification of objects in
object streams and also to allow the compression of xref tables.
Together these changes reduced the size of the PDF 1.5 specification
from 13.5 MB (PDF 1.4 version) to 8.7 MB (PDF 1.5 version).

pdf_main.ps and pdf_rbld.ps - The changes in these modules were for
    the support of compressed XRef tables.  The major part of these
    changes consist of the refactoring of readxref into pieces.  One
    piece identifies the old format versus compressed XRef tables.
    A second piece supports the reading of old format XRef tables.
    The procedure readpdf15xref was added to read compressed XRef
    tables.  A new larray called ObjectStream was added for
    identifying the location of objects which are inside a compressed
    object stream.  The changes for the addition of ObjectStream
    also affect pdf_base.ps.

pdf_base.ps - The procedures resolveR and resolved? had to be extended
    to support the presence of the objectstream type.  A new procedure
    called resolveobjectstream was added for resolving objects inside
    of object streams.

    The code listing below has two versions of the resolveobjectstream
    procedure.  I want to keep a record of both versions of this
    procedure in CVS.  The first version is theoretically more robust
    than the second.  It unpacks and processes objects from an object
    stream one at a time.  To insure that this occurs, it creates a
    string of the exact size of an object and then unpacks and processes
    the object.  However it is also very slow.  Processing of a test
    document (PDF 1.5 spec.) with this routine is 4 times slower
    than processing a version of the PDF 1.5 spec. which does not use
    object streams.  The second version of the procedure unpacks the
    entire object stream and then processes each object.  Thus any
    problem which occurs with one object could, in theory, affect another
    object.  The second version is much faster.  There is about a 4%
    penalty for processing the compressed version of the PDF 1.5 spec.

    After the initial check in, the first version of resolveobjecstream
    will be removed unless some need is found for its robustness.

[lib/pdf_rbld.ps 1.5]

2003-12-14 04:41 Dan Coby

This is the first pass at the changes to support the PDF 1.5 revisions
to the PDF format.

DETAILS:

The PDF 1.5 revision to the PDF specification contains two major
additions to the format of a PDF document.  Objects can be encoded
in compressed data streams called and object streams.  Xref tables
were also changed to allow the identification of objects in
object streams and also to allow the compression of xref tables.
Together these changes reduced the size of the PDF 1.5 specification
from 13.5 MB (PDF 1.4 version) to 8.7 MB (PDF 1.5 version).

pdf_main.ps and pdf_rbld.ps - The changes in these modules were for
    the support of compressed XRef tables.  The major part of these
    changes consist of the refactoring of readxref into pieces.  One
    piece identifies the old format versus compressed XRef tables.
    A second piece supports the reading of old format XRef tables.
    The procedure readpdf15xref was added to read compressed XRef
    tables.  A new larray called ObjectStream was added for
    identifying the location of objects which are inside a compressed
    object stream.  The changes for the addition of ObjectStream
    also affect pdf_base.ps.

pdf_base.ps - The procedures resolveR and resolved? had to be extended
    to support the presence of the objectstream type.  A new procedure
    called resolveobjectstream was added for resolving objects inside
    of object streams.

    The code listing below has two versions of the resolveobjectstream
    procedure.  I want to keep a record of both versions of this
    procedure in CVS.  The first version is theoretically more robust
    than the second.  It unpacks and processes objects from an object
    stream one at a time.  To insure that this occurs.  It creates a
    string of the exact size of an object and then unpacks and processes
    the object.  However it is also very slow.  Processing of a test
    document (PDF 1.5 spec.) with this routine is 4 times slower
    than processing a version of the PDF 1.5 spec. which does not use
    object streams.  The second version of the procedure unpacks the
    entire object stream and then processes each object.  Thus any
    problem which occurs with one object could, in theory, affect another
    object.  The second version is much faster.  There is about a 4%
    penalty for processing the compressed version of the PDF 1.5 spec.

    After the initial check in, the first version of resolveobjecstream
    will be removed unless some need is found for its robustness.

[lib/pdf_base.ps 1.40, lib/pdf_main.ps 1.82]

2003-12-14 01:07 Alex Cherepanov

Fix MSVC debug targets: add explicit makefile specification.
Fix bug 687205.

DETAILS:
Debug targets have always been broken on Windows because nmake by
default looks for "MAKEFILE" and fails. Until recently, the default
target was built without the -O2 flag and could be used for debugging.
This patch adds the correct filename explicitly to the debug target
so it can be used instead.

[src/msvc32.mak 1.52]

2003-12-13 18:07 Ray Johnston

Fix a premature closedevice leading to a SEGV when a setpagedevice follows
a setdevice with the only reference to the device in the graphics state.
Bug #687204 detected with ps2epsi.ps.

DETAILS:

the ps2epsi.ps sets an image device, then does a .setsafe which uses
setpagedevice to set .LockSafetyParams. Eventually setpagedevice results
in a call to gs_setdevice_no_init, but the reference count to the current
device is 1 so even though the device is not being changed, the device
was being closed (which freed the buffer and line pointers). Usually
the currentdevice reference count is > 1 since there is more than one
gstate containing a pointer to the device.

This has been broken since 8.10 when version 1.19 was released with
some changes to device finalization.

Note that ps2epsi.ps is extremely fragile and still doesn't work with
examples/alphabet.ps after the patch (due to the "clear cleardictstack
alphabetsave restore" logic at the end. This patch is ONLY for the SEGV.
IMO, ps2epsi really is a mess and needs to be scrapped and designed
properly.

[src/gsdevice.c 1.20]

2003-12-12 18:03 Ralph Giles

Link to History8.htm in the list of history files. Patch from Alexei Podtelez.

[doc/Readme.htm 1.53]

2003-12-12 02:16 Alex Cherepanov

Split an expression in two because MSVC 6.00.8168.0 cannot compile it
in -O2 mode, enabled in GS 8.12 by default. MSVC 6 with
Service Pack 3 doesn't require this work around.

[src/idict.c 1.9]

2003-12-12 01:44 Ralph Giles

Properly remove jbig2.dev from the FEATURE_DEVS list in the autoconf build when
stdint_h is not available. Works around bug 687007.

[src/configure.ac 1.36]

2003-12-11 19:44 Ray Johnston

Fix .gethalftone to prevent /undefinedresource or other error from being
left in the $error dict. Seen with UnusualFontMatrix.ps when running under
startjob encapsulation.

DETAILS:

Internal procedures like .gethalftone that want to use stopped but don't
propagate the error up should use .internalstopped since this doesn't
set /newerror in $error.

The file mentioned has a 'quit' following the showpage which when running
under job encapsulation (false 0 startjob) is redefined to do 'stop'.
This means that the /newerror flag in $error was being seen when the
'stop' after the showpage was executed.

[lib/gs_init.ps 1.103]

2003-12-11 18:15 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 9.

DETAILS :

This change is algorithmically equivalent.
It implements an iterator of filtered flattened curve segments with
gx_flattened_iterator__next_filtered2, and the old behavior
is now implemented with it.

EXPECTED DIFFERENCES :

None.

[src/gxpflat.c 1.21, src/gzpath.h 1.20]

2003-12-11 13:48 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 8.

DETAILS :

Renamed FLATTENED_CURVE_ITERATOR0_COMPATIBLE,
because it doesn't longer reflect its semantics.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.63, src/gx.h 1.23, src/gxfill.h 1.8, src/gxpflat.c 1.20, src/gzpath.h 1.19]

2003-12-11 13:33 Igor Melichev

Fix : The flattening algorithm inaccurately filtered points.
Bug 687154 "Bugs in gx_flatten_sample".

DETAILS :

The old algorithm has 2 problems, which persist since March 20, 2000 or later :

1. When points buffer overflows, it doesn't filter
the next point with MERGE_COLLINEAR_SEGMENTS.

2. With sn_not_first the first point was duplicated,
and the last one was missed.

This patch fixes both problems.

EXPECTED DIFFERENCES :

This patch causes differences flattening long curves.
311-03.ps and 205-13.ps at 300dpi demonstrate a strong progression.
Other differences should be progressions as well.

normal, 72dpi:

012-09.ps
013-09.ps
093-01.ps
289-01.ps
CIDembedded.pdf

300dpi :

012-09.ps
013-09.ps
014-09.ps
015-09.ps
032-07.ps
035-07.ps
083-05.ps
083-09.ps
093-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
289-01.ps
298-09.ps
311-03.ps
321-09.ps
KozukaB-ILEmbed.pdf
RodinCIDEmbed.pdf
shading_prob_800.ps
Svd.pdf

pdfwrite, 72dpi :

083-09.ps
083-13.ps
093-01.ps
205-13.ps
308-04.ps
CIDembedded.pdf

pdfwrite, 300dpi :

012-09.ps
013-09.ps
014-09.ps
015-09.ps
032-07.ps
035-07.ps
083-05.ps
083-09.ps
083-13.ps
093-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
308-04.ps
311-03.ps
acrobat.pdf
alphabet.ps
Bug687044.ps
KozukaB-ILEmbed.pdf
RodinCIDEmbed.pdf
shading_prob_800.ps
Svd.pdf

UnusualFontMatrix.ps was not tested because the current HEAD fails with it.

[src/gxpflat.c 1.19]

2003-12-11 09:53 Igor Melichev

Removed an obsolete code FLATTENED_CURVE_ITERATOR 0.

DETAILS :

The FLATTENED_CURVE_ITERATOR 0 code is not longer in use.
It was disabled since November 25 2003.
This patch completely removes it.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.22, src/gxpflat.c 1.18, src/gzpath.h 1.18]

2003-12-11 02:59 Ray Johnston

Fix setpagedevice so that the Default Halftone is used. Fixes bug #687199.

DETAILS:
Use .setdefaulthalftone rather than .setdefaultscreen so that setpagedevice
picks up the correct Halftone setting. This was detected when trying to
use 'stocht.ps' to set a Default Halftone that is the stochastic threshold
array, which worked only if page size didn't change or other setpagedevice
setting was made.

[lib/gs_setpd.ps 1.19]

2003-12-11 02:22 Ralph Giles

Remove the CC_LEAF alternate compiler definition. This basically exists to pass
-fomit-frame-pointer (or equivalent) on a few (two) files where it's unequivocably safe. This
strikes us as premature optimization.

It was also causing problems with the profile build under gcc because of a quoting problems with
the argument list the makefile passes to itself through this define. Closes bug 687182.

[src/Makefile.in 1.29, src/bcwin32.mak 1.31, src/dvx-gcc.mak 1.25, src/gs.mak 1.23, src/int.mak 1.119, src/lib.mak 1.158, src/macos-mcp.mak 1.24, src/macosx.mak 1.22, src/msvccmd.mak 1.13, src/openvms.mak 1.34, src/openvms.mmk 1.28, src/os2.mak 1.36, src/ugcclib.mak 1.27, src/unix-end.mak 1.6, src/unix-gcc.mak 1.43, src/unixansi.mak 1.34, src/watcw32.mak 1.28, src/wccommon.mak 1.8]

2003-12-10 23:42 Ralph Giles

In the autoconf build, only pass -O2 if the compiler is detected to be gcc. Fall back to trying
the POSIX -O in other cases. The trial compile was not detecting that this option does not work
correctly on the Solaris compilers. Problem report from Nelson Beebe, closes bug 687198.

[src/configure.ac 1.35]

2003-12-10 23:07 Ray Johnston

Fix incorrect handling of the '\' escape character in the filenameforall
implementation on Windwows. Fixes bug #687151. Also fix logic in the
.scanfontdir that relied on the incorrect filenameforall implementation.

DETAILS:
The previous NT filenameforall implementation did not translate the
template string to be used by the FindFirstFile Windows call. This
meant that the template was being passed the '\' escape characters
which were not correctly handled by the OS call.

Also testing -sFONTPATH=\Winnt\Fonts showed that this was also broken
in gs_fonts.ps since it didn't duplicate the '\' characters for the
template to filenameforall.

Note that other gp_* implementations of file enumeration don't
seem to handle escapes such as gp_unifs.c. The gp_macio.c doesn't
do anything, and the gp_dosfe.c (deprecated) seems totally broken.
The gp_os2.c appears to be a clone of the gp_ntfs.c, so should be
fixed. About the only version that seems to be handling the '\'
character according to the PLRM is gp_vms.c (can you believe that?).

Thanks to Alex Cherepanov and Igor Melichev for contributing.

[lib/gs_fonts.ps 1.45, src/gp_ntfs.c 1.22]

2003-12-10 14:27 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 7.

DETAILS :

This change is syntactically equivalent.
It replaces gx_flattened_curve_iterator to a shorter identifier,
because we intend to define a subclass with a name suffix.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.62, src/gxpflat.c 1.17, src/gzpath.h 1.17]

2003-12-10 14:23 Igor Melichev

Fix: A prototype for memcpy was missed.

DETAILS :

It was inserted into lib.mak but did not into gxpflat.c .

EXPECTED DIFFERENCES :

None.

[src/gxpflat.c 1.16]

2003-12-10 13:41 Igor Melichev

Simplify the filtering of points while flattening a curve.

DETAILS :

This change is algorithmically equivalent due to algebraic laws.

Thesis : (coord_near(x2, x0) && coords_in_order(x0, x1, x2)) implies
coord_near(x2, x1).

Proof:

case 1:
	x0 >= x1 >= x2 ==> abs(x2 - x1) <= abs(x2 - x0);
case 2:
	x0 >= x1 >= x2 ==> abs(x2 - x1) <= abs(x2 - x0);

Therefore coord_near(x2, x1) doesn't need to check and has been removed.
Same for Y.
Then merged 2 branches with '||' because they appear same.
The performance slightly increases, and the behavior is easier to understand.

EXPECTED DIFFERENCES :

None.

[src/gxpflat.c 1.15]

2003-12-09 21:18 Ralph Giles

Add the new stdint_.h compatibitily header to the file roadmap.

[doc/Develop.htm 1.128]

2003-12-09 21:17 Ralph Giles

Add a new compatibility header, stdint_.h. All the code previously in std.h and stdpre.h that
tried to make these types universally available has been moved to the new compatibility header
as per policy.

[src/lib.mak 1.157, src/sjbig2.c 1.5, src/sjbig2.h 1.4, src/std.h 1.11, src/stdint_.h 1.1, src/stdpre.h 1.22, src/ttfsfnt.h 1.6]

2003-12-09 21:11 Ralph Giles

Bump version numbers after the 8.12 release.

[doc/News.htm 1.139, lib/gs_init.ps 1.102, src/gscdef.c 1.40, src/version.mak 1.68]

2003-12-09 17:25 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 6.

DETAILS :

This change modifies a disabled code,
and includes a minor change to the enabled code,
which should be algorithmically equivalent.

In the enabled code factored out the new function add_y_line_aux.

This patch fixes the dropout problem in CURVED_TRAPEZOID_FILL 1.
The problem was unprocessed horizontal segments of curves.
Now we create a new temporary horizontal line for
each horizontal segment of a curve, and add it to the Y list.
Then it immediately goes to H list, and then processed and freed.

Due to the modification of the Y list during the main
trapezoid loop (which did not happen before) the cycle
commented with
/* Move newly active lines from y to x list. */
is improved with providing a consistency of local copies
of the Y list pointers.

Good tests for this stuff present in a.pdf .
With this patch with ppmraw 72dpi it renders equal to
with CURVED_TRAPEZOID_FILL 0 code.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.61, src/gxpflat.c 1.14, src/gzpath.h 1.16]

2003-12-09 17:23 Igor Melichev

Generalize the trapezoid filling algorithm for curves, step 5.

DETAILS :

This change modifies a disabled code only.

This patch provides more compatibility of the
CURVED_TRAPEZOID_FILL & FLATTENED_CURVE_ITERATOR0_COMPATIBLE build
to the old code. Doing it with implementing the new function
gx_flattened_curve_iterator__prev.

We're not planning to pass this function to production
because it slows down. Only reason is to simplify testing with
exact comparison of results of the old and the new code.
The macro CURVED_TRAPEZOID_FILL_SCANS_BACK helps to remove it later.

A new field skip_points is inserted into active_line_s for same purpose.
While enumerating curve segments in a backward order,
it helps to skip same division points as the old code
does in the forward order. This thing consumes too much RAM.
It won't go to production.

One problem is left unsolved. While flattening a curve,
it can generate a horizontal segment. It must be passed to h-list
for dropout prevention. It is not done yet.
This problem causes a dropout in a Chinese glyph in a.pdf
with ppmraw 72 dpi.

For a while we don't apply CURVED_TRAPEZOID_FILL for non-characters.
The reason is that pco_monotonize works imprecisely.
Will improve someday. Most characters are free of non-monotonic curves,
but we notices a number of such in Genoa tests
and in other files.

The fragment INTERTRAP_STEM_BUG is an attempt to improve a
serif suppression while dropout prevention. The coded condition
isn't perfect. It is disabled. A better way would be to depend on
Y projection contiguity, checking sect->y0, sect->y1.
Keeping it to simplify further experimenting.

EXPECTED DIFFERENCES :

None.

[src/gx.h 1.21, src/gxfdrop.c 1.8, src/gxfill.c 1.60, src/gxfill.h 1.7, src/gxpflat.c 1.13, src/gzpath.h 1.15, src/lib.mak 1.156]

2003-12-09 17:21 Igor Melichev

Unwinding the last patch because it was committed with a wrong log message.

[src/gx.h 1.20, src/gxfdrop.c 1.7, src/gxfill.c 1.59, src/gxfill.h 1.6, src/gxpflat.c 1.12, src/gzpath.h 1.14]

2003-12-09 16:48 Igor Melichev

ERRONEUS COMMITMENT - do not use this revision.

[src/lib.mak 1.155]

2003-12-09 16:42 Igor Melichev

ERRONEUS COMMITMENT - do not use this revision.

[src/lib.mak 1.154]

2003-12-09 16:12 Igor Melichev

ERRONEUS COMMITMENT - do not use this revision.

[src/gx.h 1.19, src/gxfdrop.c 1.6, src/gxfill.c 1.58, src/gxfill.h 1.5, src/gxpflat.c 1.11, src/gzpath.h 1.13, src/lib.mak 1.153]

2003-12-09 15:59 Igor Melichev

Fix (pdfwrite) : Type 1,2 composite glyphs could point to wrong subglyphs.

DETAILS :

This is a continuation of the recent patch for
Bug 687172 "Jaggies appearing for some characters".

The old code converted subglyph names to char codes with the font's Encoding.
However arguments of 'seac' command always encode glyphs by StandardEncoding.
If the fon't Encoding specifies different codes, the result was wrong.

Since the font copying routine uses gs_glyph values taken from the global
interpreter's space (see gsccode.h), which are PS name indices,
it needs to convert a glyph name string to a name index.
Before now we had no support for this.
To provide it we add a new graphics library callback
gs_font_dir::global_glyph_code.

A recommendation for PCL interpreter :
if it is called with pdfwrite, zfont_global_glyph_code to be implemented.
Maybe an implementation with gs_c_known_encode helps.

There exists a connected minor problem (PS interpreter only),
which this patch doesn't fix.
If a font is freed and then reloaded, the glyph names can get
different name indices, if a garbager is invoked and freed
the names before the second loading. As the result, the copied font
can embed duplicated glyph definitions (charstrings).
It can't give an invalid PDF, but it's size may increase. Hopely this case is rare.
Opening a new bug 687187 about this.

EXPECTED DIFFERENCES :

None with comparefiles.

[src/gsfont.c 1.28, src/gxfcache.h 1.22, src/gxfcopy.c 1.39, src/lib.mak 1.152, src/zfont.c 1.10]