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

#include <IccTagXml.h>

+ Inheritance diagram for CIccTagXmlGamutBoundaryDesc:
+ Collaboration diagram for CIccTagXmlGamutBoundaryDesc:

Public Member Functions

virtual IIccExtensionTagGetExtension ()
 
virtual const char * GetGlassName () const
 
virtual bool ParseXml (xmlNode *pNode, std::string &parseStr)
 
virtual bool ToXml (std::string &xml, std::string blanks="")
 
virtual ~CIccTagXmlGamutBoundaryDesc ()
 
- Public Member Functions inherited from CIccTagGamutBoundaryDesc
 CIccTagGamutBoundaryDesc ()
 Name: CIccTagGamutBoundaryDescription::CIccTagGamutBoundaryDescription.
 
 CIccTagGamutBoundaryDesc (const CIccTagGamutBoundaryDesc &InGamutBoundaryTag)
 Name: CIccTagGamutBoundaryDescription::CIccTagGamutBoundaryDescription.
 
 CIccTagGamutBoundaryDesc (icUInt8Number nInputChannels, icInt32Number numberOfVertices, icInt32Number numberOfTriangles, icUInt8Number nOutputChannels=0)
 Name: CIccTagGamutBoundaryDescription::CIccTagGamutBoundaryDescription.
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 Name: CIccTagGamutBoundaryDescription::Describe.
 
virtual const icCharGetClassName () const
 
icInt32Number getNumberOfTriangles ()
 
icInt32Number getNumberOfVertices ()
 
icInt16Number getNumDeviceChannels ()
 
icInt16Number getNumPCSChannels ()
 
bool getTriangle (icInt32Number triangleNumber, icGamutBoundaryTriangle &triangle)
 Name: CIccTagGamutBoundaryDescription::getTriangle.
 
virtual icTagTypeSignature GetType () const
 Function: GetType()
 
icFloatNumbergetVertexDeviceCoord (icInt32Number vertexNumber)
 Name: CIccTagGamutBoundaryDescription::getVertexDeviceCoord.
 
icFloatNumbergetVertexPCSCoord (icInt32Number vertexNumber)
 Name: CIccTagGamutBoundaryDescription::getVertexPCSCoord.
 
virtual CIccTagNewCopy () const
 Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
 
CIccTagGamutBoundaryDescoperator= (const CIccTagGamutBoundaryDesc &InGamutBoundaryTag)
 Name: CIccTagGamutBoundaryDescription::operator=.
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 Name: CIccTagGamutBoundaryDescription::Read.
 
bool setTriangle (icInt32Number triangleNumber, icGamutBoundaryTriangle &triangle)
 Name: CIccTagGamutBoundaryDescription::setTriangle.
 
bool setVertex (icInt32Number vertexNumber, icFloatNumber *pcsCoords, icFloatNumber *deviceCoords=NULL)
 Name: CIccTagGamutBoundaryDescription::setVertex.
 
icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccProfile *pProfile) const
 Name: CIccTagGamutBoundaryDescription::Validate.
 
virtual bool Write (CIccIO *pIO)
 Name: CIccTagGamutBoundaryDescription::Write.
 
virtual ~CIccTagGamutBoundaryDesc ()
 Name: CIccTagGamutBoundaryDescription::CIccTagGamutBoundaryDescription.
 
- Public Member Functions inherited from CIccTag
 CIccTag ()
 Name: CIccTag::CIccTag.
 
virtual void DetachIO ()
 Function: ReadAll() - Read All sub data for tag from file.
 
virtual icArraySignature GetTagArrayType () const
 
virtual icStructSignature GetTagStructType () const
 
virtual bool IsArrayType ()
 
virtual bool IsMBBType ()
 
virtual bool IsNumArrayType () const
 
virtual bool IsSupported ()
 Function: IsSupported(size, pIO) - Check if tag fully supported for apply purposes.
 
virtual bool Read (icUInt32Number size, CIccIO *pIO, CIccProfile *pProfile)
 Function: Read(size, pIO) - Read tag from file.
 
virtual bool ReadAll ()
 Function: ReadAll() - Read All sub data for tag from file.
 
