summaryrefslogtreecommitdiff
path: root/lcms2mt
Commit message (Collapse)AuthorAgeFilesLines
* Improve LCMS2MT/CAL header finding.Robin Watts2022-04-142-9/+4
| | | | Primarily to avoid an undefined prototype warning on build.
* Change lcms2mt hooking into CAL.Robin Watts2022-04-123-13/+26
| | | | | | | | | 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.
* Fix lcms2mt plugin version handling for transforms.Robin Watts2021-08-312-3/+5
| | | | | lcms2mt uses version numbers BELOW that of lcms2. This meant that we were incorrectly spotting CALs plugin as being an old style one.
* Fix inline declaration for lcms2mt.Robin Watts2021-08-271-2/+2
| | | | This restores building with VS2008.
* Update lcms2mt to match lcms2mt branch on thirdparty/lcms2 repo.Robin Watts2021-08-2566-5704/+15640
| | | | This should fix bugs 703321, 703871 and 703872.
* Fix merge error causing CAL SEGVs.Robin Watts2021-03-151-1/+1
| | | | | We were detecting plugins as being old format. This only shows up in testing with CAL.
* Update lcms2mt to lcms2 2.12.Robin Watts2021-02-1783-2163/+2954
|
* Bug 703320: Export cmsCloneTransformChangingFormatsMichael Vrhel2021-01-252-2/+2
|
* lcms2: automatically align blocks appropriately on sparc.Robin Watts2020-10-211-1/+5
| | | | | | | | | | | | | | 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.
* Delete binary files from lcms2mt treeChris Liddell2020-08-204-0/+0
| | | | There were left over binary libraries, remove them.
* Update lcms2mt to lcms2-2.10rc2.Robin Watts2020-06-04153-4010/+14574
|
* lgtm.com issue: Add some missing "repeat include" guards.Robin Watts2020-05-083-5/+5
|
* lgtm.com fixes for ghostscript.Robin Watts2020-05-061-1/+1
| | | | | | | 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.
* Squashed commit fill-stroke3 branchMichael Vrhel2020-01-113-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Ghostscript Bug 701324. Improved robustness of lcms2mtMichael Vrhel2019-11-211-2/+11
| | | | | | 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.
* Tri/QuadriLinear changes for lcms2mt.Robin Watts2019-09-185-5/+171
| | | | | | | | | | | | | | | | | | | 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.
* Optimise Eval{5,6,7,8}Inputs{,Float}.Robin Watts2019-09-091-232/+156
| | | | | Only use 1 Temporary array, and avoid needless work in the 0xFFFF cases.
* Tweak Eval4InputsFloat for speed.Robin Watts2019-09-091-58/+93
| | | | Move to the Pentachoronal Interpolation algorithm.
* Tweak Eval4Inputs for speed.Robin Watts2019-09-091-60/+99
| | | | | | | | | | | | 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).
* Implement HyperPentahedral interpolation within lcms2mt.Robin Watts2019-09-041-181/+205
| | | | | This accelerates conversions from 4 component spaces, such as CMYK.
* Tweak lcms to optimise the pipeline before consulting plugins.Robin Watts2019-08-131-2/+6
| | | | | | | | 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.
* Only use plug-in clone if transform is not identityMichael Vrhel2019-03-021-2/+3
| | | | | | 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.
* Have lcms2mt clone method check for transform plug-insMichael Vrhel2019-02-251-2/+18
| | | | | When cloning a transform, it is necessary to see if there are any plugins that should be used with the new data types.
* Pull in fixes from lcms2mt repo.Robin Watts2019-01-024-8/+9
| | | | (This pulls in the latest fixes from mainline lcms2 too).
* LCMS2MT: Planar data fix.Robin Watts2018-11-281-8/+63
| | | | | | | The PrecalculatedXFORMIdentity case was failing to allow for planar data. Fix that here. Also, optimise the src = dst case.
* Pull in newly merged and updated LCMS2MT from MuPDF thirdparty repo.Robin Watts2018-10-15105-1345/+2340
| | | | | The MuPDF repo should be considered canonical, as that is the one that can pull in updates from upstream lcms2 easily.
* Bug 699543: handle missing isinf() and fpclassify()Chris Liddell2018-07-242-0/+6
|
* Rename lcms2art to lcms2mt, Remove cmsChangeBuffersFormatRay Johnston2018-03-28257-0/+128872
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