72#pragma warning( disable: 4786)
87#ifndef ICC_UNSUPPORTED_TAG_DICT
217 std::wstring_convert<convert_type, wchar_t> converter;
219 sDescription +=
"BEGIN DICT_ENTRY\nName=";
221 sDescription += converter.to_bytes(ws);
222 sDescription +=
"\nValue=";
224 sDescription += converter.to_bytes(ws);
225 sDescription +=
"\n";
228 sDescription +=
"BEGIN NAME_LOCALIZATION\n";
230 sDescription +=
"END NAME_LOCALIZATION\n";
233 sDescription +=
"BEGIN VALUE_LOCALIZATION\n";
235 sDescription +=
"END VALUE_LOCALIZATION\n";
237 sDescription +=
"END DICT_ENTRY\n";
361 CIccNameValueDict::iterator i;
364 for (i=dict.
m_Dict->begin(); i!=dict.
m_Dict->end(); i++) {
388 CIccNameValueDict::iterator i;
391 for (i=dict.
m_Dict->begin(); i!=dict.
m_Dict->end(); i++) {
432 CIccNameValueDict::iterator i;
436 if (i->ptr->PosRecSize() > rv)
458 sprintf(buf,
"BEGIN DICT_TAG\n");
461 CIccNameValueDict::iterator i;
463 sDescription +=
"\n";
465 i->ptr->Describe(sDescription, nVerboseness);
468 sprintf(buf,
"\nEND DICT_TAG\n");
502 if (headerSize > size)
524 if (!pIO->
Read32(&reclen))
527 if (reclen!=16 && reclen!=24 && reclen!=32)
530 if (headerSize + count*reclen > size)
538 for (i=0; i<count; i++) {
540 !pIO->
Read32(&pos[i].posName.size) ||
541 !pIO->
Read32(&pos[i].posValue.offset) ||
542 !pIO->
Read32(&pos[i].posValue.size)) {
562 if ((pos[i].posName.offset & 0x3) ||
574 for (i=0; i<count; i++) {
580 if (pos[i].posName.offset) {
581 if (!pos[i].posName.size) {
586 if (pos[i].posName.offset + pos[i].
posName.
size >size ||
595 if (bufsize < pos[i].posName.size) {
619 str.assign(&buf[0], &buf[num]);
625 if (pos[i].posValue.offset) {
626 if (!pos[i].posValue.size) {
631 if (pos[i].posValue.offset + pos[i].
posValue.
size >size ||
640 if (bufsize < pos[i].posValue.size) {
664 str.assign(&buf[0], &buf[num]);
670 if (pos[i].posNameLocalized.offset) {
687 if (!pIO->
Read32(&textSig, 1)) {
721 if (pos[i].posValueLocalized.offset) {
738 if (!pIO->
Read32(&textSig, 1)) {
805 CIccNameValueDict::iterator i, j;
811 for (count=0, i=
m_Dict->begin(); i!=
m_Dict->end(); i++) {
830 pIO->
Write8(zbuf, recSize);
835 std::wstring::const_iterator chrptr;
841 for(chrptr = i->ptr->GetName().begin(); chrptr!=i->ptr->GetName().end(); chrptr++) {
848 if (i->ptr->IsValueSet()) {
850 for(chrptr = i->ptr->ValueBegin(); chrptr!=i->ptr->ValueEnd(); chrptr++) {
858 if (recSize>16 && i->ptr->GetNameLocalized()) {
860 i->ptr->GetNameLocalized()->Write(pIO);
865 if (recSize>24 && i->ptr->GetValueLocalized()) {
867 i->ptr->GetValueLocalized()->Write(pIO);
881 pIO->
Write32(&pos[n].posName.offset);
882 pIO->
Write32(&pos[n].posName.size);
883 pIO->
Write32(&pos[n].posValue.offset);
884 pIO->
Write32(&pos[n].posValue.size);
886 pIO->
Write32(&pos[n].posNameLocalized.offset);
887 pIO->
Write32(&pos[n].posNameLocalized.size);
889 pIO->
Write32(&pos[n].posValueLocalized.offset);
890 pIO->
Write32(&pos[n].posValueLocalized.size);
915 const CIccProfile* pProfile )
const
925 sReport += sSigPathName;
926 sReport +=
" - There are duplicate names.\n";
932 sReport += sSigPathName;
933 sReport +=
" - There zero-length names.\n";
940 sReport += sSigPathName;
941 sReport +=
" - Some Data elements are not aligned correctly\n";
957 CIccNameValueDict::iterator i;
981 CIccNameValueDict::const_iterator i, j;
985 for (j++; j!=
m_Dict->end(); j++) {
986 if (i->ptr->GetName() == j->ptr->GetName())
1009 CIccNameValueDict::const_iterator i, j;
1012 if (i->ptr->GetName().empty())
1035 CIccNameValueDict::const_iterator i;
1038 if (i->ptr->GetName() == sName)
1311 CIccNameValueDict::iterator i;
1314 if (i->ptr->GetName() == sName) {
1403 if (sValue.empty() && bUnSet)
1417 std::wstring sValue;
1423 return Set(sName, sValue,
false);
1426 return Set(sName, sValue,
true);
1432 std::wstring sValue;
1435 sValue.assign(szValue, szValue+strlen(szValue));
1437 return Set(sName, sValue,
false);
1440 return Set(sName, sValue,
true);
std::codecvt_utf8< wchar_t > convert_type
std::list< CIccDictEntryPtr > CIccNameValueDict
List Class: CIccDictEntry.
icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Name: icMaxStatus.
const char * icMsgValidateWarning
void * icRealloc(void *ptr, size_t size)
Name: icRealloc.
unsigned int icUInt32Number
Data Class: CIccDictEntry.
bool SetValueLocalized(CIccTagMultiLocalizedUnicode *pValueLocalized)
Name: CIccDictEntry::SetValueLocalized.
CIccDictEntry()
Name: CIccDictEntry::CIccDictEntry.
bool SetNameLocalized(CIccTagMultiLocalizedUnicode *pNameLocalized)
Name: CIccDictEntry::SetNameLocalized.
CIccTagMultiLocalizedUnicode * GetValueLocalized()
CIccTagMultiLocalizedUnicode * GetNameLocalized()
virtual ~CIccDictEntry()
Name: CIccDictEntry::~CIccDictEntry.
bool SetValue(std::wstring sValue)
CIccDictEntry & operator=(const CIccDictEntry &IDE)
Name: CIccDictEntry::operator=.
void Describe(std::string &sDescription, int nVerboseness)
Name: CIccDictEntry::Describe.
CIccTagMultiLocalizedUnicode * m_pValueLocalized
CIccTagMultiLocalizedUnicode * m_pNameLocalized
icUInt32Number PosRecSize()
Name: CIccDictEntry::PosRecSize.
virtual icInt32Number Write8(void *pBuf8, icInt32Number nNum=1)
icInt32Number Write16(void *pBuf16, icInt32Number nNum=1)
icInt32Number Read16(void *pBuf16, icInt32Number nNum=1)
virtual icInt32Number Tell()
bool Align32()
Write operation to make sure that filelength is evenly divisible by 4.
icInt32Number Write32(void *pBuf32, icInt32Number nNum=1)
virtual icInt32Number Seek(icInt32Number nOffset, icSeekVal pos)
icInt32Number Read32(void *pBuf32, icInt32Number nNum=1)
std::string GetSigPathName(std::string sigPath)
CIccDictEntry * Get(const char *szName) const
Name: CIccTagDict::Get.
std::wstring GetValue(const char *szName, bool *bIsSet=NULL) const
Name: CIccTagDict::GetValue.
bool Set(const char *szName, const char *szValue=NULL)
bool AreNamesUnique() const
Name: CIccTagDict::AreNamesUnique.
virtual ~CIccTagDict()
Name: CIccTagDict::~CIccTagDict.
CIccTagMultiLocalizedUnicode * GetNameLocalized(std::wstring sName) const
Name: CIccTagDict::GetNameLocalized.
virtual bool Read(icUInt32Number size, CIccIO *pIO)
Name: CIccTagDict::Read.
icUInt32Number MaxPosRecSize()
Name: CIccTagDict::MaxPosRecSize;.
bool SetValueLocalized(const char *szName, CIccTagMultiLocalizedUnicode *pTag)
CIccNameValueDict * m_Dict
void Cleanup()
Name: CIccTagDict::Cleanup.
CIccTagMultiLocalizedUnicode * GetValueLocalized(std::wstring sName) const
Name: CIccTagDict::GetValueLocalized.
CIccTagDict()
Name: CIccTagDict::CIccTagDict.
icUInt32Number m_tagStart
virtual icTagTypeSignature GetType() const
Function: GetType()
bool Remove(std::wstring sName)
Name: CIccTagDict::Remove.
virtual bool Write(CIccIO *pIO)
Name: CIccTagDict::Write.
bool SetNameLocalized(const char *szName, CIccTagMultiLocalizedUnicode *pTag)
virtual void Describe(std::string &sDescription, int nVerboseness)
Name: CIccTagDict::Describe.
bool AreNamesNonzero() const
Name: CIccTagDict::AreNamesNonzero.
virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
Name: CIccTagDict::Validate.
CIccTagDict & operator=(const CIccTagDict &dict)
Name: &operator=.
icUInt32Number m_nReserved
virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile *pProfile=NULL) const
Function: Validate Each derived tag will implement it's own IsValid() function.
Class: CIccTagMultiLocalizedUnicode.
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
virtual void Describe(std::string &sDescription, int nVerboseness)
Name: CIccTagMultiLocalizedUnicode::Describe.
virtual bool Read(icUInt32Number size, CIccIO *pIO)
Name: CIccTagMultiLocalizedUnicode::Read.
icPositionNumber posValue
icPositionNumber posValueLocalized
icPositionNumber posNameLocalized