Hoyt's FORK of DemoIccMAX 2.1.17.hoyt
Documentation for Hoyt's FORK of DemoIccMAX
Loading...
Searching...
No Matches
CIccMpeEmissionCLUT Class Reference

Class: CIccMpeEmissionCLUT. More...

#include <IccMpeSpectral.h>

+ Inheritance diagram for CIccMpeEmissionCLUT:
+ Collaboration diagram for CIccMpeEmissionCLUT:

Public Member Functions

virtual bool Begin (icElemInterp nInterp, CIccTagMultiProcessElement *pMPE)
 Name: CIccMpeEmissionCLUT::Begin.
 
 CIccMpeEmissionCLUT ()
 
 CIccMpeEmissionCLUT (const CIccMpeEmissionCLUT &ITPC)
 
virtual const icCharGetClassName () const
 
virtual icElemTypeSignature GetType () const
 
virtual CIccMultiProcessElementNewCopy () const
 
CIccMpeEmissionCLUToperator= (const CIccMpeEmissionCLUT &ITPC)
 
virtual ~CIccMpeEmissionCLUT ()
 
- Public Member Functions inherited from CIccMpeSpectralCLUT
virtual void Apply (CIccApplyMpe *pApply, icFloatNumber *dstPixel, const icFloatNumber *srcPixel) const
 Name: CIccMpeEmissionCLUT::Apply.
 
 CIccMpeSpectralCLUT ()
 Name: CIccMpeSpectralCLUT::CIccMpeSpectralCLUT.
 
 CIccMpeSpectralCLUT (const CIccMpeSpectralCLUT &ITPC)
 Name: CIccMpeSpectralCLUT::CIccMpeSpectralCLUT.
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 Name: CIccMpeSpectralCLUT::Describe.
 
CIccCLUTGetApplyCLUT ()
 
CIccCLUTGetCLUT ()
 
virtual CIccApplyMpeGetNewApply (CIccApplyTagMpe *pApplyTag)
 Name: CIccMpeSpectralCLUT::GetNewApply.
 
icFloatNumberGetWhite ()
 
virtual bool IsLateBinding () const
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 Name: CIccMpeSpectralCLUT::Read.
 
void SetData (CIccCLUT *pCLUT, icUInt16Number nStorageType, const icSpectralRange &range, icFloatNumber *pWhite, icUInt16Number nOutputChannels=3)
 Name: CIccMpeSpectralCLUT::SetCLUT.
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccTagMultiProcessElement *pMPE=NULL, const CIccProfile *pProfile=NULL) const
 Name: CIccMpeSpectralCLUT::Validate.
 
virtual bool Write (CIccIO *pIO)
 Name: CIccMpeSpectralCLUT::Write.
 
virtual ~CIccMpeSpectralCLUT ()
 Name: CIccMpeSpectralCLUT::~CIccMpeSpectralCLUT.
 
- Public Member Functions inherited from CIccMultiProcessElement
 CIccMultiProcessElement ()
 
virtual icAcsSignature GetBAcsSig ()
 
virtual icAcsSignature GetEAcsSig ()
 
virtual IIccExtensionMpeGetExtension ()
 
virtual bool IsAcs ()
 
virtual bool IsLateBindingReflectance () const
 
virtual bool IsSupported ()
 
virtual icUInt16Number NumInputChannels () const
 
virtual icUInt16Number NumOutputChannels () const
 
virtual ~CIccMultiProcessElement ()
 

Protected Member Functions

virtual const char * GetDescribeName () const
 
- Protected Member Functions inherited from CIccMpeSpectralCLUT
void copyData (const CIccMpeSpectralCLUT &ITPC)
 Name: &CIccMpeSpectralCLUT::operator=.
 

Additional Inherited Members

- Static Public Member Functions inherited from CIccMultiProcessElement
static CIccMultiProcessElementCreate (icElemTypeSignature sig)
 Name: CIccMultiProcessElement::Create.
 
- Public Attributes inherited from CIccMultiProcessElement
icUInt32Number m_nReserved
 
- Protected Attributes inherited from CIccMpeSpectralCLUT
icUInt32Number m_flags
 
icCLUTElemType m_interpType
 
icUInt16Number m_nStorageType
 
CIccCLUTm_pApplyCLUT
 
CIccCLUTm_pCLUT
 
icFloatNumberm_pWhite
 
icSpectralRange m_Range
 
- Protected Attributes inherited from CIccMultiProcessElement
icUInt16Number m_nInputChannels
 
icUInt16Number m_nOutputChannels
 

Detailed Description

Class: CIccMpeEmissionCLUT.

Purpose: The Emission CLUT Element

Definition at line 277 of file IccMpeSpectral.h.

Constructor & Destructor Documentation

◆ CIccMpeEmissionCLUT() [1/2]

CIccMpeEmissionCLUT::CIccMpeEmissionCLUT ( )
inline

Definition at line 280 of file IccMpeSpectral.h.

CIccMpeSpectralCLUT()
Name: CIccMpeSpectralCLUT::CIccMpeSpectralCLUT.

◆ CIccMpeEmissionCLUT() [2/2]

CIccMpeEmissionCLUT::CIccMpeEmissionCLUT ( const CIccMpeEmissionCLUT & ITPC)
inline

Definition at line 281 of file IccMpeSpectral.h.

281: CIccMpeSpectralCLUT(ITPC) {}

◆ ~CIccMpeEmissionCLUT()

virtual CIccMpeEmissionCLUT::~CIccMpeEmissionCLUT ( )
inlinevirtual

Definition at line 284 of file IccMpeSpectral.h.

284{}

Member Function Documentation

◆ Begin()

bool CIccMpeEmissionCLUT::Begin ( icElemInterp nInterp,
CIccTagMultiProcessElement * pMPE )
virtual

Name: CIccMpeEmissionCLUT::Begin.

Purpose:

Args:

Return:

Implements CIccMultiProcessElement.

Definition at line 1421 of file IccMpeSpectral.cpp.

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}
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
Definition IccDefs.h:100
static icFloatNumber NoClip(icFloatNumber v)
@ ic1dInterp
@ ic3dInterpTetra
@ ic6dInterp
@ icNdInterp
@ ic2dInterp
@ ic4dInterp
@ ic5dInterp
@ ic3dInterp
@ icElemInterpTetra
Definition IccTagMPE.h:95
void icXYZtoLab(icFloatNumber *Lab, const icFloatNumber *XYZ, const icFloatNumber *WhiteXYZ)
Definition IccUtil.cpp:846
unsigned int icUInt32Number
Class: CIccCLUT.
Definition IccTagLut.h:326
icUInt16Number GetOutputChannels() const
Definition IccTagLut.h:357
void SetClipFunc(icCLUTCLIPFUNC ClipFunc)
Definition IccTagLut.h:379
void Begin()
Name: CIccCLUT::Begin.
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)
Name: CIccCLUT::Init.
Type: Class.
icUInt32Number m_flags
icSpectralRange m_Range
icCLUTElemType m_interpType
icFloatNumber * m_pWhite
icUInt16Number m_nOutputChannels
Definition IccTagMPE.h:192
icUInt16Number m_nInputChannels
Definition IccTagMPE.h:191
IIccProfileConnectionConditions * GetAppliedPCC()
Definition IccTagMPE.h:403
Class: CIccTagSpectralViewingConditions.
icFloatNumber * getEmissiveObserver(const icSpectralRange &range, const icFloatNumber *pWhite, icFloatNumber *obsMatrix=NULL)
Definition IccPcc.cpp:231
virtual const CIccTagSpectralViewingConditions * getPccViewingConditions()=0
unsigned char icUInt8Number
Number definitions.
unsigned short icUInt16Number
#define icRelativeSpectralData
MPE Spectral Data Conversion flags.
#define icLabSpectralData
icUInt16Number steps

References CIccCLUT::Begin(), CIccMatrixMath::entry(), CIccTagMultiProcessElement::GetAppliedPCC(), CIccCLUT::GetData(), IIccProfileConnectionConditions::getEmissiveObserver(), CIccCLUT::GetOutputChannels(), IIccProfileConnectionConditions::getPccViewingConditions(), CIccCLUT::GridPointArray(), ic1dInterp, ic2dInterp, ic3dInterp, ic3dInterpTetra, ic4dInterp, ic5dInterp, ic6dInterp, icElemInterpTetra, icLabSpectralData, icNdInterp, icRelativeSpectralData, 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:

◆ GetClassName()

virtual const icChar * CIccMpeEmissionCLUT::GetClassName ( ) const
inlinevirtual

Implements CIccMultiProcessElement.

Reimplemented in CIccMpeXmlEmissionCLUT.

Definition at line 287 of file IccMpeSpectral.h.

287{ return "CIccMpeEmissionCLUT"; }

◆ GetDescribeName()

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

Implements CIccMpeSpectralCLUT.

Definition at line 292 of file IccMpeSpectral.h.

292{ return "ELEM_EMISSION_CLUT"; }

◆ GetType()

virtual icElemTypeSignature CIccMpeEmissionCLUT::GetType ( ) const
inlinevirtual

Implements CIccMultiProcessElement.

Definition at line 286 of file IccMpeSpectral.h.

@ icSigEmissionCLUTElemType

References icSigEmissionCLUTElemType.

◆ NewCopy()

virtual CIccMultiProcessElement * CIccMpeEmissionCLUT::NewCopy ( ) const
inlinevirtual

Implements CIccMultiProcessElement.

Definition at line 283 of file IccMpeSpectral.h.

283{ return new CIccMpeEmissionCLUT(*this);}

◆ operator=()

CIccMpeEmissionCLUT & CIccMpeEmissionCLUT::operator= ( const CIccMpeEmissionCLUT & ITPC)
inline

Definition at line 282 of file IccMpeSpectral.h.

282{ copyData(ITPC); return *this; }
void copyData(const CIccMpeSpectralCLUT &ITPC)
Name: &CIccMpeSpectralCLUT::operator=.

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