IccMAX 2.1.27
Color Profile Tools
Loading...
Searching...
No Matches
CIccTagSparseMatrixArray Class Reference

#include <IccTagBasic.h>

+ Inheritance diagram for CIccTagSparseMatrixArray:
+ Collaboration diagram for CIccTagSparseMatrixArray:

Public Member Functions

 CIccTagSparseMatrixArray (const CIccTagSparseMatrixArray &ITSMA)
 
 CIccTagSparseMatrixArray (int nNumMatrices=1, int nChannelsPerMatrix=4)
 
virtual ~CIccTagSparseMatrixArray ()
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 
virtual void DetachIO ()
 
icUInt32Number GetBytesPerMatrix () const
 
icUInt32Number GetChannelsPerMatrix () const
 
virtual const icCharGetClassName () const
 
virtual IIccExtensionTagGetExtension ()
 
icSparseMatrixType GetMatrixType () const
 
icUInt32Number GetNumMatrices () const
 Returns the number of matrices in the array.
 
virtual icUInt32Number GetNumValues () const
 
bool GetSparseMatrix (CIccSparseMatrix &mtx, int nIndex, bool bInitFromData=true)
 
virtual icArraySignature GetTagArrayType () const
 
virtual icStructSignature GetTagStructType () const
 
virtual icTagTypeSignature GetType () const
 
virtual bool GetValues (icFloatNumber *DstVector, icUInt32Number nStart=0, icUInt32Number nVectorSize=1) const
 
virtual bool Interpolate (icFloatNumber *DstVector, icFloatNumber val, icUInt32Number nVectorSize=1, icFloatNumber *zeroVals=NULL) const
 
virtual bool IsArrayType ()
 
virtual bool IsMatrixArray () const
 
virtual bool IsMBBType ()
 
virtual bool IsNumArrayType () const
 
virtual bool IsSupported ()
 
virtual CIccTagNewCopy ()
 
virtual CIccTagNewCopy () const
 
CIccTagSparseMatrixArrayoperator= (const CIccTagSparseMatrixArray &ITSMA)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO, CIccProfile *pProfile)
 
virtual bool ReadAll ()
 
bool Reset (icUInt32Number nNumMatrices, icUInt16Number nChannelsPerMatrix)
 
void SetMatrixType (icSparseMatrixType nType)
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
 
virtual bool ValuePos (icFloatNumber &DstPos, icFloatNumber val, bool &bNoZero) const
 
virtual bool Write (CIccIO *pIO)
 

Static Public Member Functions

static CIccTagCreate (icTagTypeSignature sig)
 

Data Fields

icUInt32Number m_nReserved
 

Protected Attributes

bool m_bNonZeroPadding
 
icUInt16Number m_nChannelsPerMatrix
 
icSparseMatrixType m_nMatrixType
 
icUInt32Number m_nSize
 
icUInt8Numberm_RawData
 

Detailed Description

Class: CIccTagSparseMatrixArray

Purpose: A template class for arrays of Fixed point numbers

Derived Tags: CIccTagS15Fixed16 and CIccTagU16Fixed16

Constructor & Destructor Documentation

◆ CIccTagSparseMatrixArray() [1/2]

CIccTagSparseMatrixArray::CIccTagSparseMatrixArray ( int  nNumMatrices = 1,
int  nChannelsPerMatrix = 4 
)

Name: CIccTagSparseMatrixArray::CIccTagSparseMatrixArray

Purpose: CIccTagSparseMatrixArray Constructor

Args: nSize = number of data entries

4415{
4416 m_nSize = nNumMatrices;
4417 m_nChannelsPerMatrix = nChannelsPerMatrix;
4419
4420 if (m_nSize <1)
4421 m_nSize = 1;
4422 if (nChannelsPerMatrix<4)
4424
4426
4427 m_bNonZeroPadding = false;
4428}
unsigned char icUInt8Number
Definition icProfileHeader.h:250
@ icSparseMatrixFloat32
Definition icProfileHeader.h:1348
icUInt8Number * m_RawData
Definition IccTagBasic.h:878
icUInt32Number m_nSize
Definition IccTagBasic.h:879
icUInt32Number GetBytesPerMatrix() const
Definition IccTagBasic.h:852
icUInt16Number m_nChannelsPerMatrix
Definition IccTagBasic.h:880
icSparseMatrixType m_nMatrixType
Definition IccTagBasic.h:877
bool m_bNonZeroPadding
Definition IccTagBasic.h:882

References GetBytesPerMatrix(), icSparseMatrixFloat32, m_bNonZeroPadding, m_nChannelsPerMatrix, m_nMatrixType, m_nSize, and m_RawData.

+ Here is the call graph for this function:

◆ CIccTagSparseMatrixArray() [2/2]

CIccTagSparseMatrixArray::CIccTagSparseMatrixArray ( const CIccTagSparseMatrixArray ITSMA)

Name: CIccTagSparseMatrixArray::CIccTagSparseMatrixArray

Purpose: Copy Constructor

Args: ITFN = The CIccTagFixedNum object to be copied

4442{
4443 m_nSize = ITSMA.m_nSize;
4446
4448 memcpy(m_RawData, ITSMA.m_RawData, m_nSize*GetBytesPerMatrix());
4449
4451}

References GetBytesPerMatrix(), m_bNonZeroPadding, m_nChannelsPerMatrix, m_nMatrixType, m_nSize, and m_RawData.

Referenced by NewCopy().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ~CIccTagSparseMatrixArray()

CIccTagSparseMatrixArray::~CIccTagSparseMatrixArray ( )
virtual

Name: CIccTagSparseMatrixArray::~CIccTagSparseMatrixArray

Purpose: Destructor

4493{
4494 if (m_RawData)
4495 free(m_RawData);
4496}

References m_RawData.

Member Function Documentation

◆ Create()

CIccTag * CIccTag::Create ( icTagTypeSignature  sig)
staticinherited

Name: CIccTag::Create

Purpose: This is a static tag creator based upon tag signature type

Args: sig = tag type signature

Return: Pointer to Allocated tag

144{
145 return CIccTagCreator::CreateTag(sig);
146}
static CIccTag * CreateTag(icTagTypeSignature tagTypeSig)
Definition IccTagFactory.h:279

References CIccTagCreator::CreateTag().

Referenced by CIccDefaultEncProfileConverter::ConvertFromParams(), CIccTagStruct::LoadElem(), CIccProfileXml::ParseTag(), CIccTagXmlStruct::ParseTag(), CIccMpeXmlTintArray::ParseXml(), CIccTagXmlArray::ParseXml(), CIccMpeTintArray::Read(), CIccTagLutAtoB::Read(), CIccTagLut8::Read(), CIccTagLut16::Read(), CIccTagLut8::SetColorSpaces(), CIccTagLut16::SetColorSpaces(), and CIccProfileDescText::SetType().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Describe()

