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

Class: CIccTagResponseCurveSet16. More...

#include <IccTagBasic.h>

+ Inheritance diagram for CIccTagResponseCurveSet16:
+ Collaboration diagram for CIccTagResponseCurveSet16:

Public Member Functions

 CIccTagResponseCurveSet16 ()
 Name: CIccTagResponseCurveSet16::CIccTagResponseCurveSet16.
 
 CIccTagResponseCurveSet16 (const CIccTagResponseCurveSet16 &ITRCS)
 Name: CIccTagResponseCurveSet16::CIccTagResponseCurveSet16.
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 Name: CIccTagResponseCurveSet16::Describe.
 
virtual const icCharGetClassName () const
 
CIccResponseCurveStructGetFirstCurves ()
 Name: CIccTagResponseCurveSet16::GetFirstCurves.
 
CIccResponseCurveStructGetNextCurves ()
 Name: CIccTagResponseCurveSet16::GetNextCurves.
 
icUInt16Number GetNumChannels () const
 
icUInt16Number GetNumResponseCurveTypes () const
 Name: CIccTagResponseCurveSet16::GetNumResponseCurveTypes.
 
CIccResponseCurveStructGetResponseCurves (icMeasurementUnitSig sig)
 Name: CIccTagResponseCurveSet16::GetResponseCurves.
 
virtual icTagTypeSignature GetType () const
 Function: GetType()
 
virtual CIccTagNewCopy () const
 Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
 
CIccResponseCurveStructNewResponseCurves (icMeasurementUnitSig sig)
 Name: CIccTagResponseCurveSet16::NewResponseCurves.
 
CIccTagResponseCurveSet16operator= (const CIccTagResponseCurveSet16 &RespCurveSet16Tag)
 Name: CIccTagResponseCurveSet16::operator=.
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 Name: CIccTagResponseCurveSet16::Read.
 
void SetNumChannels (icUInt16Number nChannels)
 Name: CIccTagResponseCurveSet16::SetNumChannels.
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
 Name: CIccTagResponseCurveSet16::Validate.
 
virtual bool Write (CIccIO *pIO)
 Name: CIccTagResponseCurveSet16::Write.
 
virtual ~CIccTagResponseCurveSet16 ()
 Name: CIccTagResponseCurveSet16::~CIccTagResponseCurveSet16.
 
- 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 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.
 

Protected Attributes

CIccResponseCurveSetIterm_Curve
 
icUInt16Number m_nChannels
 
CIccResponseCurveSetm_ResponseCurves
 

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: CIccTagResponseCurveSet16.

Purpose: The responseCurveSet16 Tag type

Definition at line 1617 of file IccTagBasic.h.

Constructor & Destructor Documentation

◆ CIccTagResponseCurveSet16() [1/2]

CIccTagResponseCurveSet16::CIccTagResponseCurveSet16 ( )

Name: CIccTagResponseCurveSet16::CIccTagResponseCurveSet16.

Purpose: Constructor

Definition at line 10066 of file IccTagBasic.cpp.

10067{
10068 m_nChannels = 0;
10069
10072 m_Curve->inited = false;
10073}
std::list< CIccResponseCurveStruct > CIccResponseCurveSet
List Class: CIccResponseCurveSet.
CIccResponseCurveSet * m_ResponseCurves
CIccResponseCurveSetIter * m_Curve

◆ CIccTagResponseCurveSet16() [2/2]

CIccTagResponseCurveSet16::CIccTagResponseCurveSet16 ( const CIccTagResponseCurveSet16 & ITRCS)

Name: CIccTagResponseCurveSet16::CIccTagResponseCurveSet16.

Purpose: Copy Constructor

Args: ITRCS = The CIccTagResponseCurveSet16 object to be copied

Definition at line 10086 of file IccTagBasic.cpp.

10087{
10088 m_nChannels = ITRCS.m_nChannels;
10092 *m_Curve = *ITRCS.m_Curve;
10093}

References m_Curve, m_nChannels, and m_ResponseCurves.

◆ ~CIccTagResponseCurveSet16()

CIccTagResponseCurveSet16::~CIccTagResponseCurveSet16 ( )
virtual

Name: CIccTagResponseCurveSet16::~CIccTagResponseCurveSet16.

Purpose: Destructor

Definition at line 10130 of file IccTagBasic.cpp.

10131{
10132 if (!m_ResponseCurves->empty())
10133 m_ResponseCurves->clear();
10134
10135 delete m_ResponseCurves;
10136 delete m_Curve;
10137}

Member Function Documentation

◆ Describe()

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

Name: CIccTagResponseCurveSet16::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 10293 of file IccTagBasic.cpp.

10294{
10295 CIccResponseCurveSet::iterator i;
10296 icChar buf[128];
10297
10298 sprintf(buf, "Number of Channels: %u\n", m_nChannels);
10299 sDescription += buf;
10300
10301 sprintf(buf, "Number of Measurement Types used: %u\n", (icUInt32Number)m_ResponseCurves->size());
10302 sDescription += buf;
10303
10304 int count = 0;
10305 for (i=m_ResponseCurves->begin(); i!=m_ResponseCurves->end(); i++, count++) {
10306 sDescription += "\n";
10307
10308 sprintf(buf, "Response Curve for measurement type [%u] follows:\n", count+1);
10309 sDescription += buf;
10310
10311 i->Describe(sDescription, nVerboseness);
10312 }
10313}
char icChar
Definition IccDefs.h:109
unsigned int icUInt32Number

◆ GetClassName()

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

Reimplemented from CIccTag.

Reimplemented in CIccTagXmlResponseCurveSet16.

Definition at line 1627 of file IccTagBasic.h.

1627{ return "CIccTagResponseCurveSet16"; }

◆ GetFirstCurves()

CIccResponseCurveStruct * CIccTagResponseCurveSet16::GetFirstCurves ( )

Name: CIccTagResponseCurveSet16::GetFirstCurves.

Purpose: Returns pointer to the first set of response curves in the list.

Definition at line 10401 of file IccTagBasic.cpp.

10402{
10403 if (!m_Curve)
10404 return NULL;
10405
10406 m_Curve->item = m_ResponseCurves->begin();
10407 if (m_Curve->item == m_ResponseCurves->end()) {
10408 m_Curve->inited = false;
10409 return NULL;
10410 }
10411 m_Curve->inited = true;
10412 return m_Curve->item->GetThis();
10413}
CIccResponseCurveSet::iterator item

References CIccResponseCurveStruct::GetThis().

+ Here is the call graph for this function:

◆ GetNextCurves()

CIccResponseCurveStruct * CIccTagResponseCurveSet16::GetNextCurves ( )

Name: CIccTagResponseCurveSet16::GetNextCurves.

Purpose: Serves as an iterator for the list containing response curves. GetFirstCurves() must be called before calling this function.

Definition at line 10425 of file IccTagBasic.cpp.

10426{
10427 if (!m_Curve || !m_Curve->inited)
10428 return NULL;
10429
10430 m_Curve->item++;
10431 if (m_Curve->item==m_ResponseCurves->end()) {
10432 m_Curve->inited = false;
10433 return NULL;
10434 }
10435 return m_Curve->item->GetThis();
10436}

References CIccResponseCurveStruct::GetThis().

+ Here is the call graph for this function:

◆ GetNumChannels()

icUInt16Number CIccTagResponseCurveSet16::GetNumChannels ( ) const
inline

Definition at line 1634 of file IccTagBasic.h.

1634{return m_nChannels;}

◆ GetNumResponseCurveTypes()

icUInt16Number CIccTagResponseCurveSet16::GetNumResponseCurveTypes ( ) const

Name: CIccTagResponseCurveSet16::GetNumResponseCurveTypes.

Purpose: Get the number of response curve types.

