IccMAX 2.1.27
Color Profile Tools
Loading...
Searching...
No Matches
CIccTagFloatNum< T, Tsig > Class Template Reference

#include <IccTagBasic.h>

+ Inheritance diagram for CIccTagFloatNum< T, Tsig >:
+ Collaboration diagram for CIccTagFloatNum< T, Tsig >:

Public Member Functions

 CIccTagFloatNum (const CIccTagFloatNum< T, Tsig > &ITNum)
 
 CIccTagFloatNum (int nSize=1)
 
virtual ~CIccTagFloatNum ()
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 
virtual void DetachIO ()
 
virtual const icCharGetClassName () const
 
virtual IIccExtensionTagGetExtension ()
 
virtual icUInt32Number GetNumValues () const
 
icUInt32Number GetSize () const
 Returns the size of the data array.
 
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 () const
 
CIccTagFloatNumoperator= (const CIccTagFloatNum< T, Tsig > &NumTag)
 
T & operator[] (icUInt32Number index)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO, CIccProfile *pProfile)
 
virtual bool ReadAll ()
 
bool SetSize (icUInt32Number nSize, bool bZeroNew=true)
 
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

icUInt32Number m_nSize
 
T * m_Num
 

Detailed Description

template<class T, icTagTypeSignature Tsig>
class CIccTagFloatNum< T, Tsig >

Class: CIccTagFloatNum

Purpose: A template class for arrays of floating point numbers

Derived Tags: CIccTagFloat32 and CIccTagFloat64

Constructor & Destructor Documentation

◆ CIccTagFloatNum() [1/2]

template<class T , icTagTypeSignature Tsig>
CIccTagFloatNum< T, Tsig >::CIccTagFloatNum ( int  nSize = 1)

Name: CIccTagFloatNum::CIccTagFloatNum

Purpose: Constructor

Args: nSize = number of data entries

6207{
6208 m_nSize = nSize;
6209 if (m_nSize <1)
6210 m_nSize = 1;
6211 m_Num = (T*)calloc(nSize, sizeof(T));
6212}
T * m_Num
Definition IccTagBasic.h:1096
icUInt32Number m_nSize
Definition IccTagBasic.h:1097

References CIccTagFloatNum< T, Tsig >::m_nSize, and CIccTagFloatNum< T, Tsig >::m_Num.

◆ CIccTagFloatNum() [2/2]

template<class T , icTagTypeSignature Tsig>
CIccTagFloatNum< T, Tsig >::CIccTagFloatNum ( const CIccTagFloatNum< T, Tsig > &  ITNum)

Name: CIccTagFloatNum::CIccTagFloatNum

Purpose: Copy Constructor

Args: ITNum = The CIccTagNum object to be copied

6227{
6228 m_nSize = ITNum.m_nSize;
6229
6230 m_Num = (T*)calloc(m_nSize, sizeof(T));
6231 memcpy(m_Num, ITNum.m_Num, m_nSize * sizeof(T));
6232}

References CIccTagFloatNum< T, Tsig >::m_nSize, and CIccTagFloatNum< T, Tsig >::m_Num.

◆ ~CIccTagFloatNum()

template<class T , icTagTypeSignature Tsig>
CIccTagFloatNum< T, Tsig >::~CIccTagFloatNum ( )
virtual

Name: CIccTagFloatNum::~CIccTagFloatNum

Purpose: Destructor

6271{
6272 if (m_Num)
6273 free(m_Num);
6274}

References CIccTagFloatNum< T, Tsig >::m_Num.

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()

template<class T , icTagTypeSignature Tsig>
void CIccTagFloatNum< T, Tsig >::Describe ( std::string &  sDescription,
int  nVerboseness 
)
virtual

Name: CIccTagFloatNum::Describe

Purpose: Dump data associated with the tag to a string

Args: sDescription - string to concatenate tag dump to

Reimplemented from CIccTag.

6432{
6433 icChar buf[128] = {0};
6434
6435 if (m_nSize == 1 ) {
6436 switch (sizeof(T)) {
6437 case 4:
6438 sprintf(buf, "Value = %.8f\n", m_Num[0]);
6439 break;
6440 case 8:
6441 sprintf(buf, "Value = %.16f\n", m_Num[0]);
6442 break;
6443 default:
6444 sprintf(buf, "Value = %.f\n", m_Num[0]);
6445 break;
6446 }
6447 sDescription += buf;
6448 }
6449 else {
6450 icUInt32Number i, n;
6451 sDescription.reserve(sDescription.size() + m_nSize*79);
6452
6453 sprintf(buf, "Begin_Value_Array[%d]\n", m_nSize);
6454 sDescription += buf;
6455
6456 if (sizeof(T)!=8)
6457 n=8;
6458 else
6459 n=4;
6460
6461 for (i=0; i<m_nSize; i++) {
6462 if (i&& !(i%n))
6463 sDescription += "\n";
6464
6465 switch (sizeof(T)) {
6466 case 4:
6467 sprintf(buf, " %.8f", m_Num[i]);
6468 break;
6469 case 8:
6470 sprintf(buf, " %.16f", m_Num[i]);
6471 break;
6472 default:
6473 sprintf(buf, " %f", m_Num[i]);
6474 }
6475 sDescription += buf;
6476 }
6477 if ((i%n)!=1)
6478 sDescription += "\n";
6479 sDescription += "End_Value_Array\n";
6480 }
6481}
unsigned long icUInt32Number
Definition icProfileHeader.h:262
char icChar
Definition IccDefs.h:110

References CIccTagFloatNum< T, Tsig >::m_nSize, and CIccTagFloatNum< T, Tsig >::m_Num.

◆ 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{}

◆ GetClassName()

template<class T , icTagTypeSignature Tsig>
const icChar * CIccTagFloatNum< T, Tsig >::GetClassName ( ) const
virtual

Name: CIccTagFloatNum::GetClassName

Purpose: Returns the tag type class name

Reimplemented from CIccTag.

Reimplemented in CIccTagXmlFloatNum< T, A, Tsig >.

6286{
6287 if (Tsig==icSigFloat16ArrayType)
6288 return "CIccFlaot16";
6289 if (Tsig==icSigFloat32ArrayType)
6290 return "CIccFloat32";
6291 else if (Tsig==icSigFloat64ArrayType)
6292 return "CIccFloat64";
6293 else
6294 return "CIccTagFloatNum<>";
6295}
@ icSigFloat16ArrayType
Definition icProfileHeader.h:540
@ icSigFloat64ArrayType
Definition icProfileHeader.h:542
@ icSigFloat32ArrayType
Definition icProfileHeader.h:541

References icSigFloat16ArrayType, icSigFloat32ArrayType, and icSigFloat64ArrayType.

◆ 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:

◆ GetNumValues()

template<class T , icTagTypeSignature Tsig>
virtual icUInt32Number CIccTagFloatNum< T, Tsig >::GetNumValues ( ) const
inlinevirtual

Implements CIccTagNumArray.

1085{ return GetSize(); }
icUInt32Number GetSize() const
Returns the size of the data array.
Definition IccTagBasic.h:1079

References CIccTagFloatNum< T, Tsig >::GetSize().

Referenced by CIccDefaultEncProfileConverter::ConvertFromParams().

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

◆ GetSize()

template<class T , icTagTypeSignature Tsig>
icUInt32Number CIccTagFloatNum< T, Tsig >::GetSize ( ) const
inline

Returns the size of the data array.

1079{ return m_nSize; }

References CIccTagFloatNum< T, Tsig >::m_nSize.

Referenced by CIccDefaultEncProfileConverter::ConvertFromParams(), CIccTagFloatNum< T, Tsig >::GetNumValues(), and icGetParamFloatNum().

+ Here is the caller 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()

template<class T , icTagTypeSignature Tsig>
virtual icTagTypeSignature CIccTagFloatNum< T, Tsig >::GetType ( ) const
inlinevirtual

Function: GetType()

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

Reimplemented from CIccTag.

1068{ return Tsig; }

Referenced by CIccTagFloatNum< T, Tsig >::Write().

+ Here is the caller graph for this function:

◆ GetValues()

template<class T , icTagTypeSignature Tsig>
bool CIccTagFloatNum< T, Tsig >::GetValues ( icFloatNumber DstVector,
icUInt32Number  nStart = 0,
icUInt32Number  nVectorSize = 1 
) const
virtual

Name: CIccTagFloatNum::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

Implements CIccTagNumArray.

6529{
6530 if (nVectorSize >m_nSize)
6531 return false;
6532
6534
6535 for (i=0; i<m_nSize; i++) {
6536 DstVector[i] = (icFloatNumber)m_Num[i+nStart];
6537 }
6538 return true;
6539}
float icFloatNumber
Definition IccDefs.h:101

References CIccTagFloatNum< T, Tsig >::m_nSize, and CIccTagFloatNum< T, Tsig >::m_Num.

Referenced by CIccDefaultEncProfileConverter::ConvertFromParams().

+ Here is the caller graph for this function:

◆ Interpolate()

template<class T , icTagTypeSignature Tsig>
bool CIccTagFloatNum< T, Tsig >::Interpolate ( icFloatNumber DstVector,
icFloatNumber  pos,
icUInt32Number  nVectorSize = 1,
icFloatNumber zeroVals = NULL 
) const
virtual

Name: CIccTagFloatNum::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.

6591{
6592 icUInt32Number nVector = m_nSize / nVectorSize;
6593
6594 if (!nVector)
6595 return false;
6596
6597 if (zeroVals)
6598 nVector ++;
6599 else if (nVector<=1)
6600 return false;
6601
6602 if (pos<0.0)
6603 pos=0.0;
6604 if (pos>1.0)
6605 pos=1.0;
6606
6607 icFloatNumber fpos = (icFloatNumber)(nVector-1) * pos;
6608 icUInt32Number iPos = (icUInt32Number)fpos;
6609 icFloatNumber x = fpos - iPos;
6610 icFloatNumber invx = (1.0f - x);
6611
6612 if (iPos == nVector-1) {
6613 iPos--;
6614 x = (icFloatNumber)1.0f;
6615 invx = (icFloatNumber)0.0f;
6616 }
6617
6618 T *lo, *hi;
6619
6620 if (zeroVals) {
6621 if (!iPos) {
6622 lo = NULL;
6623 hi = m_Num;
6624 }
6625 else {
6626 lo = &m_Num[(iPos-1)*nVectorSize];
6627 hi = &lo[nVectorSize];
6628 }
6629 }
6630 else {
6631 lo = &m_Num[iPos*nVectorSize];
6632 hi = &lo[nVectorSize];
6633 }
6634
6636
6637 if (!lo) {
6638 if (zeroVals) {
6639 for (i = 0; i < nVectorSize; i++) {
6640 DstVector[i] = (icFloatNumber)(zeroVals[i] * invx + hi[i] * x);
6641 }
6642 }
6643 else {
6644 for (i = 0; i < nVectorSize; i++) {
6645 DstVector[i] = (icFloatNumber)(hi[i] * x);
6646 }
6647 }
6648 }
6649 else {
6650 for (i=0; i<nVectorSize; i++) {
6651 DstVector[i] = (icFloatNumber)(lo[i]*invx + hi[i]*x);
6652 }
6653 }
6654 return true;
6655}

References CIccTagFloatNum< T, Tsig >::m_nSize, and CIccTagFloatNum< T, Tsig >::m_Num.

◆ IsArrayType()

template<class T , icTagTypeSignature Tsig>
virtual bool CIccTagFloatNum< T, Tsig >::IsArrayType ( )
inlinevirtual

Reimplemented from CIccTag.

1066{ return m_nSize > 1; }

References CIccTagFloatNum< T, Tsig >::m_nSize.

◆ IsMatrixArray()

template<class T , icTagTypeSignature Tsig>
virtual bool CIccTagFloatNum< T, Tsig >::IsMatrixArray ( ) const
inlinevirtual

Implements CIccTagNumArray.

1091{ return false; }

◆ 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()

template<class T , icTagTypeSignature Tsig>
virtual bool CIccTagFloatNum< T, Tsig >::IsNumArrayType ( ) const
inlinevirtual

Reimplemented from CIccTag.

1082{ 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()

template<class T , icTagTypeSignature Tsig>
virtual CIccTag * CIccTagFloatNum< T, Tsig >::NewCopy ( ) const
inlinevirtual

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 from CIccTag.

1063{ return new CIccTagFloatNum<T, Tsig>(*this); }
Definition IccTagBasic.h:1058

◆ operator=()

template<class T , icTagTypeSignature Tsig>
CIccTagFloatNum< T, Tsig > & CIccTagFloatNum< T, Tsig >::operator= ( const CIccTagFloatNum< T, Tsig > &  ITNum)

Name: CIccTagFloatNum::operator=

Purpose: Copy Operator

Args: ITNum = The CIccTagNum object to be copied

6247{
6248 if (&ITNum == this)
6249 return *this;
6250
6251 m_nSize = ITNum.m_nSize;
6252
6253 m_Num = (T*)calloc(m_nSize, sizeof(T));
6254 memcpy(m_Num, ITNum.m_Num, m_nSize * sizeof(T));
6255
6256 return *this;
6257}

References CIccTagFloatNum< T, Tsig >::m_nSize, and CIccTagFloatNum< T, Tsig >::m_Num.

◆ operator[]()

template<class T , icTagTypeSignature Tsig>
T & CIccTagFloatNum< T, Tsig >::operator[] ( icUInt32Number  index)
inline
1076{return m_Num[index];}

References CIccTagFloatNum< T, Tsig >::m_Num.

Referenced by CIccDefaultEncProfileConverter::ConvertFromParams(), and icGetParamFloatNum().

+ Here is the caller graph for this function:

◆ Read() [1/2]

template<class T , icTagTypeSignature Tsig>
bool CIccTagFloatNum< T, Tsig >::Read ( icUInt32Number  size,
CIccIO pIO 
)
virtual

Name: CIccTagFloatNum::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.

6314{
6316
6317 if (Tsig==icSigFloat16ArrayType) {
6318 if (sizeof(icTagTypeSignature) +
6319 sizeof(icUInt32Number) +
6320 sizeof(icFloat16Number) > size)
6321 return false;
6322 }
6323 else {
6324 if (sizeof(icTagTypeSignature) +
6325 sizeof(icUInt32Number) +
6326 sizeof(T) > size)
6327 return false;
6328 }
6329
6330 if (!pIO) {
6331 return false;
6332 }
6333
6334 if (!pIO->Read32(&sig))
6335 return false;
6336
6337 if (!pIO->Read32(&m_nReserved))
6338 return false;
6339
6340 if (Tsig==icSigFloat16ArrayType) {
6341 icUInt32Number nSize=((size-2*sizeof(icUInt32Number)) / sizeof(icFloat16Number));
6342
6343 if (!SetSize(nSize))
6344 return false;
6345
6346 if (pIO->ReadFloat16Float(&m_Num[0], nSize) != (icInt32Number)nSize)
6347 return false;
6348 }
6349 else if (Tsig==icSigFloat32ArrayType) {
6350 icUInt32Number nSize=((size-2*sizeof(icUInt32Number)) / sizeof(icFloat32Number));
6351
6352 if (!SetSize(nSize))
6353 return false;
6354
6355 if (pIO->Read32(m_Num, nSize) != (icInt32Number)nSize )
6356 return false;
6357 }
6358 else if (Tsig==icSigFloat64ArrayType) {
6359 icUInt32Number nSize=((size-2*sizeof(icUInt32Number)) / sizeof(icFloat64Number));
6360
6361 if (!SetSize(nSize))
6362 return false;
6363
6364 if (pIO->Read64(m_Num, nSize) != (icInt32Number)nSize )
6365 return false;
6366 }
6367 else
6368 return false;
6369
6370 return true;
6371}
float icFloat32Number
Definition icProfileHeader.h:313
long icInt32Number
Definition icProfileHeader.h:291
icUInt16Number icFloat16Number
Definition icProfileHeader.h:310
double icFloat64Number
Definition icProfileHeader.h:314
icTagTypeSignature
Definition icProfileHeader.h:526
icInt32Number ReadFloat16Float(void *pBufFloat, icInt32Number nNum=1)
Definition IccIO.cpp:269
icInt32Number Read64(void *pBuf64, icInt32Number nNum=1)
Definition IccIO.cpp:173
icInt32Number Read32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:143
icUInt32Number m_nReserved
Definition IccTagBasic.h:235
bool SetSize(icUInt32Number nSize, bool bZeroNew=true)
Definition IccTagBasic.cpp:6496

References icSigFloat16ArrayType, icSigFloat32ArrayType, icSigFloat64ArrayType, CIccTag::m_nReserved, CIccTagFloatNum< T, Tsig >::m_Num, CIccIO::Read32(), CIccIO::Read64(), CIccIO::ReadFloat16Float(), and CIccTagFloatNum< T, Tsig >::SetSize().

+ 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; }

◆ SetSize()

template<class T , icTagTypeSignature Tsig>
bool CIccTagFloatNum< T, Tsig >::SetSize ( icUInt32Number  nSize,
bool  bZeroNew = true 
)

Name: CIccTagFloatNum::SetSize

Purpose: Sets the size of the data array.

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

6497{
6498 if (nSize==m_nSize)
6499 return true;
6500
6501 m_Num = (T*)icRealloc(m_Num, nSize*sizeof(T));
6502
6503 if (!m_Num) {
6504 m_nSize = 0;
6505 return false;
6506 }
6507
6508 if (bZeroNew && m_nSize < nSize) {
6509 memset(&m_Num[m_nSize], 0, (nSize-m_nSize)*sizeof(T));
6510 }
6511 m_nSize = nSize;
6512
6513 return true;
6514}
ICCPROFLIB_API void * icRealloc(void *ptr, size_t size)
Definition IccUtil.cpp:111

References CIccTagFloatNum< T, Tsig >::m_nSize, and CIccTagFloatNum< T, Tsig >::m_Num.

Referenced by CIccTagFloatNum< T, Tsig >::Read().

+ Here is the caller graph for this function:

◆ Validate()

template<class T , icTagTypeSignature Tsig>
icValidateStatus CIccTagFloatNum< T, Tsig >::Validate ( std::string  sigPath,
std::string &  sReport,
const CIccProfile pProfile = NULL 
) const
virtual

Name: CIccTagFloatNum::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

Reimplemented from CIccTag.

6555{
6557 //Check # of channels
6559 pProfile &&
6560 m_nSize != icGetMaterialColorSpaceSamples(pProfile->m_Header.mcs)) {
6561 CIccInfo Info;
6562 std::string sSigPathName = Info.GetSigPathName(sigPath);
6563
6564 sReport += icMsgValidateCriticalError;
6565 sReport += sSigPathName;
6566 sReport += " - Number of material default values does not match MCS in header.\n";
6568 }
6569
6570 rv = icMaxStatus(rv, CIccTagNumArray::Validate(sigPath, sReport, pProfile));
6571
6572 return rv;
6573}
@ icSigMaterialDefaultValuesTag
Definition icProfileHeader.h:426
icValidateStatus
Definition IccDefs.h:119
@ icValidateOK
Definition IccDefs.h:120
@ icValidateCriticalError
Definition IccDefs.h:123
ICCPROFLIB_API icSignature icGetFirstSigPathSig(std::string sigPath)
Definition IccUtil.cpp:1201
ICCPROFLIB_API const char * icMsgValidateCriticalError
Definition IccUtil.cpp:92
ICCPROFLIB_API icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Definition IccUtil.cpp:244
ICCPROFLIB_API icUInt32Number icGetMaterialColorSpaceSamples(icMaterialColorSignature sig)
Definition IccUtil.cpp:1391
Definition IccUtil.h:303
std::string GetSigPathName(std::string sigPath)
Definition IccUtil.cpp:1614
virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
Definition IccTagBasic.cpp:164

References CIccInfo::GetSigPathName(), icGetFirstSigPathSig(), icGetMaterialColorSpaceSamples(), icMaxStatus(), icMsgValidateCriticalError, icSigMaterialDefaultValuesTag, icValidateCriticalError, icValidateOK, CIccTagFloatNum< T, Tsig >::m_nSize, icHeader::mcs, and CIccTag::Validate().

+ Here is the call graph for this function:

◆ ValuePos()

template<class T , icTagTypeSignature Tsig>
bool CIccTagFloatNum< T, Tsig >::ValuePos ( icFloatNumber DstPos,
icFloatNumber  val,
bool &  bNoZero 
) const
virtual

Name: CIccTagFloatNum::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.

6672{
6673 if(val<0.0)
6674 return false;
6675
6676 icFloatNumber nv = 0.0;
6677 icFloatNumber lv = 0.0;
6678
6679 lv = (icFloatNumber)m_Num[0];
6680
6681 bNoZero = (lv!=0.0);
6682
6683 if (val<lv) {
6684 DstPos = val/lv - 1.0f;
6685 return true;
6686 }
6687
6689 for (i=1; i<m_nSize; i++, lv=nv) {
6690 nv = (icFloatNumber)m_Num[i];
6691
6692 if (val<=nv) {
6693 DstPos = (val-lv)/(nv-lv) + i - 1.0f;
6694 return true;
6695 }
6696 }
6697
6698 return false;
6699}

References CIccTagFloatNum< T, Tsig >::m_nSize, and CIccTagFloatNum< T, Tsig >::m_Num.

◆ Write()

template<class T , icTagTypeSignature Tsig>
bool CIccTagFloatNum< T, Tsig >::Write ( CIccIO pIO)
virtual

Name: CIccTagFloatNum::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.

6389{
6391
6392 if (!pIO)
6393 return false;
6394
6395 if (!pIO->Write32(&sig))
6396 return false;
6397
6398 if (!pIO->Write32(&m_nReserved))
6399 return false;
6400
6401 if (Tsig==icSigFloat16ArrayType) {
6403 return false;
6404 }
6405 else if (Tsig == icSigFloat32ArrayType) {
6406 if (pIO->Write32(m_Num, m_nSize) != (icInt32Number)m_nSize)
6407 return false;
6408 }
6409 else if (Tsig == icSigFloat64ArrayType) {
6410 if (pIO->Write64(m_Num, m_nSize) != (icInt32Number)m_nSize)
6411 return false;
6412 }
6413 else
6414 return false;
6415
6416 return true;
6417}
icInt32Number WriteFloat16Float(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:285
icInt32Number Write32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:152
icInt32Number Write64(void *pBuf64, icInt32Number nNum=1)
Definition IccIO.cpp:182
virtual icTagTypeSignature GetType() const
Definition IccTagBasic.h:1068

References CIccTagFloatNum< T, Tsig >::GetType(), icSigFloat16ArrayType, icSigFloat32ArrayType, icSigFloat64ArrayType, CIccTag::m_nReserved, CIccTagFloatNum< T, Tsig >::m_nSize, CIccTagFloatNum< T, Tsig >::m_Num, CIccIO::Write32(), CIccIO::Write64(), and CIccIO::WriteFloat16Float().

+ Here is the call graph for this function:

Field Documentation

◆ 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(), CIccTagSparseMatrixArray::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(), CIccTagSparseMatrixArray::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_Num


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