84#define PI 3.1415926535897932384626433832795
86#ifdef USEREFICCMAXNAMESPACE
116 nptr = realloc(ptr, size);
144 return fabs(v1 - v2) <= nearRange;
168 if (pos.
offset < nTagHeaderSize)
173 if (!pos.
size && !bAllowEmpty)
253 if (digit>=
'0' && digit<=
'9')
255 if (digit>=
'A' && digit<=
'F')
273 if (szSig[0]==
'n' && szSig[1]==
'c')
275 else if (!strcmp(szSig+1,
"CLR")) {
280 else if (!strcmp(szSig+2,
"CL")) {
284 if (d0>=0 && d1>=0) {
296 int nIndex,
int nColors,
const icChar *szUnknown)
302 szSig[0] = (
icChar)(csSig>>24);
303 szSig[1] = (
icChar)(csSig>>16);
304 szSig[2] = (
icChar)(csSig>>8);
305 szSig[3] = (
icChar)(csSig);
308 for (i=3; i>0; i--) {
315 else if ((
size_t)nColors == strlen(szSig)) {
316 sprintf(
szName,
"%s_%c", szSig, szSig[nIndex]);
319 sprintf(
szName,
"%s_%d", szSig, nIndex+1);
322 else if (nColors==1) {
323 strcpy(
szName, szUnknown);
326 sprintf(
szName,
"%s_%d", szUnknown, nIndex+1);
336 if (!nIndex || nIndex>2)
337 sprintf(szValue,
"%7.3lf", nValue * 100.0);
339 sprintf(szValue,
"%8.3lf", nValue * 255.0 - 128.0);
342 if (!nIndex || nIndex>2)
343 sprintf(szValue,
"%7.3lf", nValue * 100.0 * 65535.0 / 65280.0);
345 sprintf(szValue,
"%8.3lf", nValue * 255.0 * 65535.0 / 65280.0 - 128.0);
349 sprintf(szValue,
"%8.5lf", nValue);
352 sprintf(szValue,
"%7.3lf", nValue * 100.0);
406 if (det>-epsilon && det<epsilon)
411 Co[0] = +(m48 - m75);
412 Co[1] = -(m38 - m65);
413 Co[2] = +(m37 - m64);
415 Co[3] = -(M[1]*M[8] - M[7]*M[2]);
416 Co[4] = +(M[0]*M[8] - M[6]*M[2]);
417 Co[5] = -(M[0]*M[7] - M[6]*M[1]);
419 Co[6] = +(M[1]*M[5] - M[4]*M[2]);
420 Co[7] = -(M[0]*M[5] - M[3]*M[2]);
421 Co[8] = +(M[0]*M[4] - M[3]*M[1]);
461 const unsigned int e11 = 0;
462 const unsigned int e12 = 1;
463 const unsigned int e13 = 2;
464 const unsigned int e21 = 3;
465 const unsigned int e22 = 4;
466 const unsigned int e23 = 5;
467 const unsigned int e31 = 6;
468 const unsigned int e32 = 7;
469 const unsigned int e33 = 8;
470 result[e11] = l[e11] * r[e11] + l[e12] * r[e21] + l[e13] * r[e31];
471 result[e12] = l[e11] * r[e12] + l[e12] * r[e22] + l[e13] * r[e32];
472 result[e13] = l[e11] * r[e13] + l[e12] * r[e23] + l[e13] * r[e33];
473 result[e21] = l[e21] * r[e11] + l[e22] * r[e21] + l[e23] * r[e31];
474 result[e22] = l[e21] * r[e12] + l[e22] * r[e22] + l[e23] * r[e32];
475 result[e23] = l[e21] * r[e13] + l[e22] * r[e23] + l[e23] * r[e33];
476 result[e31] = l[e31] * r[e11] + l[e32] * r[e21] + l[e33] * r[e31];
477 result[e32] = l[e31] * r[e12] + l[e32] * r[e22] + l[e33] * r[e32];
478 result[e33] = l[e31] * r[e13] + l[e32] * r[e23] + l[e33] * r[e33];
506 const unsigned int e11 = 0;
507 const unsigned int e12 = 1;
508 const unsigned int e13 = 2;
509 const unsigned int e21 = 3;
510 const unsigned int e22 = 4;
511 const unsigned int e23 = 5;
512 const unsigned int e31 = 6;
513 const unsigned int e32 = 7;
514 const unsigned int e33 = 8;
515 result[0] = m[e11] * v[0] + m[e12] * v[1] + m[e13] * v[2];
516 result[1] = m[e21] * v[0] + m[e22] * v[1] + m[e23] * v[2];
517 result[2] = m[e31] * v[0] + m[e32] * v[1] + m[e33] * v[2];
536 for (i=0; i<nSample; i++) {
537 sum +=
icSq(v1[i] - v2[i]);
551 else if (num>32767.0)
572 else if (num>65535.0)
593 else if (num>65535.0/32768.0)
594 num = 65535.0/32768.0;
637 if (!(num & 0x7FFF)) {
640 numsgn = num & 0x8000;
641 numexp = num & 0x7C00;
642 nummnt = num & 0x03FF;
648 }
while (!(nummnt & 0x0400));
653 rv = (rvsgn | rvexp | rvmnt);
654 }
else if (numexp == 0x7C00) {
665 rv = (rvsgn | rvexp | rvmnt);
682 if (!(flt & 0x7FFFFFFF)) {
685 fltsgn = flt & 0x80000000;
686 fltexp = flt & 0x7F800000;
687 fltmnt = flt & 0x007FFFFF;
690 }
else if (fltexp == 0x7F800000) {
698 exp = ((int)(fltexp >> 23)) - 127 + 15;
701 }
else if (exp <= 0) {
702 if ((14 - exp) > 24) {
705 fltmnt |= 0x00800000;
707 if ((fltmnt >> (13 - exp)) & 0x00000001)
710 rv = (rvsgn | rvmnt);
714 if (fltmnt & 0x00001000)
717 rv = (rvsgn | rvexp | rvmnt);
790 XYZ[0] = XYZ[0] / WhiteXYZ[0];
791 XYZ[1] = XYZ[1] / WhiteXYZ[1];
792 XYZ[2] = XYZ[2] / WhiteXYZ[2];
800 XYZ[0] = XYZ[0] * WhiteXYZ[0];
801 XYZ[1] = XYZ[1] * WhiteXYZ[1];
802 XYZ[2] = XYZ[2] * WhiteXYZ[2];
811 return (
icFloatNumber)(7.787037037037037037037037037037*v + 16.0/116.0);
817 if (v > 0.20689303448275862068965517241379)
820#ifndef SAMPLEICC_NOCLIPLABTOXYZ
823 return (
icFloatNumber)((v - 16.0 / 116.0) / 7.787037037037037037037037037037);
824#ifndef SAMPLEICC_NOCLIPLABTOXYZ
856 Xn =
icCubeth(XYZ[0] / WhiteXYZ[0]);
857 Yn =
icCubeth(XYZ[1] / WhiteXYZ[1]);
858 Zn =
icCubeth(XYZ[2] / WhiteXYZ[2]);
900 return( v1 < v2 ? v1 : v2 );
905 return( v1 > v2 ? v1 : v2 );
910 return( v1 < v2 ? v1 : v2 );
915 return( v1 > v2 ? v1 : v2 );
949#define DUMPBYTESPERLINE 16
961 sDump.reserve(sDump.size() + lines*79);
967 sDump += (
const icChar*)buf;
969 memset(buf,
' ', 76);
973 sprintf(num,
"%08X:", i);
974 strncpy(buf, num, 9);
977 sprintf(num,
"%02X", *pData);
978 strncpy(buf+10+j*3, num, 2);
983 buf[10+16*3 + 1 + j] = c;
992 sprintf(buf,
"%8.4lf %8.4lf %8.4lf\n",
icFtoD(pMatrix[0]),
icFtoD(pMatrix[1]),
icFtoD(pMatrix[2]));
994 sprintf(buf,
"%8.4lf %8.4lf %8.4lf\n",
icFtoD(pMatrix[3]),
icFtoD(pMatrix[4]),
icFtoD(pMatrix[5]));
996 sprintf(buf,
"%8.4lf %8.4lf %8.4lf\n",
icFtoD(pMatrix[6]),
icFtoD(pMatrix[7]),
icFtoD(pMatrix[8]));
1006 strcpy(pBuf,
"NULL");
1021 sprintf(pBuf + 3,
"' = %04X", nSig);
1023 sprintf(pBuf + 3,
"'");
1035 strcpy(pBuf,
"NULL");
1040 for (i=1; i<5; i++) {
1049 sprintf(pBuf+5,
"' = %08X", nSig);
1051 sprintf(pBuf+5,
"'");
1061 bool bGetHexVal =
false;
1063 for (i=0; i<4; i++) {
1071 else if (!isprint(c) ||c==
':') {
1080 sprintf(pBuf,
"%08Xh", nSig);
1112 bool bNeedHexVal =
false;
1115 for (i=1; i<5; i++) {
1126 sprintf(pBuf+5,
"' = %08X", nSig);
1127 else if (bNeedHexVal) {
1128 sprintf(pBuf,
"%08Xh", nSig);
1131 sprintf(pBuf+5,
"'");
1162 bool bGetHexVal =
false;
1164 for (i=0; i<4; i++) {
1172 else if (!isprint(c) ||c==
':') {
1181 sprintf(pBuf,
"%08Xh", nSig);
1194 std::string rv =
":";
1204 const char *ptr = sigPath.c_str();
1208 while(*ptr && *ptr!=
':') {
1222 size_t n = sigPath.length();
1226 const char *
sig = sigPath.c_str();
1228 for (n = n - 1; n > 0; n--) {
1229 if (
sig[n] ==
':') {
1241 const char *ptr = sigPath.c_str();
1245 ptr = strchr(ptr+1,
':');
1248 while(*ptr && *ptr!=
':') {
1262 switch(strlen(pBuf)) {
1272 (((
unsigned long)pBuf[1])<<16) +
1277 (((
unsigned long)pBuf[1])<<16) +
1278 (((
unsigned long)pBuf[2])<<8) +
1284 (((
unsigned long)pBuf[1])<<16) +
1285 (((
unsigned long)pBuf[2])<<8) +
1286 (((
unsigned long)pBuf[3])));
1289 sscanf(pBuf+2,
"%x", &v);
1292 (((
unsigned long)pBuf[1])<<16) +
1297 sscanf(pBuf,
"%x", &v);
1351 if (!strcmp(szSig+1,
"CLR")) {
1356 else if (!strncmp(szSig,
"MCH", 3)) {
1377 switch (nStorageType) {
1408 m_str =
new std::string;
1431 ((val>>20)&0xf)/10.0 + ((val>>16)&0xf)/100.0);
1433 sprintf(
m_szStr,
"%.2lf", ver);
1441 ((val >> 4) & 0xf) / 10.0 + (val & 0xf) / 100.0);
1443 sprintf(
m_szStr,
"%.2lf", ver);
1451 strcpy(
m_szStr,
"Transparency");
1453 strcpy(
m_szStr,
"Reflective");
1458 strcpy(
m_szStr+l,
" | Matte");
1460 strcpy(
m_szStr+l,
" | Glossy");
1468 strcpy(
m_szStr,
"EmbeddedProfileTrue");
1470 strcpy(
m_szStr,
"EmbeddedProfileFalse");
1475 strcpy(
m_szStr+l,
" | UseWithEmbeddedDataOnly");
1477 strcpy(
m_szStr+l,
" | UseAnywhere");
1483 strcpy(
m_szStr+l,
" | MCSNeedsSubset");
1485 strcpy(
m_szStr+l,
" | MCSConnectAny");
1489 strcpy(
m_szStr + l,
" | ExtendedRangePCS");
1507 return m_str->c_str();
1515 return m_str->c_str();
1524 return "DigitalCamera";
1527 return "FilmScanner";
1530 return "ReflectiveScanner";
1533 return "InkJetPrinter";
1536 return "ThermalWaxPrinter";
1539 return "ElectrophotographicPrinter";
1542 return "ElectrostaticPrinter";
1545 return "DyeSublimationPrinter";
1548 return "PhotographicPaperPrinter";
1551 return "FilmWriter";
1554 return "VideoMonitor";
1557 return "VideoCamera";
1560 return "ProjectionTelevision";
1563 return "CRTDisplay";
1575 return "PhotoImageSetter";
1581 return "OffsetLithography";
1584 return "Silkscreen";
1587 return "Flexography";
1608 return m_str->c_str();
1617 const char *ptr = sigPath.c_str();
1622 while(*ptr && *ptr!=
':') {
1682 return "MCH1Data/1ColorData";
1685 return "MCH2Data/2ColorData";
1688 return "MCH3Data/3ColorData";
1691 return "MCH4Data/4ColorData";
1694 return "MCH5Data/5ColorData";
1697 return "MCH6Data/6ColorData";
1700 return "MCH7Data/7ColorData";
1703 return "MCH8Data/8ColorData";
1706 return "MCH9Data/9ColorData";
1709 return "MCHAData/10ColorData";
1712 return "MCHBData/11ColorData";
1715 return "MCHCData/12ColorData";
1718 return "MCHDData/13ColorData";
1721 return "MCHEData/14ColorData";
1724 return "MCHFData/15ColorData";
1761 sprintf(
m_szStr,
"0x%XColorData", nChan);
1773 return "NoSpectralData";
1808 return "InputClass";
1811 return "DisplayClass";
1814 return "OutputClass";
1820 return "AbstractClass";
1823 return "ColorSpaceClass";
1826 return "NamedColorClass";
1829 return "ColorEncodingClass";
1832 return "MaterialIdentificationClass";
1835 return "MaterialVisualizationClass";
1838 return "MaterialLinkClass";
1890 return "ColorGear Lite";
1893 return "ColorGear C";
1905 return "Harlequin RIP";
1908 return "Argyll CMS";
1914 return "Heidelberg";
1917 return "Little CMS";
1923 return "Konica Minolta";
1932 return "DemoIccMAX";
1935 return "Rolf Gierling Multitools";
1944 return "the imaging factory";
1950 return "Ware To Go";
1953 return "Windows Color System";
1968 return "perceptualReferenceMediumGamut";
1980 return "Scene Colorimetry Estimates";
1983 return "Scene Appearance Estimates";
1986 return "Focal Plane Colorimetry Estimates";
1989 return "Reflection Hardcopy Original Colorimetry";
1992 return "Reflection Print Output Colorimetry";
2070 std::snprintf(
m_szStr,
sizeof(
m_szStr),
"Unknown Flare '%d'", (
int)val);
2080 return "Geometry Unknown";
2082 return "Geometry 0-45 or 45-0";
2084 return "Geometry 0-d or d-0";
2086 std::snprintf(
m_szStr,
sizeof(
m_szStr),
"Unknown Geometry '%d'", (
int)val);
2095 return "Perceptual";
2101 return "Relative Colorimetric";
2104 return "Saturation";
2110 return "Absolute Colorimetric";
2113 sprintf(
m_szStr,
"Unknown Intent '%d", val);
2122 return "Spot Shape Unknown";
2125 return "Spot Shape Printer Default";
2128 return "Spot Shape Round";
2131 return "Spot Shape Diamond";
2134 return "Spot Shape Ellipse";
2137 return "Spot Shape Line";
2140 return "Spot Shape Square";
2143 return "Spot Shape Cross";
2146 sprintf(
m_szStr,
"Unknown Spot Shape '%d", val);
2155 return "Unknown observer";
2158 return "CIE 1931 (two degree) standard observer";
2161 return "CIE 1964 (ten degree) standard observer";
2164 sprintf(
m_szStr,
"Unknown Observer '%d", val);
2173 return "Illuminant Unknown";
2176 return "Illuminant D50";
2179 return "Illuminant D65";
2182 return "Illuminant D93";
2185 return "Illuminant F2";
2188 return "Illuminant D55";
2191 return "Illuminant A";
2194 return "Illuminant EquiPowerE";
2197 return "Illuminant F8";
2200 return "Illuminant Black Body";
2203 return "Illuminant Daylight";
2206 return "Illuminant B";
2209 return "Illuminant C";
2212 return "Illuminant F1";
2215 return "Illuminant F3";
2218 return "Illuminant F4";
2221 return "Illuminant F5";
2224 return "Illuminant F6";
2227 return "Illuminant F7";
2230 return "Illuminant F9";
2233 return "Illuminant F10";
2236 return "Illuminant F11";
2239 return "Illuminant F12";
2242 sprintf(
m_szStr,
"Unknown Illuminant '%d", val);
2266 return "DIN with no polarizing filter";
2269 return "DIN with polarizing filter";
2272 return "Narrow band DIN with no polarizing filter";
2275 return "Narrow band DIN with polarizing filter";
2280 buf[0] = (char)(
sig>>24);
2281 buf[1] = (char)(
sig>>16);
2282 buf[2] = (char)(
sig>>8);
2283 buf[3] = (char)(
sig);
2286 sprintf(
m_szStr,
"Unknown Measurement Type '%s'", buf);
2298 for (i=0; i<16; i++, ptr+=2) {
2299 sprintf(ptr,
"%02x", profileID->
ID8[i]);
2309 for (i=0; i<16; i++) {
2310 if (profileID->
ID8[i])
2321 return "ITU-R BT.709";
2324 return "SMPTE RP145-1994";
2327 return "EBU Tech.3213-E";
2333 return "Customized Encoding";
2344 sReport +=
" - XYZNumber: Negative X value!\n";
2351 sReport +=
" - XYZNumber: Negative Y value!\n";
2358 sReport +=
" - XYZNumber: Negative Z value!\n";
2372 sReport +=
" - FloatXYZNumber: Negative X value!\n";
2379 sReport +=
" - FloatXYZNumber: Negative Y value!\n";
2386 sReport +=
" - FloatXYZNumber: Negative Z value!\n";
2400 sReport +=
" - spectralRange: end wavelength must be greater than start wavelength!\n";
2404 if (range.
steps<2) {
2407 sReport +=
" - spectralRange: wavelength range must have at least two steps!\n";
2422 newtime = localtime( &long_time );
2425 if (dateTime.
year<1992) {
2428 sprintf(buf,
" - %u: Invalid year!\n",dateTime.
year);
2433 int year = newtime->tm_year+1900;
2434 if (newtime->tm_mon==11 && newtime->tm_mday==31) {
2435 if (dateTime.
year>(year+1)) {
2438 sprintf(buf,
" - %u: Invalid year!\n",dateTime.
year);
2444 if (dateTime.
year>year) {
2447 sprintf(buf,
" - %u: Invalid year!\n",dateTime.
year);
2456 sprintf(buf,
" - %u: Invalid month!\n",dateTime.
month);
2461 if (dateTime.
day<1 || dateTime.
day>31) {
2464 sprintf(buf,
" - %u: Invalid day!\n",dateTime.
day);
2469 if (dateTime.
month==2) {
2470 if (dateTime.
day>29) {
2473 sprintf(buf,
" - %u: Invalid day for February!\n",dateTime.
day);
2478 if (dateTime.
day==29) {
2479 if ((dateTime.
year%4)!=0) {
2482 sprintf(buf,
" - %u: Invalid day for February, year is not a leap year(%u)!\n",dateTime.
day, dateTime.
year);
2489 if (dateTime.
hours>23) {
2492 sprintf(buf,
" - %u: Invalid hour!\n",dateTime.
hours);
2500 sprintf(buf,
" - %u: Invalid minutes!\n",dateTime.
minutes);
2508 sprintf(buf,
" - %u: Invalid seconds!\n",dateTime.
hours);
2520 if (fabs(XYZ.
Y - 1.0) < 0.01) {
2523 sReport +=
" - XYZNumber appears to be normalized! Y value should reflect absolute luminance.\n";
2612#ifdef USEREFICCMAXNAMESPACE
icFloatNumber icD50XYZ[3]
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
icUInt16Number icU1Fixed15Number
icUInt16Number icU8Fixed8Number
#define icSigDevLabData
Additional convenience color space signatures to distinguish between device encoding and PCS encoding...
File: IccStructFactory.h.
icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Name: icMaxStatus.
std::string icGetSigPath(icUInt32Number nSig)
icU1Fixed15Number icDtoUSF(icFloatNumber num)
const icChar * icGetColorSig(icChar *pBuf, icUInt32Number nSig, bool bGetHexVal)
icFloatNumber icU8toAB(icUInt8Number num)
icFloatNumber icD50XYZxx[3]
const char * icMsgValidateWarning
icFloatNumber icU16toF(icUInt16Number num)
icUInt8Number icABtoU8(icFloatNumber num)
static icFloatNumber icSq(icFloatNumber x)
void icXyzToPcs(icFloatNumber *XYZ)
icFloatNumber icUCFtoD(icU8Fixed8Number num)
icFloatNumber icCubeth(icFloatNumber v)
bool icValidTagPos(const icPositionNumber &pos, icUInt32Number nTagHeaderSize, icUInt32Number nTagSize, bool bAllowEmpty)
Name: icValidTagPos.
static icInt32Number icHexDigit(icChar digit)
void icDeNormXyz(icFloatNumber *XYZ, icFloatNumber *WhiteXYZ)
static bool icIsS15Fixed16NumberNear(icS15Fixed16Number F, icFloatNumber D)
icU16Fixed16Number icDtoUF(icFloatNumber num)
void icXyzFromPcs(icFloatNumber *XYZ)
Floating point encoding of XYZ in PCS is in range 0.0 to 1.0 (Note: X=1.0 is encoded as about 0....
bool icSameSpectralRange(const icSpectralRange &rng1, const icSpectralRange &rng2)
void icMatrixMultiply3x3(icFloatNumber *result, const icFloatNumber *l, const icFloatNumber *r)
Name: icMatrixMultiply3x3.
bool icMatrixInvert3x3(icFloatNumber *M)
Name: icMatrixInvert3x3.
icFloatNumber icUFtoD(icU16Fixed16Number num)
void icVectorApplyMatrix3x3(icFloatNumber *result, const icFloatNumber *m, const icFloatNumber *v)
Name: icVectorApplyMatrix3x3.
icUInt32Number icGetSpaceSamples(icColorSpaceSignature sig)
bool icIsIllumD50(icXYZNumber xyz)
void icLch2Lab(icFloatNumber *Lab, icFloatNumber *Lch)
void icMatrixDump(std::string &sDump, icS15Fixed16Number *pMatrix)
icSignature icGetLastSigPathSig(std::string sigPath)
bool icIsNear(icFloatNumber v1, icFloatNumber v2, icFloatNumber nearRange)
Name: icIsNear.
void * icRealloc(void *ptr, size_t size)
Name: icRealloc.
icFloatNumber icFtoD(icS15Fixed16Number num)
const icChar * icGetColorSigStr(icChar *pBuf, icUInt32Number nSig)
icFloatNumber icICubeth(icFloatNumber v)
icFloatNumber icU8toF(icUInt8Number num)
icUInt32Number icGetSpectralSpaceSamples(const icHeader *pHdr)
void icLabFromPcs(icFloatNumber *Lab)
Floating point encoding of Lab in PCS is in range 0.0 to 1.0.
void icNormXyz(icFloatNumber *XYZ, icFloatNumber *WhiteXYZ)
icFloatNumber icMin(icFloatNumber v1, icFloatNumber v2)
icSignature icGetSecondSigPathSig(std::string sigPath)
icUInt8Number icFtoU8(icFloatNumber num)
const char * icMsgValidateInformation
void icLabToPcs(icFloatNumber *Lab)
icFloatNumber icRmsDif(const icFloatNumber *v1, const icFloatNumber *v2, icUInt32Number nSample)
void icColorValue(icChar *szValue, icFloatNumber nValue, icColorSpaceSignature csSig, int nIndex, bool bUseLegacy)
icUInt32Number icGetMaterialColorSpaceSamples(icMaterialColorSignature sig)
void icLabtoXYZ(icFloatNumber *XYZ, const icFloatNumber *Lab, const icFloatNumber *WhiteXYZ)
double icRoundOffset(double v)
Name: icRoundOffset.
icFloat16Number icFtoF16(icFloat32Number num)
bool icIsSpaceCLR(icColorSpaceSignature sig)
icS15Fixed16Number icDtoF(icFloatNumber num)
void icMemDump(std::string &sDump, void *pBuf, icUInt32Number nNum)
icUInt32Number icIntMax(icUInt32Number v1, icUInt32Number v2)
icFloatNumber icDeltaE(const icFloatNumber *lab1, const icFloatNumber *lab2)
const char * icMsgValidateNonCompliant
icUInt16Number icFtoU16(icFloatNumber num)
icFloatNumber icUSFtoD(icU1Fixed15Number num)
icFloatNumber icMax(icFloatNumber v1, icFloatNumber v2)
icUInt32Number icIntMin(icUInt32Number v1, icUInt32Number v2)
icUInt8Number icGetStorageTypeBytes(icUInt16Number nStorageType)
void icLab2Lch(icFloatNumber *Lch, icFloatNumber *Lab)
void icColorIndexName(icChar *szName, icColorSpaceSignature csSig, int nIndex, int nColors, const icChar *szUnknown)
const char * icMsgValidateCriticalError
icUInt32Number icGetSigVal(const icChar *pBuf)
const icChar * icGet16bitSig(icChar *pBuf, icUInt16Number nSig, bool bGetHexVal)
bool icValidOverlap(const icPositionNumber &pos1, const icPositionNumber &pos2, bool bAllowSame)
Name: icValidOverlap.
void icXYZtoLab(icFloatNumber *Lab, const icFloatNumber *XYZ, const icFloatNumber *WhiteXYZ)
icFloatNumber icF16toF(icFloat16Number num)
const icChar * icGetSigStr(icChar *pBuf, icUInt32Number nSig)
icSignature icGetFirstSigPathSig(std::string sigPath)
const icChar * icGetSig(icChar *pBuf, icUInt32Number nSig, bool bGetHexVal)
icU8Fixed8Number icDtoUCF(icFloatNumber num)
icValidateStatus icMaxStatus(icValidateStatus s1, icValidateStatus s2)
Name: icMaxStatus.
const char * icMsgValidateWarning
const icChar * icGetSig(icChar *pBuf, icUInt32Number sig, bool bGetHexVal=true)
icUInt32Number icGetSpaceSamples(icColorSpaceSignature sig)
#define icDefaultPixelBufSize
Type: Class.
const char * icMsgValidateNonCompliant
icUInt32Number icGetSigVal(const icChar *pBuf)
icFloat32Number icF16toF(icFloat16Number num)
unsigned int icUInt32Number
static bool GetArraySigName(std::string &arrayName, icArraySignature arrayTypeSig, bool bFillUnknown=true)
Function: GetArraySigName(structTypeSig) Get display name of structTypeSig.
bool IsProfileIDCalculated(icProfileID *profileID)
const icChar * GetVersionName(icUInt32Number val)
const icChar * GetTechnologySigName(icTechnologySignature sig)
const icChar * GetSpectralColorSigName(icSpectralColorSignature sig)
const icChar * GetStructSigName(icStructSignature sig)
const icChar * GetColorantEncoding(icColorantEncoding colorant)
const icChar * GetColorimetricIntentImageStateName(icColorimetricIntentImageStateSignature sig)
const icChar * GetCmmSigName(icCmmSignature sig)
const icChar * GetArraySigName(icArraySignature sig)
const icChar * GetProfileClassSigName(icProfileClassSignature sig)
bool IsValidSpace(icColorSpaceSignature sig)
const icChar * GetTagSigName(icTagSignature sig)
bool IsValidSpectralSpace(icColorSpaceSignature sig)
const icChar * GetIlluminantName(icIlluminant val)
const icChar * GetElementTypeSigName(icElemTypeSignature sig)
const icChar * GetUnknownName(icUInt32Number val)
const icChar * GetSpotShapeName(icSpotShape val)
const icChar * GetProfileFlagsName(icUInt32Number val, bool bCheckMCS=false)
const icChar * GetMeasurementUnit(icSignature sig)
const icChar * GetPlatformSigName(icPlatformSignature sig)
const icChar * GetProfileID(icProfileID *profileID)
const icChar * GetPathEntrySigName(icUInt32Number val)
const icChar * GetMeasurementGeometryName(icMeasurementGeometry val)
const icChar * GetMeasurementFlareName(icMeasurementFlare val)
const icChar * GetColorSpaceSigName(icColorSpaceSignature sig)
const icChar * GetTagTypeSigName(icTagTypeSignature sig)
const icChar * GetSigName(icUInt32Number val)
const icChar * GetReferenceMediumGamutSigNameName(icReferenceMediumGamutSignature sig)
const icChar * GetDeviceAttrName(icUInt64Number val)
icValidateStatus CheckLuminance(std::string &sReport, const icFloatXYZNumber &XYZ, std::string sDesc="")
const icChar * GetStandardObserverName(icStandardObserver val)
std::string GetSigPathName(std::string sigPath)
const icChar * GetSubClassVersionName(icUInt32Number val)
const icChar * GetRenderingIntentName(icRenderingIntent val, bool bIsV5=false)
icValidateStatus CheckData(std::string &sReport, const icDateTimeNumber &dateTime, std::string sDesc="")
static bool GetElementSigName(std::string &elemName, icElemTypeSignature elemTypeSig)
Function: GetElementSigName(elemTypeSig) Get display name of elemTypeSig.
CIccPixelBuf(int nChan=100)
static bool GetStructSigName(std::string &structName, icStructSignature structTypeSig, bool bFillUnknown=true)
Function: GetStructSigName(structTypeSig) Get display name of structTypeSig.
static const icChar * GetTagSigName(icTagSignature tagTypeSig)
Function: GetTagSigName(tagSig) Get display name of tagSig.
static const icChar * GetTagTypeSigName(icTagTypeSignature tagTypeSig)
Function: GetTagTypeSigName(tagTypeSig) Get display name of tagTypeSig.
The base date time number.