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

#include <IccTagBasic.h>

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

Public Member Functions

 CIccTagResponseCurveSet16 ()
 
 CIccTagResponseCurveSet16 (const CIccTagResponseCurveSet16 &ITRCS)
 
virtual ~CIccTagResponseCurveSet16 ()
 
virtual void Describe (std::string &sDescription, int nVerboseness)
 
virtual void DetachIO ()
 
virtual const icCharGetClassName () const
 
virtual IIccExtensionTagGetExtension ()
 
CIccResponseCurveStructGetFirstCurves ()
 
CIccResponseCurveStructGetNextCurves ()
 
icUInt16Number GetNumChannels () const
 
icUInt16Number GetNumResponseCurveTypes () const
 
CIccResponseCurveStructGetResponseCurves (icMeasurementUnitSig sig)
 
virtual icArraySignature GetTagArrayType () const
 
virtual icStructSignature GetTagStructType () const
 
virtual icTagTypeSignature GetType () const
 
virtual bool IsArrayType ()
 
virtual bool IsMBBType ()
 
virtual bool IsNumArrayType () const
 
virtual bool IsSupported ()
 
virtual CIccTagNewCopy () const
 
CIccResponseCurveStructNewResponseCurves (icMeasurementUnitSig sig)
 
CIccTagResponseCurveSet16operator= (const CIccTagResponseCurveSet16 &RespCurveSet16Tag)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO)
 
virtual bool Read (icUInt32Number size, CIccIO *pIO, CIccProfile *pProfile)
 
virtual bool ReadAll ()
 
void SetNumChannels (icUInt16Number nChannels)
 
virtual icValidateStatus Validate (std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
 
virtual bool Write (CIccIO *pIO)
 

Static Public Member Functions

static CIccTagCreate (icTagTypeSignature sig)
 

Data Fields

icUInt32Number m_nReserved
 

Protected Attributes

CIccResponseCurveSetIterm_Curve
 
icUInt16Number m_nChannels
 
CIccResponseCurveSetm_ResponseCurves
 

Detailed Description

Class: CIccTagResponseCurveSet16

Purpose: The responseCurveSet16 Tag type

Constructor & Destructor Documentation

◆ CIccTagResponseCurveSet16() [1/2]

CIccTagResponseCurveSet16::CIccTagResponseCurveSet16 ( )

Name: CIccTagResponseCurveSet16::CIccTagResponseCurveSet16

Purpose: Constructor

10130{
10131 m_nChannels = 0;
10132
10135 m_Curve->inited = false;
10136}
std::list< CIccResponseCurveStruct > CIccResponseCurveSet
Definition IccTagBasic.h:1600
bool inited
Definition IccTagBasic.h:1605
Definition IccTagBasic.h:1603
CIccResponseCurveSet * m_ResponseCurves
Definition IccTagBasic.h:1646
CIccResponseCurveSetIter * m_Curve
Definition IccTagBasic.h:1648
icUInt16Number m_nChannels
Definition IccTagBasic.h:1647

References CIccResponseCurveSetIter::inited, m_Curve, m_nChannels, and m_ResponseCurves.

◆ CIccTagResponseCurveSet16() [2/2]

CIccTagResponseCurveSet16::CIccTagResponseCurveSet16 ( const CIccTagResponseCurveSet16 ITRCS)

Name: CIccTagResponseCurveSet16::CIccTagResponseCurveSet16

Purpose: Copy Constructor

Args: ITRCS = The CIccTagResponseCurveSet16 object to be copied

10150{
10151 m_nChannels = ITRCS.m_nChannels;
10155 *m_Curve = *ITRCS.m_Curve;
10156}

References m_Curve, m_nChannels, and m_ResponseCurves.

Referenced by NewCopy().

+ Here is the caller graph for this function:

◆ ~CIccTagResponseCurveSet16()

CIccTagResponseCurveSet16::~CIccTagResponseCurveSet16 ( )
virtual

Name: CIccTagResponseCurveSet16::~CIccTagResponseCurveSet16

Purpose: Destructor

10194{
10195 if (!m_ResponseCurves->empty())
10196 m_ResponseCurves->clear();
10197
10198 delete m_ResponseCurves;
10199 delete m_Curve;
10200}

References m_Curve, and m_ResponseCurves.

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

10357{
10358 CIccResponseCurveSet::iterator i;
10359 icChar buf[128];
10360
10361 sprintf(buf, "Number of Channels: %u\n", m_nChannels);
10362 sDescription += buf;
10363
10364 sprintf(buf, "Number of Measurement Types used: %u\n", (icUInt32Number)m_ResponseCurves->size());
10365 sDescription += buf;
10366
10367 int count = 0;
10368 for (i=m_ResponseCurves->begin(); i!=m_ResponseCurves->end(); i++, count++) {
10369 sDescription += "\n";
10370
10371 sprintf(buf, "Response Curve for measurement type [%u] follows:\n", count+1);
10372 sDescription += buf;
10373
10374 i->Describe(sDescription, nVerboseness);
10375 }
10376}
unsigned long icUInt32Number
Definition icProfileHeader.h:262
char icChar
Definition IccDefs.h:110

References CIccResponseCurveStruct::Describe(), m_nChannels, and m_ResponseCurves.

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

◆ GetClassName()

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

Reimplemented from CIccTag.

Reimplemented in CIccTagXmlResponseCurveSet16.

1627{ return "CIccTagResponseCurveSet16"; }

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

◆ GetFirstCurves()

CIccResponseCurveStruct * CIccTagResponseCurveSet16::GetFirstCurves ( )

Name: CIccTagResponseCurveSet16::GetFirstCurves

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

10465{
10466 if (!m_Curve)
10467 return NULL;
10468
10469 m_Curve->item = m_ResponseCurves->begin();
10470 if (m_Curve->item == m_ResponseCurves->end()) {
10471 m_Curve->inited = false;
10472 return NULL;
10473 }
10474 m_Curve->inited = true;
10475 return m_Curve->item->GetThis();
10476}
CIccResponseCurveSet::iterator item
Definition IccTagBasic.h:1606

References CIccResponseCurveStruct::GetThis(), CIccResponseCurveSetIter::inited, CIccResponseCurveSetIter::item, m_Curve, and m_ResponseCurves.

Referenced by CIccTagXmlResponseCurveSet16::ToXml().

+ Here is the call graph for this function:
+ Here is the caller 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.

10489{
10490 if (!m_Curve || !m_Curve->inited)
10491 return NULL;
10492
10493 m_Curve->item++;
10494 if (m_Curve->item==m_ResponseCurves->end()) {
10495 m_Curve->inited = false;
10496 return NULL;
10497 }
10498 return m_Curve->item->GetThis();
10499}

References CIccResponseCurveStruct::GetThis(), CIccResponseCurveSetIter::inited, CIccResponseCurveSetIter::item, m_Curve, and m_ResponseCurves.

Referenced by CIccTagXmlResponseCurveSet16::ToXml().

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

◆ GetNumChannels()

icUInt16Number CIccTagResponseCurveSet16::GetNumChannels ( ) const
inline
1634{return m_nChannels;}

References m_nChannels.

◆ GetNumResponseCurveTypes()

icUInt16Number CIccTagResponseCurveSet16::GetNumResponseCurveTypes ( ) const

Name: CIccTagResponseCurveSet16::GetNumResponseCurveTypes

Purpose: Get the number of response curve types.

10511{
10512 return(icUInt16Number) m_ResponseCurves->size();
10513}
unsigned short icUInt16Number
Definition icProfileHeader.h:256

References m_ResponseCurves.

Referenced by Validate().

+ Here is the caller graph for this function:

◆ 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

10441{
10442 if (!m_nChannels)
10443 return NULL;
10444
10445 CIccResponseCurveSet::iterator i;
10446
10447 for (i=m_ResponseCurves->begin(); i!=m_ResponseCurves->end(); i++) {
10448 if (i->GetMeasurementType() == sig)
10449 return (i->GetThis());
10450 }
10451
10452 return NULL;
10453}

References CIccResponseCurveStruct::GetMeasurementType(), CIccResponseCurveStruct::GetThis(), m_nChannels, and m_ResponseCurves.

Referenced by NewResponseCurves().

+ Here is the call graph for this function:
+ 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()

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.

@ icSigResponseCurveSet16Type
Definition icProfileHeader.h:555

References icSigResponseCurveSet16Type.

Referenced by Write().

+ Here is the caller graph for this function:

◆ IsArrayType()

virtual bool CIccTag::IsArrayType ( )
inlinevirtualinherited

Reimplemented in CIccTagXYZ, CIccTagChromaticity, CIccTagSparseMatrixArray, CIccTagFixedNum< T, Tsig >, CIccTagNum< T, Tsig >, CIccTagFloatNum< T, Tsig >, and CIccTagData.

135{ return false; }

Referenced by MyTagDialog::MyTagDialog(), and DumpTag().

+ Here is the caller graph for this function:

◆ 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 CIccTag::IsNumArrayType ( ) const
inlinevirtualinherited

Reimplemented in CIccTagSparseMatrixArray, CIccTagFixedNum< T, Tsig >, CIccTagNum< T, Tsig >, and CIccTagFloatNum< T, Tsig >.

137{ return false;} //If true then CIccTag can be cast as a CIccTagNumArray

Referenced by CIccArrayNamedColor::FindDeviceColor(), CIccArrayNamedColor::FindPcsColor(), CIccArrayNamedColor::FindSpectralColor(), CIccTagStruct::GetElemNumberValue(), CIccStructNamedColor::GetNumArray(), CIccMpeXmlTintArray::ParseXml(), and CIccMpeTintArray::Read().

+ Here is the caller graph for this function:

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

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.

1623{return new CIccTagResponseCurveSet16(*this);}
CIccTagResponseCurveSet16()
Definition IccTagBasic.cpp:10129

References CIccTagResponseCurveSet16().

+ Here is the call graph for this function:

◆ 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

10411{
10412 if (!m_nChannels)
10413 return NULL;
10414
10415 CIccResponseCurveStruct *pResponseCurveStruct;
10416 pResponseCurveStruct = GetResponseCurves(sig);
10417
10418 if (pResponseCurveStruct)
10419 return pResponseCurveStruct;
10420
10423 m_ResponseCurves->push_back(entry);
10424 m_Curve->inited = false;
10425
10426 return GetResponseCurves(sig);
10427}
Definition IccTagBasic.h:1562
CIccResponseCurveStruct * GetResponseCurves(icMeasurementUnitSig sig)
Definition IccTagBasic.cpp:10440

References CIccResponseCurveStruct::CIccResponseCurveStruct(), GetResponseCurves(), CIccResponseCurveSetIter::inited, m_Curve, m_nChannels, m_ResponseCurves, and CIccResponseCurveStruct::operator=().

+ Here is the call graph for this function:

◆ operator=()

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

Name: CIccTagResponseCurveSet16::operator=

Purpose: Copy Operator

Args: RespCurveSet16Tag = The CIccTagResponseCurveSet16 object to be copied

10170{
10171 if (&RespCurveSet16Tag == this)
10172 return *this;
10173
10174 if (!m_ResponseCurves->empty())
10175 m_ResponseCurves->clear();
10176
10177 m_nChannels = RespCurveSet16Tag.m_nChannels;
10178 *m_ResponseCurves = *RespCurveSet16Tag.m_ResponseCurves;
10179 *m_Curve = *RespCurveSet16Tag.m_Curve;
10180
10181 return *this;
10182}

References m_Curve, m_nChannels, and m_ResponseCurves.

◆ Read() [1/2]

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.

10218{
10220
10221 icUInt32Number startPos = pIO->Tell();
10222
10223 unsigned long headerSize = sizeof(icTagTypeSignature) +
10224 sizeof(icUInt32Number) +
10225 sizeof(icUInt16Number) * 2;
10226 if (headerSize > size)
10227 return false;
10228
10229 if (!pIO) {
10230 return false;
10231 }
10232
10233 if (!pIO->Read32(&sig) ||
10234 !pIO->Read32(&m_nReserved))
10235 return false;
10236
10237 icUInt16Number nCountMeasmntTypes;
10238
10239 if (!pIO->Read16(&m_nChannels) ||
10240 !pIO->Read16(&nCountMeasmntTypes))
10241 return false;
10242
10243 if ((icUInt32Number)nCountMeasmntTypes * sizeof(icUInt32Number) > size - headerSize)
10244 return false;
10245
10246 icUInt32Number* nOffset = new icUInt32Number[nCountMeasmntTypes];
10247
10248 if (pIO->Read32(&nOffset[0], nCountMeasmntTypes) != nCountMeasmntTypes) {
10249 delete[] nOffset;
10250 return false;
10251 }
10252
10254
10255 for (icUInt16Number i=0; i<nCountMeasmntTypes; i++) {
10256 if (nOffset[i] + 4 > size) {
10257 delete[] nOffset;
10258 return false;
10259 }
10260 pIO->Seek(startPos + nOffset[i], icSeekSet);
10262 if (!entry.Read(size-nOffset[i], pIO)) {
10263 delete[] nOffset;
10264 return false;
10265 }
10266
10267 m_ResponseCurves->push_back(entry);
10268 }
10269 delete[] nOffset;
10270
10271
10272 m_Curve->inited = false;
10273
10274 return true;
10275}
icTagTypeSignature
Definition icProfileHeader.h:526
@ icSeekSet
Definition IccIO.h:83
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
icUInt32Number m_nReserved
Definition IccTagBasic.h:235
bool Read(icUInt32Number size, CIccIO *pIO)
Definition IccTagBasic.cpp:9907

References CIccResponseCurveStruct::CIccResponseCurveStruct(), icSeekSet, CIccResponseCurveSetIter::inited, m_Curve, m_nChannels, CIccTag::m_nReserved, m_ResponseCurves, CIccResponseCurveStruct::operator=(), CIccResponseCurveStruct::Read(), CIccIO::Read16(), CIccIO::Read32(), CIccIO::Seek(), and CIccIO::Tell().

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

◆ 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

10391{
10392 m_nChannels = nChannels;
10393
10394 if (!m_ResponseCurves->empty())
10395 m_ResponseCurves->clear();
10396}

References m_nChannels, and m_ResponseCurves.

Referenced by CIccTagXmlResponseCurveSet16::ParseXml().

+ Here is the caller graph for this function:

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

10531{
10532 icValidateStatus rv = CIccTag::Validate(sigPath, sReport, pProfile);
10533
10534 CIccInfo Info;
10535 std::string sSigPathName = Info.GetSigPathName(sigPath);
10536
10537 if (!pProfile) {
10538 sReport += icMsgValidateWarning;
10539 sReport += sSigPathName;
10540 sReport += " - Tag validation incomplete: Pointer to profile unavailable.\n";
10542 return rv;
10543 }
10544
10545 if (m_nChannels!=icGetSpaceSamples(pProfile->m_Header.colorSpace)) {
10546 sReport += icMsgValidateWarning;
10547 sReport += sSigPathName;
10548 sReport += " - Incorrect number of channels.\n";
10549 }
10550
10551 if (!GetNumResponseCurveTypes()) {
10552 sReport += icMsgValidateWarning;
10553 sReport += sSigPathName;
10554 sReport += " - Empty Tag!.\n";
10556 }
10557 else {
10558 CIccResponseCurveSet::iterator i;
10559 for (i=m_ResponseCurves->begin(); i!=m_ResponseCurves->end(); i++) {
10560 rv = icMaxStatus(rv, i->Validate(sReport));
10561 }
10562 }
10563
10564 return rv;
10565}
icValidateStatus
Definition IccDefs.h:119
@ icValidateWarning
Definition IccDefs.h:121
ICCPROFLIB_API icUInt32Number icGetSpaceSamples(icColorSpaceSignature sig)
Definition IccUtil.cpp:1303
ICCPROFLIB_API const char * icMsgValidateWarning
Definition IccUtil.cpp:90
ICCPROFLIB_API icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Definition IccUtil.cpp:244
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
icUInt16Number GetNumResponseCurveTypes() const
Definition IccTagBasic.cpp:10510

References icHeader::colorSpace, GetNumResponseCurveTypes(), CIccInfo::GetSigPathName(), icGetSpaceSamples(), icMaxStatus(), icMsgValidateWarning, icValidateWarning, m_nChannels, m_ResponseCurves, CIccResponseCurveStruct::Validate(), 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.

10292{
10294 icUInt16Number nCountMeasmntTypes = (icUInt16Number)m_ResponseCurves->size();
10295
10296 if (!pIO) {
10297 return false;
10298 }
10299
10300 icUInt32Number startPos = pIO->GetLength();
10301
10302 if (!pIO->Write32(&sig) ||
10303 !pIO->Write32(&m_nReserved))
10304 return false;
10305
10306
10307 if (!pIO->Write16(&m_nChannels) ||
10308 !pIO->Write16(&nCountMeasmntTypes))
10309 return false;
10310
10311 icUInt32Number offsetPos = pIO->GetLength();
10312 icUInt32Number* nOffset = new icUInt32Number[nCountMeasmntTypes];
10313
10314
10315 int j;
10316 for (j=0; j<nCountMeasmntTypes; j++) {
10317 nOffset[j] = 0;
10318 if (!pIO->Write32(&nOffset[j]))
10319 return false;
10320 }
10321
10322 CIccResponseCurveSet::iterator i;
10323
10324 for (i=m_ResponseCurves->begin(), j=0; i!=m_ResponseCurves->end(); i++, j++) {
10325 nOffset[j] = pIO->GetLength() - startPos;
10326 if (!i->Write(pIO))
10327 return false;
10328 }
10329
10330 icUInt32Number curPOs = pIO->GetLength();
10331
10332 pIO->Seek(offsetPos,icSeekSet);
10333
10334 for (j=0; j<nCountMeasmntTypes; j++) {
10335 if (!pIO->Write32(&nOffset[j]))
10336 return false;
10337 }
10338
10339 pIO->Seek(curPOs,icSeekSet);
10340 delete [] nOffset;
10341
10342 return true;
10343}
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
Definition IccTagBasic.h:1626

References CIccIO::GetLength(), GetType(), icSeekSet, m_nChannels, CIccTag::m_nReserved, m_ResponseCurves, CIccIO::Seek(), CIccResponseCurveStruct::Write(), CIccIO::Write16(), and CIccIO::Write32().

+ Here is the call graph for this function:

Field Documentation

◆ m_Curve

◆ m_nChannels

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


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