IccMAX 2.1.27
Color Profile Tools
Loading...
Searching...
No Matches
CIccMBB Class Reference

#include <IccTagLut.h>

+ Inheritance diagram for CIccMBB:
+ Collaboration diagram for CIccMBB:

Public Member Functions

 CIccMBB ()
 
 CIccMBB (const CIccMBB &IMBB)
 
virtual ~CIccMBB ()
 
void Cleanup ()
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 
virtual void DetachIO ()
 
virtual const icCharGetClassName () const
 
CIccCLUTGetCLUT () const
 
icColorSpaceSignature GetCsInput ()
 
icColorSpaceSignature GetCsOutput ()
 
LPIccCurveGetCurvesA () const
 
LPIccCurveGetCurvesB () const
 
LPIccCurveGetCurvesM () const
 
virtual IIccExtensionTagGetExtension ()
 
CIccMatrixGetMatrix () const
 
virtual icUInt8Number GetPrecision ()
 
virtual icArraySignature GetTagArrayType () const
 
virtual icStructSignature GetTagStructType () const
 
virtual icTagTypeSignature GetType () const
 
void Init (icUInt8Number nInputChannels, icUInt8Number nOutputChannels)
 
icUInt8Number InputChannels () const
 
virtual bool IsArrayType ()
 
bool IsInputB ()
 
virtual bool IsInputMatrix ()
 
virtual bool IsMBBType ()
 
virtual bool IsNumArrayType () const
 
virtual bool IsSupported ()
 
CIccCLUTNewCLUT (icUInt8Number *pGridPoints, icUInt8Number nPrecision=2)
 
CIccCLUTNewCLUT (icUInt8Number nGridPoints, icUInt8Number nPrecision=2)
 
virtual CIccTagNewCopy () const
 
LPIccCurveNewCurvesA ()
 
LPIccCurveNewCurvesB ()
 
LPIccCurveNewCurvesM ()
 
CIccMatrixNewMatrix ()
 
CIccMBBoperator= (const CIccMBB &IMBB)
 
icUInt8Number OutputChannels () const
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO, CIccProfile *pProfile)
 
virtual bool ReadAll ()
 
CIccCLUTSetCLUT (CIccCLUT *clut)
 
virtual void SetColorSpaces (icColorSpaceSignature csInput, icColorSpaceSignature csOutput)
 
bool SwapMBCurves ()
 
virtual bool UseLegacyPCS () const
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL)
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
 
virtual bool Write (CIccIO *pIO)
 

Static Public Member Functions

static CIccTagCreate (icTagTypeSignature sig)
 

Data Fields

icUInt32Number m_nReserved
 

Protected Attributes

bool m_bInputMatrix
 
bool m_bUseMCurvesAsBCurves
 
CIccCLUTm_CLUT
 
icColorSpaceSignature m_csInput
 
icColorSpaceSignature m_csOutput
 
LPIccCurvem_CurvesA
 
LPIccCurvem_CurvesB
 
LPIccCurvem_CurvesM
 
CIccMatrixm_Matrix
 
icUInt8Number m_nInput
 
icUInt8Number m_nOutput
 

Detailed Description

Class: CIccMBB

Purpose: The Multi-dimensional Black Box (MBB) base class for lut8, lut16, lutA2B and lutB2A tag types

Constructor & Destructor Documentation

◆ CIccMBB() [1/2]

CIccMBB::CIccMBB ( )

Name: CIccMBB::CIccMBB

Purpose: Constructor

3139{
3140 m_nInput = 0;
3141 m_nOutput = 0;
3142
3143 m_CurvesA = NULL;
3144 m_CLUT = NULL;
3145 m_Matrix = NULL;
3146 m_CurvesM = NULL;
3147 m_CurvesB = NULL;
3148
3151
3152 m_bInputMatrix = true;
3153 m_bUseMCurvesAsBCurves = false;
3154}
#define icSigUnknownData
Definition icProfileHeader.h:903
bool m_bInputMatrix
Definition IccTagLut.h:477
LPIccCurve * m_CurvesB
Definition IccTagLut.h:490
CIccCLUT * m_CLUT
Definition IccTagLut.h:487
LPIccCurve * m_CurvesM
Definition IccTagLut.h:489
icUInt8Number m_nOutput
Definition IccTagLut.h:481
LPIccCurve * m_CurvesA
Definition IccTagLut.h:486
icUInt8Number m_nInput
Definition IccTagLut.h:480
icColorSpaceSignature m_csOutput
Definition IccTagLut.h:484
bool m_bUseMCurvesAsBCurves
Definition IccTagLut.h:478
icColorSpaceSignature m_csInput
Definition IccTagLut.h:483
CIccMatrix * m_Matrix
Definition IccTagLut.h:488

References m_bInputMatrix, m_bUseMCurvesAsBCurves, m_CLUT, m_csInput, m_csOutput, m_CurvesA, m_CurvesB, m_CurvesM, m_Matrix, m_nInput, and m_nOutput.

◆ CIccMBB() [2/2]

CIccMBB::CIccMBB ( const CIccMBB IMBB)

Name: CIccMBB::CIccMBB

Purpose: Copy Constructor

Args: IMBB = The CIccMBB object to be copied

3168{
3169 icUInt8Number nCurves;
3170 int i;
3171
3174 m_nInput = IMBB.m_nInput;
3175 m_nOutput = IMBB.m_nOutput;
3176 m_csInput = IMBB.m_csInput;
3177 m_csOutput = IMBB.m_csOutput;
3178
3179 if (IMBB.m_CLUT) {
3180 m_CLUT = new CIccCLUT(*IMBB.m_CLUT);
3181 }
3182 else
3183 m_CLUT = NULL;
3184
3185 if (IMBB.m_CurvesA) {
3186 nCurves = !IsInputB() ? m_nInput : m_nOutput;
3187
3188 m_CurvesA = new LPIccCurve[nCurves];
3189 for (i=0; i<nCurves; i++)
3190 m_CurvesA[i] = (CIccTagCurve*)IMBB.m_CurvesA[i]->NewCopy();
3191 }
3192 else {
3193 m_CurvesA = NULL;
3194 }
3195
3196 if (IMBB.m_CurvesM) {
3197 nCurves = IsInputMatrix() ? m_nInput : m_nOutput;
3198
3199 m_CurvesM = new LPIccCurve[nCurves];
3200 for (i=0; i<nCurves; i++)
3201 m_CurvesM[i] = (CIccTagCurve*)IMBB.m_CurvesM[i]->NewCopy();
3202 }
3203 else {
3204 m_CurvesM = NULL;
3205 }
3206
3207 if (IMBB.m_CurvesB) {
3208 nCurves = IsInputB() ? m_nInput : m_nOutput;
3209
3210 m_CurvesB = new LPIccCurve[nCurves];
3211 for (i=0; i<nCurves; i++)
3212 m_CurvesB[i] = (CIccTagCurve*)IMBB.m_CurvesB[i]->NewCopy();
3213 }
3214 else {
3215 m_CurvesB = NULL;
3216 }
3217
3218 if (IMBB.m_Matrix) {
3219 m_Matrix = new CIccMatrix(*IMBB.m_Matrix);
3220 }
3221 else {
3222 m_Matrix = NULL;
3223 }
3224}
unsigned char icUInt8Number
Definition icProfileHeader.h:250
Definition IccTagLut.h:91
virtual CIccTag * NewCopy() const
Definition IccTagLut.h:94
Definition IccTagLut.h:128
Definition IccTagLut.h:260
Definition IccTagLut.h:326
bool IsInputB()
Definition IccTagLut.h:445
virtual bool IsInputMatrix()
Definition IccTagLut.h:442

