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

#include <IccMpeBasic.h>

+ Inheritance diagram for CIccMpeToneMap:
+ Collaboration diagram for CIccMpeToneMap:

Public Member Functions

 CIccMpeToneMap (const CIccMpeToneMap &toneMap)
 
 CIccMpeToneMap (icUInt16Number nOutputChannels=1)
 
virtual ~CIccMpeToneMap ()
 
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 icCharGetClassName () const
 
virtual icAcsSignature GetEAcsSig ()
 
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
 
CIccMpeToneMapoperator= (const CIccMpeToneMap &toneMap)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 
void SetLumCurve (CIccCurveSetCurve *pLumCurve)
 
void SetNumOutputChannels (icUInt16Number nOutputChannels)
 
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

Class: CIccMpeToneMap

Purpose: The curve set process element

Constructor & Destructor Documentation

◆ CIccMpeToneMap() [1/2]

CIccMpeToneMap::CIccMpeToneMap ( icUInt16Number  nOutputChannels = 1)

Name: CIccMpeToneMap::CIccMpeToneMap

Purpose:

Args:

Return:

4157{
4158 m_nReserved = 0;
4159 m_nInputChannels = nOutputChannels + 1;
4160 m_nOutputChannels = nOutputChannels;
4161 m_pLumCurve = NULL;
4162 m_pToneFuncs = NULL;
4163
4164 SetNumOutputChannels(nOutputChannels);
4165
4166}
CIccToneMapFunc ** m_pToneFuncs
Definition IccMpeBasic.h:580
void SetNumOutputChannels(icUInt16Number nOutputChannels)
Definition IccMpeBasic.cpp:4353
CIccCurveSetCurve * m_pLumCurve
Definition IccMpeBasic.h:578
icUInt16Number m_nOutputChannels
Definition IccTagMPE.h:192
icUInt16Number m_nInputChannels
Definition IccTagMPE.h:191
icUInt32Number m_nReserved
Definition IccTagMPE.h:188

References CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMultiProcessElement::m_nReserved, m_pLumCurve, m_pToneFuncs, and SetNumOutputChannels().

Referenced by CIccBasicMpeFactory::CreateElement().

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

◆ CIccMpeToneMap() [2/2]

CIccMpeToneMap::CIccMpeToneMap ( const CIccMpeToneMap toneMap)

Name: CIccMpeToneMap::CIccMpeToneMap

Purpose:

Args:

Return:

4179{
4180 m_nReserved = toneMap.m_nReserved;
4181
4184
4185 if (toneMap.m_pLumCurve)
4186 m_pLumCurve = toneMap.m_pLumCurve->NewCopy();
4187
4188 m_nFunc = toneMap.m_nFunc;
4189 if (toneMap.m_pToneFuncs)
4190 m_pToneFuncs = toneMap.CopyToneFuncs();
4191 else
4192 m_pToneFuncs = NULL;
4193}
virtual CIccCurveSetCurve * NewCopy() const =0
icUInt16Number m_nFunc
Definition IccMpeBasic.h:579
CIccToneMapFunc ** CopyToneFuncs() const
Definition IccMpeBasic.cpp:4262

References CopyToneFuncs(), m_nFunc, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMultiProcessElement::m_nReserved, m_pLumCurve, m_pToneFuncs, and CIccCurveSetCurve::NewCopy().

Referenced by NewCopy().

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

◆ ~CIccMpeToneMap()

CIccMpeToneMap::~CIccMpeToneMap ( )
virtual

Name: CIccMpeToneMap::~CIccMpeToneMap

Purpose:

Args:

Return:

4245{
4246 if (m_pLumCurve)
4247 delete m_pLumCurve;
4248
4250}
void ClearToneFuncs()
Definition IccMpeBasic.cpp:4298

References ClearToneFuncs(), and m_pLumCurve.

+ Here is the call graph for this function:

Member Function Documentation

◆ Apply()

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

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

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

+ Here is the call graph for this function:

◆ Begin()

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

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, m_pLumCurve, and m_pToneFuncs.

+ Here is the call graph for this function:

◆ ClearToneFuncs()

void CIccMpeToneMap::ClearToneFuncs ( )
protected

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 m_pToneFuncs.

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

+ Here is the caller graph for this function:

◆ CopyToneFuncs()

CIccToneMapFunc ** CIccMpeToneMap::CopyToneFuncs ( ) const
protected

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, m_pToneFuncs, and CIccToneMapFunc::NewCopy().

Referenced by CIccMpeToneMap(), and 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 
)
virtual

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, m_pLumCurve, and 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 icChar * CIccMpeToneMap::GetClassName ( ) const
inlinevirtual

Implements CIccMultiProcessElement.

Reimplemented in CIccMpeXmlToneMap.

555{ return "CIccMpeToneMap"; }

◆ GetEAcsSig()

virtual icAcsSignature CIccMultiProcessElement::GetEAcsSig ( )
inlinevirtualinherited

Reimplemented in CIccMpeEAcs.

179{ return icSigAcsZero; }

◆ GetExtension()

◆ 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
inlinevirtual

Implements CIccMultiProcessElement.

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

References icSigToneMapElemType.

Referenced by Validate(), and Write().

+ Here is the caller graph for this function:

◆ Insert()

bool CIccMpeToneMap::Insert ( CIccToneMapFunc pToneMapFunc)

Name: CIccMpeToneMap::PushBackFunc

Purpose:

Args:

Return:

4375{
4377 return false;
4378
4379 m_pToneFuncs[m_nFunc++] = pToneMapFunc;
4380
4381 return true;
4382}

References m_nFunc, CIccMultiProcessElement::m_nOutputChannels, and m_pToneFuncs.

Referenced by CIccMpeXmlToneMap::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
inlinevirtual

Implements CIccMultiProcessElement.

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

References CIccMpeToneMap().

+ Here is the call graph for this function:

◆ NewToneMapFunc()

virtual CIccToneMapFunc * CIccMpeToneMap::NewToneMapFunc ( )
inlinevirtual

Reimplemented in CIccMpeXmlToneMap.

557{ return new CIccToneMapFunc(); }

References CIccToneMapFunc::CIccToneMapFunc().

Referenced by Read().

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

◆ NumInputChannels()

◆ NumOutputChannels()

◆ operator=()

CIccMpeToneMap & CIccMpeToneMap::operator= ( const CIccMpeToneMap toneMap)

Name: &CIccMpeToneMap::operator=

Purpose:

Args:

Return:

4206{
4207 if (&toneMap == this)
4208 return *this;
4209
4210 m_nReserved = toneMap.m_nReserved;
4211
4214
4215 if (m_pLumCurve)
4216 delete m_pLumCurve;
4217
4218 if (toneMap.m_pLumCurve)
4219 m_pLumCurve = toneMap.m_pLumCurve->NewCopy();
4220 else
4221 m_pLumCurve = NULL;
4222
4224
4225 m_nFunc = toneMap.m_nFunc;
4226 if (toneMap.m_pToneFuncs)
4227 m_pToneFuncs = toneMap.CopyToneFuncs();
4228 else
4229 m_pToneFuncs = NULL;
4230
4231 return *this;
4232}

References ClearToneFuncs(), CopyToneFuncs(), m_nFunc, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMultiProcessElement::m_nReserved, m_pLumCurve, m_pToneFuncs, and CIccCurveSetCurve::NewCopy().

+ Here is the call graph for this function:

◆ Read()

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

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
unsigned short icUInt16Number
Definition icProfileHeader.h:256
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 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

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

+ Here is the call graph for this function:

◆ SetLumCurve()

void CIccMpeToneMap::SetLumCurve ( CIccCurveSetCurve pLumCurve)

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 m_pLumCurve.

Referenced by Read().

+ Here is the caller graph for this function:

◆ SetNumOutputChannels()

void CIccMpeToneMap::SetNumOutputChannels ( icUInt16Number  nVectorSize)

Name: CIccMpeToneMap::SetNumOutputChannels

Purpose:

Args:

Return:

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

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

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

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

◆ Validate()

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

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(), GetType(), icGetSigPath(), icMaxStatus(), icMsgValidateCriticalError, icMsgValidateInformation, icValidateCriticalError, icValidateOK, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, m_pLumCurve, m_pToneFuncs, CIccToneMapFunc::Validate(), CIccCurveSetCurve::Validate(), and CIccMultiProcessElement::Validate().

+ Here is the call graph for this function:

◆ Write()

bool CIccMpeToneMap::Write ( CIccIO pIO)
virtual

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(), GetType(), icSeekSet, CIccMultiProcessElement::m_nInputChannels, CIccMultiProcessElement::m_nOutputChannels, CIccMultiProcessElement::m_nReserved, m_pLumCurve, 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

icUInt16Number CIccMpeToneMap::m_nFunc
protected

◆ 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(), 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=(), operator=(), CIccMpeXmlTintArray::ParseXml(), CIccMpeXmlToneMap::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(), 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(), Validate(), CIccMpeCAM::Validate(), CIccMpeInvEmissionMatrix::Validate(), CIccMpeAcs::Write(), CIccMpeCurveSet::Write(), CIccMpeTintArray::Write(), 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(), CIccMultiProcessElement::CIccMultiProcessElement(), CIccMpeTintArray::Apply(), Apply(), CIccMpeMatrix::Apply(), CIccMpeAcs::Begin(), CIccMpeTintArray::Begin(), Begin(), CIccMpeMatrix::Begin(), CIccMpeEmissionMatrix::Begin(), CIccMpeInvEmissionMatrix::Begin(), CIccMpeEmissionCLUT::Begin(), CIccMpeReflectanceCLUT::Begin(), CIccMpeEmissionObserver::Begin(), CIccMpeReflectanceObserver::Begin(), ClearToneFuncs(), CIccMpeSpectralCLUT::copyData(), CIccMpeSpectralMatrix::copyData(), CIccMpeSpectralObserver::copyData(), CopyToneFuncs(), CIccMpeMatrix::Describe(), CIccMpeCalculator::Describe(), CIccMpeSpectralMatrix::Describe(), CIccMpeSpectralObserver::Describe(), CIccMpeTintArray::Describe(), Describe(), CIccMpeXmlCalculator::Flatten(), Insert(), CIccMultiProcessElement::NumOutputChannels(), CIccMpeInvEmissionMatrix::numVectors(), CIccMpeBAcs::operator=(), CIccMpeCalculator::operator=(), CIccMpeCLUT::operator=(), CIccMpeCurveSet::operator=(), CIccMpeEAcs::operator=(), CIccMpeMatrix::operator=(), CIccMpeTintArray::operator=(), operator=(), CIccMpeXmlTintArray::ParseXml(), CIccMpeXmlToneMap::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(), Read(), CIccMpeMatrix::Read(), CIccMpeCLUT::Read(), CIccMpeExtCLUT::Read(), CIccMpeCAM::Read(), CIccMpeSpectralCLUT::Read(), CIccMpeCLUT::SetCLUT(), CIccMpeSpectralCLUT::SetData(), SetNumOutputChannels(), CIccMpeCalculator::SetSize(), CIccMpeMatrix::SetSize(), CIccMpeSpectralMatrix::SetSize(), CIccMpeSpectralObserver::SetSize(), CIccMpeCurveSet::SetSize(), CIccMpeTintArray::SetVectorSize(), CIccMpeTintArray::Validate(), Validate(), CIccMpeCAM::Validate(), CIccMpeSpectralMatrix::Validate(), CIccMpeSpectralObserver::Validate(), CIccMpeAcs::Write(), CIccMpeTintArray::Write(), 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(), CIccMultiProcessElement::CIccMultiProcessElement(), CIccMpeSpectralCLUT::copyData(), CIccMpeSpectralMatrix::copyData(), CIccMpeSpectralObserver::copyData(), CIccMpeBAcs::operator=(), CIccMpeCalculator::operator=(), CIccMpeCLUT::operator=(), CIccMpeCurveSet::operator=(), CIccMpeEAcs::operator=(), CIccMpeMatrix::operator=(), CIccMpeTintArray::operator=(), operator=(), CIccTagXmlMultiProcessElement::ParseElement(), CIccMpeXmlCalculator::ParseImport(), CIccMpeAcs::Read(), CIccMpeCurveSet::Read(), CIccMpeTintArray::Read(), 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(), CIccMpeXmlEmissionCLUT::ToXml(), CIccMpeXmlReflectanceCLUT::ToXml(), CIccMpeXmlEmissionObserver::ToXml(), CIccMpeXmlReflectanceObserver::ToXml(), CIccMultiProcessElement::Validate(), CIccMpeAcs::Write(), CIccMpeCurveSet::Write(), CIccMpeTintArray::Write(), 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: