Closed DominikDeak closed 1 month ago
I was thinking the diagnostic is clear.. ok, it happens that only certain types (those already used by ICC spec) are implemented by default. Others are not.
Those are already defined:
cmsSigChromaticityType,
cmsSigColorantOrderType,
cmsSigS15Fixed16ArrayType,
cmsSigU16Fixed16ArrayType,
cmsSigTextType,
cmsSigTextDescriptionType,
cmsSigCurveType,
cmsSigParametricCurveType,
cmsSigDateTimeType,
cmsSigLut8Type,
cmsSigLut16Type,
cmsSigColorantTableType,
cmsSigNamedColor2Type,
cmsSigMultiLocalizedUnicodeType,
cmsSigProfileSequenceDescType,
cmsSigSignatureType,
cmsSigMeasurementType,
cmsSigDataType,
cmsSigLutAtoBType,
cmsSigLutBtoAType,
cmsSigUcrBgType,
cmsSigCrdInfoType,
cmsSigMultiProcessElementType,
cmsSigScreeningType,
cmsSigViewingConditionsType,
cmsSigXYZType,
cmsCorbisBrokenXYZtype,
cmsMonacoBrokenCurveType,
cmsSigProfileSequenceIdType,
cmsSigDictType,
cmsSigcicpType,
cmsSigVcgtType,
cmsSigMHC2Type,
The type you are trying to use is not used by any tag in the ICC spec, so I didn't add it as built-in. You can implement it by using the type plug-in or re-use any other, like cmsSigU16Fixed16ArrayType, for example.
it happens that only certain types (those already used by ICC spec) are implemented by default. Others are not.
I see, that makes more sense, thanks for clarifying. I was under the assumption that LCMS implemented all the ICC tag types internally. I can certainly work around the issue by specifying a custom tag type and then implementing read/write plugin for that.
I'm not sure how you feel about this, but perhaps listing the default implemented tag types in the Plug-in API documentation might be valuable reference for others like me in the future.
FYI, in 059ebcfb3a7feca2c92bd800677ccb898ab25895 I have added handles for those types that, despite described in ICC spec, are not used by any tag. That would completely solve the issue.
Fantastic! Thank you so much for implementing this.
I am experimenting around with embedding private tags into an ICC profile. Let's say this private tag has a
cmsTagSignature
named'test'
, and I want to storecmsSigUInt32ArrayType
for that tag. I want to store only 1 item in that array.I have been following the example provided in the plugin documentation on page 8. Instead of registering
cmsPluginTag
usingcmsSigLut16Type
, as shown in the example, I'd like to usecmsSigUInt32ArrayType
as an alternative. HowevercmsPluginTHR
reports an error when adding my custom Tag plugin. The error handler emits the message "Unsupported type 'ui32' for tag 'test' (error code: 8)". See sample code below.I feel like I'm doing something wrong here, perhaps I'm missing a detail that is required for handling
cmsSigUInt32ArrayType
data types?Sample Code