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

#include <IccMpeXml.h>

+ Inheritance diagram for CIccMpeXmlEmissionCLUT:
+ Collaboration diagram for CIccMpeXmlEmissionCLUT:

Public Member Functions

virtual ~CIccMpeXmlEmissionCLUT ()
 
virtual void Apply (CIccApplyMpe *pApply, icFloatNumber *dstPixel, const icFloatNumber *srcPixel) const
 
virtual bool Begin (icElemInterp nInterp, CIccTagMultiProcessElement *pMPE)
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 
CIccCLUTGetApplyCLUT ()
 
virtual icAcsSignature GetBAcsSig ()
 
virtual const char * GetClassName () const
 
CIccCLUTGetCLUT ()
 
virtual icAcsSignature GetEAcsSig ()
 
virtual const char * GetExtClassName ()
 
virtual IIccExtensionMpeGetExtension ()
 
virtual CIccApplyMpeGetNewApply (CIccApplyTagMpe *pApplyTag)
 
virtual icElemTypeSignature GetType () const
 
icFloatNumberGetWhite ()
 
virtual bool IsAcs ()
 
virtual bool IsLateBinding () const
 
virtual bool IsLateBindingReflectance () const
 
virtual bool IsSupported ()
 
virtual CIccMultiProcessElementNewCopy () const
 
virtual icUInt16Number NumInputChannels () const
 
virtual icUInt16Number NumOutputChannels () const
 
virtual bool ParseXml (xmlNode *pNode, std::string &parseStr)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 
void SetData (CIccCLUT *pCLUT, icUInt16Number nStorageType, const icSpectralRange &range, icFloatNumber *pWhite, icUInt16Number nOutputChannels=3)
 
virtual bool ToXml (std::string &xml, std::string blanks="")
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccTagMultiProcessElement *pMPE=NULL, const CIccProfile *pProfile=NULL) const
 
virtual bool Write (CIccIO *pIO)
 

Static Public Member Functions

static CIccMultiProcessElementCreate (icElemTypeSignature sig)
 

Data Fields

icUInt32Number m_nReserved
 

Protected Member Functions

void copyData (const CIccMpeSpectralCLUT &ITPC)
 
virtual const char * GetDescribeName () const
 

Protected Attributes

icUInt32Number m_flags
 
icCLUTElemType m_interpType
 
icUInt16Number m_nInputChannels
 
icUInt16Number m_nOutputChannels
 
icUInt16Number m_nStorageType
 
CIccCLUTm_pApplyCLUT
 
CIccCLUTm_pCLUT
 
icFloatNumberm_pWhite
 
icSpectralRange m_Range
 

Detailed Description

Constructor & Destructor Documentation

◆ ~CIccMpeXmlEmissionCLUT()

virtual CIccMpeXmlEmissionCLUT::~CIccMpeXmlEmissionCLUT ( )
inlinevirtual
372{}

Member Function Documentation

◆ Apply()

void CIccMpeSpectralCLUT::Apply ( CIccApplyMpe pApply,
icFloatNumber dstPixel,
const icFloatNumber srcPixel 
) const
virtualinherited

Name: CIccMpeEmissionCLUT::Apply

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

