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

Class: CIccMpeInvEmissionMatrix. More...

#include <IccMpeSpectral.h>

+ Inheritance diagram for CIccMpeInvEmissionMatrix:
+ Collaboration diagram for CIccMpeInvEmissionMatrix:

Public Member Functions

virtual void Apply (CIccApplyMpe *pApply, icFloatNumber *dstPixel, const icFloatNumber *srcPixel) const
 Name: CIccMpeInvEmissionMatrix::Apply.
 
virtual bool Begin (icElemInterp nInterp, CIccTagMultiProcessElement *pMPE)
 Name: CIccMpeInvEmissionMatrix::Begin.
 
 CIccMpeInvEmissionMatrix ()
 
 CIccMpeInvEmissionMatrix (const CIccMpeInvEmissionMatrix &ITPC)
 
virtual const icCharGetClassName () const
 
virtual icElemTypeSignature GetType () const
 
virtual CIccMultiProcessElementNewCopy () const
 
CIccMpeInvEmissionMatrixoperator= (const CIccMpeInvEmissionMatrix &ITPC)
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccTagMultiProcessElement *pMPE=NULL, const CIccProfile *pProfile=NULL) const
 Name: CIccMpeInvEmissionMatrix::Validate.
 
virtual ~CIccMpeInvEmissionMatrix ()
 
- Public Member Functions inherited from CIccMpeSpectralMatrix
 CIccMpeSpectralMatrix ()
 Name: CIccMpeSpectralMatrix::CIccMpeSpectralMatrix.
 
 CIccMpeSpectralMatrix (const CIccMpeSpectralMatrix &ITPC)
 Name: CIccMpeSpectralMatrix::CIccMpeSpectralMatrix.
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 Name: CIccMpeSpectralMatrix::Describe.
 
icFloatNumberGetMatrix ()
 
icFloatNumberGetOffset ()
 
const icSpectralRangeGetRange ()
 
icFloatNumberGetWhite ()
 
virtual bool IsLateBinding () const
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 Name: CIccMpeSpectralMatrix::Read.
 
bool SetSize (icUInt16Number nInputChannels, icUInt16Number nOutputChannels, const icSpectralRange &range)
 Name: CIccMpeSpectralMatrix::SetSize.
 
virtual bool Write (CIccIO *pIO)
 Name: CIccMpeSpectralMatrix::Write.
 
virtual ~CIccMpeSpectralMatrix ()
 Name: CIccMpeSpectralMatrix::~CIccMpeSpectralMatrix.
 
- Public Member Functions inherited from CIccMultiProcessElement
 CIccMultiProcessElement ()
 
virtual icAcsSignature GetBAcsSig ()
 
virtual icAcsSignature GetEAcsSig ()
 
virtual IIccExtensionMpeGetExtension ()
 
virtual CIccApplyMpeGetNewApply (CIccApplyTagMpe *pApplyTag)
 Name: CIccMultiProcessElement::GetNewApply()
 
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
 
virtual icUInt16Number numVectors () const
 
- Protected Member Functions inherited from CIccMpeSpectralMatrix
void copyData (const CIccMpeSpectralMatrix &ITPC)
 Name: &CIccMpeSpectralMatrix::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 CIccMpeSpectralMatrix
icUInt16Number m_nReserved2
 
CIccMatrixMathm_pApplyMtx
 
icFloatNumberm_pMatrix
 
icFloatNumberm_pOffset
 
icFloatNumberm_pWhite
 
icSpectralRange m_Range
 
icUInt32Number m_size
 
icFloatNumber m_xyzOffset [3]
 
- Protected Attributes inherited from CIccMultiProcessElement
icUInt16Number m_nInputChannels
 
icUInt16Number m_nOutputChannels
 

Detailed Description

Class: CIccMpeInvEmissionMatrix.

Purpose: The Inverse Observed Emission Matrix Element

Definition at line 174 of file IccMpeSpectral.h.

Constructor & Destructor Documentation

◆ CIccMpeInvEmissionMatrix() [1/2]

CIccMpeInvEmissionMatrix::CIccMpeInvEmissionMatrix ( )
inline

Definition at line 177 of file IccMpeSpectral.h.

CIccMpeSpectralMatrix()
Name: CIccMpeSpectralMatrix::CIccMpeSpectralMatrix.

◆ CIccMpeInvEmissionMatrix() [2/2]

CIccMpeInvEmissionMatrix::CIccMpeInvEmissionMatrix ( const CIccMpeInvEmissionMatrix & ITPC)
inline

Definition at line 178 of file IccMpeSpectral.h.

178: CIccMpeSpectralMatrix(ITPC) {}

◆ ~CIccMpeInvEmissionMatrix()

virtual CIccMpeInvEmissionMatrix::~CIccMpeInvEmissionMatrix ( )
inlinevirtual

Definition at line 181 of file IccMpeSpectral.h.

181{}

Member Function Documentation

◆ Apply()

void CIccMpeInvEmissionMatrix::Apply ( CIccApplyMpe * pApply,
icFloatNumber * dstPixel,
const icFloatNumber * srcPixel ) const
virtual

Name: CIccMpeInvEmissionMatrix::Apply.

Purpose:

Args:

Return:

Implements CIccMpeSpectralMatrix.

Definition at line 734 of file IccMpeSpectral.cpp.

735{
736 if (m_pApplyMtx) {
737 icFloatNumber xyz[3];
738 xyz[0] = srcPixel[0] - m_xyzOffset[0];
739 xyz[1] = srcPixel[1] - m_xyzOffset[1];
740 xyz[2] = srcPixel[2] - m_xyzOffset[2];
741 m_pApplyMtx->VectorMult(dstPixel, xyz);
742 }
743 else {
744 dstPixel[0] = 0;
745 dstPixel[1] = 0;
746 dstPixel[2] = 0;
747 }
748}
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
Definition IccDefs.h:100
virtual void VectorMult(icFloatNumber *pDst, const icFloatNumber *pSrc) const
Name: CIccMatrixMath::VectorMult.
icFloatNumber m_xyzOffset[3]
CIccMatrixMath * m_pApplyMtx

◆ Begin()

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

Name: CIccMpeInvEmissionMatrix::Begin.

Purpose:

Args:

Return:

Implements CIccMpeSpectralMatrix.

Definition at line 677 of file IccMpeSpectral.cpp.

678{
679 if (!m_pOffset ||!pMPE || !m_pMatrix || m_nInputChannels != 3 || m_nOutputChannels != 3)
680 return false;
681
682 IIccProfileConnectionConditions *pAppliedPCC = pMPE->GetAppliedPCC();
683 if (!pAppliedPCC)
684 return false;
685
687 if (!pSVC)
688 return false;
689
690 CIccMatrixMath observer(3, m_Range.steps);
691 icFloat32Number *pSrc, *pMtx;
692
693 if (!pAppliedPCC->getEmissiveObserver(m_Range, m_pWhite, observer.entry(0)))
694 return false;
695
696 observer.VectorMult(m_xyzOffset, m_pOffset);
697
698 //convert m_Matrix emission values to a matrix of XYZ column vectors
700
701 if (!m_pApplyMtx)
702 return false;
703
704 icFloatNumber xyz[3];
705 int i;
706
707 pSrc = m_pMatrix;
708 pMtx = m_pApplyMtx->entry(0);
709 for (i=0; i<m_nInputChannels; i++) {
710 observer.VectorMult(xyz, pSrc);
711 pSrc += m_Range.steps;
712
713 pMtx[0] = xyz[0];
714 pMtx[m_nInputChannels] = xyz[1];
715 pMtx[2*m_nInputChannels] = xyz[2];
716 pMtx++;
717 }
718
720
721 return true;
722}
Type: Class.
icFloatNumber * entry(icUInt16Number nRow, icUInt16Number nCol=0)
bool Invert()
Name: CIccMatrixMath::Invert.
icFloatNumber * m_pOffset
icSpectralRange m_Range
icFloatNumber * m_pWhite
icFloatNumber * m_pMatrix
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
float icFloat32Number
icUInt16Number steps

References CIccMatrixMath::entry(), CIccTagMultiProcessElement::GetAppliedPCC(), IIccProfileConnectionConditions::getEmissiveObserver(), IIccProfileConnectionConditions::getPccViewingConditions(), and CIccMatrixMath::VectorMult().

+ Here is the call graph for this function:

◆ GetClassName()

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

Implements CIccMultiProcessElement.

Reimplemented in CIccMpeXmlInvEmissionMatrix.

Definition at line 184 of file IccMpeSpectral.h.

184{ return "CIccMpeEmissionMatrix"; }

◆ GetDescribeName()

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

Implements CIccMpeSpectralMatrix.

Definition at line 192 of file IccMpeSpectral.h.

192{ return "ELEM_INV_OBS_EMIS_MATRIX"; }

◆ GetType()

virtual icElemTypeSignature CIccMpeInvEmissionMatrix::GetType ( ) const
inlinevirtual

Implements CIccMultiProcessElement.

Definition at line 183 of file IccMpeSpectral.h.

@ icSigInvEmissionMatrixElemType

References icSigInvEmissionMatrixElemType.

◆ NewCopy()

virtual CIccMultiProcessElement * CIccMpeInvEmissionMatrix::NewCopy ( ) const
inlinevirtual

Implements CIccMultiProcessElement.

Definition at line 180 of file IccMpeSpectral.h.

180{ return new CIccMpeInvEmissionMatrix(*this);}

◆ numVectors()

virtual icUInt16Number CIccMpeInvEmissionMatrix::numVectors ( ) const
inlineprotectedvirtual

Implements CIccMpeSpectralMatrix.

Definition at line 193 of file IccMpeSpectral.h.

193{ return m_nOutputChannels; }

◆ operator=()

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

Definition at line 179 of file IccMpeSpectral.h.

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

◆ Validate()

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

Name: CIccMpeInvEmissionMatrix::Validate.

Purpose:

Args:

Return:

Reimplemented from CIccMpeSpectralMatrix.

Definition at line 760 of file IccMpeSpectral.cpp.

761{
762 std::string mpeSigPath = sigPath + icGetSigPath(GetType());
763 icValidateStatus rv = CIccMpeSpectralMatrix::Validate(sigPath, sReport, pMPE, pProfile);
764
765 if (m_nInputChannels != 3) {
766 CIccInfo Info;
767 std::string sSigPathName = Info.GetSigPathName(mpeSigPath);
768
770 sReport += sSigPathName;
771 sReport += " - Input Channels must be 3!\n";
773 }
774
775 return rv;
776}
icValidateStatus
Definition IccDefs.h:118
@ icValidateCriticalError
Definition IccDefs.h:122
icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Name: icMaxStatus.
Definition IccUtil.cpp:244
std::string icGetSigPath(icUInt32Number nSig)
Definition IccUtil.cpp:1191
const char * icMsgValidateCriticalError
Definition IccUtil.cpp:92
Type: Class.
Definition IccUtil.h:303
std::string GetSigPathName(std::string sigPath)
Definition IccUtil.cpp:1614
virtual icElemTypeSignature GetType() const
virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccTagMultiProcessElement *pMPE=NULL, const CIccProfile *pProfile=NULL) const
Name: CIccMpeSpectralMatrix::Validate.

References CIccInfo::GetSigPathName(), icGetSigPath(), icMaxStatus(), icMsgValidateCriticalError, icValidateCriticalError, and CIccMpeSpectralMatrix::Validate().

+ Here is the call graph for this function:

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