-
- diff -pruN lcms2-2.9.orig/ChangeLog lcms2-2.9/ChangeLog
- --- lcms2-2.9.orig/ChangeLog 2017-11-01 02:36:47.000000000 +1100
- +++ lcms2-2.9/ChangeLog 2017-11-13 04:15:10.000000000 +1100
- @@ -5,6 +5,9 @@
- Several fixes related with security, and therefore not detailed here.
- C++ compiles now without warnings
- Added OSX and clang in travis
- +Added a travis-ci test matrix for many compilers and OS. Thanks to Thomas Weber (debian) for this great improvement.
- +testbed can now work with dynamic versions of library
- +Fixed wrong planar formatters regarding linestride interpretation
-
- -----------------------
- 2.8 Featured release
- diff -pruN lcms2-2.9.orig/src/cmshalf.c lcms2-2.9/src/cmshalf.c
- --- lcms2-2.9.orig/src/cmshalf.c 2017-11-01 02:36:47.000000000 +1100
- +++ lcms2-2.9/src/cmshalf.c 2017-11-13 04:15:10.000000000 +1100
- @@ -503,7 +503,7 @@ static cmsUInt8Number Shift[512] = {
- 0x18, 0x18, 0x18, 0x18, 0x0d
- };
-
- -cmsFloat32Number _cmsHalf2Float(cmsUInt16Number h)
- +cmsFloat32Number CMSEXPORT _cmsHalf2Float(cmsUInt16Number h)
- {
- union {
- cmsFloat32Number flt;
- @@ -516,7 +516,7 @@ cmsFloat32Number _cmsHalf2Float(cmsUInt1
- return out.flt;
- }
-
- -cmsUInt16Number _cmsFloat2Half(cmsFloat32Number flt)
- +cmsUInt16Number CMSEXPORT _cmsFloat2Half(cmsFloat32Number flt)
- {
- union {
- cmsFloat32Number flt;
- diff -pruN lcms2-2.9.orig/src/cmsintrp.c lcms2-2.9/src/cmsintrp.c
- --- lcms2-2.9.orig/src/cmsintrp.c 2017-11-01 02:36:47.000000000 +1100
- +++ lcms2-2.9/src/cmsintrp.c 2017-11-13 04:15:10.000000000 +1100
- @@ -158,8 +158,8 @@ cmsInterpParams* _cmsComputeInterpParams
-
-
- // This one is a wrapper on the anterior, but assuming all directions have same number of nodes
- -cmsInterpParams* _cmsComputeInterpParams(cmsContext ContextID, cmsUInt32Number nSamples,
- - cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags)
- +cmsInterpParams* CMSEXPORT _cmsComputeInterpParams(cmsContext ContextID, cmsUInt32Number nSamples,
- + cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags)
- {
- int i;
- cmsUInt32Number Samples[MAX_INPUT_DIMENSIONS];
- @@ -174,7 +174,7 @@ cmsInterpParams* _cmsComputeInterpParams
-
-
- // Free all associated memory
- -void _cmsFreeInterpParams(cmsInterpParams* p)
- +void CMSEXPORT _cmsFreeInterpParams(cmsInterpParams* p)
- {
- if (p != NULL) _cmsFree(p ->ContextID, p);
- }
- diff -pruN lcms2-2.9.orig/src/cmsio1.c lcms2-2.9/src/cmsio1.c
- --- lcms2-2.9.orig/src/cmsio1.c 2017-11-01 02:36:47.000000000 +1100
- +++ lcms2-2.9/src/cmsio1.c 2017-11-13 04:15:10.000000000 +1100
- @@ -307,7 +307,7 @@ Error:
- // Read and create a BRAND NEW MPE LUT from a given profile. All stuff dependent of version, etc
- // is adjusted here in order to create a LUT that takes care of all those details.
- // We add intent = 0xffffffff as a way to read matrix shaper always, no matter of other LUT
- -cmsPipeline* _cmsReadInputLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent)
- +cmsPipeline* CMSEXPORT _cmsReadInputLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent)
- {
- cmsTagTypeSignature OriginalType;
- cmsTagSignature tag16;
- @@ -582,7 +582,7 @@ Error:
- }
-
- // Create an output MPE LUT from agiven profile. Version mismatches are handled here
- -cmsPipeline* _cmsReadOutputLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent)
- +cmsPipeline* CMSEXPORT _cmsReadOutputLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent)
- {
- cmsTagTypeSignature OriginalType;
- cmsTagSignature tag16;
- @@ -705,7 +705,7 @@ Error:
-
- // This one includes abstract profiles as well. Matrix-shaper cannot be obtained on that device class. The
- // tag name here may default to AToB0
- -cmsPipeline* _cmsReadDevicelinkLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent)
- +cmsPipeline* CMSEXPORT _cmsReadDevicelinkLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent)
- {
- cmsPipeline* Lut;
- cmsTagTypeSignature OriginalType;
- diff -pruN lcms2-2.9.orig/src/cmslut.c lcms2-2.9/src/cmslut.c
- --- lcms2-2.9.orig/src/cmslut.c 2017-11-01 02:36:47.000000000 +1100
- +++ lcms2-2.9/src/cmslut.c 2017-11-13 04:15:10.000000000 +1100
- @@ -292,7 +292,7 @@ cmsStage* CMSEXPORT cmsStageAllocToneCur
-
-
- // Create a bunch of identity curves
- -cmsStage* _cmsStageAllocIdentityCurves(cmsContext ContextID, cmsUInt32Number nChannels)
- +cmsStage* CMSEXPORT _cmsStageAllocIdentityCurves(cmsContext ContextID, cmsUInt32Number nChannels)
- {
- cmsStage* mpe = cmsStageAllocToneCurves(ContextID, nChannels, NULL);
-
- @@ -712,7 +712,7 @@ int IdentitySampler(register const cmsUI
- }
-
- // Creates an MPE that just copies input to output
- -cmsStage* _cmsStageAllocIdentityCLut(cmsContext ContextID, cmsUInt32Number nChan)
- +cmsStage* CMSEXPORT _cmsStageAllocIdentityCLut(cmsContext ContextID, cmsUInt32Number nChan)
- {
- cmsUInt32Number Dimensions[MAX_INPUT_DIMENSIONS];
- cmsStage* mpe ;
- @@ -736,7 +736,7 @@ cmsStage* _cmsStageAllocIdentityCLut(cms
-
-
- // Quantize a value 0 <= i < MaxSamples to 0..0xffff
- -cmsUInt16Number _cmsQuantizeVal(cmsFloat64Number i, cmsUInt32Number MaxSamples)
- +cmsUInt16Number CMSEXPORT _cmsQuantizeVal(cmsFloat64Number i, cmsUInt32Number MaxSamples)
- {
- cmsFloat64Number x;
-
- @@ -969,7 +969,7 @@ void EvaluateLab2XYZ(const cmsFloat32Num
-
-
- // No dup or free routines needed, as the structure has no pointers in it.
- -cmsStage* _cmsStageAllocLab2XYZ(cmsContext ContextID)
- +cmsStage* CMSEXPORT _cmsStageAllocLab2XYZ(cmsContext ContextID)
- {
- return _cmsStageAllocPlaceholder(ContextID, cmsSigLab2XYZElemType, 3, 3, EvaluateLab2XYZ, NULL, NULL, NULL);
- }
- @@ -1020,7 +1020,7 @@ cmsStage* _cmsStageAllocLabV2ToV4curves(
- // ********************************************************************************
-
- // Matrix-based conversion, which is more accurate, but slower and cannot properly be saved in devicelink profiles
- -cmsStage* _cmsStageAllocLabV2ToV4(cmsContext ContextID)
- +cmsStage* CMSEXPORT _cmsStageAllocLabV2ToV4(cmsContext ContextID)
- {
- static const cmsFloat64Number V2ToV4[] = { 65535.0/65280.0, 0, 0,
- 0, 65535.0/65280.0, 0,
- @@ -1036,7 +1036,7 @@ cmsStage* _cmsStageAllocLabV2ToV4(cmsCon
-
-
- // Reverse direction
- -cmsStage* _cmsStageAllocLabV4ToV2(cmsContext ContextID)
- +cmsStage* CMSEXPORT _cmsStageAllocLabV4ToV2(cmsContext ContextID)
- {
- static const cmsFloat64Number V4ToV2[] = { 65280.0/65535.0, 0, 0,
- 0, 65280.0/65535.0, 0,
- @@ -1179,7 +1179,7 @@ void EvaluateXYZ2Lab(const cmsFloat32Num
- cmsUNUSED_PARAMETER(mpe);
- }
-
- -cmsStage* _cmsStageAllocXYZ2Lab(cmsContext ContextID)
- +cmsStage* CMSEXPORT _cmsStageAllocXYZ2Lab(cmsContext ContextID)
- {
- return _cmsStageAllocPlaceholder(ContextID, cmsSigXYZ2LabElemType, 3, 3, EvaluateXYZ2Lab, NULL, NULL, NULL);
-
- diff -pruN lcms2-2.9.orig/src/cmsnamed.c lcms2-2.9/src/cmsnamed.c
- --- lcms2-2.9.orig/src/cmsnamed.c 2017-11-01 02:36:47.000000000 +1100
- +++ lcms2-2.9/src/cmsnamed.c 2017-11-13 04:15:10.000000000 +1100
- @@ -730,7 +730,7 @@ void EvalNamedColor(const cmsFloat32Numb
-
-
- // Named color lookup element
- -cmsStage* _cmsStageAllocNamedColor(cmsNAMEDCOLORLIST* NamedColorList, cmsBool UsePCS)
- +cmsStage* CMSEXPORT _cmsStageAllocNamedColor(cmsNAMEDCOLORLIST* NamedColorList, cmsBool UsePCS)
- {
- return _cmsStageAllocPlaceholder(NamedColorList ->ContextID,
- cmsSigNamedColorElemType,
- diff -pruN lcms2-2.9.orig/src/cmspack.c lcms2-2.9/src/cmspack.c
- --- lcms2-2.9.orig/src/cmspack.c 2017-11-01 02:36:47.000000000 +1100
- +++ lcms2-2.9/src/cmspack.c 2017-11-13 04:15:10.000000000 +1100
- @@ -531,7 +531,7 @@ cmsUInt8Number* UnrollPlanarWords(regist
- cmsUInt8Number* Init = accum;
-
- if (DoSwap) {
- - accum += T_EXTRA(info -> InputFormat) * Stride * sizeof(cmsUInt16Number);
- + accum += T_EXTRA(info -> InputFormat) * Stride;
- }
-
- for (i=0; i < nChan; i++) {
- @@ -544,7 +544,7 @@ cmsUInt8Number* UnrollPlanarWords(regist
-
- wIn[index] = Reverse ? REVERSE_FLAVOR_16(v) : v;
-
- - accum += Stride * sizeof(cmsUInt16Number);
- + accum += Stride;
- }
-
- return (Init + sizeof(cmsUInt16Number));
- @@ -772,13 +772,18 @@ cmsUInt8Number* UnrollLabDoubleTo16(regi
- {
- if (T_PLANAR(info -> InputFormat)) {
-
- - cmsFloat64Number* Pt = (cmsFloat64Number*) accum;
- -
- cmsCIELab Lab;
- -
- - Lab.L = Pt[0];
- - Lab.a = Pt[Stride];
- - Lab.b = Pt[Stride*2];
- + cmsUInt8Number* pos_L;
- + cmsUInt8Number* pos_a;
- + cmsUInt8Number* pos_b;
- +
- + pos_L = accum;
- + pos_a = accum + Stride;
- + pos_b = accum + Stride * 2;
- +
- + Lab.L = *(cmsFloat64Number*) pos_L;
- + Lab.a = *(cmsFloat64Number*) pos_a;
- + Lab.b = *(cmsFloat64Number*) pos_b;
-
- cmsFloat2LabEncoded(wIn, &Lab);
- return accum + sizeof(cmsFloat64Number);
- @@ -803,12 +808,17 @@ cmsUInt8Number* UnrollLabFloatTo16(regis
-
- if (T_PLANAR(info -> InputFormat)) {
-
- - cmsFloat32Number* Pt = (cmsFloat32Number*) accum;
- -
- -
- - Lab.L = Pt[0];
- - Lab.a = Pt[Stride];
- - Lab.b = Pt[Stride*2];
- + cmsUInt8Number* pos_L;
- + cmsUInt8Number* pos_a;
- + cmsUInt8Number* pos_b;
- +
- + pos_L = accum;
- + pos_a = accum + Stride;
- + pos_b = accum + Stride * 2;
- +
- + Lab.L = *(cmsFloat32Number*)pos_L;
- + Lab.a = *(cmsFloat32Number*)pos_a;
- + Lab.b = *(cmsFloat32Number*)pos_b;
-
- cmsFloat2LabEncoded(wIn, &Lab);
- return accum + sizeof(cmsFloat32Number);
- @@ -834,12 +844,19 @@ cmsUInt8Number* UnrollXYZDoubleTo16(regi
- {
- if (T_PLANAR(info -> InputFormat)) {
-
- - cmsFloat64Number* Pt = (cmsFloat64Number*) accum;
- cmsCIEXYZ XYZ;
- + cmsUInt8Number* pos_X;
- + cmsUInt8Number* pos_Y;
- + cmsUInt8Number* pos_Z;
- +
- + pos_X = accum;
- + pos_Y = accum + Stride;
- + pos_Z = accum + Stride * 2;
- +
- + XYZ.X = *(cmsFloat64Number*)pos_X;
- + XYZ.Y = *(cmsFloat64Number*)pos_Y;
- + XYZ.Z = *(cmsFloat64Number*)pos_Z;
-
- - XYZ.X = Pt[0];
- - XYZ.Y = Pt[Stride];
- - XYZ.Z = Pt[Stride*2];
- cmsFloat2XYZEncoded(wIn, &XYZ);
-
- return accum + sizeof(cmsFloat64Number);
- @@ -863,12 +880,19 @@ cmsUInt8Number* UnrollXYZFloatTo16(regis
- {
- if (T_PLANAR(info -> InputFormat)) {
-
- - cmsFloat32Number* Pt = (cmsFloat32Number*) accum;
- cmsCIEXYZ XYZ;
- + cmsUInt8Number* pos_X;
- + cmsUInt8Number* pos_Y;
- + cmsUInt8Number* pos_Z;
- +
- + pos_X = accum;
- + pos_Y = accum + Stride;
- + pos_Z = accum + Stride * 2;
- +
- + XYZ.X = *(cmsFloat32Number*)pos_X;
- + XYZ.Y = *(cmsFloat32Number*)pos_Y;
- + XYZ.Z = *(cmsFloat32Number*)pos_Z;
-
- - XYZ.X = Pt[0];
- - XYZ.Y = Pt[Stride];
- - XYZ.Z = Pt[Stride*2];
- cmsFloat2XYZEncoded(wIn, &XYZ);
-
- return accum + sizeof(cmsFloat32Number);
- @@ -913,6 +937,20 @@ cmsINLINE cmsBool IsInkSpace(cmsUInt32Nu
- }
- }
-
- +// Return the size in bytes of a given formatter
- +static
- +cmsUInt32Number PixelSize(cmsUInt32Number Format)
- +{
- + cmsUInt32Number fmt_bytes = T_BYTES(Format);
- +
- + // For double, the T_BYTES field is zero
- + if (fmt_bytes == 0)
- + return sizeof(cmsUInt64Number);
- +
- + // Otherwise, it is already correct for all formats
- + return fmt_bytes;
- +}
- +
- // Inks does come in percentage, remaining cases are between 0..1.0, again to 16 bits
- static
- cmsUInt8Number* UnrollDoubleTo16(register _cmsTRANSFORM* info,
- @@ -934,6 +972,8 @@ cmsUInt8Number* UnrollDoubleTo16(registe
- cmsFloat64Number maximum = IsInkSpace(info ->InputFormat) ? 655.35 : 65535.0;
-
-
- + Stride /= PixelSize(info->InputFormat);
- +
- if (ExtraFirst)
- start = Extra;
-
- @@ -989,6 +1029,7 @@ cmsUInt8Number* UnrollFloatTo16(register
- cmsUInt32Number i, start = 0;
- cmsFloat64Number maximum = IsInkSpace(info ->InputFormat) ? 655.35 : 65535.0;
-
- + Stride /= PixelSize(info->InputFormat);
-
- if (ExtraFirst)
- start = Extra;
- @@ -1065,6 +1106,7 @@ cmsUInt8Number* UnrollFloatsToFloat(_cms
- cmsUInt32Number i, start = 0;
- cmsFloat32Number maximum = IsInkSpace(info ->InputFormat) ? 100.0F : 1.0F;
-
- + Stride /= PixelSize(info->InputFormat);
-
- if (ExtraFirst)
- start = Extra;
- @@ -1117,6 +1159,7 @@ cmsUInt8Number* UnrollDoublesToFloat(_cm
- cmsUInt32Number i, start = 0;
- cmsFloat64Number maximum = IsInkSpace(info ->InputFormat) ? 100.0 : 1.0;
-
- + Stride /= PixelSize(info->InputFormat);
-
- if (ExtraFirst)
- start = Extra;
- @@ -1162,7 +1205,9 @@ cmsUInt8Number* UnrollLabDoubleToFloat(_
-
- if (T_PLANAR(info -> InputFormat)) {
-
- - wIn[0] = (cmsFloat32Number) (Pt[0] / 100.0); // from 0..100 to 0..1
- + Stride /= PixelSize(info->InputFormat);
- +
- + wIn[0] = (cmsFloat32Number) (Pt[0] / 100.0); // from 0..100 to 0..1
- wIn[1] = (cmsFloat32Number) ((Pt[Stride] + 128) / 255.0); // form -128..+127 to 0..1
- wIn[2] = (cmsFloat32Number) ((Pt[Stride*2] + 128) / 255.0);
-
- @@ -1190,6 +1235,8 @@ cmsUInt8Number* UnrollLabFloatToFloat(_c
-
- if (T_PLANAR(info -> InputFormat)) {
-
- + Stride /= PixelSize(info->InputFormat);
- +
- wIn[0] = (cmsFloat32Number) (Pt[0] / 100.0); // from 0..100 to 0..1
- wIn[1] = (cmsFloat32Number) ((Pt[Stride] + 128) / 255.0); // form -128..+127 to 0..1
- wIn[2] = (cmsFloat32Number) ((Pt[Stride*2] + 128) / 255.0);
- @@ -1220,6 +1267,8 @@ cmsUInt8Number* UnrollXYZDoubleToFloat(_
-
- if (T_PLANAR(info -> InputFormat)) {
-
- + Stride /= PixelSize(info->InputFormat);
- +
- wIn[0] = (cmsFloat32Number) (Pt[0] / MAX_ENCODEABLE_XYZ);
- wIn[1] = (cmsFloat32Number) (Pt[Stride] / MAX_ENCODEABLE_XYZ);
- wIn[2] = (cmsFloat32Number) (Pt[Stride*2] / MAX_ENCODEABLE_XYZ);
- @@ -1247,6 +1296,8 @@ cmsUInt8Number* UnrollXYZFloatToFloat(_c
-
- if (T_PLANAR(info -> InputFormat)) {
-
- + Stride /= PixelSize(info->InputFormat);
- +
- wIn[0] = (cmsFloat32Number) (Pt[0] / MAX_ENCODEABLE_XYZ);
- wIn[1] = (cmsFloat32Number) (Pt[Stride] / MAX_ENCODEABLE_XYZ);
- wIn[2] = (cmsFloat32Number) (Pt[Stride*2] / MAX_ENCODEABLE_XYZ);
- @@ -1429,7 +1480,7 @@ cmsUInt8Number* PackPlanarWords(register
- cmsUInt16Number v;
-
- if (DoSwap) {
- - output += T_EXTRA(info -> OutputFormat) * Stride * sizeof(cmsUInt16Number);
- + output += T_EXTRA(info -> OutputFormat) * Stride;
- }
-
- for (i=0; i < nChan; i++) {
- @@ -1445,7 +1496,7 @@ cmsUInt8Number* PackPlanarWords(register
- v = REVERSE_FLAVOR_16(v);
-
- *(cmsUInt16Number*) output = v;
- - output += (Stride * sizeof(cmsUInt16Number));
- + output += Stride;
- }
-
- return (Init + sizeof(cmsUInt16Number));
- @@ -2297,6 +2348,8 @@ cmsUInt8Number* PackLabFloatFrom16(regis
-
- cmsFloat32Number* Out = (cmsFloat32Number*) output;
-
- + Stride /= PixelSize(info->OutputFormat);
- +
- Out[0] = (cmsFloat32Number)Lab.L;
- Out[Stride] = (cmsFloat32Number)Lab.a;
- Out[Stride*2] = (cmsFloat32Number)Lab.b;
- @@ -2325,6 +2378,8 @@ cmsUInt8Number* PackXYZDoubleFrom16(regi
- cmsFloat64Number* Out = (cmsFloat64Number*) output;
- cmsXYZEncoded2Float(&XYZ, wOut);
-
- + Stride /= PixelSize(Info->OutputFormat);
- +
- Out[0] = XYZ.X;
- Out[Stride] = XYZ.Y;
- Out[Stride*2] = XYZ.Z;
- @@ -2352,6 +2407,8 @@ cmsUInt8Number* PackXYZFloatFrom16(regis
- cmsFloat32Number* Out = (cmsFloat32Number*) output;
- cmsXYZEncoded2Float(&XYZ, wOut);
-
- + Stride /= PixelSize(Info->OutputFormat);
- +
- Out[0] = (cmsFloat32Number) XYZ.X;
- Out[Stride] = (cmsFloat32Number) XYZ.Y;
- Out[Stride*2] = (cmsFloat32Number) XYZ.Z;
- @@ -2391,6 +2448,8 @@ cmsUInt8Number* PackDoubleFrom16(registe
- cmsFloat64Number* swap1 = (cmsFloat64Number*) output;
- cmsUInt32Number i, start = 0;
-
- + Stride /= PixelSize(info->OutputFormat);
- +
- if (ExtraFirst)
- start = Extra;
-
- @@ -2442,6 +2501,8 @@ cmsUInt8Number* PackFloatFrom16(register
- cmsFloat32Number* swap1 = (cmsFloat32Number*)output;
- cmsUInt32Number i, start = 0;
-
- + Stride /= PixelSize(info->OutputFormat);
- +
- if (ExtraFirst)
- start = Extra;
-
- @@ -2495,6 +2556,8 @@ cmsUInt8Number* PackFloatsFromFloat(_cms
- cmsFloat64Number v = 0;
- cmsUInt32Number i, start = 0;
-
- + Stride /= PixelSize(info->OutputFormat);
- +
- if (ExtraFirst)
- start = Extra;
-
- @@ -2544,6 +2607,8 @@ cmsUInt8Number* PackDoublesFromFloat(_cm
- cmsFloat64Number* swap1 = (cmsFloat64Number*)output;
- cmsUInt32Number i, start = 0;
-
- + Stride /= PixelSize(info->OutputFormat);
- +
- if (ExtraFirst)
- start = Extra;
-
- @@ -2590,6 +2655,8 @@ cmsUInt8Number* PackLabFloatFromFloat(_c
-
- if (T_PLANAR(Info -> OutputFormat)) {
-
- + Stride /= PixelSize(Info->OutputFormat);
- +
- Out[0] = (cmsFloat32Number) (wOut[0] * 100.0);
- Out[Stride] = (cmsFloat32Number) (wOut[1] * 255.0 - 128.0);
- Out[Stride*2] = (cmsFloat32Number) (wOut[2] * 255.0 - 128.0);
- @@ -2618,6 +2685,8 @@ cmsUInt8Number* PackLabDoubleFromFloat(_
-
- if (T_PLANAR(Info -> OutputFormat)) {
-
- + Stride /= PixelSize(Info->OutputFormat);
- +
- Out[0] = (cmsFloat64Number) (wOut[0] * 100.0);
- Out[Stride] = (cmsFloat64Number) (wOut[1] * 255.0 - 128.0);
- Out[Stride*2] = (cmsFloat64Number) (wOut[2] * 255.0 - 128.0);
- @@ -2647,6 +2716,8 @@ cmsUInt8Number* PackXYZFloatFromFloat(_c
-
- if (T_PLANAR(Info -> OutputFormat)) {
-
- + Stride /= PixelSize(Info->OutputFormat);
- +
- Out[0] = (cmsFloat32Number) (wOut[0] * MAX_ENCODEABLE_XYZ);
- Out[Stride] = (cmsFloat32Number) (wOut[1] * MAX_ENCODEABLE_XYZ);
- Out[Stride*2] = (cmsFloat32Number) (wOut[2] * MAX_ENCODEABLE_XYZ);
- @@ -2675,6 +2746,8 @@ cmsUInt8Number* PackXYZDoubleFromFloat(_
-
- if (T_PLANAR(Info -> OutputFormat)) {
-
- + Stride /= PixelSize(Info->OutputFormat);
- +
- Out[0] = (cmsFloat64Number) (wOut[0] * MAX_ENCODEABLE_XYZ);
- Out[Stride] = (cmsFloat64Number) (wOut[1] * MAX_ENCODEABLE_XYZ);
- Out[Stride*2] = (cmsFloat64Number) (wOut[2] * MAX_ENCODEABLE_XYZ);
- @@ -2718,6 +2791,8 @@ cmsUInt8Number* UnrollHalfTo16(register
- cmsFloat32Number maximum = IsInkSpace(info ->InputFormat) ? 655.35F : 65535.0F;
-
-
- + Stride /= PixelSize(info->OutputFormat);
- +
- if (ExtraFirst)
- start = Extra;
-
- @@ -2769,6 +2844,7 @@ cmsUInt8Number* UnrollHalfToFloat(_cmsTR
- cmsUInt32Number i, start = 0;
- cmsFloat32Number maximum = IsInkSpace(info ->InputFormat) ? 100.0F : 1.0F;
-
- + Stride /= PixelSize(info->OutputFormat);
-
- if (ExtraFirst)
- start = Extra;
- @@ -2820,6 +2896,8 @@ cmsUInt8Number* PackHalfFrom16(register
- cmsUInt16Number* swap1 = (cmsUInt16Number*)output;
- cmsUInt32Number i, start = 0;
-
- + Stride /= PixelSize(info->OutputFormat);
- +
- if (ExtraFirst)
- start = Extra;
-
- @@ -2871,6 +2949,8 @@ cmsUInt8Number* PackHalfFromFloat(_cmsTR
- cmsFloat32Number v = 0;
- cmsUInt32Number i, start = 0;
-
- + Stride /= PixelSize(info->OutputFormat);
- +
- if (ExtraFirst)
- start = Extra;
-
- @@ -3288,10 +3368,10 @@ cmsBool _cmsRegisterFormattersPlugin(cm
- return TRUE;
- }
-
- -cmsFormatter _cmsGetFormatter(cmsContext ContextID,
- - cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8
- - cmsFormatterDirection Dir,
- - cmsUInt32Number dwFlags)
- +cmsFormatter CMSEXPORT _cmsGetFormatter(cmsContext ContextID,
- + cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8
- + cmsFormatterDirection Dir,
- + cmsUInt32Number dwFlags)
- {
- _cmsFormattersPluginChunkType* ctx = ( _cmsFormattersPluginChunkType*) _cmsContextGetClientChunk(ContextID, FormattersPlugin);
- cmsFormattersFactoryList* f;
- diff -pruN lcms2-2.9.orig/src/lcms2_internal.h lcms2-2.9/src/lcms2_internal.h
- --- lcms2-2.9.orig/src/lcms2_internal.h 2017-11-01 02:36:47.000000000 +1100
- +++ lcms2-2.9/src/lcms2_internal.h 2017-11-13 04:15:10.000000000 +1100
- @@ -180,13 +180,14 @@ cmsINLINE cmsUInt16Number _cmsQuickSatur
- return _cmsQuickFloorWord(d);
- }
-
- +// Test bed entry points---------------------------------------------------------------
- +#define CMSCHECKPOINT CMSAPI
-
- // Pthread support --------------------------------------------------------------------
- #ifndef CMS_NO_PTHREADS
-
- // This is the threading support. Unfortunately, it has to be platform-dependent because
- // windows does not support pthreads.
- -
- #ifdef CMS_IS_WINDOWS_
-
- #define WIN32_LEAN_AND_MEAN 1
- @@ -823,10 +824,10 @@ void _cmsTagSignature2St
-
- // Interpolation ---------------------------------------------------------------------------------------------------------
-
- -cmsInterpParams* _cmsComputeInterpParams(cmsContext ContextID, cmsUInt32Number nSamples, cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags);
- -cmsInterpParams* _cmsComputeInterpParamsEx(cmsContext ContextID, const cmsUInt32Number nSamples[], cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags);
- -void _cmsFreeInterpParams(cmsInterpParams* p);
- -cmsBool _cmsSetInterpolationRoutine(cmsContext ContextID, cmsInterpParams* p);
- +CMSCHECKPOINT cmsInterpParams* CMSEXPORT _cmsComputeInterpParams(cmsContext ContextID, cmsUInt32Number nSamples, cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags);
- +cmsInterpParams* _cmsComputeInterpParamsEx(cmsContext ContextID, const cmsUInt32Number nSamples[], cmsUInt32Number InputChan, cmsUInt32Number OutputChan, const void* Table, cmsUInt32Number dwFlags);
- +CMSCHECKPOINT void CMSEXPORT _cmsFreeInterpParams(cmsInterpParams* p);
- +cmsBool _cmsSetInterpolationRoutine(cmsContext ContextID, cmsInterpParams* p);
-
- // Curves ----------------------------------------------------------------------------------------------------------------
-
- @@ -876,20 +877,20 @@ struct _cmsStage_struct {
-
-
- // Special Stages (cannot be saved)
- -cmsStage* _cmsStageAllocLab2XYZ(cmsContext ContextID);
- -cmsStage* _cmsStageAllocXYZ2Lab(cmsContext ContextID);
- -cmsStage* _cmsStageAllocLabPrelin(cmsContext ContextID);
- -cmsStage* _cmsStageAllocLabV2ToV4(cmsContext ContextID);
- -cmsStage* _cmsStageAllocLabV2ToV4curves(cmsContext ContextID);
- -cmsStage* _cmsStageAllocLabV4ToV2(cmsContext ContextID);
- -cmsStage* _cmsStageAllocNamedColor(cmsNAMEDCOLORLIST* NamedColorList, cmsBool UsePCS);
- -cmsStage* _cmsStageAllocIdentityCurves(cmsContext ContextID, cmsUInt32Number nChannels);
- -cmsStage* _cmsStageAllocIdentityCLut(cmsContext ContextID, cmsUInt32Number nChan);
- -cmsStage* _cmsStageNormalizeFromLabFloat(cmsContext ContextID);
- -cmsStage* _cmsStageNormalizeFromXyzFloat(cmsContext ContextID);
- -cmsStage* _cmsStageNormalizeToLabFloat(cmsContext ContextID);
- -cmsStage* _cmsStageNormalizeToXyzFloat(cmsContext ContextID);
- -cmsStage* _cmsStageClipNegatives(cmsContext ContextID, cmsUInt32Number nChannels);
- +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocLab2XYZ(cmsContext ContextID);
- +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocXYZ2Lab(cmsContext ContextID);
- +cmsStage* _cmsStageAllocLabPrelin(cmsContext ContextID);
- +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocLabV2ToV4(cmsContext ContextID);
- +cmsStage* _cmsStageAllocLabV2ToV4curves(cmsContext ContextID);
- +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocLabV4ToV2(cmsContext ContextID);
- +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocNamedColor(cmsNAMEDCOLORLIST* NamedColorList, cmsBool UsePCS);
- +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocIdentityCurves(cmsContext ContextID, cmsUInt32Number nChannels);
- +CMSCHECKPOINT cmsStage* CMSEXPORT _cmsStageAllocIdentityCLut(cmsContext ContextID, cmsUInt32Number nChan);
- +cmsStage* _cmsStageNormalizeFromLabFloat(cmsContext ContextID);
- +cmsStage* _cmsStageNormalizeFromXyzFloat(cmsContext ContextID);
- +cmsStage* _cmsStageNormalizeToLabFloat(cmsContext ContextID);
- +cmsStage* _cmsStageNormalizeToXyzFloat(cmsContext ContextID);
- +cmsStage* _cmsStageClipNegatives(cmsContext ContextID, cmsUInt32Number nChannels);
-
-
- // For curve set only
- @@ -924,9 +925,9 @@ struct _cmsPipeline_struct {
- // Read tags using low-level function, provide necessary glue code to adapt versions, etc. All those return a brand new copy
- // of the LUTS, since ownership of original is up to the profile. The user should free allocated resources.
-
- -cmsPipeline* _cmsReadInputLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent);
- -cmsPipeline* _cmsReadOutputLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent);
- -cmsPipeline* _cmsReadDevicelinkLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent);
- +CMSCHECKPOINT cmsPipeline* CMSEXPORT _cmsReadInputLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent);
- +CMSCHECKPOINT cmsPipeline* CMSEXPORT _cmsReadOutputLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent);
- +CMSCHECKPOINT cmsPipeline* CMSEXPORT _cmsReadDevicelinkLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent);
-
- // Special values
- cmsBool _cmsReadMediaWhitePoint(cmsCIEXYZ* Dest, cmsHPROFILE hProfile);
- @@ -951,7 +952,8 @@ cmsSEQ* _cmsCompileProfileSequence(cmsCo
-
- // LUT optimization ------------------------------------------------------------------------------------------------
-
- -cmsUInt16Number _cmsQuantizeVal(cmsFloat64Number i, cmsUInt32Number MaxSamples);
- +CMSCHECKPOINT cmsUInt16Number CMSEXPORT _cmsQuantizeVal(cmsFloat64Number i, cmsUInt32Number MaxSamples);
- +
- cmsUInt32Number _cmsReasonableGridpointsByColorspace(cmsColorSpaceSignature Colorspace, cmsUInt32Number dwFlags);
-
- cmsBool _cmsEndPointsBySpace(cmsColorSpaceSignature Space,
- @@ -985,17 +987,17 @@ cmsPipeline* _cmsCreateGamutCheckPip
- cmsBool _cmsFormatterIsFloat(cmsUInt32Number Type);
- cmsBool _cmsFormatterIs8bit(cmsUInt32Number Type);
-
- -cmsFormatter _cmsGetFormatter(cmsContext ContextID,
- - cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8
- - cmsFormatterDirection Dir,
- - cmsUInt32Number dwFlags);
- +CMSCHECKPOINT cmsFormatter CMSEXPORT _cmsGetFormatter(cmsContext ContextID,
- + cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8
- + cmsFormatterDirection Dir,
- + cmsUInt32Number dwFlags);
-
-
- #ifndef CMS_NO_HALF_SUPPORT
-
- // Half float
- -cmsFloat32Number _cmsHalf2Float(cmsUInt16Number h);
- -cmsUInt16Number _cmsFloat2Half(cmsFloat32Number flt);
- +CMSCHECKPOINT cmsFloat32Number CMSEXPORT _cmsHalf2Float(cmsUInt16Number h);
- +CMSCHECKPOINT cmsUInt16Number CMSEXPORT _cmsFloat2Half(cmsFloat32Number flt);
-
- #endif
-
- diff -pruN lcms2-2.9.orig/testbed/testcms2.c lcms2-2.9/testbed/testcms2.c
- --- lcms2-2.9.orig/testbed/testcms2.c 2017-11-01 02:36:47.000000000 +1100
- +++ lcms2-2.9/testbed/testcms2.c 2017-11-13 04:15:10.000000000 +1100
- @@ -3813,9 +3813,9 @@ void CheckSingleFormatter16(cmsContext i
- Values[i] <<= 8;
- }
-
- - b.Fmt16(&info, Values, Buffer, 1);
- + b.Fmt16(&info, Values, Buffer, 2);
- memset(Values, 0, sizeof(Values));
- - f.Fmt16(&info, Values, Buffer, 1);
- + f.Fmt16(&info, Values, Buffer, 2);
-
- for (i=0; i < nChannels; i++) {
- if (bytes == 1)
-