1279{
1280 const CIccCLUT *pCLUT = m_pApplyCLUT;
1281
1282 switch(m_interpType) {
1283 case ic1dInterp:
1284 pCLUT->Interp1d(dstPixel, srcPixel);
1285 break;
1286 case ic2dInterp:
1287 pCLUT->Interp2d(dstPixel, srcPixel);
1288 break;
1289 case ic3dInterpTetra:
1290 pCLUT->Interp3dTetra(dstPixel, srcPixel);
1291 break;
1292 case ic3dInterp:
1293 pCLUT->Interp3d(dstPixel, srcPixel);
1294 break;
1295 case ic4dInterp:
1296 pCLUT->Interp4d(dstPixel, srcPixel);
1297 break;
1298 case ic5dInterp:
1299 pCLUT->Interp5d(dstPixel, srcPixel);
1300 break;
1301 case ic6dInterp:
1302 pCLUT->Interp6d(dstPixel, srcPixel);
1303 break;
1304 case icNdInterp:
1306 pCLUT->InterpND(dstPixel, srcPixel, pClutApply->m_pApply);
1307 break;
1308 }
1309}
@ ic1dInterp
Definition IccMpeBasic.h:637
@ ic3dInterpTetra
Definition IccMpeBasic.h:639
@ ic6dInterp
Definition IccMpeBasic.h:643
@ icNdInterp
Definition IccMpeBasic.h:644
@ ic2dInterp
Definition IccMpeBasic.h:638
@ ic4dInterp
Definition IccMpeBasic.h:641
@ ic5dInterp
Definition IccMpeBasic.h:642
@ ic3dInterp
Definition IccMpeBasic.h:640
Definition IccTagLut.h:326
void Interp4d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const
Definition IccTagLut.cpp:2683
void Interp2d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const
Definition IccTagLut.cpp:2472
void Interp6d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const
Definition IccTagLut.cpp:2881
void Interp3d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const
Definition IccTagLut.cpp:2613
void Interp5d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const
Definition IccTagLut.cpp:2769
void Interp3dTetra(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const
Definition IccTagLut.cpp:2527
void Interp1d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const
Definition IccTagLut.cpp:2428
void InterpND(icFloatNumber *destPixel, const icFloatNumber *srcPixel, CIccApplyCLUT *pApply) const
Definition IccTagLut.cpp:3033
CIccCLUT * m_pApplyCLUT
Definition IccMpeSpectral.h:243
icCLUTElemType m_interpType
Definition IccMpeSpectral.h:241
Definition IccMpeSpectral.h:254
CIccApplyCLUT * m_pApply
Definition IccMpeSpectral.h:265

References ic1dInterp, ic2dInterp, ic3dInterp, ic3dInterpTetra, ic4dInterp, ic5dInterp, ic6dInterp, icNdInterp, CIccCLUT::Interp1d(), CIccCLUT::Interp2d(), CIccCLUT::Interp3d(), CIccCLUT::Interp3dTetra(), CIccCLUT::Interp4d(), CIccCLUT::Interp5d(), CIccCLUT::Interp6d(), CIccCLUT::InterpND(), CIccMpeSpectralCLUT::m_interpType, CIccApplyMpeSpectralCLUT::m_pApply, and CIccMpeSpectralCLUT::m_pApplyCLUT.

+ Here is the call graph for this function:

◆ Begin()

bool CIccMpeEmissionCLUT::Begin ( icElemInterp  nInterp,
CIccTagMultiProcessElement pMPE 
)
virtualinherited

Name: CIccMpeEmissionCLUT::Begin

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

1422{
1424 return false;
1425
1426 switch (m_nInputChannels) {
1427 case 1:
1429 break;
1430 case 2:
1432 break;
1433 case 3:
1434 if (nInterp==icElemInterpTetra)
1436 else
1438 break;
1439 case 4:
1441 break;
1442 case 5:
1444 break;
1445 case 6:
1447 break;
1448 default:
1450 break;
1451 }
1452
1453 IIccProfileConnectionConditions *pAppliedPCC = pMPE->GetAppliedPCC();
1454 if (!pAppliedPCC)
1455 return false;
1456
1457 const CIccTagSpectralViewingConditions *pSVC = pAppliedPCC->getPccViewingConditions();
1458 if (!pSVC)
1459 return false;
1460
1461 CIccMatrixMath observer(3, m_Range.steps);
1462
1463 if (!pAppliedPCC->getEmissiveObserver(m_Range, m_pWhite, observer.entry(0)))
1464 return false;
1465
1466 if (m_pApplyCLUT)
1467 delete m_pApplyCLUT;
1468
1470
1471 if (!m_pApplyCLUT) {
1472 return false;
1473 }
1474
1477
1478 icFloatNumber *pSrc = m_pCLUT->GetData(0);
1480
1481 icFloatNumber xyzW[3];
1483
1484 observer.VectorMult(xyzW, m_pWhite);
1485
1486 bool bUseAbsolute = (m_flags & icRelativeSpectralData)!=0;
1487 bool bLab = (m_flags & icLabSpectralData) != 0;
1488
1489 for (i=0; i<m_pCLUT->NumPoints(); i++) {
1490 observer.VectorMult(pDst, pSrc);
1491 if (bLab) {
1492 icXYZtoLab(pDst, pDst, xyzW);
1493// icLabToPcs(pDst);
1494 }
1495 else {
1496// icXyzToPcs(pDst);
1497 }
1498 pSrc += m_Range.steps;
1499 pDst += m_nOutputChannels;
1500 }
1501
1503
1504 return true;
1505}
unsigned char icUInt8Number
Definition icProfileHeader.h:250
unsigned short icUInt16Number
Definition icProfileHeader.h:256
#define icRelativeSpectralData
Definition icProfileHeader.h:1105
icUInt16Number steps
Definition icProfileHeader.h:1469
unsigned long icUInt32Number
Definition icProfileHeader.h:262
#define icLabSpectralData
Definition icProfileHeader.h:1108
static icFloatNumber NoClip(icFloatNumber v)
Definition IccMpeBasic.cpp:5377
float icFloatNumber
Definition IccDefs.h:101
ICCPROFLIB_API void icXYZtoLab(icFloatNumber *Lab, const icFloatNumber *XYZ=NULL, const icFloatNumber *WhiteXYZ=NULL)
Definition IccUtil.cpp:846
@ icElemInterpTetra
Definition IccTagMPE.h:95
Definition IccPcc.h:94
icFloatNumber * getEmissiveObserver(const icSpectralRange &range, const icFloatNumber *pWhite, icFloatNumber *obsMatrix=NULL)
Definition IccPcc.cpp:231
virtual const CIccTagSpectralViewingConditions * getPccViewingConditions()=0
Definition IccMatrixMath.h:94
Definition IccTagBasic.h:1692
icUInt16Number GetOutputChannels() const
Definition IccTagLut.h:357
void SetClipFunc(icCLUTCLIPFUNC ClipFunc)
Definition IccTagLut.h:379
void Begin()
Definition IccTagLut.cpp:2221
icUInt32Number NumPoints() const
Definition IccTagLut.h:348
icFloatNumber * GetData(int index)
Definition IccTagLut.h:347
const icUInt8Number * GridPointArray() const
Definition IccTagLut.h:351
bool Init(icUInt8Number nGridPoints, icUInt32Number nMaxSize=0, icUInt8Number nBytesPerPoint=4)
Definition IccTagLut.cpp:1806
icUInt16Number m_nOutputChannels
Definition IccTagMPE.h:192
icUInt16Number m_nInputChannels
Definition IccTagMPE.h:191
IIccProfileConnectionConditions * GetAppliedPCC()
Definition IccTagMPE.h:403
icUInt32Number m_flags
Definition IccMpeSpectral.h:236
CIccCLUT * m_pCLUT
Definition IccMpeSpectral.h:240
icSpectralRange m_Range
Definition IccMpeSpectral.h:234
icFloatNumber * m_pWhite
Definition IccMpeSpectral.h:238

References CIccCLUT::CIccCLUT(), CIccMatrixMath::CIccMatrixMath(), CIccCLUT::Begin(), CIccMatrixMath::entry(), CIccTagMultiProcessElement::GetAppliedPCC(), CIccCLUT::GetData(), IIccProfileConnectionConditions::getEmissiveObserver(), CIccCLUT::GetOutputChannels(), IIccProfileConnectionConditions::getPccViewingConditions(), CIccCLUT::GridPointArray(), ic1dInterp, ic2dInterp, ic3dInterp, ic3dInterpTetra, ic4dInterp, ic5dInterp, ic6dInterp, icElemInterpTetra, icNdInterp, icXYZtoLab(), CIccCLUT::Init(), CIccMpeSpectralCLUT::m_flags, CIccMpeSpectralCLUT::m_interpType, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMpeSpectralCLUT::m_pApplyCLUT, CIccMpeSpectralCLUT::m_pCLUT, CIccMpeSpectralCLUT::m_pWhite, CIccMpeSpectralCLUT::m_Range, NoClip(), CIccCLUT::NumPoints(), CIccCLUT::SetClipFunc(), icSpectralRange::steps, and CIccMatrixMath::VectorMult().

+ Here is the call graph for this function:

◆ copyData()

void CIccMpeSpectralCLUT::copyData ( const CIccMpeSpectralCLUT clut)
protectedinherited

Name: &CIccMpeSpectralCLUT::operator=

Purpose:

Args:

Return:

863{
864 if (m_pCLUT)
865 delete m_pCLUT;
866
867 if (m_pApplyCLUT)
868 delete m_pApplyCLUT;
869
870 if (m_pWhite)
871 free(m_pWhite);
872
873 if (clut.m_pCLUT)
874 m_pCLUT = new CIccCLUT(*clut.m_pCLUT);
875 else
876 m_pCLUT = NULL;
877
878 if (clut.m_pApplyCLUT)
880 else
881 m_pApplyCLUT = NULL;
882
883 if (clut.m_pWhite) {
884 m_pWhite = (icFloatNumber *)malloc((int)clut.m_Range.steps*sizeof(icFloatNumber));
885 memcpy(m_pWhite, clut.m_pWhite, clut.m_Range.steps*sizeof(icFloatNumber));
886 }
887 else
888 m_pWhite = NULL;
889
893
894 m_Range = clut.m_Range;
896 m_flags = clut.m_flags;
897}
icUInt32Number m_nReserved
Definition IccTagMPE.h:188
icUInt16Number m_nStorageType
Definition IccMpeSpectral.h:235

References CIccCLUT::CIccCLUT(), CIccMpeSpectralCLUT::m_flags, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMultiProcessElement::m_nReserved, CIccMpeSpectralCLUT::m_nStorageType, CIccMpeSpectralCLUT::m_pApplyCLUT, CIccMpeSpectralCLUT::m_pCLUT, CIccMpeSpectralCLUT::m_pWhite, CIccMpeSpectralCLUT::m_Range, and icSpectralRange::steps.

Referenced by CIccMpeEmissionCLUT::operator=(), and CIccMpeReflectanceCLUT::operator=().

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

◆ Create()

CIccMultiProcessElement * CIccMultiProcessElement::Create ( icElemTypeSignature  sig)
staticinherited

Name: CIccMultiProcessElement::Create

Purpose:

Args:

Return:

132{
134}
static CIccMultiProcessElement * CreateElement(icElemTypeSignature elemTypeSig)
Definition IccMpeFactory.h:213

References CIccMpeCreator::CreateElement().

Referenced by CIccDefaultEncProfileConverter::ConvertFromParams(), CIccSampledCalculatorCurve::Read(), CIccMpeCalculator::Read(), and CIccTagMultiProcessElement::Read().

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

◆ Describe()

void CIccMpeSpectralCLUT::Describe ( std::string &  sDescription,
int  nVerboseness 
)
virtualinherited

Name: CIccMpeSpectralCLUT::Describe

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

972{
973 if (m_pCLUT) {
974 m_pCLUT->DumpLut(sDescription, GetDescribeName(), icSigUnknownData, icSigUnknownData, nVerboseness);
975 }
976}
#define icSigUnknownData
Definition icProfileHeader.h:903
void DumpLut(std::string &sDescription, const icChar *szName, icColorSpaceSignature csInput, icColorSpaceSignature csOutput, int nVerboseness, bool bUseLegacy=false)
Definition IccTagLut.cpp:2157
virtual const char * GetDescribeName() const =0

References CIccCLUT::DumpLut(), CIccMpeSpectralCLUT::GetDescribeName(), and CIccMpeSpectralCLUT::m_pCLUT.

+ Here is the call graph for this function:

◆ GetApplyCLUT()

CIccCLUT * CIccMpeSpectralCLUT::GetApplyCLUT ( )
inlineinherited
225{ return m_pApplyCLUT; }

References CIccMpeSpectralCLUT::m_pApplyCLUT.

◆ GetBAcsSig()

virtual icAcsSignature CIccMultiProcessElement::GetBAcsSig ( )
inlinevirtualinherited

Reimplemented in CIccMpeBAcs.

178{ return icSigAcsZero; }
#define icSigAcsZero
Definition icProfileHeader.h:1100

Referenced by CIccMpeAcs::Describe().

+ Here is the caller graph for this function:

◆ GetClassName()

virtual const char * CIccMpeXmlEmissionCLUT::GetClassName ( ) const
inlinevirtual

Reimplemented from CIccMpeEmissionCLUT.

374{ return "CIccMpeXmlEmissionCLUT"; }

◆ GetCLUT()

CIccCLUT * CIccMpeSpectralCLUT::GetCLUT ( )
inlineinherited
224{ return m_pCLUT; }

References CIccMpeSpectralCLUT::m_pCLUT.

◆ GetDescribeName()

virtual const char * CIccMpeEmissionCLUT::GetDescribeName ( ) const
inlineprotectedvirtualinherited

Implements CIccMpeSpectralCLUT.

292{ return "ELEM_EMISSION_CLUT"; }

◆ GetEAcsSig()

virtual icAcsSignature CIccMultiProcessElement::GetEAcsSig ( )
inlinevirtualinherited

Reimplemented in CIccMpeEAcs.

179{ return icSigAcsZero; }

◆ GetExtClassName()

virtual const char * CIccMpeXml::GetExtClassName ( )
inlinevirtualinherited

Implements IIccExtensionMpe.

84{ return "CIccMpeXml"; }

◆ GetExtension()

virtual IIccExtensionMpe * CIccMpeXmlEmissionCLUT::GetExtension ( )
inlinevirtual

Reimplemented from CIccMultiProcessElement.

376{ return this; }

◆ GetNewApply()

CIccApplyMpe * CIccMpeSpectralCLUT::GetNewApply ( CIccApplyTagMpe pApplyTag)
virtualinherited

Name: CIccMpeSpectralCLUT::GetNewApply

Purpose:

Args:

Return:

Reimplemented from CIccMultiProcessElement.

1252{
1253 if (!m_pCLUT) {
1254 return NULL;
1255 }
1256
1257 CIccApplyCLUT* pApply = m_pCLUT->GetNewApply();
1258 if (!pApply)
1259 return NULL;
1260
1261 CIccApplyMpeSpectralCLUT* rv = new CIccApplyMpeSpectralCLUT(this, pApply);
1262 if (!rv)
1263 delete pApply;
1264
1265 return rv;
1266}
Definition IccTagLut.h:302
CIccApplyCLUT * GetNewApply()
Definition IccTagLut.cpp:2403

References CIccApplyMpeSpectralCLUT::CIccApplyMpeSpectralCLUT(), CIccCLUT::GetNewApply(), and CIccMpeSpectralCLUT::m_pCLUT.

+ Here is the call graph for this function:

◆ GetType()

virtual icElemTypeSignature CIccMpeEmissionCLUT::GetType ( ) const
inlinevirtualinherited

Implements CIccMultiProcessElement.

@ icSigEmissionCLUTElemType
Definition icProfileHeader.h:662

References icSigEmissionCLUTElemType.

◆ GetWhite()

icFloatNumber * CIccMpeSpectralCLUT::GetWhite ( )
inlineinherited
226{ return m_pWhite; }

References CIccMpeSpectralCLUT::m_pWhite.

◆ IsAcs()

virtual bool CIccMultiProcessElement::IsAcs ( )
inlinevirtualinherited

Reimplemented in CIccMpeAcs.

177{ return false; }

Referenced by CIccTagMultiProcessElement::Apply().

+ Here is the caller graph for this function:

◆ IsLateBinding()

virtual bool CIccMpeSpectralCLUT::IsLateBinding ( ) const
inlinevirtualinherited

Reimplemented from CIccMultiProcessElement.

228{ return true; }

◆ IsLateBindingReflectance()

virtual bool CIccMultiProcessElement::IsLateBindingReflectance ( ) const
inlinevirtualinherited

Reimplemented in CIccMpeCalculator, CIccMpeReflectanceCLUT, and CIccMpeReflectanceObserver.

185{ return false; }

Referenced by CIccMpeCalculator::IsLateBindingReflectance(), and CIccTagMultiProcessElement::IsLateBindingReflectance().

+ Here is the caller graph for this function:

◆ IsSupported()

virtual bool CIccMultiProcessElement::IsSupported ( )
inlinevirtualinherited

Reimplemented in CIccMpeUnknown.

162{ return true; }

Referenced by CIccTagMultiProcessElement::IsSupported().

+ Here is the caller graph for this function:

◆ NewCopy()

virtual CIccMultiProcessElement * CIccMpeEmissionCLUT::NewCopy ( ) const
inlinevirtualinherited

Implements CIccMultiProcessElement.

283{ return new CIccMpeEmissionCLUT(*this);}
CIccMpeEmissionCLUT()
Definition IccMpeSpectral.h:280

References CIccMpeEmissionCLUT::CIccMpeEmissionCLUT().

+ Here is the call graph for this function:

◆ NumInputChannels()

◆ NumOutputChannels()

◆ ParseXml()

bool CIccMpeXmlEmissionCLUT::ParseXml ( xmlNode *  pNode,
std::string &  parseStr 
)
virtual

Implements CIccMpeXml.

3222{
3223 m_nStorageType = (icUInt16Number)atoi(icXmlAttrValue(pNode, "StorageType", "0"));
3224
3225 m_nInputChannels = atoi(icXmlAttrValue(pNode, "InputChannels"));
3226 m_nOutputChannels = atoi(icXmlAttrValue(pNode, "OutputChannels"));
3227 m_flags = atoi(icXmlAttrValue(pNode, "Flags", 0));
3228
3230 parseStr += "Invalid InputChannels or OutputChannels In CLutElement\n";
3231 return false;
3232 }
3233
3234 xmlNode *pData;
3235
3236 pData = icXmlFindNode(pNode->children, "Wavelengths");
3237 if (pData) {
3238 icFloatNumber dStart = (icFloatNumber)atof(icXmlAttrValue(pData, "start"));
3239 icFloatNumber dEnd = (icFloatNumber)atof(icXmlAttrValue(pData, "end"));
3240 icUInt16Number nSteps = atoi(icXmlAttrValue(pData, "steps"));
3241
3242 if (dStart >= dEnd ||!nSteps) {
3243 parseStr += "Invalid Spectral Range\n";
3244 return false;
3245 }
3246 m_Range.start = icFtoF16(dStart);
3247 m_Range.end = icFtoF16(dEnd);
3248 m_Range.steps = nSteps;
3249 }
3250 else {
3251 parseStr += "Missing Spectral Range\n";
3252 return false;
3253 }
3254
3255 if (m_pWhite)
3256 free(m_pWhite);
3257
3258 m_pWhite = (icFloatNumber *)malloc(m_Range.steps*sizeof(icFloatNumber));
3259 if (!m_pWhite) {
3260 parseStr += "White buffer memory error\n";
3261 return false;
3262 }
3263
3264 pData = icXmlFindNode(pNode->children, "WhiteData");
3265 if (pData) {
3266
3267 if (!CIccFloatArray::ParseArray(m_pWhite, m_Range.steps, pData->children))
3268 return false;
3269 }
3270 else {
3271 parseStr += "Missing White Data";
3272 }
3273
3274 if (m_pCLUT) {
3275 delete m_pCLUT;
3276 m_pCLUT = NULL;
3277 }
3278
3279 if (m_pApplyCLUT) {
3280 delete m_pApplyCLUT;
3281 m_pApplyCLUT = NULL;
3282 }
3283
3285 if (pCLut) {
3286 m_pCLUT = pCLut;
3287 return true;
3288 }
3289
3290 return false;
3291}
icFloat16Number start
Definition icProfileHeader.h:1467
icFloat16Number end
Definition icProfileHeader.h:1468
ICCPROFLIB_API icFloat16Number icFtoF16(icFloat32Number num)
Definition IccUtil.cpp:673
@ icConvertFloat
Definition IccXmlConfig.h:70
xmlNode * icXmlFindNode(xmlNode *pNode, const char *szNodeName)
Definition IccUtilXml.cpp:687
const char * icXmlAttrValue(xmlAttr *attr, const char *szDefault="")
Definition IccUtilXml.cpp:572
CIccCLUT * icCLutFromXml(xmlNode *pNode, int nIn, int nOut, icConvertType nType, std::string &parseStr)
Definition IccTagXml.cpp:3327
static bool ParseArray(T *buf, icUInt32Number nBufSize, xmlNode *pNode)
Definition IccUtilXml.cpp:1034

References icSpectralRange::end, icCLutFromXml(), icConvertFloat, icFtoF16(), icXmlAttrValue(), icXmlFindNode(), CIccMpeSpectralCLUT::m_flags, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMpeSpectralCLUT::m_nStorageType, CIccMpeSpectralCLUT::m_pApplyCLUT, CIccMpeSpectralCLUT::m_pCLUT, CIccMpeSpectralCLUT::m_pWhite, CIccMpeSpectralCLUT::m_Range, CIccXmlArrayType< T, Tsig >::ParseArray(), icSpectralRange::start, and icSpectralRange::steps.

+ Here is the call graph for this function:

◆ Read()

bool CIccMpeSpectralCLUT::Read ( icUInt32Number  size,
CIccIO pIO 
)
virtualinherited

Name: CIccMpeSpectralCLUT::Read

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

990{
992
993 icUInt32Number headerSize = sizeof(icTagTypeSignature) +
994 sizeof(icUInt32Number) +
995 sizeof(icUInt32Number) +
996 sizeof(icUInt16Number) +
997 sizeof(icUInt16Number) +
998 sizeof(icUInt16Number) +
999 sizeof(icUInt16Number) +
1000 sizeof(icUInt16Number) +
1001 sizeof(icUInt16Number) +
1002 16 * sizeof(icUInt8Number);
1003
1004 if (headerSize > size)
1005 return false;
1006
1007 if (!pIO) {
1008 return false;
1009 }
1010
1011 if (!pIO->Read32(&sig))
1012 return false;
1013
1014 if (!pIO->Read32(&m_nReserved))
1015 return false;
1016
1017 if (!pIO->Read16(&m_nInputChannels))
1018 return false;
1019
1020 if (!pIO->Read16(&m_nOutputChannels))
1021 return false;
1022
1023 if (!pIO->Read32(&m_flags))
1024 return false;
1025
1026 if (!pIO->Read16(&m_Range.start))
1027 return false;
1028
1029 if (!pIO->Read16(&m_Range.end))
1030 return false;
1031
1032 if (!pIO->Read16(&m_Range.steps))
1033 return false;
1034
1035 if (!pIO->Read16(&m_nStorageType))
1036 return false;
1037
1038 icUInt8Number gridPoints[16];
1039
1040 if (pIO->Read8(gridPoints, 16)!=16) {
1041 return false;
1042 }
1043
1045
1046 if (!m_pCLUT)
1047 return false;
1048
1051
1052 if (!nBytesPerPoint)
1053 return false;
1054
1055 m_pCLUT->Init(gridPoints, size - headerSize, (icUInt8Number)nBytesPerPoint);
1056
1057 icFloatNumber *pData = m_pCLUT->GetData(0);
1058
1059 if (!pData)
1060 return false;
1061
1062 icInt32Number nPoints = m_pCLUT->NumPoints()*(int)m_Range.steps;
1063
1064 switch(m_nStorageType) {
1065 case icValueTypeUInt8:
1066 if (pIO->ReadUInt8Float(pData,nPoints)!= nPoints)
1067 return false;
1068 break;
1069
1070 case icValueTypeUInt16:
1071 if (pIO->ReadUInt16Float(pData,nPoints)!= nPoints)
1072 return false;
1073 break;
1074
1075 case icValueTypeFloat16:
1076 if (pIO->ReadFloat16Float(pData,nPoints)!= nPoints)
1077 return false;
1078 break;
1079
1080 case icValueTypeFloat32:
1081 if (pIO->ReadFloat32Float(pData,nPoints)!= nPoints)
1082 return false;
1083 break;
1084
1085 default:
1086 return false;
1087 }
1088
1089 if (m_Range.steps *nBytesPerPoint > size - headerSize - nPoints*nBytesPerPoint)
1090 return false;
1091
1092 m_pWhite = (icFloatNumber *)malloc((int)m_Range.steps*sizeof(icFloatNumber));
1093 if (!m_pWhite)
1094 return false;
1095
1096 switch(m_nStorageType) {
1097 case icValueTypeUInt8:
1099 return false;
1100 break;
1101
1102 case icValueTypeUInt16:
1104 return false;
1105 break;
1106
1107 case icValueTypeFloat16:
1109 return false;
1110 break;
1111
1112 case icValueTypeFloat32:
1114 return false;
1115 break;
1116
1117 default:
1118 return false;
1119 }
1120
1121
1122 return true;
1123}
long icInt32Number
Definition icProfileHeader.h:291
icTagTypeSignature
Definition icProfileHeader.h:526
@ icValueTypeFloat16
Definition icProfileHeader.h:1087
@ icValueTypeUInt8
Definition icProfileHeader.h:1089
@ icValueTypeUInt16
Definition icProfileHeader.h:1088
@ icValueTypeFloat32
Definition icProfileHeader.h:1086
ICCPROFLIB_API icUInt8Number icGetStorageTypeBytes(icUInt16Number nStorageType)
Definition IccUtil.cpp:1375
icInt32Number ReadFloat16Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:269
icInt32Number ReadFloat32Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:302
virtual icInt32Number Read8(void *pBuf8, icInt32Number nNum=1)
Definition IccIO.h:104
icInt32Number Read16(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:114
icInt32Number ReadUInt8Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:203
icInt32Number ReadUInt16Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:236
icInt32Number Read32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:143

References CIccCLUT::CIccCLUT(), icSpectralRange::end, CIccCLUT::GetData(), icGetStorageTypeBytes(), icValueTypeFloat16, icValueTypeFloat32, icValueTypeUInt16, icValueTypeUInt8, CIccCLUT::Init(), CIccMpeSpectralCLUT::m_flags, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMultiProcessElement::m_nReserved, CIccMpeSpectralCLUT::m_nStorageType, CIccMpeSpectralCLUT::m_pCLUT, CIccMpeSpectralCLUT::m_pWhite, CIccMpeSpectralCLUT::m_Range, NoClip(), CIccCLUT::NumPoints(), CIccIO::Read16(), CIccIO::Read32(), CIccIO::Read8(), CIccIO::ReadFloat16Float(), CIccIO::ReadFloat32Float(), CIccIO::ReadUInt16Float(), CIccIO::ReadUInt8Float(), CIccCLUT::SetClipFunc(), icSpectralRange::start, and icSpectralRange::steps.

+ Here is the call graph for this function:

◆ SetData()

void CIccMpeSpectralCLUT::SetData ( CIccCLUT pCLUT,
icUInt16Number  nStorageType,
const icSpectralRange range,
icFloatNumber pWhite,
icUInt16Number  nOutputChannels = 3 
)
inherited

Name: CIccMpeSpectralCLUT::SetCLUT

Purpose:

Args:

Return:

935{
936 if (m_pCLUT)
937 delete m_pCLUT;
938
939 m_pCLUT = pCLUT;
940 if (pCLUT) {
941 pCLUT->SetClipFunc(NoClip);
942 m_nInputChannels = pCLUT->GetInputDim();
943 m_nOutputChannels = nOutputChannels;
944 }
945
946 m_nStorageType = nStorageType;
947
948 if (m_pApplyCLUT) {
949 delete m_pApplyCLUT;
950 m_pApplyCLUT = NULL;
951 }
952
953 m_Range = range;
954
955 if (m_pWhite)
956 free(m_pWhite);
957
958 m_pWhite = pWhite;
959}
icUInt8Number GetInputDim() const
Definition IccTagLut.h:356

References CIccCLUT::GetInputDim(), CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMpeSpectralCLUT::m_nStorageType, CIccMpeSpectralCLUT::m_pApplyCLUT, CIccMpeSpectralCLUT::m_pCLUT, CIccMpeSpectralCLUT::m_pWhite, CIccMpeSpectralCLUT::m_Range, NoClip(), and CIccCLUT::SetClipFunc().

+ Here is the call graph for this function:

◆ ToXml()

bool CIccMpeXmlEmissionCLUT::ToXml ( std::string &  xml,
std::string  blanks = "" 
)
virtual

Implements CIccMpeXml.

3181{
3182 char buf[256];
3183 std::string reserved;
3184
3185 xml += blanks + "<EmissionCLutElement";
3186
3187 if (m_nReserved) {
3188 sprintf(buf, " Reserved=\"%u\"", m_nReserved);
3189 xml += buf;
3190 }
3191
3192 sprintf(buf, " InputChannels=\"%d\" OutputChannels=\"%d\" Flags=\"%d\" StorageType=\"%d\">\n", NumInputChannels(), NumOutputChannels(), m_flags, m_nStorageType);
3193 xml += buf;
3194
3195 sprintf(buf, " <Wavelengths start=\"" icXmlHalfFmt "\" end=\"" icXmlHalfFmt "\" steps=\"%d\"/>\n", icF16toF(m_Range.start), icF16toF(m_Range.end), m_Range.steps);
3196 xml += blanks + buf;
3197
3198 int i;
3199
3200 if (m_pWhite) {
3201 xml += blanks + " <WhiteData>\n";
3202
3203 xml += blanks + " ";
3204 for (i=0; i<(int)m_Range.steps; i++) {
3205 sprintf(buf, " " icXmlFloatFmt, m_pWhite[i]);
3206 xml += buf;
3207 }
3208 xml += "\n";
3209
3210 xml += blanks + " </WhiteData>\n";
3211 }
3212
3213 if (!icCLUTDataToXml(xml, m_pCLUT, icConvertFloat, blanks, true))
3214 return false;
3215
3216 xml += blanks + "</EmissionCLutElement>\n";
3217
3218 return true;
3219}
ICCPROFLIB_API icFloat32Number icF16toF(icFloat16Number num)
Definition IccUtil.cpp:629
#define icXmlHalfFmt
Definition IccXmlConfig.h:74
#define icXmlFloatFmt
Definition IccXmlConfig.h:75
bool icCLUTDataToXml(std::string &xml, CIccCLUT *pCLUT, icConvertType nType, std::string blanks, bool bSaveGridPoints=false)
Definition IccUtilXml.cpp:485
virtual icUInt16Number NumInputChannels() const
Definition IccTagMPE.h:159
virtual icUInt16Number NumOutputChannels() const
Definition IccTagMPE.h:160

References icSpectralRange::end, icCLUTDataToXml(), icConvertFloat, icF16toF(), CIccMpeSpectralCLUT::m_flags, CIccMultiProcessElement::m_nReserved, CIccMpeSpectralCLUT::m_nStorageType, CIccMpeSpectralCLUT::m_pCLUT, CIccMpeSpectralCLUT::m_pWhite, CIccMpeSpectralCLUT::m_Range, CIccMultiProcessElement::NumInputChannels(), CIccMultiProcessElement::NumOutputChannels(), icSpectralRange::start, and icSpectralRange::steps.

+ Here is the call graph for this function:

◆ Validate()

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

Name: CIccMpeSpectralCLUT::Validate

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

1323{
1324 std::string mpeSigPath = sigPath + icGetSigPath(GetType());
1325 icValidateStatus rv = CIccMultiProcessElement::Validate(sigPath, sReport, pMPE, pProfile);
1326
1328 CIccInfo Info;
1329 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
1330
1331 sReport += icMsgValidateCriticalError;
1332 sReport += sSigPathName;
1333 sReport += " - Invalid storageType value!\n";
1335 }
1336
1337 if (!m_pCLUT) {
1338 CIccInfo Info;
1339 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
1340
1341 sReport += icMsgValidateCriticalError;
1342 sReport += sSigPathName;
1343 sReport += " - Has No CLUT!\n";
1345 }
1346
1347 if (!m_pWhite) {
1348 CIccInfo Info;
1349 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
1350
1351 sReport += icMsgValidateCriticalError;
1352 sReport += sSigPathName;
1353 sReport += " - Has Empty White data!\n";
1355 }
1356
1357 if (!m_Range.steps) {
1358 CIccInfo Info;
1359 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
1360
1361 sReport += icMsgValidateCriticalError;
1362 sReport += sSigPathName;
1363 sReport += " - Cannot have zero spectral range steps!\n";
1365 }
1366
1367 if (m_Range.start>= m_Range.end || !m_Range.steps) {
1368 CIccInfo Info;
1369 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
1370
1371 sReport += icMsgValidateCriticalError;
1372 sReport += sSigPathName;
1373 sReport += " - Has an invalid spectral range!\n";
1375 }
1376
1377 return rv;
1378}
#define icMaxValueType
Definition icProfileHeader.h:1092
icValidateStatus
Definition IccDefs.h:119
@ icValidateCriticalError
Definition IccDefs.h:123
ICCPROFLIB_API std::string icGetSigPath(icUInt32Number sig)
Definition IccUtil.cpp:1191
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 icElemTypeSignature GetType() const =0
virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccTagMultiProcessElement *pMPE=NULL, const CIccProfile *pProfile=NULL) const =0
Definition IccTagMPE.cpp:454