virtual ~CIccTag ()
 Name: CIccTag::CIccTag.
 

Additional Inherited Members

- Static Public Member Functions inherited from CIccTag
static CIccTagCreate (icTagTypeSignature sig)
 Name: CIccTag::Create.
 
- Public Attributes inherited from CIccTag
icUInt32Number m_nReserved
 
- Protected Attributes inherited from CIccTagGamutBoundaryDesc
icFloatNumberm_DeviceValues
 
icInt16Number m_nDeviceChannels
 
icInt16Number m_nPCSChannels
 
icInt32Number m_NumberOfTriangles
 
icInt32Number m_NumberOfVertices
 
icFloatNumberm_PCSValues
 
icGamutBoundaryTrianglem_Triangles
 
- Private Member Functions inherited from CIccTagXml
virtual const char * GetExtClassName () const
 
virtual const char * GetExtDerivedClassName () const
 
virtual ~CIccTagXml (void)
 

Detailed Description

Definition at line 670 of file IccTagXml.h.

Constructor & Destructor Documentation

◆ ~CIccTagXmlGamutBoundaryDesc()

virtual CIccTagXmlGamutBoundaryDesc::~CIccTagXmlGamutBoundaryDesc ( )
inlinevirtual

Definition at line 673 of file IccTagXml.h.

673{}

Member Function Documentation

◆ GetExtension()

virtual IIccExtensionTag * CIccTagXmlGamutBoundaryDesc::GetExtension ( )
inlinevirtual

Reimplemented from CIccTag.

Definition at line 677 of file IccTagXml.h.

677{return this; }

◆ GetGlassName()

virtual const char * CIccTagXmlGamutBoundaryDesc::GetGlassName ( ) const
inlinevirtual

Definition at line 675 of file IccTagXml.h.

675{return "CIccTagXmlGamutBoundaryDesc"; }

◆ ParseXml()

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

Implements CIccTagXml.

Definition at line 4929 of file IccTagXml.cpp.

