Hoyt's FORK of DemoIccMAX 2.1.17.hoyt
Documentation for Hoyt's FORK of DemoIccMAX
Loading...
Searching...
No Matches
IccTagBasic.h
Go to the documentation of this file.
1/** @file
2 File: IccTagBasic.h
3
4 Contains: Header for implementation of the CIccTag class
5 and inherited classes
6
7 Version: V1
8
9 Copyright: � see ICC Software License
10*/
11
12/*
13 * The ICC Software License, Version 0.2
14 *
15 *
16 * Copyright (c) 2003-2012 The International Color Consortium. All rights
17 * reserved.
18 *
19 * Redistribution and use in source and binary forms, with or without
20 * modification, are permitted provided that the following conditions
21 * are met:
22 *
23 * 1. Redistributions of source code must retain the above copyright
24 * notice, this list of conditions and the following disclaimer.
25 *
26 * 2. Redistributions in binary form must reproduce the above copyright
27 * notice, this list of conditions and the following disclaimer in
28 * the documentation and/or other materials provided with the
29 * distribution.
30 *
31 * 3. In the absence of prior written permission, the names "ICC" and "The
32 * International Color Consortium" must not be used to imply that the
33 * ICC organization endorses or promotes products derived from this
34 * software.
35 *
36 *
37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40 * DISCLAIMED. IN NO EVENT SHALL THE INTERNATIONAL COLOR CONSORTIUM OR
41 * ITS CONTRIBUTING MEMBERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48 * SUCH DAMAGE.
49 * ====================================================================
50 *
51 * This software consists of voluntary contributions made by many
52 * individuals on behalf of the The International Color Consortium.
53 *
54 *
55 * Membership in the ICC is encouraged when this software is used for
56 * commercial purposes.
57 *
58 *
59 * For more information on The International Color Consortium, please
60 * see <http://www.color.org/>.
61 *
62 *
63 */
64
65//////////////////////////////////////////////////////////////////////
66// HISTORY:
67//
68// -Initial implementation by Max Derhak 5-15-2003
69//
70//////////////////////////////////////////////////////////////////////
71
72#if !defined(_ICCTAGBASIC_H)
73#define _ICCTAGBASIC_H
74
75#include <list>
76#include <string>
77#include "IccDefs.h"
78
79#ifdef USEREFICCMAXNAMESPACE
80namespace refIccMAX {
81#endif
82
83class CIccIO;
84
85class ICCPROFLIB_API CIccProfile;
86
88
90{
91public:
92 virtual const char *GetExtClassName() const =0;
93 virtual const char *GetExtDerivedClassName() const =0;
94};
95
96/**
97 ***********************************************************************
98 * Class: CIccTag
99 *
100 * Purpose:
101 * CIccTag is the base class that all Icc Tags are derived
102 * from. It defines basic tag functionality, and provides
103 * a static function that acts as an object construction
104 * factory.
105 ***********************************************************************
106 */
108{
109public:
110 CIccTag();
111
112 /**
113 * Function: NewCopy(sDescription)
114 * Each derived tag will implement it's own NewCopy() function.
115 *
116 * Parameter(s):
117 * none
118 *
119 * Returns a new CIccTag object that is a copy of this object.
120 */
121 virtual CIccTag* NewCopy() const {return new CIccTag;}
122
123 virtual ~CIccTag();
124
125 /**
126 * Function: GetType()
127 *
128 * Purpose: Get Tag Type.
129 * Each derived tag will implement it's own GetType() function.
130 */
131 virtual icTagTypeSignature GetType() const { return icMaxEnumType; }
134
135 virtual bool IsArrayType() { return false; }
136 virtual bool IsMBBType() { return false; } //If true then CIccTag can be cast as an CIccMBB
137 virtual bool IsNumArrayType() const { return false;} //If true then CIccTag can be cast as a CIccTagNumArray
138
139 virtual const icChar *GetClassName() const { return "CIccTag"; }
140
141 static CIccTag* Create(icTagTypeSignature sig);
142
143 virtual IIccExtensionTag* GetExtension() {return NULL;}
144
145 /**
146 * Function: IsSupported(size, pIO) - Check if tag fully
147 * supported for apply purposes. By Default inherited
148 * classes are supported. Unknown tag types are not
149 * supported.
150 *
151 * Returns true if tag type is supported.
152 */
153 virtual bool IsSupported() { return true; }
154
155 /**
156 * Function: Read(size, pIO) - Read tag from file.
157 * Each derived tag will implement it's own Read() function.
158 *
159 * Parameter(s):
160 * size - number of bytes in tag including the type signature.
161 * pIO - IO object used to read in tag. The IO object should
162 * already be initialized to point to the begining of
163 * the tag.
164 *
165 * Returns true if Read is successful.
166 */
167 virtual bool Read(icUInt32Number size, CIccIO *pIO) { return false; }
168
169 /**
170 * Function: ReadAll() - Read All sub data for tag from file.
171 * Called by CIccProfile::ReadAll() to read all sub data for tag
172 *
173 * Returns true if ReadAll is successful.
174 */
175 virtual bool ReadAll() { return true; }
176
177 /**
178 * Function: ReadAll() - Read All sub data for tag from file.
179 * Called by CIccProfile::ReadAll() to read all sub data for tag
180 *
181 * Returns true if ReadAll is successful.
182 */
183 virtual void DetachIO() {}
184
185 /**
186 * Function: Read(size, pIO) - Read tag from file.
187 * Each derived tag will implement it's own Read() function.
188 *
189 * Parameter(s):
190 * size - number of bytes in tag including the type signature.
191 * pIO - IO object used to read in tag. The IO object should
192 * already be initialized to point to the begining of
193 * the tag.
194 *
195 * Returns true if Read is successful.
196 */
197 virtual bool Read(icUInt32Number size, CIccIO *pIO, CIccProfile *pProfile) { return Read(size, pIO); }
198
199
200 /**
201 * Function: Write(pIO)
202 * Each derived tag will implement it's own Write() function.
203 *
204 * Parameter(s):
205 * pIO - IO object used to write a tag. The IO object should
206 * already be initialized to point to the begining of
207 * the tag.
208 *
209 * Returns true if Write is successful.
210 */
211 virtual bool Write(CIccIO *pIO) { return false; }
212
213 /**
214 * Function: Describe(sDescription)
215 * Each derived tag will implement it's own Describe() function.
216 *
217 * Parameter(s):
218 * sDescription - A string to put the tag's description into.
219* * verbosenss - integer value. Default=0. The larger the value, the more verbose the output.
220 */
221 virtual void Describe(std::string &sDescription, int nVerboseness=0) { sDescription.clear(); }
222
223 /**
224 ******************************************************************************
225 * Function: Validate
226 * Each derived tag will implement it's own IsValid() function
227 *
228 * Parameter(s):
229 * sig - signature of tag being validated,
230 * sDescription - A string to put tag validation report.
231 */
232 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
233
234 //All tags start with a reserved value. Allocate a place to put it.
236};
237
238
239/**
240****************************************************************************
241* Class: IccTagUnknown
242*
243* Purpose: The general purpose I don't know tag.
244*****************************************************************************
245*/
247{
248public:
250 CIccTagUnknown(const CIccTagUnknown &ITU);
251 CIccTagUnknown &operator=(const CIccTagUnknown &UnknownTag);
252 virtual CIccTag* NewCopy() const {return new CIccTagUnknown(*this);}
253 virtual ~CIccTagUnknown();
254
255 virtual bool IsSupported() { return false; }
256
257 virtual icTagTypeSignature GetType() const { return m_nType; }
258 virtual const icChar *GetClassName() const { return "CIccTagUnknown"; }
259
260 virtual icUInt32Number GetSize() const { return m_nSize; }
261 virtual const icUInt8Number* GetData() const { return m_pData; }
262
263 virtual bool Read(icUInt32Number size, CIccIO *pIO);
264 virtual bool Write(CIccIO *pIO);
265
266 virtual void Describe(std::string &sDescription, int nVerboseness);
267
268
269protected:
273};
274
275
276/**
277****************************************************************************
278* Class: CIccTagText()
279*
280* Purpose: The textType ICC tag
281*****************************************************************************
282*/
284{
285public:
286 CIccTagText();
287 CIccTagText(const CIccTagText &ITT);
288 CIccTagText &operator=(const CIccTagText &TextTag);
289 virtual CIccTag* NewCopy() const {return new CIccTagText(*this);}
290 virtual ~CIccTagText();
291
292 virtual icTagTypeSignature GetType() const { return icSigTextType; }
293 virtual const icChar *GetClassName() const { return "CIccTagText"; }
294
295 virtual bool Read(icUInt32Number size, CIccIO *pIO);
296 virtual bool Write(CIccIO *pIO);
297
298 virtual void Describe(std::string &sDescription, int nVerboseness);
299
300 const icChar *GetText() const { return m_szText; }
301 void SetText(const icChar *szText);
302 const icChar *operator=(const icChar *szText);
303
304 icChar *GetBuffer(icUInt32Number nSize);
305 void Release();
306 icUInt32Number Capacity() const { return m_nBufSize; }
307 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
308
309protected:
312};
313
314/**
315****************************************************************************
316* Class: CIccTagUtf8Text()
317*
318* Purpose: The utf8TextType ICC tag
319*****************************************************************************
320*/
322{
323public:
326 CIccTagUtf8Text &operator=(const CIccTagUtf8Text &TextTag);
327 virtual CIccTag* NewCopy() const {return new CIccTagUtf8Text(*this);}
328 virtual ~CIccTagUtf8Text();
329
330 virtual icTagTypeSignature GetType() const { return icSigUtf8TextType; }
331 virtual const icChar *GetClassName() const { return "CIccUtf8TagText"; }
332
333 virtual bool Read(icUInt32Number size, CIccIO *pIO);
334 virtual bool Write(CIccIO *pIO);
335
336 virtual void Describe(std::string &sDescription, int nVerboseness);
337
338 const icUChar *GetText() const { return m_szText; }
339
340 void SetText(const icUChar16 *szText);
341 void SetText(const icUChar *szText);
342 void SetText(const icChar *szText) { SetText((icUChar*)szText); }
343
344 const icUChar *operator=(const icUChar *szText);
345 const icChar *operator=(const icChar *szText) { return (const icChar*)operator=((icUChar*)szText); }
346
347 icUChar *GetBuffer(icUInt32Number nSize);
348 void Release();
349 icUInt32Number Capacity() const { return m_nBufSize; }
350 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
351
352protected:
355};
356
357/**
358****************************************************************************
359* Class: CIccTagZipUtf8Text()
360*
361* Purpose: The zipUtf8TextType ICC tag maintains compressed text data.
362* Calls to GetText will uncompress, and SetText will compress. These
363* functions may fail if macro ICC_USE_ZLIB is not defined.
364*****************************************************************************
365*/
367{
368public:
370 virtual ~CIccTagZipUtf8Text();
372 CIccTagZipUtf8Text &operator=(const CIccTagZipUtf8Text &TextTag);
373 virtual CIccTag* NewCopy() const {return new CIccTagZipUtf8Text(*this);}
374
376 virtual const icChar *GetClassName() const { return "CIccZipUtf8TagText"; }
377
378 /* GetText() may fail if ICC_USE_ZLIB is not defined*/
379 virtual bool GetText(std::string &str) const;
380
381 /* SetText() may fail if ICC_USE_ZLIB is not defined*/
382 bool SetText(const icUChar16 *szText);
383 virtual bool SetText(const icUChar *szText);
384 bool SetText(const icChar *szText) { return SetText((icUChar*)szText); }
385
386 /*Note: operator= is not supported because ZLIB support might not be enabled*/
387
388 virtual bool Read(icUInt32Number size, CIccIO *pIO);
389 virtual bool Write(CIccIO *pIO);
390
391 virtual void Describe(std::string &sDescription, int nVerboseness);
392
393 /* Get access to raw zip compression buffer */
394 icUChar *AllocBuffer(icUInt32Number nSize);
395 icUChar *GetBuffer() const { return m_pZipBuf; }
396 icUInt32Number BufferSize() const { return m_nBufSize; }
397 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
398
399protected:
402};
403
404
405/**
406****************************************************************************
407* Class: CIccTagZipXml()
408*
409* Purpose: The zipXMLType ICC tag
410*****************************************************************************
411*/
413{
414public:
416 virtual ~CIccTagZipXml() {}
418 CIccTagZipXml &operator=(const CIccTagZipXml &TextTag) {CIccTagZipUtf8Text::operator=(TextTag); return *this;}
419 virtual CIccTag* NewCopy() const {return new CIccTagZipXml(*this);}
420
421 virtual icTagTypeSignature GetType() const { return icSigZipXmlType; }
422 virtual const icChar *GetClassName() const { return "CIccZipXML"; }
423};
424
425
426/**
427****************************************************************************
428* Class: CIccTagUtf16Text()
429*
430* Purpose: The utf8TextType ICC tag
431*****************************************************************************
432*/
434{
435public:
438 CIccTagUtf16Text &operator=(const CIccTagUtf16Text &TextTag);
439 virtual CIccTag* NewCopy() const {return new CIccTagUtf16Text(*this);}
440 virtual ~CIccTagUtf16Text();
441
443 virtual const icChar *GetClassName() const { return "CIccUtf16TagText"; }
444
445 virtual bool Read(icUInt32Number size, CIccIO *pIO);
446 virtual bool Write(CIccIO *pIO);
447
448 virtual void Describe(std::string &sDescription, int nVerboseness);
449
450 const icChar *GetText(std::string &bufStr) const;
451 const icUChar16 *GetText() const { return m_szText; }
452
453 void SetText(const icUChar16 *szText);
454 void SetText(const icUChar *szText);
455 void SetText(const icChar *szText) { SetText((icUChar*)szText); }
456
457 icUInt32Number GetLength() const;
458
459 const icUChar16 *operator=(const icUChar16 *szText);
460
461 icUChar16 *GetBuffer(icUInt32Number nSize);
462 void Release();
463 icUInt32Number Capacity() const { return m_nBufSize; }
464 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
465
466protected:
467
470};
471
472
473/**
474****************************************************************************
475* Class: CIccTagTextDescription()
476*
477* Purpose: The textType ICC tag
478****************************************************************************
479*/
481{
482public:
485 CIccTagTextDescription &operator=(const CIccTagTextDescription &TextDescTag);
486 virtual CIccTag* NewCopy() const {return new CIccTagTextDescription(*this);}
487 virtual ~CIccTagTextDescription();
488
490 virtual const icChar *GetClassName() const { return "CIccTagTextDescription"; }
491
492 virtual bool Read(icUInt32Number size, CIccIO *pIO);
493 virtual bool Write(CIccIO *pIO);
494
495 virtual void Describe(std::string &sDescription, int nVerboseness);
496
497 const icChar *GetText() const { return m_szText; }
498 void SetText(const icChar *szText);
499 const icChar *operator=(const icChar *szText);
500
501 icChar *GetBuffer(icUInt32Number nSize);
502 void Release();
503 icUInt32Number Capacity() const { return m_nASCIISize; }
504
505 icUInt16Number *GetUnicodeBuffer(icUInt32Number nSize);
506 void ReleaseUnicode();
507 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
508
509
510protected:
513
517
518 icUInt8Number m_szScriptText[67];
521
523};
524
525//The icGetTagText() utility function will extract text information from a
526//tag if it is one of the above text tag types. It returns false if it the
527//tag is not a text tag or it cannot extract the text from the tag.
528ICCPROFLIB_API bool icGetTagText(const CIccTag *pTag, std::string &text);
529
530/**
531****************************************************************************
532* Class: CIccTagSignature
533*
534* Purpose: The signatureType tag
535****************************************************************************
536*/
538{
539public:
542 CIccTagSignature &operator=(const CIccTagSignature &SignatureTag);
543 virtual CIccTag* NewCopy() const {return new CIccTagSignature(*this);}
544 virtual ~CIccTagSignature();
545
547 virtual const icChar *GetClassName() const { return "CIccTagSignature"; }
548
549 virtual void Describe(std::string &sDescription, int nVerboseness);
550
551 virtual bool Read(icUInt32Number size, CIccIO *pIO);
552 virtual bool Write(CIccIO *pIO);
553
554 icUInt32Number GetValue() const { return m_nSig; }
555 void SetValue(icUInt32Number sig) { m_nSig = sig; }
556 icUInt32Number operator=(icUInt32Number sig) { SetValue(sig); return m_nSig; }
557 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
558
559protected:
561};
562
563typedef struct
564{
565 icChar rootName[32];
566 icFloatNumber pcsCoords[3];
567 icFloatNumber deviceCoords[icAny];
569
570typedef struct {
573
574/**
575****************************************************************************
576* Class: CIccTagNamedColor2
577*
578* Purpose: the NamedColor2 tag - an array of Named Colors
579****************************************************************************
580*/
582{
583public:
584 CIccTagNamedColor2(int nSize=1, int nDeviceCoords=0);
586 CIccTagNamedColor2 &operator=(const CIccTagNamedColor2 &NamedColor2Tag);
587 virtual CIccTag* NewCopy() const {return new CIccTagNamedColor2(*this);}
588 virtual ~CIccTagNamedColor2();
589
591 virtual const icChar *GetClassName() const { return "CIccTagNamedColor2"; }
592
593 virtual bool UseLegacyPCS() const { return true; } //Treat Lab Encoding differently?
594
595 virtual void Describe(std::string &sDescription, int nVerboseness);
596
597 virtual bool Read(icUInt32Number size, CIccIO *pIO);
598 virtual bool Write(CIccIO *pIO);
599
600 const icChar *GetPrefix() const { return m_szPrefix; }
601 void SetPrefix(const icChar *szPrefix);
602
603 const icChar *GetSufix() const { return m_szSufix; }
604 void SetSufix(const icChar *szSufix);
605
606 icUInt32Number GetVendorFlags() const { return m_nVendorFlags; }
607 void SetVendorFlags(icUInt32Number nVendorFlags) {m_nVendorFlags = nVendorFlags;}
608
609 //The following Find functions return the zero based index of the color
610 //or -1 to indicate that the color was not found.
611 icInt32Number FindColor(const icChar *szColor) const;
612 icInt32Number FindRootColor(const icChar *szRootColor) const;
613 icInt32Number FindDeviceColor(icFloatNumber *pDevColor) const;
614 icInt32Number FindPCSColor(icFloatNumber *pPCS, icFloatNumber dMinDE=1000.0);
615
616 bool InitFindCachedPCSColor();
617 //FindPCSColor returns the zero based index of the color or -1 to indicate that the color was not found.
618 //InitFindPCSColor must be called before FindPCSColor
619 icInt32Number FindCachedPCSColor(icFloatNumber *pPCS, icFloatNumber dMinDE=1000.0) const;
620
621 ///Call ResetPCSCache() if entry values change between calls to FindPCSColor()
622 void ResetPCSCache();
623
624 bool GetColorName(std::string &sColorName, icInt32Number index) const;
625 SIccNamedColorEntry &operator[](icUInt32Number index) const {return *(SIccNamedColorEntry*)((icUInt8Number*)m_NamedColor + index * m_nColorEntrySize);}
626 SIccNamedColorEntry *GetEntry(icUInt32Number index) const {return (SIccNamedColorEntry*)((icUInt8Number*)m_NamedColor + index * m_nColorEntrySize);}
627
628 icUInt32Number GetSize() const { return m_nSize; }
629 icUInt32Number GetDeviceCoords() const {return m_nDeviceCoords;}
630 bool SetSize(icUInt32Number nSize, icInt32Number nDeviceCoords=-1);
631
632 virtual void SetColorSpaces(icColorSpaceSignature csPCS, icColorSpaceSignature csDevice);
633 icColorSpaceSignature GetPCS() const {return m_csPCS;}
634 icColorSpaceSignature GetDeviceSpace() const {return m_csDevice;}
635
636 icFloatNumber NegClip(icFloatNumber v) const;
638
639 void Lab2ToLab4(icFloatNumber *Dst, const icFloatNumber *Src) const;
640 void Lab4ToLab2(icFloatNumber *Dst, const icFloatNumber *Src) const;
641
642 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
643
644protected:
645 icChar m_szPrefix[32];
646 icChar m_szSufix[32];
647
649 SIccNamedLabEntry *m_NamedLab; ///For quick response of repeated FindPCSColor
651
655
658};
659
660/**
661****************************************************************************
662* Class: CIccTagXYZ
663*
664* Purpose: the XYZType tag - an array of XYZ values
665****************************************************************************
666*/
668{
669public:
670 CIccTagXYZ(int nSize=1);
671 CIccTagXYZ(const CIccTagXYZ &ITXYZ);
672 CIccTagXYZ &operator=(const CIccTagXYZ &XYZTag);
673 virtual CIccTag* NewCopy() const {return new CIccTagXYZ(*this);}
674 virtual ~CIccTagXYZ();
675
676 virtual bool IsArrayType() { return m_nSize > 1; }
677
678 virtual icTagTypeSignature GetType() const { return icSigXYZType; }
679 virtual const icChar *GetClassName() const { return "CIccTagXYZ"; }
680
681 virtual void Describe(std::string &sDescription, int nVerboseness);
682
683 virtual bool Read(icUInt32Number size, CIccIO *pIO);
684 virtual bool Write(CIccIO *pIO);
685
686 icXYZNumber &operator[](icUInt32Number index) const {return m_XYZ[index];}
687 icXYZNumber *GetXYZ(icUInt32Number index) {return &m_XYZ[index];}
688 icUInt32Number GetSize() const { return m_nSize; }
689 bool SetSize(icUInt32Number nSize, bool bZeroNew=true);
690 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
691
692protected:
695};
696
697/**
698****************************************************************************
699* Class: CIccTagChromaticity
700*
701* Purpose: the chromaticity tag - xy chromaticity values for each channel
702****************************************************************************
703*/
705{
706public:
707 CIccTagChromaticity(int nSize=3);
709 CIccTagChromaticity &operator=(const CIccTagChromaticity &ChromTag);
710 virtual CIccTag* NewCopy() const {return new CIccTagChromaticity(*this);}
711 virtual ~CIccTagChromaticity();
712
713 virtual bool IsArrayType() { return m_nChannels > 1; }
714
716 virtual const icChar *GetClassName() const { return "CIccTagChromaticity"; }
717
718 virtual void Describe(std::string &sDescription, int nVerboseness);
719
720 virtual bool Read(icUInt32Number size, CIccIO *pIO);
721 virtual bool Write(CIccIO *pIO);
722
723 icChromaticityNumber &operator[](icUInt32Number index) {return m_xy[index];}
724 icChromaticityNumber *Getxy(icUInt32Number index) {return &m_xy[index];}
725 icUInt32Number GetSize() const { return m_nChannels; }
726 bool SetSize(icUInt16Number nSize, bool bZeroNew=true);
727
729
730 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
731
732protected:
735};
736
737
738/**
739****************************************************************************
740* Class: CIccTagCicp
741*
742* Purpose: the cicpType tag - metadata containing ITU-T H.273 fields
743****************************************************************************
744*/
746{
747public:
748 CIccTagCicp();
749 CIccTagCicp(const CIccTagCicp& ITCICP);
750 CIccTagCicp& operator=(const CIccTagCicp& XYZTag);
751 virtual CIccTag* NewCopy() const { return new CIccTagCicp(*this); }
752 virtual ~CIccTagCicp();
753
754 virtual icTagTypeSignature GetType() const { return icSigCicpType; }
755 virtual const icChar* GetClassName() const { return "CIccTagCicp"; }
756
757 virtual void Describe(std::string& sDescription, int nVerboseness);
758
759 virtual bool Read(icUInt32Number size, CIccIO* pIO);
760 virtual bool Write(CIccIO* pIO);
761
762 void GetFields(icUInt8Number &colorPrimaries,
763 icUInt8Number &transferCharacteristics,
764 icUInt8Number &matrixCoefficients,
765 icUInt8Number &videoFullRangeFlag);
766
767 void SetFields(icUInt8Number colorPrimaries,
768 icUInt8Number transferCharacteristics,
769 icUInt8Number matrixCoefficients,
770 icUInt8Number videoFullRangeFlag);
771
772 virtual icValidateStatus Validate(std::string sigPath, std::string& sReport, const CIccProfile* pProfile = NULL) const;
773
774protected:
779};
780
781
782/**
783****************************************************************************
784* Class: CIccTagNumArray
785*
786* Purpose: An Interface for getting icFloatNumber values out of a tag
787* containing a number of values.
788*****************************************************************************
789*/
791{
792public:
793 //GetValues gets the number values available in the array.
794 virtual icUInt32Number GetNumValues() const = 0;
795
796 //GetValues gets a vector of data from the number array as floating point values.
797 virtual bool GetValues(icFloatNumber *DstVector, icUInt32Number nStart=0, icUInt32Number nVectorSize=1) const = 0;
798
799 //The Interpolate function interpolates a vector from a set of vectors in the Array.
800 //The number of vectors in the array is determined by dividing GetSize() by nVectorSize.
801 //The pos value should range from 0.0 to 1.0. The last vector in the array corresponds
802 //to pos=1.0. If the zeroVals paramater is not NULL then the first vector in the array
803 //does not correspond to pos=0.0, and the pos=0.0 value comes from the zeroVals vector.
804 //Otherwise, the first vector in the array corresponds to val=0.0.
805 virtual bool Interpolate(icFloatNumber *DstVector, icFloatNumber pos,
806 icUInt32Number nVectorSize=1, icFloatNumber *zeroVals=NULL) const = 0;
807
808 //ValuePos returns the interpolated position where val occurs in a single dimensional array.
809 //The val value should range from 0.0 to 1.0. If the first entry (entry[0]) in the array
810 //is not zero and the val value is smaller than the first entry, then a zero value will
811 //be assumed to proceed the first entry and the DstPos will be set to a value between -1.0
812 //and 0.0. Otherwise the DstPos value will be set to a value between 0.0 and num entries-1.
813 //If val is less than 0.0 or greater than the last entry the funciton returns false.
814 virtual bool ValuePos(icFloatNumber&DstPos, icFloatNumber val, bool &bNoZero) const = 0;
815
816 virtual bool IsMatrixArray() const = 0;
817
818};
819
820
821/**
822****************************************************************************
823* Class: CIccTagSparseMatrixArray
824*
825* Purpose: A template class for arrays of Fixed point numbers
826*
827* Derived Tags: CIccTagS15Fixed16 and CIccTagU16Fixed16
828*****************************************************************************
829*/
831{
832public:
833 CIccTagSparseMatrixArray(int nNumMatrices=1, int nChannelsPerMatrix=4);
835 CIccTagSparseMatrixArray &operator=(const CIccTagSparseMatrixArray &ITSMA);
836 virtual CIccTag* NewCopy() { return new CIccTagSparseMatrixArray(*this); }
838
839 virtual bool IsArrayType() { return m_nSize > 1; }
840
842 virtual const icChar *GetClassName() const { return "CIccTagChromaticity"; }
843
844 virtual void Describe(std::string &sDescription, int nVerboseness);
845
846 virtual bool Read(icUInt32Number size, CIccIO *pIO);
847 virtual bool Write(CIccIO *pIO);
848
849 /// Returns the number of matrices in the array
850 icUInt32Number GetNumMatrices() const { return m_nSize; }
851 icUInt32Number GetChannelsPerMatrix() const { return m_nChannelsPerMatrix; }
852 icUInt32Number GetBytesPerMatrix() const { return m_nChannelsPerMatrix*sizeof(icFloatNumber); }
853
854 // Reset destroys any existing data and lets you change matrix allocation
855 bool Reset(icUInt32Number nNumMatrices, icUInt16Number nChannelsPerMatrix);
856
857 icSparseMatrixType GetMatrixType() const { return m_nMatrixType; }
858 void SetMatrixType(icSparseMatrixType nType) { m_nMatrixType = nType; }
859
860 // Connects CIccSparseMatrix object to index based matrix in array
861 bool GetSparseMatrix(CIccSparseMatrix &mtx, int nIndex, bool bInitFromData=true);
862
863 virtual bool IsNumArrayType() const { return true; }
864
865 //CIccTagNumArray implementation
866 virtual icUInt32Number GetNumValues() const { return GetNumMatrices(); }
867 virtual bool GetValues(icFloatNumber *DstVector, icUInt32Number nStart=0, icUInt32Number nVectorSize=1) const;
868 virtual bool Interpolate(icFloatNumber *DstVector, icFloatNumber val,
869 icUInt32Number nVectorSize=1, icFloatNumber *zeroVals=NULL) const;
870 virtual bool ValuePos(icFloatNumber&DstPos, icFloatNumber val, bool &bNoZero) const;
871
872 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
873
874 virtual bool IsMatrixArray() const { return true; }
875
876protected:
881
883};
884
885
886/**
887****************************************************************************
888* Class: CIccTagFixedNum
889*
890* Purpose: A template class for arrays of Fixed point numbers
891*
892* Derived Tags: CIccTagS15Fixed16 and CIccTagU16Fixed16
893*****************************************************************************
894*/
895template <class T, icTagTypeSignature Tsig>
897{
898public:
899 CIccTagFixedNum(int nSize=1);
901 CIccTagFixedNum &operator=(const CIccTagFixedNum<T, Tsig> &FixedNumTag);
902 virtual CIccTag* NewCopy() const { return new CIccTagFixedNum<T, Tsig>(*this); }
903 virtual ~CIccTagFixedNum();
904
905 virtual bool IsArrayType() { return m_nSize > 1; }
906
907 virtual icTagTypeSignature GetType() const { return Tsig; }
908 virtual const icChar *GetClassName() const;
909
910 virtual void Describe(std::string &sDescription, int nVerboseness);
911
912 virtual bool Read(icUInt32Number size, CIccIO *pIO);
913 virtual bool Write(CIccIO *pIO);
914
915 T &operator[](icUInt32Number index) {return m_Num[index];}
916
917 /// Returns the size of the data array
918 icUInt32Number GetSize() const { return m_nSize; }
919 bool SetSize(icUInt32Number nSize, bool bZeroNew=true);
920
921 virtual bool IsNumArrayType() const { return true; }
922
923 //CIccTagNumArray implementation
924 virtual icUInt32Number GetNumValues() const { return GetSize(); }
925 virtual bool GetValues(icFloatNumber *DstVector, icUInt32Number nStart=0, icUInt32Number nVectorSize=1) const;
926 virtual bool Interpolate(icFloatNumber *DstVector, icFloatNumber val,
927 icUInt32Number nVectorSize=1, icFloatNumber *zeroVals=NULL) const;
928 virtual bool ValuePos(icFloatNumber&DstPos, icFloatNumber val, bool &bNoZero) const;
929
930 virtual bool IsMatrixArray() const { return false; }
931
932protected:
935};
936
937/**
938****************************************************************************
939* Class: CIccTagS15Fixed16
940*
941* Purpose: s15Fixed16type tag derived from CIccTagFixedNum
942*****************************************************************************
943*/
945
946/**
947****************************************************************************
948* Classe: CIccTagU16Fixed16
949*
950* Purpose: u16Fixed16type tag derived from CIccTagFixedNum
951*****************************************************************************
952*/
954
955/**
956****************************************************************************
957* Class: CIccTagNum
958*
959* Purpose: A template class for arrays of integers
960*
961* Derived Tags: CIccTagUInt8, CIccTagUInt16, CIccTagUInt32 and CIccTagUInt64
962*****************************************************************************
963*/
964template <class T, icTagTypeSignature Tsig>
966{
967public:
968 CIccTagNum(int nSize=1);
969 CIccTagNum(const CIccTagNum<T, Tsig> &ITNum);
970 CIccTagNum &operator=(const CIccTagNum<T, Tsig> &NumTag);
971 virtual CIccTag* NewCopy() const { return new CIccTagNum<T, Tsig>(*this); }
972 virtual ~CIccTagNum();
973
974 virtual bool IsArrayType() { return m_nSize > 1; }
975
976 virtual icTagTypeSignature GetType() const { return Tsig; }
977 virtual const icChar *GetClassName() const;
978
979 virtual void Describe(std::string &sDescription, int nVerboseness);
980
981 virtual bool Read(icUInt32Number size, CIccIO *pIO);
982 virtual bool Write(CIccIO *pIO);
983
984 T &operator[](icUInt32Number index) {return m_Num[index];}
985
986 /// Returns the size of the data array
987 icUInt32Number GetSize() const { return m_nSize; }
988 bool SetSize(icUInt32Number nSize, bool bZeroNew=true);
989
990 virtual bool IsNumArrayType() const { return true; }
991
992 //CIccTagNumArray implementation (values in m_Num will be mapped to 0.0 to 1.0 range)
993 virtual icUInt32Number GetNumValues() const { return GetSize(); }
994 virtual bool GetValues(icFloatNumber *DstVector, icUInt32Number nStart=0, icUInt32Number nVectorSize=1) const;
995 virtual bool Interpolate(icFloatNumber *DstVector, icFloatNumber val,
996 icUInt32Number nVectorSize=1, icFloatNumber *zeroVals=NULL) const;
997 virtual bool ValuePos(icFloatNumber&DstPos, icFloatNumber val, bool &bNoZero) const;
998
999 virtual bool IsMatrixArray() const { return false; }
1000
1001 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1002
1003protected:
1006};
1007
1008
1009/**
1010****************************************************************************
1011* Class: CIccTagUInt8
1012*
1013* Purpose: icUInt8Number type tag derived from CIccTagNum
1014*****************************************************************************
1015*/
1017
1018/**
1019****************************************************************************
1020* Class: CIccTagUInt16
1021*
1022* Purpose: icUInt16Number type tag derived from CIccTagNum
1023*****************************************************************************
1024*/
1026
1027/**
1028****************************************************************************
1029* Class: CIccTagUInt32
1030*
1031* Purpose: icUInt32Number type tag derived from CIccTagNum
1032*****************************************************************************
1033*/
1035
1036/**
1037****************************************************************************
1038* Class: CIccTagUInt64
1039*
1040* Purpose: icUInt64Number type tag derived from CIccTagNum
1041*****************************************************************************
1042*/
1044
1045
1046
1047/**
1048****************************************************************************
1049* Class: CIccTagFloatNum
1050*
1051* Purpose: A template class for arrays of floating point numbers
1052*
1053* Derived Tags: CIccTagFloat32 and CIccTagFloat64
1054*****************************************************************************
1055*/
1056template <class T, icTagTypeSignature Tsig>
1058{
1059public:
1060 CIccTagFloatNum(int nSize=1);
1062 CIccTagFloatNum &operator=(const CIccTagFloatNum<T, Tsig> &NumTag);
1063 virtual CIccTag* NewCopy() const { return new CIccTagFloatNum<T, Tsig>(*this); }
1064 virtual ~CIccTagFloatNum();
1065
1066 virtual bool IsArrayType() { return m_nSize > 1; }
1067
1068 virtual icTagTypeSignature GetType() const { return Tsig; }
1069 virtual const icChar *GetClassName() const;
1070
1071 virtual void Describe(std::string &sDescription, int nVerboseness);
1072
1073 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1074 virtual bool Write(CIccIO *pIO);
1075
1076 T &operator[](icUInt32Number index) {return m_Num[index];}
1077
1078 /// Returns the size of the data array
1079 icUInt32Number GetSize() const { return m_nSize; }
1080 bool SetSize(icUInt32Number nSize, bool bZeroNew=true);
1081
1082 virtual bool IsNumArrayType() const { return true; }
1083
1084 //CIccTagNumArray implementation
1085 virtual icUInt32Number GetNumValues() const { return GetSize(); }
1086 virtual bool GetValues(icFloatNumber *DstVector, icUInt32Number nStart=0, icUInt32Number nVectorSize=1) const;
1087 virtual bool Interpolate(icFloatNumber *DstVector, icFloatNumber val,
1088 icUInt32Number nVectorSize=1, icFloatNumber *zeroVals=NULL) const;
1089 virtual bool ValuePos(icFloatNumber&DstPos, icFloatNumber val, bool &bNoZero) const;
1090
1091 virtual bool IsMatrixArray() const { return false; }
1092
1093 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1094
1095protected:
1098};
1099
1100/**
1101****************************************************************************
1102* Class: CIccTagFloat16
1103*
1104* Purpose: icFloat16Number type tag derived from CIccTagFloatNum
1105* Note: Internally icFloat16Number will be represented as icFloat32Numbers
1106*****************************************************************************
1107*/
1109
1110
1111/**
1112****************************************************************************
1113* Class: CIccTagFloat32
1114*
1115* Purpose: icFloat32Number type tag derived from CIccTagFloatNum
1116*****************************************************************************
1117*/
1119
1120/**
1121****************************************************************************
1122* Class: CIccTagFloat64
1123*
1124* Purpose: icFloat64Number type tag derived from CIccTagFloatNum
1125*****************************************************************************
1126*/
1128
1129
1130
1131/**
1132****************************************************************************
1133* Class: CIccTagMeasurement
1134*
1135* Purpose: The measurmentType tag
1136****************************************************************************
1137*/
1139{
1140public:
1143 CIccTagMeasurement &operator=(const CIccTagMeasurement &MeasTag);
1144 virtual CIccTag* NewCopy() const {return new CIccTagMeasurement(*this);}
1145 virtual ~CIccTagMeasurement();
1146
1148 virtual const icChar *GetClassName() const { return "CIccTagMeasurement"; }
1149
1150 virtual void Describe(std::string &sDescription, int nVerboseness);
1151
1152 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1153 virtual bool Write(CIccIO *pIO);
1154 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1155
1156
1158};
1159
1160/**
1161****************************************************************************
1162* Data Class: CIccLocalizedUnicode
1163*
1164* Purpose: Implementation of a unicode string with language and region
1165* identifiers.
1166*****************************************************************************
1167*/
1169{
1170public: //member functions
1173 CIccLocalizedUnicode &operator=(const CIccLocalizedUnicode &UnicodeText);
1174 virtual ~CIccLocalizedUnicode();
1175
1176 icUInt32Number GetLength() const { return m_nLength; }
1177 icUInt16Number *GetBuf() const { return m_pBuf; }
1178
1179 icUInt32Number GetUtf8Size();
1180 const icChar *GetUtf8(icChar *szBuf, icUInt32Number nBufSize);
1181
1182 bool GetText(std::string &text);
1183
1184 bool SetSize(icUInt32Number);
1185
1186 bool SetText(const icChar *szText,
1187 icLanguageCode nLanguageCode = icLanguageCodeEnglish,
1188 icCountryCode nRegionCode = icCountryCodeUSA);
1189 bool SetText(const icUInt16Number *sszUnicode16Text,
1190 icLanguageCode nLanguageCode = icLanguageCodeEnglish,
1191 icCountryCode nRegionCode = icCountryCodeUSA);
1192 bool SetText(const icUInt32Number *sszUnicode32Text,
1193 icLanguageCode nLanguageCode = icLanguageCodeEnglish,
1194 icCountryCode nRegionCode = icCountryCodeUSA);
1195
1196 const icChar *operator=(const icChar *szText) { SetText(szText); return szText; }
1197 const icUInt16Number *operator=(const icUInt16Number *sszText) { SetText(sszText); return sszText; }
1198 const icUInt32Number *operator=(const icUInt32Number *sszText) { SetText(sszText); return sszText; }
1199
1200 //Data
1203
1204protected:
1206
1208
1209};
1210
1211/**
1212****************************************************************************
1213* List Class: CIccMultiLocalizedUnicode
1214*
1215* Purpose: List of CIccLocalizedUnicode objects
1216*****************************************************************************
1217*/
1218typedef std::list<CIccLocalizedUnicode> CIccMultiLocalizedUnicode;
1219
1220
1221/**
1222****************************************************************************
1223* Class: CIccTagMultiLocalizedUnicode
1224*
1225* Purpose: The MultiLocalizedUnicode tag
1226*****************************************************************************
1227*/
1229{
1230public:
1233 CIccTagMultiLocalizedUnicode &operator=(const CIccTagMultiLocalizedUnicode &MultiLocalizedTag);
1234 virtual CIccTag* NewCopy() const {return new CIccTagMultiLocalizedUnicode(*this);}
1236
1238 virtual const icChar *GetClassName() const { return "CIcciSigMultiLocalizedUnicode"; }
1239
1240 virtual void Describe(std::string &sDescription, int nVerboseness);
1241
1242 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1243 virtual bool Write(CIccIO *pIO);
1244 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1245
1247 icCountryCode nRegionCode = icCountryCodeUSA);
1248
1249 void SetText(const icChar *szText,
1250 icLanguageCode nLanguageCode = icLanguageCodeEnglish,
1251 icCountryCode nRegionCode = icCountryCodeUSA);
1252 void SetText(const icUInt16Number *sszUnicode16Text,
1253 icLanguageCode nLanguageCode = icLanguageCodeEnglish,
1254 icCountryCode nRegionCode = icCountryCodeUSA);
1255 void SetText(const icUInt32Number *sszUnicode32Text,
1256 icLanguageCode nLanguageCode = icLanguageCodeEnglish,
1257 icCountryCode nRegionCode = icCountryCodeUSA);
1258
1259
1261};
1262
1263
1264//
1265// MD: Moved Curve & LUT Tags to IccTagLut.h (4-30-05)
1266//
1267
1268/**
1269****************************************************************************
1270* Class: CIccTagData
1271*
1272* Purpose: The data type tag
1273*****************************************************************************
1274*/
1276{
1277public:
1278 CIccTagData(int nSize=1);
1279 CIccTagData(const CIccTagData &ITD);
1280 CIccTagData &operator=(const CIccTagData &DataTag);
1281 virtual CIccTag* NewCopy() const {return new CIccTagData(*this);}
1282 virtual ~CIccTagData();
1283
1284 virtual icTagTypeSignature GetType() const { return icSigDataType; }
1285 virtual const icChar *GetClassName() const { return "CIccTagData"; }
1286
1287 virtual bool IsArrayType() { return m_nSize > 1; }
1288
1289 virtual void Describe(std::string &sDescription, int nVerboseness);
1290
1291 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1292 virtual bool Write(CIccIO *pIO);
1293
1294 icUInt32Number GetSize() const { return m_nSize; }
1295 bool SetSize(icUInt32Number nSize, bool bZeroNew=true);
1296 icUInt8Number &operator[] (icUInt32Number index) { return m_pData[index]; }
1297 icUInt8Number *GetData(icUInt32Number index=0) { return &m_pData[index];}
1298
1299 virtual void SetDataType(icDataBlockType dataType=icAsciiData) { m_nDataFlag = dataType; }
1300 virtual bool IsTypeAscii() { return (m_nDataFlag&icDataTypeMask) == icAsciiData; }
1301 virtual bool IsTypeBinary() { return (m_nDataFlag&icDataTypeMask) == icBinaryData; }
1302 virtual bool IsTypeUtf() { return (m_nDataFlag&icDataTypeMask) == icUtfData; }
1303 virtual bool IsTypeCompressed() { return (m_nDataFlag & icCompressedData) != 0; }
1304
1305 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1306
1307protected:
1311};
1312
1313
1314/**
1315****************************************************************************
1316* Class: CIccTagDateTime
1317*
1318* Purpose: The date time tag type
1319*****************************************************************************
1320*/
1322{
1323public:
1325 CIccTagDateTime(const CIccTagDateTime &ITDT);
1326 CIccTagDateTime &operator=(const CIccTagDateTime &DateTimeTag);
1327 virtual CIccTag* NewCopy() const {return new CIccTagDateTime(*this);}
1328 virtual ~CIccTagDateTime();
1329
1331 virtual const icChar *GetClassName() const { return "CIccTagDateTime"; }
1332
1333 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1334 virtual bool Write(CIccIO *pIO);
1335
1336 virtual void Describe(std::string &sDescription, int nVerboseness);
1337
1338 void SetDateTime(icDateTimeNumber nDateTime) { m_DateTime = nDateTime;}
1339 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1340
1341protected:
1343};
1344
1345/**
1346****************************************************************************
1347* Class: CIccTagColorantOrder
1348*
1349* Purpose: Colorant Order Tag
1350*****************************************************************************
1351*/
1353{
1354public:
1355 CIccTagColorantOrder(int nsize=1);
1357 CIccTagColorantOrder &operator=(const CIccTagColorantOrder &ColorantOrderTag);
1358 virtual CIccTag* NewCopy() const {return new CIccTagColorantOrder(*this);}
1359 virtual ~CIccTagColorantOrder();
1360
1362 virtual const icChar *GetClassName() const { return "CIccTagColorantOrder"; }
1363
1364 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1365 virtual bool Write(CIccIO *pIO);
1366
1367 virtual void Describe(std::string &sDescription, int nVerboseness);
1368 icUInt8Number& operator[](int index) { return m_pData[index]; }
1369 icUInt8Number *GetData(int index) { return &m_pData[index]; }
1370 bool SetSize(icUInt16Number nsize, bool bZeronew=true);
1371 icUInt32Number GetSize() const {return m_nCount;}
1372 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1373
1374protected:
1377};
1378
1379/**
1380****************************************************************************
1381* Class: CIccTagColorantTable
1382*
1383* Purpose: Colorant Table Tag
1384*****************************************************************************
1385*/
1387{
1388public:
1389 CIccTagColorantTable(int nsize=1);
1391 CIccTagColorantTable &operator=(const CIccTagColorantTable &ColorantTableTag);
1392 virtual CIccTag* NewCopy() const {return new CIccTagColorantTable(*this);}
1393 virtual ~CIccTagColorantTable();
1394
1396 virtual const icChar *GetClassName() const { return "CIccTagColorantTable"; }
1397
1398 virtual void Describe(std::string &sDescription, int nVerboseness);
1399
1400 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1401 virtual bool Write(CIccIO *pIO);
1402
1403 icColorantTableEntry &operator[](icUInt32Number index) {return m_pData[index];}
1404 icColorantTableEntry *GetEntry(icUInt32Number index) {return &m_pData[index];}
1405 icUInt32Number GetSize() const { return m_nCount; }
1406 bool SetSize(icUInt16Number nSize, bool bZeroNew=true);
1407
1409 icColorSpaceSignature GetPCS() const {return m_PCS;};
1410 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1411
1412protected:
1416};
1417
1418/**
1419****************************************************************************
1420* Class: CIccTagViewingConditions
1421*
1422* Purpose: Viewing conditions tag type
1423*****************************************************************************
1424*/
1426{
1427public:
1430 CIccTagViewingConditions &operator=(const CIccTagViewingConditions &ViewCondTag);
1431 virtual CIccTag* NewCopy() const {return new CIccTagViewingConditions(*this);}
1432 virtual ~CIccTagViewingConditions();
1433
1435 virtual const icChar *GetClassName() const { return "CIccTagViewingConditions"; }
1436
1437 virtual void Describe(std::string &sDescription, int nVerboseness);
1438
1439 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1440 virtual bool Write(CIccIO *pIO);
1441 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1442
1446};
1447
1448/**
1449****************************************************************************
1450* Data Class: CIccProfileDescText
1451*
1452* Purpose: Private text class for CIccProfileDescStruct.
1453* Text can be either a CIccTagTextDescription or a CIccTagMultiLocalizedUnicode
1454* so this class provides a single interface to both.
1455*****************************************************************************
1456*/
1458{
1459public:
1462 CIccProfileDescText &operator=(const CIccProfileDescText &ProfDescText);
1463 virtual ~CIccProfileDescText();
1464
1465 bool SetType(icTagTypeSignature nType);
1466 virtual icTagTypeSignature GetType() const;
1467
1468 CIccTag* GetTag() const { return m_pTag; }
1469
1470 virtual void Describe(std::string &sDescription, int nVerboseness);
1471
1472 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1473 virtual bool Write(CIccIO *pIO);
1474
1476
1477protected:
1478 CIccTag *m_pTag; //either a CIccTagTextDescription or a CIccTagMultiLocalizedUnicode
1479};
1480
1481
1482
1483/**
1484****************************************************************************
1485* Data Class: CIccProfileDescStruct
1486*
1487* Purpose: Storage class for profile description structure
1488*****************************************************************************
1489*/
1505
1506/**
1507****************************************************************************
1508* List Class: CIccProfileSeqDesc
1509*
1510* Purpose: List of profile description structures
1511*****************************************************************************
1512*/
1513typedef std::list<CIccProfileDescStruct> CIccProfileSeqDesc;
1514
1515
1516/**
1517****************************************************************************
1518* Class: CIccTagProfileSeqDesc
1519*
1520* Purpose: Profile Sequence description tag
1521*****************************************************************************
1522*/
1524{
1525public:
1528 CIccTagProfileSeqDesc &operator=(const CIccTagProfileSeqDesc &ProfSeqDescTag);
1529 virtual CIccTag* NewCopy() const {return new CIccTagProfileSeqDesc(*this);}
1530 virtual ~CIccTagProfileSeqDesc();
1531
1533 virtual const icChar *GetClassName() const { return "CIccTagProfileSeqDesc"; }
1534
1535 virtual void Describe(std::string &sDescription, int nVerboseness);
1536
1537 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1538 virtual bool Write(CIccIO *pIO);
1539 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1540
1542};
1543
1544
1545/**
1546****************************************************************************
1547* List Class: CIccResponse16List
1548*
1549* Purpose: List of response16numbers
1550*****************************************************************************
1551*/
1552typedef std::list<icResponse16Number> CIccResponse16List;
1553
1554/**
1555****************************************************************************
1556* Data Class: CIccResponseCurveStruct
1557*
1558* Purpose: The base class for response curve structure
1559*****************************************************************************
1560*/
1562{
1564public: //member functions
1567
1569 CIccResponseCurveStruct &operator=(const CIccResponseCurveStruct& RespCurveStruct);
1570 virtual ~CIccResponseCurveStruct();
1571
1572 bool Read(icUInt32Number size, CIccIO *pIO);
1573 bool Write(CIccIO *pIO);
1574 void Describe(std::string &sDescription, int nVerboseness);
1575
1576 icMeasurementUnitSig GetMeasurementType() const {return m_measurementUnitSig;}
1577 icUInt16Number GetNumChannels() const {return m_nChannels;}
1578
1579 icXYZNumber *GetXYZ(icUInt32Number index) {return &m_maxColorantXYZ[index];}
1580 CIccResponse16List *GetResponseList(icUInt16Number nChannel) {return &m_Response16ListArray[nChannel];}
1582 icValidateStatus Validate(std::string &sReport);
1583
1584protected:
1589};
1590
1591
1592/**
1593****************************************************************************
1594* List Class: CIccResponseCurveSet
1595*
1596* Purpose: List of response curve structures
1597*****************************************************************************
1598*/
1599
1600typedef std::list<CIccResponseCurveStruct> CIccResponseCurveSet;
1601
1603{
1604public:
1606 CIccResponseCurveSet::iterator item;
1607};
1608
1609
1610/**
1611****************************************************************************
1612* Class: CIccTagResponseCurveSet16
1613*
1614* Purpose: The responseCurveSet16 Tag type
1615*****************************************************************************
1616*/
1618{
1619public:
1622 CIccTagResponseCurveSet16 &operator=(const CIccTagResponseCurveSet16 &RespCurveSet16Tag);
1623 virtual CIccTag* NewCopy() const {return new CIccTagResponseCurveSet16(*this);}
1625
1627 virtual const icChar *GetClassName() const { return "CIccTagResponseCurveSet16"; }
1628
1629 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1630 virtual bool Write(CIccIO *pIO);
1631 virtual void Describe(std::string &sDescription, int nVerboseness);
1632
1633 void SetNumChannels(icUInt16Number nChannels);
1634 icUInt16Number GetNumChannels() const {return m_nChannels;}
1635
1638
1639 CIccResponseCurveStruct *GetFirstCurves();
1640 CIccResponseCurveStruct *GetNextCurves();
1641
1642 icUInt16Number GetNumResponseCurveTypes() const;
1643 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1644
1645protected:
1649};
1650
1651/**
1652****************************************************************************
1653* Class: CIccTagSpectralDataInfo
1654*
1655* Purpose: The responseCurveSet16 Tag type
1656*****************************************************************************
1657*/
1659{
1660public:
1663 CIccTagSpectralDataInfo &operator=(const CIccTagSpectralDataInfo &RespCurveSet16Tag);
1664 virtual CIccTag* NewCopy() const {return new CIccTagSpectralDataInfo(*this);}
1665 virtual ~CIccTagSpectralDataInfo();
1666
1668 virtual const icChar *GetClassName() const { return "CIccTagSpectralDataInfo"; }
1669
1670 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1671 virtual bool Write(CIccIO *pIO);
1672 virtual void Describe(std::string &sDescription, int nVerboseness);
1673
1674 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1675
1679};
1680
1681
1682class CIccMatrixMath;
1683
1684/**
1685****************************************************************************
1686* Class: CIccTagSpectralViewingConditions
1687*
1688* Purpose: The responseCurveSet16 Tag type
1689*****************************************************************************
1690*/
1692{
1693public:
1696 CIccTagSpectralViewingConditions &operator=(const CIccTagSpectralViewingConditions &RespCurveSet16Tag);
1697 virtual CIccTag* NewCopy() const {return new CIccTagSpectralViewingConditions(*this);}
1699
1701 virtual const icChar *GetClassName() const { return "CIccTagSpectralViewingConditions"; }
1702
1703 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1704 virtual bool Write(CIccIO *pIO);
1705 virtual void Describe(std::string &sDescription, int nVerboseness);
1706
1707 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
1708
1709 icFloatNumber *applyRangeToObserver(const icSpectralRange &newRange) const; //Caller responsible for deleting results
1710 CIccMatrixMath *getObserverMatrix(const icSpectralRange &newRange) const;
1711
1712 icIlluminant getStdIllumiant() const { return m_stdIlluminant; }
1713 icFloatNumber getIlluminantCCT() const { return m_colorTemperature; }
1714 icStandardObserver getStdObserver() const { return m_stdObserver; }
1715
1716 const icFloatNumber *getIlluminant(icSpectralRange &illumRange) const;
1717 bool setIlluminant(icIlluminant illumId, const icSpectralRange &illumRange, const icFloatNumber *illum, icFloatNumber illumCCT = 0.0f);
1718 bool setIlluminant(icFloatNumber *pWhiteXYZ);
1719
1720 const icFloatNumber *getObserver(icSpectralRange &observerRange) const;
1721 bool setObserver(icStandardObserver observerId, const icSpectralRange &observerRange, const icFloatNumber *observer);
1722
1725
1728
1729protected:
1731
1734
1737
1740};
1741
1742
1743
1744/**
1745****************************************************************************
1746* Class: CIccTagEmbeddedHeightImage
1747*
1748* Purpose: The Embedded Height map tag
1749*****************************************************************************
1750*/
1752{
1753public:
1754 CIccTagEmbeddedHeightImage(int nSize = 1);
1756 CIccTagEmbeddedHeightImage &operator=(const CIccTagEmbeddedHeightImage &HeightTag);
1757 virtual CIccTag* NewCopy() const { return new CIccTagEmbeddedHeightImage(*this); }
1759
1761 virtual const icChar *GetClassName() const { return "CIccTagEmbeddedHeightImage"; }
1762
1763 virtual void Describe(std::string &sDescription, int nVerboseness);
1764
1765 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1766 virtual bool Write(CIccIO *pIO);
1767
1768 icUInt32Number GetSize() const { return m_nSize; }
1769 bool SetSize(icUInt32Number nSize, bool bZeroNew = true);
1770 icUInt8Number &operator[] (icUInt32Number index) { return m_pData[index]; }
1771 icUInt8Number *GetData(icUInt32Number index = 0) { return &m_pData[index]; }
1772
1773 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile = NULL) const;
1774
1779
1780protected:
1783};
1784
1785
1786/**
1787****************************************************************************
1788* Class: CIccTagEmbeddedNormalImage
1789*
1790* Purpose: The Embedded Normal tag
1791*****************************************************************************
1792*/
1794{
1795public:
1796 CIccTagEmbeddedNormalImage(int nSize = 1);
1798 CIccTagEmbeddedNormalImage &operator=(const CIccTagEmbeddedNormalImage &NormalTag);
1799 virtual CIccTag* NewCopy() const { return new CIccTagEmbeddedNormalImage(*this); }
1801
1803 virtual const icChar *GetClassName() const { return "CIccTagEmbeddedNormalImage"; }
1804
1805 virtual void Describe(std::string &sDescription, int nVerboseness);
1806
1807 virtual bool Read(icUInt32Number size, CIccIO *pIO);
1808 virtual bool Write(CIccIO *pIO);
1809
1810 icUInt32Number GetSize() const { return m_nSize; }
1811 bool SetSize(icUInt32Number nSize, bool bZeroNew = true);
1812 icUInt8Number &operator[] (icUInt32Number index) { return m_pData[index]; }
1813 icUInt8Number *GetData(icUInt32Number index = 0) { return &m_pData[index]; }
1814
1815 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile = NULL) const;
1816
1819
1820protected:
1823};
1824
1825
1826#ifdef USEREFICCMAXNAMESPACE
1827} //namespace refIccMAX
1828#endif
1829
1830#endif // !defined(_ICCTAGBASIC_H)
icArraySignature sig
File: IccDefs.h
unsigned char icUChar
Definition IccDefs.h:110
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
Definition IccDefs.h:100
char icChar
Definition IccDefs.h:109
unsigned short icUChar16
Definition IccDefs.h:111
icValidateStatus
Definition IccDefs.h:118
#define ICCPROFLIB_API
bool icGetTagText(const CIccTag *pTag, std::string &text)
CIccTagFixedNum< icU16Fixed16Number, icSigU16Fixed16ArrayType > CIccTagU16Fixed16
Classe: CIccTagU16Fixed16.
CIccTagNum< icUInt8Number, icSigUInt8ArrayType > CIccTagUInt8
Class: CIccTagUInt8.
CIccTagFloatNum< icFloat32Number, icSigFloat16ArrayType > CIccTagFloat16
Class: CIccTagFloat16.
std::list< icResponse16Number > CIccResponse16List
List Class: CIccResponse16List.
std::list< CIccResponseCurveStruct > CIccResponseCurveSet
List Class: CIccResponseCurveSet.
CIccTagNum< icUInt32Number, icSigUInt32ArrayType > CIccTagUInt32
Class: CIccTagUInt32.
CIccTagFloatNum< icFloat64Number, icSigFloat64ArrayType > CIccTagFloat64
Class: CIccTagFloat64.
std::list< CIccProfileDescStruct > CIccProfileSeqDesc
List Class: CIccProfileSeqDesc.
std::list< CIccLocalizedUnicode > CIccMultiLocalizedUnicode
List Class: CIccMultiLocalizedUnicode.
CIccTagNum< icUInt64Number, icSigUInt64ArrayType > CIccTagUInt64
Class: CIccTagUInt64.
CIccTagFloatNum< icFloat32Number, icSigFloat32ArrayType > CIccTagFloat32
Class: CIccTagFloat32.
CIccTagNum< icUInt16Number, icSigUInt16ArrayType > CIccTagUInt16
Class: CIccTagUInt16.
CIccTagFixedNum< icS15Fixed16Number, icSigS15Fixed16ArrayType > CIccTagS15Fixed16
Class: CIccTagS15Fixed16.
icTagTypeSignature
unsigned int icUInt32Number
Type: Class.
Definition IccIO.h:97
Data Class: CIccLocalizedUnicode.
icLanguageCode m_nLanguageCode
icUInt16Number * GetBuf() const
icUInt32Number GetLength() const
const icUInt16Number * operator=(const icUInt16Number *sszText)
icUInt32Number m_nLength
icUInt16Number * m_pBuf
icCountryCode m_nCountryCode
const icUInt32Number * operator=(const icUInt32Number *sszText)
const icChar * operator=(const icChar *szText)
Type: Class.
Data Class: CIccProfileDescStruct.
CIccProfileDescText m_deviceMfgDesc
icSignature m_deviceModel
icTechnologySignature m_technology
CIccProfileDescText m_deviceModelDesc
icUInt64Number m_attributes
Data Class: CIccProfileDescText.
CIccTag * GetTag() const
CIccResponseCurveSet::iterator item
Data Class: CIccResponseCurveStruct.
icMeasurementUnitSig GetMeasurementType() const
CIccResponse16List * GetResponseList(icUInt16Number nChannel)
icUInt16Number m_nChannels
icXYZNumber * m_maxColorantXYZ
CIccResponse16List * m_Response16ListArray
icUInt16Number GetNumChannels() const
icMeasurementUnitSig m_measurementUnitSig
icXYZNumber * GetXYZ(icUInt32Number index)
CIccResponseCurveStruct * GetThis()
Class: CIccTagChromaticity.
icUInt16Number m_nChannels
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual const icChar * GetClassName() const
icUInt32Number GetSize() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual bool IsArrayType()
icChromaticityNumber * Getxy(icUInt32Number index)
icUInt16Number m_nColorantType
icChromaticityNumber & operator[](icUInt32Number index)
icChromaticityNumber * m_xy
Class: CIccTagCicp.
icUInt8Number m_nVideoFullRangeFlag
virtual icTagTypeSignature GetType() const
Function: GetType()
icUInt8Number m_nMatrixCoefficients
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt8Number m_nColorPrimaries
icUInt8Number m_nTransferCharacteristics
virtual const icChar * GetClassName() const
Class: CIccTagColorantOrder.
icUInt8Number * GetData(int index)
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt32Number GetSize() const
icUInt8Number & operator[](int index)
icUInt32Number m_nCount
virtual const icChar * GetClassName() const
virtual icTagTypeSignature GetType() const
Function: GetType()
icUInt8Number * m_pData
Class: CIccTagColorantTable.
icColorSpaceSignature GetPCS() const
void SetPCS(icColorSpaceSignature sig)
icColorantTableEntry * GetEntry(icUInt32Number index)
icColorantTableEntry * m_pData
virtual const icChar * GetClassName() const
icColorantTableEntry & operator[](icUInt32Number index)
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt32Number GetSize() const
icUInt32Number m_nCount
icColorSpaceSignature m_PCS
virtual icTagTypeSignature GetType() const
Function: GetType()
Class: CIccTagData.
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual const icChar * GetClassName() const
icUInt8Number * GetData(icUInt32Number index=0)
virtual bool IsTypeBinary()
virtual bool IsTypeAscii()
icUInt32Number m_nSize
virtual bool IsArrayType()
virtual void SetDataType(icDataBlockType dataType=icAsciiData)
virtual bool IsTypeUtf()
icDataBlockType m_nDataFlag
icUInt8Number * m_pData
icUInt32Number GetSize() const
virtual bool IsTypeCompressed()
Class: CIccTagDateTime.
void SetDateTime(icDateTimeNumber nDateTime)
icDateTimeNumber m_DateTime
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual const icChar * GetClassName() const
Class: CIccTagEmbeddedHeightImage.
icUInt32Number m_nSeamlesIndicator
icUInt8Number * GetData(icUInt32Number index=0)
icFloatNumber m_fMetersMaxPixelValue
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icImageEncodingType m_nEncodingFormat
virtual const icChar * GetClassName() const
icUInt32Number GetSize() const
icFloatNumber m_fMetersMinPixelValue
Class: CIccTagEmbeddedNormalImage.
icImageEncodingType m_nEncodingFormat
icUInt8Number * GetData(icUInt32Number index=0)
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt32Number m_nSeamlesIndicator
virtual const icChar * GetClassName() const
virtual icTagTypeSignature GetType() const
Function: GetType()
icUInt32Number GetSize() const
Class: CIccTagFixedNum.
virtual bool IsArrayType()
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual bool IsMatrixArray() const
icUInt32Number GetSize() const
Returns the size of the data array.
virtual icUInt32Number GetNumValues() const
virtual bool IsNumArrayType() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
T & operator[](icUInt32Number index)
icUInt32Number m_nSize
Class: CIccTagFloatNum.
virtual icTagTypeSignature GetType() const
Function: GetType()
T & operator[](icUInt32Number index)
virtual icUInt32Number GetNumValues() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt32Number GetSize() const
Returns the size of the data array.
icUInt32Number m_nSize
virtual bool IsArrayType()
virtual bool IsMatrixArray() const
virtual bool IsNumArrayType() const
Class: CIccTag.
virtual icTagTypeSignature GetType() const
Function: GetType()
icUInt32Number m_nReserved
virtual bool IsSupported()
Function: IsSupported(size, pIO) - Check if tag fully supported for apply purposes.
virtual void DetachIO()
Function: ReadAll() - Read All sub data for tag from file.
virtual void Describe(std::string &sDescription, int nVerboseness=0)
Function: Describe(sDescription) Each derived tag will implement it's own Describe() function.
virtual bool Read(icUInt32Number size, CIccIO *pIO)
Function: Read(size, pIO) - Read tag from file.
virtual bool IsMBBType()
virtual const icChar * GetClassName() const
virtual bool IsArrayType()
virtual bool Read(icUInt32Number size, CIccIO *pIO, CIccProfile *pProfile)
Function: Read(size, pIO) - Read tag from file.
virtual bool IsNumArrayType() const
virtual IIccExtensionTag * GetExtension()
virtual bool Write(CIccIO *pIO)
Function: Write(pIO) Each derived tag will implement it's own Write() function.
virtual icArraySignature GetTagArrayType() const
virtual icStructSignature GetTagStructType() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual bool ReadAll()
Function: ReadAll() - Read All sub data for tag from file.
Class: CIccTagMeasurement.
virtual icTagTypeSignature GetType() const
Function: GetType()
icMeasurement m_Data
virtual const icChar * GetClassName() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Class: CIccTagMultiLocalizedUnicode.
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual const icChar * GetClassName() const
CIccMultiLocalizedUnicode * m_Strings
virtual icTagTypeSignature GetType() const
Function: GetType()
Class: CIccTagNamedColor2.
SIccNamedColorEntry * m_NamedColor
virtual bool UseLegacyPCS() const
SIccNamedColorEntry & operator[](icUInt32Number index) const
icColorSpaceSignature m_csPCS
icColorSpaceSignature GetPCS() const
icUInt32Number m_nVendorFlags
icUInt32Number m_nSize
icUInt32Number GetVendorFlags() const
virtual icTagTypeSignature GetType() const
Function: GetType()
SIccNamedLabEntry * m_NamedLab
icUInt32Number GetDeviceCoords() const
virtual const icChar * GetClassName() const
icUInt32Number GetSize() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt32Number m_nColorEntrySize
For quick response of repeated FindPCSColor.
icColorSpaceSignature GetDeviceSpace() const
const icChar * GetSufix() const
void SetVendorFlags(icUInt32Number nVendorFlags)
SIccNamedColorEntry * GetEntry(icUInt32Number index) const
icUInt32Number m_nDeviceCoords
const icChar * GetPrefix() const
icColorSpaceSignature m_csDevice
Class: CIccTagNumArray.
virtual bool Interpolate(icFloatNumber *DstVector, icFloatNumber pos, icUInt32Number nVectorSize=1, icFloatNumber *zeroVals=NULL) const =0
virtual bool GetValues(icFloatNumber *DstVector, icUInt32Number nStart=0, icUInt32Number nVectorSize=1) const =0
virtual icUInt32Number GetNumValues() const =0
virtual bool ValuePos(icFloatNumber &DstPos, icFloatNumber val, bool &bNoZero) const =0
virtual bool IsMatrixArray() const =0
Class: CIccTagNum.
virtual bool IsArrayType()
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual bool IsMatrixArray() const
icUInt32Number m_nSize
virtual bool IsNumArrayType() const
T & operator[](icUInt32Number index)
icUInt32Number GetSize() const
Returns the size of the data array.
virtual icUInt32Number GetNumValues() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Class: CIccTagProfileSeqDesc.
virtual const icChar * GetClassName() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual icTagTypeSignature GetType() const
Function: GetType()
CIccProfileSeqDesc * m_Descriptions
Class: CIccTagResponseCurveSet16.
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
CIccResponseCurveSet * m_ResponseCurves
virtual icTagTypeSignature GetType() const
Function: GetType()
CIccResponseCurveSetIter * m_Curve
icUInt16Number GetNumChannels() const
virtual const icChar * GetClassName() const
Class: CIccTagSignature.
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt32Number GetValue() const
void SetValue(icUInt32Number sig)
virtual const icChar * GetClassName() const
virtual icTagTypeSignature GetType() const
Function: GetType()
icUInt32Number m_nSig
icUInt32Number operator=(icUInt32Number sig)
Class: CIccTagSparseMatrixArray.
icUInt32Number GetNumMatrices() const
Returns the number of matrices in the array.
icUInt8Number * m_RawData
virtual icUInt32Number GetNumValues() const
virtual bool IsArrayType()
virtual CIccTag * NewCopy()
icUInt32Number GetChannelsPerMatrix() const
virtual bool IsNumArrayType() const
icSparseMatrixType GetMatrixType() const
icUInt32Number GetBytesPerMatrix() const
virtual const icChar * GetClassName() const
icUInt16Number m_nChannelsPerMatrix
icSparseMatrixType m_nMatrixType
void SetMatrixType(icSparseMatrixType nType)
virtual bool IsMatrixArray() const
virtual icTagTypeSignature GetType() const
Function: GetType()
Class: CIccTagSpectralDataInfo.
virtual const icChar * GetClassName() const
virtual icTagTypeSignature GetType() const
Function: GetType()
icSpectralRange m_biSpectralRange
icSpectralRange m_spectralRange
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Class: CIccTagSpectralViewingConditions.
virtual const icChar * GetClassName() const
icFloatNumber getIlluminantCCT() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual icTagTypeSignature GetType() const
Function: GetType()
icIlluminant getStdIllumiant() const
icStandardObserver getStdObserver() const
Class: CIccTagTextDescription()
virtual const icChar * GetClassName() const
icUInt32Number m_nUnicodeLanguageCode
icUInt16Number m_nScriptCode
icUInt16Number * m_uzUnicodeText
const icChar * GetText() const
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt32Number m_nUnicodeSize
icUInt32Number Capacity() const
icUInt32Number m_nASCIISize
icUInt8Number m_nScriptSize
Class: CIccTagText()
const icChar * GetText() const
icUInt32Number m_nBufSize
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual icTagTypeSignature GetType() const
Function: GetType()
icChar * m_szText
icUInt32Number Capacity() const
virtual const icChar * GetClassName() const
Class: IccTagUnknown.
virtual bool IsSupported()
Function: IsSupported(size, pIO) - Check if tag fully supported for apply purposes.
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual const icChar * GetClassName() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icTagTypeSignature m_nType
icUInt32Number m_nSize
virtual const icUInt8Number * GetData() const
icUInt8Number * m_pData
virtual icUInt32Number GetSize() const
Class: CIccTagUtf16Text()
icUInt32Number Capacity() const
const icUChar16 * GetText() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual icTagTypeSignature GetType() const
Function: GetType()
icUInt32Number m_nBufSize
virtual const icChar * GetClassName() const
void SetText(const icChar *szText)
icUChar16 * m_szText
Class: CIccTagUtf8Text()
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt32Number Capacity() const
void SetText(const icChar *szText)
virtual const icChar * GetClassName() const
const icChar * operator=(const icChar *szText)
const icUChar * GetText() const
virtual icTagTypeSignature GetType() const
Function: GetType()
icUInt32Number m_nBufSize
icUChar * m_szText
Class: CIccTagViewingConditions.
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual const icChar * GetClassName() const
Class: CIccTagXYZ.
icUInt32Number GetSize() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
icUInt32Number m_nSize
virtual bool IsArrayType()
icXYZNumber * m_XYZ
virtual icTagTypeSignature GetType() const
Function: GetType()
icXYZNumber & operator[](icUInt32Number index) const
virtual const icChar * GetClassName() const
icXYZNumber * GetXYZ(icUInt32Number index)
Class: CIccTagZipUtf8Text()
virtual icTagTypeSignature GetType() const
Function: GetType()
icUInt32Number BufferSize() const
CIccTagZipUtf8Text & operator=(const CIccTagZipUtf8Text &TextTag)
Name: CIccTagZipUtf8Text::operator=.
icUChar * GetBuffer() const
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
bool SetText(const icChar *szText)
icUInt32Number m_nBufSize
virtual const icChar * GetClassName() const
Class: CIccTagZipXml()
virtual icTagTypeSignature GetType() const
Function: GetType()
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual const icChar * GetClassName() const
CIccTagZipXml & operator=(const CIccTagZipXml &TextTag)
virtual ~CIccTagZipXml()
CIccTagZipXml(const CIccTagZipXml &ITT)
virtual const char * GetExtDerivedClassName() const =0
virtual const char * GetExtClassName() const =0
unsigned char icUInt8Number
Number definitions.
@ icLanguageCodeEnglish
icSparseMatrixType
unsigned short icUInt16Number
long icInt32Number
@ icCountryCodeUSA
icTechnologySignature
technology signature descriptions
icIlluminant
Pre-defined illuminants, used in measurement and viewing conditions type.
icUInt16Number icCountryCode
icColorSpaceSignature
Color Space Signatures.
icUInt32Number icSignature
icUInt16Number icLanguageCode
#define icCompressedData
icMeasurementUnitSig
Measurement Unit Signatures used in ResponseCurveSet16Type.
icImageEncodingType
@ icSigCicpType
@ icSigSpectralDataInfoType
@ icSigDataType
@ icSigUtf8TextType
@ icSigProfileSequenceDescType
@ icSigMeasurementType
@ icSigSparseMatrixArrayType
@ icSigEmbeddedHeightImageType
@ icSigMultiLocalizedUnicodeType
@ icSigXYZType
@ icSigResponseCurveSet16Type
@ icSigUtf16TextType
@ icSigColorantTableType
@ icSigViewingConditionsType
@ icSigTextDescriptionType
@ icSigEmbeddedNormalImageType
@ icSigColorantOrderType
@ icSigDateTimeType
@ icSigTextType
@ icSigSpectralViewingConditionsType
@ icSigZipXmlType
@ icSigNamedColor2Type
@ icSigChromaticityType
@ icSigSignatureType
@ icSigZipUtf8TextType
icStructSignature
Tag Structure type signatures.
@ icSigUndefinedStruct
icDataBlockType
@ icUtfData
@ icBinaryData
@ icAsciiData
icUInt32Number icUInt64Number[2]
#define icAny
Define used to indicate that this is a variable length array.
#define icDataTypeMask
icArraySignature
Tag Array type signatures.
@ icSigUndefinedArray
#define icMaxEnumType
icStandardObserver
Standard Observer, used in the measurmentType tag.
static icFloatNumber UnitClip(icFloatNumber v)
xy Chromaticity Number
ColorantTable Entry.
The base date time number.
Floting point XYZ.
Measurement Data.
spectral range