References CIccCLUT::CIccCLUT(), CIccMatrix::CIccMatrix(), IsInputB(), IsInputMatrix(), m_bInputMatrix, m_bUseMCurvesAsBCurves, m_CLUT, m_csInput, m_csOutput, m_CurvesA, m_CurvesB, m_CurvesM, m_Matrix, m_nInput, m_nOutput, and CIccCurve::NewCopy().

Referenced by CIccTagLut16::CIccTagLut16(), CIccTagLut8::CIccTagLut8(), CIccTagLutAtoB::CIccTagLutAtoB(), and NewCopy().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ~CIccMBB()

CIccMBB::~CIccMBB ( )
virtual

Name: CIccMBB::~CIccMBB

Purpose: Destructor

3313{
3314 Cleanup();
3315}
void Cleanup()
Definition IccTagLut.cpp:3325

References Cleanup().

+ Here is the call graph for this function:

Member Function Documentation

◆ Cleanup()

void CIccMBB::Cleanup ( )

Name: CIccMBB::Cleanup

Purpose: Frees the memory allocated to the object

3326{
3327 int i;
3328
3329 if (IsInputMatrix()) {
3330 if (m_CurvesB) {
3331 for (i=0; i<m_nInput; i++)
3332 if (m_CurvesB[i])
3333 delete m_CurvesB[i];
3334
3335 delete [] m_CurvesB;
3336 m_CurvesB = NULL;
3337 }
3338
3339 if (m_CurvesM) {
3340 for (i=0; i<m_nInput; i++)
3341 if (m_CurvesM[i])
3342 delete m_CurvesM[i];
3343
3344 delete [] m_CurvesM;
3345 m_CurvesM = NULL;
3346 }
3347
3348
3349 if (m_CurvesA) {
3350 for (i=0; i<m_nOutput; i++)
3351 if (m_CurvesA[i])
3352 delete m_CurvesA[i];
3353
3354 delete [] m_CurvesA;
3355 m_CurvesA = NULL;
3356 }
3357
3358 }
3359 else {
3360 if (m_CurvesA) {
3361 for (i=0; i<m_nInput; i++)
3362 if (m_CurvesA[i])
3363 delete m_CurvesA[i];
3364
3365 delete [] m_CurvesA;
3366 m_CurvesA = NULL;
3367 }
3368
3369 if (m_CurvesM) {
3370 for (i=0; i<m_nOutput; i++)
3371 if (m_CurvesM[i])
3372 delete m_CurvesM[i];
3373
3374 delete [] m_CurvesM;
3375 m_CurvesM = NULL;
3376 }
3377
3378 if (m_CurvesB) {
3379 for (i=0; i<m_nOutput; i++)
3380 if (m_CurvesB[i])
3381 delete m_CurvesB[i];
3382
3383 delete [] m_CurvesB;
3384 m_CurvesB = NULL;
3385 }
3386 }
3387
3388 if (m_Matrix) {
3389 delete m_Matrix;
3390 m_Matrix = NULL;
3391 }
3392
3393 if (m_CLUT) {
3394 delete m_CLUT;
3395 m_CLUT = NULL;
3396 }
3397}

References IsInputMatrix(), m_CLUT, m_CurvesA, m_CurvesB, m_CurvesM, m_Matrix, m_nInput, and m_nOutput.

Referenced by ~CIccMBB(), Init(), and operator=().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Create()

CIccTag * CIccTag::Create ( icTagTypeSignature  sig)
staticinherited

Name: CIccTag::Create

Purpose: This is a static tag creator based upon tag signature type

Args: sig = tag type signature

Return: Pointer to Allocated tag

144{
145 return CIccTagCreator::CreateTag(sig);
146}
static CIccTag * CreateTag(icTagTypeSignature tagTypeSig)
Definition IccTagFactory.h:279

References CIccTagCreator::CreateTag().

Referenced by CIccDefaultEncProfileConverter::ConvertFromParams(), CIccTagStruct::LoadElem(), CIccProfileXml::ParseTag(), CIccTagXmlStruct::ParseTag(), CIccMpeXmlTintArray::ParseXml(), CIccTagXmlArray::ParseXml(), CIccMpeTintArray::Read(), CIccTagLutAtoB::Read(), CIccTagLut8::Read(), CIccTagLut16::Read(), CIccTagLut8::SetColorSpaces(), CIccTagLut16::SetColorSpaces(), and CIccProfileDescText::SetType().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Describe()

void CIccMBB::Describe ( std::string &  sDescription,
int  nVerboseness 
)
virtual

Name: CIccMBB::Describe

Purpose: Dump data associated with the tag to a string

Args: sDescription - string to concatenate tag dump to

Reimplemented from CIccTag.

3445{
3446 int i;
3447 icChar buf[128], color[40];
3448
3449
3450 if (IsInputMatrix()) {
3452 for (i=0; i<m_nInput; i++) {
3453 icColorIndexName(color, m_csInput, i, m_nInput, "");
3454 sprintf(buf, "B_Curve_%s", color);
3455 m_CurvesB[i]->DumpLut(sDescription, buf, m_csInput, i, nVerboseness);
3456 }
3457 }
3458
3459 if (m_Matrix)
3460 m_Matrix->DumpLut(sDescription, "Matrix", nVerboseness);
3461
3462 if (m_CurvesM) {
3463 for (i=0; i<m_nInput; i++) {
3464 icColorIndexName(color, m_csInput, i, m_nInput, "");
3466 sprintf(buf, "M_Curve_%s", color);
3467 else
3468 sprintf(buf, "B_Curve_%s", color);
3469 m_CurvesM[i]->DumpLut(sDescription, buf, m_csInput, i, nVerboseness);
3470 }
3471 }
3472
3473 if (m_CLUT)
3474 m_CLUT->DumpLut(sDescription, "CLUT", m_csInput, m_csOutput, nVerboseness, GetType()==icSigLut16Type);
3475
3476 if (m_CurvesA) {
3477 for (i=0; i<m_nOutput; i++) {
3478 icColorIndexName(color, m_csOutput, i, m_nOutput, "");
3479 sprintf(buf, "A_Curve_%s", color);
3480 m_CurvesA[i]->DumpLut(sDescription, buf, m_csOutput, i, nVerboseness);
3481 }
3482 }
3483 }
3484 else {
3485 if (m_CurvesA) {
3486 for (i=0; i<m_nInput; i++) {
3487 icColorIndexName(color, m_csInput, i, m_nInput, "");
3488 sprintf(buf, "A_Curve_%s", color);
3489 m_CurvesA[i]->DumpLut(sDescription, buf, m_csInput, i, nVerboseness);
3490 }
3491 }
3492
3493 if (m_CLUT)
3494 m_CLUT->DumpLut(sDescription, "CLUT", m_csInput, m_csOutput, nVerboseness);
3495
3496 if (m_CurvesM && this->GetType()!=icSigLut8Type) {
3497 for (i=0; i<m_nOutput; i++) {
3498 icColorIndexName(color, m_csOutput, i, m_nOutput, "");
3499 sprintf(buf, "M_Curve_%s", color);
3500 m_CurvesM[i]->DumpLut(sDescription, buf, m_csOutput, i, nVerboseness);
3501 }
3502 }
3503
3504 if (m_Matrix)
3505 m_Matrix->DumpLut(sDescription, "Matrix", nVerboseness);
3506
3507 if (m_CurvesB) {
3508 for (i=0; i<m_nOutput; i++) {
3509 icColorIndexName(color, m_csOutput, i, m_nOutput, "");
3510 sprintf(buf, "B_Curve_%s", color);
3511 m_CurvesB[i]->DumpLut(sDescription, buf, m_csOutput, i, nVerboseness);
3512 }
3513 }
3514 }
3515}
@ icSigLut8Type
Definition icProfileHeader.h:545
@ icSigLut16Type
Definition icProfileHeader.h:544
char icChar
Definition IccDefs.h:110
ICCPROFLIB_API void icColorIndexName(icChar *szName, icColorSpaceSignature csSig, int nIndex, int nColors, const icChar *szUnknown)
Definition IccUtil.cpp:295
virtual icTagTypeSignature GetType() const
Definition IccTagBasic.h:131
virtual void DumpLut(std::string &sDescription, const icChar *szName, icColorSpaceSignature csSig, int nIndex, int nVerboseness)
Definition IccTagLut.h:97
void DumpLut(std::string &sDescription, const icChar *szName, int nVerboseness)
Definition IccTagLut.cpp:1469
void DumpLut(std::string &sDescription, const icChar *szName, icColorSpaceSignature csInput, icColorSpaceSignature csOutput, int nVerboseness, bool bUseLegacy=false)
Definition IccTagLut.cpp:2157