4930{
4931 // parse each tag
4932 xmlNode *childNode, *subNode;
4933
4934 childNode = icXmlFindNode(pNode, "Vertices");
4935 if (!childNode) {
4936 parseStr += "Cannot find Vertices\n";
4937 return false;
4938 }
4939
4940 subNode = icXmlFindNode(childNode->children, "PCSValues");
4941
4942 if (subNode) {
4943 m_nPCSChannels = atoi(icXmlAttrValue(subNode, "channels", "0"));
4944
4945 if (!m_nPCSChannels) {
4946 parseStr += "Bad PCSValues channels\n";
4947 return false;
4948 }
4949
4950 CIccFloatArray vals;
4951 if (!vals.ParseArray(subNode->children)) {
4952 parseStr += "Unable to parse GamutBoundaryDesc PCSValues\n";
4953 return false;
4954 }
4955
4957
4958 if (m_NumberOfVertices<4) {
4959 parseStr += "Must have at least 4 PCSValues vertices\n";
4960 return false;
4961 }
4962
4964
4965 if (!m_PCSValues)
4966 return false;
4967
4969 }
4970 else {
4971 parseStr += "Cannot find PCSValues\n";
4972 return false;
4973 }
4974
4975 subNode = icXmlFindNode(childNode->children, "DeviceValues");
4976
4977 if (subNode) {
4978 m_nDeviceChannels = atoi(icXmlAttrValue(subNode, "channels", "0"));
4979
4980 if (!m_nDeviceChannels) {
4981 parseStr += "Bad DeviceValues channels\n";
4982 return false;
4983 }
4984
4985 CIccFloatArray vals;
4986 if (!vals.ParseArray(subNode->children)) {
4987 parseStr += "Unable to parse GamutBoundaryDesc DeviceValues\n";
4988 return false;
4989 }
4990
4991 int nVertices = vals.GetSize() / m_nDeviceChannels;
4992
4993 if (m_NumberOfVertices != nVertices) {
4994 parseStr += "Number of Device vertices doesn't match PCS verticies\n";
4995 return false;
4996 }
4997
4999
5000 if (!m_DeviceValues)
5001 return false;
5002
5004 }
5005 else if (!m_PCSValues)
5007
5008 childNode = icXmlFindNode(pNode, "Triangles");
5009 if (!childNode) {
5010 parseStr += "Cannot find Triangles\n";
5011 return false;
5012 }
5013
5014 int nMaxIndex = 0, n=0;
5015 for (subNode = childNode->children; subNode; subNode = subNode->next) {
5016 if (subNode->type == XML_ELEMENT_NODE && !strcmp((icChar*)subNode->name, "T")) {
5017 nMaxIndex++;
5018 }
5019 }
5020 m_NumberOfTriangles = nMaxIndex;
5022
5023 n=0;
5024 for (subNode = childNode->children; subNode && n<nMaxIndex; subNode = subNode->next) {
5025 if (subNode->type == XML_ELEMENT_NODE && !strcmp((icChar*)subNode->name, "T")) {
5026 CIccUInt32Array ids;
5027
5028 if (!ids.ParseArray(subNode->children) || ids.GetSize()!=3) {
5029 parseStr += "Invalid Triangle entry\n";
5030 return false;
5031 }
5032 icUInt32Number *v = ids.GetBuf();
5033
5034 m_Triangles[n].m_VertexNumbers[0] = v[0];
5035 m_Triangles[n].m_VertexNumbers[1] = v[1];
5036 m_Triangles[n].m_VertexNumbers[2] = v[2];
5037
5038 n++;
5039 }
5040 }
5041
5042 return true;
5043}
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
Definition IccDefs.h:100
char icChar
Definition IccDefs.h:109
xmlNode * icXmlFindNode(xmlNode *pNode, const char *szNodeName)
const char * icXmlAttrValue(xmlAttr *attr, const char *szDefault)
unsigned int icUInt32Number
icGamutBoundaryTriangle * m_Triangles
Definition IccTagLut.h:664
icInt32Number m_NumberOfTriangles
Definition IccTagLut.h:659
icInt16Number m_nPCSChannels
Definition IccTagLut.h:660
icFloatNumber * m_DeviceValues
Definition IccTagLut.h:663
icFloatNumber * m_PCSValues
Definition IccTagLut.h:662
icInt16Number m_nDeviceChannels
Definition IccTagLut.h:661
icInt32Number m_NumberOfVertices
Definition IccTagLut.h:658
static bool ParseArray(T *buf, icUInt32Number nBufSize, xmlNode *pNode)
icUInt32Number GetSize()
Definition IccUtilXml.h:166
icUInt32Number m_VertexNumbers[3]
Definition IccTagLut.h:601

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

+ Here is the call graph for this function:

◆ ToXml()

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

Implements CIccTagXml.

Definition at line 4890 of file IccTagXml.cpp.

4891{
4892 std::string info;
4893 char line[256];
4894 int i;
4895
4897 xml += blanks + "<Vertices>\n";
4898
4899 if (m_PCSValues) {
4900 sprintf(line, " <PCSValues channels=\"%d\">\n", m_nPCSChannels);
4901 xml += blanks + line;
4903 xml += blanks + " </PCSValues>\n";
4904 }
4905 if (m_DeviceValues) {
4906 sprintf(line, " <DeviceValues channels=\"%d\">\n", m_nDeviceChannels);
4907 xml += blanks + line;
4909 xml += blanks + " </DeviceValues>\n";
4910 }
4911 xml += blanks + "</Vertices>\n";
4912 }
4913
4915 xml += blanks + "<Triangles>\n";
4916
4917 for (i=0; i<m_NumberOfTriangles; i++) {
4918 sprintf(line, " <T>%u %u %u</T>\n", m_Triangles[i].m_VertexNumbers[0], m_Triangles[i].m_VertexNumbers[1], m_Triangles[i].m_VertexNumbers[2]);
4919 xml += blanks + line;
4920 }
4921
4922 xml += blanks + "</Triangles>\n";
4923 }
4924
4925 return true;
4926}
@ icConvertFloat
static bool DumpArray(std::string &xml, std::string blanks, T *buf, icUInt32Number nBufSize, icConvertType nType, icUInt8Number nColumns)

References CIccXmlArrayType< T, Tsig >::DumpArray(), and icConvertFloat.

+ Here is the call graph for this function:

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