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

Class: CIccTagData. More...

#include <IccTagBasic.h>

+ Inheritance diagram for CIccTagData:
+ Collaboration diagram for CIccTagData:

Public Member Functions

 CIccTagData (const CIccTagData &ITD)
 Name: CIccTagData::CIccTagData.
 
 CIccTagData (int nSize=1)
 Name: CIccTagData::CIccTagData.
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 Name: CIccTagData::Describe.
 
virtual const icCharGetClassName () const
 
icUInt8NumberGetData (icUInt32Number index=0)
 
icUInt32Number GetSize () const
 
virtual icTagTypeSignature GetType () const
 Function: GetType()
 
virtual bool IsArrayType ()
 
virtual bool IsTypeAscii ()
 
virtual bool IsTypeBinary ()
 
virtual bool IsTypeCompressed ()
 
virtual bool IsTypeUtf ()
 
virtual CIccTagNewCopy () const
 Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
 
CIccTagDataoperator= (const CIccTagData &DataTag)
 Name: CIccTagData::operator=.
 
icUInt8Numberoperator[] (icUInt32Number index)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 Name: CIccTagData::Read.
 
virtual void SetDataType (icDataBlockType dataType=icAsciiData)
 
bool SetSize (icUInt32Number nSize, bool bZeroNew=true)
 Name: CIccTagData::SetSize.
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
 Name: CIccTagData::Validate.
 
virtual bool Write (CIccIO *pIO)
 Name: CIccTagData::Write.
 
virtual ~CIccTagData ()
 Name: CIccTagData::~CIccTagData.
 
- Public Member Functions inherited from CIccTag
 CIccTag ()
 Name: CIccTag::CIccTag.
 
virtual void DetachIO ()
 Function: ReadAll() - Read All sub data for tag from file.
 
virtual IIccExtensionTagGetExtension ()
 
virtual icArraySignature GetTagArrayType () const
 
virtual icStructSignature GetTagStructType () const
 
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.
 

Protected Attributes

icDataBlockType m_nDataFlag
 
icUInt32Number m_nSize
 
icUInt8Numberm_pData
 

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
 

Detailed Description

Class: CIccTagData.

Purpose: The data type tag

Definition at line 1275 of file IccTagBasic.h.

Constructor & Destructor Documentation

◆ CIccTagData() [1/2]

CIccTagData::CIccTagData ( int nSize = 1)

Name: CIccTagData::CIccTagData.

Purpose: Constructor

Args: nSize = number of data entries

Definition at line 7745 of file IccTagBasic.cpp.

7746{
7747 m_nSize = nSize;
7748 if (m_nSize <1)
7749 m_nSize = 1;
7750 m_pData = (icUInt8Number*)calloc(nSize, sizeof(icUInt8Number));
7751}
icUInt32Number m_nSize
icUInt8Number * m_pData
unsigned char icUInt8Number
Number definitions.

◆ CIccTagData() [2/2]

CIccTagData::CIccTagData ( const CIccTagData & ITD)

Name: CIccTagData::CIccTagData.

Purpose: Copy Constructor

Args: ITD = The CIccTagData object to be copied

Definition at line 7764 of file IccTagBasic.cpp.

7765{
7767 m_nSize = ITD.m_nSize;
7768
7769 m_pData = (icUInt8Number*)calloc(m_nSize, sizeof(icUInt8Number));
7770 memcpy(m_pData, ITD.m_pData, sizeof(icUInt8Number)*m_nSize);
7771}
icDataBlockType m_nDataFlag

References m_nDataFlag, m_nSize, and m_pData.

◆ ~CIccTagData()

CIccTagData::~CIccTagData ( )
virtual

Name: CIccTagData::~CIccTagData.

Purpose: Destructor

Definition at line 7809 of file IccTagBasic.cpp.

7810{
7811 if (m_pData)
7812 free(m_pData);
7813}

Member Function Documentation

◆ Describe()

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

Name: CIccTagData::Describe.

Purpose: Dump data associated with the tag to a string

Args: sDescription - string to concatenate tag dump to

Reimplemented from CIccTag.

Definition at line 7925 of file IccTagBasic.cpp.

7926{
7927 icChar buf[128];
7928
7929 sDescription = "\n";
7930 if (IsTypeCompressed())
7931 sDescription += "Compressed "; // If data is compressed, prepend appropriate text
7932
7933 if (IsTypeAscii()) {
7934 sDescription = "Ascii Data:\n";
7935
7936 for (int i=0; i<(int)m_nSize; i++)
7937 sDescription += (icChar)m_pData[i];
7938 }
7939 else if (IsTypeUtf()) {
7940 if (m_nSize>2 &&
7941 ((m_pData[0]==0xff && m_pData[1]==0xfe) || //UTF-16LE
7942 (m_pData[0]==0xfe && m_pData[1]==0xff))) { //UTF-16BE
7943 sprintf(buf, "UTF-16%s Data:", m_pData[0]==0xff ? "LE" : "BE" );
7944 sDescription = buf;
7945
7946 icMemDump(sDescription, m_pData, m_nSize);
7947 }
7948 else { //UTF-8
7949 sDescription = "UTF-8 Data:\n";
7950
7951 for (int i=0; i<(int)m_nSize; i++)
7952 sDescription += (icChar)m_pData[i];
7953 }
7954 }
7955 else {
7956 if (IsTypeBinary()) {
7957 sDescription = "Binary Data:\n";
7958 }
7959 else {
7960 sDescription = "Other Data:\n";
7961 }
7962
7963 icMemDump(sDescription, m_pData, m_nSize);
7964 }
7965 sDescription += "\n";
7966}
char icChar
Definition IccDefs.h:109
void icMemDump(std::string &sDump, void *pBuf, icUInt32Number nNum)
Definition IccUtil.cpp:951
virtual bool IsTypeBinary()
virtual bool IsTypeAscii()
virtual bool IsTypeUtf()
virtual bool IsTypeCompressed()

References icMemDump().

+ Here is the call graph for this function:

◆ GetClassName()

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

Reimplemented from CIccTag.

Reimplemented in CIccTagXmlTagData.

Definition at line 1285 of file IccTagBasic.h.

1285{ return "CIccTagData"; }

◆ GetData()

icUInt8Number * CIccTagData::GetData ( icUInt32Number index = 0)
inline

Definition at line 1297 of file IccTagBasic.h.

1297{ return &m_pData[index];}

◆ GetSize()

icUInt32Number CIccTagData::GetSize ( ) const
inline

Definition at line 1294 of file IccTagBasic.h.

1294{ return m_nSize; }

◆ GetType()

virtual icTagTypeSignature CIccTagData::GetType ( ) const
inlinevirtual

Function: GetType()

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

Reimplemented from CIccTag.

Definition at line 1284 of file IccTagBasic.h.

1284{ return icSigDataType; }
@ icSigDataType

References icSigDataType.

◆ IsArrayType()

virtual bool CIccTagData::IsArrayType ( )
inlinevirtual

Reimplemented from CIccTag.

Definition at line 1287 of file IccTagBasic.h.

1287{ return m_nSize > 1; }

◆ IsTypeAscii()

virtual bool CIccTagData::IsTypeAscii ( )
inlinevirtual

Definition at line 1300 of file IccTagBasic.h.

1300{ return (m_nDataFlag&icDataTypeMask) == icAsciiData; }
@ icAsciiData
#define icDataTypeMask

References icAsciiData, and icDataTypeMask.

◆ IsTypeBinary()

virtual bool CIccTagData::IsTypeBinary ( )
inlinevirtual

Definition at line 1301 of file IccTagBasic.h.

@ icBinaryData

References icBinaryData, and icDataTypeMask.

◆ IsTypeCompressed()

virtual bool CIccTagData::IsTypeCompressed ( )
inlinevirtual

Definition at line 1303 of file IccTagBasic.h.

1303{ return (m_nDataFlag & icCompressedData) != 0; }
#define icCompressedData

References icCompressedData.

◆ IsTypeUtf()

virtual bool CIccTagData::IsTypeUtf ( )
inlinevirtual

Definition at line 1302 of file IccTagBasic.h.

1302{ return (m_nDataFlag&icDataTypeMask) == icUtfData; }
@ icUtfData

References icDataTypeMask, and icUtfData.

◆ NewCopy()

virtual CIccTag * CIccTagData::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.

Definition at line 1281 of file IccTagBasic.h.

1281{return new CIccTagData(*this);}
CIccTagData(int nSize=1)
Name: CIccTagData::CIccTagData.

◆ operator=()

CIccTagData & CIccTagData::operator= ( const CIccTagData & DataTag)

Name: CIccTagData::operator=.

Purpose: Copy Operator

Args: DataTag = The CIccTagData object to be copied

Definition at line 7784 of file IccTagBasic.cpp.

7785{
7786 if (&DataTag == this)
7787 return *this;
7788
7789 m_nDataFlag = DataTag.m_nDataFlag;
7790 m_nSize = DataTag.m_nSize;
7791
7792 if (m_pData)
7793 free(m_pData);
7794 m_pData = (icUInt8Number*)calloc(m_nSize, sizeof(icUInt8Number));
7795 memcpy(m_pData, DataTag.m_pData, sizeof(icUInt8Number)*m_nSize);
7796
7797 return *this;
7798}

References m_nDataFlag, m_nSize, and m_pData.

◆ operator[]()

icUInt8Number & CIccTagData::operator[] ( icUInt32Number index)
inline

Definition at line 1296 of file IccTagBasic.h.

1296{ return m_pData[index]; }

◆ Read()

bool CIccTagData::Read ( icUInt32Number size,
CIccIO * pIO )
virtual

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

Definition at line 7830 of file IccTagBasic.cpp.

7831{
7833
7834 if (sizeof(icTagTypeSignature) +
7835 sizeof(icUInt32Number) +
7836 sizeof(icUInt32Number) +
7837 sizeof(icUInt8Number) > size)
7838 return false;
7839
7840 if (!pIO) {
7841 return false;
7842 }
7843
7844 if (!pIO->Read32(&sig))
7845 return false;
7846
7847 if (!pIO->Read32(&m_nReserved))
7848 return false;
7849
7850 if (!pIO->Read32(&m_nDataFlag))
7851 return false;
7852
7853 icUInt32Number nNum = size-3*sizeof(icUInt32Number);
7854
7855 if (!SetSize(nNum))
7856 return false;
7857
7858 if (pIO->Read8(m_pData, nNum) != (icInt32Number)nNum)
7859 return false;
7860
7861 if (IsTypeCompressed()) {
7862 //Uncompress data here
7863 }
7864
7865 return true;
7866}
icArraySignature sig
icTagTypeSignature
unsigned int icUInt32Number
virtual icInt32Number Read8(void *pBuf8, icInt32Number nNum=1)
Definition IccIO.h:104
icInt32Number Read32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:143
bool SetSize(icUInt32Number nSize, bool bZeroNew=true)
Name: CIccTagData::SetSize.
icUInt32Number m_nReserved
long icInt32Number

References CIccIO::Read32(), CIccIO::Read8(), and sig.

+ Here is the call graph for this function:

◆ SetDataType()

virtual void CIccTagData::SetDataType ( icDataBlockType dataType = icAsciiData)
inlinevirtual

Definition at line 1299 of file IccTagBasic.h.

1299{ m_nDataFlag = dataType; }

◆ SetSize()

bool CIccTagData::SetSize ( icUInt32Number nSize,
bool bZeroNew = true )

Name: CIccTagData::SetSize.

Purpose: Sets the size of the data array.

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

Definition at line 7979 of file IccTagBasic.cpp.

7980{
7981 if (m_nSize == nSize)
7982 return true;
7983
7985
7986 if (!m_pData) {
7987 m_nSize = 0;
7988 return false;
7989 }
7990
7991 if (bZeroNew && nSize > m_nSize) {
7992 memset(&m_pData[m_nSize], 0, (nSize-m_nSize)*sizeof(icUInt8Number));
7993 }
7994 m_nSize = nSize;
7995
7996 return true;
7997}
void * icRealloc(void *ptr, size_t size)
Name: icRealloc.
Definition IccUtil.cpp:111

References icRealloc().

+ Here is the call graph for this function:

◆ Validate()

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

Name: CIccTagData::Validate.

Purpose: Check tag data validity.

Args: sig = signature of tag being validated, sReport = String to add report information to

Return: icValidateStatusOK if valid, or other error status.

Reimplemented from CIccTag.

Definition at line 8014 of file IccTagBasic.cpp.

8015{
8016 icValidateStatus rv = CIccTag::Validate(sigPath, sReport, pProfile);
8017
8018 CIccInfo Info;
8019 std::string sSigPathName = Info.GetSigPathName(sigPath);
8020
8021 // Mask bits to match processing in Describe() so warnings are appropriate
8023 case icAsciiData:
8024 for (int i = 0; i < (int)m_nSize; i++) {
8025 if (m_pData[i] & 0x80) {
8026 sReport += icMsgValidateWarning;
8027 sReport += sSigPathName;
8028 sReport += " - Ascii Data is not just 7-bit data.\n";
8030 break;
8031 }
8032 }
8033 break;
8034 case icBinaryData:
8035 case icUtfData:
8039 break;
8040 default:
8041 sReport += icMsgValidateNonCompliant;
8042 sReport += sSigPathName;
8043 sReport += " - Invalid data flag encoding.\n";
8045 }
8046
8048 sReport += icMsgValidateNonCompliant;
8049 sReport += sSigPathName;
8050 sReport += " - Invalid data flag encoding (reserved high order bits).\n";
8052 }
8053
8054 return rv;
8055}
icValidateStatus
Definition IccDefs.h:118
@ icValidateWarning
Definition IccDefs.h:120
@ icValidateNonCompliant
Definition IccDefs.h:121
icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Name: icMaxStatus.
Definition IccUtil.cpp:244
const char * icMsgValidateWarning
Definition IccUtil.cpp:90
const char * icMsgValidateNonCompliant
Definition IccUtil.cpp:91
Type: Class.
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
Function: Validate Each derived tag will implement it's own IsValid() function.
@ icCompressedUtfData
@ icCompressedAsciiData
@ icCompressedBinaryData

References CIccInfo::GetSigPathName(), icAsciiData, icBinaryData, icCompressedAsciiData, icCompressedBinaryData, icCompressedData, icCompressedUtfData, icDataTypeMask, icMaxStatus(), icMsgValidateNonCompliant, icMsgValidateWarning, icUtfData, icValidateNonCompliant, icValidateWarning, and CIccTag::Validate().

+ Here is the call graph for this function:

◆ Write()

bool CIccTagData::Write ( CIccIO * pIO)
virtual

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

Definition at line 7882 of file IccTagBasic.cpp.

7883{
7885
7886 if (!pIO)
7887 return false;
7888
7889 if (!pIO->Write32(&sig))
7890 return false;
7891
7892 if (!pIO->Write32(&m_nReserved))
7893 return false;
7894
7895 if (!pIO->Write32(&m_nDataFlag))
7896 return false;
7897
7898 if (IsTypeCompressed()) {
7899 icUInt32Number *pData = NULL;
7900 icInt32Number nSize = 0;
7901 //Compress data here
7902
7903 if (pIO->Write8(pData, nSize) != (icInt32Number)nSize)
7904 return false;
7905 }
7906 else {
7908 return false;
7909 }
7910
7911 return true;
7912}
virtual icInt32Number Write8(void *pBuf8, icInt32Number nNum=1)
Definition IccIO.h:105
icInt32Number Write32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:152
virtual icTagTypeSignature GetType() const
Function: GetType()

References sig, CIccIO::Write32(), and CIccIO::Write8().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_nDataFlag

icDataBlockType CIccTagData::m_nDataFlag
protected

Definition at line 1308 of file IccTagBasic.h.

Referenced by CIccTagData(), and operator=().

◆ m_nSize

icUInt32Number CIccTagData::m_nSize
protected

Definition at line 1310 of file IccTagBasic.h.

Referenced by CIccTagData(), and operator=().

◆ m_pData

icUInt8Number* CIccTagData::m_pData
protected

Definition at line 1309 of file IccTagBasic.h.

Referenced by CIccTagData(), and operator=().


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