| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Primarily to avoid an undefined prototype warning on build.
|
|
|
|
|
|
|
|
|
| |
Rather than using a plugin for the accelerated xforms, hook them
in manually within _cmsFindFormatters. This means they kick in
more often, and don't 'block' other optimisations that are already
built in.
I can't see a more "official" way of doing this.
|
|
|
|
|
| |
lcms2mt uses version numbers BELOW that of lcms2. This meant that
we were incorrectly spotting CALs plugin as being an old style one.
|
|
|
|
| |
This restores building with VS2008.
|
|
|
|
| |
This should fix bugs 703321, 703871 and 703872.
|
|
|
|
|
| |
We were detecting plugins as being old format. This only shows up
in testing with CAL.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The sparc architecture requires pointers within structures to
be at 64bit alignment, even if they are 32bit pointers.
LCMS2 allows for this by having a CMS_PTR_ALIGNMENT symbol
that can be predefined. If it's not predefined, it defaults to
sizeof(void *).
We update the source here so that when building for sparc, it
defaults to 8. This shouldn't affect gs, as it sets the value
via configure/make. I believe our lcms2 repo as used in MuPDF
is autogenerated from this though, and this will help us there.
|
|
|
|
| |
There were left over binary libraries, remove them.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Avoid using the same header include guard in more than one file.
Use the correct format specifier in a printf-like error string
in lcms2mt.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This branch had several contributors including Robin Watts,
Ken Sharp and Ray Johnston.
The intent was to add a "fill and stroke" path device method
to ensure we get proper rendering when doing fill/stroke
methods with overprint and transparency. In addition,
adding the method made it possible for pdfwrite to match
the original pdf source file if it also had fill/stroke methods.
The interaction with overprint and transparency led to significant
changes in parts of the code related to those sections. In particular,
overprint was reworked to ensure that the overprint compositor and
the transparency compositor were aware if it was to be using
the overprint drawn_comps for stroke or for fill. The code was
rewritten so that the overprint compositor actions only occurred when
an actual operation occurred (e.g. fill, stroke, image, text) as opposed
to every time that the overprint graphic state values changed.
When there is a fill-stroke operation with transparency, depending upon the
graphic state values, a non-isolated knockout group may be pushed. From this,
an issue with knockout groups within knockout groups was revealed, which was
related to the backdrop selection. The backdrop selection code was simplified.
|
|
|
|
|
|
| |
lcmsmt will give up if it can't find the perceptual MLUT.
This fix will have it check to see if the colorimetric or
saturation intents are present also.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a mechanism so that we can force lcms2mt to use
TriLinear (or QuadriLinear) interpolation for specific
transforms. This is primarily useful so we can get
"best case" transforms which we can use as a baseline
for our accelerations.
The use of TriLinear/QuadriLinear is governed by a new
cmsFLAG bit, passed in to link creation. Unfortunately,
these flag bits are not passed all the way down to where
we actually need them. To avoid having to add an extra
flags argument in many places, I stash the flags in a
new field in the cmsContext. This is safe, if not entirely
pretty, as each context will only be used in a single
thread at a time. If this was a function used for more
than just testing, we'd consider doing it in the neater
(but more invasive) way.
|
|
|
|
|
| |
Only use 1 Temporary array, and avoid needless work in the
0xFFFF cases.
|
|
|
|
| |
Move to the Pentachoronal Interpolation algorithm.
|
|
|
|
|
|
|
|
|
|
|
|
| |
In coding the SSE version for CAL, I spotted a slightly
preferable test that allows us to capture some special
cases for free. These special cases accelerate some
useful cases including:
* C=M=Y=K (such as when all 0 = white?)
* C=M=Y (such as when pure black)
* M=Y=K (possibly useful in case we ever have profiles that
store K first).
|
|
|
|
|
| |
This accelerates conversions from 4 component spaces, such as
CMYK.
|
|
|
|
|
|
|
|
| |
This allows us to recognise identity transforms before selecting
one of our optimised lookup functions. Firstly, however optimised
our code is, we aren't going to beat the identity code. Secondly,
lcms doesn't calculate the tables for identity transforms, so
our code can fall in a heap here.
|
|
|
|
|
|
| |
lcms will if it finds the table is essentially the identity set
the transform to a copy operation. If this is the case, then
just use that operation as it will be as fast as things can get.
|
|
|
|
|
| |
When cloning a transform, it is necessary to see if there
are any plugins that should be used with the new data types.
|
|
|
|
| |
(This pulls in the latest fixes from mainline lcms2 too).
|
|
|
|
|
|
|
| |
The PrecalculatedXFORMIdentity case was failing to allow for planar
data. Fix that here.
Also, optimise the src = dst case.
|
|
|
|
|
| |
The MuPDF repo should be considered canonical, as that is
the one that can pull in updates from upstream lcms2 easily.
|
| |
|
|
Since cmsChangeBuffersFormat is NOT threadsafe, we want it to remove it
so that it would not be part of this package which is inteded for multi-
threaded used. The internal use in CreateNamedColorDevicelink was replaced
with the appropriate code from the removed function, but that does not
cause a thread safety issue since the link returned is new and not shared
when the buffer formatters are changed.
Note: All internal references to lcms2art are replaced with lcms2mt
|