References CIccCLUT::DumpLut(), CIccCurve::DumpLut(), CIccMatrix::DumpLut(), CIccTag::GetType(), icColorIndexName(), icSigLut16Type, icSigLut8Type, IsInputMatrix(), m_bUseMCurvesAsBCurves, m_CLUT, m_csInput, m_csOutput, m_CurvesA, m_CurvesB, m_CurvesM, m_Matrix, m_nInput, and m_nOutput.

+ Here is the call graph for this function:

◆ DetachIO()

virtual void CIccTag::DetachIO ( )
inlinevirtualinherited

Function: ReadAll() - Read All sub data for tag from file. Called by CIccProfile::ReadAll() to read all sub data for tag

Returns true if ReadAll is successful.

183{}

◆ GetClassName()

virtual const icChar * CIccTag::GetClassName ( ) const
inlinevirtualinherited

Reimplemented in CIccTagUnknown, CIccTagText, CIccTagUtf8Text, CIccTagZipUtf8Text, CIccTagZipXml, CIccTagUtf16Text, CIccTagTextDescription, CIccTagSignature, CIccTagNamedColor2, CIccTagXYZ, CIccTagChromaticity, CIccTagCicp, CIccTagSparseMatrixArray, CIccTagFixedNum< T, Tsig >, CIccTagNum< T, Tsig >, CIccTagFloatNum< T, Tsig >, CIccTagMeasurement, CIccTagMultiLocalizedUnicode, CIccTagData, CIccTagDateTime, CIccTagColorantOrder, CIccTagColorantTable, CIccTagViewingConditions, CIccTagProfileSeqDesc, CIccTagResponseCurveSet16, CIccTagSpectralDataInfo, CIccTagSpectralViewingConditions, CIccTagEmbeddedHeightImage, CIccTagEmbeddedNormalImage, CIccTagStruct, CIccTagArray, CIccTagDict, CIccTagEmbeddedProfile, CIccTagCurve, CIccTagParametricCurve, CIccTagSegmentedCurve, CIccTagGamutBoundaryDesc, CIccTagMultiProcessElement, CIccTagProfileSequenceId, CIccTagXmlUnknown, CIccTagXmlText, CIccTagXmlUtf8Text, CIccTagXmlZipUtf8Text, CIccTagXmlZipXml, CIccTagXmlUtf16Text, CIccTagXmlTextDescription, CIccTagXmlSignature, CIccTagXmlNamedColor2, CIccTagXmlXYZ, CIccTagXmlChromaticity, CIccTagXmlCicp, CIccTagXmlSparseMatrixArray, CIccTagXmlFixedNum< T, Tsig >, CIccTagXmlNum< T, A, Tsig >, CIccTagXmlFloatNum< T, A, Tsig >, CIccTagXmlMeasurement, CIccTagXmlMultiLocalizedUnicode, CIccTagXmlTagData, CIccTagXmlDateTime, CIccTagXmlColorantOrder, CIccTagXmlColorantTable, CIccTagXmlViewingConditions, CIccTagXmlSpectralDataInfo, CIccTagXmlSpectralViewingConditions, CIccTagXmlProfileSeqDesc, CIccTagXmlResponseCurveSet16, CIccTagXmlCurve, CIccTagXmlParametricCurve, CIccTagXmlSegmentedCurve, CIccTagXmlLutAtoB, CIccTagXmlLutBtoA, CIccTagXmlLut8, CIccTagXmlLut16, CIccTagXmlMultiProcessElement, CIccTagXmlProfileSequenceId, CIccTagXmlDict, CIccTagXmlStruct, and CIccTagXmlArray.

139{ return "CIccTag"; }

◆ GetCLUT()

CIccCLUT * CIccMBB::GetCLUT ( ) const
inline
469{return m_CLUT;}

References m_CLUT.

Referenced by CIccEvalCompare::EvaluateProfile(), icMBBFromXml(), and icMBBToXml().

+ Here is the caller graph for this function:

◆ GetCsInput()

icColorSpaceSignature CIccMBB::GetCsInput ( )
inline
458{ return m_csInput; }

References m_csInput.

◆ GetCsOutput()

icColorSpaceSignature CIccMBB::GetCsOutput ( )
inline
459{ return m_csOutput; }

References m_csOutput.

◆ GetCurvesA()

LPIccCurve * CIccMBB::GetCurvesA ( ) const
inline
470{return m_CurvesA;}

References m_CurvesA.

Referenced by icMBBFromXml(), and icMBBToXml().

+ Here is the caller graph for this function:

◆ GetCurvesB()

LPIccCurve * CIccMBB::GetCurvesB ( ) const
inline
471{return m_CurvesB;}

References m_CurvesB.

Referenced by icMBBFromXml(), and icMBBToXml().

+ Here is the caller graph for this function:

◆ GetCurvesM()

LPIccCurve * CIccMBB::GetCurvesM ( ) const
inline
472{return m_CurvesM;}

References m_CurvesM.

Referenced by icMBBFromXml(), and icMBBToXml().

+ Here is the caller graph for this function:

◆ GetExtension()

virtual IIccExtensionTag * CIccTag::GetExtension ( )
inlinevirtualinherited

Reimplemented in CIccTagXmlUnknown, CIccTagXmlText, CIccTagXmlUtf8Text, CIccTagXmlZipUtf8Text, CIccTagXmlZipXml, CIccTagXmlUtf16Text, CIccTagXmlTextDescription, CIccTagXmlSignature, CIccTagXmlNamedColor2, CIccTagXmlXYZ, CIccTagXmlChromaticity, CIccTagXmlCicp, CIccTagXmlSparseMatrixArray, CIccTagXmlFixedNum< T, Tsig >, CIccTagXmlNum< T, A, Tsig >, CIccTagXmlFloatNum< T, A, Tsig >, CIccTagXmlMeasurement, CIccTagXmlMultiLocalizedUnicode, CIccTagXmlTagData, CIccTagXmlDateTime, CIccTagXmlColorantOrder, CIccTagXmlColorantTable, CIccTagXmlViewingConditions, CIccTagXmlSpectralDataInfo, CIccTagXmlSpectralViewingConditions, CIccTagXmlProfileSeqDesc, CIccTagXmlResponseCurveSet16, CIccTagXmlCurve, CIccTagXmlParametricCurve, CIccTagXmlSegmentedCurve, CIccTagXmlLutAtoB, CIccTagXmlLutBtoA, CIccTagXmlLut8, CIccTagXmlLut16, CIccTagXmlMultiProcessElement, CIccTagXmlProfileSequenceId, CIccTagXmlDict, CIccTagXmlStruct, CIccTagXmlArray, CIccTagXmlGamutBoundaryDesc, CIccTagXmlEmbeddedHeightImage, CIccTagXmlEmbeddedNormalImage, and CIccTagXmlEmbeddedProfile.

