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

#include <IccMpeXml.h>

+ Inheritance diagram for CIccMpeXmlInvEmissionMatrix:
+ Collaboration diagram for CIccMpeXmlInvEmissionMatrix:

Public Member Functions

virtual const char * GetClassName () const
 
virtual IIccExtensionMpeGetExtension ()
 
virtual bool ParseXml (xmlNode *pNode, std::string &parseStr)
 
virtual bool ToXml (std::string &xml, std::string blanks="")
 
virtual ~CIccMpeXmlInvEmissionMatrix ()
 
- Public Member Functions inherited from CIccMpeInvEmissionMatrix
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 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 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 ()
 
- Public Member Functions inherited from CIccMpeXml
virtual const char * GetExtClassName ()
 
virtual ~CIccMpeXml (void)
 

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 Member Functions inherited from CIccMpeInvEmissionMatrix
virtual const char * GetDescribeName () const
 
virtual icUInt16Number numVectors () const
 
- Protected Member Functions inherited from CIccMpeSpectralMatrix
void copyData (const CIccMpeSpectralMatrix &ITPC)
 Name: &CIccMpeSpectralMatrix::operator=.
 
- 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

Definition at line 356 of file IccMpeXml.h.

Constructor & Destructor Documentation

◆ ~CIccMpeXmlInvEmissionMatrix()

virtual CIccMpeXmlInvEmissionMatrix::~CIccMpeXmlInvEmissionMatrix ( )
inlinevirtual

Definition at line 359 of file IccMpeXml.h.

359{}

Member Function Documentation

◆ GetClassName()

virtual const char * CIccMpeXmlInvEmissionMatrix::GetClassName ( ) const
inlinevirtual

Reimplemented from CIccMpeInvEmissionMatrix.

Definition at line 361 of file IccMpeXml.h.

361{ return "CIccMpeXmlInvEmissionMatrix"; }

◆ GetExtension()

virtual IIccExtensionMpe * CIccMpeXmlInvEmissionMatrix::GetExtension ( )
inlinevirtual

Reimplemented from CIccMultiProcessElement.

Definition at line 363 of file IccMpeXml.h.

363{ return this; }

◆ ParseXml()

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

Implements CIccMpeXml.

Definition at line 1465 of file IccMpeXml.cpp.

1466{
1467 icUInt16Number nInputChannels = atoi(icXmlAttrValue(pNode, "InputChannels"));
1468 icUInt16Number nOutputChannels = atoi(icXmlAttrValue(pNode, "OutputChannels"));
1469
1470 if (!nInputChannels || !nOutputChannels) {
1471 parseStr += "Invalid InputChannels or OutputChannels In MatrixElement\n";
1472 return false;
1473 }
1474
1475 xmlNode *pData;
1476
1477 pData = icXmlFindNode(pNode->children, "Wavelengths");
1478 if (pData) {
1479 icFloatNumber dStart = (icFloatNumber)atof(icXmlAttrValue(pData, "start"));
1480 icFloatNumber dEnd = (icFloatNumber)atof(icXmlAttrValue(pData, "end"));
1481 icUInt16Number nSteps = atoi(icXmlAttrValue(pData, "steps"));
1482
1483 if (!nSteps) {
1484 parseStr += "Invalid Spectral Range\n";
1485 return false;
1486 }
1487 m_Range.start = icFtoF16(dStart);
1488 m_Range.end = icFtoF16(dEnd);
1489 m_Range.steps = nSteps;
1490 }
1491
1492 SetSize(nInputChannels, nOutputChannels, m_Range);
1493 if (!m_pWhite || !m_pMatrix || !m_pOffset) {
1494 parseStr += "Unable to SetSize\n";
1495 return false;
1496 }
1497
1498 pData = icXmlFindNode(pNode->children, "WhiteData");
1499 if (pData) {
1500
1501 if (!CIccFloatArray::ParseArray(m_pWhite, m_Range.steps, pData->children))
1502 return false;
1503 }
1504 else {
1505 parseStr += "Missing White Data";
1506 }
1507
1508 pData = icXmlFindNode(pNode->children, "MatrixData");
1509 if (pData) {
1510
1511 if (!CIccFloatArray::ParseArray(m_pMatrix, numVectors()*(int)m_Range.steps, pData->children))
1512 return false;
1513 }
1514 else {
1515 parseStr += "Missing Matrix Data";
1516 }
1517
1518 pData = icXmlFindNode(pNode->children, "OffsetData");
1519 if (pData) {
1520 if (!CIccFloatArray::ParseArray(m_pOffset, m_Range.steps, pData->children))
1521 return false;
1522 }
1523 else {
1524 memset(m_pOffset, 0, (int)m_Range.steps*sizeof(icFloatNumber));
1525 }
1526 return true;
1527}
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
Definition IccDefs.h:100
icFloat16Number icFtoF16(icFloat32Number num)
Definition IccUtil.cpp:673
xmlNode * icXmlFindNode(xmlNode *pNode, const char *szNodeName)
const char * icXmlAttrValue(xmlAttr *attr, const char *szDefault)
virtual icUInt16Number numVectors() const
icFloatNumber * m_pOffset
icSpectralRange m_Range
icFloatNumber * m_pWhite
icFloatNumber * m_pMatrix
bool SetSize(icUInt16Number nInputChannels, icUInt16Number nOutputChannels, const icSpectralRange &range)
Name: CIccMpeSpectralMatrix::SetSize.
static bool ParseArray(T *buf, icUInt32Number nBufSize, xmlNode *pNode)
unsigned short icUInt16Number
icUInt16Number steps
icFloat16Number start
icFloat16Number end

