summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarti Maria <info@littlecms.com>2013-04-17 17:01:53 +0200
committerMarti Maria <info@littlecms.com>2013-04-17 17:01:53 +0200
commit5bf9e4362408564e59f194943cc62679290fb930 (patch)
treed7bc9f96d48bd399cc2d35fe7f74617b986fd913
parent0dbe14ad7c2427d3382e4b4fd95825191fa02868 (diff)
downloadlcms2-5bf9e4362408564e59f194943cc62679290fb930.tar.gz
Some fixes on V2 LUT
-rw-r--r--ChangeLog2
-rw-r--r--src/cmstypes.c19
-rw-r--r--src/cmsvirt.c1
-rw-r--r--src/lcms2.def4
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