IccMAX 2.1.27
Color Profile Tools
Loading...
Searching...
No Matches
IccEncoding.h File Reference
#include "IccProfile.h"
+ Include dependency graph for IccEncoding.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  IIccEncProfileCacheHandler
 
class  IIccEncProfileConverter
 

Enumerations

enum  icStatusEncConvert {
  icEncConvertOk = 0 , icEncConvertBadProfile , icEncConvertNoBaseProfile , icEncConvertBadBaseProfile ,
  icEncConvertBadParams , icEncConvertMemoryError
}
 

Functions

icStatusEncConvert ICCPROFLIB_API icConvertEncodingProfile (CIccProfilePtr &newIcc, CIccProfile *pEncodeIcc)
 

Detailed Description

File: IccEncode.h

Contains: Header for implementation of Encoded profile class utiltities

Version: V1

Copyright: (c) see ICC Software License

Definition in file IccEncoding.h.

Enumeration Type Documentation

◆ icStatusEncConvert

Enumerator
icEncConvertOk 
icEncConvertBadProfile 
icEncConvertNoBaseProfile 
icEncConvertBadBaseProfile 
icEncConvertBadParams 
icEncConvertMemoryError 
74 {
icStatusEncConvert
Definition IccEncoding.h:74
@ icEncConvertBadParams
Definition IccEncoding.h:79
@ icEncConvertBadProfile
Definition IccEncoding.h:76
@ icEncConvertOk
Definition IccEncoding.h:75
@ icEncConvertNoBaseProfile
Definition IccEncoding.h:77
@ icEncConvertBadBaseProfile
Definition IccEncoding.h:78
@ icEncConvertMemoryError
Definition IccEncoding.h:80

Function Documentation

◆ icConvertEncodingProfile()

icStatusEncConvert ICCPROFLIB_API icConvertEncodingProfile ( CIccProfilePtr &  newIcc,
CIccProfile pEncodeIcc 
)
539{
540 newIcc = NULL;
541
542 if (!pEncodeIcc || pEncodeIcc->m_Header.deviceClass!=icSigColorEncodingClass)
544
545 CIccTag *pTag;
546 CIccTagStruct *pParams=NULL;
547 pTag = pEncodeIcc->FindTagOfType(icSigReferenceNameTag, icSigUtf8TextType);
548 if (pTag) {
549 CIccTagUtf8Text *pText = (CIccTagUtf8Text*)pTag;
550 const icUChar *szRefName = pText->GetText();
551 if (!strcmp((const char*)szRefName, "ISO 22028-1")) {
552 pTag = pEncodeIcc->FindTagOfType(icSigColorEncodingParamsTag, icSigTagStructType);
553 if (pTag)
554 pParams = (CIccTagStruct*)pTag->NewCopy();
555 }
556 else {
557 CIccTag *pNameTag = pEncodeIcc->FindTagOfType(icSigColorSpaceNameTag, icSigUtf8TextType);
558 if (pNameTag) {
559 pText = (CIccTagUtf8Text *)pNameTag;
560 const icUChar *szName = pText->GetText();
561
563 if (!pBaseIcc) {
565 }
566
567 pTag = pBaseIcc->FindTagOfType(icSigColorEncodingParamsTag, icSigTagStructType);
568 if (!pTag) {
569 delete pBaseIcc;
571 }
572 pParams = (CIccTagStruct*)pTag->NewCopy();
573 delete pBaseIcc;
574
575 //Now Copy Overrides into pParams (if they exist in pEncodeIcc
576 CIccTag *pOverridesTag = pEncodeIcc->FindTagOfType(icSigColorEncodingParamsTag, icSigTagStructType);
577 if (pOverridesTag) {
578 CIccTagStruct *pStruct = (CIccTagStruct*)pOverridesTag;
579 TagEntryList *pTags = pStruct->GetElemList();
580 if (pTags) {
581 TagEntryList::iterator entry;
582 for (entry=pTags->begin(); entry!=pTags->end(); entry++) {
583 if (entry->pTag) {
584 pStruct->DeleteElem(entry->TagInfo.sig);
585 pStruct->AttachElem(entry->TagInfo.sig, entry->pTag->NewCopy());
586 }
587 }
588 }
589 }
590 }
591 }
592 }
593
594 if (!pParams) {
596 }
597
598 //Create and initialize new profile from pEncodeIcc and pParams
599 icStatusEncConvert stat = IIccEncProfileConverter::GetHandler()->ConvertFromParams(newIcc, pParams, &pEncodeIcc->m_Header);
600
601 delete pParams;
602
603 return stat;
604}
@ icSigColorEncodingClass
Definition icProfileHeader.h:959
@ icSigUtf8TextType
Definition icProfileHeader.h:574
@ icSigTagStructType
Definition icProfileHeader.h:564
@ icSigColorSpaceNameTag
Definition icProfileHeader.h:384
@ icSigColorEncodingParamsTag
Definition icProfileHeader.h:383
@ icSigReferenceNameTag
Definition icProfileHeader.h:464
class ICCPROFLIB_API CIccProfile
Definition IccPcc.h:80
unsigned char icUChar
Definition IccDefs.h:111
Definition IccTagComposite.h:156
bool AttachElem(icSignature sig, CIccTag *pTag)
Definition IccTagComposite.cpp:757
bool DeleteElem(icSignature sig)
Definition IccTagComposite.cpp:807
TagEntryList * GetElemList()
Definition IccTagComposite.h:181
virtual CIccProfile * GetEncodingProfile(const icUChar *szColorSpaceName)=0
static IIccEncProfileCacheHandler * GetHandler()
Definition IccEncoding.cpp:99
static IIccEncProfileConverter * GetHandler()
Definition IccEncoding.cpp:519
virtual icStatusEncConvert ConvertFromParams(CIccProfilePtr &newIcc, CIccTagStruct *pParams, icHeader *pHeader)=0
Definition IccTagBasic.h:108
virtual CIccTag * NewCopy() const
Definition IccTagBasic.h:121
Definition IccTagBasic.h:322
const icUChar * GetText() const
Definition IccTagBasic.h:338

References CIccTagStruct::AttachElem(), CIccProfile, IIccEncProfileConverter::ConvertFromParams(), CIccTagStruct::DeleteElem(), icHeader::deviceClass, CIccTagStruct::GetElemList(), IIccEncProfileCacheHandler::GetEncodingProfile(), IIccEncProfileCacheHandler::GetHandler(), IIccEncProfileConverter::GetHandler(), CIccTagUtf8Text::GetText(), icEncConvertBadBaseProfile, icEncConvertBadProfile, icEncConvertNoBaseProfile, icSigColorEncodingClass, icSigColorEncodingParamsTag, icSigColorSpaceNameTag, icSigReferenceNameTag, icSigTagStructType, icSigUtf8TextType, CIccTag::NewCopy(), and icTag::sig.

+ Here is the call graph for this function: