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

#include <IccMpeXml.h>

+ Inheritance diagram for CIccMpeXmlToneMap:
+ Collaboration diagram for CIccMpeXmlToneMap:

Public Member Functions

virtual ~CIccMpeXmlToneMap ()
 
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=0)
 
virtual icAcsSignature GetBAcsSig ()
 
virtual const char * GetClassName () const
 
virtual icAcsSignature GetEAcsSig ()
 
virtual const char * GetExtClassName ()
 
virtual IIccExtensionMpeGetExtension ()
 
virtual CIccApplyMpeGetNewApply (CIccApplyTagMpe *pApplyTag)
 
virtual icElemTypeSignature GetType () const
 
bool Insert (CIccToneMapFunc *pToneMapFunc)
 
virtual bool IsAcs ()
 
virtual bool IsLateBinding () const
 
virtual bool IsLateBindingReflectance () const
 
virtual bool IsSupported ()
 
virtual CIccMultiProcessElementNewCopy () const
 
virtual CIccToneMapFuncNewToneMapFunc ()
 
virtual icUInt16Number NumInputChannels () const
 
virtual icUInt16Number NumOutputChannels () const
 
virtual bool ParseXml (xmlNode *pNode, std::string &parseStr)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 
void SetLumCurve (CIccCurveSetCurve *pLumCurve)
 
void SetNumOutputChannels (icUInt16Number nOutputChannels)
 
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 ClearToneFuncs ()
 
CIccToneMapFunc ** CopyToneFuncs () const
 

Protected Attributes

icUInt16Number m_nFunc
 
icUInt16Number m_nInputChannels
 
icUInt16Number m_nOutputChannels
 
CIccCurveSetCurvem_pLumCurve
 
CIccToneMapFunc ** m_pToneFuncs
 

Detailed Description

Constructor & Destructor Documentation

◆ ~CIccMpeXmlToneMap()

virtual CIccMpeXmlToneMap::~CIccMpeXmlToneMap ( )
inlinevirtual
154{}

Member Function Documentation

◆ Apply()

void CIccMpeToneMap::Apply ( CIccApplyMpe pApply,
icFloatNumber pDestPixel,
const icFloatNumber pSrcPixel 
) const
virtualinherited

Name: CIccMpeToneMap::Apply

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

4744{
4746 for (int i = 0; i < m_nOutputChannels; i++) {
4747 pDestPixel[i] = m_pToneFuncs[i]->Apply(lum, pSrcPixel[i]);
4748 }
4749}
float icFloatNumber
Definition IccDefs.h:101
virtual icFloatNumber Apply(icFloatNumber v) const =0
icFloatNumber Apply(icFloatNumber lumValue, icFloatNumber pixelValue) const
Definition IccMpeBasic.cpp:4095
CIccToneMapFunc ** m_pToneFuncs
Definition IccMpeBasic.h:580
CIccCurveSetCurve * m_pLumCurve
Definition IccMpeBasic.h:578
icUInt16Number m_nOutputChannels
Definition IccTagMPE.h:192

References CIccToneMapFunc::Apply(), CIccCurveSetCurve::Apply(), CIccMultiProcessElement::m_nOutputChannels, CIccMpeToneMap::m_pLumCurve, and CIccMpeToneMap::m_pToneFuncs.

+ Here is the call graph for this function:

◆ Begin()

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

Name: CIccMpeToneMap::Begin

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

4711{
4712 if (!m_pLumCurve || !m_pToneFuncs)
4713 return false;
4714
4715 if (!m_pLumCurve->Begin(nInterp, pMPE))
4716 return false;
4717
4718 if (!m_pToneFuncs[0] || !m_pToneFuncs[0]->Begin())
4719 return false;
4720
4721 int j;
4722 for (int i=1; i<m_nOutputChannels; i++) {
4723 for (j = 0; j < i; j++)
4724 if (m_pToneFuncs[j] == m_pToneFuncs[i])
4725 break;
4726 if (j==i && (!m_pToneFuncs[i] || !m_pToneFuncs[i]->Begin()))
4727 return false;
4728 }
4729 return true;
4730}
virtual bool Begin(icElemInterp nInterp, CIccTagMultiProcessElement *pMPE)=0
virtual bool Begin(icElemInterp nInterp, CIccTagMultiProcessElement *pMPE)
Definition IccMpeBasic.cpp:4710

References CIccToneMapFunc::Begin(), CIccCurveSetCurve::Begin(), CIccMultiProcessElement::m_nOutputChannels, CIccMpeToneMap::m_pLumCurve, and CIccMpeToneMap::m_pToneFuncs.

+ Here is the call graph for this function:

◆ ClearToneFuncs()

void CIccMpeToneMap::ClearToneFuncs ( )
protectedinherited

Name: CIccMpeToneMap::ClearToneFuncs

Purpose:

Args:

Return:

4299{
4300 if (m_pToneFuncs) {
4301
4302 if (m_nOutputChannels) {
4303 if (m_pToneFuncs[0])
4304 delete m_pToneFuncs[0];
4305
4306 int j;
4307 for (int i = 1; i < m_nOutputChannels; i++) {
4308 for (j = 0; j < i; j++)
4309 if (m_pToneFuncs[j] == m_pToneFuncs[i])
4310 break;
4311 if (j == i && m_pToneFuncs[i])
4312 delete m_pToneFuncs[i];
4313 }
4314 }
4315
4316 free(m_pToneFuncs);
4317 m_pToneFuncs = NULL;
4318 }
4319}

References CIccMultiProcessElement::m_nOutputChannels, and CIccMpeToneMap::m_pToneFuncs.

Referenced by CIccMpeToneMap::~CIccMpeToneMap(), CIccMpeToneMap::operator=(), CIccMpeToneMap::Read(), and CIccMpeToneMap::SetNumOutputChannels().

+ Here is the caller graph for this function:

◆ CopyToneFuncs()

CIccToneMapFunc ** CIccMpeToneMap::CopyToneFuncs ( ) const
protectedinherited

Name: CIccMpeToneMap::CopyToneFuncs

Purpose:

Args:

Return:

4263{
4265 return NULL;
4266
4268 if (!rv)
4269 return NULL;
4270
4271 rv[0] = m_pToneFuncs[0] ? m_pToneFuncs[0]->NewCopy() : NULL;
4272
4273 int j;
4274 for (int i = 1; i < m_nOutputChannels; i++) {
4275 for (j = 0; j < i; j++)
4276 if (m_pToneFuncs[j] == m_pToneFuncs[i])
4277 break;
4278 if (j < i)
4279 rv[i] = rv[j];
4280 else
4281 rv[i] = m_pToneFuncs[i] ? m_pToneFuncs[i]->NewCopy() : NULL;
4282 }
4283
4284 return rv;
4285}
Definition IccMpeBasic.h:506
virtual CIccToneMapFunc * NewCopy() const
Definition IccMpeBasic.cpp:3937

References CIccMultiProcessElement::m_nOutputChannels, CIccMpeToneMap::m_pToneFuncs, and CIccToneMapFunc::NewCopy().

Referenced by CIccMpeToneMap::CIccMpeToneMap(), and CIccMpeToneMap::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 CIccMpeToneMap::Describe ( std::string &  sDescription,
int  nVerboseness = 0 
)
virtualinherited

Name: CIccMpeToneMap::Describe

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

4396{
4397 char buf[256];
4398
4399 sprintf(buf, "BEGIN_TONE_MAP %d\n", m_nOutputChannels);
4400 sDescription += buf;
4401
4402 if (m_pLumCurve) {
4403 sDescription += "LUM_FUNCTION:\n";
4404 m_pLumCurve->Describe(sDescription, nVerboseness);
4405 }
4406
4407 if (m_pToneFuncs) {
4408 for (int i = 0; i < m_nOutputChannels; i++) {
4409 sprintf(buf, "TONE_FUNCTION_%d:\n", i);
4410 sDescription += buf;
4411 if (m_pToneFuncs[i])
4412 m_pToneFuncs[i]->Describe(sDescription, nVerboseness);
4413 }
4414 }
4415
4416 sDescription += "END_TINT_ARRAY\n";
4417}
virtual void Describe(std::string &sDescription, int nVerboseness=100)=0
void Describe(std::string &sDescription, int nVerboseness=0)
Definition IccMpeBasic.cpp:3972

References CIccToneMapFunc::Describe(), CIccCurveSetCurve::Describe(), CIccMultiProcessElement::m_nOutputChannels, CIccMpeToneMap::m_pLumCurve, and CIccMpeToneMap::m_pToneFuncs.

+ Here is the call graph for this function:

◆ 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 * CIccMpeXmlToneMap::GetClassName ( ) const
inlinevirtual

Reimplemented from CIccMpeToneMap.

156{ return "CIccMpeXmlToneMap"; }

◆ 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 * CIccMpeXmlToneMap::GetExtension ( )
inlinevirtual

Reimplemented from CIccMultiProcessElement.

160{ return this; }

◆ GetNewApply()

CIccApplyMpe * CIccMultiProcessElement::GetNewApply ( CIccApplyTagMpe pApplyTag)
virtualinherited

Name: CIccMultiProcessElement::GetNewApply()

Purpose:

Args:

Return:

Reimplemented in CIccMpeCLUT, CIccMpeCalculator, and CIccMpeSpectralCLUT.

147{
148 return new CIccApplyMpe(this);
149}
Definition IccTagMPE.h:203

References CIccApplyMpe::CIccApplyMpe().

Referenced by CIccApplyTagMpe::AppendElem(), and CIccMpeCalculator::GetNewApply().

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

◆ GetType()

virtual icElemTypeSignature CIccMpeToneMap::GetType ( ) const
inlinevirtualinherited

Implements CIccMultiProcessElement.

554{ return icSigToneMapElemType; }
@ icSigToneMapElemType
Definition icProfileHeader.h:657

References icSigToneMapElemType.

Referenced by CIccMpeToneMap::Validate(), and CIccMpeToneMap::Write().

+ Here is the caller graph for this function:

◆ Insert()

bool CIccMpeToneMap::Insert ( CIccToneMapFunc pToneMapFunc)
inherited

Name: CIccMpeToneMap::PushBackFunc

Purpose:

Args:

Return:

4375{
4377 return false;
4378
4379 m_pToneFuncs[m_nFunc++] = pToneMapFunc;
4380
4381 return true;
4382}
icUInt16Number m_nFunc
Definition IccMpeBasic.h:579

References CIccMpeToneMap::m_nFunc, CIccMultiProcessElement::m_nOutputChannels, and CIccMpeToneMap::m_pToneFuncs.

Referenced by ParseXml().

+ Here is the caller graph for this function:

◆ 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 CIccMultiProcessElement::IsLateBinding ( ) const
inlinevirtualinherited

Reimplemented in CIccMpeCalculator, CIccMpeSpectralMatrix, CIccMpeSpectralCLUT, and CIccMpeSpectralObserver.

184{ return false; }

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

+ Here is the caller graph for this function:

◆ 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 * CIccMpeToneMap::NewCopy ( ) const
inlinevirtualinherited

Implements CIccMultiProcessElement.

551{ return new CIccMpeToneMap(*this); }
Definition IccMpeBasic.h:546

References CIccMpeToneMap::CIccMpeToneMap().

+ Here is the call graph for this function:

◆ NewToneMapFunc()

virtual CIccToneMapFunc * CIccMpeXmlToneMap::NewToneMapFunc ( )
inlinevirtual

Reimplemented from CIccMpeToneMap.

158{ return new CIccXmlToneMapFunc(); }
Definition IccMpeXml.h:139

◆ NumInputChannels()

◆ NumOutputChannels()

◆ ParseXml()

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

Implements CIccMpeXml.

1783{
1784 icUInt16Number nInputChannels = atoi(icXmlAttrValue(pNode, "InputChannels"));
1785 icUInt16Number nOutputChannels = atoi(icXmlAttrValue(pNode, "OutputChannels"));
1786 if (!nInputChannels || !nOutputChannels || nInputChannels!=nOutputChannels+1) {
1787 parseStr += "Invalid InputChannels or OutputChannels In ToneMapElement\n";
1788 return false;
1789 }
1790 m_nInputChannels = nInputChannels;
1791
1792 SetNumOutputChannels(nOutputChannels);
1793
1794 if (!m_pToneFuncs) {
1795 parseStr += "Unable to allocate ToneMapFunctions\n";
1796 return false;
1797 }
1798
1799 xmlNode* pSubNode = icXmlFindNode(pNode->children, "LuminanceCurve");
1800
1801 if (pSubNode) {
1802 xmlNode* pNode;
1803 for (pNode = pSubNode->children; pNode && pNode->type != XML_ELEMENT_NODE; pNode = pNode->next);
1804 m_pLumCurve = ParseXmlCurve(pNode, parseStr);
1805 if (!m_pLumCurve) {
1806 parseStr += "Unable to parse Luminance Curve\n";
1807 return false;
1808 }
1809 }
1810 else {
1811 parseStr += "Missing Luminance Curve";
1812 }
1813
1814 pSubNode = icXmlFindNode(pNode->children, "ToneMapFunctions");
1815
1816 if (pSubNode) {
1817 xmlNode* pNode;
1818 int nIndex = 0;
1819 for (pNode = pSubNode->children, nIndex = 0;
1820 pNode;
1821 pNode = pNode->next) {
1822 if (pNode->type == XML_ELEMENT_NODE) {
1823 if (nIndex >= nOutputChannels) {
1824 parseStr += "Too many ToneFunctions";
1825 return false;
1826 }
1827 else if (!strcmp((const char*)pNode->name, "DuplicateFunction")) {
1828 const char* attr = icXmlAttrValue(pNode, "Index", NULL);
1829
1830 if (attr) {
1831 int nCopyIndex = atoi(attr);
1832 if (nCopyIndex >= 0 && nCopyIndex < nIndex) {
1833 m_pToneFuncs[nIndex] = m_pToneFuncs[nCopyIndex];
1834 nIndex++;
1835 }
1836 else {
1837 parseStr += "Invalid index for duplicate ToneMapFunction\n";
1838 return false;
1839 }
1840 }
1841 else {
1842 parseStr += "Missing index for duplicate ToneMapFunction\n";
1843 return false;
1844 }
1845 }
1846 else if (!strcmp((const char*)pNode->name, "ToneMapFunction")) {
1848
1849 if (!pFunc->ParseXml(pNode, parseStr)) {
1850 delete pFunc;
1851 return false;
1852 }
1853 if (!Insert(pFunc))
1854 return false;
1855 nIndex++;
1856 }
1857 else {
1858 parseStr += std::string("Unknown Tone Map Function '") + (const char*)pNode->name + "'\n";
1859 return false;
1860 }
1861 }
1862 }
1863 if (nIndex < m_nOutputChannels) {
1864 parseStr += "Missing ToneMap Functions\n";
1865 }
1866 }
1867
1868 return true;
1869}
unsigned short icUInt16Number
Definition icProfileHeader.h:256
xmlNode * icXmlFindNode(xmlNode *pNode, const char *szNodeName)
Definition IccUtilXml.cpp:687
const char * icXmlAttrValue(xmlAttr *attr, const char *szDefault="")
Definition IccUtilXml.cpp:572
static icCurveSetCurvePtr ParseXmlCurve(xmlNode *pNode, std::string parseStr)
Definition IccMpeXml.cpp:1087
void SetNumOutputChannels(icUInt16Number nOutputChannels)
Definition IccMpeBasic.cpp:4353
bool Insert(CIccToneMapFunc *pToneMapFunc)
Definition IccMpeBasic.cpp:4374
virtual bool ParseXml(xmlNode *pNode, std::string &parseStr)
Definition IccMpeXml.cpp:1681

References icXmlAttrValue(), icXmlFindNode(), CIccMpeToneMap::Insert(), CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMpeToneMap::m_pLumCurve, CIccMpeToneMap::m_pToneFuncs, CIccXmlToneMapFunc::ParseXml(), ParseXmlCurve(), and CIccMpeToneMap::SetNumOutputChannels().

+ Here is the call graph for this function:

◆ Read()

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

Name: CIccMpeToneMap::Read

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

4430{
4431 if (m_pLumCurve)
4432 delete m_pLumCurve;
4433 m_pLumCurve = NULL;
4434
4436
4438
4439 icUInt32Number startPos = pIO->Tell();
4440
4441 icUInt32Number headerSize = sizeof(icElemTypeSignature) +
4442 sizeof(icUInt32Number) +
4443 sizeof(icUInt16Number) +
4444 sizeof(icUInt16Number) +
4445 sizeof(icUInt32Number)*2;
4446
4447 if (headerSize + sizeof(icTagTypeSignature) > size)
4448 return false;
4449
4450 if (!pIO) {
4451 return false;
4452 }
4453
4454 icUInt16Number nInputChannels, nOutputChannels;
4455
4456 if (!pIO->Read32(&sig))
4457 return false;
4458
4459 if (!pIO->Read32(&m_nReserved))
4460 return false;
4461
4462 if (!pIO->Read16(&nInputChannels))
4463 return false;
4464
4465 if (!pIO->Read16(&nOutputChannels))
4466 return false;
4467
4468 if (nInputChannels != nOutputChannels+1 || !nOutputChannels)
4469 return false;
4470
4471 m_nInputChannels = nInputChannels;
4472 SetNumOutputChannels(nOutputChannels);
4473
4474 //setup to read luminance curve based on position
4475 icPositionNumber lumPos;
4476 if (!pIO->Read32(&lumPos.offset) ||
4477 !pIO->Read32(&lumPos.size))
4478 return false;
4479
4480 icUInt32Number curPos = pIO->Tell();
4481
4482 //We need signature of curve type to construct and read it
4483 icCurveElemSignature curveSig;
4484 if (lumPos.size < sizeof(curveSig))
4485 return false;
4486
4487 pIO->Seek(startPos + lumPos.offset, icSeekSet);
4488 if (!pIO->Read32(&curveSig))
4489 return false;
4490 pIO->Seek(startPos + lumPos.offset, icSeekSet);
4491
4492 CIccCurveSetCurve* pCurve = CIccCurveSetCurve::Create(curveSig);
4493
4494 if (!pCurve) {
4495 return false;
4496 }
4497
4498 if (!pCurve->Read(lumPos.size, pIO)) {
4499 delete pCurve;
4500 return false;
4501 }
4502
4503 SetLumCurve(pCurve);
4504
4505 //setup positions to get the output channel mapping functions
4506 pIO->Seek(curPos, icSeekSet);
4507
4508 headerSize += nOutputChannels + sizeof(icUInt32Number)*2;
4509
4510 if (headerSize + sizeof(icTagTypeSignature) > size)
4511 return false;
4512
4513 if (!icValidTagPos(lumPos, headerSize, size))
4514 return false;
4515
4517 if (!funcPos)
4518 return false;
4519
4520 //read output tone mapping function positions
4521 int j;
4522 for (int i = 0; i < m_nOutputChannels; i++) {
4523 if (!pIO->Read32(&funcPos[i].offset) ||
4524 !pIO->Read32(&funcPos[i].size) ||
4525 !icValidTagPos(funcPos[i], headerSize, size)) {
4526 delete[] funcPos;
4527 return false;
4528 }
4529
4530 if (!icValidOverlap(lumPos, funcPos[i], false)) {
4531 delete[] funcPos;
4532 return false;
4533 }
4534 for (j = 0; j < i; j++) {
4535 if (!icValidOverlap(funcPos[j], funcPos[i], true)) {
4536 delete[] funcPos;
4537 return false;
4538 }
4539 }
4540 }
4541
4542 //Read tone mapping functions making copies as we go
4544 if (!m_pToneFuncs[0]) {
4545 delete[] funcPos;
4546 return false;
4547 }
4548 pIO->Seek(startPos + funcPos[0].offset, icSeekSet);
4549 if (!m_pToneFuncs[0]->Read(funcPos[0].size, pIO)) {
4550 delete[] funcPos;
4551 return false;
4552 }
4553
4554 for (int i = 1; i < m_nOutputChannels; i++) {
4555 for (j = 0; j < i; i++) {
4556 if (funcPos[j].offset == funcPos[i].offset)
4557 break;
4558 }
4559 if (j != i)
4560 m_pToneFuncs[i] = m_pToneFuncs[j];
4561 else {
4563 if (!m_pToneFuncs[i]) {
4564 delete[] funcPos;
4565 return false;
4566 }
4567 pIO->Seek(startPos + funcPos[i].offset, icSeekSet);
4568 if (!m_pToneFuncs[i]->Read(funcPos[i].size, pIO)) {
4569 delete[] funcPos;
4570 return false;
4571 }
4572 }
4573 }
4574
4575 //keep track of functions read in
4577
4578 return true;
4579}
icCurveElemSignature
Definition icProfileHeader.h:1056
icElemTypeSignature
Definition icProfileHeader.h:641
unsigned long icUInt32Number
Definition icProfileHeader.h:262
icUInt32Number offset
Definition icProfileHeader.h:1461
icTagTypeSignature
Definition icProfileHeader.h:526
icUInt32Number size
Definition icProfileHeader.h:1462
Definition icProfileHeader.h:1460
@ icSeekSet
Definition IccIO.h:83
ICCPROFLIB_API bool icValidTagPos(const icPositionNumber &pos, icUInt32Number nTagHeaderSize, icUInt32Number nTagSize, bool bAllowEmpty=false)
Definition IccUtil.cpp:163
ICCPROFLIB_API bool icValidOverlap(const icPositionNumber &pos1, const icPositionNumber &pos2, bool bAllowSame=true)
Definition IccUtil.cpp:195
Definition IccMpeBasic.h:215
static CIccCurveSetCurve * Create(icCurveElemSignature sig)
Definition IccMpeBasic.cpp:2960
virtual bool Read(icUInt32Number size, CIccIO *pIO)=0
virtual bool Read(icUInt32Number size, CIccIO *pIO)
Definition IccMpeBasic.cpp:4429
void ClearToneFuncs()
Definition IccMpeBasic.cpp:4298
void SetLumCurve(CIccCurveSetCurve *pLumCurve)
Definition IccMpeBasic.cpp:4331
virtual CIccToneMapFunc * NewToneMapFunc()
Definition IccMpeBasic.h:557
icInt32Number Read16(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:114
virtual icInt32Number Tell()
Definition IccIO.h:133
virtual icInt32Number Seek(icInt32Number nOffset, icSeekVal pos)
Definition IccIO.h:132
icInt32Number Read32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:143
icUInt32Number m_nReserved
Definition IccTagMPE.h:188

References CIccMpeToneMap::ClearToneFuncs(), CIccCurveSetCurve::Create(), icSeekSet, icValidOverlap(), icValidTagPos(), CIccMpeToneMap::m_nFunc, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMultiProcessElement::m_nReserved, CIccMpeToneMap::m_pLumCurve, CIccMpeToneMap::m_pToneFuncs, CIccMpeToneMap::NewToneMapFunc(), icPositionNumber::offset, CIccToneMapFunc::Read(), CIccCurveSetCurve::Read(), CIccIO::Read16(), CIccIO::Read32(), CIccIO::Seek(), CIccMpeToneMap::SetLumCurve(), CIccMpeToneMap::SetNumOutputChannels(), icPositionNumber::size, and CIccIO::Tell().

+ Here is the call graph for this function:

◆ SetLumCurve()

void CIccMpeToneMap::SetLumCurve ( CIccCurveSetCurve pLumCurve)
inherited

Name: CIccMpeToneMap::SetLumCurve

Purpose:

Args:

Return:

4332{
4333 if (pLumCurve == m_pLumCurve)
4334 return;
4335
4336 if (m_pLumCurve)
4337 delete m_pLumCurve;
4338
4339 m_pLumCurve = pLumCurve;
4340}

References CIccMpeToneMap::m_pLumCurve.

Referenced by CIccMpeToneMap::Read().

+ Here is the caller graph for this function:

◆ SetNumOutputChannels()

void CIccMpeToneMap::SetNumOutputChannels ( icUInt16Number  nVectorSize)
inherited

Name: CIccMpeToneMap::SetNumOutputChannels

Purpose:

Args:

Return:

4354{
4356 m_nOutputChannels = nVectorSize;
4357 if (m_nOutputChannels) {
4359 }
4360 m_nFunc = 0;
4361}

References CIccMpeToneMap::ClearToneFuncs(), CIccMpeToneMap::m_nFunc, CIccMultiProcessElement::m_nOutputChannels, and CIccMpeToneMap::m_pToneFuncs.

Referenced by CIccMpeToneMap::CIccMpeToneMap(), ParseXml(), and CIccMpeToneMap::Read().

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

◆ ToXml()

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

Implements CIccMpeXml.

1730{
1731 char buf[128], line[128];
1732 sprintf(buf, "<ToneMapElement InputChannels=\"%d\" OutputChannels=\"%d\"", NumInputChannels(), NumOutputChannels());
1733 xml += blanks + buf;
1734
1735 if (m_nReserved) {
1736 sprintf(buf, " Reserved=\"%u\"", m_nReserved);
1737 xml += buf;
1738 }
1739 xml += ">\n";
1740
1741 if (m_pLumCurve) {
1742 xml += blanks + " <LuminanceCurve>\n";
1743 if (!ToXmlCurve(xml, blanks + " ", m_pLumCurve))
1744 return false;
1745 xml += blanks + " </LuminanceCurve>\n";
1746 }
1747
1748 if (m_pToneFuncs) {
1749 xml += blanks + " <ToneMapFunctions>\n";
1750 int i, j;
1751 for (i = 0; i < NumOutputChannels(); i++) {
1752 if (m_pToneFuncs[i] && !strcmp(m_pToneFuncs[i]->GetClassName(), "CIccXmlToneMapFunc")) {
1754
1755 //check for duplicate curves
1756 for (j = 0; j < i; j++) {
1757 if (m_pToneFuncs[i] == m_pToneFuncs[j])
1758 break;
1759 }
1760
1761 //handle case of duplicate curve
1762 if (j < i) {
1763 sprintf(line, "<DuplicateFunction Index=\"%d\"/>\n", j);
1764 xml += blanks + " ";
1765 xml += line;
1766 }
1767 else if (!pFunc->ToXml(xml, blanks + " "))
1768 return false;
1769 }
1770 else
1771 return false;
1772 }
1773 xml += blanks + " </ToneMapFunctions>\n";
1774 }
1775
1776 xml += blanks + "</ToneMapElement>\n";
1777
1778 return true;
1779}
static bool ToXmlCurve(std::string &xml, std::string blanks, icCurveSetCurvePtr pCurve)
Definition IccMpeXml.cpp:1024
virtual icUInt16Number NumInputChannels() const
Definition IccTagMPE.h:159
virtual icUInt16Number NumOutputChannels() const
Definition IccTagMPE.h:160
virtual bool ToXml(std::string &xml, std::string blanks="")
Definition IccMpeXml.cpp:1656
virtual const char * GetClassName() const
Definition IccMpeXml.h:156

References CIccToneMapFunc::GetClassName(), CIccMultiProcessElement::m_nReserved, CIccMpeToneMap::m_pLumCurve, CIccMpeToneMap::m_pToneFuncs, CIccMultiProcessElement::NumInputChannels(), CIccMultiProcessElement::NumOutputChannels(), CIccXmlToneMapFunc::ToXml(), and ToXmlCurve().

+ Here is the call graph for this function:

◆ Validate()

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

Name: CIccMpeToneMap::Validate

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

4762{
4763 std::string mpeSigPath = sigPath + icGetSigPath(GetType());
4764 icValidateStatus rv = CIccMultiProcessElement::Validate(sigPath, sReport, pMPE, pProfile);
4765
4767 CIccInfo Info;
4768 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
4769
4770 sReport += icMsgValidateCriticalError;
4771 sReport += sSigPathName;
4772 sReport += " - Bad number of input channels!\n";
4774 }
4775
4776 if (!m_nOutputChannels) {
4777 CIccInfo Info;
4778 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
4779
4780 sReport += icMsgValidateCriticalError;
4781 sReport += sSigPathName;
4782 sReport += " - Bad number of output channels!\n";
4784 }
4785
4786 if (!m_pLumCurve) {
4787 CIccInfo Info;
4788 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
4789
4790 sReport += icMsgValidateCriticalError;
4791 sReport += sSigPathName;
4792 sReport += " - Has no luminance mapping curve!\n";
4794 }
4795 else {
4796 rv = icMaxStatus(rv, m_pLumCurve->Validate(mpeSigPath, sReport, pMPE, pProfile));
4797 }
4798
4799 if (!m_pToneFuncs) {
4800 CIccInfo Info;
4801 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
4802
4803 sReport += icMsgValidateCriticalError;
4804 sReport += sSigPathName;
4805 sReport += " - Has no tone mapping functions!\n";
4807 }
4808 else {
4809 for (int i = 0; i < m_nOutputChannels; i++) {
4810 std::string funcReport;
4811 char buf[20];
4812 sprintf(buf, "#%d", i);
4813 if (!m_pToneFuncs[i]) {
4814 CIccInfo Info;
4815 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
4816
4817 sReport += icMsgValidateCriticalError;
4818 sReport += sSigPathName;
4819 sReport += std::string(" - Missing Tone function #") + buf + "\n";
4820
4822 }
4823
4824 icValidateStatus crv = m_pToneFuncs[i]->Validate(funcReport);
4825 if (crv != icValidateOK) {
4826 CIccInfo Info;
4827 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
4828
4829 sReport += icMsgValidateInformation;
4830 sReport += sSigPathName;
4831 sReport += std::string(" - Tone Function #") + buf + " status:\n" + funcReport;
4832
4833 rv = icMaxStatus(rv, crv);
4834 }
4835 }
4836 }
4837
4838 return rv;
4839}
icValidateStatus
Definition IccDefs.h:119
@ icValidateOK
Definition IccDefs.h:120
@ icValidateCriticalError
Definition IccDefs.h:123
ICCPROFLIB_API const char * icMsgValidateInformation
Definition IccUtil.cpp:93
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 icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccTagMultiProcessElement *pMPE=NULL, const CIccProfile *pProfile=NULL) const =0
icValidateStatus Validate(std::string &sFuncReport, int nVerboseness=0) const
Definition IccMpeBasic.cpp:4104
virtual icElemTypeSignature GetType() const
Definition IccMpeBasic.h:554
virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccTagMultiProcessElement *pMPE=NULL, const CIccProfile *pProfile=NULL) const =0
Definition IccTagMPE.cpp:454

References CIccInfo::GetSigPathName(), CIccMpeToneMap::GetType(), icGetSigPath(), icMaxStatus(), icMsgValidateCriticalError, icMsgValidateInformation, icValidateCriticalError, icValidateOK, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMpeToneMap::m_pLumCurve, CIccMpeToneMap::m_pToneFuncs, CIccToneMapFunc::Validate(), CIccCurveSetCurve::Validate(), and CIccMultiProcessElement::Validate().

+ Here is the call graph for this function:

◆ Write()

bool CIccMpeToneMap::Write ( CIccIO pIO)
virtualinherited

Name: CIccMpeToneMap::Write

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

4592{
4594 return false;
4595
4597
4598 if (!pIO)
4599 return false;
4600
4601 icUInt32Number nTagStartPos = pIO->Tell();
4602
4603 if (!pIO->Write32(&sig))
4604 return false;
4605
4606 if (!pIO->Write32(&m_nReserved))
4607 return false;
4608
4609 if (!pIO->Write16(&m_nInputChannels))
4610 return false;
4611
4612 if (!pIO->Write16(&m_nOutputChannels))
4613 return false;
4614
4615 icUInt32Number lumOffset = pIO->Tell();
4616
4617 //Reserve position entry for Luminance Curve
4618 icUInt32Number zero = 0;
4619 if (!pIO->Write32(&zero) ||
4620 !pIO->Write32(&zero))
4621 return false;
4622
4623 //Reserve Position entry for mapping functions
4624 for (int i = 0; i < m_nOutputChannels; i++) {
4625 if (!pIO->Write32(&zero) ||
4626 !pIO->Write32(&zero))
4627 return false;
4628 }
4629
4630 //write out luminance curve
4631 icPositionNumber lumPos;
4632 lumPos.offset = pIO->Tell()- nTagStartPos;
4633
4634 if (!m_pLumCurve->Write(pIO))
4635 return false;
4636
4637 lumPos.size = pIO->Tell() - (lumPos.offset + nTagStartPos);
4638
4639 //Keep track of tone function positions
4641 if (!funcPos)
4642 return false;
4643
4644 //write out first tone function
4645 int j;
4646 funcPos[0].offset = pIO->Tell() - nTagStartPos;
4647 if (!m_pToneFuncs[0]->Write(pIO)) {
4648 delete[] funcPos;
4649 return false;
4650 }
4651 funcPos[0].size = pIO->Tell() - (funcPos[0].offset + nTagStartPos);
4652
4653 //write out additional non-copied tone functions
4654 for (int i = 1; i < m_nOutputChannels; i++) {
4655 for (j = 0; j < i; j++)
4656 if (m_pToneFuncs[j] == m_pToneFuncs[i])
4657 break;
4658 if (j < i) {
4659 funcPos[i] = funcPos[j];
4660 }
4661 else {
4662 funcPos[i].offset = pIO->Tell() - nTagStartPos;
4663 if (!m_pToneFuncs[i]->Write(pIO)) {
4664 delete[] funcPos;
4665 return false;
4666 }
4667 funcPos[i].size = pIO->Tell() - (funcPos[i].offset + nTagStartPos);
4668 }
4669 }
4670
4671 //Everything but positions is written so make sure we end on 32 bit boundary
4672 pIO->Align32();
4673 icUInt32Number endOffset = pIO->Tell();
4674
4675 //write out luminance curve position
4676 pIO->Seek(lumOffset, icSeekSet);
4677
4678 if (!pIO->Write32(&lumPos.offset) ||
4679 !pIO->Write32(&lumPos.size)) {
4680 delete[] funcPos;
4681 return false;
4682 }
4683
4684 //write out tone mapping function positions
4685 for (int i = 0; i < m_nOutputChannels; i++) {
4686 if (!pIO->Write32(&funcPos[i].offset) ||
4687 !pIO->Write32(&funcPos[i].size)) {
4688 delete[] funcPos;
4689 return false;
4690 }
4691 }
4692 delete[] funcPos;
4693
4694 //Go back to end and we are done
4695 pIO->Seek(endOffset, icSeekSet);
4696
4697 return true;
4698}
virtual bool Write(CIccIO *pIO)=0
virtual bool Write(CIccIO *pIO)
Definition IccMpeBasic.cpp:4591
icInt32Number Write16(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:122
bool Align32()
Write operation to make sure that filelength is evenly divisible by 4.
Definition IccIO.cpp:341
icInt32Number Write32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:152

References CIccIO::Align32(), CIccMpeToneMap::GetType(), icSeekSet, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMultiProcessElement::m_nReserved, CIccMpeToneMap::m_pLumCurve, CIccMpeToneMap::m_pToneFuncs, icPositionNumber::offset, CIccIO::Seek(), icPositionNumber::size, CIccIO::Tell(), CIccToneMapFunc::Write(), CIccCurveSetCurve::Write(), CIccIO::Write16(), and CIccIO::Write32().

+ Here is the call graph for this function:

Field Documentation

◆ m_nFunc

◆ 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(), ParseXml(), CIccMpeXmlMatrix::ParseXml(), CIccMpeXmlCLUT::ParseXml(), CIccMpeXmlExtCLUT::ParseXml(), CIccMpeXmlBAcs::ParseXml(), CIccMpeXmlEAcs::ParseXml(), CIccMpeXmlJabToXYZ::ParseXml(), CIccMpeXmlXYZToJab::ParseXml(), CIccMpeXmlCalculator::ParseXml(), CIccMpeXmlEmissionCLUT::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(), ParseXml(), CIccMpeXmlMatrix::ParseXml(), CIccMpeXmlCLUT::ParseXml(), CIccMpeXmlExtCLUT::ParseXml(), CIccMpeXmlBAcs::ParseXml(), CIccMpeXmlEAcs::ParseXml(), CIccMpeXmlJabToXYZ::ParseXml(), CIccMpeXmlXYZToJab::ParseXml(), CIccMpeXmlCalculator::ParseXml(), CIccMpeXmlEmissionCLUT::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(), ToXml(), CIccMpeXmlMatrix::ToXml(), CIccMpeXmlCLUT::ToXml(), CIccMpeXmlExtCLUT::ToXml(), CIccMpeXmlBAcs::ToXml(), CIccMpeXmlEAcs::ToXml(), CIccMpeXmlJabToXYZ::ToXml(), CIccMpeXmlXYZToJab::ToXml(), CIccMpeXmlCalculator::ToXml(), CIccMpeXmlEmissionMatrix::ToXml(), CIccMpeXmlInvEmissionMatrix::ToXml(), CIccMpeXmlEmissionCLUT::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_pLumCurve

◆ m_pToneFuncs


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