The ICCPROFILEEXT structure is used to save all the information and data about an ICC profile.
typedef struct _ICCPROFILEEXT
{
L_UINT uStructSize;
L_SIZE_T uDataSize;
L_SIZE_T uTagDataSize;
pICCHEADER pIccHeader;
ICCTAG_LIST tagList;
L_UCHAR * pTagData;
L_UCHAR * pData;
} ICCPROFILEEXT, * pICCPROFILEEXT;
Size of the structure in bytes. Use the sizeof operator to calculate this value.
A value that indicates the size of the pData pointer in bytes.
A value that indicates the size of the pTagData pointer in bytes.
Pointer to an ICCHEADER structure that has the entire ICC header's data.
Pointer to an ICCTAG_LIST structure that contains information and data about all the tags in the ICC profile.
Pointer to a buffer that contains all the tags' data.
Pointer to a buffer that contains all the ICC profile's data.
The data in all the fields is converted into little Endian format, except for the data in the pTagData and the pData pointers. The user does not need to access the data in the pData and pTagData pointers directly, because the ICC defined functions provide access to the data in those pointers. Consequently, the data in these two members are kept in big Endian format.
When loading an existing ICC profile (one that has been saved to either an image file or an ICC profile file) into this structure, the pData member will contain all the profile data in one block of memory, and the pTagData member will contain only the tags data in one block of memory. The uDataSize member contains the size of the pData pointer, which is the ICC profile's size, and the uTagDataSize member contains the size of the pTagData pointer.
When creating a new ICC profile, or modifying an existing one, the pTagData and uTagDataSize are constantly updated, so they will always contain the correct information for the profile. However, the pData and uDataSize will not contain the correct information until after the LICCProfile::GeneratePointer function has been called. The LICCProfile::GeneratePointer function generates the pData pointer to the updated profile information and fills in the uDataSize member with the updated value.
The LICCProfile::Fill function can allocate and fill the pIccHeader
pointer using the ICC data stored in pData
.