void CIccTagSparseMatrixArray::Describe ( std::string &  sDescription,
int  nVerboseness 
)
virtual

Name: CIccTagSparseMatrixArray::Describe

Purpose: Dump data associated with the tag to a string

Args: sDescription - string to concatenate tag dump to

Reimplemented from CIccTag.

4790{
4791 icChar buf[128];
4792
4793 sDescription += "Begin_SparseMatrix_Array\n";
4794 sprintf(buf, "OutputChannels = %d\n", m_nChannelsPerMatrix);
4795 sDescription += buf;
4796 sprintf(buf, "MatrixType = %d\n", m_nMatrixType);
4797 sDescription += buf;
4798
4799 int i, r, c;
4800 icUInt32Number nBytesPerMatrix = m_nChannelsPerMatrix * sizeof(icFloatNumber);
4801 for (i=0; i<(int)m_nSize; i++) {
4802 CIccSparseMatrix mtx(&m_RawData[i*nBytesPerMatrix], nBytesPerMatrix, icSparseMatrixFloatNum, true);
4803
4804 sprintf(buf, "\nBegin_Matrix_%d\n", i);
4805 sDescription += buf;
4806
4807 icUInt16Number *start = mtx.GetRowStart();
4808 icUInt16Number *cols = mtx.GetColumnsForRow(0);
4809 for (r=0; r<mtx.Rows(); r++) {
4810 icUInt16Number rs = start[r];
4811 icUInt16Number re = start[r+1];
4812 sprintf(buf, "Row%d:", r);
4813 sDescription += buf;
4814
4815 for (c=rs; c<re; c++) {
4816 sprintf(buf, " (%d, %.4lf)", cols[c], mtx.GetData()->get(c));
4817 sDescription += buf;
4818 }
4819 }
4820
4821 sprintf(buf, "End_Matrix_%d\n", i);
4822 sDescription += buf;
4823 }
4824 sDescription += "\nEnd_SparseMatrix_Array\n";
4825
4826}
unsigned short icUInt16Number
Definition icProfileHeader.h:256
#define icSparseMatrixFloatNum
Definition icProfileHeader.h:1359
unsigned long icUInt32Number
Definition icProfileHeader.h:262
float icFloatNumber
Definition IccDefs.h:101
char icChar
Definition IccDefs.h:110
Definition IccSparseMatrix.h:154

References CIccSparseMatrix::CIccSparseMatrix(), IIccSparseMatrixEntry::get(), CIccSparseMatrix::GetColumnsForRow(), CIccSparseMatrix::GetData(), CIccSparseMatrix::GetRowStart(), m_nChannelsPerMatrix, m_nMatrixType, m_nSize, m_RawData, and CIccSparseMatrix::Rows().

+ Here is the call graph for this function:

◆ DetachIO()

virtual void CIccTag::DetachIO ( )
inlinevirtualinherited

Function: ReadAll() - Read All sub data for tag from file. Called by CIccProfile::ReadAll() to read all sub data for tag

Returns true if ReadAll is successful.

183{}

◆ GetBytesPerMatrix()

icUInt32Number CIccTagSparseMatrixArray::GetBytesPerMatrix ( ) const
inline
852{ return m_nChannelsPerMatrix*sizeof(icFloatNumber); }

References m_nChannelsPerMatrix.

Referenced by CIccTagSparseMatrixArray(), CIccTagSparseMatrixArray(), GetSparseMatrix(), GetValues(), Interpolate(), operator=(), CIccTagXmlSparseMatrixArray::ParseXml(), Read(), Reset(), and CIccTagXmlSparseMatrixArray::ToXml().

+ Here is the caller graph for this function:

◆ GetChannelsPerMatrix()

icUInt32Number CIccTagSparseMatrixArray::GetChannelsPerMatrix ( ) const
inline
851{ return m_nChannelsPerMatrix; }

References m_nChannelsPerMatrix.

Referenced by CIccArrayNamedColor::Validate().

+ Here is the caller graph for this function:

◆ GetClassName()

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

Reimplemented from CIccTag.

Reimplemented in CIccTagXmlSparseMatrixArray.

842{ return "CIccTagChromaticity"; }

◆ GetExtension()

virtual IIccExtensionTag * CIccTag::GetExtension ( )
inlinevirtualinherited

Reimplemented in CIccTagXmlUnknown, CIccTagXmlText, CIccTagXmlUtf8Text, CIccTagXmlZipUtf8Text, CIccTagXmlZipXml, CIccTagXmlUtf16Text, CIccTagXmlTextDescription, CIccTagXmlSignature, CIccTagXmlNamedColor2, CIccTagXmlXYZ, CIccTagXmlChromaticity, CIccTagXmlCicp, CIccTagXmlSparseMatrixArray, CIccTagXmlFixedNum< T, Tsig >, CIccTagXmlNum< T, A, Tsig >, CIccTagXmlFloatNum< T, A, Tsig >, CIccTagXmlMeasurement, CIccTagXmlMultiLocalizedUnicode, CIccTagXmlTagData, CIccTagXmlDateTime, CIccTagXmlColorantOrder, CIccTagXmlColorantTable, CIccTagXmlViewingConditions, CIccTagXmlSpectralDataInfo, CIccTagXmlSpectralViewingConditions, CIccTagXmlProfileSeqDesc, CIccTagXmlResponseCurveSet16, CIccTagXmlCurve, CIccTagXmlParametricCurve, CIccTagXmlSegmentedCurve, CIccTagXmlLutAtoB, CIccTagXmlLutBtoA, CIccTagXmlLut8, CIccTagXmlLut16, CIccTagXmlMultiProcessElement, CIccTagXmlProfileSequenceId, CIccTagXmlDict, CIccTagXmlStruct, CIccTagXmlArray, CIccTagXmlGamutBoundaryDesc, CIccTagXmlEmbeddedHeightImage, CIccTagXmlEmbeddedNormalImage, and CIccTagXmlEmbeddedProfile.

143{return NULL;}

Referenced by icCurvesFromXml(), icCurvesToXml(), icProfDescToXml(), icXmlParseProfDesc(), CIccProfileXml::ParseTag(), CIccTagXmlStruct::ParseTag(), CIccMpeXmlTintArray::ParseXml(), CIccTagXmlArray::ParseXml(), CIccMpeXmlTintArray::ToXml(), CIccTagXmlStruct::ToXml(), CIccTagXmlArray::ToXml(), and CIccProfileXml::ToXmlWithBlanks().

+ Here is the caller graph for this function:

◆ GetMatrixType()

icSparseMatrixType CIccTagSparseMatrixArray::GetMatrixType ( ) const
inline
857{ return m_nMatrixType; }

References m_nMatrixType.

◆ GetNumMatrices()

icUInt32Number CIccTagSparseMatrixArray::GetNumMatrices ( ) const
inline

Returns the number of matrices in the array.

850{ return m_nSize; }

References m_nSize.

Referenced by GetNumValues().

+ Here is the caller graph for this function:

◆ GetNumValues()

virtual icUInt32Number CIccTagSparseMatrixArray::GetNumValues ( ) const
inlinevirtual

Implements CIccTagNumArray.

866{ return GetNumMatrices(); }
icUInt32Number GetNumMatrices() const
Returns the number of matrices in the array.
Definition IccTagBasic.h:850

References GetNumMatrices().

+ Here is the call graph for this function:

◆ GetSparseMatrix()

bool CIccTagSparseMatrixArray::GetSparseMatrix ( CIccSparseMatrix mtx,
int  nIndex,
bool  bInitFromData = true 
)

Name: CIccTagSparseMatrixArray::GetValues

Purpose: Gets values from the num array tag as floating point numbers

Args: nSize - number of data entries, bZeroNew - flag to zero newly formed values

5012{
5013 if (nIndex<0 || nIndex>(int)m_nSize) {
5014 mtx.Reset(NULL, 0, icSparseMatrixFloatNum, false);
5015 return false;
5016 }
5017
5018 icUInt32Number nBytesPerMatrix = GetBytesPerMatrix();
5019
5020 mtx.Reset(m_RawData+nIndex*GetBytesPerMatrix(), nBytesPerMatrix, icSparseMatrixFloatNum, bInitFromData);
5021
5022 return true;
5023}
void Reset(void *pMatrix, icUInt32Number nSize, icSparseMatrixType nType, bool bInitFromData=true)
Definition IccSparseMatrix.cpp:113

References GetBytesPerMatrix(), m_nSize, m_RawData, and CIccSparseMatrix::Reset().

+ Here is the call graph for this function:

◆ GetTagArrayType()

virtual icArraySignature CIccTag::GetTagArrayType ( ) const
inlinevirtualinherited

Reimplemented in CIccTagArray.

133{ return icSigUndefinedArray; }
@ icSigUndefinedArray
Definition icProfileHeader.h:617

References icSigUndefinedArray.

Referenced by icGetTagArrayHandlerOfType(), and CIccProfileXml::ParseTag().

+ Here is the caller graph for this function:

◆ GetTagStructType()

virtual icStructSignature CIccTag::GetTagStructType ( ) const
inlinevirtualinherited

Reimplemented in CIccTagStruct.

132{ return icSigUndefinedStruct; }
@ icSigUndefinedStruct
Definition icProfileHeader.h:606

References icSigUndefinedStruct.

Referenced by icGetTagStructHandlerOfType(), CIccArrayColorantInfo::Validate(), and CIccArrayNamedColor::Validate().

+ Here is the caller graph for this function:

◆ GetType()

virtual icTagTypeSignature CIccTagSparseMatrixArray::GetType ( ) const
inlinevirtual

Function: GetType()

Purpose: Get Tag Type. Each derived tag will implement it's own GetType() function.

Reimplemented from CIccTag.

@ icSigSparseMatrixArrayType
Definition icProfileHeader.h:560

References icSigSparseMatrixArrayType.

Referenced by Write().

+ Here is the caller graph for this function:

◆ GetValues()

bool CIccTagSparseMatrixArray::GetValues ( icFloatNumber DstVector,
icUInt32Number  nStart = 0,
icUInt32Number  nVectorSize = 1 
) const
virtual

Implements CIccTagNumArray.

5026{
5027 icUInt32Number nBytesPerMatrix = GetBytesPerMatrix();
5028 if (nVectorSize!=nBytesPerMatrix)
5029 return false;
5030 if (nStart % nBytesPerMatrix != 0)
5031 return false;
5032
5033 if (nStart / nBytesPerMatrix > m_nSize)
5034 return false;
5035
5036 memcpy(DstVector, m_RawData+nStart, nVectorSize);
5037 return true;
5038}

References GetBytesPerMatrix(), m_nSize, and m_RawData.

+ Here is the call graph for this function:

◆ Interpolate()

bool CIccTagSparseMatrixArray::Interpolate ( icFloatNumber DstVector,
icFloatNumber  pos,
icUInt32Number  nVectorSize = 1,
icFloatNumber zeroVals = NULL 
) const
virtual

Name: CIccTagSparseMatrixArray::Interpolate

Purpose: Gets values from the num array tag as floating point numbers

Args: nSize - number of data entries, bZeroNew - flag to zero newly formed values

Implements CIccTagNumArray.

5054{
5055 icUInt32Number nMatrix = m_nSize;
5056
5057 if (!nMatrix || nVectorSize != GetBytesPerMatrix())
5058 return false;
5059
5060 if (zeroVals)
5061 nMatrix ++;
5062 else if (nMatrix<=1)
5063 return false;
5064
5065 if (pos<0.0)
5066 pos=0.0;
5067 if (pos>1.0)
5068 pos=1.0;
5069
5070 icFloatNumber fpos = (icFloatNumber)(nMatrix-1) * pos;
5071 icUInt32Number iPos = (icUInt32Number)fpos;
5072 icFloatNumber x = fpos - iPos;
5073
5074 if (iPos == nMatrix-1) {
5075 iPos--;
5076 x = (icFloatNumber)1.0;
5077 }
5078
5079 icUInt8Number *lo, *hi;
5080
5081 if (zeroVals) {
5082 if (!iPos) {
5083 lo = (icUInt8Number*)zeroVals;
5084 hi = m_RawData;
5085 }
5086 else {
5087 lo = &m_RawData[(iPos-1)*nVectorSize];
5088 hi = &lo[nVectorSize];
5089 }
5090 }
5091 else {
5092 lo = &m_RawData[iPos*nVectorSize];
5093 hi = &lo[nVectorSize];
5094 }
5095
5096 CIccSparseMatrix mlo(lo, nVectorSize, icSparseMatrixFloatNum, true);
5097 CIccSparseMatrix mhi(hi, nVectorSize, icSparseMatrixFloatNum, true);
5098 CIccSparseMatrix dst((icUInt8Number*)DstVector, nVectorSize, icSparseMatrixFloatNum, false);
5099
5100 if (mlo.Rows()!=mhi.Rows() || mlo.Cols()!=mhi.Cols())
5101 return false;
5102
5103 if (!dst.Interp(1.0f-x, mlo, x, mhi))
5104 return false;
5105
5106 return true;
5107}

References CIccSparseMatrix::CIccSparseMatrix(), CIccSparseMatrix::Cols(), GetBytesPerMatrix(), CIccSparseMatrix::Interp(), m_nSize, m_RawData, and CIccSparseMatrix::Rows().

+ Here is the call graph for this function:

◆ IsArrayType()

virtual bool CIccTagSparseMatrixArray::IsArrayType ( )
inlinevirtual

Reimplemented from CIccTag.

839{ return m_nSize > 1; }

References m_nSize.

◆ IsMatrixArray()

virtual bool CIccTagSparseMatrixArray::IsMatrixArray ( ) const
inlinevirtual

Implements CIccTagNumArray.

874{ return true; }

◆ IsMBBType()

virtual bool CIccTag::IsMBBType ( )
inlinevirtualinherited

Reimplemented in CIccMBB.

136{ return false; } //If true then CIccTag can be cast as an CIccMBB

Referenced by CIccProfileXml::ParseTag().

+ Here is the caller graph for this function:

◆ IsNumArrayType()

virtual bool CIccTagSparseMatrixArray::IsNumArrayType ( ) const
inlinevirtual

Reimplemented from CIccTag.

863{ return true; }

◆ IsSupported()

virtual bool CIccTag::IsSupported ( )
inlinevirtualinherited

Function: IsSupported(size, pIO) - Check if tag fully supported for apply purposes. By Default inherited classes are supported. Unknown tag types are not supported.

Returns true if tag type is supported.

Reimplemented in CIccTagUnknown, CIccTagEmbeddedProfile, and CIccTagMultiProcessElement.

153{ return true; }

◆ NewCopy() [1/2]

virtual CIccTag * CIccTagSparseMatrixArray::NewCopy ( )
inlinevirtual
836{ return new CIccTagSparseMatrixArray(*this); }
Definition IccTagBasic.h:831

References CIccTagSparseMatrixArray().

+ Here is the call graph for this function:

◆ NewCopy() [2/2]

virtual CIccTag * CIccTag::NewCopy ( ) const
inlinevirtualinherited

Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.

Parameter(s): none

Returns a new CIccTag object that is a copy of this object.

Reimplemented in CIccTagUnknown, CIccTagText, CIccTagUtf8Text, CIccTagZipUtf8Text, CIccTagZipXml, CIccTagUtf16Text, CIccTagTextDescription, CIccTagSignature, CIccTagNamedColor2, CIccTagXYZ, CIccTagChromaticity, CIccTagCicp, CIccTagFixedNum< T, Tsig >, CIccTagNum< T, Tsig >, CIccTagFloatNum< T, Tsig >, CIccTagMeasurement, CIccTagMultiLocalizedUnicode, CIccTagData, CIccTagDateTime, CIccTagColorantOrder, CIccTagColorantTable, CIccTagViewingConditions, CIccTagProfileSeqDesc, CIccTagResponseCurveSet16, CIccTagSpectralDataInfo, CIccTagSpectralViewingConditions, CIccTagEmbeddedHeightImage, CIccTagEmbeddedNormalImage, CIccTagStruct, CIccTagArray, CIccTagDict, CIccTagEmbeddedProfile, CIccCurve, CIccTagCurve, CIccTagParametricCurve, CIccTagSegmentedCurve, CIccMBB, CIccTagLutAtoB, CIccTagLutBtoA, CIccTagLut8, CIccTagLut16, CIccTagGamutBoundaryDesc, CIccTagMultiProcessElement, CIccTagProfileSequenceId, CIccTagXmlText, CIccTagXmlUtf8Text, CIccTagXmlZipUtf8Text, CIccTagXmlZipXml, CIccTagXmlUtf16Text, CIccTagXmlTextDescription, and CIccTagXmlMultiLocalizedUnicode.

121{return new CIccTag;}
CIccTag()
Definition IccTagBasic.cpp:113

Referenced by CIccMpeTintArray::CIccMpeTintArray(), CIccProfileDescText::CIccProfileDescText(), CIccTagArray::CIccTagArray(), CIccTagStruct::CIccTagStruct(), CDevLinkWriter::begin(), icConvertEncodingProfile(), CIccMpeTintArray::operator=(), CIccProfileDescText::operator=(), CIccTagArray::operator=(), and CIccTagStruct::operator=().

+ Here is the caller graph for this function:

◆ operator=()

CIccTagSparseMatrixArray & CIccTagSparseMatrixArray::operator= ( const CIccTagSparseMatrixArray ITSMA)

Name: CIccTagSparseMatrixArray::operator=

Purpose: Copy Operator

Args: ITFN = The CIccTagSparseMatrixArray object to be copied

4465{
4466 if (&ITSMA == this)
4467 return *this;
4468
4469 m_nSize = ITSMA.m_nSize;
4471
4472 if (m_RawData)
4473 free(m_RawData);
4475 memcpy(m_RawData, ITSMA.m_RawData, m_nSize*GetBytesPerMatrix());
4476
4478
4479 return *this;
4480}

References GetBytesPerMatrix(), m_bNonZeroPadding, m_nChannelsPerMatrix, m_nSize, and m_RawData.

+ Here is the call graph for this function:

◆ Read() [1/2]

bool CIccTagSparseMatrixArray::Read ( icUInt32Number  size,
CIccIO pIO 
)
virtual

Name: CIccTagSparseMatrixArray::Read

Purpose: Read in the tag contents into a data block

Args: size - # of bytes in tag, pIO - IO object to read tag from

Return: true = successful, false = failure

Reimplemented from CIccTag.

4514{
4516 icUInt16Number nChannels;
4517 icUInt16Number nMatrixType;
4518 icUInt32Number nBytesPerMatrix;
4519 icUInt32Number nNumMatrices;
4520
4521 icUInt32Number nHdrSize = sizeof(icTagTypeSignature) +
4522 sizeof(icUInt32Number) +
4523 2*sizeof(icUInt16Number) +
4524 sizeof(icUInt32Number);
4525
4526 if (nHdrSize +sizeof(icUInt16Number) > size)
4527 return false;
4528
4529 if (!pIO) {
4530 return false;
4531 }
4532
4533 if (!pIO->Read32(&sig) ||
4534 !pIO->Read32(&m_nReserved) ||
4535 !pIO->Read16(&nChannels) ||
4536 !pIO->Read16(&nMatrixType) ||
4537 !pIO->Read32(&nNumMatrices))
4538 return false;
4539
4540 m_nMatrixType = (icSparseMatrixType)nMatrixType;
4541
4542 icUInt32Number nSizeLeft = size - nHdrSize;
4543
4544 Reset(nNumMatrices, nChannels);
4545 nBytesPerMatrix = GetBytesPerMatrix();
4546
4547 if (m_nSize) {
4548 icUInt32Number pos;
4549 icUInt16Number nRows;
4550
4551 int i, j;
4552 icUInt32Number n, nAligned;
4553 CIccSparseMatrix mtx;
4554
4555 m_bNonZeroPadding = false;
4556
4557 pos = nHdrSize;
4558 for (i=0; i<(int)m_nSize; i++) {
4559 icUInt8Number *pMatrix = m_RawData + i*nBytesPerMatrix;
4560
4561 n=2*sizeof(icUInt16Number);
4562
4563 if (nSizeLeft<n)
4564 return false;
4565 if (pIO->Read16(pMatrix, 2)!=2) {
4566 return false;
4567 }
4568
4569 nSizeLeft -= n;
4570 pos += n;
4571
4572 nRows = *((icUInt16Number*)pMatrix);
4573
4574 n=(nRows+1)*sizeof(icUInt16Number);
4575
4576 if (nSizeLeft<n)
4577 return false;
4578 if (pIO->Read16(pMatrix+2*sizeof(icUInt16Number), nRows+1)!=nRows+1) {
4579 return false;
4580 }
4581
4582 nSizeLeft -= n;
4583 pos += n;
4584 mtx.Reset(pMatrix, nBytesPerMatrix, icSparseMatrixFloatNum, true);
4585
4586 if (mtx.GetNumEntries()>mtx.MaxEntries(nChannels*sizeof(icFloatNumber), mtx.Rows(), sizeof(icFloatNumber)))
4587 return false;
4588
4589 n=mtx.GetNumEntries()*sizeof(icUInt16Number);
4590
4591 if (nSizeLeft<n)
4592 return false;
4593
4594 if (pIO->Read16(mtx.GetColumnsForRow(0), mtx.GetNumEntries())!=mtx.GetNumEntries())
4595 return false;
4596
4597 nSizeLeft -= n;
4598 pos += n;
4599
4600 nAligned = ((pos+3)/4)*4;
4601 if (nAligned != pos) {
4602 n = nAligned - pos;
4603 if (nSizeLeft < n)
4604 return false;
4605
4606 char zbuf[3] = { 0 };
4607 if (pIO->Read8(&zbuf[0], n)!=n)
4608 return false;
4609 for (j=0; j<(int)n; j++) {
4610 if (zbuf[j])
4611 m_bNonZeroPadding = true;
4612 }
4613
4614 nSizeLeft -= n;
4615 pos += n;
4616 }
4617
4618 switch(m_nMatrixType) {
4620 n=mtx.GetNumEntries()*sizeof(icUInt8Number);
4621 if (nSizeLeft<n)
4622 return false;
4623
4624 if (pIO->ReadUInt8Float(mtx.GetData()->getPtr(0), mtx.GetNumEntries())!=mtx.GetNumEntries())
4625 return false;
4626
4627 break;
4628
4630 n=mtx.GetNumEntries()*sizeof(icUInt16Number);
4631 if (nSizeLeft<n)
4632 return false;
4633
4634 if (pIO->ReadUInt16Float(mtx.GetData()->getPtr(0), mtx.GetNumEntries())!=mtx.GetNumEntries())
4635 return false;
4636
4637 break;
4638
4640 n=mtx.GetNumEntries()*sizeof(icFloat16Number);
4641 if (nSizeLeft<n)
4642 return false;
4643
4644 if (pIO->ReadFloat16Float(mtx.GetData()->getPtr(0), mtx.GetNumEntries())!=mtx.GetNumEntries())
4645 return false;
4646
4647 break;
4648
4650 n=mtx.GetNumEntries()*sizeof(icFloat32Number);
4651 if (nSizeLeft<n)
4652 return false;
4653
4654 if (pIO->ReadFloat32Float(mtx.GetData()->getPtr(0), mtx.GetNumEntries())!=mtx.GetNumEntries())
4655 return false;
4656
4657 break;
4658
4659 default:
4660 return false;
4661 }
4662 nSizeLeft -= n;
4663 pos += n;
4664
4665 nAligned = ((pos+3)/4)*4;
4666 if (nAligned != pos) {
4667 n = nAligned - pos;
4668 if (nSizeLeft < n)
4669 return false;
4670
4671 icUInt8Number zbuf[3] = { 0 };
4672 if (pIO->Read8(&zbuf[0], n)!=n)
4673 return false;
4674 for (j=0; j<(int)n; j++) {
4675 if (zbuf[j])
4676 m_bNonZeroPadding = true;
4677 }
4678
4679 nSizeLeft -= n;
4680 pos += n;
4681 }
4682 }
4683 if (nSizeLeft) {
4684 icUInt8Number b;
4685 for (i=0; i<(int)nSizeLeft; i++) {
4686 if (!pIO->Read8(&b))
4687 return false;
4688 if (b)
4689 m_bNonZeroPadding = true;
4690 }
4691 }
4692 }
4693
4694 return true;
4695}
float icFloat32Number
Definition icProfileHeader.h:313
icSparseMatrixType
Definition icProfileHeader.h:1344
@ icSparseMatrixUInt16
Definition icProfileHeader.h:1346
@ icSparseMatrixFloat16
Definition icProfileHeader.h:1347
@ icSparseMatrixUInt8
Definition icProfileHeader.h:1345
icUInt16Number icFloat16Number
Definition icProfileHeader.h:310
icTagTypeSignature
Definition icProfileHeader.h:526
icInt32Number ReadFloat16Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:269
icInt32Number ReadFloat32Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:302
virtual icInt32Number Read8(void *pBuf8, icInt32Number nNum=1)
Definition IccIO.h:104
icInt32Number Read16(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:114
icInt32Number ReadUInt8Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:203
icInt32Number ReadUInt16Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:236
icInt32Number Read32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:143
virtual icUInt8Number * getPtr(int index=0) const =0
icUInt16Number * GetColumnsForRow(icUInt16Number nRow=0) const
Definition IccSparseMatrix.h:182
static icUInt32Number MaxEntries(icUInt32Number nMemSize, icUInt16Number nRows, icUInt8Number nTypeSize)
Definition IccSparseMatrix.cpp:500
IIccSparseMatrixEntry * GetData() const
Definition IccSparseMatrix.h:184
icUInt16Number Rows() const
Definition IccSparseMatrix.h:163
icUInt16Number GetNumEntries() const
Definition IccSparseMatrix.h:178
icUInt32Number m_nReserved
Definition IccTagBasic.h:235
bool Reset(icUInt32Number nNumMatrices, icUInt16Number nChannelsPerMatrix)
Definition IccTagBasic.cpp:4978

References GetBytesPerMatrix(), CIccSparseMatrix::GetColumnsForRow(), CIccSparseMatrix::GetData(), CIccSparseMatrix::GetNumEntries(), IIccSparseMatrixEntry::getPtr(), icSparseMatrixFloat16, icSparseMatrixFloat32, icSparseMatrixUInt16, icSparseMatrixUInt8, m_bNonZeroPadding, m_nMatrixType, CIccTag::m_nReserved, m_nSize, m_RawData, CIccSparseMatrix::MaxEntries(), CIccIO::Read16(), CIccIO::Read32(), CIccIO::Read8(), CIccIO::ReadFloat16Float(), CIccIO::ReadFloat32Float(), CIccIO::ReadUInt16Float(), CIccIO::ReadUInt8Float(), Reset(), CIccSparseMatrix::Reset(), and CIccSparseMatrix::Rows().

+ Here is the call graph for this function:

◆ Read() [2/2]

virtual bool CIccTag::Read ( icUInt32Number  size,
CIccIO pIO,
CIccProfile pProfile 
)
inlinevirtualinherited

Function: Read(size, pIO) - Read tag from file. Each derived tag will implement it's own Read() function.

Parameter(s): size - number of bytes in tag including the type signature. pIO - IO object used to read in tag. The IO object should already be initialized to point to the begining of the tag.

Returns true if Read is successful.

Reimplemented in CIccTagEmbeddedProfile.

197{ return Read(size, pIO); }
virtual bool Read(icUInt32Number size, CIccIO *pIO)
Definition IccTagBasic.h:167

References CIccTag::Read().

+ Here is the call graph for this function:

◆ ReadAll()

virtual bool CIccTag::ReadAll ( )
inlinevirtualinherited

Function: ReadAll() - Read All sub data for tag from file. Called by CIccProfile::ReadAll() to read all sub data for tag

Returns true if ReadAll is successful.

Reimplemented in CIccTagEmbeddedProfile.

175{ return true; }

◆ Reset()

bool CIccTagSparseMatrixArray::Reset ( icUInt32Number  nNumMatrices,
icUInt16Number  nChannelsPerMatrix 
)

Name: CIccTagSparseMatrixArray::Reset

Purpose: Sets the size of the data array erasing all previous values

Args: nNumMatrices - number of matrices numChannelsPerMatrix - Equivalent number of output channels that determines the fixed block size for each matrix

4979{
4980 if (nNumMatrices==m_nSize && nChannelsPerMatrix==m_nChannelsPerMatrix)
4981 return true;
4982
4983 m_nSize = nNumMatrices;
4984 m_nChannelsPerMatrix = nChannelsPerMatrix;
4985
4987
4989
4990 if (!m_RawData) {
4991 m_nSize = 0;
4992 return false;
4993 }
4994
4995 memset(m_RawData, 0, nSize);
4996 return true;
4997}
ICCPROFLIB_API void * icRealloc(void *ptr, size_t size)
Definition IccUtil.cpp:111

References GetBytesPerMatrix(), icRealloc(), m_nChannelsPerMatrix, m_nSize, and m_RawData.

Referenced by CIccTagXmlSparseMatrixArray::ParseXml(), and Read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetMatrixType()

void CIccTagSparseMatrixArray::SetMatrixType ( icSparseMatrixType  nType)
inline
858{ m_nMatrixType = nType; }

References m_nMatrixType.

◆ Validate()

icValidateStatus CIccTagSparseMatrixArray::Validate ( std::string  sigPath,
std::string &  sReport,
const CIccProfile pProfile = NULL 
) const
virtual

Name: CIccTagSparseMatrixArray::Validate

Purpose: Validates tag data

Args: sigPath - signature path of tag in profile to validate sReport - string to put validation report results profile - pointer to profile that contains the tag

Reimplemented from CIccTag.

4841{
4843 CIccInfo Info;
4844 std::string sSigPathName = Info.GetSigPathName(sigPath);
4845
4846 switch(m_nMatrixType) {
4851 break;
4852 default:
4853 sReport += icMsgValidateCriticalError;
4854 sReport += sSigPathName;
4855 sReport += " - Invalid Sparse Matrix Type.\n";
4857
4858 }
4859
4860 bool bCheckPCS=false;
4861
4862 icSignature sig1 = icGetFirstSigPathSig(sigPath);
4863 icSignature sig2 = icGetSecondSigPathSig(sigPath);
4864
4865 if (sig1==icSigSpectralWhitePointTag) {
4866 bCheckPCS = true;
4867 }
4868
4869 if (bCheckPCS && pProfile) {
4870 if (!icIsSameColorSpaceType(pProfile->m_Header.spectralPCS, icSigSparseMatrixReflectanceData)) {
4871 sReport += icMsgValidateCriticalError;
4872 sReport += sSigPathName;
4873 sReport += " - SparseMatrix data incompatible with spectral PCS.\n";
4875 }
4876 else if (icGetSpaceSamples((icColorSpaceSignature)pProfile->m_Header.spectralPCS)!=m_nChannelsPerMatrix) {
4877 sReport += icMsgValidateCriticalError;
4878 sReport += sSigPathName;
4879 sReport += " - SparseMatrix Output channels doesn't match spectral PCS channels.\n";
4881 }
4882 }
4883
4884 if (m_bNonZeroPadding) {
4885 sReport += icMsgValidateNonCompliant;
4886 sReport += sSigPathName;
4887 sReport += " - Non zero padding in matrices used.\n";
4889 }
4890
4891 if (!m_nSize) {
4892 sReport += icMsgValidateWarning;
4893 sReport += sSigPathName;
4894 sReport += " - No Matrices Defined.\n";
4896 return rv;
4897 }
4898
4899 if (!m_RawData) {
4900 sReport += icMsgValidateCriticalError;
4901 sReport += sSigPathName;
4902 sReport += " - Data dont defined for matrices\n";
4904 return rv;
4905 }
4906
4907 icUInt16Number nRows, nCols;
4908 CIccSparseMatrix mtx;
4909 int i;
4910
4911 icUInt16Number nBytesPerMatrix = m_nChannelsPerMatrix * sizeof(icFloatNumber);
4912
4913 mtx.Reset(m_RawData, nBytesPerMatrix, icSparseMatrixFloatNum, true);
4914 nRows = mtx.Rows();
4915 nCols = mtx.Cols();
4916 icUInt32Number nMaxElements = CIccSparseMatrix::MaxEntries(nBytesPerMatrix, nRows, sizeof(icFloatNumber));
4917 char buf[128];
4918 icUInt8Number *temp = new icUInt8Number[nBytesPerMatrix];
4919
4920 for (i=0; i<(int)m_nSize; i++) {
4921 mtx.Reset(m_RawData+i*nBytesPerMatrix, nBytesPerMatrix, icSparseMatrixFloatNum, true);
4922 if (mtx.Rows() != nRows || mtx.Cols() != nCols) {
4923 sReport += icMsgValidateCriticalError;
4924 sReport += sSigPathName;
4925 sprintf(buf, " - Matrix[%d] doesn't have matching rows and columns.\n", i);
4926 sReport += buf;
4928 }
4929
4930 if (mtx.GetNumEntries()>nMaxElements) {
4931 sReport += icMsgValidateCriticalError;
4932 sReport += sSigPathName;
4933 sprintf(buf, " - Matrix[%d] entries exceeds number supported by Output channels.\n", i);
4934 sReport += buf;
4936 }
4937
4938 if (!mtx.IsValid()) {
4939 sReport += icMsgValidateCriticalError;
4940 sReport += sSigPathName;
4941 sprintf(buf, " - Matrix[%d] has an invalid matrix structure.\n", i);
4942 sReport += buf;
4944 }
4945
4946 if (i<(int)(m_nSize-1)) {
4947 CIccSparseMatrix umtx(temp, nBytesPerMatrix, icSparseMatrixFloatNum, false);
4948 CIccSparseMatrix mtx2(m_RawData+(i+1)*nBytesPerMatrix, nBytesPerMatrix, icSparseMatrixFloatNum, true);
4949
4950 umtx.Init(nRows, nCols);
4951 if (!umtx.Union(mtx, mtx2)) {
4952 sReport += icMsgValidateCriticalError;
4953 sReport += sSigPathName;
4954 sprintf(buf, " - Interpolation from Matrix[%d] exceeds number of supported Output channels.\n", i);
4955 sReport += buf;
4957 }
4958 }
4959 }
4960 delete [] temp;
4961
4962 return rv;
4963}
#define icIsSameColorSpaceType(sig, type)
Definition icProfileHeader.h:933
icColorSpaceSignature
Definition icProfileHeader.h:843
icUInt32Number icSignature
Definition icProfileHeader.h:271
@ icSigSparseMatrixReflectanceData
Definition icProfileHeader.h:921
@ icSigSpectralWhitePointTag
Definition icProfileHeader.h:469
icValidateStatus
Definition IccDefs.h:119
@ icValidateOK
Definition IccDefs.h:120
@ icValidateWarning
Definition IccDefs.h:121
@ icValidateCriticalError
Definition IccDefs.h:123
@ icValidateNonCompliant
Definition IccDefs.h:122
ICCPROFLIB_API icSignature icGetFirstSigPathSig(std::string sigPath)
Definition IccUtil.cpp:1201
ICCPROFLIB_API icSignature icGetSecondSigPathSig(std::string sigPath)
Definition IccUtil.cpp:1238
ICCPROFLIB_API icUInt32Number icGetSpaceSamples(icColorSpaceSignature sig)
Definition IccUtil.cpp:1303
ICCPROFLIB_API const char * icMsgValidateWarning
Definition IccUtil.cpp:90
ICCPROFLIB_API const char * icMsgValidateCriticalError
Definition IccUtil.cpp:92
ICCPROFLIB_API icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Definition IccUtil.cpp:244
ICCPROFLIB_API const char * icMsgValidateNonCompliant
Definition IccUtil.cpp:91
Definition IccUtil.h:303
std::string GetSigPathName(std::string sigPath)
Definition IccUtil.cpp:1614
icUInt16Number Cols() const
Definition IccSparseMatrix.h:164
bool IsValid()
Definition IccSparseMatrix.cpp:480

References CIccSparseMatrix::CIccSparseMatrix(), CIccSparseMatrix::Cols(), CIccSparseMatrix::GetNumEntries(), CIccInfo::GetSigPathName(), icGetFirstSigPathSig(), icGetSecondSigPathSig(), icGetSpaceSamples(), icMaxStatus(), icMsgValidateCriticalError, icMsgValidateNonCompliant, icMsgValidateWarning, icSigSparseMatrixReflectanceData, icSigSpectralWhitePointTag, icSparseMatrixFloat16, icSparseMatrixFloat32, icSparseMatrixUInt16, icSparseMatrixUInt8, icValidateCriticalError, icValidateNonCompliant, icValidateOK, icValidateWarning, CIccSparseMatrix::Init(), CIccSparseMatrix::IsValid(), m_bNonZeroPadding, m_nChannelsPerMatrix, m_nMatrixType, m_nSize, m_RawData, CIccSparseMatrix::MaxEntries(), CIccSparseMatrix::Reset(), CIccSparseMatrix::Rows(), icHeader::spectralPCS, and CIccSparseMatrix::Union().

+ Here is the call graph for this function:

◆ ValuePos()

bool CIccTagSparseMatrixArray::ValuePos ( icFloatNumber DstPos,
icFloatNumber  val,
bool &  bNoZero 
) const
virtual

Name: CIccTagSparseMatrixArray::ValuePos

Purpose: Gets position of a value int the num array tag

Args: DstPos - position of val in array val - value to look for in array. bNoZero - flag indicating whether first entry is zero

Implements CIccTagNumArray.

5123{
5124 //ValuePos not supported for Sparse Matrices
5125 return false;
5126}

◆ Write()

bool CIccTagSparseMatrixArray::Write ( CIccIO pIO)
virtual

Name: CIccTagSparseMatrixArray::Write

Purpose: Write the tag to a file

Args: pIO - The IO object to write tag to.

Return: true = succesful, false = failure

Reimplemented from CIccTag.

4712{
4715
4716 if (!pIO)
4717 return false;
4718
4719 if (!pIO->Write32(&sig) ||
4720 !pIO->Write32(&m_nReserved) ||
4721 !pIO->Write16(&m_nChannelsPerMatrix) ||
4722 !pIO->Write16(&nTemp) ||
4723 !pIO->Write32(&m_nSize))
4724 return false;
4725
4726 icUInt32Number nBytesPerMatrix = m_nChannelsPerMatrix * sizeof(icFloatNumber);
4727 CIccSparseMatrix mtx;
4728 icUInt16Number nRows;
4729 int i, n;
4730
4731 for (i=0; i<(int)m_nSize; i++) {
4732 icUInt8Number *pMatrix = m_RawData + i*nBytesPerMatrix;
4733 mtx.Reset(pMatrix, nBytesPerMatrix, icSparseMatrixFloatNum, true);
4734 nRows = mtx.Rows();
4735
4736 n=(nRows+3)*sizeof(icUInt16Number);
4737
4738 if (pIO->Write16(pMatrix, nRows+3)!=nRows+3 ||
4739 pIO->Write16(mtx.GetColumnsForRow(0), mtx.GetNumEntries())!=mtx.GetNumEntries()) {
4740 return false;
4741 }
4742
4743 if (!pIO->Align32())
4744 return false;
4745
4746 switch(m_nMatrixType) {
4748 if (pIO->WriteUInt8Float(mtx.GetData()->getPtr(), mtx.GetNumEntries())!=mtx.GetNumEntries()) {
4749 return false;
4750 }
4751 break;
4753 if (pIO->WriteUInt16Float(mtx.GetData()->getPtr(), mtx.GetNumEntries())!=mtx.GetNumEntries()) {
4754 return false;
4755 }
4756 break;
4758 if (pIO->WriteFloat16Float(mtx.GetData()->getPtr(), mtx.GetNumEntries())!=mtx.GetNumEntries()) {
4759 return false;
4760 }
4761 break;
4763 if (pIO->WriteFloat32Float(mtx.GetData()->getPtr(), mtx.GetNumEntries())!=mtx.GetNumEntries()) {
4764 return false;
4765 }
4766 break;
4767 default:
4768 return false;
4769 }
4770
4771 if (!pIO->Align32())
4772 return false;
4773
4774 }
4775
4776 return true;
4777}
icInt32Number Write16(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:122
icInt32Number WriteFloat16Float(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:285
bool Align32()
Write operation to make sure that filelength is evenly divisible by 4.
Definition IccIO.cpp:341
icInt32Number Write32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:152
icInt32Number WriteFloat32Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:321
icInt32Number WriteUInt8Float(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:219
icInt32Number WriteUInt16Float(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:252
virtual icTagTypeSignature GetType() const
Definition IccTagBasic.h:841

References CIccIO::Align32(), CIccSparseMatrix::GetColumnsForRow(), CIccSparseMatrix::GetData(), CIccSparseMatrix::GetNumEntries(), IIccSparseMatrixEntry::getPtr(), GetType(), icSparseMatrixFloat16, icSparseMatrixFloat32, icSparseMatrixUInt16, icSparseMatrixUInt8, m_nChannelsPerMatrix, m_nMatrixType, CIccTag::m_nReserved, m_nSize, m_RawData, CIccSparseMatrix::Reset(), CIccSparseMatrix::Rows(), CIccIO::Write16(), CIccIO::Write32(), CIccIO::WriteFloat16Float(), CIccIO::WriteFloat32Float(), CIccIO::WriteUInt16Float(), and CIccIO::WriteUInt8Float().

+ Here is the call graph for this function:

Field Documentation

◆ m_bNonZeroPadding

bool CIccTagSparseMatrixArray::m_bNonZeroPadding
protected

◆ m_nChannelsPerMatrix

◆ m_nMatrixType

◆ m_nReserved

icUInt32Number CIccTag::m_nReserved
inherited

Referenced by CIccTag::CIccTag(), CIccTagMultiProcessElement::CIccTagMultiProcessElement(), CIccTagMultiProcessElement::CIccTagMultiProcessElement(), CIccTagMultiProcessElement::operator=(), CIccProfileXml::ParseTag(), CIccTagXmlStruct::ParseTag(), CIccMpeXmlTintArray::ParseXml(), CIccTagXmlArray::ParseXml(), CIccTagText::Read(), CIccTagUtf8Text::Read(), CIccTagZipUtf8Text::Read(), CIccTagUtf16Text::Read(), CIccTagTextDescription::Read(), CIccTagSignature::Read(), CIccTagNamedColor2::Read(), CIccTagXYZ::Read(), CIccTagChromaticity::Read(), CIccTagCicp::Read(), Read(), CIccTagFixedNum< T, Tsig >::Read(), CIccTagNum< T, Tsig >::Read(), CIccTagFloatNum< T, Tsig >::Read(), CIccTagMeasurement::Read(), CIccTagMultiLocalizedUnicode::Read(), CIccTagData::Read(), CIccTagDateTime::Read(), CIccTagColorantOrder::Read(), CIccTagColorantTable::Read(), CIccTagViewingConditions::Read(), CIccTagProfileSeqDesc::Read(), CIccTagResponseCurveSet16::Read(), CIccTagSpectralDataInfo::Read(), CIccTagSpectralViewingConditions::Read(), CIccTagEmbeddedHeightImage::Read(), CIccTagEmbeddedNormalImage::Read(), CIccTagStruct::Read(), CIccTagArray::Read(), CIccTagDict::Read(), CIccTagCurve::Read(), CIccTagParametricCurve::Read(), CIccTagLutAtoB::Read(), CIccTagLut8::Read(), CIccTagLut16::Read(), CIccTagGamutBoundaryDesc::Read(), CIccTagMultiProcessElement::Read(), CIccTagProfileSequenceId::Read(), CIccTagEmbeddedProfile::Read(), CIccTag::Validate(), CIccTagText::Write(), CIccTagUtf8Text::Write(), CIccTagZipUtf8Text::Write(), CIccTagUtf16Text::Write(), CIccTagTextDescription::Write(), CIccTagSignature::Write(), CIccTagNamedColor2::Write(), CIccTagXYZ::Write(), CIccTagChromaticity::Write(), CIccTagCicp::Write(), Write(), CIccTagFixedNum< T, Tsig >::Write(), CIccTagNum< T, Tsig >::Write(), CIccTagFloatNum< T, Tsig >::Write(), CIccTagMeasurement::Write(), CIccTagMultiLocalizedUnicode::Write(), CIccTagData::Write(), CIccTagDateTime::Write(), CIccTagColorantOrder::Write(), CIccTagColorantTable::Write(), CIccTagViewingConditions::Write(), CIccTagProfileSeqDesc::Write(), CIccTagResponseCurveSet16::Write(), CIccTagSpectralDataInfo::Write(), CIccTagSpectralViewingConditions::Write(), CIccTagEmbeddedHeightImage::Write(), CIccTagEmbeddedNormalImage::Write(), CIccTagStruct::Write(), CIccTagArray::Write(), CIccTagDict::Write(), CIccTagEmbeddedProfile::Write(), CIccTagCurve::Write(), CIccTagParametricCurve::Write(), CIccTagLutAtoB::Write(), CIccTagLut8::Write(), CIccTagLut16::Write(), CIccTagGamutBoundaryDesc::Write(), CIccTagMultiProcessElement::Write(), and CIccTagProfileSequenceId::Write().

◆ m_nSize

◆ m_RawData


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