Definition at line 10447 of file IccTagBasic.cpp.

10448{
10449 return(icUInt16Number) m_ResponseCurves->size();
10450}
unsigned short icUInt16Number

◆ GetResponseCurves()

CIccResponseCurveStruct * CIccTagResponseCurveSet16::GetResponseCurves ( icMeasurementUnitSig sig)

Name: CIccTagResponseCurveSet16::GetResponseCurves.

Purpose: Returns pointer to the requested set of response curves

Args: sig = measurement unit signature of the response curve set desired

Definition at line 10377 of file IccTagBasic.cpp.

10378{
10379 if (!m_nChannels)
10380 return NULL;
10381
10382 CIccResponseCurveSet::iterator i;
10383
10384 for (i=m_ResponseCurves->begin(); i!=m_ResponseCurves->end(); i++) {
10385 if (i->GetMeasurementType() == sig)
10386 return (i->GetThis());
10387 }
10388
10389 return NULL;
10390}
icArraySignature sig

References sig.

◆ GetType()

virtual icTagTypeSignature CIccTagResponseCurveSet16::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 1626 of file IccTagBasic.h.

@ icSigResponseCurveSet16Type

References icSigResponseCurveSet16Type.

◆ NewCopy()

virtual CIccTag * CIccTagResponseCurveSet16::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 1623 of file IccTagBasic.h.

1623{return new CIccTagResponseCurveSet16(*this);}
CIccTagResponseCurveSet16()
Name: CIccTagResponseCurveSet16::CIccTagResponseCurveSet16.

◆ NewResponseCurves()

CIccResponseCurveStruct * CIccTagResponseCurveSet16::NewResponseCurves ( icMeasurementUnitSig sig)

Name: CIccTagResponseCurveSet16::NewResponseCurves.

Purpose: Creates and adds a new set of response curves to the list. SetNumChannels() must be called before calling this function.

Args: sig = measurement unit signature

Definition at line 10347 of file IccTagBasic.cpp.

10348{
10349 if (!m_nChannels)
10350 return NULL;
10351
10352 CIccResponseCurveStruct *pResponseCurveStruct;
10353 pResponseCurveStruct = GetResponseCurves(sig);
10354
10355 if (pResponseCurveStruct)
10356 return pResponseCurveStruct;
10357
10360 m_ResponseCurves->push_back(entry);
10361 m_Curve->inited = false;
10362
10363 return GetResponseCurves(sig);
10364}
Data Class: CIccResponseCurveStruct.
CIccResponseCurveStruct * GetResponseCurves(icMeasurementUnitSig sig)
Name: CIccTagResponseCurveSet16::GetResponseCurves.

References sig.

◆ operator=()

CIccTagResponseCurveSet16 & CIccTagResponseCurveSet16::operator= ( const CIccTagResponseCurveSet16 & RespCurveSet16Tag)

Name: CIccTagResponseCurveSet16::operator=.

Purpose: Copy Operator

Args: RespCurveSet16Tag = The CIccTagResponseCurveSet16 object to be copied

Definition at line 10106 of file IccTagBasic.cpp.

10107{
10108 if (&RespCurveSet16Tag == this)
10109 return *this;
10110
10111 if (!m_ResponseCurves->empty())
10112 m_ResponseCurves->clear();
10113
10114 m_nChannels = RespCurveSet16Tag.m_nChannels;
10115 *m_ResponseCurves = *RespCurveSet16Tag.m_ResponseCurves;
10116 *m_Curve = *RespCurveSet16Tag.m_Curve;
10117
10118 return *this;
10119}

References m_Curve, m_nChannels, and m_ResponseCurves.

◆ Read()

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

Name: CIccTagResponseCurveSet16::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 10154 of file IccTagBasic.cpp.

10155{
10157
10158 icUInt32Number startPos = pIO->Tell();
10159
10160 unsigned long headerSize = sizeof(icTagTypeSignature) +
10161 sizeof(icUInt32Number) +
10162 sizeof(icUInt16Number) * 2;
10163 if (headerSize > size)
10164 return false;
10165
10166 if (!pIO) {
10167 return false;
10168 }
10169
10170 if (!pIO->Read32(&sig) ||
10171 !pIO->Read32(&m_nReserved))
10172 return false;
10173
10174 icUInt16Number nCountMeasmntTypes;
10175
10176 if (!pIO->Read16(&m_nChannels) ||
10177 !pIO->Read16(&nCountMeasmntTypes))
10178 return false;
10179
10180 if ((icUInt32Number)nCountMeasmntTypes * sizeof(icUInt32Number) > size - headerSize)
10181 return false;
10182
10183 icUInt32Number* nOffset = new icUInt32Number[nCountMeasmntTypes];
10184
10185 if (pIO->Read32(&nOffset[0], nCountMeasmntTypes) != nCountMeasmntTypes) {
10186 delete[] nOffset;
10187 return false;
10188 }
10189
10191
10192 for (icUInt16Number i=0; i<nCountMeasmntTypes; i++) {
10193 if (nOffset[i] + 4 > size) {
10194 delete[] nOffset;
10195 return false;
10196 }
10197 pIO->Seek(startPos + nOffset[i], icSeekSet);
10199 if (!entry.Read(size-nOffset[i], pIO)) {
10200 delete[] nOffset;
10201 return false;
10202 }
10203
10204 m_ResponseCurves->push_back(entry);
10205 }
10206 delete[] nOffset;
10207
10208
10209 m_Curve->inited = false;
10210
10211 return true;
10212}
@ icSeekSet
Definition IccIO.h:83
icTagTypeSignature
icInt32Number Read16(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:114
virtual icInt32Number Tell()
Definition IccIO.h:133
virtual icInt32Number Seek(icInt32Number nOffset, icSeekVal pos)
Definition IccIO.h:132
icInt32Number Read32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:143
bool Read(icUInt32Number size, CIccIO *pIO)
Name: CIccResponseCurveStruct::Read.
icUInt32Number m_nReserved

References icSeekSet, CIccResponseCurveStruct::Read(), CIccIO::Read16(), CIccIO::Read32(), CIccIO::Seek(), sig, and CIccIO::Tell().

+ Here is the call graph for this function:

◆ SetNumChannels()

void CIccTagResponseCurveSet16::SetNumChannels ( icUInt16Number nChannels)

Name: CIccTagResponseCurveSet16::SetNumChannels.

Purpose: Sets the number of channels. This will delete any prior Response curves from the set.

Args: nChannels = number of channels

Definition at line 10327 of file IccTagBasic.cpp.

10328{
10329 m_nChannels = nChannels;
10330
10331 if (!m_ResponseCurves->empty())
10332 m_ResponseCurves->clear();
10333}

◆ Validate()

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

Name: CIccTagResponseCurveSet16::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 10467 of file IccTagBasic.cpp.

10468{
10469 icValidateStatus rv = CIccTag::Validate(sigPath, sReport, pProfile);
10470
10471 CIccInfo Info;
10472 std::string sSigPathName = Info.GetSigPathName(sigPath);
10473
10474 if (!pProfile) {
10475 sReport += icMsgValidateWarning;
10476 sReport += sSigPathName;
10477 sReport += " - Tag validation incomplete: Pointer to profile unavailable.\n";
10479 return rv;
10480 }
10481
10482 if (m_nChannels!=icGetSpaceSamples(pProfile->m_Header.colorSpace)) {
10483 sReport += icMsgValidateWarning;
10484 sReport += sSigPathName;
10485 sReport += " - Incorrect number of channels.\n";
10486 }
10487
10488 if (!GetNumResponseCurveTypes()) {
10489 sReport += icMsgValidateWarning;
10490 sReport += sSigPathName;
10491 sReport += " - Empty Tag!.\n";
10493 }
10494 else {
10495 CIccResponseCurveSet::iterator i;
10496 for (i=m_ResponseCurves->begin(); i!=m_ResponseCurves->end(); i++) {
10497 rv = icMaxStatus(rv, i->Validate(sReport));
10498 }
10499 }
10500
10501 return rv;
10502}
icValidateStatus
Definition IccDefs.h:118
@ icValidateWarning
Definition IccDefs.h:120
icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Name: icMaxStatus.
Definition IccUtil.cpp:244
const char * icMsgValidateWarning
Definition IccUtil.cpp:90
icUInt32Number icGetSpaceSamples(icColorSpaceSignature sig)
Definition IccUtil.cpp:1303
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.
icUInt16Number GetNumResponseCurveTypes() const
Name: CIccTagResponseCurveSet16::GetNumResponseCurveTypes.

References CIccInfo::GetSigPathName(), icGetSpaceSamples(), icMaxStatus(), icMsgValidateWarning, icValidateWarning, and CIccTag::Validate().

+ Here is the call graph for this function:

◆ Write()

bool CIccTagResponseCurveSet16::Write ( CIccIO * pIO)
virtual

Name: CIccTagResponseCurveSet16::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 10228 of file IccTagBasic.cpp.

10229{
10231 icUInt16Number nCountMeasmntTypes = (icUInt16Number)m_ResponseCurves->size();
10232
10233 if (!pIO) {
10234 return false;
10235 }
10236
10237 icUInt32Number startPos = pIO->GetLength();
10238
10239 if (!pIO->Write32(&sig) ||
10240 !pIO->Write32(&m_nReserved))
10241 return false;
10242
10243
10244 if (!pIO->Write16(&m_nChannels) ||
10245 !pIO->Write16(&nCountMeasmntTypes))
10246 return false;
10247
10248 icUInt32Number offsetPos = pIO->GetLength();
10249 icUInt32Number* nOffset = new icUInt32Number[nCountMeasmntTypes];
10250
10251
10252 int j;
10253 for (j=0; j<nCountMeasmntTypes; j++) {
10254 nOffset[j] = 0;
10255 if (!pIO->Write32(&nOffset[j]))
10256 return false;
10257 }
10258
10259 CIccResponseCurveSet::iterator i;
10260
10261 for (i=m_ResponseCurves->begin(), j=0; i!=m_ResponseCurves->end(); i++, j++) {
10262 nOffset[j] = pIO->GetLength() - startPos;
10263 if (!i->Write(pIO))
10264 return false;
10265 }
10266
10267 icUInt32Number curPOs = pIO->GetLength();
10268
10269 pIO->Seek(offsetPos,icSeekSet);
10270
10271 for (j=0; j<nCountMeasmntTypes; j++) {
10272 if (!pIO->Write32(&nOffset[j]))
10273 return false;
10274 }
10275
10276 pIO->Seek(curPOs,icSeekSet);
10277 delete [] nOffset;
10278
10279 return true;
10280}
virtual icInt32Number GetLength()
Definition IccIO.h:130
icInt32Number Write16(void *pBuf16, icInt32Number nNum=1)
Definition IccIO.cpp:122
icInt32Number Write32(void *pBuf32, icInt32Number nNum=1)
Definition IccIO.cpp:152
virtual icTagTypeSignature GetType() const
Function: GetType()

References CIccIO::GetLength(), icSeekSet, CIccIO::Seek(), sig, CIccIO::Write16(), and CIccIO::Write32().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_Curve

CIccResponseCurveSetIter* CIccTagResponseCurveSet16::m_Curve
protected

Definition at line 1648 of file IccTagBasic.h.

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

◆ m_nChannels

icUInt16Number CIccTagResponseCurveSet16::m_nChannels
protected

Definition at line 1647 of file IccTagBasic.h.

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

◆ m_ResponseCurves

CIccResponseCurveSet* CIccTagResponseCurveSet16::m_ResponseCurves
protected

Definition at line 1646 of file IccTagBasic.h.

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


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