Age | Commit message (Collapse) | Author |
|
|
|
|
|
Several things irk me about passing values as const pointers:
* They can be NULL, which is not a valid value.
* They require explicit temporary variables for storage.
* They don't compose easily in a legible manner, requiring
weird pointer passing semantics where the variable being assigned
is hidden as an argument in the innermost function call.
* We can't change the value through the pointer, requiring yet more
local variables to hold copies of the input value.
In the device interface where we pass a matrix to a function, we often
find ourselves making a local copy of the matrix so we can concatenate
other transforms to it. This copying is a lot of unnecessary busywork
that I hope to eventually avoid by laying the groundwork with this
commit.
This is a rather large API change, so I apologize for the inconvenience,
but I hope the end result and gain in legibility will be worth the pain.
|
|
The progress figures did not correctly add up to progress_max.
Now they do. In addition, if we abort, the progress figure
will accurately indicate how far we got.
|
|
Call these from the PDF interpreter. Make the DisplayList and
Trace devices cope.
Use these in the SVG output device.
|
|
|
|
|
|
Also force softmasks to be isolated groups.
|
|
No longer required, and causes leaks.
Also, fix some reference counting problems with colorspaces.
|
|
This commit adds an interface for a color management engine
to MuPDF, together with the internal changes required to
use it. We also add an implementation of this interface using
the LCMS2 library.
This commit is the "lcms" development branch squashed to a single
commit. The individual commits that make it up are as follows:
------
Add LCMS2 submodule.
Add required source files to MSVC libthirdparty project.
Plus changes to the Makefile.
------
Change name of libfont to libresources
The library can hold things other than fonts including
ICC profiles and eventually halftone screens etc.
------
Generate and include icc profiles on windows solution
Makefile for linux needs to be updated
------
Initial cut at interface to little cms
Methods for getting profile handles, link handles
and transform buffers as well as individual colors.
------
Install ICC profiles from source
When the source color space is an ICC profile
install the ICC space. Use alternative color
space if ICC is invalid.
------
Rename ICC resources
The way that fontdump generates the names was
causing some redundant prefix/suffix combinations.
------
Make resource ICC profiles usable
This brings in the resource profiles for use with the
target device. When mudraw is invoked with the icc
color type, it will set up the target pixmap to have an icc
based color space.
------
Make Default ICC color spaces not storable
The ICC color spaces in the color context should not be
put into the store. ICC color spaces that are contained
in the source document are however storable.
------
Add in support for single color conversion
This adds in the selection of the icc single color
converter. Note that we may want to look at using
the float conversion in lcms here since we are going
from and to float. The down side is that the creation
of such converters may be expensive.
------
Pixmap ICC conversion
Also clean up and further simplify some of the code. Use common
dst, src in function parameters instead of src, dst.
------
Add md5 calculation for profiles
Compare md5 of source and destination. If they
are the same set link as identity and do not bother
creating link from cmm.
------
Initial attempt at adding links to store
Next need to make sure I have all the dropping set up
correctly and that the links are getting freed when
we are all done with them.
------
Add drop for link
Make sure that we drop the links when we are done with them.
------
Fix icc link store ref. counting + rendering intent
The key allocations, rc and removal was wrong for the icc links.
Also added in support on the graphic state for rendering intent.
------
Add ICC profiles to Makefile.
------
Move ICC profile loading to colorspace.c
------
Fix build on linux.
------
Use hexdump in creating icc profiles
------
First cut at CalRGB CalGray handling
These color spaces are converted to equivalent ICC profiles
when the drawing operation occurs. ToDo still is avoid
creating brand new CalGray, CalRGB or ICC color spaces when
we encounter the same object in the source file. Instead
we should make use of the store.
------
Adding fz_color_params into device API
Stroke and fill of paths and text which will have color rendering related settings
including overprint, overprint mode, rendering intent and black point settings.
Images have a fz_color_params member added to them.
------
Rendering intent support for graphic and text
Graphic fills and strokes as well as text fill and strokes
handle the rendering intent settings. This works
through the display list. The parameters related to
color rendering, ri, bp, op, opm are packed in the flags
bits through the display list.
To do: Add support for images and shadings.
------
Add support for rendering intent with images
Required change to fill_image api, hence the large
number of files touched.
------
Add support for shadings rendering intent and DeviceN
This adds support for the rendering intent in shading fills.
Also, adds in support for color management of DeviceN and
Separation color spaces where the base space is defined to be
ICC.
------
Add clamping proc to colorspace-imp.h
In the head of mupdf, the index color values were not
being clamped properly. I moved the clamping operation
to be performed by a procedure in of the color space.
The a*, b* values in LAB will need to include a range value
for proper clamping as well as the ICC color space at some
point.
------
Fix assert test with index images
------
Support for DeviceN images color managed
The base space for DeviceN and separation images
is now color managed when the ICC work flow is used.
------
Add DefaultGray etc to names.txt
The DefaultGray, DefaultRGB, and DefaultCMYK settings
in the pdf page resource dictionary need to be parsed
and handled if present.
------
Remove methods for setting color space in context
The methods that existed for setting the color spaces
in the color space context were broken and we will not
be changing them from their initial setting at startup.
------
Add front end support for default color spaces
PDF can specify in the resource dictionary color spaces
that should be used for DeviceGray, DeviceRGB and DeviceCMYK.
This commit handles the extraction of these color spaces
and passes them through the display list and gets them
into a structure on a draw device (if one is used).
Next step is to have the draw device make use of them.
------
Backend of default color spaces
This handles the use of page level definitions for
DefaultGray, DefaultRGB, DefaultCMYK in the
draw device. The interface for the pixmap color
conversion had to be expanded a bit to pass the
default_cs object. This was needed due to the fact
that the image could be DeviceN or Separation and
have a base space that needs to be replaced by
a page level Default color space. Tested this
with a file that had two pages each with an common
reference image object but different DefaultCMYK
definitions in the page resource dictionary. Proper
rendering was obtained.
------
Add icc support to band-writer and png output
For image viewers that support icc profiles, it
is important that we include the icc profile
into those formats that support. Currently the
only output format we have that supports it is
PNG. But if we decide to do tiff, jpeg or psd
those also support the embedding of icc profiles.
------
Work toward multithreading
Each cloned context creates a new cmm context to
reduce contention. This may not be optimal though
as it may create conflicts in any shared store.
------
Add missing files.
Failed to check in icc-imp.h and icc34.h
------
Fix default device color calls
copy and paste errors.
------
Fixes
------
Fix clamping of lab colors
The lab colors when used with the lab resource profile
need to be properly clamped and scaled.
------
Turn off ICC create debug define
------
Fix memory leak issues
------
Set clamp proc in color context color spaces
When NO_ICC is enabled there was an issue as the
default spaces did not have the clamp proc (which was added
in the lcms branch).
------
Fix several issues after rebase
During rebase of the branch there were several
issues that came up. In addition there was
a fix related to the use of the lcms2 context branch
that did not make it in for some reason.
------
Fix for fz_store_type structure changes
------
Fixes for multithreaded
This fixes a few issues. One issue is that we can not be changing the
input and output formatter for the links if they are being shared among
threads. This adds the format as part of the link definition. Next step
is to create a link clone operation in lcms so that we can readily create
a different one with everything the same except the formatter.
Also, this shares the profiles that exist in the color context among the
threads. When a context is cloned, it will use the profiles in the current
context but it will create a new cmm context.c
------
Fix NO_ICC issues
There were a few issues that occurred when we compiled and ran
with the NO_ICC setting.
------
Change CMM to use lower resolution tables in links
The table resolution greatly affects the performance for some files. I don't see any significant color rendering issues going with a lower resolution.
Selecting cmsFLAGS_LOWRESPRECALC uses a MLUT resolution of 17. This is going to be
sufficient color wise and gives a large improvement performance wise especially for files
where the color link creation is significant compared to the rendering.
------
Fix link key creation to populate alpha and bit depth.
The store key for icc links needs to include the bit depth
and if the transform has to handle an alpha value. This
is needed due to the fact that we can't change the formatter when
we are sharing links among different threads.
------
Pull in some MSVC 2005 fixes for lcms2
------
Fix non-prototype prototype.
------
Miscellaneous typos, whitespace fixes.
------
Tidy colorspace creation API.
Rather than pass a magic implementation reference count value
(-1 for static, 1 for normal), pass a boolean "is_static" flag.
This gives a nicer API (IMAO etc).
------
Make all colorspaces use an fz_buffer.
------
Fix internal naming of MSVC project file.
------
Fix some error handling.
------
Add some consts.
------
Tweak fz_color_params and fz_store_hash.
Use uint8_t for fz_color_param entries - no need to use
larger.
Same change in fz_store_hash. This limits the size required
for the hash table too.
------
Throw on errors, rather than returning NULL.
fz_cmm_transform_pixmap should throw if it's fed pixmaps
incompatible with its transforms.
fz_cmm_new_ctx should throw if the cmm fails to initialise.
------
Ensure LCMS2_OBJs are built/linked using Makefile.
Also ensure that ICC_OBJs are included.
------
Fix some unused variable warnings.
------
cs_params fixes.
Use the ones that are passed.
------
fz_color_params tweaks.
Make them const in many places.
Cope with cs_params == NULL meaning default (i.e. fz_cs_param(ctx)).
Minimise the places we call fz_cs_params(ctx).
Consistently use cs_params rather than a mix of cs_param and cs_params.
------
Improve PDF color params handling.
PDF allows different OP settings for strokes and fills.
This means that either we need to keep separate entries in
each fz_color_param structure for the stroke one or the fill
one, OR we need to duplicate the fz_color_param structure.
It seems neatest to do the latter (not least because this
means we don't pass more information to each device function
than it actually needs).
Accordingly, we put an fz_color_param in each pdf_material.
We update the code that reads ExtGStates to set the values
appropriately. We take the opportunity to add support for the
PDF 2.0 UseBlackPtComp option too.
------
Fix colorspace ref count problems.
1) Don't drop colorspace until we've finished using it.
2) Don't drop it twice.
------
Convert NULL deref into a thrown error.
Seen with:
mutool draw -D -o out.png ../tests_private/comparefiles/Bug689760.pdf
We seem to have a pdf-cal space with no profile.
Talk to Michael about this.
------
Avoid using colorspace names to distinguish colorspaces.
Using strcmp is slow.
------
Cope with failure to parse default colorspaces during PDF page load.
------
Avoid SEGV due to to pdf_cal space with no profile.
As seen in:
tests_private/pdf/PDFIA1.7_SUBSET/CATX4879.pdf
------
Handle cases where base space of sep is pdf-cal
We handled this for images, but not for solid fills.
------
Accelerate ICC color conversion.
------
Cope with indexed images in the color management.
Some images (JPX images) come to the cm code still in
the indexed color space. Their base space could be DevN
so we need to cope with multiple base decodes. This
continues the decode until we get to a space for which
we can create an ICC link.
------
Ignore alpha presence in component count check
------
Eliminate recursion in fz_source_colorspace_cm.
------
Cope with bare ICCBased colorspace defs.
Bug692137.pdf has ICCBased colorspaced definitions given
directly as a stream, rather than as
[ /ICCBased <stream reference> ]
Acrobat copes with these, as does gs. We therefore update our
code to cope too.
Also, the PDF spec says that any problems found when reading
the Default spaces should be ignored (or at least not to abort
rendering). Update our code to do that too.
------
Tweak color converter logic for speed.
When we are using an icc profile based conversion, avoid ever
having to lookup the color converter for each conversion call;
do it at the lookup stage.
------
Harden us against failures during ICC link creation.
Seen with corrupted profiles.
------
Fix for handling alpha with lcms.
Note that this currently maintains an alpha when it is present.
We may need to do some work for the gray scale conversion to alpha mask.
------
Delay pdf-cal profile creation
Put the creation of the pdf cal profile into the link
creation function (rather than have it scattered). Also
be robust in the condition of failure to create the profile.
------
Proper clamping with embedded CIELAB ICC profile
If the ICC profiles alternate color space is LAB
then use the LAB clamping proc.
------
Use the color space clamp when converting to base color spaces
In many of the Ghent test files, we have a DeviceN image whose
alternate color space is CIELAB. We need to make sure to use
the CIELAB clamping operation in this case.
------
Make ICC runtime configurable.
Add fz_icc_flowflow, fz_set_icc_workflow functions to read ICC
workflow state, and set the ICC workflow state. The latter will
throw an error if trying to enable ICC workflow in a NO_ICC build.
Add -N flag to mutool to disable ICC.
Incorporates build fixes from Michael.
------
Ensure fz_draw_fill_image uses the pixmap colorspace
It appears that the image colorspace historically has been able
to differ from the pixmap colorspace. While we've fixed the cases
that we know about for this (see the previous commits), tweak
fz_draw_fill_image to work the way it always has in the past.
------
Add support for output intent
PDF documents can have an ICC profile defined in their Catalog
which defines the output color space and the color space to
use for one of the Device color spaces (e.g. DeviceGray,
DeviceRGB or DeviceCMYK).
------
Catch errors in default color spaces
Before setting the default color space contained in
the file, make sure it is the correct type.
Bug692213.pdf
------
Clamp to base space during sep color conversion
This was the source of a problem when the base space
was CIELAB.
------
Rename some functions to be more MuPDFy
drop rather than free etc.
------
Fix "casting away const" warning.
srcv is a const *. Do the clamping operation on src_map
(the same value) before it is assigned into the const
variable.
------
Rejig top level color management interface slightly.
Same code, just change the encapsulation.
------
Remove pre-multiplied alpha prior to color management
The pixmaps in mupdf use a premultiplied alpha format.
Prior to doing any color management we need to undo
the alpha and then reapply after color management.
------
Remove global output intent as unused.
------
Move fz_color_params to be the final arg in dev calls.
Frequently this will be NULL, and it doesn't form part of
the colorspace/color/alpha triple.
------
Rename fz_default_xxx static variables.
Remove fz prefix, to prepare for a later renaming that would conflict.
------
Rename cs_params to color_params.
------
Rename lcms branch identifiers.
------
Return device colorspaces if the default colorspace is NULL.
------
Clean up device call function for set_default_colorspaces.
------
Add missing rethrow.
------
Load page default colorspaces lazily.
------
murun: Add color params device argument.
Stubbed to always be NULL at the moment.
------
Rename extgstate processor ops.
------
Fix a few minor issues from Tor
Removes icc-imp.h
Rename color-icccreate.c
Add context to some methods
------
Fix javalib with recent lcms dev changes.
------
Update lcms2 with sub project fixes.
------
Fix build failure.
------
Add icc profile into other PNG output methods
------
Fix some ints that should be size_t's.
------
Tweak fz_new_icc_data_from_icc_colorspace.
Ensure that the colorspace is const, and that we set size to 0
if we don't find any data.
------
Combine band writer methods for header and ICC writing
For many formats (like PSD), we need to delay writing some of the
header until we know whether we are getting an ICC profile to
write or not. Makes more sense to just write them at the same
time.
------
Miscellaneous tweaks in colorspace.c
Mainly to avoid pointer aliasing, "nicer" whitespace, and a leak
on error.
------
Avoid rightward drift in get_base_icc.
------
Ensure that pdf_load_output_intent copes with exceptions.
If load_icc_based throws and exception, warn and continue. Don't
not render a file just because the inbuilt default profiles
are broken.
------
Revert change in pdf-page.c
The page resources load had been moved so we could get the default
colorspaces, but this has been moved into run_contents, so putting
stuff back as it was before.
------
Revert changes in mudraw.
We had added some colorspages in mudraw, and then later removed them.
Revert the changes to accomodate this to make the overall branch diffs
smaller.
------
Use fz_buffer in color-icc-create.c
------
Force mapping through proof icc profile always.
------
Fix behaviour on fz_cmm_new_profile failure.
If the profile fails to be made, return an error code,
and have the callers take sane steps.
------
Tweak load_icc_based
Cope better with errors in reading the ICC space not stopping
us loading the alternate.
------
Remove unused variable.
------
Get page resource for DefaultCS look-up
res = pdf_dict_get(ctx, PDF_NAME_Resources, page->obj); was not
returning resource.
Replaced with res = pdf_page_resources(ctx, page);
------
Move default color space set up to pdf_run_page_contents_with_usage
------
Review fixes for lcms branch.
------
Fixes for calibrated colorspace loading.
------
Add fz_document_output_intent wrapper. Lazy load intent for PDF.
------
Copy DefaultCS logic into pdf_run_annot_with_usage.
Same code as from pdf_run_page_contents_with_usage.
------
More review fixes.
------
Avoid rightward drift in pdf_load_cal_common
------
Rename color_converter functions to be find/drop.
Better than than lookup/discard. lookup suggests something that
doesn't need dropping, and we use drop rather than discard by
convention.
------
Move cmm from context into colorspace context.
------
Review fixes: Remove recursion and rename functions.
------
Don't access doc->oi directly in pdf_load_default_colorspaces.
------
Rename fz_colorspace_is_pdf_cal to fz_colorspace_is_cal and make it public.
------
Tweak function naming to be more consistent.
------
fz_md5_icc can be implemented using fz_md5_buffer.
------
Print full md5 checksums in link key debug prints.
------
Make fz_md5_buffer NULL safe.
------
Simplify debug saving of ICC profiles.
------
Rename fz_cmm_new/drop_profile to init/fin.
------
Indentation cleanups.
------
Move CMM static inline functions from private header to C file.
------
Tweak fz_icc_data_from_icc_colorspace to return a buffer.
Also, remove the _new_ from the name to reflect the fact that we
are passed a borrowed handle, not given a new reference.
------
java: Add ColorParams.pack() function.
------
Generate one C file for the embedded ICC profiles.
------
Return const pointer from fz_default_color_params.
------
Change misleading argument names to fz_new_colorspace.
------
Rename fz_cmm_new/drop_link to fz_cmm_init/fin_link.
------
Change definition of fz_cmm_instance.
Rather than void, use an undefined struct in keeping with the
rest of the code.
------
Add support for color managed bgr color space
------
Return unsigned char array from fz_lookup_icc.
------
Make default_color_params immutable.
Changing the defaults used by the draw device should happen via a
device call, should we need the functionality in the future.
------
Clean up error handling in color-lcms.c
------
Fix signed/unsigned warning.
|
|
|
|
Add an option to the structured text device to preserve images.
If the PDF processor does not have ops to process images, then skip
loading them in the interpreter if possible. If the device does not
have any image callbacks, then don't set the image processing ops in
the run device.
This accomplishes the same effect as the device hints were intended
to do, but without needing to expose them to the PDF interpreter
which may not even have a device since we now have multiple PDF op
processors.
|
|
|
|
In keeping with the rest of the code.
|
|
|
|
tests_private/pdf/sumatra/1297_-_interpolate_at_lower_resolutions.pdf
times out in the cluster.
This is due to us having empty t3 glyphs defined that define d1
rectangles that are wildly different to the default font bbox.
Add code to spot that t3 glyphs are empty, and to use a tiny font
bbox for them.
(It might be nicer to drop the empty display lists, but then this
produces knock on problems further on, where non-existent display
lists lead to NULL pixmaps, which lead to us think that renders
failed etc).
|
|
|
|
The implementation does not need to be in the public API.
|
|
A few commits back, we introduced the fz_key_storable concept
to allow us to cope with objects that were used both as values
within the store and as parts of keys within the store.
This commit worked, but showed up performance problems; when the
store has several million PDF objects in it, bulk changes (such
as dropping a display list or document) could trigger many passes
across the store.
We therefore introduce a mechanism to ameliorate this. These
passes, now known as "reap passes", can be batched together using
fz_defer_reap_start and fz_defer_reap_end.
We trigger this start/end around display list dropping, and around
PDF content stream processing. This should be fine, as deferral
will be interrupted if we ever run our of memory during mallocing.
|
|
|
|
Closing a device or writer may throw exceptions, but much of the
foreign language bindings (JNI and JS) depend on drop to never throw
an exception (exceptions in finalizers are bad).
|
|
To return the proper size from fz_bound_display_list, which has been
broken since the begin_page device call was removed.
|
|
Garbage collected languages need a way to signal that they are done
with a device other than freeing it.
Call it implicitly on fz_drop_device; so take care not to call it again
in case it has been explicitly called already.
|
|
To be moved into a new document writer interface later.
|
|
|
|
The scissor argument is an optional (potentially NULL) rectangle
that can give hints to devices about the area that can be scissored.
This is used by the draw device and display list device to minimize
the size of temporary clip mask buffers.
The scissor rectangle, if used, must have been transformed by the
current transform matrix.
|
|
Extraneous explicit type casts can mask errors, especially if a
function prototype or return value changes in the future.
|
|
Image objects are immutable and opaque once constructed.
Therefore there is no need for the const keyword.
|
|
Shading objects are immutable and opaque once constructed.
Therefore there is no need for the const keyword.
|
|
It's an opaque immutable structure, that we don't expect to ever want
to change after creation. Therefore the const keyword is not useful,
and is only line noise.
|
|
In general, we should use 'const fz_blah' in device calls whenever
the callee should not alter the fz_blah.
Push this through. This shows up various places where we fz_keep
and fz_drop these const things.
I've updated the fz_keep and fz_drops with appropriate casts
to remove the consts. We may need to do the union dance to avoid
the consts for some compilers, but will only do that if required.
I think this is nicer overall, even allowing for the const<->no const
problems.
|
|
We can now group all clipped text into one fz_text object and simplify
the device interface.
|
|
|
|
By default in MuPDF, when we render an axis aligned image, we
'gridfit' it. This is a heuristic used to improve the rendering
of tiled images, and avoid the background showing through on the
antialiased edges.
The general algorithm we use is to expand any image outwards so that
it completely covers any pixels that it touches any part of. This is
'safe' in that we never cause any pixels to not be covered that
should otherwise be so, and is important when we have images that are
aligned with (say) line art rectangles.
For gproof files though, this gives nasty results - because we have
multiple images tiled across the page all exactly abutting, in most
cases the edges will not be on exact integer coordinates. This means
we expand both images and 1 (destination) pixel is lost. This severely
hurts the rendering (in particular on text based pages).
We therefore introduce a new type of grid fitting, where we simply
align the edges of images to the closest integer pixel. This is safe
because we know that neighbouring images will be adjusted identically
and edges will stay coincident.
We enable/disable this behaviour through a new device flag, and make
the gproof interpreter set/clear this flag when generating the page -
thus normal rendering is unaffected.
We *could* have just poked the dev->flags fields directly, but that
would require magic in the display list device to check for them
being set/unset and to poke the dev->flags fields on playback, so
instead we introduce a new fz_render_flags function (that calls a
device function) to set/unset flags.
The other attraction of this is that if we ever have devices that
'filter', we can neatly handle passing flag changes on with those.
Currently the display list implementation only copes with set/clear
of the FZ_DEVFLAG_GRIDFIT_AS_TILED option. We only readily have 6
bits available to us, so we'll just extend this as required if we
add new render flags.
|
|
Introduce the concept of 'packed' paths. These reduce the header
overhead for most common paths (ones with less than 256 commands
and 256 coords) to a single 32bit int once stored in the
display list.
The previous commit reduces the torture-test.pdf from 95 to 87Meg.
This commit futher reduces it to 70Meg.
|
|
Update buffer and filter processors.
Filter both colors and stroke states.
Move OCG hiding logic into interpreter.
|
|
When we meet cached tiles when rendering the display list, we need to
skip over their contents. Previously we did this by skipping
display list nodes in their entirety.
With the new display list scheme however, we cannot simply skip
nodes completely as the graphic state changes must be remembered.
We therefore update the list playback routine to keep track of the
clip depth and to skip the function calls as required.
|
|
I was testing an untransformed rectangle. This was not being picked up
as our cluster tests use the identity matrix.
|
|
|
|
Rather than a linked list of display nodes, we use solid block of
serialised data. We send a 32bit word, which contains various bitfields.
These bitfields indicate the command type, and the presence or absence
of various fields (such as paths, colorspaces, colors etc).
If these fields are not present, they are held to be the same as the
previous values.
|
|
|
|
Purge several embedded contexts:
Remove embedded context in fz_output.
Remove embedded context in fz_stream.
Remove embedded context in fz_device.
Remove fz_rebind_stream (since it is no longer necessary).
Remove embedded context in svg_device.
Remove embedded context in XML parser.
Add ctx argument to fz_document functions.
Remove embedded context in fz_document.
Remove embedded context in pdf_document.
Remove embedded context in pdf_obj.
Make fz_page independent of fz_document in the interface.
We shouldn't need to pass the document to all functions handling a page.
If a page is tied to the source document, it's redundant; otherwise it's
just pointless.
Fix reference counting oddity in fz_new_image_from_pixmap.
|
|
Rename fz_close to fz_drop_stream.
Rename fz_close_archive to fz_drop_archive.
Rename fz_close_output to fz_drop_output.
Rename fz_free_* to fz_drop_*.
Rename pdf_free_* to pdf_drop_*.
Rename xps_free_* to xps_drop_*.
|
|
Disallow modification of shared fz_path and fz_text objects.
They should follow a create once, consume often pattern, and as such should
be immutable once created.
|
|
Add a new class of errors and use them to abort interpretation when
the test device detects a color page.
|
|
(Revert the fix for potential memory leak - there wasn't a potential memory
leak as the device only takes ownership of it's display list if
dev->free_user is set).
This reverts commit ada560eb015e7b2208c492d47f28da8093733c4a.
|
|
|
|
FZ_CMD_CLIP_TEXT behaves quite differently whether the accumulate flag
is set or not (see fz_list_clip_text). fz_run_display_list handles this
correctly but fz_append_display_node doesn't do so yet.
|
|
|
|
|