143{return NULL;}

Referenced by icCurvesFromXml(), icCurvesToXml(), icProfDescToXml(), icXmlParseProfDesc(), CIccProfileXml::ParseTag(), CIccTagXmlStruct::ParseTag(), CIccMpeXmlTintArray::ParseXml(), CIccTagXmlArray::ParseXml(), CIccMpeXmlTintArray::ToXml(), CIccTagXmlStruct::ToXml(), CIccTagXmlArray::ToXml(), and CIccProfileXml::ToXmlWithBlanks().

+ Here is the caller graph for this function:

◆ GetMatrix()

CIccMatrix * CIccMBB::GetMatrix ( ) const
inline
468{return m_Matrix; }

References m_Matrix.

Referenced by icMBBFromXml(), and icMBBToXml().

+ Here is the caller graph for this function:

◆ GetPrecision()

virtual icUInt8Number CIccMBB::GetPrecision ( )
inlinevirtual

Reimplemented in CIccTagLut8.

441{ return 2; }

◆ GetTagArrayType()

virtual icArraySignature CIccTag::GetTagArrayType ( ) const
inlinevirtualinherited

Reimplemented in CIccTagArray.

133{ return icSigUndefinedArray; }
@ icSigUndefinedArray
Definition icProfileHeader.h:617

References icSigUndefinedArray.

Referenced by icGetTagArrayHandlerOfType(), and CIccProfileXml::ParseTag().

+ Here is the caller graph for this function:

◆ GetTagStructType()

virtual icStructSignature CIccTag::GetTagStructType ( ) const
inlinevirtualinherited

Reimplemented in CIccTagStruct.

132{ return icSigUndefinedStruct; }
@ icSigUndefinedStruct
Definition icProfileHeader.h:606

References icSigUndefinedStruct.

Referenced by icGetTagStructHandlerOfType(), CIccArrayColorantInfo::Validate(), and CIccArrayNamedColor::Validate().

+ Here is the caller graph for this function:

◆ GetType()

virtual icTagTypeSignature CIccTag::GetType ( ) const
inlinevirtualinherited

Function: GetType()

Purpose: Get Tag Type. Each derived tag will implement it's own GetType() function.

Reimplemented in CIccTagUnknown, CIccTagText, CIccTagUtf8Text, CIccTagZipUtf8Text, CIccTagZipXml, CIccTagUtf16Text, CIccTagTextDescription, CIccTagSignature, CIccTagNamedColor2, CIccTagXYZ, CIccTagChromaticity, CIccTagCicp, CIccTagSparseMatrixArray, CIccTagFixedNum< T, Tsig >, CIccTagNum< T, Tsig >, CIccTagFloatNum< T, Tsig >, CIccTagMeasurement, CIccTagMultiLocalizedUnicode, CIccTagData, CIccTagDateTime, CIccTagColorantOrder, CIccTagColorantTable, CIccTagViewingConditions, CIccTagProfileSeqDesc, CIccTagResponseCurveSet16, CIccTagSpectralDataInfo, CIccTagSpectralViewingConditions, CIccTagEmbeddedHeightImage, CIccTagEmbeddedNormalImage, CIccTagStruct, CIccTagArray, CIccTagDict, CIccTagEmbeddedProfile, CIccTagCurve, CIccTagParametricCurve, CIccTagSegmentedCurve, CIccTagLutAtoB, CIccTagLutBtoA, CIccTagLut8, CIccTagLut16, CIccTagGamutBoundaryDesc, CIccTagMultiProcessElement, and CIccTagProfileSequenceId.

131{ return icMaxEnumType; }
#define icMaxEnumType
Definition icProfileHeader.h:592

Referenced by CIccProfileIdDesc::CIccProfileIdDesc(), MyTagDialog::MyTagDialog(), CIccTagArray::AreAllOfType(), Describe(), DumpTag(), CIccPRMG::EvaluateProfile(), CIccTagStruct::FindElemOfType(), CIccStructBRDF::GetBRDFFunction(), CIccStructBRDF::GetBRDFType(), CIccStructNamedColor::getName(), CIccProfileDescText::GetType(), icGetTagArrayHandler(), icGetTagStructHandler(), icGetTagText(), icProfDescToXml(), CDevLinkWriter::iterate(), main(), CIccProfileXml::ParseTag(), CIccProfileDescText::SetType(), CIccMpeXmlTintArray::ToXml(), CIccTagXmlStruct::ToXml(), CIccTagXmlArray::ToXml(), CIccProfileXml::ToXmlWithBlanks(), CIccTagLut8::Validate(), CIccTagLut16::Validate(), CIccArrayUnknown::Validate(), CIccArrayColorantInfo::Validate(), CIccProfileDescText::Write(), CIccTagLut8::Write(), and CIccTagLut16::Write().

+ Here is the caller graph for this function:

◆ Init()

void CIccMBB::Init ( icUInt8Number  nInputChannels,
icUInt8Number  nOutputChannels 
)

Name: CIccMBB::Init

Purpose: Cleans up any prior memory and Initializes the object.

Args: nInputChannels = number of input channels, nOutputChannels = number of output channels

3411{
3412 Cleanup();
3413 m_nInput = nInputChannels;
3414 m_nOutput = nOutputChannels;
3415}

References Cleanup(), m_nInput, and m_nOutput.

Referenced by CDevLinkWriter::begin(), and icMBBFromXml().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ InputChannels()

icUInt8Number CIccMBB::InputChannels ( ) const
inline
451{ return m_nInput; }

References m_nInput.

Referenced by icMBBToXml().

+ Here is the caller graph for this function:

◆ IsArrayType()

virtual bool CIccTag::IsArrayType ( )
inlinevirtualinherited

Reimplemented in CIccTagXYZ, CIccTagChromaticity, CIccTagSparseMatrixArray, CIccTagFixedNum< T, Tsig >, CIccTagNum< T, Tsig >, CIccTagFloatNum< T, Tsig >, and CIccTagData.

135{ return false; }

Referenced by MyTagDialog::MyTagDialog(), and DumpTag().

+ Here is the caller graph for this function:

◆ IsInputB()

bool CIccMBB::IsInputB ( )
inline
445{ return IsInputMatrix(); }

References IsInputMatrix().

Referenced by CIccMBB(), icMBBFromXml(), NewCurvesA(), NewCurvesB(), operator=(), CIccTagLutAtoB::Read(), and CIccTagLutAtoB::Write().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsInputMatrix()

virtual bool CIccMBB::IsInputMatrix ( )
inlinevirtual
442{ return m_bInputMatrix; } //Is matrix on input side of CLUT?

References m_bInputMatrix.

Referenced by CIccMBB(), Cleanup(), Describe(), icMBBFromXml(), icMBBToXml(), IsInputB(), NewCurvesM(), operator=(), CIccTagLutAtoB::Read(), CIccTagLut8::SetColorSpaces(), CIccTagLut16::SetColorSpaces(), and CIccTagLutAtoB::Write().

+ Here is the caller graph for this function:

◆ IsMBBType()

virtual bool CIccMBB::IsMBBType ( )
inlinevirtual

Reimplemented from CIccTag.

439{ return true;}

◆ IsNumArrayType()

virtual bool CIccTag::IsNumArrayType ( ) const
inlinevirtualinherited

Reimplemented in CIccTagSparseMatrixArray, CIccTagFixedNum< T, Tsig >, CIccTagNum< T, Tsig >, and CIccTagFloatNum< T, Tsig >.

137{ return false;} //If true then CIccTag can be cast as a CIccTagNumArray

Referenced by CIccArrayNamedColor::FindDeviceColor(), CIccArrayNamedColor::FindPcsColor(), CIccArrayNamedColor::FindSpectralColor(), CIccTagStruct::GetElemNumberValue(), CIccStructNamedColor::GetNumArray(), CIccMpeXmlTintArray::ParseXml(), and CIccMpeTintArray::Read().

+ Here is the caller graph for this function:

◆ IsSupported()

virtual bool CIccTag::IsSupported ( )
inlinevirtualinherited

Function: IsSupported(size, pIO) - Check if tag fully supported for apply purposes. By Default inherited classes are supported. Unknown tag types are not supported.

Returns true if tag type is supported.

Reimplemented in CIccTagUnknown, CIccTagEmbeddedProfile, and CIccTagMultiProcessElement.

153{ return true; }

◆ NewCLUT() [1/2]

CIccCLUT * CIccMBB::NewCLUT ( icUInt8Number pGridPoints,
icUInt8Number  nPrecision = 2 
)

Name: CIccMBB::NewCLUT

Purpose: Allocates memory for a new CLUT and initializes it

Args: pGridPoints = number of grid points in the CLUT

Return: Pointer to the CIccCLUT object

3763{
3764 if (m_CLUT)
3765 return m_CLUT;
3766
3767 m_CLUT = new CIccCLUT(m_nInput, m_nOutput, nPrecision);
3768
3769 m_CLUT->Init(pGridPoints);
3770
3771 return m_CLUT;
3772}
bool Init(icUInt8Number nGridPoints, icUInt32Number nMaxSize=0, icUInt8Number nBytesPerPoint=4)
Definition IccTagLut.cpp:1806

References CIccCLUT::CIccCLUT(), CIccCLUT::Init(), m_CLUT, m_nInput, and m_nOutput.

+ Here is the call graph for this function:

◆ NewCLUT() [2/2]

CIccCLUT * CIccMBB::NewCLUT ( icUInt8Number  nGridPoints,
icUInt8Number  nPrecision = 2 
)

Name: CIccMBB::NewCLUT

Purpose: Allocates memory for a new CLUT and initializes it

Args: nGridPoints = number of grid points in the CLUT

Return: Pointer to the CIccCLUT object

3816{
3817 if (m_CLUT)
3818 return m_CLUT;
3819
3820 m_CLUT = new CIccCLUT(m_nInput, m_nOutput, nPrecision);
3821
3822 m_CLUT->Init(nGridPoints);
3823
3824 return m_CLUT;
3825}

References CIccCLUT::CIccCLUT(), CIccCLUT::Init(), m_CLUT, m_nInput, and m_nOutput.

Referenced by CDevLinkWriter::begin().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ NewCopy()

virtual CIccTag * CIccMBB::NewCopy ( ) const
inlinevirtual

Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.

Parameter(s): none

Returns a new CIccTag object that is a copy of this object.

Reimplemented from CIccTag.

Reimplemented in CIccTagLutAtoB, CIccTagLutBtoA, CIccTagLut8, and CIccTagLut16.

436{return new CIccMBB(*this);}
CIccMBB()
Definition IccTagLut.cpp:3138

References CIccMBB().

+ Here is the call graph for this function:

◆ NewCurvesA()

LPIccCurve * CIccMBB::NewCurvesA ( )

Name: CIccMBB::NewCurvesA

Purpose: Allocates memory for a new set of A-curves

Return: Pointer to the LPIccCurve object

3674{
3675 if (m_CurvesA)
3676 return m_CurvesA;
3677
3678 icUInt8Number nCurves = !IsInputB() ? m_nInput : m_nOutput;
3679
3680 m_CurvesA = new LPIccCurve[nCurves];
3681 memset(m_CurvesA, 0, nCurves * sizeof(LPIccCurve));
3682
3683 return m_CurvesA;
3684}

References IsInputB(), m_CurvesA, m_nInput, and m_nOutput.

Referenced by CDevLinkWriter::begin(), icMBBFromXml(), CIccTagLutAtoB::Read(), CIccTagLut8::Read(), and CIccTagLut16::Read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ NewCurvesB()

LPIccCurve * CIccMBB::NewCurvesB ( )

Name: CIccMBB::NewCurvesB

Purpose: Allocates memory for a new set of B-curves

Return: Pointer to the LPIccCurve object

3719{
3720 if (m_CurvesB)
3721 return m_CurvesB;
3722
3723 icUInt8Number nCurves = IsInputB() ? m_nInput : m_nOutput;
3724
3725 m_CurvesB = new LPIccCurve[nCurves];
3726 memset(m_CurvesB, 0, nCurves * sizeof(LPIccCurve));
3727
3728 return m_CurvesB;
3729}

References IsInputB(), m_CurvesB, m_nInput, and m_nOutput.

Referenced by CDevLinkWriter::begin(), icMBBFromXml(), CIccTagLutAtoB::Read(), CIccTagLut8::Read(), CIccTagLut16::Read(), CIccTagLut8::SetColorSpaces(), and CIccTagLut16::SetColorSpaces().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ NewCurvesM()

LPIccCurve * CIccMBB::NewCurvesM ( )

Name: CIccMBB::NewCurvesM

Purpose: Allocates memory for a new set of M-curves

Return: Pointer to the LPIccCurve object

3697{
3698 if (m_CurvesM)
3699 return m_CurvesM;
3700
3702
3703 m_CurvesM = new LPIccCurve[nCurves];
3704 memset(m_CurvesM, 0, nCurves * sizeof(LPIccCurve));
3705
3706 return m_CurvesM;
3707}

References IsInputMatrix(), m_CurvesM, m_nInput, and m_nOutput.

Referenced by icMBBFromXml(), and CIccTagLutAtoB::Read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ NewMatrix()

CIccMatrix * CIccMBB::NewMatrix ( )

Name: CIccMBB::NewMatrix

Purpose: Allocates memory for a new matrix

Return: Pointer to the CIccMatrix object

3741{
3742 if (m_Matrix)
3743 return m_Matrix;
3744
3745 m_Matrix = new CIccMatrix;
3746
3747 return m_Matrix;
3748}

References m_Matrix.

Referenced by icMBBFromXml(), CIccTagLut8::SetColorSpaces(), and CIccTagLut16::SetColorSpaces().

+ Here is the caller graph for this function:

◆ operator=()

CIccMBB & CIccMBB::operator= ( const CIccMBB IMBB)

Name: CIccMBB::operator=

Purpose: Copy Operator

Args: IMBB = The CIccMBB object to be copied

3238{
3239 if (&IMBB == this)
3240 return *this;
3241
3242 Cleanup();
3243
3244 icUInt8Number nCurves;
3245 int i;
3246
3249 m_nInput = IMBB.m_nInput;
3250 m_nOutput = IMBB.m_nOutput;
3251 m_csInput = IMBB.m_csInput;
3252 m_csOutput = IMBB.m_csOutput;
3253
3254 if (IMBB.m_CLUT) {
3255 m_CLUT = new CIccCLUT(*IMBB.m_CLUT);
3256 }
3257 else
3258 m_CLUT = NULL;
3259
3260 if (IMBB.m_CurvesA) {
3261 nCurves = !IsInputB() ? m_nInput : m_nOutput;
3262
3263 m_CurvesA = new LPIccCurve[nCurves];
3264 for (i=0; i<nCurves; i++)
3265 m_CurvesA[i] = (CIccTagCurve*)IMBB.m_CurvesA[i]->NewCopy();
3266 }
3267 else {
3268 m_CurvesA = NULL;
3269 }
3270
3271 if (IMBB.m_CurvesM) {
3272 nCurves = IsInputMatrix() ? m_nInput : m_nOutput;
3273
3274 m_CurvesM = new LPIccCurve[nCurves];
3275 for (i=0; i<nCurves; i++)
3276 m_CurvesM[i] = (CIccTagCurve*)IMBB.m_CurvesM[i]->NewCopy();
3277 }
3278 else {
3279 m_CurvesM = NULL;
3280 }
3281
3282 if (IMBB.m_CurvesB) {
3283 nCurves = IsInputB() ? m_nInput : m_nOutput;
3284
3285 m_CurvesB = new LPIccCurve[nCurves];
3286 for (i=0; i<nCurves; i++)
3287 m_CurvesB[i] = (CIccTagCurve*)IMBB.m_CurvesB[i]->NewCopy();
3288 }
3289 else {
3290 m_CurvesB = NULL;
3291 }
3292
3293 if (IMBB.m_Matrix) {
3294 m_Matrix = new CIccMatrix(*IMBB.m_Matrix);
3295 }
3296 else {
3297 m_Matrix = NULL;
3298 }
3299
3300 return *this;
3301}

