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

Class: CIccTagProfileSequenceId. More...

#include <IccTagProfSeqId.h>

+ Inheritance diagram for CIccTagProfileSequenceId:
+ Collaboration diagram for CIccTagProfileSequenceId:

Public Member Functions

bool AddProfileDescription (CIccProfile &profile)
 
bool AddProfileDescription (const CIccProfileIdDesc &profileDesc)
 Name: sampleICC::CIccTagProfileSequenceId::AddProfileDescription.
 
CIccProfileIdDescList::iterator begin ()
 
 CIccTagProfileSequenceId ()
 Name: CIccTagProfileSequenceId::CIccTagProfileSequenceId.
 
 CIccTagProfileSequenceId (const CIccTagProfileSequenceId &lut)
 Name: CIccTagProfileSequenceId::CIccTagProfileSequenceId.
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 Name: CIccTagProfileSequenceId::Describe.
 
CIccProfileIdDescList::iterator end ()
 
virtual const icCharGetClassName () const
 
CIccProfileIdDescGetFirst ()
 Name: sampleICC::CIccTagProfileSequenceId::GetFirst.
 
CIccProfileIdDescGetLast ()
 Name: sampleICC::CIccTagProfileSequenceId::GetLast.
 
virtual icTagTypeSignature GetType () const
 Function: GetType()
 
virtual CIccTagNewCopy () const
 Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
 
CIccTagProfileSequenceIdoperator= (const CIccTagProfileSequenceId &lut)
 Name: &operator=.
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 Name: CIccTagProfileSequenceId::Read.
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
 Name: CIccTagProfileSequenceId::Validate.
 
virtual bool Write (CIccIO *pIO)
 Name: CIccTagProfileSequenceId::Write.
 
virtual ~CIccTagProfileSequenceId ()
 Name: CIccTagProfileSequenceId::~CIccTagProfileSequenceId.
 
- 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.
 

Static Public Member Functions

static CIccTagProfileSequenceIdParseMem (icUInt8Number *pMem, icUInt32Number size)
 Name: CIccTagProfileSequenceId::ParseMem.
 
- Static Public Member Functions inherited from CIccTag
static CIccTagCreate (icTagTypeSignature sig)
 Name: CIccTag::Create.
 

Protected Member Functions

void Cleanup ()
 

Protected Attributes

CIccProfileIdDescListm_list
 

Additional Inherited Members

- Public Attributes inherited from CIccTag
icUInt32Number m_nReserved
 

Detailed Description

Class: CIccTagProfileSequenceId.

Purpose: The ProfileSequenceId tag

Definition at line 114 of file IccTagProfSeqId.h.

Constructor & Destructor Documentation

◆ CIccTagProfileSequenceId() [1/2]

CIccTagProfileSequenceId::CIccTagProfileSequenceId ( )

Name: CIccTagProfileSequenceId::CIccTagProfileSequenceId.

Purpose:

Args:

Return:

Definition at line 333 of file IccTagProfSeqId.cpp.

334{
336}
std::list< CIccProfileIdDesc > CIccProfileIdDescList
CIccProfileIdDescList * m_list

References m_list.

Referenced by ParseMem().

+ Here is the caller graph for this function:

◆ CIccTagProfileSequenceId() [2/2]

CIccTagProfileSequenceId::CIccTagProfileSequenceId ( const CIccTagProfileSequenceId & psi)

Name: CIccTagProfileSequenceId::CIccTagProfileSequenceId.

Purpose:

Args:

Return:

Definition at line 348 of file IccTagProfSeqId.cpp.

349{
351
352 *m_list = *psi.m_list;
353}

References m_list.

◆ ~CIccTagProfileSequenceId()

CIccTagProfileSequenceId::~CIccTagProfileSequenceId ( )
virtual

Name: CIccTagProfileSequenceId::~CIccTagProfileSequenceId.

Purpose:

Args:

Return:

Definition at line 385 of file IccTagProfSeqId.cpp.

386{
387 delete m_list;
388}

References m_list.

Member Function Documentation

◆ AddProfileDescription() [1/2]

bool CIccTagProfileSequenceId::AddProfileDescription ( CIccProfile & profile)
inline

Definition at line 135 of file IccTagProfSeqId.h.

135{ return AddProfileDescription(CIccProfileIdDesc(profile)); }
bool AddProfileDescription(CIccProfile &profile)

References AddProfileDescription().

Referenced by AddProfileDescription().

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

◆ AddProfileDescription() [2/2]

bool CIccTagProfileSequenceId::AddProfileDescription ( const CIccProfileIdDesc & profileDesc)

Name: sampleICC::CIccTagProfileSequenceId::AddProfileDescription.

Purpose:

Args: CIccProfileIdDesc &profileDesc

Return: bool

Definition at line 645 of file IccTagProfSeqId.cpp.

646{
647 m_list->push_back(profileDesc);
648
649 return true;
650}

References m_list.

◆ begin()

CIccProfileIdDescList::iterator CIccTagProfileSequenceId::begin ( )
inline

Definition at line 141 of file IccTagProfSeqId.h.

141{ return m_list->begin(); }

◆ Cleanup()

void CIccTagProfileSequenceId::Cleanup ( )
protected

◆ Describe()

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

Name: CIccTagProfileSequenceId::Describe.

Purpose:

Args:

Return:

Reimplemented from CIccTag.

Definition at line 429 of file IccTagProfSeqId.cpp.

430{
431 icChar buf[128];
432
433 sprintf(buf, "BEGIN ProfileSequenceIdentification_TAG\n");
434 sDescription += buf;
435 sDescription += "\n";
436
437 int i;
438 CIccProfileIdDescList::iterator j;
439 for (i=0, j=m_list->begin(); j!=m_list->end(); i++, j++) {
440 sprintf(buf, "ProfileDescription_%d:\n", i+1);
441 sDescription += buf;
442 j->Describe(sDescription, nVerboseness);
443 }
444
445 sprintf(buf, "END ProfileSequenceIdentification_TAG\n");
446 sDescription += buf;
447 sDescription += "\n";
448}
char icChar
Definition IccDefs.h:109

References m_list.

◆ end()

CIccProfileIdDescList::iterator CIccTagProfileSequenceId::end ( )
inline

Definition at line 142 of file IccTagProfSeqId.h.

142{ return m_list->end(); }

◆ GetClassName()

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

Reimplemented from CIccTag.

Reimplemented in CIccTagXmlProfileSequenceId.

Definition at line 126 of file IccTagProfSeqId.h.

126{ return "CIccTagProfileSequenceId"; }

◆ GetFirst()

CIccProfileIdDesc * CIccTagProfileSequenceId::GetFirst ( )

Name: sampleICC::CIccTagProfileSequenceId::GetFirst.

Purpose:

Args:

Return: CIccProfileIdDesc *

Definition at line 665 of file IccTagProfSeqId.cpp.

666{
667 if (m_list->size())
668 return &(*(m_list->begin()));
669
670 return NULL;
671}

References m_list.

◆ GetLast()

CIccProfileIdDesc * CIccTagProfileSequenceId::GetLast ( )

Name: sampleICC::CIccTagProfileSequenceId::GetLast.

Purpose:

Args:

Return: CIccProfileIdDesc *

Definition at line 686 of file IccTagProfSeqId.cpp.

687{
688 if (m_list->size())
689 return &(*(m_list->rbegin()));
690
691 return NULL;
692}

References m_list.

◆ GetType()

virtual icTagTypeSignature CIccTagProfileSequenceId::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 125 of file IccTagProfSeqId.h.

125{ return icSigProfileSequceIdType; }
@ icSigProfileSequceIdType

References icSigProfileSequceIdType.

Referenced by Validate(), and Write().

+ Here is the caller graph for this function:

◆ NewCopy()

virtual CIccTag * CIccTagProfileSequenceId::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 120 of file IccTagProfSeqId.h.

120{ return new CIccTagProfileSequenceId(*this);}
CIccTagProfileSequenceId()
Name: CIccTagProfileSequenceId::CIccTagProfileSequenceId.

◆ operator=()

CIccTagProfileSequenceId & CIccTagProfileSequenceId::operator= ( const CIccTagProfileSequenceId & psi)

Name: &operator=.

Purpose:

Args:

Return:

Definition at line 365 of file IccTagProfSeqId.cpp.

366{
367 if (&psi == this)
368 return *this;
369
370 *m_list = *psi.m_list;
371
372 return *this;
373}

References m_list.

◆ ParseMem()

CIccTagProfileSequenceId * CIccTagProfileSequenceId::ParseMem ( icUInt8Number * pMem,
icUInt32Number size )
static

Name: CIccTagProfileSequenceId::ParseMem.

Purpose:

Args:

Return:

Definition at line 401 of file IccTagProfSeqId.cpp.

402{
403 CIccMemIO IO;
404
405 if (!IO.Attach(pMem, size))
406 return NULL;
407
409
410 if (!pProSeqId->Read(size, &IO)) {
411 delete pProSeqId;
412 return NULL;
413 }
414
415 return pProSeqId;
416}
Type: Class.
Definition IccIO.h:217
bool Attach(icUInt8Number *pData, icUInt32Number nSize, bool bWrite=false)
Definition IccIO.cpp:686
Class: CIccTagProfileSequenceId.
virtual bool Read(icUInt32Number size, CIccIO *pIO)
Name: CIccTagProfileSequenceId::Read.

References CIccMemIO::Attach(), CIccTagProfileSequenceId(), and Read().

+ Here is the call graph for this function:

◆ Read()

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

Name: CIccTagProfileSequenceId::Read.

Purpose:

Args:

Return:

Reimplemented from CIccTag.

Definition at line 461 of file IccTagProfSeqId.cpp.

462{
463 icUInt32Number headerSize = sizeof(icTagTypeSignature) +
464 sizeof(icUInt32Number) +
465 sizeof(icUInt32Number);
466
467 if (headerSize > size)
468 return false;
469
470 if (!pIO) {
471 return false;
472 }
473
474 m_list->clear();
475
477 icUInt32Number tagStart = pIO->Tell();
478
479 if (!pIO->Read32(&sig))
480 return false;
481
482 if (!pIO->Read32(&m_nReserved))
483 return false;
484
485 icUInt32Number count, i;
486
487 if (!pIO->Read32(&count))
488 return false;
489
490 if (headerSize + (icUInt64Number)count*sizeof(icUInt32Number)*2 > size)
491 return false;
492
493 if (!count) {
494 return true;
495 }
496
497 icPositionNumber *pos = new icPositionNumber[count];
498 if (!pos)
499 return false;
500
501 //Read TagDir
502 for (i=0; i<count; i++) {
503 if (!pIO->Read32(&pos[i].offset) ||
504 !pIO->Read32(&pos[i].size)) {
505 delete [] pos;
506 return false;
507 }
508 }
509
511
512 for (i=0; i<count; i++) {
513 if (pos[i].offset + pos[i].size > size) {
514 delete [] pos;
515 return false;
516 }
517 pIO->Seek(tagStart + pos[i].offset, icSeekSet);
518
519 if (!pid.Read(pos[i].size, pIO)) {
520 delete [] pos;
521 return false;
522 }
523
524 m_list->push_back(pid);
525 }
526
527 delete [] pos;
528
529 return true;
530}
icArraySignature sig
@ icSeekSet
Definition IccIO.h:83
icTagTypeSignature
unsigned int icUInt32Number
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: sampleICC::CIccProfileIdDesc::Read.
icUInt32Number m_nReserved
icUInt32Number icUInt64Number[2]

References icSeekSet, m_list, CIccTag::m_nReserved, icPositionNumber::offset, CIccProfileIdDesc::Read(), CIccIO::Read32(), CIccIO::Seek(), sig, icPositionNumber::size, and CIccIO::Tell().

Referenced by ParseMem().

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

◆ Validate()

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

Name: CIccTagProfileSequenceId::Validate.

Purpose:

Args:

Return:

Reimplemented from CIccTag.

Definition at line 614 of file IccTagProfSeqId.cpp.

616{
617 icValidateStatus rv = CIccTag::Validate(sigPath, sReport, pProfile);
618
619 CIccInfo Info;
620 std::string sSigName = Info.GetSigPathName(sigPath);
621
622 CIccProfileIdDescList::iterator i;
623
624 for (i=m_list->begin(); i!=m_list->end(); i++) {
625 rv = icMaxStatus(rv, i->Validate(sigPath+icGetSigPath(GetType()), sReport, pProfile));
626 }
627
628 return rv;
629}
icValidateStatus
Definition IccDefs.h:118
icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Name: icMaxStatus.
Definition IccUtil.cpp:244
std::string icGetSigPath(icUInt32Number nSig)
Definition IccUtil.cpp:1191
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.
virtual icTagTypeSignature GetType() const
Function: GetType()

References CIccInfo::GetSigPathName(), GetType(), icGetSigPath(), icMaxStatus(), m_list, and CIccTag::Validate().

+ Here is the call graph for this function:

◆ Write()

bool CIccTagProfileSequenceId::Write ( CIccIO * pIO)
virtual

Name: CIccTagProfileSequenceId::Write.

Purpose:

Args:

Return:

Reimplemented from CIccTag.

Definition at line 542 of file IccTagProfSeqId.cpp.

543{
545
546 if (!pIO)
547 return false;
548
549 icUInt32Number tagStart = pIO->Tell();
550
551 if (!pIO->Write32(&sig))
552 return false;
553
554 if (!pIO->Write32(&m_nReserved))
555 return false;
556
557 icUInt32Number i, count = (icUInt32Number)m_list->size();
558
559 pIO->Write32(&count);
560
561 icPositionNumber *pos = new icPositionNumber[count];
562 if (!pos)
563 return false;
564
565 icUInt32Number dirpos = pIO->Tell();
566
567 //Write Unintialized TagDir
568 for (i=0; i<count; i++) {
569 pos[i].offset = 0;
570 pos[i].size = 0;
571 pIO->Write32(&pos[i].offset);
572 pIO->Write32(&pos[i].size);
573 }
574
575 CIccProfileIdDescList::iterator j;
576
577 //Write Tags
578 for (i=0, j=m_list->begin(); j!= m_list->end(); i++, j++) {
579 pos[i].offset = pIO->Tell();
580
581 j->Write(pIO);
582 pos[i].size = pIO->Tell() - pos[i].offset;
583 pos[i].offset -= tagStart;
584
585 pIO->Align32();
586 }
587
588 icUInt32Number endpos = pIO->Tell();
589
590 pIO->Seek(dirpos, icSeekSet);
591
592 //Write TagDir with offsets and sizes
593 for (i=0; i<count; i++) {
594 pIO->Write32(&pos[i].offset);
595 pIO->Write32(&pos[i].size);
596 }
597
598 pIO->Seek(endpos, icSeekSet);
599
600 return true;
601}
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
icUInt32Number offset
icUInt32Number size

References CIccIO::Align32(), GetType(), icSeekSet, m_list, CIccTag::m_nReserved, icPositionNumber::offset, CIccIO::Seek(), sig, icPositionNumber::size, CIccIO::Tell(), and CIccIO::Write32().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_list


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