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

#include <IccMpeXml.h>

+ Inheritance diagram for CIccMpeXmlEmissionMatrix:
+ Collaboration diagram for CIccMpeXmlEmissionMatrix:

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 ~CIccMpeXmlEmissionMatrix ()
 
- Public Member Functions inherited from CIccMpeEmissionMatrix
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 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 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 CIccMpeEmissionMatrix
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 343 of file IccMpeXml.h.

Constructor & Destructor Documentation

◆ ~CIccMpeXmlEmissionMatrix()

virtual CIccMpeXmlEmissionMatrix::~CIccMpeXmlEmissionMatrix ( )
inlinevirtual

Definition at line 346 of file IccMpeXml.h.

346{}

Member Function Documentation

◆ GetClassName()

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

Reimplemented from CIccMpeEmissionMatrix.

Definition at line 348 of file IccMpeXml.h.

348{ return "CIccMpeXmlEmissionMatrix"; }

◆ GetExtension()

virtual IIccExtensionMpe * CIccMpeXmlEmissionMatrix::GetExtension ( )
inlinevirtual

Reimplemented from CIccMultiProcessElement.

Definition at line 350 of file IccMpeXml.h.

350{ return this; }

◆ ParseXml()

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

Implements CIccMpeXml.

Definition at line 1338 of file IccMpeXml.cpp.

1339{
1340 icUInt16Number nInputChannels = atoi(icXmlAttrValue(pNode, "InputChannels"));
1341 icUInt16Number nOutputChannels = atoi(icXmlAttrValue(pNode, "OutputChannels"));
1342
1343 if (!nInputChannels || !nOutputChannels) {
1344 parseStr += "Invalid InputChannels or OutputChannels In MatrixElement\n";
1345 return false;
1346 }
1347
1348 xmlNode *pData;
1349
1350 pData = icXmlFindNode(pNode->children, "Wavelengths");
1351 if (pData) {
1352 icFloatNumber dStart = (icFloatNumber)atof(icXmlAttrValue(pData, "start"));
1353 icFloatNumber dEnd = (icFloatNumber)atof(icXmlAttrValue(pData, "end"));
1354 icUInt16Number nSteps = atoi(icXmlAttrValue(pData, "steps"));
1355
1356 if (!nSteps) {
1357 parseStr += "Invalid Spectral Range\n";
1358 return false;
1359 }
1360 m_Range.start = icFtoF16(dStart);
1361 m_Range.end = icFtoF16(dEnd);
1362 m_Range.steps = nSteps;
1363 }
1364
1365 SetSize(nInputChannels, nOutputChannels, m_Range);
1366 if (!m_pWhite || !m_pMatrix || !m_pOffset) {
1367 parseStr += "Unable to SetSize\n";
1368 return false;
1369 }
1370
1371 pData = icXmlFindNode(pNode->children, "WhiteData");
1372 if (pData) {
1373
1374 if (!CIccFloatArray::ParseArray(m_pWhite, m_Range.steps, pData->children))
1375 return false;
1376 }
1377 else {
1378 parseStr += "Missing MatrixData";
1379 }
1380
1381 pData = icXmlFindNode(pNode->children, "MatrixData");
1382 if (pData) {
1383
1384 if (!CIccFloatArray::ParseArray(m_pMatrix, numVectors()*(int)m_Range.steps, pData->children))
1385 return false;
1386 }
1387 else {
1388 parseStr += "Missing MatrixData";
1389 }
1390
1391 pData = icXmlFindNode(pNode->children, "OffsetData");
1392 if (pData) {
1393 if (!CIccFloatArray::ParseArray(m_pOffset, m_Range.steps, pData->children))
1394 return false;
1395 }
1396 else {
1397 memset(m_pOffset, 0, (int)m_Range.steps*sizeof(icFloatNumber));
1398 }
1399 return true;
1400}
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 CIccMpeXmlEmissionMatrix::ToXml ( std::string & xml,
std::string blanks = "" )
virtual

Implements CIccMpeXml.

Definition at line 1275 of file IccMpeXml.cpp.

1276{
1277 char buf[128];
1278 sprintf(buf, "<EmissionMatrixElement InputChannels=\"%d\" OutputChannels=\"%d\"", NumInputChannels(), NumOutputChannels());
1279 xml += blanks + buf;
1280
1281 if (m_nReserved) {
1282 sprintf(buf, " Reserved=\"%u\"", m_nReserved);
1283 xml += buf;
1284 }
1285 xml += ">\n";
1286
1287 sprintf(buf, " <Wavelengths start=\"" icXmlHalfFmt "\" end=\"" icXmlHalfFmt "\" steps=\"%d\"/>\n", icF16toF(m_Range.start), icF16toF(m_Range.end), m_Range.steps);
1288 xml += blanks + buf;
1289
1290 int i, j, n;
1291
1292 if (m_pWhite) {
1293 xml += blanks + " <WhiteData>\n";
1294
1295 xml += blanks + " ";
1296 for (i=0; i<(int)m_Range.steps; i++) {
1297 sprintf(buf, " " icXmlFloatFmt, m_pWhite[i]);
1298 xml += buf;
1299 }
1300 xml += "\n";
1301
1302 xml += blanks + " </WhiteData>\n";
1303 }
1304
1305 if (m_pMatrix) {
1306 xml += blanks + " <MatrixData>\n";
1307
1308 for (n=0, j=0; j<numVectors(); j++) {
1309 xml += blanks + " ";
1310 for (i=0; i<(int)m_Range.steps; i++, n++) {
1311 sprintf(buf, " " icXmlFloatFmt, m_pMatrix[n]);
1312 xml += buf;
1313 }
1314 xml += "\n";
1315 }
1316 xml += blanks + " </MatrixData>\n";
1317 }
1318
1319 if (m_pOffset) {
1320 xml += blanks + " <OffsetData>\n";
1321
1322 xml += blanks + " ";
1323 for (i=0; i<(int)m_Range.steps; i++) {
1324 sprintf(buf, " " icXmlFloatFmt, m_pOffset[i]);
1325 xml += buf;
1326 }
1327 xml += "\n";
1328
1329 xml += blanks + " </OffsetData>\n";
1330 }
1331
1332 xml += blanks + "</EmissionMatrixElement>\n";
1333
1334 return true;
1335}
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: