From 5bf9e4362408564e59f194943cc62679290fb930 Mon Sep 17 00:00:00 2001 From: Marti Maria Date: Wed, 17 Apr 2013 17:01:53 +0200 Subject: Some fixes on V2 LUT --- ChangeLog | 2 ++ src/cmstypes.c | 19 ++++++++++++++++--- src/cmsvirt.c | 1 + src/lcms2.def | 4 ++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 96e20f4..b3eff33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -101,3 +101,5 @@ Several minor issues found by cppcheck Fixed devicelink generation for 8 bits Added a reference for Mac MLU tag Added a way to read the profile creator from header +Added identity curves support for write V2 LUT + diff --git a/src/cmstypes.c b/src/cmstypes.c index 81c868d..d42b247 100644 --- a/src/cmstypes.c +++ b/src/cmstypes.c @@ -2137,7 +2137,7 @@ cmsBool Type_LUT16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io _cmsStageToneCurvesData* PreMPE = NULL, *PostMPE = NULL; _cmsStageMatrixData* MatMPE = NULL; _cmsStageCLutData* clut = NULL; - int InputChannels, OutputChannels, clutPoints; + int i, InputChannels, OutputChannels, clutPoints; // Disassemble the LUT into components. mpe = NewLUT -> Elements; @@ -2212,13 +2212,13 @@ cmsBool Type_LUT16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io if (PreMPE != NULL) { if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) PreMPE ->TheCurves[0]->nEntries)) return FALSE; } else { - if (!_cmsWriteUInt16Number(io, 0)) return FALSE; + if (!_cmsWriteUInt16Number(io, 2)) return FALSE; } if (PostMPE != NULL) { if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) PostMPE ->TheCurves[0]->nEntries)) return FALSE; } else { - if (!_cmsWriteUInt16Number(io, 0)) return FALSE; + if (!_cmsWriteUInt16Number(io, 2)) return FALSE; } @@ -2227,6 +2227,13 @@ cmsBool Type_LUT16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io if (PreMPE != NULL) { if (!Write16bitTables(self ->ContextID, io, PreMPE)) return FALSE; } + else { + for (i=0; i < InputChannels; i++) { + + if (!_cmsWriteUInt16Number(io, 0)) return FALSE; + if (!_cmsWriteUInt16Number(io, 0xffff)) return FALSE; + } + } nTabSize = uipow(OutputChannels, clutPoints, InputChannels); if (nTabSize == (cmsUInt32Number) -1) return FALSE; @@ -2241,7 +2248,13 @@ cmsBool Type_LUT16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io if (PostMPE != NULL) { if (!Write16bitTables(self ->ContextID, io, PostMPE)) return FALSE; } + else { + for (i=0; i < OutputChannels; i++) { + if (!_cmsWriteUInt16Number(io, 0)) return FALSE; + if (!_cmsWriteUInt16Number(io, 0xffff)) return FALSE; + } + } return TRUE; diff --git a/src/cmsvirt.c b/src/cmsvirt.c index 6b7f079..5c052c0 100644 --- a/src/cmsvirt.c +++ b/src/cmsvirt.c @@ -987,6 +987,7 @@ static const cmsAllowedLUT AllowedLUTTypes[] = { { FALSE, 0, cmsSigLut16Type, 4, { cmsSigMatrixElemType, cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType}}, { FALSE, 0, cmsSigLut16Type, 3, { cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType}}, + { FALSE, 0, cmsSigLut16Type, 2, { cmsSigCurveSetElemType, cmsSigCLutElemType}}, { TRUE , 0, cmsSigLutAtoBType, 1, { cmsSigCurveSetElemType }}, { TRUE , cmsSigAToB0Tag, cmsSigLutAtoBType, 3, { cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType } }, { TRUE , cmsSigAToB0Tag, cmsSigLutAtoBType, 3, { cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType } }, diff --git a/src/lcms2.def b/src/lcms2.def index f882b57..d6a5de7 100644 --- a/src/lcms2.def +++ b/src/lcms2.def @@ -319,3 +319,7 @@ _cmsSetTransformUserData = _cmsSetTransformUserData _cmsGetTransformFormatters16 = _cmsGetTransformFormatters16 _cmsGetTransformFormattersFloat = _cmsGetTransformFormattersFloat cmsGetHeaderCreator = cmsGetHeaderCreator +cmsPluginTHR = cmsPluginTHR +cmsGetPipelineContextID = cmsGetPipelineContextID +cmsGetTransformInputFormat = cmsGetTransformInputFormat +cmsGetTransformOutputFormat = cmsGetTransformOutputFormat -- cgit v1.2.1