References icSpectralRange::end, CIccInfo::GetSigPathName(), CIccMultiProcessElement::GetType(), icGetSigPath(), icMaxStatus(), icMsgValidateCriticalError, icValidateCriticalError, CIccMpeSpectralCLUT::m_nStorageType, CIccMpeSpectralCLUT::m_pCLUT, CIccMpeSpectralCLUT::m_pWhite, CIccMpeSpectralCLUT::m_Range, icSpectralRange::start, icSpectralRange::steps, and CIccMultiProcessElement::Validate().

+ Here is the call graph for this function:

◆ Write()

bool CIccMpeSpectralCLUT::Write ( CIccIO pIO)
virtualinherited

Name: CIccMpeSpectralCLUT::Write

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

1136{
1138
1139 if (!pIO)
1140 return false;
1141
1142 if (!pIO->Write32(&sig))
1143 return false;
1144
1145 if (!pIO->Write32(&m_nReserved))
1146 return false;
1147
1148 if (!pIO->Write16(&m_nInputChannels))
1149 return false;
1150
1151 if (!pIO->Write16(&m_nOutputChannels))
1152 return false;
1153
1154 if (!pIO->Write32(&m_flags))
1155 return false;
1156
1157 if (!pIO->Write16(&m_Range.start))
1158 return false;
1159
1160 if (!pIO->Write16(&m_Range.end))
1161 return false;
1162
1163 if (!pIO->Write16(&m_Range.steps))
1164 return false;
1165
1166 if (!pIO->Write16(&m_nStorageType))
1167 return false;
1168
1169 if (m_pCLUT) {
1170 icUInt8Number gridPoints[16];
1171 int i;
1172
1173 for (i=0; i<16; i++)
1174 gridPoints[i] = m_pCLUT->GridPoint(i);
1175
1176 if (pIO->Write8(gridPoints, 16)!=16)
1177 return false;
1178
1179 icFloatNumber *pData = m_pCLUT->GetData(0);
1180 icInt32Number nPoints = m_pCLUT->NumPoints()*(int)m_Range.steps;
1181
1182 switch(m_nStorageType) {
1183 case icValueTypeUInt8:
1184 if (pIO->WriteUInt8Float(pData,nPoints)!= nPoints)
1185 return false;
1186 break;
1187
1188 case icValueTypeUInt16:
1189 if (pIO->WriteUInt16Float(pData,nPoints)!= nPoints)
1190 return false;
1191 break;
1192
1193 case icValueTypeFloat16:
1194 if (pIO->WriteFloat16Float(pData,nPoints)!= nPoints)
1195 return false;
1196 break;
1197
1198 case icValueTypeFloat32:
1199 if (pIO->WriteFloat32Float(pData,nPoints)!= nPoints)
1200 return false;
1201 break;
1202
1203 default:
1204 return false;
1205 }
1206 }
1207
1208 if (m_pWhite) {
1209 switch(m_nStorageType) {
1210 case icValueTypeUInt8:
1212 return false;
1213 break;
1214
1215 case icValueTypeUInt16:
1217 return false;
1218 break;
1219
1220 case icValueTypeFloat16:
1222 return false;
1223 break;
1224
1225 case icValueTypeFloat32:
1227 return false;
1228 break;
1229
1230 default:
1231 return false;
1232 }
1233 }
1234 else if (m_Range.steps) {
1235 return false;
1236 }
1237
1238 return true;
1239}
icElemTypeSignature
Definition icProfileHeader.h:641
virtual icInt32Number Write8(void *pBuf8, icInt32Number nNum=1)
Definition IccIO.h:105
icInt32Number Write16(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:122
icInt32Number WriteFloat16Float(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:285
icInt32Number Write32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:152
icInt32Number WriteFloat32Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:321
icInt32Number WriteUInt8Float(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:219
icInt32Number WriteUInt16Float(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:252
icUInt8Number GridPoint(int index) const
Definition IccTagLut.h:350

References icSpectralRange::end, CIccCLUT::GetData(), CIccMultiProcessElement::GetType(), CIccCLUT::GridPoint(), icValueTypeFloat16, icValueTypeFloat32, icValueTypeUInt16, icValueTypeUInt8, CIccMpeSpectralCLUT::m_flags, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMultiProcessElement::m_nReserved, CIccMpeSpectralCLUT::m_nStorageType, CIccMpeSpectralCLUT::m_pCLUT, CIccMpeSpectralCLUT::m_pWhite, CIccMpeSpectralCLUT::m_Range, CIccCLUT::NumPoints(), icSpectralRange::start, icSpectralRange::steps, CIccIO::Write16(), CIccIO::Write32(), CIccIO::Write8(), CIccIO::WriteFloat16Float(), CIccIO::WriteFloat32Float(), CIccIO::WriteUInt16Float(), and CIccIO::WriteUInt8Float().

+ Here is the call graph for this function:

Field Documentation

◆ m_flags

◆ m_interpType

icCLUTElemType CIccMpeSpectralCLUT::m_interpType
protectedinherited

◆ m_nInputChannels

icUInt16Number CIccMultiProcessElement::m_nInputChannels
protectedinherited

Referenced by CIccMpeBAcs::CIccMpeBAcs(), CIccMpeBAcs::CIccMpeBAcs(), CIccMpeCalculator::CIccMpeCalculator(), CIccMpeCalculator::CIccMpeCalculator(), CIccMpeCAM::CIccMpeCAM(), CIccMpeCLUT::CIccMpeCLUT(), CIccMpeCLUT::CIccMpeCLUT(), CIccMpeCurveSet::CIccMpeCurveSet(), CIccMpeCurveSet::CIccMpeCurveSet(), CIccMpeEAcs::CIccMpeEAcs(), CIccMpeEAcs::CIccMpeEAcs(), CIccMpeExtCLUT::CIccMpeExtCLUT(), CIccMpeMatrix::CIccMpeMatrix(), CIccMpeMatrix::CIccMpeMatrix(), CIccMpeSpectralCLUT::CIccMpeSpectralCLUT(), CIccMpeSpectralCLUT::CIccMpeSpectralCLUT(), CIccMpeSpectralMatrix::CIccMpeSpectralMatrix(), CIccMpeSpectralMatrix::CIccMpeSpectralMatrix(), CIccMpeSpectralObserver::CIccMpeSpectralObserver(), CIccMpeSpectralObserver::CIccMpeSpectralObserver(), CIccMpeTintArray::CIccMpeTintArray(), CIccMpeTintArray::CIccMpeTintArray(), CIccMpeToneMap::CIccMpeToneMap(), CIccMpeToneMap::CIccMpeToneMap(), CIccMultiProcessElement::CIccMultiProcessElement(), CIccMpeAcs::Apply(), CIccMpeCurveSet::Apply(), CIccMpeMatrix::Apply(), CIccMpeAcs::Begin(), CIccMpeCurveSet::Begin(), CIccMpeMatrix::Begin(), CIccMpeCLUT::Begin(), CIccMpeEmissionMatrix::Begin(), CIccMpeInvEmissionMatrix::Begin(), CIccMpeEmissionCLUT::Begin(), CIccMpeReflectanceCLUT::Begin(), CIccMpeEmissionObserver::Begin(), CIccMpeReflectanceObserver::Begin(), CIccMpeSpectralCLUT::copyData(), CIccMpeSpectralMatrix::copyData(), CIccMpeSpectralObserver::copyData(), CIccMpeCurveSet::Describe(), CIccMpeMatrix::Describe(), CIccMpeCalculator::Describe(), CIccMpeSpectralMatrix::Describe(), CIccMpeSpectralObserver::Describe(), CIccMpeXmlCalculator::Flatten(), CIccMultiProcessElement::NumInputChannels(), CIccMpeEmissionMatrix::numVectors(), CIccMpeBAcs::operator=(), CIccMpeCalculator::operator=(), CIccMpeCLUT::operator=(), CIccMpeCurveSet::operator=(), CIccMpeEAcs::operator=(), CIccMpeMatrix::operator=(), CIccMpeTintArray::operator=(), CIccMpeToneMap::operator=(), CIccMpeXmlTintArray::ParseXml(), CIccMpeXmlToneMap::ParseXml(), CIccMpeXmlMatrix::ParseXml(), CIccMpeXmlCLUT::ParseXml(), CIccMpeXmlExtCLUT::ParseXml(), CIccMpeXmlBAcs::ParseXml(), CIccMpeXmlEAcs::ParseXml(), CIccMpeXmlJabToXYZ::ParseXml(), CIccMpeXmlXYZToJab::ParseXml(), CIccMpeXmlCalculator::ParseXml(), ParseXml(), CIccMpeXmlReflectanceCLUT::ParseXml(), CIccMpeAcs::Read(), CIccMpeCurveSet::Read(), CIccMpeTintArray::Read(), CIccMpeToneMap::Read(), CIccMpeMatrix::Read(), CIccMpeCLUT::Read(), CIccMpeExtCLUT::Read(), CIccMpeCAM::Read(), CIccMpeSpectralCLUT::Read(), CIccMpeCLUT::SetCLUT(), CIccMpeCurveSet::SetCurve(), CIccMpeSpectralCLUT::SetData(), CIccMpeCalculator::SetSize(), CIccMpeMatrix::SetSize(), CIccMpeSpectralMatrix::SetSize(), CIccMpeSpectralObserver::SetSize(), CIccMpeCurveSet::SetSize(), CIccMpeCurveSet::Validate(), CIccMpeTintArray::Validate(), CIccMpeToneMap::Validate(), CIccMpeCAM::Validate(), CIccMpeInvEmissionMatrix::Validate(), CIccMpeAcs::Write(), CIccMpeCurveSet::Write(), CIccMpeTintArray::Write(), CIccMpeToneMap::Write(), CIccMpeMatrix::Write(), CIccMpeCLUT::Write(), CIccMpeExtCLUT::Write(), CIccMpeCAM::Write(), CIccMpeCalculator::Write(), CIccMpeSpectralMatrix::Write(), CIccMpeSpectralCLUT::Write(), and CIccMpeSpectralObserver::Write().

◆ m_nOutputChannels

icUInt16Number CIccMultiProcessElement::m_nOutputChannels
protectedinherited

Referenced by CIccMpeBAcs::CIccMpeBAcs(), CIccMpeBAcs::CIccMpeBAcs(), CIccMpeCalculator::CIccMpeCalculator(), CIccMpeCalculator::CIccMpeCalculator(), CIccMpeCAM::CIccMpeCAM(), CIccMpeCLUT::CIccMpeCLUT(), CIccMpeCLUT::CIccMpeCLUT(), CIccMpeCurveSet::CIccMpeCurveSet(), CIccMpeCurveSet::CIccMpeCurveSet(), CIccMpeEAcs::CIccMpeEAcs(), CIccMpeEAcs::CIccMpeEAcs(), CIccMpeExtCLUT::CIccMpeExtCLUT(), CIccMpeMatrix::CIccMpeMatrix(), CIccMpeMatrix::CIccMpeMatrix(), CIccMpeSpectralCLUT::CIccMpeSpectralCLUT(), CIccMpeSpectralCLUT::CIccMpeSpectralCLUT(), CIccMpeSpectralMatrix::CIccMpeSpectralMatrix(), CIccMpeSpectralMatrix::CIccMpeSpectralMatrix(), CIccMpeSpectralObserver::CIccMpeSpectralObserver(), CIccMpeSpectralObserver::CIccMpeSpectralObserver(), CIccMpeTintArray::CIccMpeTintArray(), CIccMpeTintArray::CIccMpeTintArray(), CIccMpeToneMap::CIccMpeToneMap(), CIccMpeToneMap::CIccMpeToneMap(), CIccMultiProcessElement::CIccMultiProcessElement(), CIccMpeTintArray::Apply(), CIccMpeToneMap::Apply(), CIccMpeMatrix::Apply(), CIccMpeAcs::Begin(), CIccMpeTintArray::Begin(), CIccMpeToneMap::Begin(), CIccMpeMatrix::Begin(), CIccMpeEmissionMatrix::Begin(), CIccMpeInvEmissionMatrix::Begin(), CIccMpeEmissionCLUT::Begin(), CIccMpeReflectanceCLUT::Begin(), CIccMpeEmissionObserver::Begin(), CIccMpeReflectanceObserver::Begin(), CIccMpeToneMap::ClearToneFuncs(), CIccMpeSpectralCLUT::copyData(), CIccMpeSpectralMatrix::copyData(), CIccMpeSpectralObserver::copyData(), CIccMpeToneMap::CopyToneFuncs(), CIccMpeMatrix::Describe(), CIccMpeCalculator::Describe(), CIccMpeSpectralMatrix::Describe(), CIccMpeSpectralObserver::Describe(), CIccMpeTintArray::Describe(), CIccMpeToneMap::Describe(), CIccMpeXmlCalculator::Flatten(), CIccMpeToneMap::Insert(), CIccMultiProcessElement::NumOutputChannels(), CIccMpeInvEmissionMatrix::numVectors(), CIccMpeBAcs::operator=(), CIccMpeCalculator::operator=(), CIccMpeCLUT::operator=(), CIccMpeCurveSet::operator=(), CIccMpeEAcs::operator=(), CIccMpeMatrix::operator=(), CIccMpeTintArray::operator=(), CIccMpeToneMap::operator=(), CIccMpeXmlTintArray::ParseXml(), CIccMpeXmlToneMap::ParseXml(), CIccMpeXmlMatrix::ParseXml(), CIccMpeXmlCLUT::ParseXml(), CIccMpeXmlExtCLUT::ParseXml(), CIccMpeXmlBAcs::ParseXml(), CIccMpeXmlEAcs::ParseXml(), CIccMpeXmlJabToXYZ::ParseXml(), CIccMpeXmlXYZToJab::ParseXml(), CIccMpeXmlCalculator::ParseXml(), ParseXml(), CIccMpeXmlReflectanceCLUT::ParseXml(), CIccMpeAcs::Read(), CIccMpeTintArray::Read(), CIccMpeToneMap::Read(), CIccMpeMatrix::Read(), CIccMpeCLUT::Read(), CIccMpeExtCLUT::Read(), CIccMpeCAM::Read(), CIccMpeSpectralCLUT::Read(), CIccMpeCLUT::SetCLUT(), CIccMpeSpectralCLUT::SetData(), CIccMpeToneMap::SetNumOutputChannels(), CIccMpeCalculator::SetSize(), CIccMpeMatrix::SetSize(), CIccMpeSpectralMatrix::SetSize(), CIccMpeSpectralObserver::SetSize(), CIccMpeCurveSet::SetSize(), CIccMpeTintArray::SetVectorSize(), CIccMpeTintArray::Validate(), CIccMpeToneMap::Validate(), CIccMpeCAM::Validate(), CIccMpeSpectralMatrix::Validate(), CIccMpeSpectralObserver::Validate(), CIccMpeAcs::Write(), CIccMpeTintArray::Write(), CIccMpeToneMap::Write(), CIccMpeMatrix::Write(), CIccMpeCLUT::Write(), CIccMpeExtCLUT::Write(), CIccMpeCAM::Write(), CIccMpeCalculator::Write(), CIccMpeSpectralMatrix::Write(), CIccMpeSpectralCLUT::Write(), and CIccMpeSpectralObserver::Write().

◆ m_nReserved

icUInt32Number CIccMultiProcessElement::m_nReserved
inherited

Referenced by CIccMpeAcs::CIccMpeAcs(), CIccMpeBAcs::CIccMpeBAcs(), CIccMpeCalculator::CIccMpeCalculator(), CIccMpeCalculator::CIccMpeCalculator(), CIccMpeCAM::CIccMpeCAM(), CIccMpeCLUT::CIccMpeCLUT(), CIccMpeCLUT::CIccMpeCLUT(), CIccMpeCurveSet::CIccMpeCurveSet(), CIccMpeCurveSet::CIccMpeCurveSet(), CIccMpeEAcs::CIccMpeEAcs(), CIccMpeExtCLUT::CIccMpeExtCLUT(), CIccMpeMatrix::CIccMpeMatrix(), CIccMpeMatrix::CIccMpeMatrix(), CIccMpeSpectralCLUT::CIccMpeSpectralCLUT(), CIccMpeSpectralCLUT::CIccMpeSpectralCLUT(), CIccMpeSpectralMatrix::CIccMpeSpectralMatrix(), CIccMpeSpectralMatrix::CIccMpeSpectralMatrix(), CIccMpeSpectralObserver::CIccMpeSpectralObserver(), CIccMpeSpectralObserver::CIccMpeSpectralObserver(), CIccMpeTintArray::CIccMpeTintArray(), CIccMpeTintArray::CIccMpeTintArray(), CIccMpeToneMap::CIccMpeToneMap(), CIccMpeToneMap::CIccMpeToneMap(), CIccMultiProcessElement::CIccMultiProcessElement(), CIccMpeSpectralCLUT::copyData(), CIccMpeSpectralMatrix::copyData(), CIccMpeSpectralObserver::copyData(), CIccMpeBAcs::operator=(), CIccMpeCalculator::operator=(), CIccMpeCLUT::operator=(), CIccMpeCurveSet::operator=(), CIccMpeEAcs::operator=(), CIccMpeMatrix::operator=(), CIccMpeTintArray::operator=(), CIccMpeToneMap::operator=(), CIccTagXmlMultiProcessElement::ParseElement(), CIccMpeXmlCalculator::ParseImport(), CIccMpeAcs::Read(), CIccMpeCurveSet::Read(), CIccMpeTintArray::Read(), CIccMpeToneMap::Read(), CIccMpeMatrix::Read(), CIccMpeCLUT::Read(), CIccMpeExtCLUT::Read(), CIccMpeCAM::Read(), CIccMpeCalculator::Read(), CIccMpeSpectralMatrix::Read(), CIccMpeSpectralCLUT::Read(), CIccMpeSpectralObserver::Read(), CIccMpeXmlCurveSet::ToXml(), CIccMpeXmlTintArray::ToXml(), CIccMpeXmlToneMap::ToXml(), CIccMpeXmlMatrix::ToXml(), CIccMpeXmlCLUT::ToXml(), CIccMpeXmlExtCLUT::ToXml(), CIccMpeXmlBAcs::ToXml(), CIccMpeXmlEAcs::ToXml(), CIccMpeXmlJabToXYZ::ToXml(), CIccMpeXmlXYZToJab::ToXml(), CIccMpeXmlCalculator::ToXml(), CIccMpeXmlEmissionMatrix::ToXml(), CIccMpeXmlInvEmissionMatrix::ToXml(), ToXml(), CIccMpeXmlReflectanceCLUT::ToXml(), CIccMpeXmlEmissionObserver::ToXml(), CIccMpeXmlReflectanceObserver::ToXml(), CIccMultiProcessElement::Validate(), CIccMpeAcs::Write(), CIccMpeCurveSet::Write(), CIccMpeTintArray::Write(), CIccMpeToneMap::Write(), CIccMpeMatrix::Write(), CIccMpeCLUT::Write(), CIccMpeExtCLUT::Write(), CIccMpeCAM::Write(), CIccMpeCalculator::Write(), CIccMpeSpectralMatrix::Write(), CIccMpeSpectralCLUT::Write(), and CIccMpeSpectralObserver::Write().

◆ m_nStorageType

◆ m_pApplyCLUT

◆ m_pCLUT

◆ m_pWhite

◆ m_Range


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