Age | Commit message (Collapse) | Author | Files | Lines |
|
GL/2 closepaths, implicitly detected when the first point of a subpath
and last are equal, were not recognized in some cases because we were
doing a comparison of transformed floating point values, the
comparison is now done correctly in fixed point.
Many regression test files have progressions where the first and last
point of a path now have a proper join where one did not exist before.
|
|
HPGL handles paths slightly differently to the postscript imaging model.
When a path is filled, successive moveto's are treated as linetos.
(i.e. the 'place we close the path to' is left at the first moveto,
and the area remains fillable). Stroking is unaffected however.
To model this in Ghostscript we add a new path segment type 's_gap'.
The filling code treats this as a lineto. The stroking code is updated
to not stroke such edges (and not to break the subpath at this point).
We add a new parameter to the imager state (hpgl_path_mode), new
accessor functions (gs_sethpglpathmode, gs_currenthpglpathmode),
and new postscript operators (.sethpglpathmode and .currenthpglpathmode).
If hpgl path mode is set to a non-zero value, then path construction
treats movetos in an open subpath as gaptos.
Currently this is disabled (see pcl/pctop.c for where it would be
enabled) until we get the pcl interpreter to generate paths in
exactly the right form.
Still to do:
* Update PDF write to spot such paths and to convert them as
appropriate when writing out.
|
|
|
|
When resetting the hpgl/2 page parameters we were setting scaling to
its default value overriding any setting in the PCL job. HP does not
reset the scaling as might be expected.
|
|
This is a case of the current code emulating undocumented behavior
incorrectly. It appears the HP printers resets the print direction
upon receiving a new page size command. Previously we tried to emulate
this by not resetting the logical page orientation which is incorrect
but happened to print the tests we had correctly.
|
|
|
|
The code was actually written fixed once correcly but then was broken
with a bad fix (5ad194f) largely because we didn't have good bookkeeping
for the original fix. Hopefully now that we have an associated bug
report and test file a similar problem won't happen again.
|
|
The unusual loops inside the characters (graphic 3 and 8 center of
page) were caused by trying to edge stick and arc fonts which aren't
outlines but paths (stroked fonts).
|
|
Better emulation of HP printers in the absence of a requested pattern.
|
|
The green boxes for fill type 22 (user defined) were missing because
the download pattern command was disabled in HPGL-2/RTL mode.
|
|
rotations.
There are many progressions and small character placement adjustments
in many regression files. The latter due to how the rotation matrix
is now calculated with a rounded angle.
|
|
physical page size.
|
|
HPGL/2 and RTL plotters support the following decompression methods:
uncompressed block (#4), CCITT group 3 1 dimensional (#6), CCITT group
3 2 dimensional (#7), CCITT group 4 2 dimensional (#8). These have
gotten little testing we only have a couple test files at the current
time.
|
|
The PJL resolution variable is now properly supported, for example "PJL
SET RESOLUTION = 300" will see the resolution for the next job to 300
but will be overridden if -r is given directly on the command line.
Note the PJL resolution is only one value, there is no way to specify
asymmetric resolution as there is with the -r option.
|
|
Now that we have a larger corpus of hpgl/2-rtl files it is clear this
fix cannot be right, something must have been wrong with the analysis,
unfortunately the, referenced test file from the logs ("sprinkler")
seems to be gone.
|
|
transformations are set up in PCL. We have found that plots for
standalone mode can be viewed properly in HPGL-2/RTL mode. We think
this is the best alternative for now, if we get into the business of
emulating individual plotters the issue can be revisited.
|
|
disabling bound coordinates in normal PCL mode.
|
|
previous setup was only appropriate for HPGL standalone mode and only
appeared to work based on the small number of example files we had at
the time.
|
|
logical page is not seen in the HPGL-2/RTL examples we have. There
might be something more complicated going on here, it would be
difficult to determine without a device to run experiments.
|
|
duplicates the functionality of setting a media size using PJL, but we
implement it anyway because users prefer the familiarity of the
option.
|
|
PCL values.
|
|
for standalone mode (GL only). So we have to save the entry operand
to the "Enter HPGL/2 command" in the state so it can be used when the
transformation matrices are recalculated.
|
|
CLUSTER_UNTESTED
|
|
choose halftones based on setting from the palette vs. the foreground,
the latter, an implemented but never used feature.
|
|
|
|
color entries. In particular, the pen width initialization was
incorrect, applying default pen widths to pens that shouldn't be
reset. This changes result in progressions for the following files:
tests_private/pcl/pcl5ccet/31-09.BIN
tests_private/pcl/pcl5ccet/34-03.BIN
tests_private/xl/pcl6cet3.0/C705.bin
|
|
matches the number of entries in the palette times 3 (bytes).
|
|
CLUSTER_UNTESTED
|
|
initialized. This was not an issue with a fixed static palette but
with the new dynamic palettes forthcoming this would cause writing
past the end of the palette data string.
|
|
spaces. A more complete solution is forthcoming.
|
|
CLUSTER_UNTESTED
|
|
The cast in the calls to hpgl_args_add_int() in pcl/pgconfig.c:hpgl_IR()
was wrong. The entire second argument needed to be cast to int32, not
just the results of the division. This caused regressions in a bunch
of the nightly/cluster test files, e.g.:
main/obj/pcl6 -sDEVICE=ppmraw -r75 -o test.ppm fts.1930
|
|
the new custom page size implementation. The new code updates the
current page structure instead of creating a new one - later the page
size logic doesn't recognize a page size change and doesn't clear the
page (erasepage) properly. The custom page size implementation is
less than ideal, but the simple fix here is to just erase the page
unconditionally when the custom page size command is received. There
was no bug reported for this problem.
|
|
|
|
custom paper sizes.
|
|
Implicit typecasts made explicit.
|
|
to provide arbitrary width, height and offsets which are then
associated with the currently selected paper.
|
|
Mostly making type coercions explicit.
|
|
All self evident, really. Lots of char's that should be bytes etc.
|
|
pattern is specified. Also, progressions noted in PCL5 CET 32-01.
|
|
scanning command at the end of a stream to be skipped. No expected
differences.
|
|
|
|
only need have one include file to use for error reporting.
|
|
gs_lib_ctx.
The business of trying to keep the profile directory in the device and keeping it in
sync with the value used in the icc_manager led to problems when some devices were
initialized. This change moves the profiledir (and its len) into the gs_lib_ctx_t
(pseudo- global) which is accessible by the icc_manager and devices via the
gs_memory_t pointer.
Remove the no longer needed functions to set and sync the profile in the device and
replace gsicc_set_icc_directory with gs_lib_ctx_set_icc_directory.
Thanks to Michael Vrhel for adding to this patch to make it build on linux and
build the other parsers.
|
|
In adaptive compression mode the seed row for delta row compression
was not properly cleared. With this change the code is now compatible
with HP monochrome printers, previously the Artifex code was
compatible with HP Color Laserjets. We do not implement a device
specific switch - for example the new code could be enabled if the
current mode of emulation was PCL5E (mono PCL) and not PCL5C (color
PCL) allowing emulation of both product types. However the corrupt
character output of HP color printers is probably never an intended
result.
|
|
The is callback used to be used to delete all characters from the
cache, we don't do that anymore.
|
|
|
|
|
|
|
|
|