References CIccCLUT::CIccCLUT(), CIccMatrix::CIccMatrix(), Cleanup(), IsInputB(), IsInputMatrix(), m_bInputMatrix, m_bUseMCurvesAsBCurves, m_CLUT, m_csInput, m_csOutput, m_CurvesA, m_CurvesB, m_CurvesM, m_Matrix, m_nInput, m_nOutput, and CIccCurve::NewCopy().

Referenced by CIccTagLut16::operator=(), CIccTagLut8::operator=(), CIccTagLutAtoB::operator=(), and CIccTagLutBtoA::operator=().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ OutputChannels()

icUInt8Number CIccMBB::OutputChannels ( ) const
inline
452{ return m_nOutput; }

References m_nOutput.

Referenced by icMBBToXml().

+ Here is the caller graph for this function:

◆ Read() [1/2]

virtual bool CIccTag::Read ( icUInt32Number  size,
CIccIO pIO 
)
inlinevirtualinherited

Function: Read(size, pIO) - Read tag from file. Each derived tag will implement it's own Read() function.

Parameter(s): size - number of bytes in tag including the type signature. pIO - IO object used to read in tag. The IO object should already be initialized to point to the begining of the tag.

Returns true if Read is successful.

Reimplemented in CIccTagUnknown, CIccTagText, CIccTagUtf8Text, CIccTagZipUtf8Text, CIccTagUtf16Text, CIccTagTextDescription, CIccTagSignature, CIccTagNamedColor2, CIccTagXYZ, CIccTagChromaticity, CIccTagCicp, CIccTagSparseMatrixArray, CIccTagFixedNum< T, Tsig >, CIccTagNum< T, Tsig >, CIccTagFloatNum< T, Tsig >, CIccTagMeasurement, CIccTagMultiLocalizedUnicode, CIccTagData, CIccTagDateTime, CIccTagColorantOrder, CIccTagColorantTable, CIccTagViewingConditions, CIccTagProfileSeqDesc, CIccTagResponseCurveSet16, CIccTagSpectralDataInfo, CIccTagSpectralViewingConditions, CIccTagEmbeddedHeightImage, CIccTagEmbeddedNormalImage, CIccTagStruct, CIccTagArray, CIccTagDict, CIccTagEmbeddedProfile, CIccTagCurve, CIccTagParametricCurve, CIccTagSegmentedCurve, CIccTagLutAtoB, CIccTagLut8, CIccTagLut16, CIccTagGamutBoundaryDesc, CIccTagMultiProcessElement, and CIccTagProfileSequenceId.

167{ return false; }

Referenced by CIccTagStruct::LoadElem(), CIccMpeTintArray::Read(), CIccProfileDescText::Read(), CIccTagArray::Read(), CIccTagLutAtoB::Read(), and CIccTag::Read().

+ Here is the caller graph for this function:

◆ Read() [2/2]

virtual bool CIccTag::Read ( icUInt32Number  size,
CIccIO pIO,
CIccProfile pProfile 
)
inlinevirtualinherited

Function: Read(size, pIO) - Read tag from file. Each derived tag will implement it's own Read() function.

Parameter(s): size - number of bytes in tag including the type signature. pIO - IO object used to read in tag. The IO object should already be initialized to point to the begining of the tag.

Returns true if Read is successful.

Reimplemented in CIccTagEmbeddedProfile.

197{ return Read(size, pIO); }
virtual bool Read(icUInt32Number size, CIccIO *pIO)
Definition IccTagBasic.h:167

References CIccTag::Read().

+ Here is the call graph for this function:

◆ ReadAll()

virtual bool CIccTag::ReadAll ( )
inlinevirtualinherited

Function: ReadAll() - Read All sub data for tag from file. Called by CIccProfile::ReadAll() to read all sub data for tag

Returns true if ReadAll is successful.

Reimplemented in CIccTagEmbeddedProfile.

175{ return true; }

◆ SetCLUT()

CIccCLUT * CIccMBB::SetCLUT ( CIccCLUT clut)

Name: CIccMBB::SetCLUT

Purpose: Assignes CLUT connection to an initialized new CLUT

Args: clut = pointer to a previously allocated CLUT (Onwership is transfered to CIccMBB object).

Return: Pointer to the CIccCLUT object or NULL if clut is incompatible with CIccMBB object. If the clut is incompatible it is deleted.

3789{
3790 if (clut->GetInputDim() != m_nInput || clut->GetOutputChannels() != m_nOutput) {
3791 delete clut;
3792 return NULL;
3793 }
3794
3795 if (m_CLUT) {
3796 delete m_CLUT;
3797 }
3798
3799 m_CLUT = clut;
3800 return clut;
3801}
icUInt8Number GetInputDim() const
Definition IccTagLut.h:356
icUInt16Number GetOutputChannels() const
Definition IccTagLut.h:357

References CIccCLUT::GetInputDim(), CIccCLUT::GetOutputChannels(), m_CLUT, m_nInput, and m_nOutput.

Referenced by icMBBFromXml().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetColorSpaces()

void CIccMBB::SetColorSpaces ( icColorSpaceSignature  csInput,
icColorSpaceSignature  csOutput 
)
virtual

Name: CIccMBB::SetColorSpaces

Purpose: Sets the input and output color spaces

Args: csInput = input color space signature, csOutput = output color space signature

Reimplemented in CIccTagLut8, and CIccTagLut16.

3429{
3430 m_csInput = csInput;
3431 m_csOutput = csOutput;
3432}

References m_csInput, and m_csOutput.

Referenced by CIccProfileXml::ParseTag(), CIccTagLut8::SetColorSpaces(), and CIccTagLut16::SetColorSpaces().

+ Here is the caller graph for this function:

◆ SwapMBCurves()

bool CIccMBB::SwapMBCurves ( )
inline
446{ return m_bUseMCurvesAsBCurves; }

References m_bUseMCurvesAsBCurves.

Referenced by icMBBToXml().

+ Here is the caller graph for this function:

◆ UseLegacyPCS()

virtual bool CIccMBB::UseLegacyPCS ( ) const
inlinevirtual

Reimplemented in CIccTagLut16.

443{ return false; } //Treat Lab Encoding differently?

◆ Validate() [1/2]

icValidateStatus CIccMBB::Validate ( std::string  sigPath,
std::string &  sReport,
const CIccProfile pProfile = NULL 
)
virtual

Name: CIccMBB::Validate

Purpose: Check tag data validity.

Args: sig = signature of tag being validated, sReport = String to add report information to

Return: icValidateStatusOK if valid, or other error status.

Reimplemented in CIccTagLutAtoB, CIccTagLutBtoA, CIccTagLut8, and CIccTagLut16.