References icFtoF16(), icXmlAttrValue(), icXmlFindNode(), and CIccXmlArrayType< T, Tsig >::ParseArray().

+ Here is the call graph for this function:

◆ ToXml()

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

Implements CIccMpeXml.

Definition at line 1402 of file IccMpeXml.cpp.

1403{
1404 char buf[128];
1405 sprintf(buf, "<InvEmissionMatrixElement InputChannels=\"%d\" OutputChannels=\"%d\"", NumInputChannels(), NumOutputChannels());
1406 xml += blanks + buf;
1407
1408 if (m_nReserved) {
1409 sprintf(buf, " Reserved=\"%u\"", m_nReserved);
1410 xml += buf;
1411 }
1412 xml += ">\n";
1413
1414 sprintf(buf, " <Wavelengths start=\"" icXmlHalfFmt "\" end=\"" icXmlHalfFmt "\" steps=\"%d\"/>\n", icF16toF(m_Range.start), icF16toF(m_Range.end), m_Range.steps);
1415 xml += blanks + buf;
1416
1417 int i, j, n;
1418
1419 if (m_pWhite) {
1420 xml += blanks + " <WhiteData>\n";
1421
1422 xml += blanks + " ";
1423 for (i=0; i<(int)m_Range.steps; i++) {
1424 sprintf(buf, " " icXmlFloatFmt, m_pWhite[i]);
1425 xml += buf;
1426 }
1427 xml += "\n";
1428
1429 xml += blanks + " </WhiteData>\n";
1430 }
1431
1432 if (m_pMatrix) {
1433 xml += blanks + " <MatrixData>\n";
1434
1435 for (n=0, j=0; j<numVectors(); j++) {
1436 xml += blanks + " ";
1437 for (i=0; i<(int)m_Range.steps; i++, n++) {
1438 sprintf(buf, " " icXmlFloatFmt, m_pMatrix[n]);
1439 xml += buf;
1440 }
1441 xml += "\n";
1442 }
1443 xml += blanks + " </MatrixData>\n";
1444 }
1445
1446 if (m_pOffset) {
1447 xml += blanks + " <OffsetData>\n";
1448
1449 xml += blanks + " ";
1450 for (i=0; i<(int)m_Range.steps; i++) {
1451 sprintf(buf, " " icXmlFloatFmt, m_pOffset[i]);
1452 xml += buf;
1453 }
1454 xml += "\n";
1455
1456 xml += blanks + " </OffsetData>\n";
1457 }
1458
1459 xml += blanks + "</InvEmissionMatrixElement>\n";
1460
1461 return true;
1462}
icFloatNumber icF16toF(icFloat16Number num)
Definition IccUtil.cpp:629
#define icXmlHalfFmt
#define icXmlFloatFmt
virtual icUInt16Number NumInputChannels() const
Definition IccTagMPE.h:159
virtual icUInt16Number NumOutputChannels() const
Definition IccTagMPE.h:160
icUInt32Number m_nReserved
Definition IccTagMPE.h:188

References icF16toF(), icXmlFloatFmt, and icXmlHalfFmt.

+ Here is the call graph for this function:

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