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

Class: CIccMpeEmissionMatrix. More...

#include <IccMpeSpectral.h>

+ Inheritance diagram for CIccMpeEmissionMatrix:
+ Collaboration diagram for CIccMpeEmissionMatrix:

Public Member Functions

virtual void Apply (CIccApplyMpe *pApply, icFloatNumber *dstPixel, const icFloatNumber *srcPixel) const
 Name: CIccMpeEmissionMatrix::Apply.
 
virtual bool Begin (icElemInterp nInterp, CIccTagMultiProcessElement *pMPE)
 Name: CIccMpeEmissionMatrix::Begin.
 
 CIccMpeEmissionMatrix ()
 
 CIccMpeEmissionMatrix (const CIccMpeEmissionMatrix &ITPC)
 
virtual const icCharGetClassName () const
 
virtual icElemTypeSignature GetType () const
 
virtual CIccMultiProcessElementNewCopy () const
 
CIccMpeEmissionMatrixoperator= (const CIccMpeEmissionMatrix &ITPC)
 
virtual ~CIccMpeEmissionMatrix ()
 
- 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 icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccTagMultiProcessElement *pMPE=NULL, const CIccProfile *pProfile=NULL) const
 Name: CIccMpeSpectralMatrix::Validate.
 
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: CIccMpeEmissionMatrix.

Purpose: The Observed Emission Matrix Element

Definition at line 147 of file IccMpeSpectral.h.

Constructor & Destructor Documentation

◆ CIccMpeEmissionMatrix() [1/2]

CIccMpeEmissionMatrix::CIccMpeEmissionMatrix ( )
inline

Definition at line 150 of file IccMpeSpectral.h.

CIccMpeSpectralMatrix()
Name: CIccMpeSpectralMatrix::CIccMpeSpectralMatrix.

◆ CIccMpeEmissionMatrix() [2/2]

CIccMpeEmissionMatrix::CIccMpeEmissionMatrix ( const CIccMpeEmissionMatrix & ITPC)
inline

Definition at line 151 of file IccMpeSpectral.h.

151: CIccMpeSpectralMatrix(ITPC) {}

◆ ~CIccMpeEmissionMatrix()

virtual CIccMpeEmissionMatrix::~CIccMpeEmissionMatrix ( )
inlinevirtual

Definition at line 154 of file IccMpeSpectral.h.

154{}

Member Function Documentation

◆ Apply()

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

Name: CIccMpeEmissionMatrix::Apply.

Purpose:

Args:

Return:

Implements CIccMpeSpectralMatrix.

Definition at line 651 of file IccMpeSpectral.cpp.

652{
653 if (m_pApplyMtx) {
654 m_pApplyMtx->VectorMult(dstPixel, srcPixel);
655 dstPixel[0] += m_xyzOffset[0];
656 dstPixel[1] += m_xyzOffset[1];
657 dstPixel[2] += m_xyzOffset[2];
658 }
659 else {
660 dstPixel[0] = 0;
661 dstPixel[1] = 0;
662 dstPixel[2] = 0;
663 }
664}
virtual void VectorMult(icFloatNumber *pDst, const icFloatNumber *pSrc) const
Name: CIccMatrixMath::VectorMult.
icFloatNumber m_xyzOffset[3]
CIccMatrixMath * m_pApplyMtx

◆ Begin()

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

Name: CIccMpeEmissionMatrix::Begin.

Purpose:

Args:

Return:

Implements CIccMpeSpectralMatrix.

Definition at line 595 of file IccMpeSpectral.cpp.

596{
597 if (!m_pOffset ||!pMPE || !m_pMatrix || m_nOutputChannels != 3)
598 return false;
599
600 IIccProfileConnectionConditions *pAppliedPCC = pMPE->GetAppliedPCC();
601 if (!pAppliedPCC)
602 return false;
603
605 if (!pSVC)
606 return false;
607
608 CIccMatrixMath observer(3, m_Range.steps);
609 icFloat32Number *pSrc, *pMtx;
610
611 if (!pAppliedPCC->getEmissiveObserver(m_Range, m_pWhite, observer.entry(0)))
612 return false;
613
614 //convert m_Matrix emission values to a matrix of XYZ column vectors
616
617 if (!m_pApplyMtx)
618 return false;
619
620 icFloatNumber xyz[3];
621 int i;
622
623 pSrc = m_pMatrix;
624 pMtx = m_pApplyMtx->entry(0);
625 for (i=0; i<m_nInputChannels; i++) {
626 observer.VectorMult(xyz, pSrc);
627 pSrc += m_Range.steps;
628
629 pMtx[0] = xyz[0];
630 pMtx[m_nInputChannels] = xyz[1];
631 pMtx[2*m_nInputChannels] = xyz[2];
632 pMtx++;
633 }
634
635 //Now convert offset emission to XYZ offset
636 observer.VectorMult(m_xyzOffset, m_pOffset);
637
638 return true;
639}
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
Definition IccDefs.h:100
Type: Class.
icFloatNumber * entry(icUInt16Number nRow, icUInt16Number nCol=0)
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 * CIccMpeEmissionMatrix::GetClassName ( ) const
inlinevirtual

Implements CIccMultiProcessElement.

Reimplemented in CIccMpeXmlEmissionMatrix.

Definition at line 157 of file IccMpeSpectral.h.

157{ return "CIccMpeEmissionMatrix"; }

◆ GetDescribeName()

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

Implements CIccMpeSpectralMatrix.

Definition at line 163 of file IccMpeSpectral.h.

163{ return "ELEM_OBS_EMIS_MATRIX"; }

◆ GetType()

virtual icElemTypeSignature CIccMpeEmissionMatrix::GetType ( ) const
inlinevirtual

Implements CIccMultiProcessElement.

Definition at line 156 of file IccMpeSpectral.h.

@ icSigEmissionMatrixElemType

References icSigEmissionMatrixElemType.

◆ NewCopy()

virtual CIccMultiProcessElement * CIccMpeEmissionMatrix::NewCopy ( ) const
inlinevirtual

Implements CIccMultiProcessElement.

Definition at line 153 of file IccMpeSpectral.h.

153{ return new CIccMpeEmissionMatrix(*this);}

◆ numVectors()

virtual icUInt16Number CIccMpeEmissionMatrix::numVectors ( ) const
inlineprotectedvirtual

Implements CIccMpeSpectralMatrix.

Definition at line 164 of file IccMpeSpectral.h.

164{ return m_nInputChannels; }

◆ operator=()

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

Definition at line 152 of file IccMpeSpectral.h.

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

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