3533{
3534 icValidateStatus rv = CIccTag::Validate(sigPath, sReport, pProfile);
3535
3536 CIccInfo Info;
3537 std::string sSigPathName = Info.GetSigPathName(sigPath);
3538 icSignature sig = icGetFirstSigPathSig(sigPath);
3539
3540 if (!pProfile) {
3541 sReport += icMsgValidateWarning;
3542 sReport += sSigPathName;
3543 sReport += " - Tag validation incomplete: Pointer to profile unavailable.\n";
3545 return rv;
3546 }
3547 icUInt32Number nInput, nOutput;
3548
3549 //Check # of channels
3550 switch(sig) {
3551 case icSigAToB0Tag:
3552 case icSigAToB1Tag:
3553 case icSigAToB2Tag:
3554 case icSigAToB3Tag:
3555 {
3556 nInput = icGetSpaceSamples(pProfile->m_Header.colorSpace);
3557 if (m_nInput!=nInput) {
3558 sReport += icMsgValidateCriticalError;
3559 sReport += sSigPathName;
3560 sReport += " - Incorrect number of input channels.\n";
3562 }
3563
3564 nOutput = icGetSpaceSamples(pProfile->m_Header.pcs);
3565 if (m_nOutput!=nOutput) {
3566 sReport += icMsgValidateCriticalError;
3567 sReport += sSigPathName;
3568 sReport += " - Incorrect number of output channels.\n";
3570 }
3571
3572 break;
3573 }
3574 case icSigBToA0Tag:
3575 case icSigBToA1Tag:
3576 case icSigBToA2Tag:
3577 case icSigBToA3Tag:
3578 {
3579 nInput = icGetSpaceSamples(pProfile->m_Header.pcs);
3580 if (m_nInput!=nInput) {
3581 sReport += icMsgValidateCriticalError;
3582 sReport += sSigPathName;
3583 sReport += " - Incorrect number of input channels.\n";
3585 }
3586
3587 nOutput = icGetSpaceSamples(pProfile->m_Header.colorSpace);
3588 if (m_nOutput!=nOutput) {
3589 sReport += icMsgValidateCriticalError;
3590 sReport += sSigPathName;
3591 sReport += " - Incorrect number of output channels.\n";
3593 }
3594
3595 break;
3596 }
3597 case icSigHToS0Tag:
3598 case icSigHToS1Tag:
3599 case icSigHToS2Tag:
3600 case icSigHToS3Tag:
3601 {
3602 nInput = icGetSpaceSamples(pProfile->m_Header.pcs);
3603 if (m_nInput != nInput) {
3604 sReport += icMsgValidateCriticalError;
3605 sReport += sSigPathName;
3606 sReport += " - Incorrect number of input channels.\n";
3608 }
3609
3610 nOutput = icGetSpaceSamples(pProfile->m_Header.pcs);
3611 if (m_nOutput != nOutput) {
3612 sReport += icMsgValidateCriticalError;
3613 sReport += sSigPathName;
3614 sReport += " - Incorrect number of output channels.\n";
3616 }
3617
3618 break;
3619 }
3620 case icSigGamutTag:
3621 {
3622 nInput = 1;
3623 if (m_nInput!=nInput) {
3624 sReport += icMsgValidateCriticalError;
3625 sReport += sSigPathName;
3626 sReport += " - Incorrect number of input channels.\n";
3628 }
3629
3630 nOutput = icGetSpaceSamples(pProfile->m_Header.colorSpace);
3631 if (m_nOutput!=nOutput) {
3632 sReport += icMsgValidateCriticalError;
3633 sReport += sSigPathName;
3634 sReport += " - Incorrect number of output channels.\n";
3636 }
3637
3638 break;
3639 }
3640 default:
3641 {
3642 nInput = m_nInput;
3643 nOutput = m_nOutput;
3644 }
3645 }
3646
3647 //CLUT check
3648 if (nInput!=nOutput) {
3649 if (!m_CLUT) {
3650 sReport += icMsgValidateCriticalError;
3651 sReport += sSigPathName;
3652 sReport += " - CLUT must be present.\n";
3654 }
3655 }
3656
3657 if (m_CLUT) {
3658 rv = icMaxStatus(rv, m_CLUT->Validate(sigPath, sReport, pProfile));
3659 }
3660
3661 return rv;
3662}
unsigned long icUInt32Number
Definition icProfileHeader.h:262
icUInt32Number icSignature
Definition icProfileHeader.h:271
@ icSigBToA2Tag
Definition icProfileHeader.h:376
@ icSigAToB3Tag
Definition icProfileHeader.h:345
@ icSigHToS3Tag
Definition icProfileHeader.h:420
@ icSigHToS2Tag
Definition icProfileHeader.h:419
@ icSigAToB0Tag
Definition icProfileHeader.h:342
@ icSigBToA1Tag
Definition icProfileHeader.h:375
@ icSigAToB2Tag
Definition icProfileHeader.h:344
@ icSigBToA0Tag
Definition icProfileHeader.h:374
@ icSigHToS1Tag
Definition icProfileHeader.h:418
@ icSigHToS0Tag
Definition icProfileHeader.h:417
@ icSigAToB1Tag
Definition icProfileHeader.h:343
@ icSigBToA3Tag
Definition icProfileHeader.h:377
@ icSigGamutTag
Definition icProfileHeader.h:412
icValidateStatus
Definition IccDefs.h:119
@ icValidateWarning
Definition IccDefs.h:121
@ icValidateCriticalError
Definition IccDefs.h:123
ICCPROFLIB_API icSignature icGetFirstSigPathSig(std::string sigPath)
Definition IccUtil.cpp:1201
ICCPROFLIB_API icUInt32Number icGetSpaceSamples(icColorSpaceSignature sig)
Definition IccUtil.cpp:1303
ICCPROFLIB_API const char * icMsgValidateWarning
Definition IccUtil.cpp:90
ICCPROFLIB_API const char * icMsgValidateCriticalError
Definition IccUtil.cpp:92
ICCPROFLIB_API icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Definition IccUtil.cpp:244
Definition IccUtil.h:303
std::string GetSigPathName(std::string sigPath)
Definition IccUtil.cpp:1614
virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
Definition IccTagBasic.cpp:164
icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
Definition IccTagLut.cpp:3098

References icHeader::colorSpace, CIccInfo::GetSigPathName(), icGetFirstSigPathSig(), icGetSpaceSamples(), icMaxStatus(), icMsgValidateCriticalError, icMsgValidateWarning, icSigAToB0Tag, icSigAToB1Tag, icSigAToB2Tag, icSigAToB3Tag, icSigBToA0Tag, icSigBToA1Tag, icSigBToA2Tag, icSigBToA3Tag, icSigGamutTag, icSigHToS0Tag, icSigHToS1Tag, icSigHToS2Tag, icSigHToS3Tag, icValidateCriticalError, icValidateWarning, m_CLUT, m_nInput, m_nOutput, icHeader::pcs, CIccTag::Validate(), and CIccCLUT::Validate().

Referenced by CIccTagLutAtoB::Validate(), CIccTagLutBtoA::Validate(), CIccTagLut8::Validate(), and CIccTagLut16::Validate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Validate() [2/2]

icValidateStatus CIccTag::Validate ( std::string  sigPath,
std::string &  sReport,
const CIccProfile pProfile = NULL 
) const
virtualinherited

Function: Validate Each derived tag will implement it's own IsValid() function

Parameter(s): sig - signature of tag being validated, sDescription - A string to put tag validation report.

Name: CIccTag::Validate

Purpose: Check tag data validity. In base class we only look at the tag's reserved data value

Args: sig = signature of tag being validated, sReport = String to add report information to

Return: icValidateStatusOK if valid, or other error status.

Reimplemented in CIccTagGamutBoundaryDesc, CIccTagText, CIccTagUtf8Text, CIccTagZipUtf8Text, CIccTagUtf16Text, CIccTagTextDescription, CIccTagSignature, CIccTagNamedColor2, CIccTagXYZ, CIccTagChromaticity, CIccTagCicp, CIccTagSparseMatrixArray, CIccTagNum< T, Tsig >, CIccTagFloatNum< T, Tsig >, CIccTagMeasurement, CIccTagMultiLocalizedUnicode, CIccTagData, CIccTagDateTime, CIccTagColorantOrder, CIccTagColorantTable, CIccTagViewingConditions, CIccTagProfileSeqDesc, CIccTagResponseCurveSet16, CIccTagSpectralDataInfo, CIccTagSpectralViewingConditions, CIccTagEmbeddedHeightImage, CIccTagEmbeddedNormalImage, CIccTagStruct, CIccTagArray, CIccTagDict, CIccTagEmbeddedProfile, CIccTagCurve, CIccTagParametricCurve, CIccTagSegmentedCurve, CIccTagMultiProcessElement, and CIccTagProfileSequenceId.

165{
167
168 if (m_nReserved != 0) {
169 CIccInfo Info;
170 sReport += icMsgValidateNonCompliant;
171 sReport += Info.GetSigPathName(sigPath);
172 sReport += " - Reserved Value must be zero.\n";
173
175 }
176
177 return rv;
178}
@ icValidateOK
Definition IccDefs.h:120
@ icValidateNonCompliant
Definition IccDefs.h:122
ICCPROFLIB_API const char * icMsgValidateNonCompliant
Definition IccUtil.cpp:91
icUInt32Number m_nReserved
Definition IccTagBasic.h:235

References CIccInfo::GetSigPathName(), icMsgValidateNonCompliant, icValidateNonCompliant, icValidateOK, and CIccTag::m_nReserved.

Referenced by CIccTagGamutBoundaryDesc::Validate(), Validate(), CIccTagLutAtoB::Validate(), CIccTagLutBtoA::Validate(), CIccTagLut8::Validate(), CIccTagLut16::Validate(), CIccArrayUnknown::Validate(), CIccArrayColorantInfo::Validate(), CIccArrayNamedColor::Validate(), CIccStructUnknown::Validate(), CIccTagText::Validate(), CIccTagUtf8Text::Validate(), CIccTagZipUtf8Text::Validate(), CIccTagUtf16Text::Validate(), CIccTagTextDescription::Validate(), CIccTagSignature::Validate(), CIccTagNamedColor2::Validate(), CIccTagXYZ::Validate(), CIccTagChromaticity::Validate(), CIccTagCicp::Validate(), CIccTagNum< T, Tsig >::Validate(), CIccTagFloatNum< T, Tsig >::Validate(), CIccTagMeasurement::Validate(), CIccTagMultiLocalizedUnicode::Validate(), CIccTagData::Validate(), CIccTagDateTime::Validate(), CIccTagColorantOrder::Validate(), CIccTagColorantTable::Validate(), CIccTagViewingConditions::Validate(), CIccTagProfileSeqDesc::Validate(), CIccTagResponseCurveSet16::Validate(), CIccTagSpectralDataInfo::Validate(), CIccTagSpectralViewingConditions::Validate(), CIccTagEmbeddedHeightImage::Validate(), CIccTagEmbeddedNormalImage::Validate(), CIccTagStruct::Validate(), CIccTagArray::Validate(), CIccTagDict::Validate(), CIccTagEmbeddedProfile::Validate(), CIccTagCurve::Validate(), CIccTagParametricCurve::Validate(), and CIccTagProfileSequenceId::Validate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Write()

virtual bool CIccTag::Write ( CIccIO pIO)
inlinevirtualinherited

Field Documentation

◆ m_bInputMatrix

◆ m_bUseMCurvesAsBCurves

◆ m_CLUT

◆ m_csInput

icColorSpaceSignature CIccMBB::m_csInput
protected

◆ m_csOutput

icColorSpaceSignature CIccMBB::m_csOutput
protected

◆ m_CurvesA

◆ m_CurvesB

◆ m_CurvesM

◆ m_Matrix

◆ m_nInput

◆ m_nOutput

◆ m_nReserved

icUInt32Number CIccTag::m_nReserved
inherited

Referenced by CIccTag::CIccTag(), CIccTagMultiProcessElement::CIccTagMultiProcessElement(), CIccTagMultiProcessElement::CIccTagMultiProcessElement(), CIccTagMultiProcessElement::operator=(), CIccProfileXml::ParseTag(), CIccTagXmlStruct::ParseTag(), CIccMpeXmlTintArray::ParseXml(), CIccTagXmlArray::ParseXml(), CIccTagText::Read(), CIccTagUtf8Text::Read(), CIccTagZipUtf8Text::Read(), CIccTagUtf16Text::Read(), CIccTagTextDescription::Read(), CIccTagSignature::Read(), CIccTagNamedColor2::Read(), CIccTagXYZ::Read(), CIccTagChromaticity::Read(), CIccTagCicp::Read(), CIccTagSparseMatrixArray::Read(), CIccTagFixedNum< T, Tsig >::Read(), CIccTagNum< T, Tsig >::Read(), CIccTagFloatNum< T, Tsig >::Read(), CIccTagMeasurement::Read(), CIccTagMultiLocalizedUnicode::Read(), CIccTagData::Read(), CIccTagDateTime::Read(), CIccTagColorantOrder::Read(), CIccTagColorantTable::Read(), CIccTagViewingConditions::Read(), CIccTagProfileSeqDesc::Read(), CIccTagResponseCurveSet16::Read(), CIccTagSpectralDataInfo::Read(), CIccTagSpectralViewingConditions::Read(), CIccTagEmbeddedHeightImage::Read(), CIccTagEmbeddedNormalImage::Read(), CIccTagStruct::Read(), CIccTagArray::Read(), CIccTagDict::Read(), CIccTagCurve::Read(), CIccTagParametricCurve::Read(), CIccTagLutAtoB::Read(), CIccTagLut8::Read(), CIccTagLut16::Read(), CIccTagGamutBoundaryDesc::Read(), CIccTagMultiProcessElement::Read(), CIccTagProfileSequenceId::Read(), CIccTagEmbeddedProfile::Read(), CIccTag::Validate(), CIccTagText::Write(), CIccTagUtf8Text::Write(), CIccTagZipUtf8Text::Write(), CIccTagUtf16Text::Write(), CIccTagTextDescription::Write(), CIccTagSignature::Write(), CIccTagNamedColor2::Write(), CIccTagXYZ::Write(), CIccTagChromaticity::Write(), CIccTagCicp::Write(), CIccTagSparseMatrixArray::Write(), CIccTagFixedNum< T, Tsig >::Write(), CIccTagNum< T, Tsig >::Write(), CIccTagFloatNum< T, Tsig >::Write(), CIccTagMeasurement::Write(), CIccTagMultiLocalizedUnicode::Write(), CIccTagData::Write(), CIccTagDateTime::Write(), CIccTagColorantOrder::Write(), CIccTagColorantTable::Write(), CIccTagViewingConditions::Write(), CIccTagProfileSeqDesc::Write(), CIccTagResponseCurveSet16::Write(), CIccTagSpectralDataInfo::Write(), CIccTagSpectralViewingConditions::Write(), CIccTagEmbeddedHeightImage::Write(), CIccTagEmbeddedNormalImage::Write(), CIccTagStruct::Write(), CIccTagArray::Write(), CIccTagDict::Write(), CIccTagEmbeddedProfile::Write(), CIccTagCurve::Write(), CIccTagParametricCurve::Write(), CIccTagLutAtoB::Write(), CIccTagLut8::Write(), CIccTagLut16::Write(), CIccTagGamutBoundaryDesc::Write(), CIccTagMultiProcessElement::Write(), and CIccTagProfileSequenceId::Write().


The documentation for this class was generated from the following files: