summaryrefslogtreecommitdiff
path: root/testbed
diff options
context:
space:
mode:
authorMarti Maria <info@littlecms.com>2010-03-15 16:52:35 +0100
committerMarti Maria <info@littlecms.com>2010-03-15 16:52:35 +0100
commitbda1fa929aea10ce50f37aeaf72b579630b07c14 (patch)
tree153d07c58d659a1e7e1e677ee524b812d9b7b1c2 /testbed
parentad90a868d1e0188637f78f94c02d7b79be7d1e7d (diff)
downloadlcms2-bda1fa929aea10ce50f37aeaf72b579630b07c14.tar.gz
Move StrideIn/StrideOut as parameters for formatters
Diffstat (limited to 'testbed')
-rw-r--r--testbed/testcms2.c2154
1 files changed, 1078 insertions, 1076 deletions
diff --git a/testbed/testcms2.c b/testbed/testcms2.c
index a12a3bf..398c41f 100644
--- a/testbed/testcms2.c
+++ b/testbed/testcms2.c
@@ -37,7 +37,7 @@
#endif
// A single check. Returns 1 if success, 0 if failed
-typedef cmsInt32Number (*TestFn)(void);
+typedef cmsInt32Number (*TestFn)(void);
// A parametric Tone curve test function
typedef cmsFloat32Number (* dblfnptr)(cmsFloat32Number x, const cmsFloat64Number Params[]);
@@ -47,9 +47,9 @@ typedef cmsFloat32Number (* dblfnptr)(cmsFloat32Number x, const cmsFloat64Number
static char ReasonToFailBuffer[TEXT_ERROR_BUFFER_SIZE];
static char SubTestBuffer[TEXT_ERROR_BUFFER_SIZE];
-static cmsInt32Number TotalTests = 0, TotalFail = 0;
+static cmsInt32Number TotalTests = 0, TotalFail = 0;
static cmsBool TrappedError;
-static cmsInt32Number SimultaneousErrors;
+static cmsInt32Number SimultaneousErrors;
#define cmsmin(a, b) (((a) < (b)) ? (a) : (b))
@@ -58,9 +58,9 @@ static cmsInt32Number SimultaneousErrors;
static
void Die(const char* Reason)
{
- printf("\n\nArrrgggg!!: %s!\n\n", Reason);
- fflush(stdout);
- exit(1);
+ printf("\n\nArrrgggg!!: %s!\n\n", Reason);
+ fflush(stdout);
+ exit(1);
}
// Memory management replacement -----------------------------------------------------------------------------
@@ -74,12 +74,12 @@ static cmsUInt32Number SingleHit, MaxAllocated=0, TotalMemory=0;
// malloc are built in a way similar to that, but I do on my own to be portable.
typedef struct {
cmsUInt32Number KeepSize;
- cmsUInt32Number Align8;
- cmsContext WhoAllocated; // Some systems do need pointers aligned to 8-byte boundaries.
+ cmsUInt32Number Align8;
+ cmsContext WhoAllocated; // Some systems do need pointers aligned to 8-byte boundaries.
-} _cmsMemoryBlock;
-
-#define SIZE_OF_MEM_HEADER (sizeof(_cmsMemoryBlock))
+} _cmsMemoryBlock;
+
+#define SIZE_OF_MEM_HEADER (sizeof(_cmsMemoryBlock))
// This is a fake thread descriptor used to check thread integrity.
// Basically it returns a different threadID each time it is called.
@@ -88,7 +88,7 @@ typedef struct {
static
cmsContext DbgThread(void)
{
- static cmsUInt32Number n = 1;
+ static cmsUInt32Number n = 1;
return (cmsContext) n++;
}
@@ -97,7 +97,7 @@ cmsContext DbgThread(void)
static
void* DebugMalloc(cmsContext ContextID, cmsUInt32Number size)
{
- _cmsMemoryBlock* blk;
+ _cmsMemoryBlock* blk;
if (size <= 0) {
Die("malloc requested with zero bytes");
@@ -111,26 +111,26 @@ void* DebugMalloc(cmsContext ContextID, cmsUInt32Number size)
if (size > SingleHit)
SingleHit = size;
- blk = (_cmsMemoryBlock*) malloc(size + SIZE_OF_MEM_HEADER);
+ blk = (_cmsMemoryBlock*) malloc(size + SIZE_OF_MEM_HEADER);
if (blk == NULL) return NULL;
blk ->KeepSize = size;
blk ->WhoAllocated = ContextID;
- return (void*) ((cmsUInt8Number*) blk + SIZE_OF_MEM_HEADER);
+ return (void*) ((cmsUInt8Number*) blk + SIZE_OF_MEM_HEADER);
}
// The free routine
static
void DebugFree(cmsContext ContextID, void *Ptr)
{
- _cmsMemoryBlock* blk;
+ _cmsMemoryBlock* blk;
if (Ptr == NULL) {
Die("NULL free (which is a no-op in C, but may be an clue of something going wrong)");
}
- blk = (_cmsMemoryBlock*) (((cmsUInt8Number*) Ptr) - SIZE_OF_MEM_HEADER);
+ blk = (_cmsMemoryBlock*) (((cmsUInt8Number*) Ptr) - SIZE_OF_MEM_HEADER);
TotalMemory -= blk ->KeepSize;
if (blk ->WhoAllocated != ContextID) {
@@ -144,14 +144,14 @@ void DebugFree(cmsContext ContextID, void *Ptr)
static
void * DebugRealloc(cmsContext ContextID, void* Ptr, cmsUInt32Number NewSize)
{
- _cmsMemoryBlock* blk;
+ _cmsMemoryBlock* blk;
void* NewPtr;
cmsUInt32Number max_sz;
NewPtr = DebugMalloc(ContextID, NewSize);
if (Ptr == NULL) return NewPtr;
- blk = (_cmsMemoryBlock*) (((cmsUInt8Number*) Ptr) - SIZE_OF_MEM_HEADER);
+ blk = (_cmsMemoryBlock*) (((cmsUInt8Number*) Ptr) - SIZE_OF_MEM_HEADER);
max_sz = blk -> KeepSize > NewSize ? NewSize : blk ->KeepSize;
memmove(NewPtr, Ptr, max_sz);
DebugFree(ContextID, Ptr);
@@ -234,7 +234,7 @@ static
void Check(const char* Title, TestFn Fn)
{
printf("Checking %s ...", Title);
- fflush(stdout);
+ fflush(stdout);
ReasonToFailBuffer[0] = 0;
SubTestBuffer[0] = 0;
@@ -262,8 +262,8 @@ void Check(const char* Title, TestFn Fn)
printf("\tMore than one (%d) errors were reported\n", SimultaneousErrors);
TotalFail++;
- }
- fflush(stdout);
+ }
+ fflush(stdout);
}
// Dump a tone curve, for easy diagnostic
@@ -322,38 +322,38 @@ cmsHPROFILE Create_AboveRGB(void)
static
cmsHPROFILE Create_Gray22(void)
{
- cmsHPROFILE hProfile;
- cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 2.2);
+ cmsHPROFILE hProfile;
+ cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 2.2);
if (Curve == NULL) return NULL;
hProfile = cmsCreateGrayProfileTHR(DbgThread(), cmsD50_xyY(), Curve);
cmsFreeToneCurve(Curve);
- return hProfile;
+ return hProfile;
}
static
cmsHPROFILE Create_GrayLab(void)
{
- cmsHPROFILE hProfile;
- cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 1.0);
+ cmsHPROFILE hProfile;
+ cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 1.0);
if (Curve == NULL) return NULL;
hProfile = cmsCreateGrayProfileTHR(DbgThread(), cmsD50_xyY(), Curve);
cmsFreeToneCurve(Curve);
- cmsSetPCS(hProfile, cmsSigLabData);
- return hProfile;
+ cmsSetPCS(hProfile, cmsSigLabData);
+ return hProfile;
}
// A CMYK devicelink that adds gamma 3.0 to each channel
static
cmsHPROFILE Create_CMYK_DeviceLink(void)
{
- cmsHPROFILE hProfile;
- cmsToneCurve* Tab[4];
- cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 3.0);
+ cmsHPROFILE hProfile;
+ cmsToneCurve* Tab[4];
+ cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 3.0);
if (Curve == NULL) return NULL;
Tab[0] = Curve;
@@ -366,7 +366,7 @@ cmsHPROFILE Create_CMYK_DeviceLink(void)
cmsFreeToneCurve(Curve);
- return hProfile;
+ return hProfile;
}
@@ -374,9 +374,9 @@ cmsHPROFILE Create_CMYK_DeviceLink(void)
// DONT USE THIS PROFILE FOR ANYTHING, IT IS USELESS BUT FOR TESTING PURPOSES.
typedef struct {
- cmsHTRANSFORM hLab2sRGB;
- cmsHTRANSFORM sRGB2Lab;
- cmsHTRANSFORM hIlimit;
+ cmsHTRANSFORM hLab2sRGB;
+ cmsHTRANSFORM sRGB2Lab;
+ cmsHTRANSFORM hIlimit;
} FakeCMYKParams;
@@ -390,40 +390,40 @@ cmsFloat64Number Clip(cmsFloat64Number v)
}
static
-cmsInt32Number ForwardSampler(register const cmsUInt16Number In[], cmsUInt16Number Out[], void* Cargo)
+cmsInt32Number ForwardSampler(register const cmsUInt16Number In[], cmsUInt16Number Out[], void* Cargo)
{
- FakeCMYKParams* p = (FakeCMYKParams*) Cargo;
- cmsFloat64Number rgb[3], cmyk[4];
- cmsFloat64Number c, m, y, k;
-
- cmsDoTransform(p ->hLab2sRGB, In, rgb, 1);
-
- c = 1 - rgb[0];
+ FakeCMYKParams* p = (FakeCMYKParams*) Cargo;
+ cmsFloat64Number rgb[3], cmyk[4];
+ cmsFloat64Number c, m, y, k;
+
+ cmsDoTransform(p ->hLab2sRGB, In, rgb, 1);
+
+ c = 1 - rgb[0];
m = 1 - rgb[1];
y = 1 - rgb[2];
k = (c < m ? cmsmin(c, y) : cmsmin(m, y));
- // NONSENSE WARNING!: I'm doing this just because this is a test
- // profile that may have ink limit up to 400%. There is no UCR here
- // so the profile is basically useless for anything but testing.
+ // NONSENSE WARNING!: I'm doing this just because this is a test
+ // profile that may have ink limit up to 400%. There is no UCR here
+ // so the profile is basically useless for anything but testing.
cmyk[0] = c;
cmyk[1] = m;
cmyk[2] = y;
cmyk[3] = k;
- cmsDoTransform(p ->hIlimit, cmyk, Out, 1);
+ cmsDoTransform(p ->hIlimit, cmyk, Out, 1);
- return 1;
+ return 1;
}
static
-cmsInt32Number ReverseSampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo)
+cmsInt32Number ReverseSampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo)
{
- FakeCMYKParams* p = (FakeCMYKParams*) Cargo;
- cmsFloat64Number c, m, y, k, rgb[3];
+ FakeCMYKParams* p = (FakeCMYKParams*) Cargo;
+ cmsFloat64Number c, m, y, k, rgb[3];
c = In[0] / 65535.0;
m = In[1] / 65535.0;
@@ -448,107 +448,107 @@ cmsInt32Number ReverseSampler(register const cmsUInt16Number In[], register cmsU
rgb[2] = Clip((1 - y) * (1 - k));
}
- cmsDoTransform(p ->sRGB2Lab, rgb, Out, 1);
- return 1;
-}
-
-
-
-static
-cmsHPROFILE CreateFakeCMYK(cmsFloat64Number InkLimit, cmsBool lUseAboveRGB)
-{
- cmsHPROFILE hICC;
- cmsPipeline* AToB0, *BToA0;
- cmsStage* CLUT;
- cmsContext ContextID;
- FakeCMYKParams p;
- cmsHPROFILE hLab, hsRGB, hLimit;
- cmsUInt16Number cmykfrm;
-
-
- if (lUseAboveRGB)
- hsRGB = Create_AboveRGB();
- else
- hsRGB = cmsCreate_sRGBProfile();
-
- hLab = cmsCreateLab4Profile(NULL);
- hLimit = cmsCreateInkLimitingDeviceLink(cmsSigCmykData, InkLimit);
-
- cmykfrm = BYTES_SH(0)|CHANNELS_SH(4);
- p.hLab2sRGB = cmsCreateTransform(hLab, TYPE_Lab_16, hsRGB, TYPE_RGB_DBL, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE);
- p.sRGB2Lab = cmsCreateTransform(hsRGB, TYPE_RGB_DBL, hLab, TYPE_Lab_16, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE);
- p.hIlimit = cmsCreateTransform(hLimit, cmykfrm, NULL, TYPE_CMYK_16, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE);
-
- cmsCloseProfile(hLab); cmsCloseProfile(hsRGB); cmsCloseProfile(hLimit);
-
- ContextID = DbgThread();
- hICC = cmsCreateProfilePlaceholder(ContextID);
- if (!hICC) return NULL;
-
- cmsSetProfileVersion(hICC, 4.2);
-
- cmsSetDeviceClass(hICC, cmsSigOutputClass);
- cmsSetColorSpace(hICC, cmsSigCmykData);
- cmsSetPCS(hICC, cmsSigLabData);
+ cmsDoTransform(p ->sRGB2Lab, rgb, Out, 1);
+ return 1;
+}
+
+
+
+static
+cmsHPROFILE CreateFakeCMYK(cmsFloat64Number InkLimit, cmsBool lUseAboveRGB)
+{
+ cmsHPROFILE hICC;
+ cmsPipeline* AToB0, *BToA0;
+ cmsStage* CLUT;
+ cmsContext ContextID;
+ FakeCMYKParams p;
+ cmsHPROFILE hLab, hsRGB, hLimit;
+ cmsUInt16Number cmykfrm;
+
+
+ if (lUseAboveRGB)
+ hsRGB = Create_AboveRGB();
+ else
+ hsRGB = cmsCreate_sRGBProfile();
+
+ hLab = cmsCreateLab4Profile(NULL);
+ hLimit = cmsCreateInkLimitingDeviceLink(cmsSigCmykData, InkLimit);
+
+ cmykfrm = BYTES_SH(0)|CHANNELS_SH(4);
+ p.hLab2sRGB = cmsCreateTransform(hLab, TYPE_Lab_16, hsRGB, TYPE_RGB_DBL, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE);
+ p.sRGB2Lab = cmsCreateTransform(hsRGB, TYPE_RGB_DBL, hLab, TYPE_Lab_16, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE);
+ p.hIlimit = cmsCreateTransform(hLimit, cmykfrm, NULL, TYPE_CMYK_16, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE);
+
+ cmsCloseProfile(hLab); cmsCloseProfile(hsRGB); cmsCloseProfile(hLimit);
+
+ ContextID = DbgThread();
+ hICC = cmsCreateProfilePlaceholder(ContextID);
+ if (!hICC) return NULL;
+
+ cmsSetProfileVersion(hICC, 4.2);
+
+ cmsSetDeviceClass(hICC, cmsSigOutputClass);
+ cmsSetColorSpace(hICC, cmsSigCmykData);
+ cmsSetPCS(hICC, cmsSigLabData);
BToA0 = cmsPipelineAlloc(ContextID, 3, 4);
- if (BToA0 == NULL) return 0;
- CLUT = cmsStageAllocCLut16bit(ContextID, 17, 3, 4, NULL);
- if (CLUT == NULL) return 0;
- if (!cmsStageSampleCLut16bit(CLUT, ForwardSampler, &p, 0)) return 0;
-
- cmsPipelineInsertStage(BToA0, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, 3));
- cmsPipelineInsertStage(BToA0, cmsAT_END, CLUT);
- cmsPipelineInsertStage(BToA0, cmsAT_END, _cmsStageAllocIdentityCurves(ContextID, 4));
-
+ if (BToA0 == NULL) return 0;
+ CLUT = cmsStageAllocCLut16bit(ContextID, 17, 3, 4, NULL);
+ if (CLUT == NULL) return 0;
+ if (!cmsStageSampleCLut16bit(CLUT, ForwardSampler, &p, 0)) return 0;
+
+ cmsPipelineInsertStage(BToA0, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, 3));
+ cmsPipelineInsertStage(BToA0, cmsAT_END, CLUT);
+ cmsPipelineInsertStage(BToA0, cmsAT_END, _cmsStageAllocIdentityCurves(ContextID, 4));
+
if (!cmsWriteTag(hICC, cmsSigBToA0Tag, (void*) BToA0)) return 0;
- cmsPipelineFree(BToA0);
-
- AToB0 = cmsPipelineAlloc(ContextID, 4, 3);
- if (AToB0 == NULL) return 0;
- CLUT = cmsStageAllocCLut16bit(ContextID, 17, 4, 3, NULL);
- if (CLUT == NULL) return 0;
- if (!cmsStageSampleCLut16bit(CLUT, ReverseSampler, &p, 0)) return 0;
-
- cmsPipelineInsertStage(AToB0, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, 4));
- cmsPipelineInsertStage(AToB0, cmsAT_END, CLUT);
- cmsPipelineInsertStage(AToB0, cmsAT_END, _cmsStageAllocIdentityCurves(ContextID, 3));
-
+ cmsPipelineFree(BToA0);
+
+ AToB0 = cmsPipelineAlloc(ContextID, 4, 3);
+ if (AToB0 == NULL) return 0;
+ CLUT = cmsStageAllocCLut16bit(ContextID, 17, 4, 3, NULL);
+ if (CLUT == NULL) return 0;
+ if (!cmsStageSampleCLut16bit(CLUT, ReverseSampler, &p, 0)) return 0;
+
+ cmsPipelineInsertStage(AToB0, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, 4));
+ cmsPipelineInsertStage(AToB0, cmsAT_END, CLUT);
+ cmsPipelineInsertStage(AToB0, cmsAT_END, _cmsStageAllocIdentityCurves(ContextID, 3));
+
if (!cmsWriteTag(hICC, cmsSigAToB0Tag, (void*) AToB0)) return 0;
- cmsPipelineFree(AToB0);
+ cmsPipelineFree(AToB0);
- cmsDeleteTransform(p.hLab2sRGB);
- cmsDeleteTransform(p.sRGB2Lab);
- cmsDeleteTransform(p.hIlimit);
+ cmsDeleteTransform(p.hLab2sRGB);
+ cmsDeleteTransform(p.sRGB2Lab);
+ cmsDeleteTransform(p.hIlimit);
- cmsLinkTag(hICC, cmsSigAToB1Tag, cmsSigAToB0Tag);
+ cmsLinkTag(hICC, cmsSigAToB1Tag, cmsSigAToB0Tag);
cmsLinkTag(hICC, cmsSigAToB2Tag, cmsSigAToB0Tag);
- cmsLinkTag(hICC, cmsSigBToA1Tag, cmsSigBToA0Tag);
+ cmsLinkTag(hICC, cmsSigBToA1Tag, cmsSigBToA0Tag);
cmsLinkTag(hICC, cmsSigBToA2Tag, cmsSigBToA0Tag);
- return hICC;
+ return hICC;
}
// Does create several profiles for latter use------------------------------------------------------------------------------------------------
static
-cmsInt32Number OneVirtual(cmsHPROFILE h, const char* SubTestTxt, const char* FileName)
+cmsInt32Number OneVirtual(cmsHPROFILE h, const char* SubTestTxt, const char* FileName)
{
- SubTest(SubTestTxt);
- if (h == NULL) return 0;
+ SubTest(SubTestTxt);
+ if (h == NULL) return 0;
- if (!cmsSaveProfileToFile(h, FileName)) return 0;
- cmsCloseProfile(h);
+ if (!cmsSaveProfileToFile(h, FileName)) return 0;
+ cmsCloseProfile(h);
- h = cmsOpenProfileFromFile(FileName, "r");
- if (h == NULL) return 0;
+ h = cmsOpenProfileFromFile(FileName, "r");
+ if (h == NULL) return 0;
- // Do some teste....
+ // Do some teste....
- cmsCloseProfile(h);
+ cmsCloseProfile(h);
- return 1;
+ return 1;
}
@@ -556,7 +556,7 @@ cmsInt32Number OneVirtual(cmsHPROFILE h, const char* SubTestTxt, const char* Fil
// This test checks the ability of lcms2 to save its built-ins as valid profiles.
// It does not check the functionality of such profiles
static
-cmsInt32Number CreateTestProfiles(void)
+cmsInt32Number CreateTestProfiles(void)
{
cmsHPROFILE h;
@@ -570,17 +570,17 @@ cmsInt32Number CreateTestProfiles(void)
// ----
- h = Create_Gray22();
+ h = Create_Gray22();
if (!OneVirtual(h, "Gray profile", "graylcms2.icc")) return 0;
// ----
- h = Create_GrayLab();
- if (!OneVirtual(h, "Gray Lab profile", "glablcms2.icc")) return 0;
-
- // ----
-
- h = Create_CMYK_DeviceLink();
+ h = Create_GrayLab();
+ if (!OneVirtual(h, "Gray Lab profile", "glablcms2.icc")) return 0;
+
+ // ----
+
+ h = Create_CMYK_DeviceLink();
if (!OneVirtual(h, "Linearization profile", "linlcms2.icc")) return 0;
// -------
@@ -613,10 +613,10 @@ cmsInt32Number CreateTestProfiles(void)
h = cmsCreateBCHSWabstractProfileTHR(DbgThread(), 17, 0, 0, 0, 0, 5000, 6000);
if (!OneVirtual(h, "BCHS profile", "bchslcms2.icc")) return 0;
- // ---
+ // ---
- h = CreateFakeCMYK(300, FALSE);
- if (!OneVirtual(h, "Fake CMYK profile", "lcms2cmyk.icc")) return 0;
+ h = CreateFakeCMYK(300, FALSE);
+ if (!OneVirtual(h, "Fake CMYK profile", "lcms2cmyk.icc")) return 0;
return 1;
}
@@ -624,7 +624,7 @@ cmsInt32Number CreateTestProfiles(void)
static
void RemoveTestProfiles(void)
{
- remove("sRGBlcms2.icc");
+ remove("sRGBlcms2.icc");
remove("aRGBlcms2.icc");
remove("graylcms2.icc");
remove("linlcms2.icc");
@@ -634,15 +634,15 @@ void RemoveTestProfiles(void)
remove("xyzlcms2.icc");
remove("nullcms2.icc");
remove("bchslcms2.icc");
- remove("lcms2cmyk.icc");
- remove("glablcms2.icc");
+ remove("lcms2cmyk.icc");
+ remove("glablcms2.icc");
}
// -------------------------------------------------------------------------------------------------
// Check the size of basic types. If this test fails, nothing is going to work anyway
static
-cmsInt32Number CheckBaseTypes(void)
+cmsInt32Number CheckBaseTypes(void)
{
if (sizeof(cmsUInt8Number) != 1) return 0;
if (sizeof(cmsInt8Number) != 1) return 0;
@@ -654,10 +654,10 @@ cmsInt32Number CheckBaseTypes(void)
if (sizeof(cmsInt64Number) != 8) return 0;
if (sizeof(cmsFloat32Number) != 4) return 0;
if (sizeof(cmsFloat64Number) != 8) return 0;
- if (sizeof(cmsSignature) != 4) return 0;
- if (sizeof(cmsU8Fixed8Number) != 2) return 0;
- if (sizeof(cmsS15Fixed16Number) != 4) return 0;
- if (sizeof(cmsU16Fixed16Number) != 4) return 0;
+ if (sizeof(cmsSignature) != 4) return 0;
+ if (sizeof(cmsU8Fixed8Number) != 2) return 0;
+ if (sizeof(cmsS15Fixed16Number) != 4) return 0;
+ if (sizeof(cmsU16Fixed16Number) != 4) return 0;
return 1;
}
@@ -667,9 +667,9 @@ cmsInt32Number CheckBaseTypes(void)
// Are we little or big endian? From Harbison&Steele.
static
-cmsInt32Number CheckEndianess(void)
+cmsInt32Number CheckEndianess(void)
{
- cmsInt32Number BigEndian, IsOk;
+ cmsInt32Number BigEndian, IsOk;
union {
long l;
char c[sizeof (long)];
@@ -695,7 +695,7 @@ cmsInt32Number CheckEndianess(void)
// Check quick floor
static
-cmsInt32Number CheckQuickFloor(void)
+cmsInt32Number CheckQuickFloor(void)
{
if ((_cmsQuickFloor(1.234) != 1) ||
(_cmsQuickFloor(32767.234) != 32767) ||
@@ -713,7 +713,7 @@ cmsInt32Number CheckQuickFloor(void)
// Quick floor restricted to word
static
-cmsInt32Number CheckQuickFloorWord(void)
+cmsInt32Number CheckQuickFloorWord(void)
{
cmsUInt32Number i;
@@ -789,7 +789,7 @@ cmsBool IsGoodWord(const char *title, cmsUInt16Number in, cmsUInt16Number out)
// Fixed point ----------------------------------------------------------------------------------------------
static
-cmsInt32Number TestSingleFixed15_16(cmsFloat64Number d)
+cmsInt32Number TestSingleFixed15_16(cmsFloat64Number d)
{
cmsS15Fixed16Number f = _cmsDoubleTo15Fixed16(d);
cmsFloat64Number RoundTrip = _cms15Fixed16toDouble(f);
@@ -799,7 +799,7 @@ cmsInt32Number TestSingleFixed15_16(cmsFloat64Number d)
}
static
-cmsInt32Number CheckFixedPoint15_16(void)
+cmsInt32Number CheckFixedPoint15_16(void)
{
if (!TestSingleFixed15_16(1.0)) return 0;
if (!TestSingleFixed15_16(2.0)) return 0;
@@ -816,7 +816,7 @@ cmsInt32Number CheckFixedPoint15_16(void)
}
static
-cmsInt32Number TestSingleFixed8_8(cmsFloat64Number d)
+cmsInt32Number TestSingleFixed8_8(cmsFloat64Number d)
{
cmsS15Fixed16Number f = _cmsDoubleTo8Fixed8(d);
cmsFloat64Number RoundTrip = _cms8Fixed8toDouble((cmsUInt16Number) f);
@@ -826,7 +826,7 @@ cmsInt32Number TestSingleFixed8_8(cmsFloat64Number d)
}
static
-cmsInt32Number CheckFixedPoint8_8(void)
+cmsInt32Number CheckFixedPoint8_8(void)
{
if (!TestSingleFixed8_8(1.0)) return 0;
if (!TestSingleFixed8_8(2.0)) return 0;
@@ -847,9 +847,9 @@ cmsInt32Number CheckFixedPoint8_8(void)
// I test tables of 2, 4, 6, and 18 points, that will be exact.
static
-void BuildTable(cmsInt32Number n, cmsUInt16Number Tab[], cmsBool Descending)
+void BuildTable(cmsInt32Number n, cmsUInt16Number Tab[], cmsBool Descending)
{
- cmsInt32Number i;
+ cmsInt32Number i;
for (i=0; i < n; i++) {
cmsFloat64Number v = (cmsFloat64Number) ((cmsFloat64Number) 65535.0 * i ) / (n-1);
@@ -865,7 +865,7 @@ void BuildTable(cmsInt32Number n, cmsUInt16Number Tab[], cmsBool Descending)
// max_err = max allowed error
static
-cmsInt32Number Check1D(cmsInt32Number nNodesToCheck, cmsBool Down, cmsInt32Number max_err)
+cmsInt32Number Check1D(cmsInt32Number nNodesToCheck, cmsBool Down, cmsInt32Number max_err)
{
cmsUInt32Number i;
cmsUInt16Number in, out;
@@ -905,65 +905,65 @@ cmsInt32Number Check1D(cmsInt32Number nNodesToCheck, cmsBool Down, cmsInt32Numb
static
-cmsInt32Number Check1DLERP2(void)
+cmsInt32Number Check1DLERP2(void)
{
return Check1D(2, FALSE, 0);
}
static
-cmsInt32Number Check1DLERP3(void)
+cmsInt32Number Check1DLERP3(void)
{
return Check1D(3, FALSE, 1);
}
static
-cmsInt32Number Check1DLERP4(void)
+cmsInt32Number Check1DLERP4(void)
{
return Check1D(4, FALSE, 0);
}
static
-cmsInt32Number Check1DLERP6(void)
+cmsInt32Number Check1DLERP6(void)
{
return Check1D(6, FALSE, 0);
}
static
-cmsInt32Number Check1DLERP18(void)
+cmsInt32Number Check1DLERP18(void)
{
return Check1D(18, FALSE, 0);
}
static
-cmsInt32Number Check1DLERP2Down(void)
+cmsInt32Number Check1DLERP2Down(void)
{
return Check1D(2, TRUE, 0);
}
static
-cmsInt32Number Check1DLERP3Down(void)
+cmsInt32Number Check1DLERP3Down(void)
{
return Check1D(3, TRUE, 1);
}
static
-cmsInt32Number Check1DLERP6Down(void)
+cmsInt32Number Check1DLERP6Down(void)
{
return Check1D(6, TRUE, 0);
}
static
-cmsInt32Number Check1DLERP18Down(void)
+cmsInt32Number Check1DLERP18Down(void)
{
return Check1D(18, TRUE, 0);
}
static
-cmsInt32Number ExhaustiveCheck1DLERP(void)
+cmsInt32Number ExhaustiveCheck1DLERP(void)
{
cmsUInt32Number j;
@@ -980,7 +980,7 @@ cmsInt32Number ExhaustiveCheck1DLERP(void)
}
static
-cmsInt32Number ExhaustiveCheck1DLERPDown(void)
+cmsInt32Number ExhaustiveCheck1DLERPDown(void)
{
cmsUInt32Number j;
@@ -1002,10 +1002,10 @@ cmsInt32Number ExhaustiveCheck1DLERPDown(void)
// 3D interpolation -------------------------------------------------------------------------------------------------
static
-cmsInt32Number Check3DinterpolationFloatTetrahedral(void)
+cmsInt32Number Check3DinterpolationFloatTetrahedral(void)
{
cmsInterpParams* p;
- cmsInt32Number i;
+ cmsInt32Number i;
cmsFloat32Number In[3], Out[3];
cmsFloat32Number FloatTable[] = { //R G B
@@ -1048,10 +1048,10 @@ Error:
}
static
-cmsInt32Number Check3DinterpolationFloatTrilinear(void)
+cmsInt32Number Check3DinterpolationFloatTrilinear(void)
{
cmsInterpParams* p;
- cmsInt32Number i;
+ cmsInt32Number i;
cmsFloat32Number In[3], Out[3];
cmsFloat32Number FloatTable[] = { //R G B
@@ -1094,10 +1094,10 @@ Error:
}
static
-cmsInt32Number Check3DinterpolationTetrahedral16(void)
+cmsInt32Number Check3DinterpolationTetrahedral16(void)
{
cmsInterpParams* p;
- cmsInt32Number i;
+ cmsInt32Number i;
cmsUInt16Number In[3], Out[3];
cmsUInt16Number Table[] = {
@@ -1119,7 +1119,7 @@ cmsInt32Number Check3DinterpolationTetrahedral16(void)
MaxErr = 0.0;
for (i=0; i < 0xffff; i++) {
- In[0] = In[1] = In[2] = (cmsUInt16Number) i;
+ In[0] = In[1] = In[2] = (cmsUInt16Number) i;
p ->Interpolation.Lerp16(In, Out, p);
@@ -1138,10 +1138,10 @@ Error:
}
static
-cmsInt32Number Check3DinterpolationTrilinear16(void)
+cmsInt32Number Check3DinterpolationTrilinear16(void)
{
cmsInterpParams* p;
- cmsInt32Number i;
+ cmsInt32Number i;
cmsUInt16Number In[3], Out[3];
cmsUInt16Number Table[] = {
@@ -1163,7 +1163,7 @@ cmsInt32Number Check3DinterpolationTrilinear16(void)
MaxErr = 0.0;
for (i=0; i < 0xffff; i++) {
- In[0] = In[1] = In[2] = (cmsUInt16Number) i;
+ In[0] = In[1] = In[2] = (cmsUInt16Number) i;
p ->Interpolation.Lerp16(In, Out, p);
@@ -1183,10 +1183,10 @@ Error:
static
-cmsInt32Number ExaustiveCheck3DinterpolationFloatTetrahedral(void)
+cmsInt32Number ExaustiveCheck3DinterpolationFloatTetrahedral(void)
{
cmsInterpParams* p;
- cmsInt32Number r, g, b;
+ cmsInt32Number r, g, b;
cmsFloat32Number In[3], Out[3];
cmsFloat32Number FloatTable[] = { //R G B
@@ -1234,10 +1234,10 @@ Error:
}
static
-cmsInt32Number ExaustiveCheck3DinterpolationFloatTrilinear(void)
+cmsInt32Number ExaustiveCheck3DinterpolationFloatTrilinear(void)
{
cmsInterpParams* p;
- cmsInt32Number r, g, b;
+ cmsInt32Number r, g, b;
cmsFloat32Number In[3], Out[3];
cmsFloat32Number FloatTable[] = { //R G B
@@ -1258,22 +1258,22 @@ cmsInt32Number ExaustiveCheck3DinterpolationFloatTrilinear(void)
p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT|CMS_LERP_FLAGS_TRILINEAR);
MaxErr = 0.0;
- for (r=0; r < 0xff; r++)
- for (g=0; g < 0xff; g++)
- for (b=0; b < 0xff; b++)
- {
-
- In[0] = (cmsFloat32Number) r / 255.0F;
- In[1] = (cmsFloat32Number) g / 255.0F;
- In[2] = (cmsFloat32Number) b / 255.0F;
-
-
- p ->Interpolation.LerpFloat(In, Out, p);
-
- if (!IsGoodFixed15_16("Channel 1", Out[0], In[0])) goto Error;
- if (!IsGoodFixed15_16("Channel 2", Out[1], (cmsFloat32Number) In[1] / 2.F)) goto Error;
- if (!IsGoodFixed15_16("Channel 3", Out[2], (cmsFloat32Number) In[2] / 4.F)) goto Error;
- }
+ for (r=0; r < 0xff; r++)
+ for (g=0; g < 0xff; g++)
+ for (b=0; b < 0xff; b++)
+ {
+
+ In[0] = (cmsFloat32Number) r / 255.0F;
+ In[1] = (cmsFloat32Number) g / 255.0F;
+ In[2] = (cmsFloat32Number) b / 255.0F;
+
+
+ p ->Interpolation.LerpFloat(In, Out, p);
+
+ if (!IsGoodFixed15_16("Channel 1", Out[0], In[0])) goto Error;
+ if (!IsGoodFixed15_16("Channel 2", Out[1], (cmsFloat32Number) In[1] / 2.F)) goto Error;
+ if (!IsGoodFixed15_16("Channel 3", Out[2], (cmsFloat32Number) In[2] / 4.F)) goto Error;
+ }
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr);
_cmsFreeInterpParams(p);
@@ -1286,10 +1286,10 @@ Error:
}
static
-cmsInt32Number ExhaustiveCheck3DinterpolationTetrahedral16(void)
+cmsInt32Number ExhaustiveCheck3DinterpolationTetrahedral16(void)
{
cmsInterpParams* p;
- cmsInt32Number r, g, b;
+ cmsInt32Number r, g, b;
cmsUInt16Number In[3], Out[3];
cmsUInt16Number Table[] = {
@@ -1312,9 +1312,9 @@ cmsInt32Number ExhaustiveCheck3DinterpolationTetrahedral16(void)
for (g=0; g < 0xff; g++)
for (b=0; b < 0xff; b++)
{
- In[0] = (cmsUInt16Number) r ;
- In[1] = (cmsUInt16Number) g ;
- In[2] = (cmsUInt16Number) b ;
+ In[0] = (cmsUInt16Number) r ;
+ In[1] = (cmsUInt16Number) g ;
+ In[2] = (cmsUInt16Number) b ;
p ->Interpolation.Lerp16(In, Out, p);
@@ -1333,10 +1333,10 @@ Error:
}
static
-cmsInt32Number ExhaustiveCheck3DinterpolationTrilinear16(void)
+cmsInt32Number ExhaustiveCheck3DinterpolationTrilinear16(void)
{
cmsInterpParams* p;
- cmsInt32Number r, g, b;
+ cmsInt32Number r, g, b;
cmsUInt16Number In[3], Out[3];
cmsUInt16Number Table[] = {
@@ -1359,9 +1359,9 @@ cmsInt32Number ExhaustiveCheck3DinterpolationTrilinear16(void)
for (g=0; g < 0xff; g++)
for (b=0; b < 0xff; b++)
{
- In[0] = r ;
- In[1] = g ;
- In[2] = b ;
+ In[0] = (cmsUInt16Number) r ;
+ In[1] = (cmsUInt16Number)g ;
+ In[2] = (cmsUInt16Number)b ;
p ->Interpolation.Lerp16(In, Out, p);
@@ -1382,13 +1382,13 @@ Error:
// Check reverse interpolation on LUTS. This is right now exclusively used by K preservation algorithm
static
-cmsInt32Number CheckReverseInterpolation3x3(void)
+cmsInt32Number CheckReverseInterpolation3x3(void)
{
cmsPipeline* Lut;
cmsStage* clut;
cmsFloat32Number Target[3], Result[3], Hint[3];
cmsFloat32Number err, max;
- cmsInt32Number i;
+ cmsInt32Number i;
cmsUInt16Number Table[] = {
0, 0, 0, // 0 0 0
@@ -1416,65 +1416,65 @@ cmsInt32Number CheckReverseInterpolation3x3(void)
cmsPipelineEvalReverseFloat(Target, Result, NULL, Lut);
if (Result[0] != 0 || Result[1] != 0 || Result[2] != 0){
- Fail("Reverse interpolation didn't find zero");
- return 0;
+ Fail("Reverse interpolation didn't find zero");
+ return 0;
}
// Transverse identity
max = 0;
for (i=0; i <= 100; i++) {
- cmsFloat32Number in = i / 100.0F;
+ cmsFloat32Number in = i / 100.0F;
- Target[0] = in; Target[1] = 0; Target[2] = 0;
- cmsPipelineEvalReverseFloat(Target, Result, Hint, Lut);
+ Target[0] = in; Target[1] = 0; Target[2] = 0;
+ cmsPipelineEvalReverseFloat(Target, Result, Hint, Lut);
- err = fabsf(in - Result[0]);
- if (err > max) max = err;
+ err = fabsf(in - Result[0]);
+ if (err > max) max = err;
- memcpy(Hint, Result, sizeof(Hint));
+ memcpy(Hint, Result, sizeof(Hint));
}
cmsPipelineFree(Lut);
- return (max <= FLOAT_PRECISSION);
+ return (max <= FLOAT_PRECISSION);
}
static
-cmsInt32Number CheckReverseInterpolation4x3(void)
+cmsInt32Number CheckReverseInterpolation4x3(void)
{
cmsPipeline* Lut;
cmsStage* clut;
cmsFloat32Number Target[4], Result[4], Hint[4];
cmsFloat32Number err, max;
- cmsInt32Number i;
+ cmsInt32Number i;
// 4 -> 3, output gets 3 first channels copied
cmsUInt16Number Table[] = {
0, 0, 0, // 0 0 0 0 = ( 0, 0, 0)
0, 0, 0, // 0 0 0 1 = ( 0, 0, 0)
-
+
0, 0, 0xffff, // 0 0 1 0 = ( 0, 0, 1)
- 0, 0, 0xffff, // 0 0 1 1 = ( 0, 0, 1)
-
+ 0, 0, 0xffff, // 0 0 1 1 = ( 0, 0, 1)
+
0, 0xffff, 0, // 0 1 0 0 = ( 0, 1, 0)
0, 0xffff, 0, // 0 1 0 1 = ( 0, 1, 0)
-
+
0, 0xffff, 0xffff, // 0 1 1 0 = ( 0, 1, 1)
0, 0xffff, 0xffff, // 0 1 1 1 = ( 0, 1, 1)
0xffff, 0, 0, // 1 0 0 0 = ( 1, 0, 0)
0xffff, 0, 0, // 1 0 0 1 = ( 1, 0, 0)
-
+
0xffff, 0, 0xffff, // 1 0 1 0 = ( 1, 0, 1)
- 0xffff, 0, 0xffff, // 1 0 1 1 = ( 1, 0, 1)
-
+ 0xffff, 0, 0xffff, // 1 0 1 1 = ( 1, 0, 1)
+
0xffff, 0xffff, 0, // 1 1 0 0 = ( 1, 1, 0)
- 0xffff, 0xffff, 0, // 1 1 0 1 = ( 1, 1, 0)
-
+ 0xffff, 0xffff, 0, // 1 1 0 1 = ( 1, 1, 0)
+
0xffff, 0xffff, 0xffff, // 1 1 1 0 = ( 1, 1, 1)
- 0xffff, 0xffff, 0xffff, // 1 1 1 1 = ( 1, 1, 1)
+ 0xffff, 0xffff, 0xffff, // 1 1 1 1 = ( 1, 1, 1)
};
@@ -1487,16 +1487,16 @@ cmsInt32Number CheckReverseInterpolation4x3(void)
SubTest("4->3 feasibility");
for (i=0; i <= 100; i++) {
- Target[0] = i / 100.0F;
- Target[1] = Target[0];
- Target[2] = 0;
- Target[3] = 12;
+ Target[0] = i / 100.0F;
+ Target[1] = Target[0];
+ Target[2] = 0;
+ Target[3] = 12;
- cmsPipelineEvalFloat(Target, Result, Lut);
+ cmsPipelineEvalFloat(Target, Result, Lut);
- if (!IsGoodFixed15_16("0", Target[0], Result[0])) return 0;
+ if (!IsGoodFixed15_16("0", Target[0], Result[0])) return 0;
if (!IsGoodFixed15_16("1", Target[1], Result[1])) return 0;
- if (!IsGoodFixed15_16("2", Target[2], Result[2])) return 0;
+ if (!IsGoodFixed15_16("2", Target[2], Result[2])) return 0;
}
SubTest("4->3 zero");
@@ -1514,27 +1514,27 @@ cmsInt32Number CheckReverseInterpolation4x3(void)
if (Result[0] != 0 || Result[1] != 0 || Result[2] != 0 || Result[3] != 0){
- Fail("Reverse interpolation didn't find zero");
- return 0;
+ Fail("Reverse interpolation didn't find zero");
+ return 0;
}
SubTest("4->3 find CMY");
max = 0;
for (i=0; i <= 100; i++) {
- cmsFloat32Number in = i / 100.0F;
+ cmsFloat32Number in = i / 100.0F;
- Target[0] = in; Target[1] = 0; Target[2] = 0;
- cmsPipelineEvalReverseFloat(Target, Result, Hint, Lut);
+ Target[0] = in; Target[1] = 0; Target[2] = 0;
+ cmsPipelineEvalReverseFloat(Target, Result, Hint, Lut);
- err = fabsf(in - Result[0]);
- if (err > max) max = err;
+ err = fabsf(in - Result[0]);
+ if (err > max) max = err;
- memcpy(Hint, Result, sizeof(Hint));
+ memcpy(Hint, Result, sizeof(Hint));
}
cmsPipelineFree(Lut);
- return (max <= FLOAT_PRECISSION);
+ return (max <= FLOAT_PRECISSION);
}
@@ -1542,9 +1542,9 @@ cmsInt32Number CheckReverseInterpolation4x3(void)
// Lab to LCh and back should be performed at 1E-12 accuracy at least
static
-cmsInt32Number CheckLab2LCh(void)
+cmsInt32Number CheckLab2LCh(void)
{
- cmsInt32Number l, a, b;
+ cmsInt32Number l, a, b;
cmsFloat64Number dist, Max = 0;
cmsCIELab Lab, Lab2;
cmsCIELCh LCh;
@@ -1573,9 +1573,9 @@ cmsInt32Number CheckLab2LCh(void)
// Lab to LCh and back should be performed at 1E-12 accuracy at least
static
-cmsInt32Number CheckLab2XYZ(void)
+cmsInt32Number CheckLab2XYZ(void)
{
- cmsInt32Number l, a, b;
+ cmsInt32Number l, a, b;
cmsFloat64Number dist, Max = 0;
cmsCIELab Lab, Lab2;
cmsCIEXYZ XYZ;
@@ -1605,13 +1605,13 @@ cmsInt32Number CheckLab2XYZ(void)
// Lab to xyY and back should be performed at 1E-12 accuracy at least
static
-cmsInt32Number CheckLab2xyY(void)
+cmsInt32Number CheckLab2xyY(void)
{
- cmsInt32Number l, a, b;
+ cmsInt32Number l, a, b;
cmsFloat64Number dist, Max = 0;
cmsCIELab Lab, Lab2;
cmsCIEXYZ XYZ;
- cmsCIExyY xyY;
+ cmsCIExyY xyY;
for (l=0; l <= 100; l += 10) {
@@ -1624,8 +1624,8 @@ cmsInt32Number CheckLab2xyY(void)
Lab.b = b;
cmsLab2XYZ(NULL, &XYZ, &Lab);
- cmsXYZ2xyY(&xyY, &XYZ);
- cmsxyY2XYZ(&XYZ, &xyY);
+ cmsXYZ2xyY(&xyY, &XYZ);
+ cmsxyY2XYZ(&XYZ, &xyY);
cmsXYZ2Lab(NULL, &Lab2, &XYZ);
dist = cmsDeltaE(&Lab, &Lab2);
@@ -1640,9 +1640,9 @@ cmsInt32Number CheckLab2xyY(void)
static
-cmsInt32Number CheckLabV2encoding(void)
+cmsInt32Number CheckLabV2encoding(void)
{
- cmsInt32Number n2, i, j;
+ cmsInt32Number n2, i, j;
cmsUInt16Number Inw[3], aw[3];
cmsCIELab Lab;
@@ -1650,7 +1650,7 @@ cmsInt32Number CheckLabV2encoding(void)
for (j=0; j < 65535; j++) {
- Inw[0] = Inw[1] = Inw[2] = j;
+ Inw[0] = Inw[1] = Inw[2] = (cmsUInt16Number) j;
cmsLabEncoded2FloatV2(&Lab, Inw);
cmsFloat2LabEncodedV2(aw, &Lab);
@@ -1668,9 +1668,9 @@ cmsInt32Number CheckLabV2encoding(void)
}
static
-cmsInt32Number CheckLabV4encoding(void)
+cmsInt32Number CheckLabV4encoding(void)
{
- cmsInt32Number n2, i, j;
+ cmsInt32Number n2, i, j;
cmsUInt16Number Inw[3], aw[3];
cmsCIELab Lab;
@@ -1678,7 +1678,7 @@ cmsInt32Number CheckLabV4encoding(void)
for (j=0; j < 65535; j++) {
- Inw[0] = Inw[1] = Inw[2] = j;
+ Inw[0] = Inw[1] = Inw[2] = (cmsUInt16Number) j;
cmsLabEncoded2Float(&Lab, Inw);
cmsFloat2LabEncoded(aw, &Lab);
@@ -1699,9 +1699,9 @@ cmsInt32Number CheckLabV4encoding(void)
// BlackBody -----------------------------------------------------------------------------------------------------
static
-cmsInt32Number CheckTemp2CHRM(void)
+cmsInt32Number CheckTemp2CHRM(void)
{
- cmsInt32Number j;
+ cmsInt32Number j;
cmsFloat64Number d, v, Max = 0;
cmsCIExyY White;
@@ -1723,25 +1723,25 @@ cmsInt32Number CheckTemp2CHRM(void)
// Tone curves -----------------------------------------------------------------------------------------------------
static
-cmsInt32Number CheckGammaEstimation(cmsToneCurve* c, cmsFloat64Number g)
+cmsInt32Number CheckGammaEstimation(cmsToneCurve* c, cmsFloat64Number g)
{
- cmsFloat64Number est = cmsEstimateGamma(c, 0.001);
+ cmsFloat64Number est = cmsEstimateGamma(c, 0.001);
- SubTest("Gamma estimation");
- if (fabs(est - g) > 0.001) return 0;
- return 1;
+ SubTest("Gamma estimation");
+ if (fabs(est - g) > 0.001) return 0;
+ return 1;
}
static
-cmsInt32Number CheckGammaCreation16(void)
+cmsInt32Number CheckGammaCreation16(void)
{
cmsToneCurve* LinGamma = cmsBuildGamma(DbgThread(), 1.0);
- cmsInt32Number i;
+ cmsInt32Number i;
cmsUInt16Number in, out;
for (i=0; i < 0xffff; i++) {
- in = i;
+ in = (cmsUInt16Number) i;
out = cmsEvalToneCurve16(LinGamma, in);
if (in != out) {
Fail("(lin gamma): Must be %x, But is %x : ", in, out);
@@ -1750,7 +1750,7 @@ cmsInt32Number CheckGammaCreation16(void)
}
}
- if (!CheckGammaEstimation(LinGamma, 1.0)) return 0;
+ if (!CheckGammaEstimation(LinGamma, 1.0)) return 0;
cmsFreeToneCurve(LinGamma);
return 1;
@@ -1758,10 +1758,10 @@ cmsInt32Number CheckGammaCreation16(void)
}
static
-cmsInt32Number CheckGammaCreationFlt(void)
+cmsInt32Number CheckGammaCreationFlt(void)
{
cmsToneCurve* LinGamma = cmsBuildGamma(DbgThread(), 1.0);
- cmsInt32Number i;
+ cmsInt32Number i;
cmsFloat32Number in, out;
for (i=0; i < 0xffff; i++) {
@@ -1775,7 +1775,7 @@ cmsInt32Number CheckGammaCreationFlt(void)
}
}
- if (!CheckGammaEstimation(LinGamma, 1.0)) return 0;
+ if (!CheckGammaEstimation(LinGamma, 1.0)) return 0;
cmsFreeToneCurve(LinGamma);
return 1;
}
@@ -1783,10 +1783,10 @@ cmsInt32Number CheckGammaCreationFlt(void)
// Curve curves using a single power function
// Error is given in 0..ffff counts
static
-cmsInt32Number CheckGammaFloat(cmsInt32Number nPoints, cmsFloat64Number g)
+cmsInt32Number CheckGammaFloat(cmsFloat64Number g)
{
cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), g);
- cmsInt32Number i;
+ cmsInt32Number i;
cmsFloat32Number in, out;
cmsFloat64Number val, Err;
@@ -1795,7 +1795,7 @@ cmsInt32Number CheckGammaFloat(cmsInt32Number nPoints, cmsFloat64Number g)
in = (cmsFloat32Number) (i / 65535.0);
out = cmsEvalToneCurveFloat(Curve, in);
- val = pow((cmsFloat64Number) in, g);
+ val = pow((cmsFloat64Number) in, g);
Err = fabs( val - out);
if (Err > MaxErr) MaxErr = Err;
@@ -1803,43 +1803,43 @@ cmsInt32Number CheckGammaFloat(cmsInt32Number nPoints, cmsFloat64Number g)
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr * 65535.0);
- if (!CheckGammaEstimation(Curve, g)) return 0;
+ if (!CheckGammaEstimation(Curve, g)) return 0;
cmsFreeToneCurve(Curve);
return 1;
}
-static cmsInt32Number CheckGamma18(void)
+static cmsInt32Number CheckGamma18(void)
{
- return CheckGammaFloat(256, 1.8);
+ return CheckGammaFloat(1.8);
}
-static cmsInt32Number CheckGamma22(void)
+static cmsInt32Number CheckGamma22(void)
{
- return CheckGammaFloat(256, 2.2);
+ return CheckGammaFloat(2.2);
}
-static cmsInt32Number CheckGamma30(void)
+static cmsInt32Number CheckGamma30(void)
{
- return CheckGammaFloat(256, 3.0);
+ return CheckGammaFloat(3.0);
}
// Check table-based gamma functions
static
-cmsInt32Number CheckGammaFloatTable(cmsFloat64Number g)
+cmsInt32Number CheckGammaFloatTable(cmsFloat64Number g)
{
- cmsFloat32Number Values[1025];
+ cmsFloat32Number Values[1025];
cmsToneCurve* Curve;
- cmsInt32Number i;
+ cmsInt32Number i;
cmsFloat32Number in, out;
cmsFloat64Number val, Err;
- for (i=0; i <= 1024; i++) {
+ for (i=0; i <= 1024; i++) {
in = (cmsFloat32Number) (i / 1024.0);
- Values[i] = powf(in, (float) g);
- }
+ Values[i] = powf(in, (float) g);
+ }
Curve = cmsBuildTabulatedToneCurveFloat(DbgThread(), 1025, Values);
@@ -1856,43 +1856,43 @@ cmsInt32Number CheckGammaFloatTable(cmsFloat64Number g)
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr * 65535.0);
- if (!CheckGammaEstimation(Curve, g)) return 0;
+ if (!CheckGammaEstimation(Curve, g)) return 0;
cmsFreeToneCurve(Curve);
return 1;
}
-static cmsInt32Number CheckGamma18Table(void)
+static cmsInt32Number CheckGamma18Table(void)
{
return CheckGammaFloatTable(1.8);
}
-static cmsInt32Number CheckGamma22Table(void)
+static cmsInt32Number CheckGamma22Table(void)
{
return CheckGammaFloatTable(2.2);
}
-static cmsInt32Number CheckGamma30Table(void)
+static cmsInt32Number CheckGamma30Table(void)
{
return CheckGammaFloatTable(3.0);
}
// Create a curve from a table (which is a pure gamma function) and check it against the pow function.
static
-cmsInt32Number CheckGammaWordTable(cmsFloat64Number g)
+cmsInt32Number CheckGammaWordTable(cmsFloat64Number g)
{
- cmsUInt16Number Values[1025];
+ cmsUInt16Number Values[1025];
cmsToneCurve* Curve;
- cmsInt32Number i;
+ cmsInt32Number i;
cmsFloat32Number in, out;
cmsFloat64Number val, Err;
- for (i=0; i <= 1024; i++) {
+ for (i=0; i <= 1024; i++) {
in = (cmsFloat32Number) (i / 1024.0);
- Values[i] = (cmsUInt16Number) floor(powf(in, g) * 65535.0 + 0.5);
- }
+ Values[i] = (cmsUInt16Number) floor(powf(in, g) * 65535.0 + 0.5);
+ }
Curve = cmsBuildTabulatedToneCurve16(DbgThread(), 1025, Values);
@@ -1909,23 +1909,23 @@ cmsInt32Number CheckGammaWordTable(cmsFloat64Number g)
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr * 65535.0);
- if (!CheckGammaEstimation(Curve, g)) return 0;
+ if (!CheckGammaEstimation(Curve, g)) return 0;
cmsFreeToneCurve(Curve);
return 1;
}
-static cmsInt32Number CheckGamma18TableWord(void)
+static cmsInt32Number CheckGamma18TableWord(void)
{
return CheckGammaWordTable(1.8);
}
-static cmsInt32Number CheckGamma22TableWord(void)
+static cmsInt32Number CheckGamma22TableWord(void)
{
return CheckGammaWordTable(2.2);
}
-static cmsInt32Number CheckGamma30TableWord(void)
+static cmsInt32Number CheckGamma30TableWord(void)
{
return CheckGammaWordTable(3.0);
}
@@ -1934,7 +1934,7 @@ static cmsInt32Number CheckGamma30TableWord(void)
// Curve joining test. Joining two high-gamma of 3.0 curves should
// give something like linear
static
-cmsInt32Number CheckJointCurves(void)
+cmsInt32Number CheckJointCurves(void)
{
cmsToneCurve *Forward, *Reverse, *Result;
cmsBool rc;
@@ -1958,19 +1958,19 @@ cmsInt32Number CheckJointCurves(void)
// Create a gamma curve by cheating the table
static
-cmsToneCurve* GammaTableLinear(cmsInt32Number nEntries, cmsBool Dir)
+cmsToneCurve* GammaTableLinear(cmsInt32Number nEntries, cmsBool Dir)
{
- cmsInt32Number i;
+ cmsInt32Number i;
cmsToneCurve* g = cmsBuildTabulatedToneCurve16(DbgThread(), nEntries, NULL);
for (i=0; i < nEntries; i++) {
- cmsInt32Number v = _cmsQuantizeVal(i, nEntries);
+ cmsInt32Number v = _cmsQuantizeVal(i, nEntries);
if (Dir)
- g->Table16[i] = v;
+ g->Table16[i] = (cmsUInt16Number) v;
else
- g->Table16[i] = 0xFFFF - v;
+ g->Table16[i] = (cmsUInt16Number) (0xFFFF - v);
}
return g;
@@ -1978,10 +1978,10 @@ cmsToneCurve* GammaTableLinear(cmsInt32Number nEntries, cmsBool Dir)
static
-cmsInt32Number CheckJointCurvesDescending(void)
+cmsInt32Number CheckJointCurvesDescending(void)
{
cmsToneCurve *Forward, *Reverse, *Result;
- cmsInt32Number i, rc;
+ cmsInt32Number i, rc;
Forward = cmsBuildGamma(DbgThread(), 2.2);
@@ -2006,9 +2006,9 @@ cmsInt32Number CheckJointCurvesDescending(void)
static
-cmsInt32Number CheckFToneCurvePoint(cmsToneCurve* c, cmsInt32Number Point, cmsInt32Number Value)
+cmsInt32Number CheckFToneCurvePoint(cmsToneCurve* c, cmsUInt16Number Point, cmsInt32Number Value)
{
- cmsInt32Number Result;
+ cmsInt32Number Result;
Result = cmsEvalToneCurve16(c, Point);
@@ -2016,7 +2016,7 @@ cmsInt32Number CheckFToneCurvePoint(cmsToneCurve* c, cmsInt32Number Point, cmsIn
}
static
-cmsInt32Number CheckReverseDegenerated(void)
+cmsInt32Number CheckReverseDegenerated(void)
{
cmsToneCurve* p, *g;
cmsUInt16Number Tab[16];
@@ -2081,7 +2081,7 @@ cmsToneCurve* CombineGammaFloat(cmsToneCurve* g1, cmsToneCurve* g2)
{
cmsUInt16Number Tab[256];
cmsFloat32Number f;
- cmsInt32Number i;
+ cmsInt32Number i;
for (i=0; i < 256; i++) {
@@ -2100,7 +2100,7 @@ cmsToneCurve* CombineGamma16(cmsToneCurve* g1, cmsToneCurve* g2)
{
cmsUInt16Number Tab[256];
- cmsInt32Number i;
+ cmsInt32Number i;
for (i=0; i < 256; i++) {
@@ -2114,7 +2114,7 @@ cmsToneCurve* CombineGamma16(cmsToneCurve* g1, cmsToneCurve* g2)
}
static
-cmsInt32Number CheckJointFloatCurves_sRGB(void)
+cmsInt32Number CheckJointFloatCurves_sRGB(void)
{
cmsToneCurve *Forward, *Reverse, *Result;
cmsBool rc;
@@ -2131,7 +2131,7 @@ cmsInt32Number CheckJointFloatCurves_sRGB(void)
}
static
-cmsInt32Number CheckJoint16Curves_sRGB(void)
+cmsInt32Number CheckJoint16Curves_sRGB(void)
{
cmsToneCurve *Forward, *Reverse, *Result;
cmsBool rc;
@@ -2150,11 +2150,11 @@ cmsInt32Number CheckJoint16Curves_sRGB(void)
// sigmoidal curve f(x) = (1-x^g) ^(1/g)
static
-cmsInt32Number CheckJointCurvesSShaped(void)
+cmsInt32Number CheckJointCurvesSShaped(void)
{
- cmsFloat64Number p = 3.2;
+ cmsFloat64Number p = 3.2;
cmsToneCurve *Forward, *Reverse, *Result;
- cmsInt32Number rc;
+ cmsInt32Number rc;
Forward = cmsBuildParametricToneCurve(DbgThread(), 108, &p);
Reverse = cmsReverseToneCurve(Forward);
@@ -2308,9 +2308,9 @@ cmsFloat32Number sigmoidal(cmsFloat32Number x, const cmsFloat64Number Params[])
static
-cmsBool CheckSingleParametric(const char* Name, dblfnptr fn, cmsInt32Number Type, const cmsFloat64Number Params[])
+cmsBool CheckSingleParametric(const char* Name, dblfnptr fn, cmsInt32Number Type, const cmsFloat64Number Params[])
{
- cmsInt32Number i;
+ cmsInt32Number i;
cmsToneCurve* tc;
cmsToneCurve* tc_1;
char InverseText[256];
@@ -2349,7 +2349,7 @@ Error:
// Check against some known values
static
-cmsInt32Number CheckParametricToneCurves(void)
+cmsInt32Number CheckParametricToneCurves(void)
{
cmsFloat64Number Params[10];
@@ -2449,11 +2449,11 @@ cmsInt32Number CheckParametricToneCurves(void)
// LUT checks ------------------------------------------------------------------------------
static
-cmsInt32Number CheckLUTcreation(void)
+cmsInt32Number CheckLUTcreation(void)
{
cmsPipeline* lut;
cmsPipeline* lut2;
- cmsInt32Number n1, n2;
+ cmsInt32Number n1, n2;
lut = cmsPipelineAlloc(DbgThread(), 1, 1);
n1 = cmsPipelineStageCount(lut);
@@ -2530,7 +2530,11 @@ static
void Add3GammaCurves(cmsPipeline* lut, cmsFloat64Number Curve)
{
cmsToneCurve* id = cmsBuildGamma(DbgThread(), Curve);
- cmsToneCurve* id3[3] = { id, id, id };
+ cmsToneCurve* id3[3];
+
+ id3[0] = id;
+ id3[1] = id;
+ id3[2] = id;
cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocToneCurves(DbgThread(), 3, id3));
@@ -2539,23 +2543,23 @@ void Add3GammaCurves(cmsPipeline* lut, cmsFloat64Number Curve)
static
-cmsInt32Number CheckFloatLUT(cmsPipeline* lut)
+cmsInt32Number CheckFloatLUT(cmsPipeline* lut)
{
- cmsInt32Number n1, i, j;
+ cmsInt32Number n1, i, j;
cmsFloat32Number Inf[3], Outf[3];
n1=0;
for (j=0; j < 65535; j++) {
- cmsInt32Number af[3];
+ cmsInt32Number af[3];
Inf[0] = Inf[1] = Inf[2] = (cmsFloat32Number) j / 65535.0F;
cmsPipelineEvalFloat(Inf, Outf, lut);
- af[0] = (cmsInt32Number) floor(Outf[0]*65535.0 + 0.5);
- af[1] = (cmsInt32Number) floor(Outf[1]*65535.0 + 0.5);
- af[2] = (cmsInt32Number) floor(Outf[2]*65535.0 + 0.5);
+ af[0] = (cmsInt32Number) floor(Outf[0]*65535.0 + 0.5);
+ af[1] = (cmsInt32Number) floor(Outf[1]*65535.0 + 0.5);
+ af[2] = (cmsInt32Number) floor(Outf[2]*65535.0 + 0.5);
for (i=0; i < 3; i++) {
@@ -2571,18 +2575,18 @@ cmsInt32Number CheckFloatLUT(cmsPipeline* lut)
static
-cmsInt32Number Check16LUT(cmsPipeline* lut)
+cmsInt32Number Check16LUT(cmsPipeline* lut)
{
- cmsInt32Number n2, i, j;
+ cmsInt32Number n2, i, j;
cmsUInt16Number Inw[3], Outw[3];
n2=0;
for (j=0; j < 65535; j++) {
- cmsInt32Number aw[3];
+ cmsInt32Number aw[3];
- Inw[0] = Inw[1] = Inw[2] = j;
+ Inw[0] = Inw[1] = Inw[2] = (cmsUInt16Number) j;
cmsPipelineEval16(Inw, Outw, lut);
aw[0] = Outw[0];
aw[1] = Outw[1];
@@ -2603,10 +2607,10 @@ cmsInt32Number Check16LUT(cmsPipeline* lut)
// Check any LUT that is linear
static
-cmsInt32Number CheckStagesLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages)
+cmsInt32Number CheckStagesLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages)
{
- cmsInt32Number nInpChans, nOutpChans, nStages;
+ cmsInt32Number nInpChans, nOutpChans, nStages;
nInpChans = cmsPipelineInputChannels(lut);
nOutpChans = cmsPipelineOutputChannels(lut);
@@ -2617,9 +2621,9 @@ cmsInt32Number CheckStagesLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages)
static
-cmsInt32Number CheckFullLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages)
+cmsInt32Number CheckFullLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages)
{
- cmsInt32Number rc = CheckStagesLUT(lut, ExpectedStages) && Check16LUT(lut) && CheckFloatLUT(lut);
+ cmsInt32Number rc = CheckStagesLUT(lut, ExpectedStages) && Check16LUT(lut) && CheckFloatLUT(lut);
cmsPipelineFree(lut);
return rc;
@@ -2627,7 +2631,7 @@ cmsInt32Number CheckFullLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages)
static
-cmsInt32Number Check1StageLUT(void)
+cmsInt32Number Check1StageLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2638,7 +2642,7 @@ cmsInt32Number Check1StageLUT(void)
static
-cmsInt32Number Check2StageLUT(void)
+cmsInt32Number Check2StageLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2649,7 +2653,7 @@ cmsInt32Number Check2StageLUT(void)
}
static
-cmsInt32Number Check2Stage16LUT(void)
+cmsInt32Number Check2Stage16LUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2662,7 +2666,7 @@ cmsInt32Number Check2Stage16LUT(void)
static
-cmsInt32Number Check3StageLUT(void)
+cmsInt32Number Check3StageLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2674,7 +2678,7 @@ cmsInt32Number Check3StageLUT(void)
}
static
-cmsInt32Number Check3Stage16LUT(void)
+cmsInt32Number Check3Stage16LUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2688,7 +2692,7 @@ cmsInt32Number Check3Stage16LUT(void)
static
-cmsInt32Number Check4StageLUT(void)
+cmsInt32Number Check4StageLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2701,7 +2705,7 @@ cmsInt32Number Check4StageLUT(void)
}
static
-cmsInt32Number Check4Stage16LUT(void)
+cmsInt32Number Check4Stage16LUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2714,7 +2718,7 @@ cmsInt32Number Check4Stage16LUT(void)
}
static
-cmsInt32Number Check5StageLUT(void)
+cmsInt32Number Check5StageLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2729,7 +2733,7 @@ cmsInt32Number Check5StageLUT(void)
static
-cmsInt32Number Check5Stage16LUT(void)
+cmsInt32Number Check5Stage16LUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2743,7 +2747,7 @@ cmsInt32Number Check5Stage16LUT(void)
}
static
-cmsInt32Number Check6StageLUT(void)
+cmsInt32Number Check6StageLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2758,7 +2762,7 @@ cmsInt32Number Check6StageLUT(void)
}
static
-cmsInt32Number Check6Stage16LUT(void)
+cmsInt32Number Check6Stage16LUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
@@ -2774,10 +2778,10 @@ cmsInt32Number Check6Stage16LUT(void)
static
-cmsInt32Number CheckLab2LabLUT(void)
+cmsInt32Number CheckLab2LabLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
- cmsInt32Number rc;
+ cmsInt32Number rc;
cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocLab2XYZ(DbgThread()));
cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocXYZ2Lab(DbgThread()));
@@ -2791,10 +2795,10 @@ cmsInt32Number CheckLab2LabLUT(void)
static
-cmsInt32Number CheckXYZ2XYZLUT(void)
+cmsInt32Number CheckXYZ2XYZLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
- cmsInt32Number rc;
+ cmsInt32Number rc;
cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocXYZ2Lab(DbgThread()));
cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocLab2XYZ(DbgThread()));
@@ -2809,10 +2813,10 @@ cmsInt32Number CheckXYZ2XYZLUT(void)
static
-cmsInt32Number CheckLab2LabMatLUT(void)
+cmsInt32Number CheckLab2LabMatLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
- cmsInt32Number rc;
+ cmsInt32Number rc;
cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocLab2XYZ(DbgThread()));
AddIdentityMatrix(lut);
@@ -2826,11 +2830,11 @@ cmsInt32Number CheckLab2LabMatLUT(void)
}
static
-cmsInt32Number CheckNamedColorLUT(void)
+cmsInt32Number CheckNamedColorLUT(void)
{
cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
cmsNAMEDCOLORLIST* nc;
- cmsInt32Number i,j, rc = 1, n2;
+ cmsInt32Number i,j, rc = 1, n2;
cmsUInt16Number PCS[3];
cmsUInt16Number Colorant[MAXCHANNELS];
char Name[255];
@@ -2842,8 +2846,8 @@ cmsInt32Number CheckNamedColorLUT(void)
for (i=0; i < 256; i++) {
- PCS[0] = PCS[1] = PCS[2] = i;
- Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = i;
+ PCS[0] = PCS[1] = PCS[2] = (cmsUInt16Number) i;
+ Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = (cmsUInt16Number) i;
sprintf(Name, "#%d", i);
if (!cmsAppendNamedColor(nc, Name, PCS, Colorant)) { rc = 0; break; }
@@ -2858,7 +2862,7 @@ cmsInt32Number CheckNamedColorLUT(void)
for (j=0; j < 256; j++) {
- Inw[0] = j;
+ Inw[0] = (cmsUInt16Number) j;
cmsPipelineEval16(Inw, Outw, lut);
for (i=0; i < 3; i++) {
@@ -2881,12 +2885,12 @@ cmsInt32Number CheckNamedColorLUT(void)
// A lightweight test of multilocalized unicode structures.
static
-cmsInt32Number CheckMLU(void)
+cmsInt32Number CheckMLU(void)
{
cmsMLU* mlu, *mlu2, *mlu3;
char Buffer[256], Buffer2[256];
- cmsInt32Number rc = 1;
- cmsInt32Number i;
+ cmsInt32Number rc = 1;
+ cmsInt32Number i;
cmsHPROFILE h= NULL;
// Allocate a MLU structure, no preferred size
@@ -2930,8 +2934,8 @@ cmsInt32Number CheckMLU(void)
char Lang[3];
- Lang[0] = i % 255;
- Lang[1] = i / 255;
+ Lang[0] = (char) (i % 255);
+ Lang[1] = (char) (i / 255);
Lang[2] = 0;
sprintf(Buffer, "String #%i", i);
@@ -2949,8 +2953,8 @@ cmsInt32Number CheckMLU(void)
char Lang[3];
- Lang[0] = i % 255;
- Lang[1] = i / 255;
+ Lang[0] = (char)(i % 255);
+ Lang[1] = (char)(i / 255);
Lang[2] = 0;
cmsMLUgetASCII(mlu2, Lang, Lang, Buffer2, 256);
@@ -2983,8 +2987,8 @@ cmsInt32Number CheckMLU(void)
char Lang[3];
- Lang[0] = i % 255;
- Lang[1] = i / 255;
+ Lang[0] = (char) (i % 255);
+ Lang[1] = (char) (i / 255);
Lang[2] = 0;
cmsMLUgetASCII(mlu3, Lang, Lang, Buffer2, 256);
@@ -3006,10 +3010,10 @@ Error:
// A lightweight test of named color structures.
static
-cmsInt32Number CheckNamedColorList(void)
+cmsInt32Number CheckNamedColorList(void)
{
cmsNAMEDCOLORLIST* nc = NULL, *nc2;
- cmsInt32Number i, j, rc=1;
+ cmsInt32Number i, j, rc=1;
char Name[255];
cmsUInt16Number PCS[3];
cmsUInt16Number Colorant[MAXCHANNELS];
@@ -3024,8 +3028,8 @@ cmsInt32Number CheckNamedColorList(void)
for (i=0; i < 4096; i++) {
- PCS[0] = PCS[1] = PCS[2] = i;
- Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = 4096 - i;
+ PCS[0] = PCS[1] = PCS[2] = (cmsUInt16Number) i;
+ Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = (cmsUInt16Number) (4096 - i);
sprintf(Name, "#%d", i);
if (!cmsAppendNamedColor(nc, Name, PCS, Colorant)) { rc = 0; break; }
@@ -3033,8 +3037,8 @@ cmsInt32Number CheckNamedColorList(void)
for (i=0; i < 4096; i++) {
- CheckPCS[0] = CheckPCS[1] = CheckPCS[2] = i;
- CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = 4096 - i;
+ CheckPCS[0] = CheckPCS[1] = CheckPCS[2] = (cmsUInt16Number) i;
+ CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = (cmsUInt16Number) (4096 - i);
sprintf(CheckName, "#%d", i);
if (!cmsNamedColorInfo(nc, i, Name, NULL, NULL, PCS, Colorant)) { rc = 0; goto Error; }
@@ -3069,8 +3073,8 @@ cmsInt32Number CheckNamedColorList(void)
for (i=0; i < 4096; i++) {
- CheckPCS[0] = CheckPCS[1] = CheckPCS[2] = i;
- CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = 4096 - i;
+ CheckPCS[0] = CheckPCS[1] = CheckPCS[2] = (cmsUInt16Number) i;
+ CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = (cmsUInt16Number) (4096 - i);
sprintf(CheckName, "#%d", i);
if (!cmsNamedColorInfo(nc2, i, Name, NULL, NULL, PCS, Colorant)) { rc = 0; goto Error; }
@@ -3107,9 +3111,9 @@ static
void CheckSingleFormatter16(cmsUInt32Number Type, const char* Text)
{
cmsUInt16Number Values[MAXCHANNELS];
- char Buffer[1024];
+ cmsUInt8Number Buffer[1024];
cmsFormatter f, b;
- cmsInt32Number i, j, nChannels, bytes;
+ cmsInt32Number i, j, nChannels, bytes;
_cmsTRANSFORM info;
// Already failed?
@@ -3117,7 +3121,6 @@ void CheckSingleFormatter16(cmsUInt32Number Type, const char* Text)
memset(&info, 0, sizeof(info));
info.OutputFormat = info.InputFormat = Type;
- info.StrideIn = info.StrideOut = 1;
// Go forth and back
f = _cmsGetFormatter(Type, cmsFormatterInput, 0);
@@ -3139,15 +3142,15 @@ void CheckSingleFormatter16(cmsUInt32Number Type, const char* Text)
for (j=0; j < 5; j++) {
for (i=0; i < nChannels; i++) {
- Values[i] = (i+j);
+ Values[i] = (cmsUInt16Number) (i+j);
// For 8-bit
if (bytes == 1)
Values[i] <<= 8;
}
- b.Fmt16(&info, Values, Buffer);
+ b.Fmt16(&info, Values, Buffer, 1);
memset(Values, 0, sizeof(Values));
- f.Fmt16(&info, Values, Buffer);
+ f.Fmt16(&info, Values, Buffer, 1);
for (i=0; i < nChannels; i++) {
if (bytes == 1)
@@ -3160,14 +3163,14 @@ void CheckSingleFormatter16(cmsUInt32Number Type, const char* Text)
// Useful for debug
for (i=0; i < nChannels; i++) {
- Values[i] = (i+j);
+ Values[i] = (cmsUInt16Number) (i+j);
// For 8-bit
if (bytes == 1)
Values[i] <<= 8;
}
- b.Fmt16(&info, Values, Buffer);
- f.Fmt16(&info, Values, Buffer);
+ b.Fmt16(&info, Values, Buffer, 1);
+ f.Fmt16(&info, Values, Buffer, 1);
return;
}
}
@@ -3181,7 +3184,7 @@ void CheckSingleFormatter16(cmsUInt32Number Type, const char* Text)
// Check all formatters
static
-cmsInt32Number CheckFormatters16(void)
+cmsInt32Number CheckFormatters16(void)
{
FormatterFailed = FALSE;
@@ -3339,9 +3342,9 @@ static
void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text)
{
cmsFloat32Number Values[MAXCHANNELS];
- char Buffer[1024];
+ cmsUInt8Number Buffer[1024];
cmsFormatter f, b;
- cmsInt32Number i, j, nChannels;
+ cmsInt32Number i, j, nChannels;
_cmsTRANSFORM info;
// Already failed?
@@ -3349,7 +3352,6 @@ void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text)
memset(&info, 0, sizeof(info));
info.OutputFormat = info.InputFormat = Type;
- info.StrideIn = info.StrideOut = 1;
// Go forth and back
f = _cmsGetFormatter(Type, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT);
@@ -3373,9 +3375,9 @@ void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text)
Values[i] = (cmsFloat32Number) (i+j);
}
- b.FmtFloat(&info, Values, Buffer);
+ b.FmtFloat(&info, Values, Buffer, 1);
memset(Values, 0, sizeof(Values));
- f.FmtFloat(&info, Values, Buffer);
+ f.FmtFloat(&info, Values, Buffer, 1);
for (i=0; i < nChannels; i++) {
@@ -3391,8 +3393,8 @@ void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text)
Values[i] = (cmsFloat32Number) (i+j);
}
- b.FmtFloat(&info, Values, Buffer);
- f.FmtFloat(&info, Values, Buffer);
+ b.FmtFloat(&info, Values, Buffer, 1);
+ f.FmtFloat(&info, Values, Buffer, 1);
return;
}
}
@@ -3402,7 +3404,7 @@ void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text)
#define C(a) CheckSingleFormatterFloat(a, #a)
static
-cmsInt32Number CheckFormattersFloat(void)
+cmsInt32Number CheckFormattersFloat(void)
{
FormatterFailed = FALSE;
@@ -3426,7 +3428,7 @@ cmsInt32Number CheckFormattersFloat(void)
// Write tag testbed ----------------------------------------------------------------------------------------
static
-cmsInt32Number CheckXYZ(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckXYZ(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsCIEXYZ XYZ, *Pt;
@@ -3452,10 +3454,10 @@ cmsInt32Number CheckXYZ(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignatu
static
-cmsInt32Number CheckGamma(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckGamma(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsToneCurve *g, *Pt;
- cmsInt32Number rc;
+ cmsInt32Number rc;
switch (Pass) {
@@ -3477,10 +3479,10 @@ cmsInt32Number CheckGamma(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSigna
}
static
-cmsInt32Number CheckText(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckText(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsMLU *m, *Pt;
- cmsInt32Number rc;
+ cmsInt32Number rc;
char Buffer[256];
@@ -3505,11 +3507,11 @@ cmsInt32Number CheckText(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignat
}
static
-cmsInt32Number CheckData(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckData(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsICCData *Pt;
- cmsICCData d = { 1, 0, { '?' }};
- cmsInt32Number rc;
+ cmsICCData d = { 1, 0, { '?' }};
+ cmsInt32Number rc;
switch (Pass) {
@@ -3530,7 +3532,7 @@ cmsInt32Number CheckData(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSigna
static
-cmsInt32Number CheckSignature(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckSignature(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsTagSignature *Pt, Holder;
@@ -3552,7 +3554,7 @@ cmsInt32Number CheckSignature(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTag
static
-cmsInt32Number CheckDateTime(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckDateTime(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
struct tm *Pt, Holder;
@@ -3587,10 +3589,10 @@ cmsInt32Number CheckDateTime(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagS
static
-cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag, cmsInt32Number max_check, cmsBool colorant_check)
+cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag, cmsInt32Number max_check, cmsBool colorant_check)
{
cmsNAMEDCOLORLIST* nc;
- cmsInt32Number i, j, rc;
+ cmsInt32Number i, j, rc;
char Name[255];
cmsUInt16Number PCS[3];
cmsUInt16Number Colorant[MAXCHANNELS];
@@ -3607,8 +3609,8 @@ cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTa
for (i=0; i < max_check; i++) {
- PCS[0] = PCS[1] = PCS[2] = i;
- Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = max_check - i;
+ PCS[0] = PCS[1] = PCS[2] = (cmsUInt16Number) i;
+ Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = (cmsUInt16Number) (max_check - i);
sprintf(Name, "#%d", i);
if (!cmsAppendNamedColor(nc, Name, PCS, Colorant)) { Fail("Couldn't append named color"); return 0; }
@@ -3625,8 +3627,8 @@ cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTa
for (i=0; i < max_check; i++) {
- CheckPCS[0] = CheckPCS[1] = CheckPCS[2] = i;
- CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = max_check - i;
+ CheckPCS[0] = CheckPCS[1] = CheckPCS[2] = (cmsUInt16Number) i;
+ CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = (cmsUInt16Number) (max_check - i);
sprintf(CheckName, "#%d", i);
if (!cmsNamedColorInfo(nc, i, Name, NULL, NULL, PCS, Colorant)) { Fail("Invalid string"); return 0; }
@@ -3655,10 +3657,10 @@ cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTa
static
-cmsInt32Number CheckLUT(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckLUT(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsPipeline* Lut, *Pt;
- cmsInt32Number rc;
+ cmsInt32Number rc;
switch (Pass) {
@@ -3690,11 +3692,11 @@ cmsInt32Number CheckLUT(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignat
}
static
-cmsInt32Number CheckCHAD(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckCHAD(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsFloat64Number *Pt;
cmsFloat64Number CHAD[] = { 0, .1, .2, .3, .4, .5, .6, .7, .8 };
- cmsInt32Number i;
+ cmsInt32Number i;
switch (Pass) {
@@ -3718,7 +3720,7 @@ cmsInt32Number CheckCHAD(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSigna
}
static
-cmsInt32Number CheckChromaticity(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckChromaticity(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsCIExyYTRIPLE *Pt, c = { {0, .1, 1 }, { .3, .4, 1 }, { .6, .7, 1 }};
@@ -3747,15 +3749,15 @@ cmsInt32Number CheckChromaticity(cmsInt32Number Pass, cmsHPROFILE hProfile, cms
static
-cmsInt32Number CheckColorantOrder(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckColorantOrder(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsUInt8Number *Pt, c[MAXCHANNELS];
- cmsInt32Number i;
+ cmsInt32Number i;
switch (Pass) {
case 1:
- for (i=0; i < MAXCHANNELS; i++) c[i] = MAXCHANNELS - i - 1;
+ for (i=0; i < MAXCHANNELS; i++) c[i] = (cmsUInt8Number) (MAXCHANNELS - i - 1);
return cmsWriteTag(hProfile, tag, c);
@@ -3774,7 +3776,7 @@ cmsInt32Number CheckColorantOrder(cmsInt32Number Pass, cmsHPROFILE hProfile, cm
}
static
-cmsInt32Number CheckMeasurement(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckMeasurement(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsICCMeasurementConditions *Pt, m;
@@ -3812,10 +3814,10 @@ cmsInt32Number CheckMeasurement(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsT
static
-cmsInt32Number CheckUcrBg(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckUcrBg(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsUcrBg *Pt, m;
- cmsInt32Number rc;
+ cmsInt32Number rc;
char Buffer[256];
switch (Pass) {
@@ -3847,11 +3849,11 @@ cmsInt32Number CheckUcrBg(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSign
static
-cmsInt32Number CheckCRDinfo(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckCRDinfo(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsMLU *mlu;
char Buffer[256];
- cmsInt32Number rc;
+ cmsInt32Number rc;
switch (Pass) {
@@ -3933,11 +3935,11 @@ cmsToneCurve *CreateSegmentedCurve(void)
static
-cmsInt32Number CheckMPE(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckMPE(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsPipeline* Lut, *Pt;
cmsToneCurve* G[3];
- cmsInt32Number rc;
+ cmsInt32Number rc;
switch (Pass) {
@@ -3969,10 +3971,10 @@ cmsInt32Number CheckMPE(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignat
static
-cmsInt32Number CheckScreening(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckScreening(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsScreening *Pt, sc;
- cmsInt32Number rc;
+ cmsInt32Number rc;
switch (Pass) {
@@ -4006,7 +4008,7 @@ cmsInt32Number CheckScreening(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTag
static
-cmsBool CheckOneStr(cmsMLU* mlu, cmsInt32Number n)
+cmsBool CheckOneStr(cmsMLU* mlu, cmsInt32Number n)
{
char Buffer[256], Buffer2[256];
@@ -4034,10 +4036,10 @@ void SetOneStr(cmsMLU** mlu, wchar_t* s1, wchar_t* s2)
static
-cmsInt32Number CheckProfileSequenceTag(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckProfileSequenceTag(cmsInt32Number Pass, cmsHPROFILE hProfile)
{
cmsSEQ* s;
- cmsInt32Number i;
+ cmsInt32Number i;
switch (Pass) {
@@ -4122,10 +4124,10 @@ cmsInt32Number CheckProfileSequenceTag(cmsInt32Number Pass, cmsHPROFILE hProfil
static
-cmsInt32Number CheckProfileSequenceIDTag(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckProfileSequenceIDTag(cmsInt32Number Pass, cmsHPROFILE hProfile)
{
cmsSEQ* s;
- cmsInt32Number i;
+ cmsInt32Number i;
switch (Pass) {
@@ -4172,7 +4174,7 @@ cmsInt32Number CheckProfileSequenceIDTag(cmsInt32Number Pass, cmsHPROFILE hProf
static
-cmsInt32Number CheckICCViewingConditions(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckICCViewingConditions(cmsInt32Number Pass, cmsHPROFILE hProfile)
{
cmsICCViewingConditions* v;
cmsICCViewingConditions s;
@@ -4214,42 +4216,42 @@ cmsInt32Number CheckICCViewingConditions(cmsInt32Number Pass, cmsHPROFILE hProf
static
-cmsInt32Number CheckVCGT(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckVCGT(cmsInt32Number Pass, cmsHPROFILE hProfile)
{
- cmsToneCurve* Curves[3];
- cmsToneCurve** PtrCurve;
-
- switch (Pass) {
+ cmsToneCurve* Curves[3];
+ cmsToneCurve** PtrCurve;
+
+ switch (Pass) {
case 1:
- Curves[0] = cmsBuildGamma(DbgThread(), 1.1);
+ Curves[0] = cmsBuildGamma(DbgThread(), 1.1);
Curves[1] = cmsBuildGamma(DbgThread(), 2.2);
- Curves[2] = cmsBuildGamma(DbgThread(), 3.4);
+ Curves[2] = cmsBuildGamma(DbgThread(), 3.4);
- if (!cmsWriteTag(hProfile, cmsSigVcgtTag, Curves)) return 0;
+ if (!cmsWriteTag(hProfile, cmsSigVcgtTag, Curves)) return 0;
- cmsFreeToneCurveTriple(Curves);
+ cmsFreeToneCurveTriple(Curves);
return 1;
- case 2:
+ case 2:
- PtrCurve = cmsReadTag(hProfile, cmsSigVcgtTag);
- if (PtrCurve == NULL) return 0;
- if (!IsGoodVal("VCGT R", cmsEstimateGamma(PtrCurve[0], 0.01), 1.1, 0.001)) return 0;
+ PtrCurve = cmsReadTag(hProfile, cmsSigVcgtTag);
+ if (PtrCurve == NULL) return 0;
+ if (!IsGoodVal("VCGT R", cmsEstimateGamma(PtrCurve[0], 0.01), 1.1, 0.001)) return 0;
if (!IsGoodVal("VCGT G", cmsEstimateGamma(PtrCurve[1], 0.01), 2.2, 0.001)) return 0;
- if (!IsGoodVal("VCGT B", cmsEstimateGamma(PtrCurve[2], 0.01), 3.4, 0.001)) return 0;
- return 1;
+ if (!IsGoodVal("VCGT B", cmsEstimateGamma(PtrCurve[2], 0.01), 3.4, 0.001)) return 0;
+ return 1;
- default:;
- }
+ default:;
+ }
- return 0;
+ return 0;
}
static
-cmsInt32Number CheckRAWtags(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckRAWtags(cmsInt32Number Pass, cmsHPROFILE hProfile)
{
char Buffer[7];
@@ -4272,10 +4274,10 @@ cmsInt32Number CheckRAWtags(cmsInt32Number Pass, cmsHPROFILE hProfile)
// This is a very big test that checks every single tag
static
-cmsInt32Number CheckProfileCreation(void)
+cmsInt32Number CheckProfileCreation(void)
{
cmsHPROFILE h;
- cmsInt32Number Pass;
+ cmsInt32Number Pass;
h = cmsCreateProfilePlaceholder(DbgThread());
if (h == NULL) return 0;
@@ -4402,8 +4404,8 @@ cmsInt32Number CheckProfileCreation(void)
if (!CheckICCViewingConditions(Pass, h)) return 0;
- SubTest("VCGT tags");
- if (!CheckVCGT(Pass, h)) return 0;
+ SubTest("VCGT tags");
+ if (!CheckVCGT(Pass, h)) return 0;
SubTest("RAW tags");
if (!CheckRAWtags(Pass, h)) return 0;
@@ -4445,7 +4447,7 @@ void ErrorReportingFunction(cmsContext ContextID, cmsUInt32Number ErrorCode, con
static
-cmsInt32Number CheckBadProfiles(void)
+cmsInt32Number CheckBadProfiles(void)
{
cmsHPROFILE h;
@@ -4511,17 +4513,17 @@ cmsInt32Number CheckBadProfiles(void)
static
-cmsInt32Number CheckErrReportingOnBadProfiles(void)
+cmsInt32Number CheckErrReportingOnBadProfiles(void)
{
- cmsInt32Number rc;
+ cmsInt32Number rc;
- cmsSetLogErrorHandler(ErrorReportingFunction);
- rc = CheckBadProfiles();
- cmsSetLogErrorHandler(FatalErrorQuit);
+ cmsSetLogErrorHandler(ErrorReportingFunction);
+ rc = CheckBadProfiles();
+ cmsSetLogErrorHandler(FatalErrorQuit);
- // Reset the error state
- TrappedError = FALSE;
- return rc;
+ // Reset the error state
+ TrappedError = FALSE;
+ return rc;
}
@@ -4531,9 +4533,9 @@ cmsInt32Number CheckErrReportingOnBadProfiles(void)
// Check a linear xform
static
-cmsInt32Number Check8linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
+cmsInt32Number Check8linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
{
- cmsInt32Number n2, i, j;
+ cmsInt32Number n2, i, j;
cmsUInt8Number Inw[MAXCHANNELS], Outw[MAXCHANNELS];
n2=0;
@@ -4545,7 +4547,7 @@ cmsInt32Number Check8linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
for (i=0; i < nChan; i++) {
- cmsInt32Number dif = abs(Outw[i] - j);
+ cmsInt32Number dif = abs(Outw[i] - j);
if (dif > n2) n2 = dif;
}
@@ -4562,9 +4564,9 @@ cmsInt32Number Check8linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
}
static
-cmsInt32Number Compare8bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
+cmsInt32Number Compare8bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
{
- cmsInt32Number n2, i, j;
+ cmsInt32Number n2, i, j;
cmsUInt8Number Inw[MAXCHANNELS], Outw1[MAXCHANNELS], Outw2[MAXCHANNELS];;
n2=0;
@@ -4577,7 +4579,7 @@ cmsInt32Number Compare8bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsI
for (i=0; i < nChan; i++) {
- cmsInt32Number dif = abs(Outw2[i] - Outw1[i]);
+ cmsInt32Number dif = abs(Outw2[i] - Outw1[i]);
if (dif > n2) n2 = dif;
}
@@ -4597,21 +4599,21 @@ cmsInt32Number Compare8bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsI
// Check a linear xform
static
-cmsInt32Number Check16linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
+cmsInt32Number Check16linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
{
- cmsInt32Number n2, i, j;
+ cmsInt32Number n2, i, j;
cmsUInt16Number Inw[MAXCHANNELS], Outw[MAXCHANNELS];
n2=0;
for (j=0; j < 0xFFFF; j++) {
- for (i=0; i < nChan; i++) Inw[i] = j;
+ for (i=0; i < nChan; i++) Inw[i] = (cmsUInt16Number) j;
cmsDoTransform(xform, Inw, Outw, 1);
for (i=0; i < nChan; i++) {
- cmsInt32Number dif = abs(Outw[i] - j);
+ cmsInt32Number dif = abs(Outw[i] - j);
if (dif > n2) n2 = dif;
}
@@ -4629,23 +4631,23 @@ cmsInt32Number Check16linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
}
static
-cmsInt32Number Compare16bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
+cmsInt32Number Compare16bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
{
- cmsInt32Number n2, i, j;
+ cmsInt32Number n2, i, j;
cmsUInt16Number Inw[MAXCHANNELS], Outw1[MAXCHANNELS], Outw2[MAXCHANNELS];;
n2=0;
for (j=0; j < 0xFFFF; j++) {
- for (i=0; i < nChan; i++) Inw[i] = j;
+ for (i=0; i < nChan; i++) Inw[i] = (cmsUInt16Number) j;
cmsDoTransform(xform1, Inw, Outw1, 1);
cmsDoTransform(xform2, Inw, Outw2, 1);
for (i=0; i < nChan; i++) {
- cmsInt32Number dif = abs(Outw2[i] - Outw1[i]);
+ cmsInt32Number dif = abs(Outw2[i] - Outw1[i]);
if (dif > n2) n2 = dif;
}
@@ -4665,9 +4667,9 @@ cmsInt32Number Compare16bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cms
// Check a linear xform
static
-cmsInt32Number CheckFloatlinearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
+cmsInt32Number CheckFloatlinearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
{
- cmsInt32Number n2, i, j;
+ cmsInt32Number n2, i, j;
cmsFloat32Number In[MAXCHANNELS], Out[MAXCHANNELS];
n2=0;
@@ -4692,9 +4694,9 @@ cmsInt32Number CheckFloatlinearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
// Check a linear xform
static
-cmsInt32Number CompareFloatXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
+cmsInt32Number CompareFloatXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
{
- cmsInt32Number n2, i, j;
+ cmsInt32Number n2, i, j;
cmsFloat32Number In[MAXCHANNELS], Out1[MAXCHANNELS], Out2[MAXCHANNELS];
n2=0;
@@ -4722,13 +4724,13 @@ cmsInt32Number CompareFloatXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cms
// Curves only transforms ----------------------------------------------------------------------------------------
static
-cmsInt32Number CheckCurvesOnlyTransforms(void)
+cmsInt32Number CheckCurvesOnlyTransforms(void)
{
cmsHTRANSFORM xform1, xform2;
cmsHPROFILE h1, h2, h3;
cmsToneCurve* c1, *c2, *c3;
- cmsInt32Number rc = 1;
+ cmsInt32Number rc = 1;
c1 = cmsBuildGamma(DbgThread(), 2.2);
@@ -4800,7 +4802,7 @@ Error:
static cmsFloat64Number MaxDE;
static
-cmsInt32Number CheckOneLab(cmsHTRANSFORM xform, cmsFloat64Number L, cmsFloat64Number a, cmsFloat64Number b)
+cmsInt32Number CheckOneLab(cmsHTRANSFORM xform, cmsFloat64Number L, cmsFloat64Number a, cmsFloat64Number b)
{
cmsCIELab In, Out;
cmsFloat64Number dE;
@@ -4823,9 +4825,9 @@ cmsInt32Number CheckOneLab(cmsHTRANSFORM xform, cmsFloat64Number L, cmsFloat64Nu
// Check several Lab, slicing at non-exact values. Precision should be 16 bits. 50x50x50 checks aprox.
static
-cmsInt32Number CheckSeveralLab(cmsHTRANSFORM xform)
+cmsInt32Number CheckSeveralLab(cmsHTRANSFORM xform)
{
- cmsInt32Number L, a, b;
+ cmsInt32Number L, a, b;
MaxDE = 0;
for (L=0; L < 65536; L += 1311) {
@@ -4847,10 +4849,10 @@ cmsInt32Number CheckSeveralLab(cmsHTRANSFORM xform)
static
-cmsInt32Number OneTrivialLab(cmsHPROFILE hLab1, cmsHPROFILE hLab2, const char* txt)
+cmsInt32Number OneTrivialLab(cmsHPROFILE hLab1, cmsHPROFILE hLab2, const char* txt)
{
cmsHTRANSFORM xform;
- cmsInt32Number rc;
+ cmsInt32Number rc;
SubTest(txt);
xform = cmsCreateTransformTHR(DbgThread(), hLab1, TYPE_Lab_DBL, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
@@ -4863,7 +4865,7 @@ cmsInt32Number OneTrivialLab(cmsHPROFILE hLab1, cmsHPROFILE hLab2, const char* t
static
-cmsInt32Number CheckFloatLabTransforms(void)
+cmsInt32Number CheckFloatLabTransforms(void)
{
return OneTrivialLab(cmsCreateLab4ProfileTHR(DbgThread(), NULL), cmsCreateLab4ProfileTHR(DbgThread(), NULL), "Lab4/Lab4") &&
OneTrivialLab(cmsCreateLab2ProfileTHR(DbgThread(), NULL), cmsCreateLab2ProfileTHR(DbgThread(), NULL), "Lab2/Lab2") &&
@@ -4873,7 +4875,7 @@ cmsInt32Number CheckFloatLabTransforms(void)
static
-cmsInt32Number CheckEncodedLabTransforms(void)
+cmsInt32Number CheckEncodedLabTransforms(void)
{
cmsHTRANSFORM xform;
cmsUInt16Number In[3];
@@ -4951,11 +4953,11 @@ cmsInt32Number CheckEncodedLabTransforms(void)
}
static
-cmsInt32Number CheckStoredIdentities(void)
+cmsInt32Number CheckStoredIdentities(void)
{
cmsHPROFILE hLab, hLink, h4, h2;
cmsHTRANSFORM xform;
- cmsInt32Number rc = 1;
+ cmsInt32Number rc = 1;
hLab = cmsCreateLab4ProfileTHR(DbgThread(), NULL);
xform = cmsCreateTransformTHR(DbgThread(), hLab, TYPE_Lab_8, hLab, TYPE_Lab_8, 0, 0);
@@ -5024,11 +5026,11 @@ Error:
// Check a simple xform from a matrix profile to itself. Test floating point accuracy.
static
-cmsInt32Number CheckMatrixShaperXFORMFloat(void)
+cmsInt32Number CheckMatrixShaperXFORMFloat(void)
{
cmsHPROFILE hAbove, hSRGB;
cmsHTRANSFORM xform;
- cmsInt32Number rc1, rc2;
+ cmsInt32Number rc1, rc2;
hAbove = Create_AboveRGB();
xform = cmsCreateTransformTHR(DbgThread(), hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
@@ -5048,11 +5050,11 @@ cmsInt32Number CheckMatrixShaperXFORMFloat(void)
// Check a simple xform from a matrix profile to itself. Test 16 bits accuracy.
static
-cmsInt32Number CheckMatrixShaperXFORM16(void)
+cmsInt32Number CheckMatrixShaperXFORM16(void)
{
cmsHPROFILE hAbove, hSRGB;
cmsHTRANSFORM xform;
- cmsInt32Number rc1, rc2;
+ cmsInt32Number rc1, rc2;
hAbove = Create_AboveRGB();
xform = cmsCreateTransformTHR(DbgThread(), hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, INTENT_RELATIVE_COLORIMETRIC, 0);
@@ -5073,11 +5075,11 @@ cmsInt32Number CheckMatrixShaperXFORM16(void)
// Check a simple xform from a matrix profile to itself. Test 8 bits accuracy.
static
-cmsInt32Number CheckMatrixShaperXFORM8(void)
+cmsInt32Number CheckMatrixShaperXFORM8(void)
{
cmsHPROFILE hAbove, hSRGB;
cmsHTRANSFORM xform;
- cmsInt32Number rc1, rc2;
+ cmsInt32Number rc1, rc2;
hAbove = Create_AboveRGB();
xform = cmsCreateTransformTHR(DbgThread(), hAbove, TYPE_RGB_8, hAbove, TYPE_RGB_8, INTENT_RELATIVE_COLORIMETRIC, 0);
@@ -5108,7 +5110,7 @@ cmsInt32Number CheckMatrixShaperXFORM8(void)
// Check known values going from sRGB to XYZ
static
-cmsInt32Number CheckOneRGB_f(cmsHTRANSFORM xform, cmsInt32Number R, cmsInt32Number G, cmsInt32Number B, cmsFloat64Number X, cmsFloat64Number Y, cmsFloat64Number Z, cmsFloat64Number err)
+cmsInt32Number CheckOneRGB_f(cmsHTRANSFORM xform, cmsInt32Number R, cmsInt32Number G, cmsInt32Number B, cmsFloat64Number X, cmsFloat64Number Y, cmsFloat64Number Z, cmsFloat64Number err)
{
cmsFloat32Number RGB[3];
cmsFloat64Number Out[3];
@@ -5126,11 +5128,11 @@ cmsInt32Number CheckOneRGB_f(cmsHTRANSFORM xform, cmsInt32Number R, cmsInt32Numb
static
-cmsInt32Number Chack_sRGB_Float(void)
+cmsInt32Number Chack_sRGB_Float(void)
{
cmsHPROFILE hsRGB, hXYZ, hLab;
cmsHTRANSFORM xform1, xform2;
- cmsInt32Number rc;
+ cmsInt32Number rc;
hsRGB = cmsCreate_sRGBProfileTHR(DbgThread());
@@ -5167,77 +5169,77 @@ cmsInt32Number Chack_sRGB_Float(void)
}
-// ---------------------------------------------------
-
-static
-cmsBool GetProfileRGBPrimaries(cmsHPROFILE hProfile,
- cmsCIEXYZTRIPLE *result,
- cmsUInt32Number intent)
-{
- cmsHPROFILE hXYZ;
- cmsHTRANSFORM hTransform;
- cmsFloat64Number rgb[3][3] = {{1., 0., 0.},
- {0., 1., 0.},
- {0., 0., 1.}};
-
- hXYZ = cmsCreateXYZProfile();
- if (hXYZ == NULL) return FALSE;
-
- hTransform = cmsCreateTransform(hProfile, TYPE_RGB_DBL, hXYZ, TYPE_XYZ_DBL,
- intent, cmsFLAGS_NOCACHE | cmsFLAGS_NOOPTIMIZE);
- cmsCloseProfile(hXYZ);
- if (hTransform == NULL) return FALSE;
-
- cmsDoTransform(hTransform, rgb, result, 3);
- cmsDeleteTransform(hTransform);
- return TRUE;
-}
-
-
-static
-int CheckRGBPrimaries(void)
-{
- cmsHPROFILE hsRGB;
- cmsCIEXYZTRIPLE tripXYZ;
- cmsCIExyYTRIPLE tripxyY;
- cmsBool result;
-
- hsRGB = cmsCreate_sRGBProfileTHR(DbgThread());
- if (!hsRGB) return 0;
-
- result = GetProfileRGBPrimaries(hsRGB, &tripXYZ,
- INTENT_ABSOLUTE_COLORIMETRIC);
-
- cmsCloseProfile(hsRGB);
- if (!result) return 0;
-
- cmsXYZ2xyY(&tripxyY.Red, &tripXYZ.Red);
- cmsXYZ2xyY(&tripxyY.Green, &tripXYZ.Green);
- cmsXYZ2xyY(&tripxyY.Blue, &tripXYZ.Blue);
-
- /* valus were taken from
- http://en.wikipedia.org/wiki/RGB_color_spaces#Specifications */
-
- if (!IsGoodFixed15_16("xRed", tripxyY.Red.x, 0.64) ||
- !IsGoodFixed15_16("yRed", tripxyY.Red.y, 0.33) ||
- !IsGoodFixed15_16("xGreen", tripxyY.Green.x, 0.30) ||
- !IsGoodFixed15_16("yGreen", tripxyY.Green.y, 0.60) ||
- !IsGoodFixed15_16("xBlue", tripxyY.Blue.x, 0.15) ||
- !IsGoodFixed15_16("yBlue", tripxyY.Blue.y, 0.06)) {
- Fail("One or more primaries are wrong.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
+// ---------------------------------------------------
+
+static
+cmsBool GetProfileRGBPrimaries(cmsHPROFILE hProfile,
+ cmsCIEXYZTRIPLE *result,
+ cmsUInt32Number intent)
+{
+ cmsHPROFILE hXYZ;
+ cmsHTRANSFORM hTransform;
+ cmsFloat64Number rgb[3][3] = {{1., 0., 0.},
+ {0., 1., 0.},
+ {0., 0., 1.}};
+
+ hXYZ = cmsCreateXYZProfile();
+ if (hXYZ == NULL) return FALSE;
+
+ hTransform = cmsCreateTransform(hProfile, TYPE_RGB_DBL, hXYZ, TYPE_XYZ_DBL,
+ intent, cmsFLAGS_NOCACHE | cmsFLAGS_NOOPTIMIZE);
+ cmsCloseProfile(hXYZ);
+ if (hTransform == NULL) return FALSE;
+
+ cmsDoTransform(hTransform, rgb, result, 3);
+ cmsDeleteTransform(hTransform);
+ return TRUE;
+}
+
+
+static
+int CheckRGBPrimaries(void)
+{
+ cmsHPROFILE hsRGB;
+ cmsCIEXYZTRIPLE tripXYZ;
+ cmsCIExyYTRIPLE tripxyY;
+ cmsBool result;
+
+ hsRGB = cmsCreate_sRGBProfileTHR(DbgThread());
+ if (!hsRGB) return 0;
+
+ result = GetProfileRGBPrimaries(hsRGB, &tripXYZ,
+ INTENT_ABSOLUTE_COLORIMETRIC);
+
+ cmsCloseProfile(hsRGB);
+ if (!result) return 0;
+
+ cmsXYZ2xyY(&tripxyY.Red, &tripXYZ.Red);
+ cmsXYZ2xyY(&tripxyY.Green, &tripXYZ.Green);
+ cmsXYZ2xyY(&tripxyY.Blue, &tripXYZ.Blue);
+
+ /* valus were taken from
+ http://en.wikipedia.org/wiki/RGB_color_spaces#Specifications */
+
+ if (!IsGoodFixed15_16("xRed", tripxyY.Red.x, 0.64) ||
+ !IsGoodFixed15_16("yRed", tripxyY.Red.y, 0.33) ||
+ !IsGoodFixed15_16("xGreen", tripxyY.Green.x, 0.30) ||
+ !IsGoodFixed15_16("yGreen", tripxyY.Green.y, 0.60) ||
+ !IsGoodFixed15_16("xBlue", tripxyY.Blue.x, 0.15) ||
+ !IsGoodFixed15_16("yBlue", tripxyY.Blue.y, 0.06)) {
+ Fail("One or more primaries are wrong.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
// -----------------------------------------------------------------------------------------------------------------
// This function will check CMYK -> CMYK transforms. It uses FOGRA29 and SWOP ICC profiles
static
-cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char* Profile2)
+cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char* Profile2)
{
cmsHPROFILE hSWOP = cmsOpenProfileFromFileTHR(DbgThread(), Profile1, "r");
cmsHPROFILE hFOGRA = cmsOpenProfileFromFileTHR(DbgThread(), Profile2, "r");
@@ -5246,7 +5248,7 @@ cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char
cmsCIELab Lab1, Lab2;
cmsHPROFILE hLab;
cmsFloat64Number DeltaL, Max;
- cmsInt32Number i;
+ cmsInt32Number i;
hLab = cmsCreateLab4ProfileTHR(DbgThread(), NULL);
@@ -5309,14 +5311,14 @@ cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char
}
static
-cmsInt32Number CheckCMYKRoundtrip(void)
+cmsInt32Number CheckCMYKRoundtrip(void)
{
return CheckCMYK(INTENT_RELATIVE_COLORIMETRIC, "USWebCoatedSWOP.icc", "USWebCoatedSWOP.icc");
}
static
-cmsInt32Number CheckCMYKPerceptual(void)
+cmsInt32Number CheckCMYKPerceptual(void)
{
return CheckCMYK(INTENT_PERCEPTUAL, "USWebCoatedSWOP.icc", "UncoatedFOGRA29.icc");
}
@@ -5324,7 +5326,7 @@ cmsInt32Number CheckCMYKPerceptual(void)
static
-cmsInt32Number CheckCMYKRelCol(void)
+cmsInt32Number CheckCMYKRelCol(void)
{
return CheckCMYK(INTENT_RELATIVE_COLORIMETRIC, "USWebCoatedSWOP.icc", "UncoatedFOGRA29.icc");
}
@@ -5332,7 +5334,7 @@ cmsInt32Number CheckCMYKRelCol(void)
static
-cmsInt32Number CheckKOnlyBlackPreserving(void)
+cmsInt32Number CheckKOnlyBlackPreserving(void)
{
cmsHPROFILE hSWOP = cmsOpenProfileFromFileTHR(DbgThread(), "USWebCoatedSWOP.icc", "r");
cmsHPROFILE hFOGRA = cmsOpenProfileFromFileTHR(DbgThread(), "UncoatedFOGRA29.icc", "r");
@@ -5341,7 +5343,7 @@ cmsInt32Number CheckKOnlyBlackPreserving(void)
cmsCIELab Lab1, Lab2;
cmsHPROFILE hLab;
cmsFloat64Number DeltaL, Max;
- cmsInt32Number i;
+ cmsInt32Number i;
hLab = cmsCreateLab4ProfileTHR(DbgThread(), NULL);
@@ -5358,16 +5360,16 @@ cmsInt32Number CheckKOnlyBlackPreserving(void)
CMYK1[2] = 0;
CMYK1[3] = (cmsFloat32Number) i;
- // SWOP CMYK to Lab1
+ // SWOP CMYK to Lab1
cmsDoTransform(swop_lab, CMYK1, &Lab1, 1);
- // SWOP To FOGRA using black preservation
+ // SWOP To FOGRA using black preservation
cmsDoTransform(xform, CMYK1, CMYK2, 1);
- // Obtained FOGRA CMYK to Lab2
+ // Obtained FOGRA CMYK to Lab2
cmsDoTransform(fogra_lab, CMYK2, &Lab2, 1);
- // We care only on L*
+ // We care only on L*
DeltaL = fabs(Lab1.L - Lab2.L);
if (DeltaL > Max) Max = DeltaL;
@@ -5376,11 +5378,11 @@ cmsInt32Number CheckKOnlyBlackPreserving(void)
cmsDeleteTransform(xform);
- // dL should be below 3.0
+ // dL should be below 3.0
if (Max > 3.0) return 0;
- // Same, but FOGRA to SWOP
+ // Same, but FOGRA to SWOP
xform = cmsCreateTransformTHR(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, INTENT_PRESERVE_K_ONLY_PERCEPTUAL, 0);
Max = 0;
@@ -5413,7 +5415,7 @@ cmsInt32Number CheckKOnlyBlackPreserving(void)
}
static
-cmsInt32Number CheckKPlaneBlackPreserving(void)
+cmsInt32Number CheckKPlaneBlackPreserving(void)
{
cmsHPROFILE hSWOP = cmsOpenProfileFromFileTHR(DbgThread(), "USWebCoatedSWOP.icc", "r");
cmsHPROFILE hFOGRA = cmsOpenProfileFromFileTHR(DbgThread(), "UncoatedFOGRA29.icc", "r");
@@ -5422,7 +5424,7 @@ cmsInt32Number CheckKPlaneBlackPreserving(void)
cmsCIELab Lab1, Lab2;
cmsHPROFILE hLab;
cmsFloat64Number DeltaE, Max;
- cmsInt32Number i;
+ cmsInt32Number i;
hLab = cmsCreateLab4ProfileTHR(DbgThread(), NULL);
@@ -5488,11 +5490,11 @@ cmsInt32Number CheckKPlaneBlackPreserving(void)
static
-cmsInt32Number CheckProofingXFORMFloat(void)
+cmsInt32Number CheckProofingXFORMFloat(void)
{
cmsHPROFILE hAbove;
cmsHTRANSFORM xform;
- cmsInt32Number rc;
+ cmsInt32Number rc;
hAbove = Create_AboveRGB();
xform = cmsCreateProofingTransformTHR(DbgThread(), hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, hAbove,
@@ -5504,11 +5506,11 @@ cmsInt32Number CheckProofingXFORMFloat(void)
}
static
-cmsInt32Number CheckProofingXFORM16(void)
+cmsInt32Number CheckProofingXFORM16(void)
{
cmsHPROFILE hAbove;
cmsHTRANSFORM xform;
- cmsInt32Number rc;
+ cmsInt32Number rc;
hAbove = Create_AboveRGB();
xform = cmsCreateProofingTransformTHR(DbgThread(), hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, hAbove,
@@ -5521,11 +5523,11 @@ cmsInt32Number CheckProofingXFORM16(void)
static
-cmsInt32Number CheckGamutCheck(void)
+cmsInt32Number CheckGamutCheck(void)
{
cmsHPROFILE hSRGB, hAbove;
cmsHTRANSFORM xform;
- cmsInt32Number rc;
+ cmsInt32Number rc;
cmsUInt16Number Alarm[3] = { 0xDEAD, 0xBABE, 0xFACE };
// Set alarm codes to fancy values so we could check the out of gamut condition
@@ -5574,7 +5576,7 @@ cmsInt32Number CheckGamutCheck(void)
// -------------------------------------------------------------------------------------------------------------------
static
-cmsInt32Number CheckBlackPoint(void)
+cmsInt32Number CheckBlackPoint(void)
{
cmsHPROFILE hProfile;
cmsCIEXYZ Black;
@@ -5610,37 +5612,37 @@ cmsInt32Number CheckBlackPoint(void)
static
-cmsInt32Number CheckOneTAC(cmsFloat64Number InkLimit)
+cmsInt32Number CheckOneTAC(cmsFloat64Number InkLimit)
{
- cmsHPROFILE h;
- cmsFloat64Number d;
+ cmsHPROFILE h;
+ cmsFloat64Number d;
- h =CreateFakeCMYK(InkLimit, TRUE);
- cmsSaveProfileToFile(h, "lcmstac.icc");
- cmsCloseProfile(h);
+ h =CreateFakeCMYK(InkLimit, TRUE);
+ cmsSaveProfileToFile(h, "lcmstac.icc");
+ cmsCloseProfile(h);
- h = cmsOpenProfileFromFile("lcmstac.icc", "r");
- d = cmsDetectTAC(h);
- cmsCloseProfile(h);
+ h = cmsOpenProfileFromFile("lcmstac.icc", "r");
+ d = cmsDetectTAC(h);
+ cmsCloseProfile(h);
- remove("lcmstac.icc");
+ remove("lcmstac.icc");
- if (fabs(d - InkLimit) > 5) return 0;
+ if (fabs(d - InkLimit) > 5) return 0;
- return 1;
+ return 1;
}
static
-cmsInt32Number CheckTAC(void)
+cmsInt32Number CheckTAC(void)
{
- if (!CheckOneTAC(180)) return 0;
+ if (!CheckOneTAC(180)) return 0;
if (!CheckOneTAC(220)) return 0;
- if (!CheckOneTAC(286)) return 0;
- if (!CheckOneTAC(310)) return 0;
- if (!CheckOneTAC(330)) return 0;
+ if (!CheckOneTAC(286)) return 0;
+ if (!CheckOneTAC(310)) return 0;
+ if (!CheckOneTAC(330)) return 0;
- return 1;
+ return 1;
}
// -------------------------------------------------------------------------------------------------------
@@ -5649,10 +5651,10 @@ cmsInt32Number CheckTAC(void)
#define NPOINTS_IT8 10 // (17*17*17*17)
static
-cmsInt32Number CheckCGATS(void)
+cmsInt32Number CheckCGATS(void)
{
cmsHANDLE it8;
- cmsInt32Number i;
+ cmsInt32Number i;
it8 = cmsIT8Alloc(DbgThread());
@@ -5794,7 +5796,7 @@ void GenerateCRD(const char* cOutProf, const char* FileName)
}
static
-cmsInt32Number CheckPostScript(void)
+cmsInt32Number CheckPostScript(void)
{
GenerateCSA("sRGB_Color_Space_Profile.icm", "sRGB_CSA.ps");
GenerateCSA("aRGBlcms2.icc", "aRGB_CSA.ps");
@@ -5815,133 +5817,133 @@ cmsInt32Number CheckPostScript(void)
static
-cmsInt32Number CheckGray(cmsHTRANSFORM xform, cmsUInt8Number g, double L)
+cmsInt32Number CheckGray(cmsHTRANSFORM xform, cmsUInt8Number g, double L)
{
- cmsCIELab Lab;
+ cmsCIELab Lab;
- cmsDoTransform(xform, &g, &Lab, 1);
+ cmsDoTransform(xform, &g, &Lab, 1);
- if (!IsGoodVal("a axis on gray", 0, Lab.a, 0.001)) return 0;
+ if (!IsGoodVal("a axis on gray", 0, Lab.a, 0.001)) return 0;
if (!IsGoodVal("b axis on gray", 0, Lab.b, 0.001)) return 0;
- return IsGoodVal("Gray value", L, Lab.L, 0.01);
+ return IsGoodVal("Gray value", L, Lab.L, 0.01);
}
static
-cmsInt32Number CheckInputGray(void)
+cmsInt32Number CheckInputGray(void)
{
- cmsHPROFILE hGray = Create_Gray22();
- cmsHPROFILE hLab = cmsCreateLab4Profile(NULL);
+ cmsHPROFILE hGray = Create_Gray22();
+ cmsHPROFILE hLab = cmsCreateLab4Profile(NULL);
cmsHTRANSFORM xform;
- if (hGray == NULL || hLab == NULL) return 0;
+ if (hGray == NULL || hLab == NULL) return 0;
- xform = cmsCreateTransform(hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ xform = cmsCreateTransform(hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
cmsCloseProfile(hGray); cmsCloseProfile(hLab);
if (!CheckGray(xform, 0, 0)) return 0;
if (!CheckGray(xform, 125, 52.768)) return 0;
if (!CheckGray(xform, 200, 81.069)) return 0;
- if (!CheckGray(xform, 255, 100.0)) return 0;
+ if (!CheckGray(xform, 255, 100.0)) return 0;
- cmsDeleteTransform(xform);
- return 1;
+ cmsDeleteTransform(xform);
+ return 1;
}
static
-cmsInt32Number CheckLabInputGray(void)
+cmsInt32Number CheckLabInputGray(void)
{
- cmsHPROFILE hGray = Create_GrayLab();
- cmsHPROFILE hLab = cmsCreateLab4Profile(NULL);
+ cmsHPROFILE hGray = Create_GrayLab();
+ cmsHPROFILE hLab = cmsCreateLab4Profile(NULL);
cmsHTRANSFORM xform;
- if (hGray == NULL || hLab == NULL) return 0;
+ if (hGray == NULL || hLab == NULL) return 0;
- xform = cmsCreateTransform(hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ xform = cmsCreateTransform(hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
cmsCloseProfile(hGray); cmsCloseProfile(hLab);
if (!CheckGray(xform, 0, 0)) return 0;
if (!CheckGray(xform, 125, 49.019)) return 0;
if (!CheckGray(xform, 200, 78.431)) return 0;
- if (!CheckGray(xform, 255, 100.0)) return 0;
-
- cmsDeleteTransform(xform);
- return 1;
-}
-
-
-static
-cmsInt32Number CheckOutGray(cmsHTRANSFORM xform, double L, cmsUInt8Number g)
-{
- cmsCIELab Lab;
- cmsUInt8Number g_out;
-
- Lab.L = L;
- Lab.a = 0;
- Lab.b = 0;
-
- cmsDoTransform(xform, &Lab, &g_out, 1);
-
- return IsGoodVal("Gray value", g, (double) g_out, 0.01);
-}
-
-static
-cmsInt32Number CheckOutputGray(void)
-{
- cmsHPROFILE hGray = Create_Gray22();
- cmsHPROFILE hLab = cmsCreateLab4Profile(NULL);
- cmsHTRANSFORM xform;
-
- if (hGray == NULL || hLab == NULL) return 0;
-
- xform = cmsCreateTransform( hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(hGray); cmsCloseProfile(hLab);
-
- if (!CheckOutGray(xform, 0, 0)) return 0;
- if (!CheckOutGray(xform, 100, 255)) return 0;
-
- if (!CheckOutGray(xform, 20, 52)) return 0;
- if (!CheckOutGray(xform, 50, 118)) return 0;
-
-
- cmsDeleteTransform(xform);
- return 1;
-}
-
-
-static
-cmsInt32Number CheckLabOutputGray(void)
-{
- cmsHPROFILE hGray = Create_GrayLab();
- cmsHPROFILE hLab = cmsCreateLab4Profile(NULL);
- cmsHTRANSFORM xform;
- cmsInt32Number i;
-
- if (hGray == NULL || hLab == NULL) return 0;
-
- xform = cmsCreateTransform( hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(hGray); cmsCloseProfile(hLab);
-
- if (!CheckOutGray(xform, 0, 0)) return 0;
- if (!CheckOutGray(xform, 100, 255)) return 0;
-
- for (i=0; i < 100; i++) {
-
- cmsUInt8Number g;
-
- g = (cmsUInt8Number) floor(i * 255.0 / 100.0 + 0.5);
-
- if (!CheckOutGray(xform, i, g)) return 0;
- }
-
-
- cmsDeleteTransform(xform);
- return 1;
-}
-
-
-static
-cmsInt32Number CheckV4gamma(void)
+ if (!CheckGray(xform, 255, 100.0)) return 0;
+
+ cmsDeleteTransform(xform);
+ return 1;
+}
+
+
+static
+cmsInt32Number CheckOutGray(cmsHTRANSFORM xform, double L, cmsUInt8Number g)
+{
+ cmsCIELab Lab;
+ cmsUInt8Number g_out;
+
+ Lab.L = L;
+ Lab.a = 0;
+ Lab.b = 0;
+
+ cmsDoTransform(xform, &Lab, &g_out, 1);
+
+ return IsGoodVal("Gray value", g, (double) g_out, 0.01);
+}
+
+static
+cmsInt32Number CheckOutputGray(void)
+{
+ cmsHPROFILE hGray = Create_Gray22();
+ cmsHPROFILE hLab = cmsCreateLab4Profile(NULL);
+ cmsHTRANSFORM xform;
+
+ if (hGray == NULL || hLab == NULL) return 0;
+
+ xform = cmsCreateTransform( hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(hGray); cmsCloseProfile(hLab);
+
+ if (!CheckOutGray(xform, 0, 0)) return 0;
+ if (!CheckOutGray(xform, 100, 255)) return 0;
+
+ if (!CheckOutGray(xform, 20, 52)) return 0;
+ if (!CheckOutGray(xform, 50, 118)) return 0;
+
+
+ cmsDeleteTransform(xform);
+ return 1;
+}
+
+
+static
+cmsInt32Number CheckLabOutputGray(void)
+{
+ cmsHPROFILE hGray = Create_GrayLab();
+ cmsHPROFILE hLab = cmsCreateLab4Profile(NULL);
+ cmsHTRANSFORM xform;
+ cmsInt32Number i;
+
+ if (hGray == NULL || hLab == NULL) return 0;
+
+ xform = cmsCreateTransform( hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(hGray); cmsCloseProfile(hLab);
+
+ if (!CheckOutGray(xform, 0, 0)) return 0;
+ if (!CheckOutGray(xform, 100, 255)) return 0;
+
+ for (i=0; i < 100; i++) {
+
+ cmsUInt8Number g;
+
+ g = (cmsUInt8Number) floor(i * 255.0 / 100.0 + 0.5);
+
+ if (!CheckOutGray(xform, i, g)) return 0;
+ }
+
+
+ cmsDeleteTransform(xform);
+ return 1;
+}
+
+
+static
+cmsInt32Number CheckV4gamma(void)
{
cmsHPROFILE h;
cmsUInt16Number Lin[] = {0, 0xffff};
@@ -5961,195 +5963,195 @@ cmsInt32Number CheckV4gamma(void)
return 1;
}
-// cmsBool cmsGBDdumpVRML(cmsHANDLE hGBD, const char* fname);
-
-// Gamut descriptor routines
-static
-cmsInt32Number CheckGBD(void)
-{
- cmsCIELab Lab;
- cmsHANDLE h;
- cmsInt32Number L, a, b;
- cmsUInt32Number r1, g1, b1;
- cmsHPROFILE hLab, hsRGB;
- cmsHTRANSFORM xform;
-
- h = cmsGBDAlloc(DbgThread());
- if (h == NULL) return 0;
-
- // Fill all Lab gamut as valid
- SubTest("Filling RAW gamut");
-
- for (L=0; L <= 100; L += 10)
- for (a = -128; a <= 128; a += 5)
- for (b = -128; b <= 128; b += 5) {
-
- Lab.L = L;
- Lab.a = a;
- Lab.b = b;
- if (!cmsGDBAddPoint(h, &Lab)) return 0;
- }
-
- // Complete boundaries
- SubTest("computing Lab gamut");
- if (!cmsGDBCompute(h, 0)) return 0;
-
-
- // All points should be inside gamut
- SubTest("checking Lab gamut");
- for (L=10; L <= 90; L += 25)
- for (a = -120; a <= 120; a += 25)
- for (b = -120; b <= 120; b += 25) {
-
- Lab.L = L;
- Lab.a = a;
- Lab.b = b;
- if (!cmsGDBCheckPoint(h, &Lab)) {
- return 0;
- }
- }
- cmsGBDFree(h);
-
-
- // Now for sRGB
- SubTest("checking sRGB gamut");
- h = cmsGBDAlloc(DbgThread());
- hsRGB = cmsCreate_sRGBProfile();
- hLab = cmsCreateLab4Profile(NULL);
-
- xform = cmsCreateTransform(hsRGB, TYPE_RGB_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOCACHE);
- cmsCloseProfile(hsRGB); cmsCloseProfile(hLab);
-
-
- for (r1=0; r1 < 256; r1 += 5) {
- for (g1=0; g1 < 256; g1 += 5)
- for (b1=0; b1 < 256; b1 += 5) {
-
-
- cmsUInt8Number rgb[3];
-
- rgb[0] = r1;
- rgb[1] = g1;
- rgb[2] = b1;
-
- cmsDoTransform(xform, rgb, &Lab, 1);
-
- // if (fabs(Lab.b) < 20 && Lab.a > 0) continue;
-
- if (!cmsGDBAddPoint(h, &Lab)) {
- cmsGBDFree(h);
- return 0;
- }
-
-
- }
+// cmsBool cmsGBDdumpVRML(cmsHANDLE hGBD, const char* fname);
+
+// Gamut descriptor routines
+static
+cmsInt32Number CheckGBD(void)
+{
+ cmsCIELab Lab;
+ cmsHANDLE h;
+ cmsInt32Number L, a, b;
+ cmsUInt32Number r1, g1, b1;
+ cmsHPROFILE hLab, hsRGB;
+ cmsHTRANSFORM xform;
+
+ h = cmsGBDAlloc(DbgThread());
+ if (h == NULL) return 0;
+
+ // Fill all Lab gamut as valid
+ SubTest("Filling RAW gamut");
+
+ for (L=0; L <= 100; L += 10)
+ for (a = -128; a <= 128; a += 5)
+ for (b = -128; b <= 128; b += 5) {
+
+ Lab.L = L;
+ Lab.a = a;
+ Lab.b = b;
+ if (!cmsGDBAddPoint(h, &Lab)) return 0;
+ }
+
+ // Complete boundaries
+ SubTest("computing Lab gamut");
+ if (!cmsGDBCompute(h, 0)) return 0;
+
+
+ // All points should be inside gamut
+ SubTest("checking Lab gamut");
+ for (L=10; L <= 90; L += 25)
+ for (a = -120; a <= 120; a += 25)
+ for (b = -120; b <= 120; b += 25) {
+
+ Lab.L = L;
+ Lab.a = a;
+ Lab.b = b;
+ if (!cmsGDBCheckPoint(h, &Lab)) {
+ return 0;
+ }
+ }
+ cmsGBDFree(h);
+
+
+ // Now for sRGB
+ SubTest("checking sRGB gamut");
+ h = cmsGBDAlloc(DbgThread());
+ hsRGB = cmsCreate_sRGBProfile();
+ hLab = cmsCreateLab4Profile(NULL);
+
+ xform = cmsCreateTransform(hsRGB, TYPE_RGB_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOCACHE);
+ cmsCloseProfile(hsRGB); cmsCloseProfile(hLab);
+
+
+ for (r1=0; r1 < 256; r1 += 5) {
+ for (g1=0; g1 < 256; g1 += 5)
+ for (b1=0; b1 < 256; b1 += 5) {
+
+
+ cmsUInt8Number rgb[3];
+
+ rgb[0] = (cmsUInt8Number) r1;
+ rgb[1] = (cmsUInt8Number) g1;
+ rgb[2] = (cmsUInt8Number) b1;
+
+ cmsDoTransform(xform, rgb, &Lab, 1);
+
+ // if (fabs(Lab.b) < 20 && Lab.a > 0) continue;
+
+ if (!cmsGDBAddPoint(h, &Lab)) {
+ cmsGBDFree(h);
+ return 0;
+ }
+
+
+ }
}
-
-
- if (!cmsGDBCompute(h, 0)) return 0;
- // cmsGBDdumpVRML(h, "c:\\colormaps\\lab.wrl");
-
- for (r1=10; r1 < 200; r1 += 10) {
- for (g1=10; g1 < 200; g1 += 10)
- for (b1=10; b1 < 200; b1 += 10) {
-
-
- cmsUInt8Number rgb[3];
-
- rgb[0] = r1;
- rgb[1] = g1;
- rgb[2] = b1;
-
- cmsDoTransform(xform, rgb, &Lab, 1);
- if (!cmsGDBCheckPoint(h, &Lab)) {
-
- cmsDeleteTransform(xform);
- cmsGBDFree(h);
- return 0;
- }
- }
+
+
+ if (!cmsGDBCompute(h, 0)) return 0;
+ // cmsGBDdumpVRML(h, "c:\\colormaps\\lab.wrl");
+
+ for (r1=10; r1 < 200; r1 += 10) {
+ for (g1=10; g1 < 200; g1 += 10)
+ for (b1=10; b1 < 200; b1 += 10) {
+
+
+ cmsUInt8Number rgb[3];
+
+ rgb[0] = (cmsUInt8Number) r1;
+ rgb[1] = (cmsUInt8Number) g1;
+ rgb[2] = (cmsUInt8Number) b1;
+
+ cmsDoTransform(xform, rgb, &Lab, 1);
+ if (!cmsGDBCheckPoint(h, &Lab)) {
+
+ cmsDeleteTransform(xform);
+ cmsGBDFree(h);
+ return 0;
+ }
+ }
}
- cmsDeleteTransform(xform);
- cmsGBDFree(h);
-
- SubTest("checking LCh chroma ring");
- h = cmsGBDAlloc(DbgThread());
+ cmsDeleteTransform(xform);
+ cmsGBDFree(h);
+
+ SubTest("checking LCh chroma ring");
+ h = cmsGBDAlloc(DbgThread());
- for (r1=0; r1 < 360; r1++) {
-
- cmsCIELCh LCh;
-
- LCh.L = 70;
- LCh.C = 60;
- LCh.h = r1;
-
- cmsLCh2Lab(&Lab, &LCh);
- if (!cmsGDBAddPoint(h, &Lab)) {
- cmsGBDFree(h);
- return 0;
- }
- }
-
-
- if (!cmsGDBCompute(h, 0)) return 0;
-
- cmsGBDFree(h);
-
- return 1;
-}
-
-
-// --------------------------------------------------------------------------------------------------
-// P E R F O R M A N C E C H E C K S
-// --------------------------------------------------------------------------------------------------
+ for (r1=0; r1 < 360; r1++) {
+
+ cmsCIELCh LCh;
+
+ LCh.L = 70;
+ LCh.C = 60;
+ LCh.h = r1;
+
+ cmsLCh2Lab(&Lab, &LCh);
+ if (!cmsGDBAddPoint(h, &Lab)) {
+ cmsGBDFree(h);
+ return 0;
+ }
+ }
+
+
+ if (!cmsGDBCompute(h, 0)) return 0;
+
+ cmsGBDFree(h);
+
+ return 1;
+}
+
+
+// --------------------------------------------------------------------------------------------------
+// P E R F O R M A N C E C H E C K S
+// --------------------------------------------------------------------------------------------------
typedef struct {cmsUInt8Number r, g, b, a;} Scanline_rgb1;
-typedef struct {cmsUInt16Number r, g, b, a;} Scanline_rgb2;
+typedef struct {cmsUInt16Number r, g, b, a;} Scanline_rgb2;
typedef struct {cmsUInt8Number r, g, b;} Scanline_rgb8;
-typedef struct {cmsUInt16Number r, g, b;} Scanline_rgb0;
-
-
-static
-void TitlePerformance(const char* Txt)
-{
- printf("%-45s: ", Txt); fflush(stdout);
-}
+typedef struct {cmsUInt16Number r, g, b;} Scanline_rgb0;
-static
-void PrintPerformance(cmsUInt32Number Bytes, cmsUInt32Number SizeOfPixel, cmsFloat64Number diff)
-{
- cmsFloat64Number seconds = (cmsFloat64Number) diff / CLOCKS_PER_SEC;
- cmsFloat64Number mpix_sec = Bytes / (1024.0*1024.0*seconds*SizeOfPixel);
-
- printf("%g MPixel/sec.\n", mpix_sec);
- fflush(stdout);
-}
+static
+void TitlePerformance(const char* Txt)
+{
+ printf("%-45s: ", Txt); fflush(stdout);
+}
static
-void SpeedTest16bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+void PrintPerformance(cmsUInt32Number Bytes, cmsUInt32Number SizeOfPixel, cmsFloat64Number diff)
{
+ cmsFloat64Number seconds = (cmsFloat64Number) diff / CLOCKS_PER_SEC;
+ cmsFloat64Number mpix_sec = Bytes / (1024.0*1024.0*seconds*SizeOfPixel);
+
+ printf("%g MPixel/sec.\n", mpix_sec);
+ fflush(stdout);
+}
- cmsInt32Number r, g, b, j;
+
+static
+void SpeedTest16bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+{
+
+ cmsInt32Number r, g, b, j;
clock_t atime;
- cmsFloat64Number diff;
+ cmsFloat64Number diff;
cmsHTRANSFORM hlcmsxform;
Scanline_rgb0 *In;
cmsUInt32Number Mb;
- if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
- Die("Unable to open profiles");
-
- hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_RGB_16,
- hlcmsProfileOut, TYPE_RGB_16, Intent, cmsFLAGS_NOCACHE);
- cmsCloseProfile(hlcmsProfileIn);
- cmsCloseProfile(hlcmsProfileOut);
+ if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
+ Die("Unable to open profiles");
- Mb = 256*256*256*sizeof(Scanline_rgb0);
+ hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_RGB_16,
+ hlcmsProfileOut, TYPE_RGB_16, Intent, cmsFLAGS_NOCACHE);
+ cmsCloseProfile(hlcmsProfileIn);
+ cmsCloseProfile(hlcmsProfileOut);
+
+ Mb = 256*256*256*sizeof(Scanline_rgb0);
In = (Scanline_rgb0*) malloc(Mb);
j = 0;
@@ -6165,7 +6167,7 @@ void SpeedTest16bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
}
- TitlePerformance(Title);
+ TitlePerformance(Title);
atime = clock();
@@ -6173,30 +6175,30 @@ void SpeedTest16bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
diff = clock() - atime;
free(In);
-
- PrintPerformance(Mb, sizeof(Scanline_rgb0), diff);
+
+ PrintPerformance(Mb, sizeof(Scanline_rgb0), diff);
cmsDeleteTransform(hlcmsxform);
-
+
}
static
void SpeedTest16bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut)
{
- cmsInt32Number r, g, b, j;
+ cmsInt32Number r, g, b, j;
clock_t atime;
- cmsFloat64Number diff;
+ cmsFloat64Number diff;
cmsHTRANSFORM hlcmsxform;
Scanline_rgb2 *In;
cmsUInt32Number Mb;
-
- if (hlcmsProfileOut == NULL || hlcmsProfileOut == NULL)
- Die("Unable to open profiles");
+
+ if (hlcmsProfileOut == NULL || hlcmsProfileOut == NULL)
+ Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_CMYK_16,
- hlcmsProfileOut, TYPE_CMYK_16, INTENT_PERCEPTUAL, cmsFLAGS_NOCACHE);
- cmsCloseProfile(hlcmsProfileIn);
- cmsCloseProfile(hlcmsProfileOut);
+ hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_CMYK_16,
+ hlcmsProfileOut, TYPE_CMYK_16, INTENT_PERCEPTUAL, cmsFLAGS_NOCACHE);
+ cmsCloseProfile(hlcmsProfileIn);
+ cmsCloseProfile(hlcmsProfileOut);
Mb = 256*256*256*sizeof(Scanline_rgb2);
@@ -6216,40 +6218,40 @@ void SpeedTest16bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
}
- TitlePerformance(Title);
+ TitlePerformance(Title);
atime = clock();
cmsDoTransform(hlcmsxform, In, In, 256*256*256);
diff = clock() - atime;
-
+
free(In);
- PrintPerformance(Mb, sizeof(Scanline_rgb2), diff);
+ PrintPerformance(Mb, sizeof(Scanline_rgb2), diff);
cmsDeleteTransform(hlcmsxform);
-
+
}
static
-void SpeedTest8bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+void SpeedTest8bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
{
- cmsInt32Number r, g, b, j;
+ cmsInt32Number r, g, b, j;
clock_t atime;
- cmsFloat64Number diff;
+ cmsFloat64Number diff;
cmsHTRANSFORM hlcmsxform;
Scanline_rgb8 *In;
cmsUInt32Number Mb;
- if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
- Die("Unable to open profiles");
-
- hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_RGB_8,
- hlcmsProfileOut, TYPE_RGB_8, Intent, cmsFLAGS_NOCACHE);
- cmsCloseProfile(hlcmsProfileIn);
- cmsCloseProfile(hlcmsProfileOut);
+ if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
+ Die("Unable to open profiles");
+
+ hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_RGB_8,
+ hlcmsProfileOut, TYPE_RGB_8, Intent, cmsFLAGS_NOCACHE);
+ cmsCloseProfile(hlcmsProfileIn);
+ cmsCloseProfile(hlcmsProfileOut);
Mb = 256*256*256*sizeof(Scanline_rgb8);
@@ -6267,40 +6269,40 @@ void SpeedTest8bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
j++;
}
- TitlePerformance(Title);
+ TitlePerformance(Title);
atime = clock();
cmsDoTransform(hlcmsxform, In, In, 256*256*256);
diff = clock() - atime;
-
+
free(In);
- PrintPerformance(Mb, sizeof(Scanline_rgb8), diff);
+ PrintPerformance(Mb, sizeof(Scanline_rgb8), diff);
cmsDeleteTransform(hlcmsxform);
-
+
}
static
void SpeedTest8bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut)
{
- cmsInt32Number r, g, b, j;
+ cmsInt32Number r, g, b, j;
clock_t atime;
- cmsFloat64Number diff;
+ cmsFloat64Number diff;
cmsHTRANSFORM hlcmsxform;
Scanline_rgb2 *In;
cmsUInt32Number Mb;
-
- if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
- Die("Unable to open profiles");
-
- hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_CMYK_8,
- hlcmsProfileOut, TYPE_CMYK_8, INTENT_PERCEPTUAL, cmsFLAGS_NOCACHE);
- cmsCloseProfile(hlcmsProfileIn);
- cmsCloseProfile(hlcmsProfileOut);
+
+ if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
+ Die("Unable to open profiles");
+
+ hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_CMYK_8,
+ hlcmsProfileOut, TYPE_CMYK_8, INTENT_PERCEPTUAL, cmsFLAGS_NOCACHE);
+ cmsCloseProfile(hlcmsProfileIn);
+ cmsCloseProfile(hlcmsProfileOut);
Mb = 256*256*256*sizeof(Scanline_rgb2);
@@ -6319,68 +6321,68 @@ void SpeedTest8bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROF
j++;
}
- TitlePerformance(Title);
+ TitlePerformance(Title);
atime = clock();
cmsDoTransform(hlcmsxform, In, In, 256*256*256);
diff = clock() - atime;
-
+
free(In);
- PrintPerformance(Mb, sizeof(Scanline_rgb2), diff);
-
+ PrintPerformance(Mb, sizeof(Scanline_rgb2), diff);
+
cmsDeleteTransform(hlcmsxform);
-
-}
-
-
-static
-void SpeedTest8bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
-{
- cmsInt32Number r, g, b, j;
- clock_t atime;
- cmsFloat64Number diff;
- cmsHTRANSFORM hlcmsxform;
- cmsUInt8Number *In;
- cmsUInt32Number Mb;
-
-
- if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
- Die("Unable to open profiles");
-
- hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn,
- TYPE_GRAY_8, hlcmsProfileOut, TYPE_GRAY_8, Intent, cmsFLAGS_NOCACHE);
+
+}
+
+
+static
+void SpeedTest8bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+{
+ cmsInt32Number r, g, b, j;
+ clock_t atime;
+ cmsFloat64Number diff;
+ cmsHTRANSFORM hlcmsxform;
+ cmsUInt8Number *In;
+ cmsUInt32Number Mb;
+
+
+ if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
+ Die("Unable to open profiles");
+
+ hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn,
+ TYPE_GRAY_8, hlcmsProfileOut, TYPE_GRAY_8, Intent, cmsFLAGS_NOCACHE);
cmsCloseProfile(hlcmsProfileIn);
cmsCloseProfile(hlcmsProfileOut);
- Mb = 256*256*256;
-
- In = (cmsUInt8Number*) malloc(Mb);
-
- j = 0;
- for (r=0; r < 256; r++)
- for (g=0; g < 256; g++)
- for (b=0; b < 256; b++) {
-
- In[j] = (cmsUInt8Number) r;
-
- j++;
- }
-
- TitlePerformance(Title);
-
- atime = clock();
-
- cmsDoTransform(hlcmsxform, In, In, 256*256*256);
-
- diff = clock() - atime;
- free(In);
-
- PrintPerformance(Mb, sizeof(cmsUInt8Number), diff);
- cmsDeleteTransform(hlcmsxform);
-}
+ Mb = 256*256*256;
+
+ In = (cmsUInt8Number*) malloc(Mb);
+
+ j = 0;
+ for (r=0; r < 256; r++)
+ for (g=0; g < 256; g++)
+ for (b=0; b < 256; b++) {
+
+ In[j] = (cmsUInt8Number) r;
+
+ j++;
+ }
+
+ TitlePerformance(Title);
+
+ atime = clock();
+
+ cmsDoTransform(hlcmsxform, In, In, 256*256*256);
+
+ diff = clock() - atime;
+ free(In);
+
+ PrintPerformance(Mb, sizeof(cmsUInt8Number), diff);
+ cmsDeleteTransform(hlcmsxform);
+}
static
@@ -6403,79 +6405,79 @@ static
void SpeedTest(void)
{
- printf("\n\nP E R F O R M A N C E T E S T S\n");
- printf( "=================================\n\n");
- fflush(stdout);
-
+ printf("\n\nP E R F O R M A N C E T E S T S\n");
+ printf( "=================================\n\n");
+ fflush(stdout);
+
SpeedTest16bits("16 bits on CLUT profiles",
- cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
- cmsOpenProfileFromFile("sRGBSpac.icm", "r"), INTENT_PERCEPTUAL);
+ cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
+ cmsOpenProfileFromFile("sRGBSpac.icm", "r"), INTENT_PERCEPTUAL);
SpeedTest8bits("8 bits on CLUT profiles",
- cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
- cmsOpenProfileFromFile("sRGBSpac.icm", "r"),
- INTENT_PERCEPTUAL);
+ cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
+ cmsOpenProfileFromFile("sRGBSpac.icm", "r"),
+ INTENT_PERCEPTUAL);
SpeedTest8bits("8 bits on Matrix-Shaper profiles",
- cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
- cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
- INTENT_PERCEPTUAL);
+ cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
+ cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
+ INTENT_PERCEPTUAL);
SpeedTest8bits("8 bits on SAME Matrix-Shaper profiles",
- cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
- cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
- INTENT_PERCEPTUAL);
-
- SpeedTest8bits("8 bits on Matrix-Shaper profiles (AbsCol)",
- cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
- cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
- INTENT_ABSOLUTE_COLORIMETRIC);
-
- SpeedTest16bits("16 bits on Matrix-Shaper profiles",
- cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
- cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
- INTENT_PERCEPTUAL);
-
- SpeedTest16bits("16 bits on SAME Matrix-Shaper profiles",
- cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
- cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
- INTENT_PERCEPTUAL);
-
- SpeedTest16bits("16 bits on Matrix-Shaper profiles (AbsCol)",
- cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
- cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
- INTENT_ABSOLUTE_COLORIMETRIC);
+ cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
+ cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
+ INTENT_PERCEPTUAL);
+
+ SpeedTest8bits("8 bits on Matrix-Shaper profiles (AbsCol)",
+ cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
+ cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
+ INTENT_ABSOLUTE_COLORIMETRIC);
+
+ SpeedTest16bits("16 bits on Matrix-Shaper profiles",
+ cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
+ cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
+ INTENT_PERCEPTUAL);
+
+ SpeedTest16bits("16 bits on SAME Matrix-Shaper profiles",
+ cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
+ cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
+ INTENT_PERCEPTUAL);
+
+ SpeedTest16bits("16 bits on Matrix-Shaper profiles (AbsCol)",
+ cmsOpenProfileFromFile("sRGB_Color_Space_Profile.icm", "r"),
+ cmsOpenProfileFromFile("aRGBlcms2.icc", "r"),
+ INTENT_ABSOLUTE_COLORIMETRIC);
SpeedTest8bits("8 bits on curves",
CreateCurves(),
CreateCurves(),
- INTENT_PERCEPTUAL);
+ INTENT_PERCEPTUAL);
SpeedTest16bits("16 bits on curves",
CreateCurves(),
- CreateCurves(),
- INTENT_PERCEPTUAL);
+ CreateCurves(),
+ INTENT_PERCEPTUAL);
SpeedTest8bitsCMYK("8 bits on CMYK profiles",
- cmsOpenProfileFromFile("USWebCoatedSWOP.icc", "r"),
- cmsOpenProfileFromFile("UncoatedFOGRA29.icc", "r"));
+ cmsOpenProfileFromFile("USWebCoatedSWOP.icc", "r"),
+ cmsOpenProfileFromFile("UncoatedFOGRA29.icc", "r"));
SpeedTest16bitsCMYK("16 bits on CMYK profiles",
- cmsOpenProfileFromFile("USWebCoatedSWOP.icc", "r"),
- cmsOpenProfileFromFile("UncoatedFOGRA29.icc", "r"));
+ cmsOpenProfileFromFile("USWebCoatedSWOP.icc", "r"),
+ cmsOpenProfileFromFile("UncoatedFOGRA29.icc", "r"));
+
+ SpeedTest8bitsGray("8 bits on gray-to-gray",
+ cmsOpenProfileFromFile("graylcms2.icc", "r"),
+ cmsOpenProfileFromFile("glablcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
- SpeedTest8bitsGray("8 bits on gray-to-gray",
- cmsOpenProfileFromFile("graylcms2.icc", "r"),
- cmsOpenProfileFromFile("glablcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
-
- SpeedTest8bitsGray("8 bits on SAME gray-to-gray",
- cmsOpenProfileFromFile("graylcms2.icc", "r"),
- cmsOpenProfileFromFile("graylcms2.icc", "r"), INTENT_PERCEPTUAL);
+ SpeedTest8bitsGray("8 bits on SAME gray-to-gray",
+ cmsOpenProfileFromFile("graylcms2.icc", "r"),
+ cmsOpenProfileFromFile("graylcms2.icc", "r"), INTENT_PERCEPTUAL);
}
-// -----------------------------------------------------------------------------------------------------
-
+// -----------------------------------------------------------------------------------------------------
+
// Print the supported intents
static
@@ -6508,7 +6510,7 @@ static char ZOORawWrite[cmsMAX_PATH] = "c:\\colormaps\\rawwrite\\";
static
void ReadAllTags(cmsHPROFILE h)
{
- cmsInt32Number i, n;
+ cmsInt32Number i, n;
cmsTagSignature sig;
n = cmsGetTagCount(h);
@@ -6524,9 +6526,9 @@ void ReadAllTags(cmsHPROFILE h)
static
void ReadAllRAWTags(cmsHPROFILE h)
{
- cmsInt32Number i, n;
+ cmsInt32Number i, n;
cmsTagSignature sig;
- cmsInt32Number len;
+ cmsInt32Number len;
n = cmsGetTagCount(h);
for (i=0; i < n; i++) {
@@ -6541,7 +6543,7 @@ static
void PrintInfo(cmsHPROFILE h, cmsInfoType Info)
{
wchar_t* text;
- cmsInt32Number len;
+ cmsInt32Number len;
cmsContext id = DbgThread();
len = cmsGetProfileInfo(h, Info, "en", "US", NULL, 0);
@@ -6614,13 +6616,13 @@ void ReadAllLUTS(cmsHPROFILE h)
cmsDetectBlackPoint(&Black, h, INTENT_RELATIVE_COLORIMETRIC, 0);
cmsDetectBlackPoint(&Black, h, INTENT_SATURATION, 0);
cmsDetectBlackPoint(&Black, h, INTENT_ABSOLUTE_COLORIMETRIC, 0);
- cmsDetectTAC(h);
+ cmsDetectTAC(h);
}
// Check one specimen in the ZOO
static
-cmsInt32Number CheckSingleSpecimen(const char* Profile)
+cmsInt32Number CheckSingleSpecimen(const char* Profile)
{
char BuffSrc[256];
char BuffDst[256];
@@ -6652,7 +6654,7 @@ cmsInt32Number CheckSingleSpecimen(const char* Profile)
}
static
-cmsInt32Number CheckRAWSpecimen(const char* Profile)
+cmsInt32Number CheckRAWSpecimen(const char* Profile)
{
char BuffSrc[256];
char BuffDst[256];
@@ -6685,35 +6687,35 @@ void CheckProfileZOO(void)
struct _finddata_t c_file;
long hFile;
- cmsSetLogErrorHandler(NULL);
+ cmsSetLogErrorHandler(NULL);
- if ( (hFile = _findfirst("c:\\colormaps\\*.*", &c_file)) == -1L )
+ if ( (hFile = _findfirst("c:\\colormaps\\*.*", &c_file)) == -1L )
printf("No files in current directory");
else
{
do
{
-
+
printf("%s\n", c_file.name);
if (strcmp(c_file.name, ".") != 0 &&
strcmp(c_file.name, "..") != 0) {
- CheckSingleSpecimen( c_file.name);
- CheckRAWSpecimen( c_file.name);
+ CheckSingleSpecimen( c_file.name);
+ CheckRAWSpecimen( c_file.name);
- if (TotalMemory > 0)
- printf("Ok, but %s are left!\n", MemStr(TotalMemory));
- else
- printf("Ok.\n");
+ if (TotalMemory > 0)
+ printf("Ok, but %s are left!\n", MemStr(TotalMemory));
+ else
+ printf("Ok.\n");
}
} while ( _findnext(hFile, &c_file) == 0 );
-
+
_findclose(hFile);
}
- cmsSetLogErrorHandler(FatalErrorQuit);
+ cmsSetLogErrorHandler(FatalErrorQuit);
}
#endif
@@ -6722,8 +6724,8 @@ void CheckProfileZOO(void)
int main(int argc, char* argv[])
{
- cmsInt32Number Exhaustive = 0;
- cmsInt32Number DoSpeedTests = 1;
+ cmsInt32Number Exhaustive = 0;
+ cmsInt32Number DoSpeedTests = 1;
#ifdef _MSC_VER
@@ -6738,14 +6740,14 @@ int main(int argc, char* argv[])
printf("Running exhaustive tests (will take a while...)\n\n");
}
-
+
printf("Installing debug memory plug-in ... ");
cmsPlugin(&DebugMemHandler);
printf("done.\n");
printf("Installing error logger ... ");
- cmsSetLogErrorHandler(FatalErrorQuit);
- printf("done.\n");
+ cmsSetLogErrorHandler(FatalErrorQuit);
+ printf("done.\n");
#ifdef _CMS_IS_WINDOWS
// CheckProfileZOO();
@@ -6753,9 +6755,9 @@ int main(int argc, char* argv[])
PrintSupportedIntents();
- CheckRGBPrimaries();
-
- // Create utility profiles
+ CheckRGBPrimaries();
+
+ // Create utility profiles
Check("Creation of test profiles", CreateTestProfiles);
Check("Base types", CheckBaseTypes);
@@ -6799,17 +6801,17 @@ int main(int argc, char* argv[])
Check("Reverse interpolation 3 -> 3", CheckReverseInterpolation3x3);
Check("Reverse interpolation 4 -> 3", CheckReverseInterpolation4x3);
- // Encoding of colorspaces
+ // Encoding of colorspaces
Check("Lab to LCh and back (float only) ", CheckLab2LCh);
Check("Lab to XYZ and back (float only) ", CheckLab2XYZ);
- Check("Lab to xyY and back (float only) ", CheckLab2xyY);
+ Check("Lab to xyY and back (float only) ", CheckLab2xyY);
Check("Lab V2 encoding", CheckLabV2encoding);
Check("Lab V4 encoding", CheckLabV4encoding);
- // BlackBody
+ // BlackBody
Check("Blackbody radiator", CheckTemp2CHRM);
- // Tone curves
+ // Tone curves
Check("Linear gamma curves (16 bits)", CheckGammaCreation16);
Check("Linear gamma curves (float)", CheckGammaCreationFlt);
@@ -6821,7 +6823,7 @@ int main(int argc, char* argv[])
Check("Curve 2.2 (table)", CheckGamma22Table);
Check("Curve 3.0 (table)", CheckGamma30Table);
- Check("Curve 1.8 (word table)", CheckGamma18TableWord);
+ Check("Curve 1.8 (word table)", CheckGamma18TableWord);
Check("Curve 2.2 (word table)", CheckGamma22TableWord);
Check("Curve 3.0 (word table)", CheckGamma30TableWord);
@@ -6834,7 +6836,7 @@ int main(int argc, char* argv[])
Check("Join curves sRGB (16 bits)", CheckJoint16Curves_sRGB);
Check("Join curves sigmoidal", CheckJointCurvesSShaped);
- // LUT basics
+ // LUT basics
Check("LUT creation & dup", CheckLUTcreation);
Check("1 Stage LUT ", Check1StageLUT);
Check("2 Stage LUT ", Check2StageLUT);
@@ -6859,14 +6861,14 @@ int main(int argc, char* argv[])
// MLU
Check("Multilocalized Unicode", CheckMLU);
- // Named color
- Check("Named color lists", CheckNamedColorList);
+ // Named color
+ Check("Named color lists", CheckNamedColorList);
- // Profile I/O (this one is huge!)
+ // Profile I/O (this one is huge!)
Check("Profile creation", CheckProfileCreation);
-
- // Error reporting
+
+ // Error reporting
Check("Error reporting on bad profiles", CheckErrReportingOnBadProfiles);
// Transforms
@@ -6880,13 +6882,13 @@ int main(int argc, char* argv[])
Check("Matrix-shaper transform (8 bits)", CheckMatrixShaperXFORM8);
- Check("Primaries of sRGB", CheckRGBPrimaries);
- // Known values
+ Check("Primaries of sRGB", CheckRGBPrimaries);
+ // Known values
Check("Known values across matrix-shaper", Chack_sRGB_Float);
Check("Gray input profile", CheckInputGray);
- Check("Gray Lab input profile", CheckLabInputGray);
- Check("Gray output profile", CheckOutputGray);
- Check("Gray Lab output profile", CheckLabOutputGray);
+ Check("Gray Lab input profile", CheckLabInputGray);
+ Check("Gray output profile", CheckOutputGray);
+ Check("Gray Lab output profile", CheckLabOutputGray);
Check("Matrix-shaper proofing transform (float)", CheckProofingXFORMFloat);
Check("Matrix-shaper proofing transform (16 bits)", CheckProofingXFORM16);
@@ -6912,15 +6914,15 @@ int main(int argc, char* argv[])
Check("Segment maxima GBD", CheckGBD);
- if (DoSpeedTests)
- SpeedTest();
-
+ if (DoSpeedTests)
+ SpeedTest();
+
DebugMemPrintTotals();
- cmsUnregisterPlugins();
+ cmsUnregisterPlugins();
// Cleanup
- RemoveTestProfiles();
+ RemoveTestProfiles();
return TotalFail;
}