summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lcms2mt/testbed/testcms2.c')
-rw-r--r--lcms2mt/testbed/testcms2.c3981
1 files changed, 1987 insertions, 1994 deletions
diff --git a/lcms2mt/testbed/testcms2.c b/lcms2mt/testbed/testcms2.c
index 025c79ab..f633f565 100644
--- a/lcms2mt/testbed/testcms2.c
+++ b/lcms2mt/testbed/testcms2.c
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------------
//
// Little Color Management System
-// Copyright (c) 1998-2017 Marti Maria Saguer
+// Copyright (c) 1998-2020 Marti Maria Saguer
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the "Software"),
@@ -27,14 +27,8 @@
#include "testcms2.h"
-// On Visual Studio, use debug CRT
-#ifdef _MSC_VER
-# include "crtdbg.h"
-# include <io.h>
-#endif
-
// A single check. Returns 1 if success, 0 if failed
-typedef cmsInt32Number (*TestFn)(void);
+typedef cmsInt32Number (*TestFn)(cmsContext);
// A parametric Tone curve test function
typedef cmsFloat32Number (* dblfnptr)(cmsFloat32Number x, const cmsFloat64Number Params[]);
@@ -101,7 +95,7 @@ cmsContext DbgThread(void)
{
static cmsUInt32Number n = 1;
- return (cmsContext) (void*)(n++ % 0xff0);
+ return (cmsContext) (void*) ((cmsUInt8Number*) NULL + (n++ % 0xff0));
}
// The allocate routine
@@ -220,7 +214,7 @@ void TestMemoryLeaks(cmsBool ok)
}
// Here we go with the plug-in declaration
-static cmsPluginMemHandler DebugMemHandler = {{ cmsPluginMagicNumber, 2060, cmsPluginMemHandlerSig, NULL },
+static cmsPluginMemHandler DebugMemHandler = {{ cmsPluginMagicNumber, 2060-2000, cmsPluginMemHandlerSig, NULL },
DebugMalloc, DebugFree, DebugRealloc, NULL, NULL, NULL };
// Returns a pointer to the memhandler plugin
@@ -296,8 +290,10 @@ void SubTest(const char* frm, ...)
// The check framework
static
-void Check(const char* Title, TestFn Fn)
+void Check(cmsContext ContextID, const char* Title, TestFn Fn)
{
+ cmsContext ctx = DbgThread();
+
printf("Checking %s ...", Title);
fflush(stdout);
@@ -307,7 +303,7 @@ void Check(const char* Title, TestFn Fn)
SimultaneousErrors = 0;
TotalTests++;
- if (Fn() && !TrappedError) {
+ if (Fn(ctx) && !TrappedError) {
// It is a good place to check memory
TestMemoryLeaks(TRUE);
@@ -330,30 +326,30 @@ void Check(const char* Title, TestFn Fn)
}
// Dump a tone curve, for easy diagnostic
-void DumpToneCurve(cmsToneCurve* gamma, const char* FileName)
+void DumpToneCurve(cmsContext ContextID, cmsToneCurve* gamma, const char* FileName)
{
cmsHANDLE hIT8;
cmsUInt32Number i;
- hIT8 = cmsIT8Alloc(DbgThread());
+ hIT8 = cmsIT8Alloc(ContextID);
- cmsIT8SetPropertyDbl(DbgThread(), hIT8, "NUMBER_OF_FIELDS", 2);
- cmsIT8SetPropertyDbl(DbgThread(), hIT8, "NUMBER_OF_SETS", gamma ->nEntries);
+ cmsIT8SetPropertyDbl(ContextID, hIT8, "NUMBER_OF_FIELDS", 2);
+ cmsIT8SetPropertyDbl(ContextID, hIT8, "NUMBER_OF_SETS", gamma ->nEntries);
- cmsIT8SetDataFormat(DbgThread(), hIT8, 0, "SAMPLE_ID");
- cmsIT8SetDataFormat(DbgThread(), hIT8, 1, "VALUE");
+ cmsIT8SetDataFormat(ContextID, hIT8, 0, "SAMPLE_ID");
+ cmsIT8SetDataFormat(ContextID, hIT8, 1, "VALUE");
for (i=0; i < gamma ->nEntries; i++) {
char Val[30];
sprintf(Val, "%u", i);
- cmsIT8SetDataRowCol(DbgThread(), hIT8, i, 0, Val);
+ cmsIT8SetDataRowCol(ContextID, hIT8, i, 0, Val);
sprintf(Val, "0x%x", gamma ->Table16[i]);
- cmsIT8SetDataRowCol(DbgThread(), hIT8, i, 1, Val);
+ cmsIT8SetDataRowCol(ContextID, hIT8, i, 1, Val);
}
- cmsIT8SaveToFile(DbgThread(), hIT8, FileName);
- cmsIT8Free(DbgThread(), hIT8);
+ cmsIT8SaveToFile(ContextID, hIT8, FileName);
+ cmsIT8Free(ContextID, hIT8);
}
// -------------------------------------------------------------------------------------------------
@@ -363,7 +359,7 @@ void DumpToneCurve(cmsToneCurve* gamma, const char* FileName)
// The space used is a clone of a well-known commercial
// color space which I will name "Above RGB"
static
-cmsHPROFILE Create_AboveRGB(void)
+cmsHPROFILE Create_AboveRGB(cmsContext ctx)
{
cmsToneCurve* Curve[3];
cmsHPROFILE hProfile;
@@ -372,65 +368,65 @@ cmsHPROFILE Create_AboveRGB(void)
{0.21, 0.71, 1 },
{0.15, 0.06, 1 }};
- Curve[0] = Curve[1] = Curve[2] = cmsBuildGamma(DbgThread(), 2.19921875);
+ Curve[0] = Curve[1] = Curve[2] = cmsBuildGamma(ctx, 2.19921875);
- cmsWhitePointFromTemp(DbgThread(), &D65, 6504);
- hProfile = cmsCreateRGBProfile(DbgThread(), &D65, &Primaries, Curve);
- cmsFreeToneCurve(DbgThread(), Curve[0]);
+ cmsWhitePointFromTemp(ctx, &D65, 6504);
+ hProfile = cmsCreateRGBProfile(ctx, &D65, &Primaries, Curve);
+ cmsFreeToneCurve(ctx, Curve[0]);
return hProfile;
}
// A gamma-2.2 gray space
static
-cmsHPROFILE Create_Gray22(void)
+cmsHPROFILE Create_Gray22(cmsContext ctx)
{
cmsHPROFILE hProfile;
- cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 2.2);
+ cmsToneCurve* Curve = cmsBuildGamma(ctx, 2.2);
if (Curve == NULL) return NULL;
- hProfile = cmsCreateGrayProfile(DbgThread(), cmsD50_xyY(DbgThread()), Curve);
- cmsFreeToneCurve(DbgThread(), Curve);
+ hProfile = cmsCreateGrayProfile(ctx, cmsD50_xyY(ctx), Curve);
+ cmsFreeToneCurve(ctx, Curve);
return hProfile;
}
// A gamma-3.0 gray space
static
-cmsHPROFILE Create_Gray30(void)
+cmsHPROFILE Create_Gray30(cmsContext ctx)
{
cmsHPROFILE hProfile;
- cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 3.0);
+ cmsToneCurve* Curve = cmsBuildGamma(ctx, 3.0);
if (Curve == NULL) return NULL;
- hProfile = cmsCreateGrayProfile(DbgThread(), cmsD50_xyY(DbgThread()), Curve);
- cmsFreeToneCurve(DbgThread(), Curve);
+ hProfile = cmsCreateGrayProfile(ctx, cmsD50_xyY(ctx), Curve);
+ cmsFreeToneCurve(ctx, Curve);
return hProfile;
}
static
-cmsHPROFILE Create_GrayLab(void)
+cmsHPROFILE Create_GrayLab(cmsContext ctx)
{
cmsHPROFILE hProfile;
- cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 1.0);
+ cmsToneCurve* Curve = cmsBuildGamma(ctx, 1.0);
if (Curve == NULL) return NULL;
- hProfile = cmsCreateGrayProfile(DbgThread(), cmsD50_xyY(DbgThread()), Curve);
- cmsFreeToneCurve(DbgThread(), Curve);
+ hProfile = cmsCreateGrayProfile(ctx, cmsD50_xyY(ctx), Curve);
+ cmsFreeToneCurve(ctx, Curve);
- cmsSetPCS(DbgThread(), hProfile, cmsSigLabData);
+ cmsSetPCS(ctx, hProfile, cmsSigLabData);
return hProfile;
}
// A CMYK devicelink that adds gamma 3.0 to each channel
static
-cmsHPROFILE Create_CMYK_DeviceLink(void)
+cmsHPROFILE Create_CMYK_DeviceLink(cmsContext ctx)
{
cmsHPROFILE hProfile;
cmsToneCurve* Tab[4];
- cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 3.0);
+ cmsToneCurve* Curve = cmsBuildGamma(ctx, 3.0);
if (Curve == NULL) return NULL;
Tab[0] = Curve;
@@ -438,10 +434,10 @@ cmsHPROFILE Create_CMYK_DeviceLink(void)
Tab[2] = Curve;
Tab[3] = Curve;
- hProfile = cmsCreateLinearizationDeviceLink(DbgThread(), cmsSigCmykData, Tab);
+ hProfile = cmsCreateLinearizationDeviceLink(ctx, cmsSigCmykData, Tab);
if (hProfile == NULL) return NULL;
- cmsFreeToneCurve(DbgThread(), Curve);
+ cmsFreeToneCurve(ctx, Curve);
return hProfile;
}
@@ -473,7 +469,7 @@ cmsInt32Number ForwardSampler(cmsContext ContextID, register const cmsUInt16Numb
cmsFloat64Number rgb[3], cmyk[4];
cmsFloat64Number c, m, y, k;
- cmsDoTransform(DbgThread(), p ->hLab2sRGB, In, rgb, 1);
+ cmsDoTransform(ContextID, p ->hLab2sRGB, In, rgb, 1);
c = 1 - rgb[0];
m = 1 - rgb[1];
@@ -490,7 +486,7 @@ cmsInt32Number ForwardSampler(cmsContext ContextID, register const cmsUInt16Numb
cmyk[2] = y;
cmyk[3] = k;
- cmsDoTransform(DbgThread(), p ->hIlimit, cmyk, Out, 1);
+ cmsDoTransform(ContextID, p ->hIlimit, cmyk, Out, 1);
return 1;
}
@@ -525,27 +521,24 @@ cmsInt32Number ReverseSampler(cmsContext ContextID, register const cmsUInt16Numb
rgb[2] = Clip((1 - y) * (1 - k));
}
- cmsDoTransform(DbgThread(), p ->sRGB2Lab, rgb, Out, 1);
+ cmsDoTransform(ContextID, p ->sRGB2Lab, rgb, Out, 1);
return 1;
}
static
-cmsHPROFILE CreateFakeCMYK(cmsFloat64Number InkLimit, cmsBool lUseAboveRGB)
+cmsHPROFILE CreateFakeCMYK(cmsContext ContextID, cmsFloat64Number InkLimit, cmsBool lUseAboveRGB)
{
cmsHPROFILE hICC;
cmsPipeline* AToB0, *BToA0;
cmsStage* CLUT;
- cmsContext ContextID;
FakeCMYKParams p;
cmsHPROFILE hLab, hsRGB, hLimit;
cmsUInt32Number cmykfrm;
- ContextID = DbgThread();
-
if (lUseAboveRGB)
- hsRGB = Create_AboveRGB();
+ hsRGB = Create_AboveRGB(ContextID);
else
hsRGB = cmsCreate_sRGBProfile(ContextID);
@@ -610,18 +603,18 @@ cmsHPROFILE CreateFakeCMYK(cmsFloat64Number InkLimit, cmsBool lUseAboveRGB)
// Does create several profiles for latter use------------------------------------------------------------------------------------------------
static
-cmsInt32Number OneVirtual(cmsHPROFILE h, const char* SubTestTxt, const char* FileName)
+cmsInt32Number OneVirtual(cmsContext ctx, cmsHPROFILE h, const char* SubTestTxt, const char* FileName)
{
SubTest(SubTestTxt);
if (h == NULL) return 0;
- if (!cmsSaveProfileToFile(DbgThread(), h, FileName)) return 0;
- cmsCloseProfile(DbgThread(), h);
+ if (!cmsSaveProfileToFile(ctx, h, FileName)) return 0;
+ cmsCloseProfile(ctx, h);
- h = cmsOpenProfileFromFile(DbgThread(), FileName, "r");
+ h = cmsOpenProfileFromFile(ctx, FileName, "r");
if (h == NULL) return 0;
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ctx, h);
return 1;
}
@@ -630,77 +623,77 @@ 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(cmsContext ctx)
{
cmsHPROFILE h;
- h = cmsCreate_sRGBProfile(DbgThread());
- if (!OneVirtual(h, "sRGB profile", "sRGBlcms2.icc")) return 0;
+ h = cmsCreate_sRGBProfile(ctx);
+ if (!OneVirtual(ctx, h, "sRGB profile", "sRGBlcms2.icc")) return 0;
// ----
- h = Create_AboveRGB();
- if (!OneVirtual(h, "aRGB profile", "aRGBlcms2.icc")) return 0;
+ h = Create_AboveRGB(ctx);
+ if (!OneVirtual(ctx, h, "aRGB profile", "aRGBlcms2.icc")) return 0;
// ----
- h = Create_Gray22();
- if (!OneVirtual(h, "Gray profile", "graylcms2.icc")) return 0;
+ h = Create_Gray22(ctx);
+ if (!OneVirtual(ctx, h, "Gray profile", "graylcms2.icc")) return 0;
// ----
- h = Create_Gray30();
- if (!OneVirtual(h, "Gray 3.0 profile", "gray3lcms2.icc")) return 0;
+ h = Create_Gray30(ctx);
+ if (!OneVirtual(ctx, h, "Gray 3.0 profile", "gray3lcms2.icc")) return 0;
// ----
- h = Create_GrayLab();
- if (!OneVirtual(h, "Gray Lab profile", "glablcms2.icc")) return 0;
+ h = Create_GrayLab(ctx);
+ if (!OneVirtual(ctx, h, "Gray Lab profile", "glablcms2.icc")) return 0;
// ----
- h = Create_CMYK_DeviceLink();
- if (!OneVirtual(h, "Linearization profile", "linlcms2.icc")) return 0;
+ h = Create_CMYK_DeviceLink(ctx);
+ if (!OneVirtual(ctx, h, "Linearization profile", "linlcms2.icc")) return 0;
// -------
- h = cmsCreateInkLimitingDeviceLink(DbgThread(), cmsSigCmykData, 150);
+ h = cmsCreateInkLimitingDeviceLink(ctx, cmsSigCmykData, 150);
if (h == NULL) return 0;
- if (!OneVirtual(h, "Ink-limiting profile", "limitlcms2.icc")) return 0;
+ if (!OneVirtual(ctx, h, "Ink-limiting profile", "limitlcms2.icc")) return 0;
// ------
- h = cmsCreateLab2Profile(DbgThread(), NULL);
- if (!OneVirtual(h, "Lab 2 identity profile", "labv2lcms2.icc")) return 0;
+ h = cmsCreateLab2Profile(ctx, NULL);
+ if (!OneVirtual(ctx, h, "Lab 2 identity profile", "labv2lcms2.icc")) return 0;
// ----
- h = cmsCreateLab4Profile(DbgThread(), NULL);
- if (!OneVirtual(h, "Lab 4 identity profile", "labv4lcms2.icc")) return 0;
+ h = cmsCreateLab4Profile(ctx, NULL);
+ if (!OneVirtual(ctx, h, "Lab 4 identity profile", "labv4lcms2.icc")) return 0;
// ----
- h = cmsCreateXYZProfile(DbgThread());
- if (!OneVirtual(h, "XYZ identity profile", "xyzlcms2.icc")) return 0;
+ h = cmsCreateXYZProfile(ctx);
+ if (!OneVirtual(ctx, h, "XYZ identity profile", "xyzlcms2.icc")) return 0;
// ----
- h = cmsCreateNULLProfile(DbgThread());
- if (!OneVirtual(h, "NULL profile", "nullcms2.icc")) return 0;
+ h = cmsCreateNULLProfile(ctx);
+ if (!OneVirtual(ctx, h, "NULL profile", "nullcms2.icc")) return 0;
// ---
- h = cmsCreateBCHSWabstractProfile(DbgThread(), 17, 0, 0, 0, 0, 5000, 6000);
- if (!OneVirtual(h, "BCHS profile", "bchslcms2.icc")) return 0;
+ h = cmsCreateBCHSWabstractProfile(ctx, 17, 0, 0, 0, 0, 5000, 6000);
+ if (!OneVirtual(ctx, h, "BCHS profile", "bchslcms2.icc")) return 0;
// ---
- h = CreateFakeCMYK(300, FALSE);
- if (!OneVirtual(h, "Fake CMYK profile", "lcms2cmyk.icc")) return 0;
+ h = CreateFakeCMYK(ctx, 300, FALSE);
+ if (!OneVirtual(ctx, h, "Fake CMYK profile", "lcms2cmyk.icc")) return 0;
// ---
- h = cmsCreateBCHSWabstractProfile(DbgThread(), 17, 0, 1.2, 0, 3, 5000, 5000);
- if (!OneVirtual(h, "Brightness", "brightness.icc")) return 0;
+ h = cmsCreateBCHSWabstractProfile(ctx, 17, 0, 1.2, 0, 3, 5000, 5000);
+ if (!OneVirtual(ctx, h, "Brightness", "brightness.icc")) return 0;
return 1;
}
@@ -729,7 +722,7 @@ void RemoveTestProfiles(void)
// Check the size of basic types. If this test fails, nothing is going to work anyway
static
-cmsInt32Number CheckBaseTypes(void)
+cmsInt32Number CheckBaseTypes(cmsContext ContextID)
{
// Ignore warnings about conditional expression
#ifdef _MSC_VER
@@ -759,7 +752,7 @@ cmsInt32Number CheckBaseTypes(void)
// Are we little or big endian? From Harbison&Steele.
static
-cmsInt32Number CheckEndianness(void)
+cmsInt32Number CheckEndianness(cmsContext ContextID)
{
cmsInt32Number BigEndian, IsOk;
union {
@@ -787,7 +780,7 @@ cmsInt32Number CheckEndianness(void)
// Check quick floor
static
-cmsInt32Number CheckQuickFloor(void)
+cmsInt32Number CheckQuickFloor(cmsContext ContextID)
{
if ((_cmsQuickFloor(1.234) != 1) ||
(_cmsQuickFloor(32767.234) != 32767) ||
@@ -805,7 +798,7 @@ cmsInt32Number CheckQuickFloor(void)
// Quick floor restricted to word
static
-cmsInt32Number CheckQuickFloorWord(void)
+cmsInt32Number CheckQuickFloorWord(cmsContext ContextID)
{
cmsUInt32Number i;
@@ -890,51 +883,51 @@ cmsBool IsGoodWordPrec(const char *title, cmsUInt16Number in, cmsUInt16Number o
// Fixed point ----------------------------------------------------------------------------------------------
static
-cmsInt32Number TestSingleFixed15_16(cmsFloat64Number d)
+cmsInt32Number TestSingleFixed15_16(cmsContext ContextID, cmsFloat64Number d)
{
- cmsS15Fixed16Number f = _cmsDoubleTo15Fixed16(DbgThread(), d);
- cmsFloat64Number RoundTrip = _cms15Fixed16toDouble(DbgThread(), f);
+ cmsS15Fixed16Number f = _cmsDoubleTo15Fixed16(ContextID, d);
+ cmsFloat64Number RoundTrip = _cms15Fixed16toDouble(ContextID, f);
cmsFloat64Number Error = fabs(d - RoundTrip);
return ( Error <= FIXED_PRECISION_15_16);
}
static
-cmsInt32Number CheckFixedPoint15_16(void)
+cmsInt32Number CheckFixedPoint15_16(cmsContext ContextID)
{
- if (!TestSingleFixed15_16(1.0)) return 0;
- if (!TestSingleFixed15_16(2.0)) return 0;
- if (!TestSingleFixed15_16(1.23456)) return 0;
- if (!TestSingleFixed15_16(0.99999)) return 0;
- if (!TestSingleFixed15_16(0.1234567890123456789099999)) return 0;
- if (!TestSingleFixed15_16(-1.0)) return 0;
- if (!TestSingleFixed15_16(-2.0)) return 0;
- if (!TestSingleFixed15_16(-1.23456)) return 0;
- if (!TestSingleFixed15_16(-1.1234567890123456789099999)) return 0;
- if (!TestSingleFixed15_16(+32767.1234567890123456789099999)) return 0;
- if (!TestSingleFixed15_16(-32767.1234567890123456789099999)) return 0;
+ if (!TestSingleFixed15_16(ContextID, 1.0)) return 0;
+ if (!TestSingleFixed15_16(ContextID, 2.0)) return 0;
+ if (!TestSingleFixed15_16(ContextID, 1.23456)) return 0;
+ if (!TestSingleFixed15_16(ContextID, 0.99999)) return 0;
+ if (!TestSingleFixed15_16(ContextID, 0.1234567890123456789099999)) return 0;
+ if (!TestSingleFixed15_16(ContextID, -1.0)) return 0;
+ if (!TestSingleFixed15_16(ContextID, -2.0)) return 0;
+ if (!TestSingleFixed15_16(ContextID, -1.23456)) return 0;
+ if (!TestSingleFixed15_16(ContextID, -1.1234567890123456789099999)) return 0;
+ if (!TestSingleFixed15_16(ContextID, +32767.1234567890123456789099999)) return 0;
+ if (!TestSingleFixed15_16(ContextID, -32767.1234567890123456789099999)) return 0;
return 1;
}
static
-cmsInt32Number TestSingleFixed8_8(cmsFloat64Number d)
+cmsInt32Number TestSingleFixed8_8(cmsContext ContextID, cmsFloat64Number d)
{
- cmsS15Fixed16Number f = _cmsDoubleTo8Fixed8(DbgThread(), d);
- cmsFloat64Number RoundTrip = _cms8Fixed8toDouble(DbgThread(), (cmsUInt16Number) f);
+ cmsS15Fixed16Number f = _cmsDoubleTo8Fixed8(ContextID, d);
+ cmsFloat64Number RoundTrip = _cms8Fixed8toDouble(ContextID, (cmsUInt16Number) f);
cmsFloat64Number Error = fabs(d - RoundTrip);
return ( Error <= FIXED_PRECISION_8_8);
}
static
-cmsInt32Number CheckFixedPoint8_8(void)
+cmsInt32Number CheckFixedPoint8_8(cmsContext ContextID)
{
- if (!TestSingleFixed8_8(1.0)) return 0;
- if (!TestSingleFixed8_8(2.0)) return 0;
- if (!TestSingleFixed8_8(1.23456)) return 0;
- if (!TestSingleFixed8_8(0.99999)) return 0;
- if (!TestSingleFixed8_8(0.1234567890123456789099999)) return 0;
- if (!TestSingleFixed8_8(+255.1234567890123456789099999)) return 0;
+ if (!TestSingleFixed8_8(ContextID, 1.0)) return 0;
+ if (!TestSingleFixed8_8(ContextID, 2.0)) return 0;
+ if (!TestSingleFixed8_8(ContextID, 1.23456)) return 0;
+ if (!TestSingleFixed8_8(ContextID, 0.99999)) return 0;
+ if (!TestSingleFixed8_8(ContextID, 0.1234567890123456789099999)) return 0;
+ if (!TestSingleFixed8_8(ContextID, +255.1234567890123456789099999)) return 0;
return 1;
}
@@ -942,19 +935,19 @@ cmsInt32Number CheckFixedPoint8_8(void)
// D50 constant --------------------------------------------------------------------------------------------
static
-cmsInt32Number CheckD50Roundtrip(void)
+cmsInt32Number CheckD50Roundtrip(cmsContext ContextID)
{
cmsFloat64Number cmsD50X_2 = 0.96420288;
cmsFloat64Number cmsD50Y_2 = 1.0;
cmsFloat64Number cmsD50Z_2 = 0.82490540;
- cmsS15Fixed16Number xe = _cmsDoubleTo15Fixed16(DbgThread(), cmsD50X);
- cmsS15Fixed16Number ye = _cmsDoubleTo15Fixed16(DbgThread(), cmsD50Y);
- cmsS15Fixed16Number ze = _cmsDoubleTo15Fixed16(DbgThread(), cmsD50Z);
+ cmsS15Fixed16Number xe = _cmsDoubleTo15Fixed16(ContextID, cmsD50X);
+ cmsS15Fixed16Number ye = _cmsDoubleTo15Fixed16(ContextID, cmsD50Y);
+ cmsS15Fixed16Number ze = _cmsDoubleTo15Fixed16(ContextID, cmsD50Z);
- cmsFloat64Number x = _cms15Fixed16toDouble(DbgThread(), xe);
- cmsFloat64Number y = _cms15Fixed16toDouble(DbgThread(), ye);
- cmsFloat64Number z = _cms15Fixed16toDouble(DbgThread(), ze);
+ cmsFloat64Number x = _cms15Fixed16toDouble(ContextID, xe);
+ cmsFloat64Number y = _cms15Fixed16toDouble(ContextID, ye);
+ cmsFloat64Number z = _cms15Fixed16toDouble(ContextID, ze);
double dx = fabs(cmsD50X - x);
double dy = fabs(cmsD50Y - y);
@@ -968,13 +961,13 @@ cmsInt32Number CheckD50Roundtrip(void)
return 0;
}
- xe = _cmsDoubleTo15Fixed16(DbgThread(), cmsD50X_2);
- ye = _cmsDoubleTo15Fixed16(DbgThread(), cmsD50Y_2);
- ze = _cmsDoubleTo15Fixed16(DbgThread(), cmsD50Z_2);
+ xe = _cmsDoubleTo15Fixed16(ContextID, cmsD50X_2);
+ ye = _cmsDoubleTo15Fixed16(ContextID, cmsD50Y_2);
+ ze = _cmsDoubleTo15Fixed16(ContextID, cmsD50Z_2);
- x = _cms15Fixed16toDouble(DbgThread(), xe);
- y = _cms15Fixed16toDouble(DbgThread(), ye);
- z = _cms15Fixed16toDouble(DbgThread(), ze);
+ x = _cms15Fixed16toDouble(ContextID, xe);
+ y = _cms15Fixed16toDouble(ContextID, ye);
+ z = _cms15Fixed16toDouble(ContextID, ze);
dx = fabs(cmsD50X_2 - x);
dy = fabs(cmsD50Y_2 - y);
@@ -1019,7 +1012,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(cmsContext ContextID, cmsInt32Number nNodesToCheck, cmsBool Down, cmsInt32Number max_err)
{
cmsUInt32Number i;
cmsUInt16Number in, out;
@@ -1029,7 +1022,7 @@ cmsInt32Number Check1D(cmsInt32Number nNodesToCheck, cmsBool Down, cmsInt32Numb
Tab = (cmsUInt16Number*) malloc(sizeof(cmsUInt16Number)* nNodesToCheck);
if (Tab == NULL) return 0;
- p = _cmsComputeInterpParams(DbgThread(), nNodesToCheck, 1, 1, Tab, CMS_LERP_FLAGS_16BITS);
+ p = _cmsComputeInterpParams(ContextID, nNodesToCheck, 1, 1, Tab, CMS_LERP_FLAGS_16BITS);
if (p == NULL) return 0;
BuildTable(nNodesToCheck, Tab, Down);
@@ -1039,85 +1032,85 @@ cmsInt32Number Check1D(cmsInt32Number nNodesToCheck, cmsBool Down, cmsInt32Numb
in = (cmsUInt16Number) i;
out = 0;
- p ->Interpolation.Lerp16(DbgThread(), &in, &out, p);
+ p ->Interpolation.Lerp16(ContextID, &in, &out, p);
if (Down) out = 0xffff - out;
if (abs(out - in) > max_err) {
Fail("(%dp): Must be %x, But is %x : ", nNodesToCheck, in, out);
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
free(Tab);
return 0;
}
}
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
free(Tab);
return 1;
}
static
-cmsInt32Number Check1DLERP2(void)
+cmsInt32Number Check1DLERP2(cmsContext ContextID)
{
- return Check1D(2, FALSE, 0);
+ return Check1D(ContextID, 2, FALSE, 0);
}
static
-cmsInt32Number Check1DLERP3(void)
+cmsInt32Number Check1DLERP3(cmsContext ContextID)
{
- return Check1D(3, FALSE, 1);
+ return Check1D(ContextID, 3, FALSE, 1);
}
static
-cmsInt32Number Check1DLERP4(void)
+cmsInt32Number Check1DLERP4(cmsContext ContextID)
{
- return Check1D(4, FALSE, 0);
+ return Check1D(ContextID, 4, FALSE, 0);
}
static
-cmsInt32Number Check1DLERP6(void)
+cmsInt32Number Check1DLERP6(cmsContext ContextID)
{
- return Check1D(6, FALSE, 0);
+ return Check1D(ContextID, 6, FALSE, 0);
}
static
-cmsInt32Number Check1DLERP18(void)
+cmsInt32Number Check1DLERP18(cmsContext ContextID)
{
- return Check1D(18, FALSE, 0);
+ return Check1D(ContextID, 18, FALSE, 0);
}
static
-cmsInt32Number Check1DLERP2Down(void)
+cmsInt32Number Check1DLERP2Down(cmsContext ContextID)
{
- return Check1D(2, TRUE, 0);
+ return Check1D(ContextID, 2, TRUE, 0);
}
static
-cmsInt32Number Check1DLERP3Down(void)
+cmsInt32Number Check1DLERP3Down(cmsContext ContextID)
{
- return Check1D(3, TRUE, 1);
+ return Check1D(ContextID, 3, TRUE, 1);
}
static
-cmsInt32Number Check1DLERP6Down(void)
+cmsInt32Number Check1DLERP6Down(cmsContext ContextID)
{
- return Check1D(6, TRUE, 0);
+ return Check1D(ContextID, 6, TRUE, 0);
}
static
-cmsInt32Number Check1DLERP18Down(void)
+cmsInt32Number Check1DLERP18Down(cmsContext ContextID)
{
- return Check1D(18, TRUE, 0);
+ return Check1D(ContextID, 18, TRUE, 0);
}
static
-cmsInt32Number ExhaustiveCheck1DLERP(void)
+cmsInt32Number ExhaustiveCheck1DLERP(cmsContext ContextID)
{
cmsUInt32Number j;
@@ -1126,7 +1119,7 @@ cmsInt32Number ExhaustiveCheck1DLERP(void)
if ((j % 10) == 0) printf("%u \r", j);
- if (!Check1D(j, FALSE, 1)) return 0;
+ if (!Check1D(ContextID, j, FALSE, 1)) return 0;
}
printf("\rResult is ");
@@ -1134,7 +1127,7 @@ cmsInt32Number ExhaustiveCheck1DLERP(void)
}
static
-cmsInt32Number ExhaustiveCheck1DLERPDown(void)
+cmsInt32Number ExhaustiveCheck1DLERPDown(cmsContext ContextID)
{
cmsUInt32Number j;
@@ -1143,7 +1136,7 @@ cmsInt32Number ExhaustiveCheck1DLERPDown(void)
if ((j % 10) == 0) printf("%u \r", j);
- if (!Check1D(j, TRUE, 1)) return 0;
+ if (!Check1D(ContextID, j, TRUE, 1)) return 0;
}
@@ -1156,7 +1149,7 @@ cmsInt32Number ExhaustiveCheck1DLERPDown(void)
// 3D interpolation -------------------------------------------------------------------------------------------------
static
-cmsInt32Number Check3DinterpolationFloatTetrahedral(void)
+cmsInt32Number Check3DinterpolationFloatTetrahedral(cmsContext ContextID)
{
cmsInterpParams* p;
cmsInt32Number i;
@@ -1177,7 +1170,7 @@ cmsInt32Number Check3DinterpolationFloatTetrahedral(void)
};
- p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT);
+ p = _cmsComputeInterpParams(ContextID, 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT);
MaxErr = 0.0;
@@ -1185,7 +1178,7 @@ cmsInt32Number Check3DinterpolationFloatTetrahedral(void)
In[0] = In[1] = In[2] = (cmsFloat32Number) ( (cmsFloat32Number) i / 65535.0F);
- p ->Interpolation.LerpFloat(DbgThread(), In, Out, p);
+ p ->Interpolation.LerpFloat(ContextID, 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;
@@ -1193,16 +1186,16 @@ cmsInt32Number Check3DinterpolationFloatTetrahedral(void)
}
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr);
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 1;
Error:
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 0;
}
static
-cmsInt32Number Check3DinterpolationFloatTrilinear(void)
+cmsInt32Number Check3DinterpolationFloatTrilinear(cmsContext ContextID)
{
cmsInterpParams* p;
cmsInt32Number i;
@@ -1223,14 +1216,14 @@ cmsInt32Number Check3DinterpolationFloatTrilinear(void)
};
- p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT|CMS_LERP_FLAGS_TRILINEAR);
+ p = _cmsComputeInterpParams(ContextID, 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT|CMS_LERP_FLAGS_TRILINEAR);
MaxErr = 0.0;
for (i=0; i < 0xffff; i++) {
In[0] = In[1] = In[2] = (cmsFloat32Number) ( (cmsFloat32Number) i / 65535.0F);
- p ->Interpolation.LerpFloat(DbgThread(), In, Out, p);
+ p ->Interpolation.LerpFloat(ContextID, 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;
@@ -1238,17 +1231,17 @@ cmsInt32Number Check3DinterpolationFloatTrilinear(void)
}
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr);
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 1;
Error:
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 0;
}
static
-cmsInt32Number Check3DinterpolationTetrahedral16(void)
+cmsInt32Number Check3DinterpolationTetrahedral16(cmsContext ContextID)
{
cmsInterpParams* p;
cmsInt32Number i;
@@ -1268,14 +1261,14 @@ cmsInt32Number Check3DinterpolationTetrahedral16(void)
0xffff, 0xffff, 0xffff
};
- p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, Table, CMS_LERP_FLAGS_16BITS);
+ p = _cmsComputeInterpParams(ContextID, 2, 3, 3, Table, CMS_LERP_FLAGS_16BITS);
MaxErr = 0.0;
for (i=0; i < 0xffff; i++) {
In[0] = In[1] = In[2] = (cmsUInt16Number) i;
- p ->Interpolation.Lerp16(DbgThread(), In, Out, p);
+ p ->Interpolation.Lerp16(ContextID, In, Out, p);
if (!IsGoodWord("Channel 1", Out[0], In[0])) goto Error;
if (!IsGoodWord("Channel 2", Out[1], In[1])) goto Error;
@@ -1283,16 +1276,16 @@ cmsInt32Number Check3DinterpolationTetrahedral16(void)
}
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr);
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 1;
Error:
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 0;
}
static
-cmsInt32Number Check3DinterpolationTrilinear16(void)
+cmsInt32Number Check3DinterpolationTrilinear16(cmsContext ContextID)
{
cmsInterpParams* p;
cmsInt32Number i;
@@ -1312,14 +1305,14 @@ cmsInt32Number Check3DinterpolationTrilinear16(void)
0xffff, 0xffff, 0xffff
};
- p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, Table, CMS_LERP_FLAGS_TRILINEAR);
+ p = _cmsComputeInterpParams(ContextID, 2, 3, 3, Table, CMS_LERP_FLAGS_TRILINEAR);
MaxErr = 0.0;
for (i=0; i < 0xffff; i++) {
In[0] = In[1] = In[2] = (cmsUInt16Number) i;
- p ->Interpolation.Lerp16(DbgThread(), In, Out, p);
+ p ->Interpolation.Lerp16(ContextID, In, Out, p);
if (!IsGoodWord("Channel 1", Out[0], In[0])) goto Error;
if (!IsGoodWord("Channel 2", Out[1], In[1])) goto Error;
@@ -1327,17 +1320,17 @@ cmsInt32Number Check3DinterpolationTrilinear16(void)
}
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr);
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 1;
Error:
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 0;
}
static
-cmsInt32Number ExaustiveCheck3DinterpolationFloatTetrahedral(void)
+cmsInt32Number ExaustiveCheck3DinterpolationFloatTetrahedral(cmsContext ContextID)
{
cmsInterpParams* p;
cmsInt32Number r, g, b;
@@ -1358,7 +1351,7 @@ cmsInt32Number ExaustiveCheck3DinterpolationFloatTetrahedral(void)
};
- p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT);
+ p = _cmsComputeInterpParams(ContextID, 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT);
MaxErr = 0.0;
for (r=0; r < 0xff; r++)
@@ -1371,7 +1364,7 @@ cmsInt32Number ExaustiveCheck3DinterpolationFloatTetrahedral(void)
In[2] = (cmsFloat32Number) b / 255.0F;
- p ->Interpolation.LerpFloat(DbgThread(), In, Out, p);
+ p ->Interpolation.LerpFloat(ContextID, 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;
@@ -1379,16 +1372,16 @@ cmsInt32Number ExaustiveCheck3DinterpolationFloatTetrahedral(void)
}
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr);
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 1;
Error:
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 0;
}
static
-cmsInt32Number ExaustiveCheck3DinterpolationFloatTrilinear(void)
+cmsInt32Number ExaustiveCheck3DinterpolationFloatTrilinear(cmsContext ContextID)
{
cmsInterpParams* p;
cmsInt32Number r, g, b;
@@ -1409,7 +1402,7 @@ cmsInt32Number ExaustiveCheck3DinterpolationFloatTrilinear(void)
};
- p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT|CMS_LERP_FLAGS_TRILINEAR);
+ p = _cmsComputeInterpParams(ContextID, 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT|CMS_LERP_FLAGS_TRILINEAR);
MaxErr = 0.0;
for (r=0; r < 0xff; r++)
@@ -1422,7 +1415,7 @@ cmsInt32Number ExaustiveCheck3DinterpolationFloatTrilinear(void)
In[2] = (cmsFloat32Number) b / 255.0F;
- p ->Interpolation.LerpFloat(DbgThread(), In, Out, p);
+ p ->Interpolation.LerpFloat(ContextID, 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;
@@ -1430,17 +1423,17 @@ cmsInt32Number ExaustiveCheck3DinterpolationFloatTrilinear(void)
}
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr);
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 1;
Error:
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 0;
}
static
-cmsInt32Number ExhaustiveCheck3DinterpolationTetrahedral16(void)
+cmsInt32Number ExhaustiveCheck3DinterpolationTetrahedral16(cmsContext ContextID)
{
cmsInterpParams* p;
cmsInt32Number r, g, b;
@@ -1460,7 +1453,7 @@ cmsInt32Number ExhaustiveCheck3DinterpolationTetrahedral16(void)
0xffff, 0xffff, 0xffff
};
- p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, Table, CMS_LERP_FLAGS_16BITS);
+ p = _cmsComputeInterpParams(ContextID, 2, 3, 3, Table, CMS_LERP_FLAGS_16BITS);
for (r=0; r < 0xff; r++)
for (g=0; g < 0xff; g++)
@@ -1471,23 +1464,23 @@ cmsInt32Number ExhaustiveCheck3DinterpolationTetrahedral16(void)
In[2] = (cmsUInt16Number) b ;
- p ->Interpolation.Lerp16(DbgThread(), In, Out, p);
+ p ->Interpolation.Lerp16(ContextID, In, Out, p);
if (!IsGoodWord("Channel 1", Out[0], In[0])) goto Error;
if (!IsGoodWord("Channel 2", Out[1], In[1])) goto Error;
if (!IsGoodWord("Channel 3", Out[2], In[2])) goto Error;
}
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 1;
Error:
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 0;
}
static
-cmsInt32Number ExhaustiveCheck3DinterpolationTrilinear16(void)
+cmsInt32Number ExhaustiveCheck3DinterpolationTrilinear16(cmsContext ContextID)
{
cmsInterpParams* p;
cmsInt32Number r, g, b;
@@ -1507,7 +1500,7 @@ cmsInt32Number ExhaustiveCheck3DinterpolationTrilinear16(void)
0xffff, 0xffff, 0xffff
};
- p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, Table, CMS_LERP_FLAGS_TRILINEAR);
+ p = _cmsComputeInterpParams(ContextID, 2, 3, 3, Table, CMS_LERP_FLAGS_TRILINEAR);
for (r=0; r < 0xff; r++)
for (g=0; g < 0xff; g++)
@@ -1518,7 +1511,7 @@ cmsInt32Number ExhaustiveCheck3DinterpolationTrilinear16(void)
In[2] = (cmsUInt16Number)b ;
- p ->Interpolation.Lerp16(DbgThread(), In, Out, p);
+ p ->Interpolation.Lerp16(ContextID, In, Out, p);
if (!IsGoodWord("Channel 1", Out[0], In[0])) goto Error;
if (!IsGoodWord("Channel 2", Out[1], In[1])) goto Error;
@@ -1526,17 +1519,17 @@ cmsInt32Number ExhaustiveCheck3DinterpolationTrilinear16(void)
}
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 1;
Error:
- _cmsFreeInterpParams(DbgThread(), p);
+ _cmsFreeInterpParams(ContextID, p);
return 0;
}
// Check reverse interpolation on LUTS. This is right now exclusively used by K preservation algorithm
static
-cmsInt32Number CheckReverseInterpolation3x3(void)
+cmsInt32Number CheckReverseInterpolation3x3(cmsContext ContextID)
{
cmsPipeline* Lut;
cmsStage* clut;
@@ -1560,14 +1553,14 @@ cmsInt32Number CheckReverseInterpolation3x3(void)
- Lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ Lut = cmsPipelineAlloc(ContextID, 3, 3);
- clut = cmsStageAllocCLut16bit(DbgThread(), 2, 3, 3, Table);
- cmsPipelineInsertStage(DbgThread(), Lut, cmsAT_BEGIN, clut);
+ clut = cmsStageAllocCLut16bit(ContextID, 2, 3, 3, Table);
+ cmsPipelineInsertStage(ContextID, Lut, cmsAT_BEGIN, clut);
Target[0] = 0; Target[1] = 0; Target[2] = 0;
Hint[0] = 0; Hint[1] = 0; Hint[2] = 0;
- cmsPipelineEvalReverseFloat(DbgThread(), Target, Result, NULL, Lut);
+ cmsPipelineEvalReverseFloat(ContextID, Target, Result, NULL, Lut);
if (Result[0] != 0 || Result[1] != 0 || Result[2] != 0){
Fail("Reverse interpolation didn't find zero");
@@ -1581,7 +1574,7 @@ cmsInt32Number CheckReverseInterpolation3x3(void)
cmsFloat32Number in = i / 100.0F;
Target[0] = in; Target[1] = 0; Target[2] = 0;
- cmsPipelineEvalReverseFloat(DbgThread(), Target, Result, Hint, Lut);
+ cmsPipelineEvalReverseFloat(ContextID, Target, Result, Hint, Lut);
err = fabsf(in - Result[0]);
if (err > max) max = err;
@@ -1589,17 +1582,17 @@ cmsInt32Number CheckReverseInterpolation3x3(void)
memcpy(Hint, Result, sizeof(Hint));
}
- cmsPipelineFree(DbgThread(), Lut);
+ cmsPipelineFree(ContextID, Lut);
return (max <= FLOAT_PRECISSION);
Error:
- cmsPipelineFree(DbgThread(), Lut);
+ cmsPipelineFree(ContextID, Lut);
return 0;
}
static
-cmsInt32Number CheckReverseInterpolation4x3(void)
+cmsInt32Number CheckReverseInterpolation4x3(cmsContext ContextID)
{
cmsPipeline* Lut;
cmsStage* clut;
@@ -1636,10 +1629,10 @@ cmsInt32Number CheckReverseInterpolation4x3(void)
};
- Lut = cmsPipelineAlloc(DbgThread(), 4, 3);
+ Lut = cmsPipelineAlloc(ContextID, 4, 3);
- clut = cmsStageAllocCLut16bit(DbgThread(), 2, 4, 3, Table);
- cmsPipelineInsertStage(DbgThread(), Lut, cmsAT_BEGIN, clut);
+ clut = cmsStageAllocCLut16bit(ContextID, 2, 4, 3, Table);
+ cmsPipelineInsertStage(ContextID, Lut, cmsAT_BEGIN, clut);
// Check if the LUT is behaving as expected
SubTest("4->3 feasibility");
@@ -1650,7 +1643,7 @@ cmsInt32Number CheckReverseInterpolation4x3(void)
Target[2] = 0;
Target[3] = 12;
- cmsPipelineEvalFloat(DbgThread(), Target, Result, Lut);
+ cmsPipelineEvalFloat(ContextID, Target, Result, Lut);
if (!IsGoodFixed15_16("0", Target[0], Result[0])) goto Error;
if (!IsGoodFixed15_16("1", Target[1], Result[1])) goto Error;
@@ -1668,7 +1661,7 @@ cmsInt32Number CheckReverseInterpolation4x3(void)
// This is our hint (which is a big lie in this case)
Hint[0] = 0.1F; Hint[1] = 0.1F; Hint[2] = 0.1F;
- cmsPipelineEvalReverseFloat(DbgThread(), Target, Result, Hint, Lut);
+ cmsPipelineEvalReverseFloat(ContextID, Target, Result, Hint, Lut);
if (Result[0] != 0 || Result[1] != 0 || Result[2] != 0 || Result[3] != 0){
@@ -1683,7 +1676,7 @@ cmsInt32Number CheckReverseInterpolation4x3(void)
cmsFloat32Number in = i / 100.0F;
Target[0] = in; Target[1] = 0; Target[2] = 0;
- cmsPipelineEvalReverseFloat(DbgThread(), Target, Result, Hint, Lut);
+ cmsPipelineEvalReverseFloat(ContextID, Target, Result, Hint, Lut);
err = fabsf(in - Result[0]);
if (err > max) max = err;
@@ -1691,11 +1684,11 @@ cmsInt32Number CheckReverseInterpolation4x3(void)
memcpy(Hint, Result, sizeof(Hint));
}
- cmsPipelineFree(DbgThread(), Lut);
+ cmsPipelineFree(ContextID, Lut);
return (max <= FLOAT_PRECISSION);
Error:
- cmsPipelineFree(DbgThread(), Lut);
+ cmsPipelineFree(ContextID, Lut);
return 0;
}
@@ -1824,17 +1817,17 @@ cmsInt32Number Sampler8D(cmsContext ContextID, register const cmsUInt16Number In
}
static
-cmsBool CheckOne3D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3)
+cmsBool CheckOne3D(cmsContext ContextID, cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3)
{
cmsUInt16Number In[3], Out1[3], Out2[3];
In[0] = a1; In[1] = a2; In[2] = a3;
// This is the interpolated value
- cmsPipelineEval16(DbgThread(), In, Out1, lut);
+ cmsPipelineEval16(ContextID, In, Out1, lut);
// This is the real value
- Sampler3D(DbgThread(), In, Out2, NULL);
+ Sampler3D(ContextID, In, Out2, NULL);
// Let's see the difference
@@ -1846,17 +1839,17 @@ cmsBool CheckOne3D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cms
}
static
-cmsBool CheckOne4D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4)
+cmsBool CheckOne4D(cmsContext ContextID, cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4)
{
cmsUInt16Number In[4], Out1[3], Out2[3];
In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4;
// This is the interpolated value
- cmsPipelineEval16(DbgThread(), In, Out1, lut);
+ cmsPipelineEval16(ContextID, In, Out1, lut);
// This is the real value
- Sampler4D(DbgThread(), In, Out2, NULL);
+ Sampler4D(ContextID, In, Out2, NULL);
// Let's see the difference
@@ -1868,7 +1861,7 @@ cmsBool CheckOne4D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cms
}
static
-cmsBool CheckOne5D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
+cmsBool CheckOne5D(cmsContext ContextID, cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
cmsUInt16Number a3, cmsUInt16Number a4, cmsUInt16Number a5)
{
cmsUInt16Number In[5], Out1[3], Out2[3];
@@ -1876,10 +1869,10 @@ cmsBool CheckOne5D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4; In[4] = a5;
// This is the interpolated value
- cmsPipelineEval16(DbgThread(), In, Out1, lut);
+ cmsPipelineEval16(ContextID, In, Out1, lut);
// This is the real value
- Sampler5D(DbgThread(), In, Out2, NULL);
+ Sampler5D(ContextID, In, Out2, NULL);
// Let's see the difference
@@ -1891,7 +1884,7 @@ cmsBool CheckOne5D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
}
static
-cmsBool CheckOne6D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
+cmsBool CheckOne6D(cmsContext ContextID, cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
cmsUInt16Number a3, cmsUInt16Number a4,
cmsUInt16Number a5, cmsUInt16Number a6)
{
@@ -1900,10 +1893,10 @@ cmsBool CheckOne6D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4; In[4] = a5; In[5] = a6;
// This is the interpolated value
- cmsPipelineEval16(DbgThread(), In, Out1, lut);
+ cmsPipelineEval16(ContextID, In, Out1, lut);
// This is the real value
- Sampler6D(DbgThread(), In, Out2, NULL);
+ Sampler6D(ContextID, In, Out2, NULL);
// Let's see the difference
@@ -1916,7 +1909,7 @@ cmsBool CheckOne6D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
static
-cmsBool CheckOne7D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
+cmsBool CheckOne7D(cmsContext ContextID, cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
cmsUInt16Number a3, cmsUInt16Number a4,
cmsUInt16Number a5, cmsUInt16Number a6,
cmsUInt16Number a7)
@@ -1926,10 +1919,10 @@ cmsBool CheckOne7D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4; In[4] = a5; In[5] = a6; In[6] = a7;
// This is the interpolated value
- cmsPipelineEval16(DbgThread(), In, Out1, lut);
+ cmsPipelineEval16(ContextID, In, Out1, lut);
// This is the real value
- Sampler7D(DbgThread(), In, Out2, NULL);
+ Sampler7D(ContextID, In, Out2, NULL);
// Let's see the difference
@@ -1942,7 +1935,7 @@ cmsBool CheckOne7D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
static
-cmsBool CheckOne8D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
+cmsBool CheckOne8D(cmsContext ContextID, cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
cmsUInt16Number a3, cmsUInt16Number a4,
cmsUInt16Number a5, cmsUInt16Number a6,
cmsUInt16Number a7, cmsUInt16Number a8)
@@ -1952,10 +1945,10 @@ cmsBool CheckOne8D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4; In[4] = a5; In[5] = a6; In[6] = a7; In[7] = a8;
// This is the interpolated value
- cmsPipelineEval16(DbgThread(), In, Out1, lut);
+ cmsPipelineEval16(ContextID, In, Out1, lut);
// This is the real value
- Sampler8D(DbgThread(), In, Out2, NULL);
+ Sampler8D(ContextID, In, Out2, NULL);
// Let's see the difference
@@ -1968,87 +1961,87 @@ cmsBool CheckOne8D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2,
static
-cmsInt32Number Check3Dinterp(void)
+cmsInt32Number Check3Dinterp(cmsContext ContextID)
{
cmsPipeline* lut;
cmsStage* mpe;
- lut = cmsPipelineAlloc(DbgThread(), 3, 3);
- mpe = cmsStageAllocCLut16bit(DbgThread(), 9, 3, 3, NULL);
- cmsStageSampleCLut16bit(DbgThread(), mpe, Sampler3D, NULL, 0);
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_BEGIN, mpe);
+ lut = cmsPipelineAlloc(ContextID, 3, 3);
+ mpe = cmsStageAllocCLut16bit(ContextID, 9, 3, 3, NULL);
+ cmsStageSampleCLut16bit(ContextID, mpe, Sampler3D, NULL, 0);
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_BEGIN, mpe);
// Check accuracy
- if (!CheckOne3D(lut, 0, 0, 0)) return 0;
- if (!CheckOne3D(lut, 0xffff, 0xffff, 0xffff)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0, 0, 0)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0xffff, 0xffff, 0xffff)) return 0;
- if (!CheckOne3D(lut, 0x8080, 0x8080, 0x8080)) return 0;
- if (!CheckOne3D(lut, 0x0000, 0xFE00, 0x80FF)) return 0;
- if (!CheckOne3D(lut, 0x1111, 0x2222, 0x3333)) return 0;
- if (!CheckOne3D(lut, 0x0000, 0x0012, 0x0013)) return 0;
- if (!CheckOne3D(lut, 0x3141, 0x1415, 0x1592)) return 0;
- if (!CheckOne3D(lut, 0xFF00, 0xFF01, 0xFF12)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x8080, 0x8080, 0x8080)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x0000, 0xFE00, 0x80FF)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x1111, 0x2222, 0x3333)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x0000, 0x0012, 0x0013)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x3141, 0x1415, 0x1592)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0xFF00, 0xFF01, 0xFF12)) return 0;
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return 1;
}
static
-cmsInt32Number Check3DinterpGranular(void)
+cmsInt32Number Check3DinterpGranular(cmsContext ContextID)
{
cmsPipeline* lut;
cmsStage* mpe;
cmsUInt32Number Dimensions[] = { 7, 8, 9 };
- lut = cmsPipelineAlloc(DbgThread(), 3, 3);
- mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 3, 3, NULL);
- cmsStageSampleCLut16bit(DbgThread(), mpe, Sampler3D, NULL, 0);
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_BEGIN, mpe);
+ lut = cmsPipelineAlloc(ContextID, 3, 3);
+ mpe = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, 3, 3, NULL);
+ cmsStageSampleCLut16bit(ContextID, mpe, Sampler3D, NULL, 0);
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_BEGIN, mpe);
// Check accuracy
- if (!CheckOne3D(lut, 0, 0, 0)) return 0;
- if (!CheckOne3D(lut, 0xffff, 0xffff, 0xffff)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0, 0, 0)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0xffff, 0xffff, 0xffff)) return 0;
- if (!CheckOne3D(lut, 0x8080, 0x8080, 0x8080)) return 0;
- if (!CheckOne3D(lut, 0x0000, 0xFE00, 0x80FF)) return 0;
- if (!CheckOne3D(lut, 0x1111, 0x2222, 0x3333)) return 0;
- if (!CheckOne3D(lut, 0x0000, 0x0012, 0x0013)) return 0;
- if (!CheckOne3D(lut, 0x3141, 0x1415, 0x1592)) return 0;
- if (!CheckOne3D(lut, 0xFF00, 0xFF01, 0xFF12)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x8080, 0x8080, 0x8080)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x0000, 0xFE00, 0x80FF)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x1111, 0x2222, 0x3333)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x0000, 0x0012, 0x0013)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0x3141, 0x1415, 0x1592)) return 0;
+ if (!CheckOne3D(ContextID, lut, 0xFF00, 0xFF01, 0xFF12)) return 0;
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return 1;
}
static
-cmsInt32Number Check4Dinterp(void)
+cmsInt32Number Check4Dinterp(cmsContext ContextID)
{
cmsPipeline* lut;
cmsStage* mpe;
- lut = cmsPipelineAlloc(DbgThread(), 4, 3);
- mpe = cmsStageAllocCLut16bit(DbgThread(), 9, 4, 3, NULL);
- cmsStageSampleCLut16bit(DbgThread(), mpe, Sampler4D, NULL, 0);
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_BEGIN, mpe);
+ lut = cmsPipelineAlloc(ContextID, 4, 3);
+ mpe = cmsStageAllocCLut16bit(ContextID, 9, 4, 3, NULL);
+ cmsStageSampleCLut16bit(ContextID, mpe, Sampler4D, NULL, 0);
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_BEGIN, mpe);
// Check accuracy
- if (!CheckOne4D(lut, 0, 0, 0, 0)) return 0;
- if (!CheckOne4D(lut, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0, 0, 0, 0)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
- if (!CheckOne4D(lut, 0x8080, 0x8080, 0x8080, 0x8080)) return 0;
- if (!CheckOne4D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888)) return 0;
- if (!CheckOne4D(lut, 0x1111, 0x2222, 0x3333, 0x4444)) return 0;
- if (!CheckOne4D(lut, 0x0000, 0x0012, 0x0013, 0x0014)) return 0;
- if (!CheckOne4D(lut, 0x3141, 0x1415, 0x1592, 0x9261)) return 0;
- if (!CheckOne4D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x8080, 0x8080, 0x8080, 0x8080)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x0000, 0xFE00, 0x80FF, 0x8888)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x1111, 0x2222, 0x3333, 0x4444)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x0000, 0x0012, 0x0013, 0x0014)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x3141, 0x1415, 0x1592, 0x9261)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13)) return 0;
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return 1;
}
@@ -2056,148 +2049,148 @@ cmsInt32Number Check4Dinterp(void)
static
-cmsInt32Number Check4DinterpGranular(void)
+cmsInt32Number Check4DinterpGranular(cmsContext ContextID)
{
cmsPipeline* lut;
cmsStage* mpe;
cmsUInt32Number Dimensions[] = { 9, 8, 7, 6 };
- lut = cmsPipelineAlloc(DbgThread(), 4, 3);
- mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 4, 3, NULL);
- cmsStageSampleCLut16bit(DbgThread(), mpe, Sampler4D, NULL, 0);
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_BEGIN, mpe);
+ lut = cmsPipelineAlloc(ContextID, 4, 3);
+ mpe = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, 4, 3, NULL);
+ cmsStageSampleCLut16bit(ContextID, mpe, Sampler4D, NULL, 0);
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_BEGIN, mpe);
// Check accuracy
- if (!CheckOne4D(lut, 0, 0, 0, 0)) return 0;
- if (!CheckOne4D(lut, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0, 0, 0, 0)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
- if (!CheckOne4D(lut, 0x8080, 0x8080, 0x8080, 0x8080)) return 0;
- if (!CheckOne4D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888)) return 0;
- if (!CheckOne4D(lut, 0x1111, 0x2222, 0x3333, 0x4444)) return 0;
- if (!CheckOne4D(lut, 0x0000, 0x0012, 0x0013, 0x0014)) return 0;
- if (!CheckOne4D(lut, 0x3141, 0x1415, 0x1592, 0x9261)) return 0;
- if (!CheckOne4D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x8080, 0x8080, 0x8080, 0x8080)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x0000, 0xFE00, 0x80FF, 0x8888)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x1111, 0x2222, 0x3333, 0x4444)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x0000, 0x0012, 0x0013, 0x0014)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0x3141, 0x1415, 0x1592, 0x9261)) return 0;
+ if (!CheckOne4D(ContextID, lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13)) return 0;
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return 1;
}
static
-cmsInt32Number Check5DinterpGranular(void)
+cmsInt32Number Check5DinterpGranular(cmsContext ContextID)
{
cmsPipeline* lut;
cmsStage* mpe;
cmsUInt32Number Dimensions[] = { 3, 2, 2, 2, 2 };
- lut = cmsPipelineAlloc(DbgThread(), 5, 3);
- mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 5, 3, NULL);
- cmsStageSampleCLut16bit(DbgThread(), mpe, Sampler5D, NULL, 0);
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_BEGIN, mpe);
+ lut = cmsPipelineAlloc(ContextID, 5, 3);
+ mpe = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, 5, 3, NULL);
+ cmsStageSampleCLut16bit(ContextID, mpe, Sampler5D, NULL, 0);
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_BEGIN, mpe);
// Check accuracy
- if (!CheckOne5D(lut, 0, 0, 0, 0, 0)) return 0;
- if (!CheckOne5D(lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
+ if (!CheckOne5D(ContextID, lut, 0, 0, 0, 0, 0)) return 0;
+ if (!CheckOne5D(ContextID, lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
- if (!CheckOne5D(lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234)) return 0;
- if (!CheckOne5D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078)) return 0;
- if (!CheckOne5D(lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455)) return 0;
- if (!CheckOne5D(lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333)) return 0;
- if (!CheckOne5D(lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567)) return 0;
- if (!CheckOne5D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344)) return 0;
+ if (!CheckOne5D(ContextID, lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234)) return 0;
+ if (!CheckOne5D(ContextID, lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078)) return 0;
+ if (!CheckOne5D(ContextID, lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455)) return 0;
+ if (!CheckOne5D(ContextID, lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333)) return 0;
+ if (!CheckOne5D(ContextID, lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567)) return 0;
+ if (!CheckOne5D(ContextID, lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344)) return 0;
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return 1;
}
static
-cmsInt32Number Check6DinterpGranular(void)
+cmsInt32Number Check6DinterpGranular(cmsContext ContextID)
{
cmsPipeline* lut;
cmsStage* mpe;
cmsUInt32Number Dimensions[] = { 4, 3, 3, 2, 2, 2 };
- lut = cmsPipelineAlloc(DbgThread(), 6, 3);
- mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 6, 3, NULL);
- cmsStageSampleCLut16bit(DbgThread(), mpe, Sampler6D, NULL, 0);
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_BEGIN, mpe);
+ lut = cmsPipelineAlloc(ContextID, 6, 3);
+ mpe = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, 6, 3, NULL);
+ cmsStageSampleCLut16bit(ContextID, mpe, Sampler6D, NULL, 0);
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_BEGIN, mpe);
// Check accuracy
- if (!CheckOne6D(lut, 0, 0, 0, 0, 0, 0)) return 0;
- if (!CheckOne6D(lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
+ if (!CheckOne6D(ContextID, lut, 0, 0, 0, 0, 0, 0)) return 0;
+ if (!CheckOne6D(ContextID, lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
- if (!CheckOne6D(lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234, 0x1122)) return 0;
- if (!CheckOne6D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078, 0x2233)) return 0;
- if (!CheckOne6D(lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455, 0x3344)) return 0;
- if (!CheckOne6D(lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333, 0x4455)) return 0;
- if (!CheckOne6D(lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567, 0x5566)) return 0;
- if (!CheckOne6D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344, 0x6677)) return 0;
+ if (!CheckOne6D(ContextID, lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234, 0x1122)) return 0;
+ if (!CheckOne6D(ContextID, lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078, 0x2233)) return 0;
+ if (!CheckOne6D(ContextID, lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455, 0x3344)) return 0;
+ if (!CheckOne6D(ContextID, lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333, 0x4455)) return 0;
+ if (!CheckOne6D(ContextID, lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567, 0x5566)) return 0;
+ if (!CheckOne6D(ContextID, lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344, 0x6677)) return 0;
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return 1;
}
static
-cmsInt32Number Check7DinterpGranular(void)
+cmsInt32Number Check7DinterpGranular(cmsContext ContextID)
{
cmsPipeline* lut;
cmsStage* mpe;
cmsUInt32Number Dimensions[] = { 4, 3, 3, 2, 2, 2, 2 };
- lut = cmsPipelineAlloc(DbgThread(), 7, 3);
- mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 7, 3, NULL);
- cmsStageSampleCLut16bit(DbgThread(), mpe, Sampler7D, NULL, 0);
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_BEGIN, mpe);
+ lut = cmsPipelineAlloc(ContextID, 7, 3);
+ mpe = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, 7, 3, NULL);
+ cmsStageSampleCLut16bit(ContextID, mpe, Sampler7D, NULL, 0);
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_BEGIN, mpe);
// Check accuracy
- if (!CheckOne7D(lut, 0, 0, 0, 0, 0, 0, 0)) return 0;
- if (!CheckOne7D(lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
+ if (!CheckOne7D(ContextID, lut, 0, 0, 0, 0, 0, 0, 0)) return 0;
+ if (!CheckOne7D(ContextID, lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
- if (!CheckOne7D(lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234, 0x1122, 0x0056)) return 0;
- if (!CheckOne7D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078, 0x2233, 0x0088)) return 0;
- if (!CheckOne7D(lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455, 0x3344, 0x1987)) return 0;
- if (!CheckOne7D(lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333, 0x4455, 0x9988)) return 0;
- if (!CheckOne7D(lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567, 0x5566, 0xfe56)) return 0;
- if (!CheckOne7D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344, 0x6677, 0xbabe)) return 0;
+ if (!CheckOne7D(ContextID, lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234, 0x1122, 0x0056)) return 0;
+ if (!CheckOne7D(ContextID, lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078, 0x2233, 0x0088)) return 0;
+ if (!CheckOne7D(ContextID, lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455, 0x3344, 0x1987)) return 0;
+ if (!CheckOne7D(ContextID, lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333, 0x4455, 0x9988)) return 0;
+ if (!CheckOne7D(ContextID, lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567, 0x5566, 0xfe56)) return 0;
+ if (!CheckOne7D(ContextID, lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344, 0x6677, 0xbabe)) return 0;
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return 1;
}
static
-cmsInt32Number Check8DinterpGranular(void)
+cmsInt32Number Check8DinterpGranular(cmsContext ContextID)
{
cmsPipeline* lut;
cmsStage* mpe;
cmsUInt32Number Dimensions[] = { 4, 3, 3, 2, 2, 2, 2, 2 };
- lut = cmsPipelineAlloc(DbgThread(), 8, 3);
- mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 8, 3, NULL);
- cmsStageSampleCLut16bit(DbgThread(), mpe, Sampler8D, NULL, 0);
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_BEGIN, mpe);
+ lut = cmsPipelineAlloc(ContextID, 8, 3);
+ mpe = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, 8, 3, NULL);
+ cmsStageSampleCLut16bit(ContextID, mpe, Sampler8D, NULL, 0);
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_BEGIN, mpe);
// Check accuracy
- if (!CheckOne8D(lut, 0, 0, 0, 0, 0, 0, 0, 0)) return 0;
- if (!CheckOne8D(lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
+ if (!CheckOne8D(ContextID, lut, 0, 0, 0, 0, 0, 0, 0, 0)) return 0;
+ if (!CheckOne8D(ContextID, lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0;
- if (!CheckOne8D(lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234, 0x1122, 0x0056, 0x0011)) return 0;
- if (!CheckOne8D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078, 0x2233, 0x0088, 0x2020)) return 0;
- if (!CheckOne8D(lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455, 0x3344, 0x1987, 0x4532)) return 0;
- if (!CheckOne8D(lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333, 0x4455, 0x9988, 0x1200)) return 0;
- if (!CheckOne8D(lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567, 0x5566, 0xfe56, 0x6666)) return 0;
- if (!CheckOne8D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344, 0x6677, 0xbabe, 0xface)) return 0;
+ if (!CheckOne8D(ContextID, lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234, 0x1122, 0x0056, 0x0011)) return 0;
+ if (!CheckOne8D(ContextID, lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078, 0x2233, 0x0088, 0x2020)) return 0;
+ if (!CheckOne8D(ContextID, lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455, 0x3344, 0x1987, 0x4532)) return 0;
+ if (!CheckOne8D(ContextID, lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333, 0x4455, 0x9988, 0x1200)) return 0;
+ if (!CheckOne8D(ContextID, lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567, 0x5566, 0xfe56, 0x6666)) return 0;
+ if (!CheckOne8D(ContextID, lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344, 0x6677, 0xbabe, 0xface)) return 0;
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return 1;
}
@@ -2206,7 +2199,7 @@ cmsInt32Number Check8DinterpGranular(void)
// Lab to LCh and back should be performed at 1E-12 accuracy at least
static
-cmsInt32Number CheckLab2LCh(void)
+cmsInt32Number CheckLab2LCh(cmsContext ContextID)
{
cmsInt32Number l, a, b;
cmsFloat64Number dist, Max = 0;
@@ -2223,10 +2216,10 @@ cmsInt32Number CheckLab2LCh(void)
Lab.a = a;
Lab.b = b;
- cmsLab2LCh(DbgThread(), &LCh, &Lab);
- cmsLCh2Lab(DbgThread(), &Lab2, &LCh);
+ cmsLab2LCh(ContextID, &LCh, &Lab);
+ cmsLCh2Lab(ContextID, &Lab2, &LCh);
- dist = cmsDeltaE(DbgThread(), &Lab, &Lab2);
+ dist = cmsDeltaE(ContextID, &Lab, &Lab2);
if (dist > Max) Max = dist;
}
}
@@ -2237,7 +2230,7 @@ cmsInt32Number CheckLab2LCh(void)
// Lab to LCh and back should be performed at 1E-12 accuracy at least
static
-cmsInt32Number CheckLab2XYZ(void)
+cmsInt32Number CheckLab2XYZ(cmsContext ContextID)
{
cmsInt32Number l, a, b;
cmsFloat64Number dist, Max = 0;
@@ -2254,10 +2247,10 @@ cmsInt32Number CheckLab2XYZ(void)
Lab.a = a;
Lab.b = b;
- cmsLab2XYZ(DbgThread(), NULL, &XYZ, &Lab);
- cmsXYZ2Lab(DbgThread(), NULL, &Lab2, &XYZ);
+ cmsLab2XYZ(ContextID, NULL, &XYZ, &Lab);
+ cmsXYZ2Lab(ContextID, NULL, &Lab2, &XYZ);
- dist = cmsDeltaE(DbgThread(), &Lab, &Lab2);
+ dist = cmsDeltaE(ContextID, &Lab, &Lab2);
if (dist > Max) Max = dist;
}
@@ -2269,7 +2262,7 @@ cmsInt32Number CheckLab2XYZ(void)
// Lab to xyY and back should be performed at 1E-12 accuracy at least
static
-cmsInt32Number CheckLab2xyY(void)
+cmsInt32Number CheckLab2xyY(cmsContext ContextID)
{
cmsInt32Number l, a, b;
cmsFloat64Number dist, Max = 0;
@@ -2287,12 +2280,12 @@ cmsInt32Number CheckLab2xyY(void)
Lab.a = a;
Lab.b = b;
- cmsLab2XYZ(DbgThread(), NULL, &XYZ, &Lab);
- cmsXYZ2xyY(DbgThread(), &xyY, &XYZ);
- cmsxyY2XYZ(DbgThread(), &XYZ, &xyY);
- cmsXYZ2Lab(DbgThread(), NULL, &Lab2, &XYZ);
+ cmsLab2XYZ(ContextID, NULL, &XYZ, &Lab);
+ cmsXYZ2xyY(ContextID, &xyY, &XYZ);
+ cmsxyY2XYZ(ContextID, &XYZ, &xyY);
+ cmsXYZ2Lab(ContextID, NULL, &Lab2, &XYZ);
- dist = cmsDeltaE(DbgThread(), &Lab, &Lab2);
+ dist = cmsDeltaE(ContextID, &Lab, &Lab2);
if (dist > Max) Max = dist;
}
@@ -2304,7 +2297,7 @@ cmsInt32Number CheckLab2xyY(void)
static
-cmsInt32Number CheckLabV2encoding(void)
+cmsInt32Number CheckLabV2encoding(cmsContext ContextID)
{
cmsInt32Number n2, i, j;
cmsUInt16Number Inw[3], aw[3];
@@ -2316,8 +2309,8 @@ cmsInt32Number CheckLabV2encoding(void)
Inw[0] = Inw[1] = Inw[2] = (cmsUInt16Number) j;
- cmsLabEncoded2FloatV2(DbgThread(), &Lab, Inw);
- cmsFloat2LabEncodedV2(DbgThread(), aw, &Lab);
+ cmsLabEncoded2FloatV2(ContextID, &Lab, Inw);
+ cmsFloat2LabEncodedV2(ContextID, aw, &Lab);
for (i=0; i < 3; i++) {
@@ -2332,7 +2325,7 @@ cmsInt32Number CheckLabV2encoding(void)
}
static
-cmsInt32Number CheckLabV4encoding(void)
+cmsInt32Number CheckLabV4encoding(cmsContext ContextID)
{
cmsInt32Number n2, i, j;
cmsUInt16Number Inw[3], aw[3];
@@ -2344,8 +2337,8 @@ cmsInt32Number CheckLabV4encoding(void)
Inw[0] = Inw[1] = Inw[2] = (cmsUInt16Number) j;
- cmsLabEncoded2Float(DbgThread(), &Lab, Inw);
- cmsFloat2LabEncoded(DbgThread(), aw, &Lab);
+ cmsLabEncoded2Float(ContextID, &Lab, Inw);
+ cmsFloat2LabEncoded(ContextID, aw, &Lab);
for (i=0; i < 3; i++) {
@@ -2363,7 +2356,7 @@ cmsInt32Number CheckLabV4encoding(void)
// BlackBody -----------------------------------------------------------------------------------------------------
static
-cmsInt32Number CheckTemp2CHRM(void)
+cmsInt32Number CheckTemp2CHRM(cmsContext ContextID)
{
cmsInt32Number j;
cmsFloat64Number d, v, Max = 0;
@@ -2371,8 +2364,8 @@ cmsInt32Number CheckTemp2CHRM(void)
for (j=4000; j < 25000; j++) {
- cmsWhitePointFromTemp(DbgThread(), &White, j);
- if (!cmsTempFromWhitePoint(DbgThread(), &v, &White)) return 0;
+ cmsWhitePointFromTemp(ContextID, &White, j);
+ if (!cmsTempFromWhitePoint(ContextID, &v, &White)) return 0;
d = fabs(v - j);
if (d > Max) Max = d;
@@ -2387,9 +2380,9 @@ cmsInt32Number CheckTemp2CHRM(void)
// Tone curves -----------------------------------------------------------------------------------------------------
static
-cmsInt32Number CheckGammaEstimation(cmsToneCurve* c, cmsFloat64Number g)
+cmsInt32Number CheckGammaEstimation(cmsContext ContextID, cmsToneCurve* c, cmsFloat64Number g)
{
- cmsFloat64Number est = cmsEstimateGamma(DbgThread(), c, 0.001);
+ cmsFloat64Number est = cmsEstimateGamma(ContextID, c, 0.001);
SubTest("Gamma estimation");
if (fabs(est - g) > 0.001) return 0;
@@ -2397,59 +2390,59 @@ cmsInt32Number CheckGammaEstimation(cmsToneCurve* c, cmsFloat64Number g)
}
static
-cmsInt32Number CheckGammaCreation16(void)
+cmsInt32Number CheckGammaCreation16(cmsContext ContextID)
{
- cmsToneCurve* LinGamma = cmsBuildGamma(DbgThread(), 1.0);
+ cmsToneCurve* LinGamma = cmsBuildGamma(ContextID, 1.0);
cmsInt32Number i;
cmsUInt16Number in, out;
for (i=0; i < 0xffff; i++) {
in = (cmsUInt16Number) i;
- out = cmsEvalToneCurve16(DbgThread(), LinGamma, in);
+ out = cmsEvalToneCurve16(ContextID, LinGamma, in);
if (in != out) {
Fail("(lin gamma): Must be %x, But is %x : ", in, out);
- cmsFreeToneCurve(DbgThread(), LinGamma);
+ cmsFreeToneCurve(ContextID, LinGamma);
return 0;
}
}
- if (!CheckGammaEstimation(LinGamma, 1.0)) return 0;
+ if (!CheckGammaEstimation(ContextID, LinGamma, 1.0)) return 0;
- cmsFreeToneCurve(DbgThread(), LinGamma);
+ cmsFreeToneCurve(ContextID, LinGamma);
return 1;
}
static
-cmsInt32Number CheckGammaCreationFlt(void)
+cmsInt32Number CheckGammaCreationFlt(cmsContext ContextID)
{
- cmsToneCurve* LinGamma = cmsBuildGamma(DbgThread(), 1.0);
+ cmsToneCurve* LinGamma = cmsBuildGamma(ContextID, 1.0);
cmsInt32Number i;
cmsFloat32Number in, out;
for (i=0; i < 0xffff; i++) {
in = (cmsFloat32Number) (i / 65535.0);
- out = cmsEvalToneCurveFloat(DbgThread(), LinGamma, in);
+ out = cmsEvalToneCurveFloat(ContextID, LinGamma, in);
if (fabs(in - out) > (1/65535.0)) {
Fail("(lin gamma): Must be %f, But is %f : ", in, out);
- cmsFreeToneCurve(DbgThread(), LinGamma);
+ cmsFreeToneCurve(ContextID, LinGamma);
return 0;
}
}
- if (!CheckGammaEstimation(LinGamma, 1.0)) return 0;
- cmsFreeToneCurve(DbgThread(), LinGamma);
+ if (!CheckGammaEstimation(ContextID, LinGamma, 1.0)) return 0;
+ cmsFreeToneCurve(ContextID, LinGamma);
return 1;
}
// Curve curves using a single power function
// Error is given in 0..ffff counts
static
-cmsInt32Number CheckGammaFloat(cmsFloat64Number g)
+cmsInt32Number CheckGammaFloat(cmsContext ContextID, cmsFloat64Number g)
{
- cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), g);
+ cmsToneCurve* Curve = cmsBuildGamma(ContextID, g);
cmsInt32Number i;
cmsFloat32Number in, out;
cmsFloat64Number val, Err;
@@ -2458,7 +2451,7 @@ cmsInt32Number CheckGammaFloat(cmsFloat64Number g)
for (i=0; i < 0xffff; i++) {
in = (cmsFloat32Number) (i / 65535.0);
- out = cmsEvalToneCurveFloat(DbgThread(), Curve, in);
+ out = cmsEvalToneCurveFloat(ContextID, Curve, in);
val = pow((cmsFloat64Number) in, g);
Err = fabs( val - out);
@@ -2467,31 +2460,31 @@ cmsInt32Number CheckGammaFloat(cmsFloat64Number g)
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr * 65535.0);
- if (!CheckGammaEstimation(Curve, g)) return 0;
+ if (!CheckGammaEstimation(ContextID, Curve, g)) return 0;
- cmsFreeToneCurve(DbgThread(), Curve);
+ cmsFreeToneCurve(ContextID, Curve);
return 1;
}
-static cmsInt32Number CheckGamma18(void)
+static cmsInt32Number CheckGamma18(cmsContext ContextID)
{
- return CheckGammaFloat(1.8);
+ return CheckGammaFloat(ContextID, 1.8);
}
-static cmsInt32Number CheckGamma22(void)
+static cmsInt32Number CheckGamma22(cmsContext ContextID)
{
- return CheckGammaFloat(2.2);
+ return CheckGammaFloat(ContextID, 2.2);
}
-static cmsInt32Number CheckGamma30(void)
+static cmsInt32Number CheckGamma30(cmsContext ContextID)
{
- return CheckGammaFloat(3.0);
+ return CheckGammaFloat(ContextID, 3.0);
}
// Check table-based gamma functions
static
-cmsInt32Number CheckGammaFloatTable(cmsFloat64Number g)
+cmsInt32Number CheckGammaFloatTable(cmsContext ContextID, cmsFloat64Number g)
{
cmsFloat32Number Values[1025];
cmsToneCurve* Curve;
@@ -2505,13 +2498,13 @@ cmsInt32Number CheckGammaFloatTable(cmsFloat64Number g)
Values[i] = powf(in, (float) g);
}
- Curve = cmsBuildTabulatedToneCurveFloat(DbgThread(), 1025, Values);
+ Curve = cmsBuildTabulatedToneCurveFloat(ContextID, 1025, Values);
MaxErr = 0.0;
for (i=0; i <= 0xffff; i++) {
in = (cmsFloat32Number) (i / 65535.0);
- out = cmsEvalToneCurveFloat(DbgThread(), Curve, in);
+ out = cmsEvalToneCurveFloat(ContextID, Curve, in);
val = pow(in, g);
Err = fabs(val - out);
@@ -2520,31 +2513,31 @@ cmsInt32Number CheckGammaFloatTable(cmsFloat64Number g)
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr * 65535.0);
- if (!CheckGammaEstimation(Curve, g)) return 0;
+ if (!CheckGammaEstimation(ContextID, Curve, g)) return 0;
- cmsFreeToneCurve(DbgThread(), Curve);
+ cmsFreeToneCurve(ContextID, Curve);
return 1;
}
-static cmsInt32Number CheckGamma18Table(void)
+static cmsInt32Number CheckGamma18Table(cmsContext ContextID)
{
- return CheckGammaFloatTable(1.8);
+ return CheckGammaFloatTable(ContextID, 1.8);
}
-static cmsInt32Number CheckGamma22Table(void)
+static cmsInt32Number CheckGamma22Table(cmsContext ContextID)
{
- return CheckGammaFloatTable(2.2);
+ return CheckGammaFloatTable(ContextID, 2.2);
}
-static cmsInt32Number CheckGamma30Table(void)
+static cmsInt32Number CheckGamma30Table(cmsContext ContextID)
{
- return CheckGammaFloatTable(3.0);
+ return CheckGammaFloatTable(ContextID, 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(cmsContext ContextID, cmsFloat64Number g)
{
cmsUInt16Number Values[1025];
cmsToneCurve* Curve;
@@ -2558,13 +2551,13 @@ cmsInt32Number CheckGammaWordTable(cmsFloat64Number g)
Values[i] = (cmsUInt16Number) floor(pow(in, g) * 65535.0 + 0.5);
}
- Curve = cmsBuildTabulatedToneCurve16(DbgThread(), 1025, Values);
+ Curve = cmsBuildTabulatedToneCurve16(ContextID, 1025, Values);
MaxErr = 0.0;
for (i=0; i <= 0xffff; i++) {
in = (cmsFloat32Number) (i / 65535.0);
- out = cmsEvalToneCurveFloat(DbgThread(), Curve, in);
+ out = cmsEvalToneCurveFloat(ContextID, Curve, in);
val = pow(in, g);
Err = fabs(val - out);
@@ -2573,45 +2566,45 @@ cmsInt32Number CheckGammaWordTable(cmsFloat64Number g)
if (MaxErr > 0) printf("|Err|<%lf ", MaxErr * 65535.0);
- if (!CheckGammaEstimation(Curve, g)) return 0;
+ if (!CheckGammaEstimation(ContextID, Curve, g)) return 0;
- cmsFreeToneCurve(DbgThread(), Curve);
+ cmsFreeToneCurve(ContextID, Curve);
return 1;
}
-static cmsInt32Number CheckGamma18TableWord(void)
+static cmsInt32Number CheckGamma18TableWord(cmsContext ContextID)
{
- return CheckGammaWordTable(1.8);
+ return CheckGammaWordTable(ContextID, 1.8);
}
-static cmsInt32Number CheckGamma22TableWord(void)
+static cmsInt32Number CheckGamma22TableWord(cmsContext ContextID)
{
- return CheckGammaWordTable(2.2);
+ return CheckGammaWordTable(ContextID, 2.2);
}
-static cmsInt32Number CheckGamma30TableWord(void)
+static cmsInt32Number CheckGamma30TableWord(cmsContext ContextID)
{
- return CheckGammaWordTable(3.0);
+ return CheckGammaWordTable(ContextID, 3.0);
}
// Curve joining test. Joining two high-gamma of 3.0 curves should
// give something like linear
static
-cmsInt32Number CheckJointCurves(void)
+cmsInt32Number CheckJointCurves(cmsContext ContextID)
{
cmsToneCurve *Forward, *Reverse, *Result;
cmsBool rc;
- Forward = cmsBuildGamma(DbgThread(), 3.0);
- Reverse = cmsBuildGamma(DbgThread(), 3.0);
+ Forward = cmsBuildGamma(ContextID, 3.0);
+ Reverse = cmsBuildGamma(ContextID, 3.0);
- Result = cmsJoinToneCurve(DbgThread(), Forward, Reverse, 256);
+ Result = cmsJoinToneCurve(ContextID, Forward, Reverse, 256);
- cmsFreeToneCurve(DbgThread(), Forward); cmsFreeToneCurve(DbgThread(), Reverse);
+ cmsFreeToneCurve(ContextID, Forward); cmsFreeToneCurve(ContextID, Reverse);
- rc = cmsIsToneCurveLinear(DbgThread(), Result);
- cmsFreeToneCurve(DbgThread(), Result);
+ rc = cmsIsToneCurveLinear(ContextID, Result);
+ cmsFreeToneCurve(ContextID, Result);
if (!rc)
Fail("Joining same curve twice does not result in a linear ramp");
@@ -2622,10 +2615,10 @@ cmsInt32Number CheckJointCurves(void)
// Create a gamma curve by cheating the table
static
-cmsToneCurve* GammaTableLinear(cmsInt32Number nEntries, cmsBool Dir)
+cmsToneCurve* GammaTableLinear(cmsContext ContextID, cmsInt32Number nEntries, cmsBool Dir)
{
cmsInt32Number i;
- cmsToneCurve* g = cmsBuildTabulatedToneCurve16(DbgThread(), nEntries, NULL);
+ cmsToneCurve* g = cmsBuildTabulatedToneCurve16(ContextID, nEntries, NULL);
for (i=0; i < nEntries; i++) {
@@ -2642,12 +2635,12 @@ cmsToneCurve* GammaTableLinear(cmsInt32Number nEntries, cmsBool Dir)
static
-cmsInt32Number CheckJointCurvesDescending(void)
+cmsInt32Number CheckJointCurvesDescending(cmsContext ContextID)
{
cmsToneCurve *Forward, *Reverse, *Result;
cmsInt32Number i, rc;
- Forward = cmsBuildGamma(DbgThread(), 2.2);
+ Forward = cmsBuildGamma(ContextID, 2.2);
// Fake the curve to be table-based
@@ -2655,32 +2648,32 @@ cmsInt32Number CheckJointCurvesDescending(void)
Forward ->Table16[i] = 0xffff - Forward->Table16[i];
Forward ->Segments[0].Type = 0;
- Reverse = cmsReverseToneCurve(DbgThread(), Forward);
+ Reverse = cmsReverseToneCurve(ContextID, Forward);
- Result = cmsJoinToneCurve(DbgThread(), Reverse, Reverse, 256);
+ Result = cmsJoinToneCurve(ContextID, Reverse, Reverse, 256);
- cmsFreeToneCurve(DbgThread(), Forward);
- cmsFreeToneCurve(DbgThread(), Reverse);
+ cmsFreeToneCurve(ContextID, Forward);
+ cmsFreeToneCurve(ContextID, Reverse);
- rc = cmsIsToneCurveLinear(DbgThread(), Result);
- cmsFreeToneCurve(DbgThread(), Result);
+ rc = cmsIsToneCurveLinear(ContextID, Result);
+ cmsFreeToneCurve(ContextID, Result);
return rc;
}
static
-cmsInt32Number CheckFToneCurvePoint(cmsToneCurve* c, cmsUInt16Number Point, cmsInt32Number Value)
+cmsInt32Number CheckFToneCurvePoint(cmsContext ContextID, cmsToneCurve* c, cmsUInt16Number Point, cmsInt32Number Value)
{
cmsInt32Number Result;
- Result = cmsEvalToneCurve16(DbgThread(), c, Point);
+ Result = cmsEvalToneCurve16(ContextID, c, Point);
return (abs(Value - Result) < 2);
}
static
-cmsInt32Number CheckReverseDegenerated(void)
+cmsInt32Number CheckReverseDegenerated(cmsContext ContextID)
{
cmsToneCurve* p, *g;
cmsUInt16Number Tab[16];
@@ -2702,21 +2695,21 @@ cmsInt32Number CheckReverseDegenerated(void)
Tab[14]= 0xffff;
Tab[15]= 0xffff;
- p = cmsBuildTabulatedToneCurve16(DbgThread(), 16, Tab);
- g = cmsReverseToneCurve(DbgThread(), p);
+ p = cmsBuildTabulatedToneCurve16(ContextID, 16, Tab);
+ g = cmsReverseToneCurve(ContextID, p);
// Now let's check some points
- if (!CheckFToneCurvePoint(g, 0x5555, 0x5555)) return 0;
- if (!CheckFToneCurvePoint(g, 0x7777, 0x7777)) return 0;
+ if (!CheckFToneCurvePoint(ContextID, g, 0x5555, 0x5555)) return 0;
+ if (!CheckFToneCurvePoint(ContextID, g, 0x7777, 0x7777)) return 0;
// First point for zero
- if (!CheckFToneCurvePoint(g, 0x0000, 0x4444)) return 0;
+ if (!CheckFToneCurvePoint(ContextID, g, 0x0000, 0x4444)) return 0;
// Last point
- if (!CheckFToneCurvePoint(g, 0xFFFF, 0xFFFF)) return 0;
+ if (!CheckFToneCurvePoint(ContextID, g, 0xFFFF, 0xFFFF)) return 0;
- cmsFreeToneCurve(DbgThread(), p);
- cmsFreeToneCurve(DbgThread(), g);
+ cmsFreeToneCurve(ContextID, p);
+ cmsFreeToneCurve(ContextID, g);
return 1;
}
@@ -2724,7 +2717,7 @@ cmsInt32Number CheckReverseDegenerated(void)
// Build a parametric sRGB-like curve
static
-cmsToneCurve* Build_sRGBGamma(void)
+cmsToneCurve* Build_sRGBGamma(cmsContext ContextID)
{
cmsFloat64Number Parameters[5];
@@ -2734,14 +2727,14 @@ cmsToneCurve* Build_sRGBGamma(void)
Parameters[3] = 1. / 12.92;
Parameters[4] = 0.04045; // d
- return cmsBuildParametricToneCurve(DbgThread(), 4, Parameters);
+ return cmsBuildParametricToneCurve(ContextID, 4, Parameters);
}
// Join two gamma tables in floating point format. Result should be a straight line
static
-cmsToneCurve* CombineGammaFloat(cmsToneCurve* g1, cmsToneCurve* g2)
+cmsToneCurve* CombineGammaFloat(cmsContext ContextID, cmsToneCurve* g1, cmsToneCurve* g2)
{
cmsUInt16Number Tab[256];
cmsFloat32Number f;
@@ -2750,17 +2743,17 @@ cmsToneCurve* CombineGammaFloat(cmsToneCurve* g1, cmsToneCurve* g2)
for (i=0; i < 256; i++) {
f = (cmsFloat32Number) i / 255.0F;
- f = cmsEvalToneCurveFloat(DbgThread(), g2, cmsEvalToneCurveFloat(DbgThread(), g1, f));
+ f = cmsEvalToneCurveFloat(ContextID, g2, cmsEvalToneCurveFloat(ContextID, g1, f));
Tab[i] = (cmsUInt16Number) floor(f * 65535.0 + 0.5);
}
- return cmsBuildTabulatedToneCurve16(DbgThread(), 256, Tab);
+ return cmsBuildTabulatedToneCurve16(ContextID, 256, Tab);
}
// Same of anterior, but using quantized tables
static
-cmsToneCurve* CombineGamma16(cmsToneCurve* g1, cmsToneCurve* g2)
+cmsToneCurve* CombineGamma16(cmsContext ContextID, cmsToneCurve* g1, cmsToneCurve* g2)
{
cmsUInt16Number Tab[256];
@@ -2771,42 +2764,42 @@ cmsToneCurve* CombineGamma16(cmsToneCurve* g1, cmsToneCurve* g2)
cmsUInt16Number wValIn;
wValIn = _cmsQuantizeVal(i, 256);
- Tab[i] = cmsEvalToneCurve16(DbgThread(), g2, cmsEvalToneCurve16(DbgThread(), g1, wValIn));
+ Tab[i] = cmsEvalToneCurve16(ContextID, g2, cmsEvalToneCurve16(ContextID, g1, wValIn));
}
- return cmsBuildTabulatedToneCurve16(DbgThread(), 256, Tab);
+ return cmsBuildTabulatedToneCurve16(ContextID, 256, Tab);
}
static
-cmsInt32Number CheckJointFloatCurves_sRGB(void)
+cmsInt32Number CheckJointFloatCurves_sRGB(cmsContext ContextID)
{
cmsToneCurve *Forward, *Reverse, *Result;
cmsBool rc;
- Forward = Build_sRGBGamma();
- Reverse = cmsReverseToneCurve(DbgThread(), Forward);
- Result = CombineGammaFloat(Forward, Reverse);
- cmsFreeToneCurve(DbgThread(), Forward); cmsFreeToneCurve(DbgThread(), Reverse);
+ Forward = Build_sRGBGamma(ContextID);
+ Reverse = cmsReverseToneCurve(ContextID, Forward);
+ Result = CombineGammaFloat(ContextID, Forward, Reverse);
+ cmsFreeToneCurve(ContextID, Forward); cmsFreeToneCurve(ContextID, Reverse);
- rc = cmsIsToneCurveLinear(DbgThread(), Result);
- cmsFreeToneCurve(DbgThread(), Result);
+ rc = cmsIsToneCurveLinear(ContextID, Result);
+ cmsFreeToneCurve(ContextID, Result);
return rc;
}
static
-cmsInt32Number CheckJoint16Curves_sRGB(void)
+cmsInt32Number CheckJoint16Curves_sRGB(cmsContext ContextID)
{
cmsToneCurve *Forward, *Reverse, *Result;
cmsBool rc;
- Forward = Build_sRGBGamma();
- Reverse = cmsReverseToneCurve(DbgThread(), Forward);
- Result = CombineGamma16(Forward, Reverse);
- cmsFreeToneCurve(DbgThread(), Forward); cmsFreeToneCurve(DbgThread(), Reverse);
+ Forward = Build_sRGBGamma(ContextID);
+ Reverse = cmsReverseToneCurve(ContextID, Forward);
+ Result = CombineGamma16(ContextID, Forward, Reverse);
+ cmsFreeToneCurve(ContextID, Forward); cmsFreeToneCurve(ContextID, Reverse);
- rc = cmsIsToneCurveLinear(DbgThread(), Result);
- cmsFreeToneCurve(DbgThread(), Result);
+ rc = cmsIsToneCurveLinear(ContextID, Result);
+ cmsFreeToneCurve(ContextID, Result);
return rc;
}
@@ -2814,21 +2807,21 @@ cmsInt32Number CheckJoint16Curves_sRGB(void)
// sigmoidal curve f(x) = (1-x^g) ^(1/g)
static
-cmsInt32Number CheckJointCurvesSShaped(void)
+cmsInt32Number CheckJointCurvesSShaped(cmsContext ContextID)
{
cmsFloat64Number p = 3.2;
cmsToneCurve *Forward, *Reverse, *Result;
cmsInt32Number rc;
- Forward = cmsBuildParametricToneCurve(DbgThread(), 108, &p);
- Reverse = cmsReverseToneCurve(DbgThread(), Forward);
- Result = cmsJoinToneCurve(DbgThread(), Forward, Forward, 4096);
+ Forward = cmsBuildParametricToneCurve(ContextID, 108, &p);
+ Reverse = cmsReverseToneCurve(ContextID, Forward);
+ Result = cmsJoinToneCurve(ContextID, Forward, Forward, 4096);
- cmsFreeToneCurve(DbgThread(), Forward);
- cmsFreeToneCurve(DbgThread(), Reverse);
+ cmsFreeToneCurve(ContextID, Forward);
+ cmsFreeToneCurve(ContextID, Reverse);
- rc = cmsIsToneCurveLinear(DbgThread(), Result);
- cmsFreeToneCurve(DbgThread(), Result);
+ rc = cmsIsToneCurveLinear(ContextID, Result);
+ cmsFreeToneCurve(ContextID, Result);
return rc;
}
@@ -2972,15 +2965,15 @@ cmsFloat32Number sigmoidal(cmsFloat32Number x, const cmsFloat64Number Params[])
static
-cmsBool CheckSingleParametric(const char* Name, dblfnptr fn, cmsInt32Number Type, const cmsFloat64Number Params[])
+cmsBool CheckSingleParametric(cmsContext ContextID, const char* Name, dblfnptr fn, cmsInt32Number Type, const cmsFloat64Number Params[])
{
cmsInt32Number i;
cmsToneCurve* tc;
cmsToneCurve* tc_1;
char InverseText[256];
- tc = cmsBuildParametricToneCurve(DbgThread(), Type, Params);
- tc_1 = cmsBuildParametricToneCurve(DbgThread(), -Type, Params);
+ tc = cmsBuildParametricToneCurve(ContextID, Type, Params);
+ tc_1 = cmsBuildParametricToneCurve(ContextID, -Type, Params);
for (i=0; i <= 1000; i++) {
@@ -2988,8 +2981,8 @@ cmsBool CheckSingleParametric(const char* Name, dblfnptr fn, cmsInt32Number Type
cmsFloat32Number y_fn, y_param, x_param, y_param2;
y_fn = fn(x, Params);
- y_param = cmsEvalToneCurveFloat(DbgThread(), tc, x);
- x_param = cmsEvalToneCurveFloat(DbgThread(), tc_1, y_param);
+ y_param = cmsEvalToneCurveFloat(ContextID, tc, x);
+ x_param = cmsEvalToneCurveFloat(ContextID, tc_1, y_param);
y_param2 = fn(x_param, Params);
@@ -3001,19 +2994,19 @@ cmsBool CheckSingleParametric(const char* Name, dblfnptr fn, cmsInt32Number Type
goto Error;
}
- cmsFreeToneCurve(DbgThread(), tc);
- cmsFreeToneCurve(DbgThread(), tc_1);
+ cmsFreeToneCurve(ContextID, tc);
+ cmsFreeToneCurve(ContextID, tc_1);
return TRUE;
Error:
- cmsFreeToneCurve(DbgThread(), tc);
- cmsFreeToneCurve(DbgThread(), tc_1);
+ cmsFreeToneCurve(ContextID, tc);
+ cmsFreeToneCurve(ContextID, tc_1);
return FALSE;
}
// Check against some known values
static
-cmsInt32Number CheckParametricToneCurves(void)
+cmsInt32Number CheckParametricToneCurves(cmsContext ContextID)
{
cmsFloat64Number Params[10];
@@ -3021,7 +3014,7 @@ cmsInt32Number CheckParametricToneCurves(void)
Params[0] = 2.2;
- if (!CheckSingleParametric("Gamma", Gamma, 1, Params)) return 0;
+ if (!CheckSingleParametric(ContextID, "Gamma", Gamma, 1, Params)) return 0;
// 2) CIE 122-1966
// Y = (aX + b)^Gamma | X >= -b/a
@@ -3031,7 +3024,7 @@ cmsInt32Number CheckParametricToneCurves(void)
Params[1] = 1.5;
Params[2] = -0.5;
- if (!CheckSingleParametric("CIE122-1966", CIE122, 2, Params)) return 0;
+ if (!CheckSingleParametric(ContextID, "CIE122-1966", CIE122, 2, Params)) return 0;
// 3) IEC 61966-3
// Y = (aX + b)^Gamma | X <= -b/a
@@ -3043,7 +3036,7 @@ cmsInt32Number CheckParametricToneCurves(void)
Params[3] = 0.3;
- if (!CheckSingleParametric("IEC 61966-3", IEC61966_3, 3, Params)) return 0;
+ if (!CheckSingleParametric(ContextID, "IEC 61966-3", IEC61966_3, 3, Params)) return 0;
// 4) IEC 61966-2.1 (sRGB)
// Y = (aX + b)^Gamma | X >= d
@@ -3055,7 +3048,7 @@ cmsInt32Number CheckParametricToneCurves(void)
Params[3] = 1. / 12.92;
Params[4] = 0.04045;
- if (!CheckSingleParametric("IEC 61966-2.1", IEC61966_21, 4, Params)) return 0;
+ if (!CheckSingleParametric(ContextID, "IEC 61966-2.1", IEC61966_21, 4, Params)) return 0;
// 5) Y = (aX + b)^Gamma + e | X >= d
@@ -3069,7 +3062,7 @@ cmsInt32Number CheckParametricToneCurves(void)
Params[5] = 0.5;
Params[6] = 0.2;
- if (!CheckSingleParametric("param_5", param_5, 5, Params)) return 0;
+ if (!CheckSingleParametric(ContextID, "param_5", param_5, 5, Params)) return 0;
// 6) Y = (aX + b) ^ Gamma + c
@@ -3078,7 +3071,7 @@ cmsInt32Number CheckParametricToneCurves(void)
Params[2] = 0.2;
Params[3] = 0.3;
- if (!CheckSingleParametric("param_6", param_6, 6, Params)) return 0;
+ if (!CheckSingleParametric(ContextID, "param_6", param_6, 6, Params)) return 0;
// 7) Y = a * log (b * X^Gamma + c) + d
@@ -3088,7 +3081,7 @@ cmsInt32Number CheckParametricToneCurves(void)
Params[3] = 0.02;
Params[4] = 0.1;
- if (!CheckSingleParametric("param_7", param_7, 7, Params)) return 0;
+ if (!CheckSingleParametric(ContextID, "param_7", param_7, 7, Params)) return 0;
// 8) Y = a * b ^ (c*X+d) + e
@@ -3098,12 +3091,12 @@ cmsInt32Number CheckParametricToneCurves(void)
Params[3] = 0.1;
Params[4] = 0.2;
- if (!CheckSingleParametric("param_8", param_8, 8, Params)) return 0;
+ if (!CheckSingleParametric(ContextID, "param_8", param_8, 8, Params)) return 0;
// 108: S-Shaped: (1 - (1-x)^1/g)^1/g
Params[0] = 1.9;
- if (!CheckSingleParametric("sigmoidal", sigmoidal, 108, Params)) return 0;
+ if (!CheckSingleParametric(ContextID, "sigmoidal", sigmoidal, 108, Params)) return 0;
// All OK
@@ -3113,38 +3106,38 @@ cmsInt32Number CheckParametricToneCurves(void)
// LUT checks ------------------------------------------------------------------------------
static
-cmsInt32Number CheckLUTcreation(void)
+cmsInt32Number CheckLUTcreation(cmsContext ContextID)
{
cmsPipeline* lut;
cmsPipeline* lut2;
cmsInt32Number n1, n2;
- lut = cmsPipelineAlloc(DbgThread(), 1, 1);
- n1 = cmsPipelineStageCount(DbgThread(), lut);
- lut2 = cmsPipelineDup(DbgThread(), lut);
- n2 = cmsPipelineStageCount(DbgThread(), lut2);
+ lut = cmsPipelineAlloc(ContextID, 1, 1);
+ n1 = cmsPipelineStageCount(ContextID, lut);
+ lut2 = cmsPipelineDup(ContextID, lut);
+ n2 = cmsPipelineStageCount(ContextID, lut2);
- cmsPipelineFree(DbgThread(), lut);
- cmsPipelineFree(DbgThread(), lut2);
+ cmsPipelineFree(ContextID, lut);
+ cmsPipelineFree(ContextID, lut2);
return (n1 == 0) && (n2 == 0);
}
// Create a MPE for a identity matrix
static
-void AddIdentityMatrix(cmsPipeline* lut)
+void AddIdentityMatrix(cmsContext ContextID, cmsPipeline* lut)
{
const cmsFloat64Number Identity[] = { 1, 0, 0,
0, 1, 0,
0, 0, 1,
0, 0, 0 };
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, cmsStageAllocMatrix(DbgThread(), 3, 3, Identity, NULL));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, cmsStageAllocMatrix(ContextID, 3, 3, Identity, NULL));
}
// Create a MPE for identity cmsFloat32Number CLUT
static
-void AddIdentityCLUTfloat(cmsPipeline* lut)
+void AddIdentityCLUTfloat(cmsContext ContextID, cmsPipeline* lut)
{
const cmsFloat32Number Table[] = {
@@ -3161,12 +3154,12 @@ void AddIdentityCLUTfloat(cmsPipeline* lut)
1.0, 1.0, 1.0
};
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, cmsStageAllocCLutFloat(DbgThread(), 2, 3, 3, Table));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, cmsStageAllocCLutFloat(ContextID, 2, 3, 3, Table));
}
// Create a MPE for identity cmsFloat32Number CLUT
static
-void AddIdentityCLUT16(cmsPipeline* lut)
+void AddIdentityCLUT16(cmsContext ContextID, cmsPipeline* lut)
{
const cmsUInt16Number Table[] = {
@@ -3184,30 +3177,30 @@ void AddIdentityCLUT16(cmsPipeline* lut)
};
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, cmsStageAllocCLut16bit(DbgThread(), 2, 3, 3, Table));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, cmsStageAllocCLut16bit(ContextID, 2, 3, 3, Table));
}
// Create a 3 fn identity curves
static
-void Add3GammaCurves(cmsPipeline* lut, cmsFloat64Number Curve)
+void Add3GammaCurves(cmsContext ContextID, cmsPipeline* lut, cmsFloat64Number Curve)
{
- cmsToneCurve* id = cmsBuildGamma(DbgThread(), Curve);
+ cmsToneCurve* id = cmsBuildGamma(ContextID, Curve);
cmsToneCurve* id3[3];
id3[0] = id;
id3[1] = id;
id3[2] = id;
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, cmsStageAllocToneCurves(DbgThread(), 3, id3));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, cmsStageAllocToneCurves(ContextID, 3, id3));
- cmsFreeToneCurve(DbgThread(), id);
+ cmsFreeToneCurve(ContextID, id);
}
static
-cmsInt32Number CheckFloatLUT(cmsPipeline* lut)
+cmsInt32Number CheckFloatLUT(cmsContext ContextID, cmsPipeline* lut)
{
cmsInt32Number n1, i, j;
cmsFloat32Number Inf[3], Outf[3];
@@ -3219,7 +3212,7 @@ cmsInt32Number CheckFloatLUT(cmsPipeline* lut)
cmsInt32Number af[3];
Inf[0] = Inf[1] = Inf[2] = (cmsFloat32Number) j / 65535.0F;
- cmsPipelineEvalFloat(DbgThread(), Inf, Outf, lut);
+ cmsPipelineEvalFloat(ContextID, Inf, Outf, lut);
af[0] = (cmsInt32Number) floor(Outf[0]*65535.0 + 0.5);
af[1] = (cmsInt32Number) floor(Outf[1]*65535.0 + 0.5);
@@ -3239,7 +3232,7 @@ cmsInt32Number CheckFloatLUT(cmsPipeline* lut)
static
-cmsInt32Number Check16LUT(cmsPipeline* lut)
+cmsInt32Number Check16LUT(cmsContext ContextID, cmsPipeline* lut)
{
cmsInt32Number n2, i, j;
cmsUInt16Number Inw[3], Outw[3];
@@ -3251,7 +3244,7 @@ cmsInt32Number Check16LUT(cmsPipeline* lut)
cmsInt32Number aw[3];
Inw[0] = Inw[1] = Inw[2] = (cmsUInt16Number) j;
- cmsPipelineEval16(DbgThread(), Inw, Outw, lut);
+ cmsPipelineEval16(ContextID, Inw, Outw, lut);
aw[0] = Outw[0];
aw[1] = Outw[1];
aw[2] = Outw[2];
@@ -3271,205 +3264,205 @@ cmsInt32Number Check16LUT(cmsPipeline* lut)
// Check any LUT that is linear
static
-cmsInt32Number CheckStagesLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages)
+cmsInt32Number CheckStagesLUT(cmsContext ContextID, cmsPipeline* lut, cmsInt32Number ExpectedStages)
{
cmsInt32Number nInpChans, nOutpChans, nStages;
- nInpChans = cmsPipelineInputChannels(DbgThread(), lut);
- nOutpChans = cmsPipelineOutputChannels(DbgThread(), lut);
- nStages = cmsPipelineStageCount(DbgThread(), lut);
+ nInpChans = cmsPipelineInputChannels(ContextID, lut);
+ nOutpChans = cmsPipelineOutputChannels(ContextID, lut);
+ nStages = cmsPipelineStageCount(ContextID, lut);
return (nInpChans == 3) && (nOutpChans == 3) && (nStages == ExpectedStages);
}
static
-cmsInt32Number CheckFullLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages)
+cmsInt32Number CheckFullLUT(cmsContext ContextID, cmsPipeline* lut, cmsInt32Number ExpectedStages)
{
- cmsInt32Number rc = CheckStagesLUT(lut, ExpectedStages) && Check16LUT(lut) && CheckFloatLUT(lut);
+ cmsInt32Number rc = CheckStagesLUT(ContextID, lut, ExpectedStages) && Check16LUT(ContextID, lut) && CheckFloatLUT(ContextID, lut);
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return rc;
}
static
-cmsInt32Number Check1StageLUT(void)
+cmsInt32Number Check1StageLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- return CheckFullLUT(lut, 1);
+ AddIdentityMatrix(ContextID, lut);
+ return CheckFullLUT(ContextID, lut, 1);
}
static
-cmsInt32Number Check2StageLUT(void)
+cmsInt32Number Check2StageLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- AddIdentityCLUTfloat(lut);
+ AddIdentityMatrix(ContextID, lut);
+ AddIdentityCLUTfloat(ContextID, lut);
- return CheckFullLUT(lut, 2);
+ return CheckFullLUT(ContextID, lut, 2);
}
static
-cmsInt32Number Check2Stage16LUT(void)
+cmsInt32Number Check2Stage16LUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- AddIdentityCLUT16(lut);
+ AddIdentityMatrix(ContextID, lut);
+ AddIdentityCLUT16(ContextID, lut);
- return CheckFullLUT(lut, 2);
+ return CheckFullLUT(ContextID, lut, 2);
}
static
-cmsInt32Number Check3StageLUT(void)
+cmsInt32Number Check3StageLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- AddIdentityCLUTfloat(lut);
- Add3GammaCurves(lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ AddIdentityCLUTfloat(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
- return CheckFullLUT(lut, 3);
+ return CheckFullLUT(ContextID, lut, 3);
}
static
-cmsInt32Number Check3Stage16LUT(void)
+cmsInt32Number Check3Stage16LUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- AddIdentityCLUT16(lut);
- Add3GammaCurves(lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ AddIdentityCLUT16(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
- return CheckFullLUT(lut, 3);
+ return CheckFullLUT(ContextID, lut, 3);
}
static
-cmsInt32Number Check4StageLUT(void)
+cmsInt32Number Check4StageLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- AddIdentityCLUTfloat(lut);
- Add3GammaCurves(lut, 1.0);
- AddIdentityMatrix(lut);
+ AddIdentityMatrix(ContextID, lut);
+ AddIdentityCLUTfloat(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
- return CheckFullLUT(lut, 4);
+ return CheckFullLUT(ContextID, lut, 4);
}
static
-cmsInt32Number Check4Stage16LUT(void)
+cmsInt32Number Check4Stage16LUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- AddIdentityCLUT16(lut);
- Add3GammaCurves(lut, 1.0);
- AddIdentityMatrix(lut);
+ AddIdentityMatrix(ContextID, lut);
+ AddIdentityCLUT16(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
- return CheckFullLUT(lut, 4);
+ return CheckFullLUT(ContextID, lut, 4);
}
static
-cmsInt32Number Check5StageLUT(void)
+cmsInt32Number Check5StageLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- AddIdentityCLUTfloat(lut);
- Add3GammaCurves(lut, 1.0);
- AddIdentityMatrix(lut);
- Add3GammaCurves(lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ AddIdentityCLUTfloat(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
- return CheckFullLUT(lut, 5);
+ return CheckFullLUT(ContextID, lut, 5);
}
static
-cmsInt32Number Check5Stage16LUT(void)
+cmsInt32Number Check5Stage16LUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- AddIdentityCLUT16(lut);
- Add3GammaCurves(lut, 1.0);
- AddIdentityMatrix(lut);
- Add3GammaCurves(lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ AddIdentityCLUT16(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
- return CheckFullLUT(lut, 5);
+ return CheckFullLUT(ContextID, lut, 5);
}
static
-cmsInt32Number Check6StageLUT(void)
+cmsInt32Number Check6StageLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- Add3GammaCurves(lut, 1.0);
- AddIdentityCLUTfloat(lut);
- Add3GammaCurves(lut, 1.0);
- AddIdentityMatrix(lut);
- Add3GammaCurves(lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
+ AddIdentityCLUTfloat(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
- return CheckFullLUT(lut, 6);
+ return CheckFullLUT(ContextID, lut, 6);
}
static
-cmsInt32Number Check6Stage16LUT(void)
+cmsInt32Number Check6Stage16LUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
- AddIdentityMatrix(lut);
- Add3GammaCurves(lut, 1.0);
- AddIdentityCLUT16(lut);
- Add3GammaCurves(lut, 1.0);
- AddIdentityMatrix(lut);
- Add3GammaCurves(lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
+ AddIdentityCLUT16(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
+ AddIdentityMatrix(ContextID, lut);
+ Add3GammaCurves(ContextID, lut, 1.0);
- return CheckFullLUT(lut, 6);
+ return CheckFullLUT(ContextID, lut, 6);
}
static
-cmsInt32Number CheckLab2LabLUT(void)
+cmsInt32Number CheckLab2LabLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
cmsInt32Number rc;
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, _cmsStageAllocLab2XYZ(DbgThread()));
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, _cmsStageAllocXYZ2Lab(DbgThread()));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, _cmsStageAllocLab2XYZ(ContextID));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, _cmsStageAllocXYZ2Lab(ContextID));
- rc = CheckFloatLUT(lut) && CheckStagesLUT(lut, 2);
+ rc = CheckFloatLUT(ContextID, lut) && CheckStagesLUT(ContextID, lut, 2);
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return rc;
}
static
-cmsInt32Number CheckXYZ2XYZLUT(void)
+cmsInt32Number CheckXYZ2XYZLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
cmsInt32Number rc;
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, _cmsStageAllocXYZ2Lab(DbgThread()));
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, _cmsStageAllocLab2XYZ(DbgThread()));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, _cmsStageAllocXYZ2Lab(ContextID));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, _cmsStageAllocLab2XYZ(ContextID));
- rc = CheckFloatLUT(lut) && CheckStagesLUT(lut, 2);
+ rc = CheckFloatLUT(ContextID, lut) && CheckStagesLUT(ContextID, lut, 2);
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return rc;
}
@@ -3477,26 +3470,26 @@ cmsInt32Number CheckXYZ2XYZLUT(void)
static
-cmsInt32Number CheckLab2LabMatLUT(void)
+cmsInt32Number CheckLab2LabMatLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
cmsInt32Number rc;
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, _cmsStageAllocLab2XYZ(DbgThread()));
- AddIdentityMatrix(lut);
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, _cmsStageAllocXYZ2Lab(DbgThread()));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, _cmsStageAllocLab2XYZ(ContextID));
+ AddIdentityMatrix(ContextID, lut);
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, _cmsStageAllocXYZ2Lab(ContextID));
- rc = CheckFloatLUT(lut) && CheckStagesLUT(lut, 3);
+ rc = CheckFloatLUT(ContextID, lut) && CheckStagesLUT(ContextID, lut, 3);
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return rc;
}
static
-cmsInt32Number CheckNamedColorLUT(void)
+cmsInt32Number CheckNamedColorLUT(cmsContext ContextID)
{
- cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ cmsPipeline* lut = cmsPipelineAlloc(ContextID, 3, 3);
cmsNAMEDCOLORLIST* nc;
cmsInt32Number i,j, rc = 1, n2;
cmsUInt16Number PCS[3];
@@ -3506,7 +3499,7 @@ cmsInt32Number CheckNamedColorLUT(void)
- nc = cmsAllocNamedColorList(DbgThread(), 256, 3, "pre", "post");
+ nc = cmsAllocNamedColorList(ContextID, 256, 3, "pre", "post");
if (nc == NULL) return 0;
for (i=0; i < 256; i++) {
@@ -3515,12 +3508,12 @@ cmsInt32Number CheckNamedColorLUT(void)
Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = (cmsUInt16Number) i;
sprintf(Name, "#%d", i);
- if (!cmsAppendNamedColor(DbgThread(), nc, Name, PCS, Colorant)) { rc = 0; break; }
+ if (!cmsAppendNamedColor(ContextID, nc, Name, PCS, Colorant)) { rc = 0; break; }
}
- cmsPipelineInsertStage(DbgThread(), lut, cmsAT_END, _cmsStageAllocNamedColor(DbgThread(), nc, FALSE));
+ cmsPipelineInsertStage(ContextID, lut, cmsAT_END, _cmsStageAllocNamedColor(ContextID, nc, FALSE));
- cmsFreeNamedColorList(DbgThread(), nc);
+ cmsFreeNamedColorList(ContextID, nc);
if (rc == 0) return 0;
n2=0;
@@ -3529,7 +3522,7 @@ cmsInt32Number CheckNamedColorLUT(void)
Inw[0] = (cmsUInt16Number) j;
- cmsPipelineEval16(DbgThread(), Inw, Outw, lut);
+ cmsPipelineEval16(ContextID, Inw, Outw, lut);
for (i=0; i < 3; i++) {
if (Outw[i] != j) {
@@ -3539,7 +3532,7 @@ cmsInt32Number CheckNamedColorLUT(void)
}
- cmsPipelineFree(DbgThread(), lut);
+ cmsPipelineFree(ContextID, lut);
return (n2 == 0);
}
@@ -3550,7 +3543,7 @@ cmsInt32Number CheckNamedColorLUT(void)
// A lightweight test of multilocalized unicode structures.
static
-cmsInt32Number CheckMLU(void)
+cmsInt32Number CheckMLU(cmsContext ContextID)
{
cmsMLU* mlu, *mlu2, *mlu3;
char Buffer[256], Buffer2[256];
@@ -3559,40 +3552,40 @@ cmsInt32Number CheckMLU(void)
cmsHPROFILE h= NULL;
// Allocate a MLU structure, no preferred size
- mlu = cmsMLUalloc(DbgThread(), 0);
+ mlu = cmsMLUalloc(ContextID, 0);
// Add some localizations
- cmsMLUsetWide(DbgThread(), mlu, "en", "US", L"Hello, world");
- cmsMLUsetWide(DbgThread(), mlu, "es", "ES", L"Hola, mundo");
- cmsMLUsetWide(DbgThread(), mlu, "fr", "FR", L"Bonjour, le monde");
- cmsMLUsetWide(DbgThread(), mlu, "ca", "CA", L"Hola, mon");
+ cmsMLUsetWide(ContextID, mlu, "en", "US", L"Hello, world");
+ cmsMLUsetWide(ContextID, mlu, "es", "ES", L"Hola, mundo");
+ cmsMLUsetWide(ContextID, mlu, "fr", "FR", L"Bonjour, le monde");
+ cmsMLUsetWide(ContextID, mlu, "ca", "CA", L"Hola, mon");
// Check the returned string for each language
- cmsMLUgetASCII(DbgThread(), mlu, "en", "US", Buffer, 256);
+ cmsMLUgetASCII(ContextID, mlu, "en", "US", Buffer, 256);
if (strcmp(Buffer, "Hello, world") != 0) rc = 0;
- cmsMLUgetASCII(DbgThread(), mlu, "es", "ES", Buffer, 256);
+ cmsMLUgetASCII(ContextID, mlu, "es", "ES", Buffer, 256);
if (strcmp(Buffer, "Hola, mundo") != 0) rc = 0;
- cmsMLUgetASCII(DbgThread(), mlu, "fr", "FR", Buffer, 256);
+ cmsMLUgetASCII(ContextID, mlu, "fr", "FR", Buffer, 256);
if (strcmp(Buffer, "Bonjour, le monde") != 0) rc = 0;
- cmsMLUgetASCII(DbgThread(), mlu, "ca", "CA", Buffer, 256);
+ cmsMLUgetASCII(ContextID, mlu, "ca", "CA", Buffer, 256);
if (strcmp(Buffer, "Hola, mon") != 0) rc = 0;
if (rc == 0)
Fail("Unexpected string '%s'", Buffer);
// So far, so good.
- cmsMLUfree(DbgThread(), mlu);
+ cmsMLUfree(ContextID, mlu);
// Now for performance, allocate an empty struct
- mlu = cmsMLUalloc(DbgThread(), 0);
+ mlu = cmsMLUalloc(ContextID, 0);
// Fill it with several thousands of different lenguages
for (i=0; i < 4096; i++) {
@@ -3604,14 +3597,14 @@ cmsInt32Number CheckMLU(void)
Lang[2] = 0;
sprintf(Buffer, "String #%i", i);
- cmsMLUsetASCII(DbgThread(), mlu, Lang, Lang, Buffer);
+ cmsMLUsetASCII(ContextID, mlu, Lang, Lang, Buffer);
}
// Duplicate it
- mlu2 = cmsMLUdup(DbgThread(), mlu);
+ mlu2 = cmsMLUdup(ContextID, mlu);
// Get rid of original
- cmsMLUfree(DbgThread(), mlu);
+ cmsMLUfree(ContextID, mlu);
// Check all is still in place
for (i=0; i < 4096; i++) {
@@ -3622,7 +3615,7 @@ cmsInt32Number CheckMLU(void)
Lang[1] = (char)(i / 255);
Lang[2] = 0;
- cmsMLUgetASCII(DbgThread(), mlu2, Lang, Lang, Buffer2, 256);
+ cmsMLUgetASCII(ContextID, mlu2, Lang, Lang, Buffer2, 256);
sprintf(Buffer, "String #%i", i);
if (strcmp(Buffer, Buffer2) != 0) { rc = 0; break; }
@@ -3633,18 +3626,18 @@ cmsInt32Number CheckMLU(void)
// Check profile IO
- h = cmsOpenProfileFromFile(DbgThread(), "mlucheck.icc", "w");
+ h = cmsOpenProfileFromFile(ContextID, "mlucheck.icc", "w");
- cmsSetProfileVersion(DbgThread(), h, 4.3);
+ cmsSetProfileVersion(ContextID, h, 4.3);
- cmsWriteTag(DbgThread(), h, cmsSigProfileDescriptionTag, mlu2);
- cmsCloseProfile(DbgThread(), h);
- cmsMLUfree(DbgThread(), mlu2);
+ cmsWriteTag(ContextID, h, cmsSigProfileDescriptionTag, mlu2);
+ cmsCloseProfile(ContextID, h);
+ cmsMLUfree(ContextID, mlu2);
- h = cmsOpenProfileFromFile(DbgThread(), "mlucheck.icc", "r");
+ h = cmsOpenProfileFromFile(ContextID, "mlucheck.icc", "r");
- mlu3 = (cmsMLU *) cmsReadTag(DbgThread(), h, cmsSigProfileDescriptionTag);
+ mlu3 = (cmsMLU *) cmsReadTag(ContextID, h, cmsSigProfileDescriptionTag);
if (mlu3 == NULL) { Fail("Profile didn't get the MLU\n"); rc = 0; goto Error; }
// Check all is still in place
@@ -3656,7 +3649,7 @@ cmsInt32Number CheckMLU(void)
Lang[1] = (char) (i / 255);
Lang[2] = 0;
- cmsMLUgetASCII(DbgThread(), mlu3, Lang, Lang, Buffer2, 256);
+ cmsMLUgetASCII(ContextID, mlu3, Lang, Lang, Buffer2, 256);
sprintf(Buffer, "String #%i", i);
if (strcmp(Buffer, Buffer2) != 0) { rc = 0; break; }
@@ -3666,7 +3659,7 @@ cmsInt32Number CheckMLU(void)
Error:
- if (h != NULL) cmsCloseProfile(DbgThread(), h);
+ if (h != NULL) cmsCloseProfile(ContextID, h);
remove("mlucheck.icc");
return rc;
@@ -3675,7 +3668,7 @@ Error:
// A lightweight test of named color structures.
static
-cmsInt32Number CheckNamedColorList(void)
+cmsInt32Number CheckNamedColorList(cmsContext ContextID)
{
cmsNAMEDCOLORLIST* nc = NULL, *nc2;
cmsInt32Number i, j, rc=1;
@@ -3687,7 +3680,7 @@ cmsInt32Number CheckNamedColorList(void)
cmsUInt16Number CheckColorant[cmsMAXCHANNELS];
cmsHPROFILE h;
- nc = cmsAllocNamedColorList(DbgThread(), 0, 4, "prefix", "suffix");
+ nc = cmsAllocNamedColorList(ContextID, 0, 4, "prefix", "suffix");
if (nc == NULL) return 0;
for (i=0; i < 4096; i++) {
@@ -3697,7 +3690,7 @@ cmsInt32Number CheckNamedColorList(void)
Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = (cmsUInt16Number) (4096 - i);
sprintf(Name, "#%d", i);
- if (!cmsAppendNamedColor(DbgThread(), nc, Name, PCS, Colorant)) { rc = 0; break; }
+ if (!cmsAppendNamedColor(ContextID, nc, Name, PCS, Colorant)) { rc = 0; break; }
}
for (i=0; i < 4096; i++) {
@@ -3706,7 +3699,7 @@ cmsInt32Number CheckNamedColorList(void)
CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = (cmsUInt16Number) (4096 - i);
sprintf(CheckName, "#%d", i);
- if (!cmsNamedColorInfo(DbgThread(), nc, i, Name, NULL, NULL, PCS, Colorant)) { rc = 0; goto Error; }
+ if (!cmsNamedColorInfo(ContextID, nc, i, Name, NULL, NULL, PCS, Colorant)) { rc = 0; goto Error; }
for (j=0; j < 3; j++) {
@@ -3720,19 +3713,19 @@ cmsInt32Number CheckNamedColorList(void)
if (strcmp(Name, CheckName) != 0) {rc = 0; Fail("Invalid Name"); goto Error; };
}
- h = cmsOpenProfileFromFile(DbgThread(), "namedcol.icc", "w");
+ h = cmsOpenProfileFromFile(ContextID, "namedcol.icc", "w");
if (h == NULL) return 0;
- if (!cmsWriteTag(DbgThread(), h, cmsSigNamedColor2Tag, nc)) return 0;
- cmsCloseProfile(DbgThread(), h);
- cmsFreeNamedColorList(DbgThread(), nc);
+ if (!cmsWriteTag(ContextID, h, cmsSigNamedColor2Tag, nc)) return 0;
+ cmsCloseProfile(ContextID, h);
+ cmsFreeNamedColorList(ContextID, nc);
nc = NULL;
- h = cmsOpenProfileFromFile(DbgThread(), "namedcol.icc", "r");
- nc2 = (cmsNAMEDCOLORLIST *) cmsReadTag(DbgThread(), h, cmsSigNamedColor2Tag);
+ h = cmsOpenProfileFromFile(ContextID, "namedcol.icc", "r");
+ nc2 = (cmsNAMEDCOLORLIST *) cmsReadTag(ContextID, h, cmsSigNamedColor2Tag);
- if (cmsNamedColorCount(DbgThread(), nc2) != 4096) { rc = 0; Fail("Invalid count"); goto Error; }
+ if (cmsNamedColorCount(ContextID, nc2) != 4096) { rc = 0; Fail("Invalid count"); goto Error; }
- i = cmsNamedColorIndex(DbgThread(), nc2, "#123");
+ i = cmsNamedColorIndex(ContextID, nc2, "#123");
if (i != 123) { rc = 0; Fail("Invalid index"); goto Error; }
@@ -3742,7 +3735,7 @@ cmsInt32Number CheckNamedColorList(void)
CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = (cmsUInt16Number) (4096 - i);
sprintf(CheckName, "#%d", i);
- if (!cmsNamedColorInfo(DbgThread(), nc2, i, Name, NULL, NULL, PCS, Colorant)) { rc = 0; goto Error; }
+ if (!cmsNamedColorInfo(ContextID, nc2, i, Name, NULL, NULL, PCS, Colorant)) { rc = 0; goto Error; }
for (j=0; j < 3; j++) {
@@ -3756,11 +3749,11 @@ cmsInt32Number CheckNamedColorList(void)
if (strcmp(Name, CheckName) != 0) {rc = 0; Fail("Invalid Name"); goto Error; };
}
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
remove("namedcol.icc");
Error:
- if (nc != NULL) cmsFreeNamedColorList(DbgThread(), nc);
+ if (nc != NULL) cmsFreeNamedColorList(ContextID, nc);
return rc;
}
@@ -3813,9 +3806,9 @@ void CheckSingleFormatter16(cmsContext id, cmsUInt32Number Type, const char* Tex
Values[i] <<= 8;
}
- b.Fmt16(DbgThread(), &info, Values, Buffer, 2);
+ b.Fmt16(id, &info, Values, Buffer, 2);
memset(Values, 0, sizeof(Values));
- f.Fmt16(DbgThread(), &info, Values, Buffer, 2);
+ f.Fmt16(id, &info, Values, Buffer, 2);
for (i=0; i < nChannels; i++) {
if (bytes == 1)
@@ -3834,8 +3827,8 @@ void CheckSingleFormatter16(cmsContext id, cmsUInt32Number Type, const char* Tex
Values[i] <<= 8;
}
- b.Fmt16(DbgThread(), &info, Values, Buffer, 1);
- f.Fmt16(DbgThread(), &info, Values, Buffer, 1);
+ b.Fmt16(id, &info, Values, Buffer, 1);
+ f.Fmt16(id, &info, Values, Buffer, 1);
return;
}
}
@@ -3847,7 +3840,7 @@ void CheckSingleFormatter16(cmsContext id, cmsUInt32Number Type, const char* Tex
// Check all formatters
static
-cmsInt32Number CheckFormatters16(void)
+cmsInt32Number CheckFormatters16(cmsContext ContextID)
{
FormatterFailed = FALSE;
@@ -4028,7 +4021,7 @@ cmsInt32Number CheckFormatters16(void)
#undef C
static
-void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text)
+void CheckSingleFormatterFloat(cmsContext ContextID, cmsUInt32Number Type, const char* Text)
{
cmsFloat32Number Values[cmsMAXCHANNELS];
cmsUInt8Number Buffer[1024];
@@ -4043,16 +4036,16 @@ void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text)
info.OutputFormat = info.InputFormat = Type;
// Go forth and back
- f = _cmsGetFormatter(0, Type, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT);
- b = _cmsGetFormatter(0, Type, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT);
+ f = _cmsGetFormatter(ContextID, Type, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT);
+ b = _cmsGetFormatter(ContextID, Type, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT);
if (f.FmtFloat == NULL || b.FmtFloat == NULL) {
Fail("no formatter for %s", Text);
FormatterFailed = TRUE;
// Useful for debug
- f = _cmsGetFormatter(0, Type, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT);
- b = _cmsGetFormatter(0, Type, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT);
+ f = _cmsGetFormatter(ContextID, Type, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT);
+ b = _cmsGetFormatter(ContextID, Type, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT);
return;
}
@@ -4064,9 +4057,9 @@ void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text)
Values[i] = (cmsFloat32Number) (i+j);
}
- b.FmtFloat(DbgThread(), &info, Values, Buffer, 1);
+ b.FmtFloat(ContextID, &info, Values, Buffer, 1);
memset(Values, 0, sizeof(Values));
- f.FmtFloat(DbgThread(), &info, Values, Buffer, 1);
+ f.FmtFloat(ContextID, &info, Values, Buffer, 1);
for (i=0; i < nChannels; i++) {
@@ -4082,18 +4075,18 @@ void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text)
Values[i] = (cmsFloat32Number) (i+j);
}
- b.FmtFloat(DbgThread(), &info, Values, Buffer, 1);
- f.FmtFloat(DbgThread(), &info, Values, Buffer, 1);
+ b.FmtFloat(ContextID, &info, Values, Buffer, 1);
+ f.FmtFloat(ContextID, &info, Values, Buffer, 1);
return;
}
}
}
}
-#define C(a) CheckSingleFormatterFloat(a, #a)
+#define C(a) CheckSingleFormatterFloat(ContextID, a, #a)
static
-cmsInt32Number CheckFormattersFloat(void)
+cmsInt32Number CheckFormattersFloat(cmsContext ContextID)
{
FormatterFailed = FALSE;
@@ -4144,7 +4137,7 @@ cmsInt32Number CheckFormattersFloat(void)
// Check half float
#define my_isfinite(x) ((x) != (x))
static
-cmsInt32Number CheckFormattersHalf(void)
+cmsInt32Number CheckFormattersHalf(cmsContext ContextID)
{
int i, j;
@@ -4170,7 +4163,7 @@ cmsInt32Number CheckFormattersHalf(void)
#endif
static
-cmsInt32Number CheckOneRGB(cmsHTRANSFORM xform, cmsUInt16Number R, cmsUInt16Number G, cmsUInt16Number B, cmsUInt16Number Ro, cmsUInt16Number Go, cmsUInt16Number Bo)
+cmsInt32Number CheckOneRGB(cmsContext ContextID, cmsHTRANSFORM xform, cmsUInt16Number R, cmsUInt16Number G, cmsUInt16Number B, cmsUInt16Number Ro, cmsUInt16Number Go, cmsUInt16Number Bo)
{
cmsUInt16Number RGB[3];
cmsUInt16Number Out[3];
@@ -4179,7 +4172,7 @@ cmsInt32Number CheckOneRGB(cmsHTRANSFORM xform, cmsUInt16Number R, cmsUInt16Numb
RGB[1] = G;
RGB[2] = B;
- cmsDoTransform(DbgThread(), xform, RGB, Out, 1);
+ cmsDoTransform(ContextID, xform, RGB, Out, 1);
return IsGoodWord("R", Ro , Out[0]) &&
IsGoodWord("G", Go , Out[1]) &&
@@ -4188,7 +4181,7 @@ cmsInt32Number CheckOneRGB(cmsHTRANSFORM xform, cmsUInt16Number R, cmsUInt16Numb
// Check known values going from sRGB to XYZ
static
-cmsInt32Number CheckOneRGB_double(cmsHTRANSFORM xform, cmsFloat64Number R, cmsFloat64Number G, cmsFloat64Number B, cmsFloat64Number Ro, cmsFloat64Number Go, cmsFloat64Number Bo)
+cmsInt32Number CheckOneRGB_double(cmsContext ContextID, cmsHTRANSFORM xform, cmsFloat64Number R, cmsFloat64Number G, cmsFloat64Number B, cmsFloat64Number Ro, cmsFloat64Number Go, cmsFloat64Number Bo)
{
cmsFloat64Number RGB[3];
cmsFloat64Number Out[3];
@@ -4197,7 +4190,7 @@ cmsInt32Number CheckOneRGB_double(cmsHTRANSFORM xform, cmsFloat64Number R, cmsFl
RGB[1] = G;
RGB[2] = B;
- cmsDoTransform(DbgThread(), xform, RGB, Out, 1);
+ cmsDoTransform(ContextID, xform, RGB, Out, 1);
return IsGoodVal("R", Ro , Out[0], 0.01) &&
IsGoodVal("G", Go , Out[1], 0.01) &&
@@ -4206,37 +4199,37 @@ cmsInt32Number CheckOneRGB_double(cmsHTRANSFORM xform, cmsFloat64Number R, cmsFl
static
-cmsInt32Number CheckChangeBufferFormat(void)
+cmsInt32Number CheckChangeBufferFormat(cmsContext ContextID)
{
- cmsHPROFILE hsRGB = cmsCreate_sRGBProfile(DbgThread());
+ cmsHPROFILE hsRGB = cmsCreate_sRGBProfile(ContextID);
cmsHTRANSFORM xform;
cmsHTRANSFORM xform2;
- xform = cmsCreateTransform(DbgThread(), hsRGB, TYPE_RGB_16, hsRGB, TYPE_RGB_16, INTENT_PERCEPTUAL, 0);
- cmsCloseProfile(DbgThread(), hsRGB);
+ xform = cmsCreateTransform(ContextID, hsRGB, TYPE_RGB_16, hsRGB, TYPE_RGB_16, INTENT_PERCEPTUAL, 0);
+ cmsCloseProfile(ContextID, hsRGB);
if (xform == NULL) return 0;
- if (!CheckOneRGB(xform, 0, 0, 0, 0, 0, 0)) return 0;
- if (!CheckOneRGB(xform, 120, 0, 0, 120, 0, 0)) return 0;
- if (!CheckOneRGB(xform, 0, 222, 255, 0, 222, 255)) return 0;
+ if (!CheckOneRGB(ContextID, xform, 0, 0, 0, 0, 0, 0)) return 0;
+ if (!CheckOneRGB(ContextID, xform, 120, 0, 0, 120, 0, 0)) return 0;
+ if (!CheckOneRGB(ContextID, xform, 0, 222, 255, 0, 222, 255)) return 0;
- xform2 = cmsCloneTransformChangingFormats(DbgThread(), xform, TYPE_BGR_16, TYPE_RGB_16);
+ xform2 = cmsCloneTransformChangingFormats(ContextID, xform, TYPE_BGR_16, TYPE_RGB_16);
if (!xform2) return 0;
- if (!CheckOneRGB(xform2, 0, 0, 123, 123, 0, 0)) return 0;
- if (!CheckOneRGB(xform2, 154, 234, 0, 0, 234, 154)) return 0;
+ if (!CheckOneRGB(ContextID, xform2, 0, 0, 123, 123, 0, 0)) return 0;
+ if (!CheckOneRGB(ContextID, xform2, 154, 234, 0, 0, 234, 154)) return 0;
- cmsDeleteTransform(DbgThread(),xform2);
- xform2 = cmsCloneTransformChangingFormats(DbgThread(), xform, TYPE_RGB_DBL, TYPE_RGB_DBL);
+ cmsDeleteTransform(ContextID,xform2);
+ xform2 = cmsCloneTransformChangingFormats(ContextID, xform, TYPE_RGB_DBL, TYPE_RGB_DBL);
if (!xform2) return 0;
- if (!CheckOneRGB_double(xform2, 0.20, 0, 0, 0.20, 0, 0)) return 0;
- if (!CheckOneRGB_double(xform2, 0, 0.9, 1, 0, 0.9, 1)) return 0;
+ if (!CheckOneRGB_double(ContextID, xform2, 0.20, 0, 0, 0.20, 0, 0)) return 0;
+ if (!CheckOneRGB_double(ContextID, xform2, 0, 0.9, 1, 0, 0.9, 1)) return 0;
- cmsDeleteTransform(DbgThread(),xform2);
- cmsDeleteTransform(DbgThread(),xform);
+ cmsDeleteTransform(ContextID,xform2);
+ cmsDeleteTransform(ContextID,xform);
return 1;
}
@@ -4245,7 +4238,7 @@ return 1;
// Write tag testbed ----------------------------------------------------------------------------------------
static
-cmsInt32Number CheckXYZ(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckXYZ(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsCIEXYZ XYZ, *Pt;
@@ -4255,10 +4248,10 @@ cmsInt32Number CheckXYZ(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignatu
case 1:
XYZ.X = 1.0; XYZ.Y = 1.1; XYZ.Z = 1.2;
- return cmsWriteTag(DbgThread(), hProfile, tag, &XYZ);
+ return cmsWriteTag(ContextID, hProfile, tag, &XYZ);
case 2:
- Pt = (cmsCIEXYZ *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsCIEXYZ *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
return IsGoodFixed15_16("X", 1.0, Pt ->X) &&
IsGoodFixed15_16("Y", 1.1, Pt->Y) &&
@@ -4271,7 +4264,7 @@ cmsInt32Number CheckXYZ(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignatu
static
-cmsInt32Number CheckGamma(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckGamma(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsToneCurve *g, *Pt;
cmsInt32Number rc;
@@ -4280,15 +4273,15 @@ cmsInt32Number CheckGamma(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSigna
case 1:
- g = cmsBuildGamma(DbgThread(), 1.0);
- rc = cmsWriteTag(DbgThread(), hProfile, tag, g);
- cmsFreeToneCurve(DbgThread(), g);
+ g = cmsBuildGamma(ContextID, 1.0);
+ rc = cmsWriteTag(ContextID, hProfile, tag, g);
+ cmsFreeToneCurve(ContextID, g);
return rc;
case 2:
- Pt = (cmsToneCurve *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsToneCurve *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
- return cmsIsToneCurveLinear(DbgThread(), Pt);
+ return cmsIsToneCurveLinear(ContextID, Pt);
default:
return 0;
@@ -4296,7 +4289,7 @@ cmsInt32Number CheckGamma(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSigna
}
static
-cmsInt32Number CheckTextSingle(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckTextSingle(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsMLU *m, *Pt;
cmsInt32Number rc;
@@ -4306,16 +4299,16 @@ cmsInt32Number CheckTextSingle(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTag
switch (Pass) {
case 1:
- m = cmsMLUalloc(DbgThread(), 0);
- cmsMLUsetASCII(DbgThread(), m, cmsNoLanguage, cmsNoCountry, "Test test");
- rc = cmsWriteTag(DbgThread(), hProfile, tag, m);
- cmsMLUfree(DbgThread(), m);
+ m = cmsMLUalloc(ContextID, 0);
+ cmsMLUsetASCII(ContextID, m, cmsNoLanguage, cmsNoCountry, "Test test");
+ rc = cmsWriteTag(ContextID, hProfile, tag, m);
+ cmsMLUfree(ContextID, m);
return rc;
case 2:
- Pt = (cmsMLU *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsMLU *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
- cmsMLUgetASCII(DbgThread(), Pt, cmsNoLanguage, cmsNoCountry, Buffer, 256);
+ cmsMLUgetASCII(ContextID, Pt, cmsNoLanguage, cmsNoCountry, Buffer, 256);
if (strcmp(Buffer, "Test test") != 0) return FALSE;
return TRUE;
@@ -4326,7 +4319,7 @@ cmsInt32Number CheckTextSingle(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTag
static
-cmsInt32Number CheckText(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckText(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsMLU *m, *Pt;
cmsInt32Number rc;
@@ -4336,28 +4329,28 @@ cmsInt32Number CheckText(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignat
switch (Pass) {
case 1:
- m = cmsMLUalloc(DbgThread(), 0);
- cmsMLUsetASCII(DbgThread(), m, cmsNoLanguage, cmsNoCountry, "Test test");
- cmsMLUsetASCII(DbgThread(), m, "en", "US", "1 1 1 1");
- cmsMLUsetASCII(DbgThread(), m, "es", "ES", "2 2 2 2");
- cmsMLUsetASCII(DbgThread(), m, "ct", "ES", "3 3 3 3");
- cmsMLUsetASCII(DbgThread(), m, "en", "GB", "444444444");
- rc = cmsWriteTag(DbgThread(), hProfile, tag, m);
- cmsMLUfree(DbgThread(), m);
+ m = cmsMLUalloc(ContextID, 0);
+ cmsMLUsetASCII(ContextID, m, cmsNoLanguage, cmsNoCountry, "Test test");
+ cmsMLUsetASCII(ContextID, m, "en", "US", "1 1 1 1");
+ cmsMLUsetASCII(ContextID, m, "es", "ES", "2 2 2 2");
+ cmsMLUsetASCII(ContextID, m, "ct", "ES", "3 3 3 3");
+ cmsMLUsetASCII(ContextID, m, "en", "GB", "444444444");
+ rc = cmsWriteTag(ContextID, hProfile, tag, m);
+ cmsMLUfree(ContextID, m);
return rc;
case 2:
- Pt = (cmsMLU *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsMLU *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
- cmsMLUgetASCII(DbgThread(), Pt, cmsNoLanguage, cmsNoCountry, Buffer, 256);
+ cmsMLUgetASCII(ContextID, Pt, cmsNoLanguage, cmsNoCountry, Buffer, 256);
if (strcmp(Buffer, "Test test") != 0) return FALSE;
- cmsMLUgetASCII(DbgThread(), Pt, "en", "US", Buffer, 256);
+ cmsMLUgetASCII(ContextID, Pt, "en", "US", Buffer, 256);
if (strcmp(Buffer, "1 1 1 1") != 0) return FALSE;
- cmsMLUgetASCII(DbgThread(), Pt, "es", "ES", Buffer, 256);
+ cmsMLUgetASCII(ContextID, Pt, "es", "ES", Buffer, 256);
if (strcmp(Buffer, "2 2 2 2") != 0) return FALSE;
- cmsMLUgetASCII(DbgThread(), Pt, "ct", "ES", Buffer, 256);
+ cmsMLUgetASCII(ContextID, Pt, "ct", "ES", Buffer, 256);
if (strcmp(Buffer, "3 3 3 3") != 0) return FALSE;
- cmsMLUgetASCII(DbgThread(), Pt, "en", "GB", Buffer, 256);
+ cmsMLUgetASCII(ContextID, Pt, "en", "GB", Buffer, 256);
if (strcmp(Buffer, "444444444") != 0) return FALSE;
return TRUE;
@@ -4367,7 +4360,7 @@ cmsInt32Number CheckText(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignat
}
static
-cmsInt32Number CheckData(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckData(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsICCData *Pt;
cmsICCData d = { 1, 0, { '?' }};
@@ -4377,11 +4370,11 @@ cmsInt32Number CheckData(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSigna
switch (Pass) {
case 1:
- rc = cmsWriteTag(DbgThread(), hProfile, tag, &d);
+ rc = cmsWriteTag(ContextID, hProfile, tag, &d);
return rc;
case 2:
- Pt = (cmsICCData *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsICCData *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
return (Pt ->data[0] == '?') && (Pt ->flag == 0) && (Pt ->len == 1);
@@ -4392,7 +4385,7 @@ cmsInt32Number CheckData(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSigna
static
-cmsInt32Number CheckSignature(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckSignature(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsTagSignature *Pt, Holder;
@@ -4400,10 +4393,10 @@ cmsInt32Number CheckSignature(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTag
case 1:
Holder = (cmsTagSignature) cmsSigPerceptualReferenceMediumGamut;
- return cmsWriteTag(DbgThread(), hProfile, tag, &Holder);
+ return cmsWriteTag(ContextID, hProfile, tag, &Holder);
case 2:
- Pt = (cmsTagSignature *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsTagSignature *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
return *Pt == cmsSigPerceptualReferenceMediumGamut;
@@ -4414,7 +4407,7 @@ cmsInt32Number CheckSignature(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTag
static
-cmsInt32Number CheckDateTime(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckDateTime(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
struct tm *Pt, Holder;
@@ -4428,10 +4421,10 @@ cmsInt32Number CheckDateTime(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagS
Holder.tm_mday = 4;
Holder.tm_mon = 5;
Holder.tm_year = 2009 - 1900;
- return cmsWriteTag(DbgThread(), hProfile, tag, &Holder);
+ return cmsWriteTag(ContextID, hProfile, tag, &Holder);
case 2:
- Pt = (struct tm *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (struct tm *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
return (Pt ->tm_hour == 1 &&
@@ -4449,7 +4442,7 @@ cmsInt32Number CheckDateTime(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagS
static
-cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag, cmsInt32Number max_check, cmsBool colorant_check)
+cmsInt32Number CheckNamedColor(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag, cmsInt32Number max_check, cmsBool colorant_check)
{
cmsNAMEDCOLORLIST* nc;
cmsInt32Number i, j, rc;
@@ -4464,7 +4457,7 @@ cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTa
case 1:
- nc = cmsAllocNamedColorList(DbgThread(), 0, 4, "prefix", "suffix");
+ nc = cmsAllocNamedColorList(ContextID, 0, 4, "prefix", "suffix");
if (nc == NULL) return 0;
for (i=0; i < max_check; i++) {
@@ -4473,16 +4466,16 @@ cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTa
Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = (cmsUInt16Number) (max_check - i);
sprintf(Name, "#%d", i);
- if (!cmsAppendNamedColor(DbgThread(), nc, Name, PCS, Colorant)) { Fail("Couldn't append named color"); return 0; }
+ if (!cmsAppendNamedColor(ContextID, nc, Name, PCS, Colorant)) { Fail("Couldn't append named color"); return 0; }
}
- rc = cmsWriteTag(DbgThread(), hProfile, tag, nc);
- cmsFreeNamedColorList(DbgThread(), nc);
+ rc = cmsWriteTag(ContextID, hProfile, tag, nc);
+ cmsFreeNamedColorList(ContextID, nc);
return rc;
case 2:
- nc = (cmsNAMEDCOLORLIST *) cmsReadTag(DbgThread(), hProfile, tag);
+ nc = (cmsNAMEDCOLORLIST *) cmsReadTag(ContextID, hProfile, tag);
if (nc == NULL) return 0;
for (i=0; i < max_check; i++) {
@@ -4491,7 +4484,7 @@ cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTa
CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = (cmsUInt16Number) (max_check - i);
sprintf(CheckName, "#%d", i);
- if (!cmsNamedColorInfo(DbgThread(), nc, i, Name, NULL, NULL, PCS, Colorant)) { Fail("Invalid string"); return 0; }
+ if (!cmsNamedColorInfo(ContextID, nc, i, Name, NULL, NULL, PCS, Colorant)) { Fail("Invalid string"); return 0; }
for (j=0; j < 3; j++) {
@@ -4517,7 +4510,7 @@ cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTa
static
-cmsInt32Number CheckLUT(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckLUT(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsPipeline* Lut, *Pt;
cmsInt32Number rc;
@@ -4527,24 +4520,24 @@ cmsInt32Number CheckLUT(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignat
case 1:
- Lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ Lut = cmsPipelineAlloc(ContextID, 3, 3);
if (Lut == NULL) return 0;
// Create an identity LUT
- cmsPipelineInsertStage(DbgThread(), Lut, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(DbgThread(), 3));
- cmsPipelineInsertStage(DbgThread(), Lut, cmsAT_END, _cmsStageAllocIdentityCLut(DbgThread(), 3));
- cmsPipelineInsertStage(DbgThread(), Lut, cmsAT_END, _cmsStageAllocIdentityCurves(DbgThread(), 3));
+ cmsPipelineInsertStage(ContextID, Lut, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, 3));
+ cmsPipelineInsertStage(ContextID, Lut, cmsAT_END, _cmsStageAllocIdentityCLut(ContextID, 3));
+ cmsPipelineInsertStage(ContextID, Lut, cmsAT_END, _cmsStageAllocIdentityCurves(ContextID, 3));
- rc = cmsWriteTag(DbgThread(), hProfile, tag, Lut);
- cmsPipelineFree(DbgThread(), Lut);
+ rc = cmsWriteTag(ContextID, hProfile, tag, Lut);
+ cmsPipelineFree(ContextID, Lut);
return rc;
case 2:
- Pt = (cmsPipeline *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsPipeline *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
// Transform values, check for identity
- return Check16LUT(Pt);
+ return Check16LUT(ContextID, Pt);
default:
return 0;
@@ -4552,7 +4545,7 @@ cmsInt32Number CheckLUT(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignat
}
static
-cmsInt32Number CheckCHAD(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckCHAD(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsFloat64Number *Pt;
cmsFloat64Number CHAD[] = { 0, .1, .2, .3, .4, .5, .6, .7, .8 };
@@ -4561,11 +4554,11 @@ cmsInt32Number CheckCHAD(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSigna
switch (Pass) {
case 1:
- return cmsWriteTag(DbgThread(), hProfile, tag, CHAD);
+ return cmsWriteTag(ContextID, hProfile, tag, CHAD);
case 2:
- Pt = (cmsFloat64Number *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsFloat64Number *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
for (i=0; i < 9; i++) {
@@ -4580,18 +4573,18 @@ cmsInt32Number CheckCHAD(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSigna
}
static
-cmsInt32Number CheckChromaticity(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckChromaticity(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsCIExyYTRIPLE *Pt, c = { {0, .1, 1 }, { .3, .4, 1 }, { .6, .7, 1 }};
switch (Pass) {
case 1:
- return cmsWriteTag(DbgThread(), hProfile, tag, &c);
+ return cmsWriteTag(ContextID, hProfile, tag, &c);
case 2:
- Pt = (cmsCIExyYTRIPLE *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsCIExyYTRIPLE *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
if (!IsGoodFixed15_16("xyY", Pt ->Red.x, c.Red.x)) return 0;
@@ -4609,7 +4602,7 @@ cmsInt32Number CheckChromaticity(cmsInt32Number Pass, cmsHPROFILE hProfile, cms
static
-cmsInt32Number CheckColorantOrder(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckColorantOrder(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsUInt8Number *Pt, c[cmsMAXCHANNELS];
cmsInt32Number i;
@@ -4618,11 +4611,11 @@ cmsInt32Number CheckColorantOrder(cmsInt32Number Pass, cmsHPROFILE hProfile, cm
case 1:
for (i=0; i < cmsMAXCHANNELS; i++) c[i] = (cmsUInt8Number) (cmsMAXCHANNELS - i - 1);
- return cmsWriteTag(DbgThread(), hProfile, tag, c);
+ return cmsWriteTag(ContextID, hProfile, tag, c);
case 2:
- Pt = (cmsUInt8Number *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsUInt8Number *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
for (i=0; i < cmsMAXCHANNELS; i++) {
@@ -4636,7 +4629,7 @@ cmsInt32Number CheckColorantOrder(cmsInt32Number Pass, cmsHPROFILE hProfile, cm
}
static
-cmsInt32Number CheckMeasurement(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckMeasurement(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsICCMeasurementConditions *Pt, m;
@@ -4650,11 +4643,11 @@ cmsInt32Number CheckMeasurement(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsT
m.Geometry = 1;
m.IlluminantType = cmsILLUMINANT_TYPE_D50;
m.Observer = 1;
- return cmsWriteTag(DbgThread(), hProfile, tag, &m);
+ return cmsWriteTag(ContextID, hProfile, tag, &m);
case 2:
- Pt = (cmsICCMeasurementConditions *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsICCMeasurementConditions *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
if (!IsGoodFixed15_16("Backing", Pt ->Backing.X, 0.1)) return 0;
@@ -4674,7 +4667,7 @@ cmsInt32Number CheckMeasurement(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsT
static
-cmsInt32Number CheckUcrBg(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckUcrBg(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsUcrBg *Pt, m;
cmsInt32Number rc;
@@ -4683,22 +4676,22 @@ cmsInt32Number CheckUcrBg(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSign
switch (Pass) {
case 1:
- m.Ucr = cmsBuildGamma(DbgThread(), 2.4);
- m.Bg = cmsBuildGamma(DbgThread(), -2.2);
- m.Desc = cmsMLUalloc(DbgThread(), 1);
- cmsMLUsetASCII(DbgThread(), m.Desc, cmsNoLanguage, cmsNoCountry, "test UCR/BG");
- rc = cmsWriteTag(DbgThread(), hProfile, tag, &m);
- cmsMLUfree(DbgThread(), m.Desc);
- cmsFreeToneCurve(DbgThread(), m.Bg);
- cmsFreeToneCurve(DbgThread(), m.Ucr);
+ m.Ucr = cmsBuildGamma(ContextID, 2.4);
+ m.Bg = cmsBuildGamma(ContextID, -2.2);
+ m.Desc = cmsMLUalloc(ContextID, 1);
+ cmsMLUsetASCII(ContextID, m.Desc, cmsNoLanguage, cmsNoCountry, "test UCR/BG");
+ rc = cmsWriteTag(ContextID, hProfile, tag, &m);
+ cmsMLUfree(ContextID, m.Desc);
+ cmsFreeToneCurve(ContextID, m.Bg);
+ cmsFreeToneCurve(ContextID, m.Ucr);
return rc;
case 2:
- Pt = (cmsUcrBg *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsUcrBg *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
- cmsMLUgetASCII(DbgThread(), Pt ->Desc, cmsNoLanguage, cmsNoCountry, Buffer, 256);
+ cmsMLUgetASCII(ContextID, Pt ->Desc, cmsNoLanguage, cmsNoCountry, Buffer, 256);
if (strcmp(Buffer, "test UCR/BG") != 0) return 0;
return 1;
@@ -4709,7 +4702,7 @@ cmsInt32Number CheckUcrBg(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSign
static
-cmsInt32Number CheckCRDinfo(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckCRDinfo(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsMLU *mlu;
char Buffer[256];
@@ -4718,41 +4711,41 @@ cmsInt32Number CheckCRDinfo(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSi
switch (Pass) {
case 1:
- mlu = cmsMLUalloc(DbgThread(), 5);
-
- cmsMLUsetWide(DbgThread(), mlu, "PS", "nm", L"test postscript");
- cmsMLUsetWide(DbgThread(), mlu, "PS", "#0", L"perceptual");
- cmsMLUsetWide(DbgThread(), mlu, "PS", "#1", L"relative_colorimetric");
- cmsMLUsetWide(DbgThread(), mlu, "PS", "#2", L"saturation");
- cmsMLUsetWide(DbgThread(), mlu, "PS", "#3", L"absolute_colorimetric");
- rc = cmsWriteTag(DbgThread(), hProfile, tag, mlu);
- cmsMLUfree(DbgThread(), mlu);
+ mlu = cmsMLUalloc(ContextID, 5);
+
+ cmsMLUsetWide(ContextID, mlu, "PS", "nm", L"test postscript");
+ cmsMLUsetWide(ContextID, mlu, "PS", "#0", L"perceptual");
+ cmsMLUsetWide(ContextID, mlu, "PS", "#1", L"relative_colorimetric");
+ cmsMLUsetWide(ContextID, mlu, "PS", "#2", L"saturation");
+ cmsMLUsetWide(ContextID, mlu, "PS", "#3", L"absolute_colorimetric");
+ rc = cmsWriteTag(ContextID, hProfile, tag, mlu);
+ cmsMLUfree(ContextID, mlu);
return rc;
case 2:
- mlu = (cmsMLU*) cmsReadTag(DbgThread(), hProfile, tag);
+ mlu = (cmsMLU*) cmsReadTag(ContextID, hProfile, tag);
if (mlu == NULL) return 0;
- cmsMLUgetASCII(DbgThread(), mlu, "PS", "nm", Buffer, 256);
+ cmsMLUgetASCII(ContextID, mlu, "PS", "nm", Buffer, 256);
if (strcmp(Buffer, "test postscript") != 0) return 0;
- cmsMLUgetASCII(DbgThread(), mlu, "PS", "#0", Buffer, 256);
+ cmsMLUgetASCII(ContextID, mlu, "PS", "#0", Buffer, 256);
if (strcmp(Buffer, "perceptual") != 0) return 0;
- cmsMLUgetASCII(DbgThread(), mlu, "PS", "#1", Buffer, 256);
+ cmsMLUgetASCII(ContextID, mlu, "PS", "#1", Buffer, 256);
if (strcmp(Buffer, "relative_colorimetric") != 0) return 0;
- cmsMLUgetASCII(DbgThread(), mlu, "PS", "#2", Buffer, 256);
+ cmsMLUgetASCII(ContextID, mlu, "PS", "#2", Buffer, 256);
if (strcmp(Buffer, "saturation") != 0) return 0;
- cmsMLUgetASCII(DbgThread(), mlu, "PS", "#3", Buffer, 256);
+ cmsMLUgetASCII(ContextID, mlu, "PS", "#3", Buffer, 256);
if (strcmp(Buffer, "absolute_colorimetric") != 0) return 0;
return 1;
@@ -4763,7 +4756,7 @@ cmsInt32Number CheckCRDinfo(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSi
static
-cmsToneCurve *CreateSegmentedCurve(void)
+cmsToneCurve *CreateSegmentedCurve(cmsContext ContextID)
{
cmsCurveSegment Seg[3];
cmsFloat32Number Sampled[2] = { 0, 1};
@@ -4790,12 +4783,12 @@ cmsToneCurve *CreateSegmentedCurve(void)
Seg[2].x0 = 1;
Seg[2].x1 = 1E22F;
- return cmsBuildSegmentedToneCurve(DbgThread(), 3, Seg);
+ return cmsBuildSegmentedToneCurve(ContextID, 3, Seg);
}
static
-cmsInt32Number CheckMPE(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckMPE(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsPipeline* Lut, *Pt;
cmsToneCurve* G[3];
@@ -4805,24 +4798,24 @@ cmsInt32Number CheckMPE(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignat
case 1:
- Lut = cmsPipelineAlloc(DbgThread(), 3, 3);
+ Lut = cmsPipelineAlloc(ContextID, 3, 3);
- cmsPipelineInsertStage(DbgThread(), Lut, cmsAT_BEGIN, _cmsStageAllocLabV2ToV4(DbgThread()));
- cmsPipelineInsertStage(DbgThread(), Lut, cmsAT_END, _cmsStageAllocLabV4ToV2(DbgThread()));
- AddIdentityCLUTfloat(Lut);
+ cmsPipelineInsertStage(ContextID, Lut, cmsAT_BEGIN, _cmsStageAllocLabV2ToV4(ContextID));
+ cmsPipelineInsertStage(ContextID, Lut, cmsAT_END, _cmsStageAllocLabV4ToV2(ContextID));
+ AddIdentityCLUTfloat(ContextID, Lut);
- G[0] = G[1] = G[2] = CreateSegmentedCurve();
- cmsPipelineInsertStage(DbgThread(), Lut, cmsAT_END, cmsStageAllocToneCurves(DbgThread(), 3, G));
- cmsFreeToneCurve(DbgThread(), G[0]);
+ G[0] = G[1] = G[2] = CreateSegmentedCurve(ContextID);
+ cmsPipelineInsertStage(ContextID, Lut, cmsAT_END, cmsStageAllocToneCurves(ContextID, 3, G));
+ cmsFreeToneCurve(ContextID, G[0]);
- rc = cmsWriteTag(DbgThread(), hProfile, tag, Lut);
- cmsPipelineFree(DbgThread(), Lut);
+ rc = cmsWriteTag(ContextID, hProfile, tag, Lut);
+ cmsPipelineFree(ContextID, Lut);
return rc;
case 2:
- Pt = (cmsPipeline *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsPipeline *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
- return CheckFloatLUT(Pt);
+ return CheckFloatLUT(ContextID, Pt);
default:
return 0;
@@ -4831,7 +4824,7 @@ cmsInt32Number CheckMPE(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignat
static
-cmsInt32Number CheckScreening(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
+cmsInt32Number CheckScreening(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag)
{
cmsScreening *Pt, sc;
cmsInt32Number rc;
@@ -4846,12 +4839,12 @@ cmsInt32Number CheckScreening(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTag
sc.Channels[0].ScreenAngle = 3.0;
sc.Channels[0].SpotShape = cmsSPOT_ELLIPSE;
- rc = cmsWriteTag(DbgThread(), hProfile, tag, &sc);
+ rc = cmsWriteTag(ContextID, hProfile, tag, &sc);
return rc;
case 2:
- Pt = (cmsScreening *) cmsReadTag(DbgThread(), hProfile, tag);
+ Pt = (cmsScreening *) cmsReadTag(ContextID, hProfile, tag);
if (Pt == NULL) return 0;
if (Pt ->nChannels != 1) return 0;
@@ -4868,17 +4861,17 @@ cmsInt32Number CheckScreening(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTag
static
-cmsBool CheckOneStr(cmsMLU* mlu, cmsInt32Number n)
+cmsBool CheckOneStr(cmsContext ContextID, cmsMLU* mlu, cmsInt32Number n)
{
char Buffer[256], Buffer2[256];
- cmsMLUgetASCII(DbgThread(), mlu, "en", "US", Buffer, 255);
+ cmsMLUgetASCII(ContextID, mlu, "en", "US", Buffer, 255);
sprintf(Buffer2, "Hello, world %d", n);
if (strcmp(Buffer, Buffer2) != 0) return FALSE;
- cmsMLUgetASCII(DbgThread(), mlu, "es", "ES", Buffer, 255);
+ cmsMLUgetASCII(ContextID, mlu, "es", "ES", Buffer, 255);
sprintf(Buffer2, "Hola, mundo %d", n);
if (strcmp(Buffer, Buffer2) != 0) return FALSE;
@@ -4887,16 +4880,16 @@ cmsBool CheckOneStr(cmsMLU* mlu, cmsInt32Number n)
static
-void SetOneStr(cmsMLU** mlu, wchar_t* s1, wchar_t* s2)
+void SetOneStr(cmsContext ContextID, cmsMLU** mlu, wchar_t* s1, wchar_t* s2)
{
- *mlu = cmsMLUalloc(DbgThread(), 0);
- cmsMLUsetWide(DbgThread(), *mlu, "en", "US", s1);
- cmsMLUsetWide(DbgThread(), *mlu, "es", "ES", s2);
+ *mlu = cmsMLUalloc(ContextID, 0);
+ cmsMLUsetWide(ContextID, *mlu, "en", "US", s1);
+ cmsMLUsetWide(ContextID, *mlu, "es", "ES", s2);
}
static
-cmsInt32Number CheckProfileSequenceTag(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckProfileSequenceTag(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile)
{
cmsSEQ* s;
cmsInt32Number i;
@@ -4905,15 +4898,15 @@ cmsInt32Number CheckProfileSequenceTag(cmsInt32Number Pass, cmsHPROFILE hProfil
case 1:
- s = cmsAllocProfileSequenceDescription(DbgThread(), 3);
+ s = cmsAllocProfileSequenceDescription(ContextID, 3);
if (s == NULL) return 0;
- SetOneStr(&s -> seq[0].Manufacturer, L"Hello, world 0", L"Hola, mundo 0");
- SetOneStr(&s -> seq[0].Model, L"Hello, world 0", L"Hola, mundo 0");
- SetOneStr(&s -> seq[1].Manufacturer, L"Hello, world 1", L"Hola, mundo 1");
- SetOneStr(&s -> seq[1].Model, L"Hello, world 1", L"Hola, mundo 1");
- SetOneStr(&s -> seq[2].Manufacturer, L"Hello, world 2", L"Hola, mundo 2");
- SetOneStr(&s -> seq[2].Model, L"Hello, world 2", L"Hola, mundo 2");
+ SetOneStr(ContextID, &s -> seq[0].Manufacturer, L"Hello, world 0", L"Hola, mundo 0");
+ SetOneStr(ContextID, &s -> seq[0].Model, L"Hello, world 0", L"Hola, mundo 0");
+ SetOneStr(ContextID, &s -> seq[1].Manufacturer, L"Hello, world 1", L"Hola, mundo 1");
+ SetOneStr(ContextID, &s -> seq[1].Model, L"Hello, world 1", L"Hola, mundo 1");
+ SetOneStr(ContextID, &s -> seq[2].Manufacturer, L"Hello, world 2", L"Hola, mundo 2");
+ SetOneStr(ContextID, &s -> seq[2].Model, L"Hello, world 2", L"Hola, mundo 2");
#ifdef CMS_DONT_USE_INT64
@@ -4937,13 +4930,13 @@ cmsInt32Number CheckProfileSequenceTag(cmsInt32Number Pass, cmsHPROFILE hProfil
s ->seq[2].attributes = cmsTransparency|cmsGlossy;
#endif
- if (!cmsWriteTag(DbgThread(), hProfile, cmsSigProfileSequenceDescTag, s)) return 0;
- cmsFreeProfileSequenceDescription(DbgThread(), s);
+ if (!cmsWriteTag(ContextID, hProfile, cmsSigProfileSequenceDescTag, s)) return 0;
+ cmsFreeProfileSequenceDescription(ContextID, s);
return 1;
case 2:
- s = (cmsSEQ *) cmsReadTag(DbgThread(), hProfile, cmsSigProfileSequenceDescTag);
+ s = (cmsSEQ *) cmsReadTag(ContextID, hProfile, cmsSigProfileSequenceDescTag);
if (s == NULL) return 0;
if (s ->n != 3) return 0;
@@ -4972,8 +4965,8 @@ cmsInt32Number CheckProfileSequenceTag(cmsInt32Number Pass, cmsHPROFILE hProfil
// Check MLU
for (i=0; i < 3; i++) {
- if (!CheckOneStr(s -> seq[i].Manufacturer, i)) return 0;
- if (!CheckOneStr(s -> seq[i].Model, i)) return 0;
+ if (!CheckOneStr(ContextID, s -> seq[i].Manufacturer, i)) return 0;
+ if (!CheckOneStr(ContextID, s -> seq[i].Model, i)) return 0;
}
return 1;
@@ -4984,7 +4977,7 @@ cmsInt32Number CheckProfileSequenceTag(cmsInt32Number Pass, cmsHPROFILE hProfil
static
-cmsInt32Number CheckProfileSequenceIDTag(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckProfileSequenceIDTag(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile)
{
cmsSEQ* s;
cmsInt32Number i;
@@ -4993,7 +4986,7 @@ cmsInt32Number CheckProfileSequenceIDTag(cmsInt32Number Pass, cmsHPROFILE hProf
case 1:
- s = cmsAllocProfileSequenceDescription(DbgThread(), 3);
+ s = cmsAllocProfileSequenceDescription(ContextID, 3);
if (s == NULL) return 0;
memcpy(s ->seq[0].ProfileID.ID8, "0123456789ABCDEF", 16);
@@ -5001,17 +4994,17 @@ cmsInt32Number CheckProfileSequenceIDTag(cmsInt32Number Pass, cmsHPROFILE hProf
memcpy(s ->seq[2].ProfileID.ID8, "2222222222222222", 16);
- SetOneStr(&s -> seq[0].Description, L"Hello, world 0", L"Hola, mundo 0");
- SetOneStr(&s -> seq[1].Description, L"Hello, world 1", L"Hola, mundo 1");
- SetOneStr(&s -> seq[2].Description, L"Hello, world 2", L"Hola, mundo 2");
+ SetOneStr(ContextID, &s -> seq[0].Description, L"Hello, world 0", L"Hola, mundo 0");
+ SetOneStr(ContextID, &s -> seq[1].Description, L"Hello, world 1", L"Hola, mundo 1");
+ SetOneStr(ContextID, &s -> seq[2].Description, L"Hello, world 2", L"Hola, mundo 2");
- if (!cmsWriteTag(DbgThread(), hProfile, cmsSigProfileSequenceIdTag, s)) return 0;
- cmsFreeProfileSequenceDescription(DbgThread(), s);
+ if (!cmsWriteTag(ContextID, hProfile, cmsSigProfileSequenceIdTag, s)) return 0;
+ cmsFreeProfileSequenceDescription(ContextID, s);
return 1;
case 2:
- s = (cmsSEQ *) cmsReadTag(DbgThread(), hProfile, cmsSigProfileSequenceIdTag);
+ s = (cmsSEQ *) cmsReadTag(ContextID, hProfile, cmsSigProfileSequenceIdTag);
if (s == NULL) return 0;
if (s ->n != 3) return 0;
@@ -5022,7 +5015,7 @@ cmsInt32Number CheckProfileSequenceIDTag(cmsInt32Number Pass, cmsHPROFILE hProf
for (i=0; i < 3; i++) {
- if (!CheckOneStr(s -> seq[i].Description, i)) return 0;
+ if (!CheckOneStr(ContextID, s -> seq[i].Description, i)) return 0;
}
return 1;
@@ -5034,7 +5027,7 @@ cmsInt32Number CheckProfileSequenceIDTag(cmsInt32Number Pass, cmsHPROFILE hProf
static
-cmsInt32Number CheckICCViewingConditions(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckICCViewingConditions(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile)
{
cmsICCViewingConditions* v;
cmsICCViewingConditions s;
@@ -5050,11 +5043,11 @@ cmsInt32Number CheckICCViewingConditions(cmsInt32Number Pass, cmsHPROFILE hProf
s.SurroundXYZ.Y = 0.5;
s.SurroundXYZ.Z = 0.6;
- if (!cmsWriteTag(DbgThread(), hProfile, cmsSigViewingConditionsTag, &s)) return 0;
+ if (!cmsWriteTag(ContextID, hProfile, cmsSigViewingConditionsTag, &s)) return 0;
return 1;
case 2:
- v = (cmsICCViewingConditions *) cmsReadTag(DbgThread(), hProfile, cmsSigViewingConditionsTag);
+ v = (cmsICCViewingConditions *) cmsReadTag(ContextID, hProfile, cmsSigViewingConditionsTag);
if (v == NULL) return 0;
if (v ->IlluminantType != 1) return 0;
@@ -5076,7 +5069,7 @@ cmsInt32Number CheckICCViewingConditions(cmsInt32Number Pass, cmsHPROFILE hProf
static
-cmsInt32Number CheckVCGT(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckVCGT(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile)
{
cmsToneCurve* Curves[3];
cmsToneCurve** PtrCurve;
@@ -5084,23 +5077,23 @@ cmsInt32Number CheckVCGT(cmsInt32Number Pass, cmsHPROFILE hProfile)
switch (Pass) {
case 1:
- Curves[0] = cmsBuildGamma(DbgThread(), 1.1);
- Curves[1] = cmsBuildGamma(DbgThread(), 2.2);
- Curves[2] = cmsBuildGamma(DbgThread(), 3.4);
+ Curves[0] = cmsBuildGamma(ContextID, 1.1);
+ Curves[1] = cmsBuildGamma(ContextID, 2.2);
+ Curves[2] = cmsBuildGamma(ContextID, 3.4);
- if (!cmsWriteTag(DbgThread(), hProfile, cmsSigVcgtTag, Curves)) return 0;
+ if (!cmsWriteTag(ContextID, hProfile, cmsSigVcgtTag, Curves)) return 0;
- cmsFreeToneCurveTriple(DbgThread(), Curves);
+ cmsFreeToneCurveTriple(ContextID, Curves);
return 1;
case 2:
- PtrCurve = (cmsToneCurve **) cmsReadTag(DbgThread(), hProfile, cmsSigVcgtTag);
+ PtrCurve = (cmsToneCurve **) cmsReadTag(ContextID, hProfile, cmsSigVcgtTag);
if (PtrCurve == NULL) return 0;
- if (!IsGoodVal("VCGT R", cmsEstimateGamma(DbgThread(), PtrCurve[0], 0.01), 1.1, 0.001)) return 0;
- if (!IsGoodVal("VCGT G", cmsEstimateGamma(DbgThread(), PtrCurve[1], 0.01), 2.2, 0.001)) return 0;
- if (!IsGoodVal("VCGT B", cmsEstimateGamma(DbgThread(), PtrCurve[2], 0.01), 3.4, 0.001)) return 0;
+ if (!IsGoodVal("VCGT R", cmsEstimateGamma(ContextID, PtrCurve[0], 0.01), 1.1, 0.001)) return 0;
+ if (!IsGoodVal("VCGT G", cmsEstimateGamma(ContextID, PtrCurve[1], 0.01), 2.2, 0.001)) return 0;
+ if (!IsGoodVal("VCGT B", cmsEstimateGamma(ContextID, PtrCurve[2], 0.01), 3.4, 0.001)) return 0;
return 1;
default:;
@@ -5112,38 +5105,38 @@ cmsInt32Number CheckVCGT(cmsInt32Number Pass, cmsHPROFILE hProfile)
// Only one of the two following may be used, as they share the same tag
static
-cmsInt32Number CheckDictionary16(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckDictionary16(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile)
{
cmsHANDLE hDict;
const cmsDICTentry* e;
switch (Pass) {
case 1:
- hDict = cmsDictAlloc(DbgThread());
- cmsDictAddEntry(DbgThread(), hDict, L"Name0", NULL, NULL, NULL);
- cmsDictAddEntry(DbgThread(), hDict, L"Name1", L"", NULL, NULL);
- cmsDictAddEntry(DbgThread(), hDict, L"Name", L"String", NULL, NULL);
- cmsDictAddEntry(DbgThread(), hDict, L"Name2", L"12", NULL, NULL);
- if (!cmsWriteTag(DbgThread(), hProfile, cmsSigMetaTag, hDict)) return 0;
- cmsDictFree(DbgThread(), hDict);
+ hDict = cmsDictAlloc(ContextID);
+ cmsDictAddEntry(ContextID, hDict, L"Name0", NULL, NULL, NULL);
+ cmsDictAddEntry(ContextID, hDict, L"Name1", L"", NULL, NULL);
+ cmsDictAddEntry(ContextID, hDict, L"Name", L"String", NULL, NULL);
+ cmsDictAddEntry(ContextID, hDict, L"Name2", L"12", NULL, NULL);
+ if (!cmsWriteTag(ContextID, hProfile, cmsSigMetaTag, hDict)) return 0;
+ cmsDictFree(ContextID, hDict);
return 1;
case 2:
- hDict = cmsReadTag(DbgThread(), hProfile, cmsSigMetaTag);
+ hDict = cmsReadTag(ContextID, hProfile, cmsSigMetaTag);
if (hDict == NULL) return 0;
- e = cmsDictGetEntryList(DbgThread(), hDict);
+ e = cmsDictGetEntryList(ContextID, hDict);
if (memcmp(e ->Name, L"Name2", sizeof(wchar_t) * 5) != 0) return 0;
if (memcmp(e ->Value, L"12", sizeof(wchar_t) * 2) != 0) return 0;
- e = cmsDictNextEntry(DbgThread(), e);
+ e = cmsDictNextEntry(ContextID, e);
if (memcmp(e ->Name, L"Name", sizeof(wchar_t) * 4) != 0) return 0;
if (memcmp(e ->Value, L"String", sizeof(wchar_t) * 5) != 0) return 0;
- e = cmsDictNextEntry(DbgThread(), e);
+ e = cmsDictNextEntry(ContextID, e);
if (memcmp(e ->Name, L"Name1", sizeof(wchar_t) *5) != 0) return 0;
if (e ->Value == NULL) return 0;
if (*e->Value != 0) return 0;
- e = cmsDictNextEntry(DbgThread(), e);
+ e = cmsDictNextEntry(ContextID, e);
if (memcmp(e ->Name, L"Name0", sizeof(wchar_t) * 5) != 0) return 0;
if (e ->Value != NULL) return 0;
return 1;
@@ -5158,7 +5151,7 @@ cmsInt32Number CheckDictionary16(cmsInt32Number Pass, cmsHPROFILE hProfile)
static
-cmsInt32Number CheckDictionary24(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckDictionary24(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile)
{
cmsHANDLE hDict;
const cmsDICTentry* e;
@@ -5169,50 +5162,50 @@ cmsInt32Number CheckDictionary24(cmsInt32Number Pass, cmsHPROFILE hProfile)
switch (Pass) {
case 1:
- hDict = cmsDictAlloc(DbgThread());
+ hDict = cmsDictAlloc(ContextID);
- DisplayName = cmsMLUalloc(DbgThread(), 0);
+ DisplayName = cmsMLUalloc(ContextID, 0);
- cmsMLUsetWide(DbgThread(), DisplayName, "en", "US", L"Hello, world");
- cmsMLUsetWide(DbgThread(), DisplayName, "es", "ES", L"Hola, mundo");
- cmsMLUsetWide(DbgThread(), DisplayName, "fr", "FR", L"Bonjour, le monde");
- cmsMLUsetWide(DbgThread(), DisplayName, "ca", "CA", L"Hola, mon");
+ cmsMLUsetWide(ContextID, DisplayName, "en", "US", L"Hello, world");
+ cmsMLUsetWide(ContextID, DisplayName, "es", "ES", L"Hola, mundo");
+ cmsMLUsetWide(ContextID, DisplayName, "fr", "FR", L"Bonjour, le monde");
+ cmsMLUsetWide(ContextID, DisplayName, "ca", "CA", L"Hola, mon");
- cmsDictAddEntry(DbgThread(), hDict, L"Name", L"String", DisplayName, NULL);
- cmsMLUfree(DbgThread(), DisplayName);
+ cmsDictAddEntry(ContextID, hDict, L"Name", L"String", DisplayName, NULL);
+ cmsMLUfree(ContextID, DisplayName);
- cmsDictAddEntry(DbgThread(), hDict, L"Name2", L"12", NULL, NULL);
- if (!cmsWriteTag(DbgThread(), hProfile, cmsSigMetaTag, hDict)) return 0;
- cmsDictFree(DbgThread(), hDict);
+ cmsDictAddEntry(ContextID, hDict, L"Name2", L"12", NULL, NULL);
+ if (!cmsWriteTag(ContextID, hProfile, cmsSigMetaTag, hDict)) return 0;
+ cmsDictFree(ContextID, hDict);
return 1;
case 2:
- hDict = cmsReadTag(DbgThread(), hProfile, cmsSigMetaTag);
+ hDict = cmsReadTag(ContextID, hProfile, cmsSigMetaTag);
if (hDict == NULL) return 0;
- e = cmsDictGetEntryList(DbgThread(), hDict);
+ e = cmsDictGetEntryList(ContextID, hDict);
if (memcmp(e ->Name, L"Name2", sizeof(wchar_t) * 5) != 0) return 0;
if (memcmp(e ->Value, L"12", sizeof(wchar_t) * 2) != 0) return 0;
- e = cmsDictNextEntry(DbgThread(), e);
+ e = cmsDictNextEntry(ContextID, e);
if (memcmp(e ->Name, L"Name", sizeof(wchar_t) * 4) != 0) return 0;
if (memcmp(e ->Value, L"String", sizeof(wchar_t) * 5) != 0) return 0;
- cmsMLUgetASCII(DbgThread(), e->DisplayName, "en", "US", Buffer, 256);
+ cmsMLUgetASCII(ContextID, e->DisplayName, "en", "US", Buffer, 256);
if (strcmp(Buffer, "Hello, world") != 0) rc = 0;
- cmsMLUgetASCII(DbgThread(), e->DisplayName, "es", "ES", Buffer, 256);
+ cmsMLUgetASCII(ContextID, e->DisplayName, "es", "ES", Buffer, 256);
if (strcmp(Buffer, "Hola, mundo") != 0) rc = 0;
- cmsMLUgetASCII(DbgThread(), e->DisplayName, "fr", "FR", Buffer, 256);
+ cmsMLUgetASCII(ContextID, e->DisplayName, "fr", "FR", Buffer, 256);
if (strcmp(Buffer, "Bonjour, le monde") != 0) rc = 0;
- cmsMLUgetASCII(DbgThread(), e->DisplayName, "ca", "CA", Buffer, 256);
+ cmsMLUgetASCII(ContextID, e->DisplayName, "ca", "CA", Buffer, 256);
if (strcmp(Buffer, "Hola, mon") != 0) rc = 0;
if (rc == 0)
@@ -5226,17 +5219,17 @@ cmsInt32Number CheckDictionary24(cmsInt32Number Pass, cmsHPROFILE hProfile)
}
static
-cmsInt32Number CheckRAWtags(cmsInt32Number Pass, cmsHPROFILE hProfile)
+cmsInt32Number CheckRAWtags(cmsContext ContextID, cmsInt32Number Pass, cmsHPROFILE hProfile)
{
char Buffer[7];
switch (Pass) {
case 1:
- return cmsWriteRawTag(DbgThread(), hProfile, (cmsTagSignature) 0x31323334, "data123", 7);
+ return cmsWriteRawTag(ContextID, hProfile, (cmsTagSignature) 0x31323334, "data123", 7);
case 2:
- if (!cmsReadRawTag(DbgThread(), hProfile, (cmsTagSignature) 0x31323334, Buffer, 7)) return 0;
+ if (!cmsReadRawTag(ContextID, hProfile, (cmsTagSignature) 0x31323334, Buffer, 7)) return 0;
if (strncmp(Buffer, "data123", 7) != 0) return 0;
return 1;
@@ -5249,153 +5242,153 @@ cmsInt32Number CheckRAWtags(cmsInt32Number Pass, cmsHPROFILE hProfile)
// This is a very big test that checks every single tag
static
-cmsInt32Number CheckProfileCreation(void)
+cmsInt32Number CheckProfileCreation(cmsContext ContextID)
{
cmsHPROFILE h;
cmsInt32Number Pass;
- h = cmsCreateProfilePlaceholder(DbgThread());
+ h = cmsCreateProfilePlaceholder(ContextID);
if (h == NULL) return 0;
- cmsSetProfileVersion(DbgThread(), h, 4.3);
- if (cmsGetTagCount(DbgThread(), h) != 0) { Fail("Empty profile with nonzero number of tags"); goto Error; }
- if (cmsIsTag(DbgThread(), h, cmsSigAToB0Tag)) { Fail("Found a tag in an empty profile"); goto Error; }
+ cmsSetProfileVersion(ContextID, h, 4.3);
+ if (cmsGetTagCount(ContextID, h) != 0) { Fail("Empty profile with nonzero number of tags"); goto Error; }
+ if (cmsIsTag(ContextID, h, cmsSigAToB0Tag)) { Fail("Found a tag in an empty profile"); goto Error; }
- cmsSetColorSpace(DbgThread(), h, cmsSigRgbData);
- if (cmsGetColorSpace(DbgThread(), h) != cmsSigRgbData) { Fail("Unable to set colorspace"); goto Error; }
+ cmsSetColorSpace(ContextID, h, cmsSigRgbData);
+ if (cmsGetColorSpace(ContextID, h) != cmsSigRgbData) { Fail("Unable to set colorspace"); goto Error; }
- cmsSetPCS(DbgThread(), h, cmsSigLabData);
- if (cmsGetPCS(DbgThread(), h) != cmsSigLabData) { Fail("Unable to set colorspace"); goto Error; }
+ cmsSetPCS(ContextID, h, cmsSigLabData);
+ if (cmsGetPCS(ContextID, h) != cmsSigLabData) { Fail("Unable to set colorspace"); goto Error; }
- cmsSetDeviceClass(DbgThread(), h, cmsSigDisplayClass);
- if (cmsGetDeviceClass(DbgThread(), h) != cmsSigDisplayClass) { Fail("Unable to set deviceclass"); goto Error; }
+ cmsSetDeviceClass(ContextID, h, cmsSigDisplayClass);
+ if (cmsGetDeviceClass(ContextID, h) != cmsSigDisplayClass) { Fail("Unable to set deviceclass"); goto Error; }
- cmsSetHeaderRenderingIntent(DbgThread(), h, INTENT_SATURATION);
- if (cmsGetHeaderRenderingIntent(DbgThread(), h) != INTENT_SATURATION) { Fail("Unable to set rendering intent"); goto Error; }
+ cmsSetHeaderRenderingIntent(ContextID, h, INTENT_SATURATION);
+ if (cmsGetHeaderRenderingIntent(ContextID, h) != INTENT_SATURATION) { Fail("Unable to set rendering intent"); goto Error; }
for (Pass = 1; Pass <= 2; Pass++) {
SubTest("Tags holding XYZ");
- if (!CheckXYZ(Pass, h, cmsSigBlueColorantTag)) goto Error;
- if (!CheckXYZ(Pass, h, cmsSigGreenColorantTag)) goto Error;
- if (!CheckXYZ(Pass, h, cmsSigRedColorantTag)) goto Error;
- if (!CheckXYZ(Pass, h, cmsSigMediaBlackPointTag)) goto Error;
- if (!CheckXYZ(Pass, h, cmsSigMediaWhitePointTag)) goto Error;
- if (!CheckXYZ(Pass, h, cmsSigLuminanceTag)) goto Error;
+ if (!CheckXYZ(ContextID, Pass, h, cmsSigBlueColorantTag)) goto Error;
+ if (!CheckXYZ(ContextID, Pass, h, cmsSigGreenColorantTag)) goto Error;
+ if (!CheckXYZ(ContextID, Pass, h, cmsSigRedColorantTag)) goto Error;
+ if (!CheckXYZ(ContextID, Pass, h, cmsSigMediaBlackPointTag)) goto Error;
+ if (!CheckXYZ(ContextID, Pass, h, cmsSigMediaWhitePointTag)) goto Error;
+ if (!CheckXYZ(ContextID, Pass, h, cmsSigLuminanceTag)) goto Error;
SubTest("Tags holding curves");
- if (!CheckGamma(Pass, h, cmsSigBlueTRCTag)) goto Error;
- if (!CheckGamma(Pass, h, cmsSigGrayTRCTag)) goto Error;
- if (!CheckGamma(Pass, h, cmsSigGreenTRCTag)) goto Error;
- if (!CheckGamma(Pass, h, cmsSigRedTRCTag)) goto Error;
+ if (!CheckGamma(ContextID, Pass, h, cmsSigBlueTRCTag)) goto Error;
+ if (!CheckGamma(ContextID, Pass, h, cmsSigGrayTRCTag)) goto Error;
+ if (!CheckGamma(ContextID, Pass, h, cmsSigGreenTRCTag)) goto Error;
+ if (!CheckGamma(ContextID, Pass, h, cmsSigRedTRCTag)) goto Error;
SubTest("Tags holding text");
- if (!CheckTextSingle(Pass, h, cmsSigCharTargetTag)) goto Error;
- if (!CheckTextSingle(Pass, h, cmsSigScreeningDescTag)) goto Error;
+ if (!CheckTextSingle(ContextID, Pass, h, cmsSigCharTargetTag)) goto Error;
+ if (!CheckTextSingle(ContextID, Pass, h, cmsSigScreeningDescTag)) goto Error;
- if (!CheckText(Pass, h, cmsSigCopyrightTag)) goto Error;
- if (!CheckText(Pass, h, cmsSigProfileDescriptionTag)) goto Error;
- if (!CheckText(Pass, h, cmsSigDeviceMfgDescTag)) goto Error;
- if (!CheckText(Pass, h, cmsSigDeviceModelDescTag)) goto Error;
- if (!CheckText(Pass, h, cmsSigViewingCondDescTag)) goto Error;
+ if (!CheckText(ContextID, Pass, h, cmsSigCopyrightTag)) goto Error;
+ if (!CheckText(ContextID, Pass, h, cmsSigProfileDescriptionTag)) goto Error;
+ if (!CheckText(ContextID, Pass, h, cmsSigDeviceMfgDescTag)) goto Error;
+ if (!CheckText(ContextID, Pass, h, cmsSigDeviceModelDescTag)) goto Error;
+ if (!CheckText(ContextID, Pass, h, cmsSigViewingCondDescTag)) goto Error;
SubTest("Tags holding cmsICCData");
- if (!CheckData(Pass, h, cmsSigPs2CRD0Tag)) goto Error;
- if (!CheckData(Pass, h, cmsSigPs2CRD1Tag)) goto Error;
- if (!CheckData(Pass, h, cmsSigPs2CRD2Tag)) goto Error;
- if (!CheckData(Pass, h, cmsSigPs2CRD3Tag)) goto Error;
- if (!CheckData(Pass, h, cmsSigPs2CSATag)) goto Error;
- if (!CheckData(Pass, h, cmsSigPs2RenderingIntentTag)) goto Error;
+ if (!CheckData(ContextID, Pass, h, cmsSigPs2CRD0Tag)) goto Error;
+ if (!CheckData(ContextID, Pass, h, cmsSigPs2CRD1Tag)) goto Error;
+ if (!CheckData(ContextID, Pass, h, cmsSigPs2CRD2Tag)) goto Error;
+ if (!CheckData(ContextID, Pass, h, cmsSigPs2CRD3Tag)) goto Error;
+ if (!CheckData(ContextID, Pass, h, cmsSigPs2CSATag)) goto Error;
+ if (!CheckData(ContextID, Pass, h, cmsSigPs2RenderingIntentTag)) goto Error;
SubTest("Tags holding signatures");
- if (!CheckSignature(Pass, h, cmsSigColorimetricIntentImageStateTag)) goto Error;
- if (!CheckSignature(Pass, h, cmsSigPerceptualRenderingIntentGamutTag)) goto Error;
- if (!CheckSignature(Pass, h, cmsSigSaturationRenderingIntentGamutTag)) goto Error;
- if (!CheckSignature(Pass, h, cmsSigTechnologyTag)) goto Error;
+ if (!CheckSignature(ContextID, Pass, h, cmsSigColorimetricIntentImageStateTag)) goto Error;
+ if (!CheckSignature(ContextID, Pass, h, cmsSigPerceptualRenderingIntentGamutTag)) goto Error;
+ if (!CheckSignature(ContextID, Pass, h, cmsSigSaturationRenderingIntentGamutTag)) goto Error;
+ if (!CheckSignature(ContextID, Pass, h, cmsSigTechnologyTag)) goto Error;
SubTest("Tags holding date_time");
- if (!CheckDateTime(Pass, h, cmsSigCalibrationDateTimeTag)) goto Error;
- if (!CheckDateTime(Pass, h, cmsSigDateTimeTag)) goto Error;
+ if (!CheckDateTime(ContextID, Pass, h, cmsSigCalibrationDateTimeTag)) goto Error;
+ if (!CheckDateTime(ContextID, Pass, h, cmsSigDateTimeTag)) goto Error;
SubTest("Tags holding named color lists");
- if (!CheckNamedColor(Pass, h, cmsSigColorantTableTag, 15, FALSE)) goto Error;
- if (!CheckNamedColor(Pass, h, cmsSigColorantTableOutTag, 15, FALSE)) goto Error;
- if (!CheckNamedColor(Pass, h, cmsSigNamedColor2Tag, 4096, TRUE)) goto Error;
+ if (!CheckNamedColor(ContextID, Pass, h, cmsSigColorantTableTag, 15, FALSE)) goto Error;
+ if (!CheckNamedColor(ContextID, Pass, h, cmsSigColorantTableOutTag, 15, FALSE)) goto Error;
+ if (!CheckNamedColor(ContextID, Pass, h, cmsSigNamedColor2Tag, 4096, TRUE)) goto Error;
SubTest("Tags holding LUTs");
- if (!CheckLUT(Pass, h, cmsSigAToB0Tag)) goto Error;
- if (!CheckLUT(Pass, h, cmsSigAToB1Tag)) goto Error;
- if (!CheckLUT(Pass, h, cmsSigAToB2Tag)) goto Error;
- if (!CheckLUT(Pass, h, cmsSigBToA0Tag)) goto Error;
- if (!CheckLUT(Pass, h, cmsSigBToA1Tag)) goto Error;
- if (!CheckLUT(Pass, h, cmsSigBToA2Tag)) goto Error;
- if (!CheckLUT(Pass, h, cmsSigPreview0Tag)) goto Error;
- if (!CheckLUT(Pass, h, cmsSigPreview1Tag)) goto Error;
- if (!CheckLUT(Pass, h, cmsSigPreview2Tag)) goto Error;
- if (!CheckLUT(Pass, h, cmsSigGamutTag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigAToB0Tag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigAToB1Tag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigAToB2Tag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigBToA0Tag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigBToA1Tag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigBToA2Tag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigPreview0Tag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigPreview1Tag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigPreview2Tag)) goto Error;
+ if (!CheckLUT(ContextID, Pass, h, cmsSigGamutTag)) goto Error;
SubTest("Tags holding CHAD");
- if (!CheckCHAD(Pass, h, cmsSigChromaticAdaptationTag)) goto Error;
+ if (!CheckCHAD(ContextID, Pass, h, cmsSigChromaticAdaptationTag)) goto Error;
SubTest("Tags holding Chromaticity");
- if (!CheckChromaticity(Pass, h, cmsSigChromaticityTag)) goto Error;
+ if (!CheckChromaticity(ContextID, Pass, h, cmsSigChromaticityTag)) goto Error;
SubTest("Tags holding colorant order");
- if (!CheckColorantOrder(Pass, h, cmsSigColorantOrderTag)) goto Error;
+ if (!CheckColorantOrder(ContextID, Pass, h, cmsSigColorantOrderTag)) goto Error;
SubTest("Tags holding measurement");
- if (!CheckMeasurement(Pass, h, cmsSigMeasurementTag)) goto Error;
+ if (!CheckMeasurement(ContextID, Pass, h, cmsSigMeasurementTag)) goto Error;
SubTest("Tags holding CRD info");
- if (!CheckCRDinfo(Pass, h, cmsSigCrdInfoTag)) goto Error;
+ if (!CheckCRDinfo(ContextID, Pass, h, cmsSigCrdInfoTag)) goto Error;
SubTest("Tags holding UCR/BG");
- if (!CheckUcrBg(Pass, h, cmsSigUcrBgTag)) goto Error;
+ if (!CheckUcrBg(ContextID, Pass, h, cmsSigUcrBgTag)) goto Error;
SubTest("Tags holding MPE");
- if (!CheckMPE(Pass, h, cmsSigDToB0Tag)) goto Error;
- if (!CheckMPE(Pass, h, cmsSigDToB1Tag)) goto Error;
- if (!CheckMPE(Pass, h, cmsSigDToB2Tag)) goto Error;
- if (!CheckMPE(Pass, h, cmsSigDToB3Tag)) goto Error;
- if (!CheckMPE(Pass, h, cmsSigBToD0Tag)) goto Error;
- if (!CheckMPE(Pass, h, cmsSigBToD1Tag)) goto Error;
- if (!CheckMPE(Pass, h, cmsSigBToD2Tag)) goto Error;
- if (!CheckMPE(Pass, h, cmsSigBToD3Tag)) goto Error;
+ if (!CheckMPE(ContextID, Pass, h, cmsSigDToB0Tag)) goto Error;
+ if (!CheckMPE(ContextID, Pass, h, cmsSigDToB1Tag)) goto Error;
+ if (!CheckMPE(ContextID, Pass, h, cmsSigDToB2Tag)) goto Error;
+ if (!CheckMPE(ContextID, Pass, h, cmsSigDToB3Tag)) goto Error;
+ if (!CheckMPE(ContextID, Pass, h, cmsSigBToD0Tag)) goto Error;
+ if (!CheckMPE(ContextID, Pass, h, cmsSigBToD1Tag)) goto Error;
+ if (!CheckMPE(ContextID, Pass, h, cmsSigBToD2Tag)) goto Error;
+ if (!CheckMPE(ContextID, Pass, h, cmsSigBToD3Tag)) goto Error;
SubTest("Tags using screening");
- if (!CheckScreening(Pass, h, cmsSigScreeningTag)) goto Error;
+ if (!CheckScreening(ContextID, Pass, h, cmsSigScreeningTag)) goto Error;
SubTest("Tags holding profile sequence description");
- if (!CheckProfileSequenceTag(Pass, h)) goto Error;
- if (!CheckProfileSequenceIDTag(Pass, h)) goto Error;
+ if (!CheckProfileSequenceTag(ContextID, Pass, h)) goto Error;
+ if (!CheckProfileSequenceIDTag(ContextID, Pass, h)) goto Error;
SubTest("Tags holding ICC viewing conditions");
- if (!CheckICCViewingConditions(Pass, h)) goto Error;
+ if (!CheckICCViewingConditions(ContextID, Pass, h)) goto Error;
SubTest("VCGT tags");
- if (!CheckVCGT(Pass, h)) goto Error;
+ if (!CheckVCGT(ContextID, Pass, h)) goto Error;
SubTest("RAW tags");
- if (!CheckRAWtags(Pass, h)) goto Error;
+ if (!CheckRAWtags(ContextID, Pass, h)) goto Error;
SubTest("Dictionary meta tags");
- // if (!CheckDictionary16(Pass, h)) goto Error;
- if (!CheckDictionary24(Pass, h)) goto Error;
+ // if (!CheckDictionary16(ContextID, Pass, h)) goto Error;
+ if (!CheckDictionary24(ContextID, Pass, h)) goto Error;
if (Pass == 1) {
- cmsSaveProfileToFile(DbgThread(), h, "alltags.icc");
- cmsCloseProfile(DbgThread(), h);
- h = cmsOpenProfileFromFile(DbgThread(), "alltags.icc", "r");
+ cmsSaveProfileToFile(ContextID, h, "alltags.icc");
+ cmsCloseProfile(ContextID, h);
+ h = cmsOpenProfileFromFile(ContextID, "alltags.icc", "r");
}
}
@@ -5409,12 +5402,12 @@ cmsInt32Number CheckProfileCreation(void)
cmsSigOutputResponseTag = 0x72657370, // 'resp' -- Possible patent on this
*/
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
remove("alltags.icc");
return 1;
Error:
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
remove("alltags.icc");
return 0;
}
@@ -5422,7 +5415,7 @@ Error:
// Thanks to Christopher James Halse Rogers for the bugfixing and providing this test
static
-cmsInt32Number CheckVersionHeaderWriting(void)
+cmsInt32Number CheckVersionHeaderWriting(cmsContext ContextID)
{
cmsHPROFILE h;
int index;
@@ -5435,24 +5428,24 @@ cmsInt32Number CheckVersionHeaderWriting(void)
for (index = 0; index < sizeof(test_versions)/sizeof(test_versions[0]); index++) {
- h = cmsCreateProfilePlaceholder(DbgThread());
+ h = cmsCreateProfilePlaceholder(ContextID);
if (h == NULL) return 0;
- cmsSetProfileVersion(DbgThread(), h, test_versions[index]);
+ cmsSetProfileVersion(ContextID, h, test_versions[index]);
- cmsSaveProfileToFile(DbgThread(), h, "versions.icc");
- cmsCloseProfile(DbgThread(), h);
+ cmsSaveProfileToFile(ContextID, h, "versions.icc");
+ cmsCloseProfile(ContextID, h);
- h = cmsOpenProfileFromFile(DbgThread(), "versions.icc", "r");
+ h = cmsOpenProfileFromFile(ContextID, "versions.icc", "r");
// Only the first 3 digits are significant
- if (fabs(cmsGetProfileVersion(DbgThread(), h) - test_versions[index]) > 0.005) {
+ if (fabs(cmsGetProfileVersion(ContextID, h) - test_versions[index]) > 0.005) {
Fail("Version failed to round-trip: wrote %.2f, read %.2f",
- test_versions[index], cmsGetProfileVersion(DbgThread(), h));
+ test_versions[index], cmsGetProfileVersion(ContextID, h));
return 0;
}
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
remove("versions.icc");
}
return 1;
@@ -5461,21 +5454,21 @@ cmsInt32Number CheckVersionHeaderWriting(void)
// Test on Richard Hughes "crayons.icc"
static
-cmsInt32Number CheckMultilocalizedProfile(void)
+cmsInt32Number CheckMultilocalizedProfile(cmsContext ContextID)
{
cmsHPROFILE hProfile;
cmsMLU *Pt;
char Buffer[256];
- hProfile = cmsOpenProfileFromFile(DbgThread(), "crayons.icc", "r");
+ hProfile = cmsOpenProfileFromFile(ContextID, "crayons.icc", "r");
- Pt = (cmsMLU *) cmsReadTag(DbgThread(), hProfile, cmsSigProfileDescriptionTag);
- cmsMLUgetASCII(DbgThread(), Pt, "en", "GB", Buffer, 256);
+ Pt = (cmsMLU *) cmsReadTag(ContextID, hProfile, cmsSigProfileDescriptionTag);
+ cmsMLUgetASCII(ContextID, Pt, "en", "GB", Buffer, 256);
if (strcmp(Buffer, "Crayon Colours") != 0) return FALSE;
- cmsMLUgetASCII(DbgThread(), Pt, "en", "US", Buffer, 256);
+ cmsMLUgetASCII(ContextID, Pt, "en", "US", Buffer, 256);
if (strcmp(Buffer, "Crayon Colors") != 0) return FALSE;
- cmsCloseProfile(DbgThread(), hProfile);
+ cmsCloseProfile(ContextID, hProfile);
return TRUE;
}
@@ -5497,62 +5490,62 @@ void ErrorReportingFunction(cmsContext ContextID, cmsUInt32Number ErrorCode, con
static
-cmsInt32Number CheckBadProfiles(void)
+cmsInt32Number CheckBadProfiles(cmsContext ContextID)
{
cmsHPROFILE h;
- h = cmsOpenProfileFromFile(DbgThread(), "IDoNotExist.icc", "r");
+ h = cmsOpenProfileFromFile(ContextID, "IDoNotExist.icc", "r");
if (h != NULL) {
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
return 0;
}
- h = cmsOpenProfileFromFile(DbgThread(), "IAmIllFormed*.icc", "r");
+ h = cmsOpenProfileFromFile(ContextID, "IAmIllFormed*.icc", "r");
if (h != NULL) {
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
return 0;
}
// No profile name given
- h = cmsOpenProfileFromFile(DbgThread(), "", "r");
+ h = cmsOpenProfileFromFile(ContextID, "", "r");
if (h != NULL) {
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
return 0;
}
- h = cmsOpenProfileFromFile(DbgThread(), "..", "r");
+ h = cmsOpenProfileFromFile(ContextID, "..", "r");
if (h != NULL) {
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
return 0;
}
- h = cmsOpenProfileFromFile(DbgThread(), "IHaveBadAccessMode.icc", "@");
+ h = cmsOpenProfileFromFile(ContextID, "IHaveBadAccessMode.icc", "@");
if (h != NULL) {
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
return 0;
}
- h = cmsOpenProfileFromFile(DbgThread(), "bad.icc", "r");
+ h = cmsOpenProfileFromFile(ContextID, "bad.icc", "r");
if (h != NULL) {
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
return 0;
}
- h = cmsOpenProfileFromFile(DbgThread(), "toosmall.icc", "r");
+ h = cmsOpenProfileFromFile(ContextID, "toosmall.icc", "r");
if (h != NULL) {
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
return 0;
}
- h = cmsOpenProfileFromMem(DbgThread(), NULL, 3);
+ h = cmsOpenProfileFromMem(ContextID, NULL, 3);
if (h != NULL) {
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
return 0;
}
- h = cmsOpenProfileFromMem(DbgThread(), "123", 3);
+ h = cmsOpenProfileFromMem(ContextID, "123", 3);
if (h != NULL) {
- cmsCloseProfile(DbgThread(), h);
+ cmsCloseProfile(ContextID, h);
return 0;
}
@@ -5563,13 +5556,13 @@ cmsInt32Number CheckBadProfiles(void)
static
-cmsInt32Number CheckErrReportingOnBadProfiles(void)
+cmsInt32Number CheckErrReportingOnBadProfiles(cmsContext ContextID)
{
cmsInt32Number rc;
- cmsSetLogErrorHandler(DbgThread(), ErrorReportingFunction);
- rc = CheckBadProfiles();
- cmsSetLogErrorHandler(DbgThread(), FatalErrorQuit);
+ cmsSetLogErrorHandler(ContextID, ErrorReportingFunction);
+ rc = CheckBadProfiles(ContextID);
+ cmsSetLogErrorHandler(ContextID, FatalErrorQuit);
// Reset the error state
TrappedError = FALSE;
@@ -5578,57 +5571,57 @@ cmsInt32Number CheckErrReportingOnBadProfiles(void)
static
-cmsInt32Number CheckBadTransforms(void)
+cmsInt32Number CheckBadTransforms(cmsContext ContextID)
{
- cmsHPROFILE h1 = cmsCreate_sRGBProfile(DbgThread());
+ cmsHPROFILE h1 = cmsCreate_sRGBProfile(ContextID);
cmsHTRANSFORM x1;
- x1 = cmsCreateTransform(DbgThread(), NULL, 0, NULL, 0, 0, 0);
+ x1 = cmsCreateTransform(ContextID, NULL, 0, NULL, 0, 0, 0);
if (x1 != NULL) {
- cmsDeleteTransform(DbgThread(), x1);
+ cmsDeleteTransform(ContextID, x1);
return 0;
}
- x1 = cmsCreateTransform(DbgThread(), h1, TYPE_RGB_8, h1, TYPE_RGB_8, 12345, 0);
+ x1 = cmsCreateTransform(ContextID, h1, TYPE_RGB_8, h1, TYPE_RGB_8, 12345, 0);
if (x1 != NULL) {
- cmsDeleteTransform(DbgThread(), x1);
+ cmsDeleteTransform(ContextID, x1);
return 0;
}
- x1 = cmsCreateTransform(DbgThread(), h1, TYPE_CMYK_8, h1, TYPE_RGB_8, 0, 0);
+ x1 = cmsCreateTransform(ContextID, h1, TYPE_CMYK_8, h1, TYPE_RGB_8, 0, 0);
if (x1 != NULL) {
- cmsDeleteTransform(DbgThread(), x1);
+ cmsDeleteTransform(ContextID, x1);
return 0;
}
- x1 = cmsCreateTransform(DbgThread(), h1, TYPE_RGB_8, h1, TYPE_CMYK_8, 1, 0);
+ x1 = cmsCreateTransform(ContextID, h1, TYPE_RGB_8, h1, TYPE_CMYK_8, 1, 0);
if (x1 != NULL) {
- cmsDeleteTransform(DbgThread(), x1);
+ cmsDeleteTransform(ContextID, x1);
return 0;
}
// sRGB does its output as XYZ!
- x1 = cmsCreateTransform(DbgThread(), h1, TYPE_RGB_8, NULL, TYPE_Lab_8, 1, 0);
+ x1 = cmsCreateTransform(ContextID, h1, TYPE_RGB_8, NULL, TYPE_Lab_8, 1, 0);
if (x1 != NULL) {
- cmsDeleteTransform(DbgThread(), x1);
+ cmsDeleteTransform(ContextID, x1);
return 0;
}
- cmsCloseProfile(DbgThread(), h1);
+ cmsCloseProfile(ContextID, h1);
{
- cmsHPROFILE hp1 = cmsOpenProfileFromFile(DbgThread(), "test1.icc", "r");
- cmsHPROFILE hp2 = cmsCreate_sRGBProfile(DbgThread());
+ cmsHPROFILE hp1 = cmsOpenProfileFromFile(ContextID, "test1.icc", "r");
+ cmsHPROFILE hp2 = cmsCreate_sRGBProfile(ContextID);
- x1 = cmsCreateTransform(DbgThread(), hp1, TYPE_BGR_8, hp2, TYPE_BGR_8, INTENT_PERCEPTUAL, 0);
+ x1 = cmsCreateTransform(ContextID, hp1, TYPE_BGR_8, hp2, TYPE_BGR_8, INTENT_PERCEPTUAL, 0);
- cmsCloseProfile(DbgThread(), hp1); cmsCloseProfile(DbgThread(), hp2);
+ cmsCloseProfile(ContextID, hp1); cmsCloseProfile(ContextID, hp2);
if (x1 != NULL) {
- cmsDeleteTransform(DbgThread(), x1);
+ cmsDeleteTransform(ContextID, x1);
return 0;
}
}
@@ -5638,13 +5631,13 @@ cmsInt32Number CheckBadTransforms(void)
}
static
-cmsInt32Number CheckErrReportingOnBadTransforms(void)
+cmsInt32Number CheckErrReportingOnBadTransforms(cmsContext ContextID)
{
cmsInt32Number rc;
- cmsSetLogErrorHandler(DbgThread(), ErrorReportingFunction);
- rc = CheckBadTransforms();
- cmsSetLogErrorHandler(DbgThread(), FatalErrorQuit);
+ cmsSetLogErrorHandler(ContextID, ErrorReportingFunction);
+ rc = CheckBadTransforms(ContextID);
+ cmsSetLogErrorHandler(ContextID, FatalErrorQuit);
// Reset the error state
TrappedError = FALSE;
@@ -5658,7 +5651,7 @@ cmsInt32Number CheckErrReportingOnBadTransforms(void)
// Check a linear xform
static
-cmsInt32Number Check8linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
+cmsInt32Number Check8linearXFORM(cmsContext ContextID, cmsHTRANSFORM xform, cmsInt32Number nChan)
{
cmsInt32Number n2, i, j;
cmsUInt8Number Inw[cmsMAXCHANNELS], Outw[cmsMAXCHANNELS];
@@ -5668,7 +5661,7 @@ cmsInt32Number Check8linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
for (j=0; j < 0xFF; j++) {
memset(Inw, j, sizeof(Inw));
- cmsDoTransform(DbgThread(), xform, Inw, Outw, 1);
+ cmsDoTransform(ContextID, xform, Inw, Outw, 1);
for (i=0; i < nChan; i++) {
@@ -5689,7 +5682,7 @@ cmsInt32Number Check8linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
}
static
-cmsInt32Number Compare8bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
+cmsInt32Number Compare8bitXFORM(cmsContext ContextID, cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
{
cmsInt32Number n2, i, j;
cmsUInt8Number Inw[cmsMAXCHANNELS], Outw1[cmsMAXCHANNELS], Outw2[cmsMAXCHANNELS];;
@@ -5699,8 +5692,8 @@ cmsInt32Number Compare8bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsI
for (j=0; j < 0xFF; j++) {
memset(Inw, j, sizeof(Inw));
- cmsDoTransform(DbgThread(), xform1, Inw, Outw1, 1);
- cmsDoTransform(DbgThread(), xform2, Inw, Outw2, 1);
+ cmsDoTransform(ContextID, xform1, Inw, Outw1, 1);
+ cmsDoTransform(ContextID, xform2, Inw, Outw2, 1);
for (i=0; i < nChan; i++) {
@@ -5724,7 +5717,7 @@ cmsInt32Number Compare8bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsI
// Check a linear xform
static
-cmsInt32Number Check16linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
+cmsInt32Number Check16linearXFORM(cmsContext ContextID, cmsHTRANSFORM xform, cmsInt32Number nChan)
{
cmsInt32Number n2, i, j;
cmsUInt16Number Inw[cmsMAXCHANNELS], Outw[cmsMAXCHANNELS];
@@ -5734,7 +5727,7 @@ cmsInt32Number Check16linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
for (i=0; i < nChan; i++) Inw[i] = (cmsUInt16Number) j;
- cmsDoTransform(DbgThread(), xform, Inw, Outw, 1);
+ cmsDoTransform(ContextID, xform, Inw, Outw, 1);
for (i=0; i < nChan; i++) {
@@ -5756,7 +5749,7 @@ cmsInt32Number Check16linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
}
static
-cmsInt32Number Compare16bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
+cmsInt32Number Compare16bitXFORM(cmsContext ContextID, cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
{
cmsInt32Number n2, i, j;
cmsUInt16Number Inw[cmsMAXCHANNELS], Outw1[cmsMAXCHANNELS], Outw2[cmsMAXCHANNELS];;
@@ -5767,8 +5760,8 @@ cmsInt32Number Compare16bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cms
for (i=0; i < nChan; i++) Inw[i] = (cmsUInt16Number) j;
- cmsDoTransform(DbgThread(), xform1, Inw, Outw1, 1);
- cmsDoTransform(DbgThread(), xform2, Inw, Outw2, 1);
+ cmsDoTransform(ContextID, xform1, Inw, Outw1, 1);
+ cmsDoTransform(ContextID, xform2, Inw, Outw2, 1);
for (i=0; i < nChan; i++) {
@@ -5792,7 +5785,7 @@ cmsInt32Number Compare16bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cms
// Check a linear xform
static
-cmsInt32Number CheckFloatlinearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
+cmsInt32Number CheckFloatlinearXFORM(cmsContext ContextID, cmsHTRANSFORM xform, cmsInt32Number nChan)
{
cmsInt32Number i, j;
cmsFloat32Number In[cmsMAXCHANNELS], Out[cmsMAXCHANNELS];
@@ -5801,7 +5794,7 @@ cmsInt32Number CheckFloatlinearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
for (i=0; i < nChan; i++) In[i] = (cmsFloat32Number) (j / 65535.0);;
- cmsDoTransform(DbgThread(), xform, In, Out, 1);
+ cmsDoTransform(ContextID, xform, In, Out, 1);
for (i=0; i < nChan; i++) {
@@ -5817,7 +5810,7 @@ cmsInt32Number CheckFloatlinearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan)
// Check a linear xform
static
-cmsInt32Number CompareFloatXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
+cmsInt32Number CompareFloatXFORM(cmsContext ContextID, cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan)
{
cmsInt32Number i, j;
cmsFloat32Number In[cmsMAXCHANNELS], Out1[cmsMAXCHANNELS], Out2[cmsMAXCHANNELS];
@@ -5826,8 +5819,8 @@ cmsInt32Number CompareFloatXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cms
for (i=0; i < nChan; i++) In[i] = (cmsFloat32Number) (j / 65535.0);;
- cmsDoTransform(DbgThread(), xform1, In, Out1, 1);
- cmsDoTransform(DbgThread(), xform2, In, Out2, 1);
+ cmsDoTransform(ContextID, xform1, In, Out1, 1);
+ cmsDoTransform(ContextID, xform2, In, Out2, 1);
for (i=0; i < nChan; i++) {
@@ -5845,7 +5838,7 @@ cmsInt32Number CompareFloatXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cms
// Curves only transforms ----------------------------------------------------------------------------------------
static
-cmsInt32Number CheckCurvesOnlyTransforms(void)
+cmsInt32Number CheckCurvesOnlyTransforms(cmsContext ContextID)
{
cmsHTRANSFORM xform1, xform2;
@@ -5854,64 +5847,64 @@ cmsInt32Number CheckCurvesOnlyTransforms(void)
cmsInt32Number rc = 1;
- c1 = cmsBuildGamma(DbgThread(), 2.2);
- c2 = cmsBuildGamma(DbgThread(), 1/2.2);
- c3 = cmsBuildGamma(DbgThread(), 4.84);
+ c1 = cmsBuildGamma(ContextID, 2.2);
+ c2 = cmsBuildGamma(ContextID, 1/2.2);
+ c3 = cmsBuildGamma(ContextID, 4.84);
- h1 = cmsCreateLinearizationDeviceLink(DbgThread(), cmsSigGrayData, &c1);
- h2 = cmsCreateLinearizationDeviceLink(DbgThread(), cmsSigGrayData, &c2);
- h3 = cmsCreateLinearizationDeviceLink(DbgThread(), cmsSigGrayData, &c3);
+ h1 = cmsCreateLinearizationDeviceLink(ContextID, cmsSigGrayData, &c1);
+ h2 = cmsCreateLinearizationDeviceLink(ContextID, cmsSigGrayData, &c2);
+ h3 = cmsCreateLinearizationDeviceLink(ContextID, cmsSigGrayData, &c3);
SubTest("Gray float optimizeable transform");
- xform1 = cmsCreateTransform(DbgThread(), h1, TYPE_GRAY_FLT, h2, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, 0);
- rc &= CheckFloatlinearXFORM(xform1, 1);
- cmsDeleteTransform(DbgThread(), xform1);
+ xform1 = cmsCreateTransform(ContextID, h1, TYPE_GRAY_FLT, h2, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, 0);
+ rc &= CheckFloatlinearXFORM(ContextID, xform1, 1);
+ cmsDeleteTransform(ContextID, xform1);
if (rc == 0) goto Error;
SubTest("Gray 8 optimizeable transform");
- xform1 = cmsCreateTransform(DbgThread(), h1, TYPE_GRAY_8, h2, TYPE_GRAY_8, INTENT_PERCEPTUAL, 0);
- rc &= Check8linearXFORM(xform1, 1);
- cmsDeleteTransform(DbgThread(), xform1);
+ xform1 = cmsCreateTransform(ContextID, h1, TYPE_GRAY_8, h2, TYPE_GRAY_8, INTENT_PERCEPTUAL, 0);
+ rc &= Check8linearXFORM(ContextID, xform1, 1);
+ cmsDeleteTransform(ContextID, xform1);
if (rc == 0) goto Error;
SubTest("Gray 16 optimizeable transform");
- xform1 = cmsCreateTransform(DbgThread(), h1, TYPE_GRAY_16, h2, TYPE_GRAY_16, INTENT_PERCEPTUAL, 0);
- rc &= Check16linearXFORM(xform1, 1);
- cmsDeleteTransform(DbgThread(), xform1);
+ xform1 = cmsCreateTransform(ContextID, h1, TYPE_GRAY_16, h2, TYPE_GRAY_16, INTENT_PERCEPTUAL, 0);
+ rc &= Check16linearXFORM(ContextID, xform1, 1);
+ cmsDeleteTransform(ContextID, xform1);
if (rc == 0) goto Error;
SubTest("Gray float non-optimizeable transform");
- xform1 = cmsCreateTransform(DbgThread(), h1, TYPE_GRAY_FLT, h1, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, 0);
- xform2 = cmsCreateTransform(DbgThread(), h3, TYPE_GRAY_FLT, NULL, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, 0);
+ xform1 = cmsCreateTransform(ContextID, h1, TYPE_GRAY_FLT, h1, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, 0);
+ xform2 = cmsCreateTransform(ContextID, h3, TYPE_GRAY_FLT, NULL, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, 0);
- rc &= CompareFloatXFORM(xform1, xform2, 1);
- cmsDeleteTransform(DbgThread(), xform1);
- cmsDeleteTransform(DbgThread(), xform2);
+ rc &= CompareFloatXFORM(ContextID, xform1, xform2, 1);
+ cmsDeleteTransform(ContextID, xform1);
+ cmsDeleteTransform(ContextID, xform2);
if (rc == 0) goto Error;
SubTest("Gray 8 non-optimizeable transform");
- xform1 = cmsCreateTransform(DbgThread(), h1, TYPE_GRAY_8, h1, TYPE_GRAY_8, INTENT_PERCEPTUAL, 0);
- xform2 = cmsCreateTransform(DbgThread(), h3, TYPE_GRAY_8, NULL, TYPE_GRAY_8, INTENT_PERCEPTUAL, 0);
+ xform1 = cmsCreateTransform(ContextID, h1, TYPE_GRAY_8, h1, TYPE_GRAY_8, INTENT_PERCEPTUAL, 0);
+ xform2 = cmsCreateTransform(ContextID, h3, TYPE_GRAY_8, NULL, TYPE_GRAY_8, INTENT_PERCEPTUAL, 0);
- rc &= Compare8bitXFORM(xform1, xform2, 1);
- cmsDeleteTransform(DbgThread(), xform1);
- cmsDeleteTransform(DbgThread(), xform2);
+ rc &= Compare8bitXFORM(ContextID, xform1, xform2, 1);
+ cmsDeleteTransform(ContextID, xform1);
+ cmsDeleteTransform(ContextID, xform2);
if (rc == 0) goto Error;
SubTest("Gray 16 non-optimizeable transform");
- xform1 = cmsCreateTransform(DbgThread(), h1, TYPE_GRAY_16, h1, TYPE_GRAY_16, INTENT_PERCEPTUAL, 0);
- xform2 = cmsCreateTransform(DbgThread(), h3, TYPE_GRAY_16, NULL, TYPE_GRAY_16, INTENT_PERCEPTUAL, 0);
+ xform1 = cmsCreateTransform(ContextID, h1, TYPE_GRAY_16, h1, TYPE_GRAY_16, INTENT_PERCEPTUAL, 0);
+ xform2 = cmsCreateTransform(ContextID, h3, TYPE_GRAY_16, NULL, TYPE_GRAY_16, INTENT_PERCEPTUAL, 0);
- rc &= Compare16bitXFORM(xform1, xform2, 1);
- cmsDeleteTransform(DbgThread(), xform1);
- cmsDeleteTransform(DbgThread(), xform2);
+ rc &= Compare16bitXFORM(ContextID, xform1, xform2, 1);
+ cmsDeleteTransform(ContextID, xform1);
+ cmsDeleteTransform(ContextID, xform2);
if (rc == 0) goto Error;
Error:
- cmsCloseProfile(DbgThread(), h1); cmsCloseProfile(DbgThread(), h2); cmsCloseProfile(DbgThread(), h3);
- cmsFreeToneCurve(DbgThread(), c1); cmsFreeToneCurve(DbgThread(), c2); cmsFreeToneCurve(DbgThread(), c3);
+ cmsCloseProfile(ContextID, h1); cmsCloseProfile(ContextID, h2); cmsCloseProfile(ContextID, h3);
+ cmsFreeToneCurve(ContextID, c1); cmsFreeToneCurve(ContextID, c2); cmsFreeToneCurve(ContextID, c3);
return rc;
}
@@ -5923,21 +5916,21 @@ Error:
static cmsFloat64Number MaxDE;
static
-cmsInt32Number CheckOneLab(cmsHTRANSFORM xform, cmsFloat64Number L, cmsFloat64Number a, cmsFloat64Number b)
+cmsInt32Number CheckOneLab(cmsContext ContextID, cmsHTRANSFORM xform, cmsFloat64Number L, cmsFloat64Number a, cmsFloat64Number b)
{
cmsCIELab In, Out;
cmsFloat64Number dE;
In.L = L; In.a = a; In.b = b;
- cmsDoTransform(DbgThread(), xform, &In, &Out, 1);
+ cmsDoTransform(ContextID, xform, &In, &Out, 1);
- dE = cmsDeltaE(DbgThread(), &In, &Out);
+ dE = cmsDeltaE(ContextID, &In, &Out);
if (dE > MaxDE) MaxDE = dE;
if (MaxDE > 0.003) {
Fail("dE=%f Lab1=(%f, %f, %f)\n\tLab2=(%f %f %f)", MaxDE, In.L, In.a, In.b, Out.L, Out.a, Out.b);
- cmsDoTransform(DbgThread(), xform, &In, &Out, 1);
+ cmsDoTransform(ContextID, xform, &In, &Out, 1);
return 0;
}
@@ -5946,7 +5939,7 @@ 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(cmsContext ContextID, cmsHTRANSFORM xform)
{
cmsInt32Number L, a, b;
@@ -5957,7 +5950,7 @@ cmsInt32Number CheckSeveralLab(cmsHTRANSFORM xform)
for (b = 0; b < 65536; b += 1111) {
- if (!CheckOneLab(xform, (L * 100.0) / 65535.0,
+ if (!CheckOneLab(ContextID, xform, (L * 100.0) / 65535.0,
(a / 257.0) - 128, (b / 257.0) - 128))
return 0;
}
@@ -5970,171 +5963,171 @@ cmsInt32Number CheckSeveralLab(cmsHTRANSFORM xform)
static
-cmsInt32Number OneTrivialLab(cmsHPROFILE hLab1, cmsHPROFILE hLab2, const char* txt)
+cmsInt32Number OneTrivialLab(cmsContext ContextID, cmsHPROFILE hLab1, cmsHPROFILE hLab2, const char* txt)
{
cmsHTRANSFORM xform;
cmsInt32Number rc;
SubTest(txt);
- xform = cmsCreateTransform(DbgThread(), hLab1, TYPE_Lab_DBL, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hLab1); cmsCloseProfile(DbgThread(), hLab2);
+ xform = cmsCreateTransform(ContextID, hLab1, TYPE_Lab_DBL, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hLab1); cmsCloseProfile(ContextID, hLab2);
- rc = CheckSeveralLab(xform);
- cmsDeleteTransform(DbgThread(), xform);
+ rc = CheckSeveralLab(ContextID, xform);
+ cmsDeleteTransform(ContextID, xform);
return rc;
}
static
-cmsInt32Number CheckFloatLabTransforms(void)
+cmsInt32Number CheckFloatLabTransforms(cmsContext ContextID)
{
- return OneTrivialLab(cmsCreateLab4Profile(DbgThread(), NULL), cmsCreateLab4Profile(DbgThread(), NULL), "Lab4/Lab4") &&
- OneTrivialLab(cmsCreateLab2Profile(DbgThread(), NULL), cmsCreateLab2Profile(DbgThread(), NULL), "Lab2/Lab2") &&
- OneTrivialLab(cmsCreateLab4Profile(DbgThread(), NULL), cmsCreateLab2Profile(DbgThread(), NULL), "Lab4/Lab2") &&
- OneTrivialLab(cmsCreateLab2Profile(DbgThread(), NULL), cmsCreateLab4Profile(DbgThread(), NULL), "Lab2/Lab4");
+ return OneTrivialLab(ContextID, cmsCreateLab4Profile(ContextID, NULL), cmsCreateLab4Profile(ContextID, NULL), "Lab4/Lab4") &&
+ OneTrivialLab(ContextID, cmsCreateLab2Profile(ContextID, NULL), cmsCreateLab2Profile(ContextID, NULL), "Lab2/Lab2") &&
+ OneTrivialLab(ContextID, cmsCreateLab4Profile(ContextID, NULL), cmsCreateLab2Profile(ContextID, NULL), "Lab4/Lab2") &&
+ OneTrivialLab(ContextID, cmsCreateLab2Profile(ContextID, NULL), cmsCreateLab4Profile(ContextID, NULL), "Lab2/Lab4");
}
static
-cmsInt32Number CheckEncodedLabTransforms(void)
+cmsInt32Number CheckEncodedLabTransforms(cmsContext ContextID)
{
cmsHTRANSFORM xform;
cmsUInt16Number In[3];
cmsCIELab Lab;
cmsCIELab White = { 100, 0, 0 };
- cmsHPROFILE hLab1 = cmsCreateLab4Profile(DbgThread(), NULL);
- cmsHPROFILE hLab2 = cmsCreateLab4Profile(DbgThread(), NULL);
+ cmsHPROFILE hLab1 = cmsCreateLab4Profile(ContextID, NULL);
+ cmsHPROFILE hLab2 = cmsCreateLab4Profile(ContextID, NULL);
- xform = cmsCreateTransform(DbgThread(), hLab1, TYPE_Lab_16, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hLab1); cmsCloseProfile(DbgThread(), hLab2);
+ xform = cmsCreateTransform(ContextID, hLab1, TYPE_Lab_16, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hLab1); cmsCloseProfile(ContextID, hLab2);
In[0] = 0xFFFF;
In[1] = 0x8080;
In[2] = 0x8080;
- cmsDoTransform(DbgThread(), xform, In, &Lab, 1);
+ cmsDoTransform(ContextID, xform, In, &Lab, 1);
- if (cmsDeltaE(DbgThread(), &Lab, &White) > 0.0001) return 0;
- cmsDeleteTransform(DbgThread(), xform);
+ if (cmsDeltaE(ContextID, &Lab, &White) > 0.0001) return 0;
+ cmsDeleteTransform(ContextID, xform);
- hLab1 = cmsCreateLab2Profile(DbgThread(), NULL);
- hLab2 = cmsCreateLab4Profile(DbgThread(), NULL);
+ hLab1 = cmsCreateLab2Profile(ContextID, NULL);
+ hLab2 = cmsCreateLab4Profile(ContextID, NULL);
- xform = cmsCreateTransform(DbgThread(), hLab1, TYPE_LabV2_16, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hLab1); cmsCloseProfile(DbgThread(), hLab2);
+ xform = cmsCreateTransform(ContextID, hLab1, TYPE_LabV2_16, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hLab1); cmsCloseProfile(ContextID, hLab2);
In[0] = 0xFF00;
In[1] = 0x8000;
In[2] = 0x8000;
- cmsDoTransform(DbgThread(), xform, In, &Lab, 1);
+ cmsDoTransform(ContextID, xform, In, &Lab, 1);
- if (cmsDeltaE(DbgThread(), &Lab, &White) > 0.0001) return 0;
+ if (cmsDeltaE(ContextID, &Lab, &White) > 0.0001) return 0;
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
- hLab2 = cmsCreateLab2Profile(DbgThread(), NULL);
- hLab1 = cmsCreateLab4Profile(DbgThread(), NULL);
+ hLab2 = cmsCreateLab2Profile(ContextID, NULL);
+ hLab1 = cmsCreateLab4Profile(ContextID, NULL);
- xform = cmsCreateTransform(DbgThread(), hLab1, TYPE_Lab_DBL, hLab2, TYPE_LabV2_16, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hLab1); cmsCloseProfile(DbgThread(), hLab2);
+ xform = cmsCreateTransform(ContextID, hLab1, TYPE_Lab_DBL, hLab2, TYPE_LabV2_16, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hLab1); cmsCloseProfile(ContextID, hLab2);
Lab.L = 100;
Lab.a = 0;
Lab.b = 0;
- cmsDoTransform(DbgThread(), xform, &Lab, In, 1);
+ cmsDoTransform(ContextID, xform, &Lab, In, 1);
if (In[0] != 0xFF00 ||
In[1] != 0x8000 ||
In[2] != 0x8000) return 0;
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
- hLab1 = cmsCreateLab4Profile(DbgThread(), NULL);
- hLab2 = cmsCreateLab4Profile(DbgThread(), NULL);
+ hLab1 = cmsCreateLab4Profile(ContextID, NULL);
+ hLab2 = cmsCreateLab4Profile(ContextID, NULL);
- xform = cmsCreateTransform(DbgThread(), hLab1, TYPE_Lab_DBL, hLab2, TYPE_Lab_16, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hLab1); cmsCloseProfile(DbgThread(), hLab2);
+ xform = cmsCreateTransform(ContextID, hLab1, TYPE_Lab_DBL, hLab2, TYPE_Lab_16, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hLab1); cmsCloseProfile(ContextID, hLab2);
Lab.L = 100;
Lab.a = 0;
Lab.b = 0;
- cmsDoTransform(DbgThread(), xform, &Lab, In, 1);
+ cmsDoTransform(ContextID, xform, &Lab, In, 1);
if (In[0] != 0xFFFF ||
In[1] != 0x8080 ||
In[2] != 0x8080) return 0;
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
return 1;
}
static
-cmsInt32Number CheckStoredIdentities(void)
+cmsInt32Number CheckStoredIdentities(cmsContext ContextID)
{
cmsHPROFILE hLab, hLink, h4, h2;
cmsHTRANSFORM xform;
cmsInt32Number rc = 1;
- hLab = cmsCreateLab4Profile(DbgThread(), NULL);
- xform = cmsCreateTransform(DbgThread(), hLab, TYPE_Lab_8, hLab, TYPE_Lab_8, 0, 0);
+ hLab = cmsCreateLab4Profile(ContextID, NULL);
+ xform = cmsCreateTransform(ContextID, hLab, TYPE_Lab_8, hLab, TYPE_Lab_8, 0, 0);
- hLink = cmsTransform2DeviceLink(NULL, xform, 3.4, 0);
- cmsSaveProfileToFile(DbgThread(), hLink, "abstractv2.icc");
- cmsCloseProfile(DbgThread(), hLink);
+ hLink = cmsTransform2DeviceLink(ContextID, xform, 3.4, 0);
+ cmsSaveProfileToFile(ContextID, hLink, "abstractv2.icc");
+ cmsCloseProfile(ContextID, hLink);
- hLink = cmsTransform2DeviceLink(NULL, xform, 4.3, 0);
- cmsSaveProfileToFile(DbgThread(), hLink, "abstractv4.icc");
- cmsCloseProfile(DbgThread(), hLink);
+ hLink = cmsTransform2DeviceLink(ContextID, xform, 4.3, 0);
+ cmsSaveProfileToFile(ContextID, hLink, "abstractv4.icc");
+ cmsCloseProfile(ContextID, hLink);
- cmsDeleteTransform(DbgThread(), xform);
- cmsCloseProfile(DbgThread(), hLab);
+ cmsDeleteTransform(ContextID, xform);
+ cmsCloseProfile(ContextID, hLab);
- h4 = cmsOpenProfileFromFile(DbgThread(), "abstractv4.icc", "r");
+ h4 = cmsOpenProfileFromFile(ContextID, "abstractv4.icc", "r");
- xform = cmsCreateTransform(DbgThread(), h4, TYPE_Lab_DBL, h4, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ xform = cmsCreateTransform(ContextID, h4, TYPE_Lab_DBL, h4, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
SubTest("V4");
- rc &= CheckSeveralLab(xform);
+ rc &= CheckSeveralLab(ContextID, xform);
- cmsDeleteTransform(DbgThread(), xform);
- cmsCloseProfile(DbgThread(), h4);
+ cmsDeleteTransform(ContextID, xform);
+ cmsCloseProfile(ContextID, h4);
if (!rc) goto Error;
SubTest("V2");
- h2 = cmsOpenProfileFromFile(DbgThread(), "abstractv2.icc", "r");
+ h2 = cmsOpenProfileFromFile(ContextID, "abstractv2.icc", "r");
- xform = cmsCreateTransform(DbgThread(), h2, TYPE_Lab_DBL, h2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
- rc &= CheckSeveralLab(xform);
- cmsDeleteTransform(DbgThread(), xform);
- cmsCloseProfile(DbgThread(), h2);
+ xform = cmsCreateTransform(ContextID, h2, TYPE_Lab_DBL, h2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ rc &= CheckSeveralLab(ContextID, xform);
+ cmsDeleteTransform(ContextID, xform);
+ cmsCloseProfile(ContextID, h2);
if (!rc) goto Error;
SubTest("V2 -> V4");
- h2 = cmsOpenProfileFromFile(DbgThread(), "abstractv2.icc", "r");
- h4 = cmsOpenProfileFromFile(DbgThread(), "abstractv4.icc", "r");
+ h2 = cmsOpenProfileFromFile(ContextID, "abstractv2.icc", "r");
+ h4 = cmsOpenProfileFromFile(ContextID, "abstractv4.icc", "r");
- xform = cmsCreateTransform(DbgThread(), h4, TYPE_Lab_DBL, h2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
- rc &= CheckSeveralLab(xform);
- cmsDeleteTransform(DbgThread(), xform);
- cmsCloseProfile(DbgThread(), h2);
- cmsCloseProfile(DbgThread(), h4);
+ xform = cmsCreateTransform(ContextID, h4, TYPE_Lab_DBL, h2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ rc &= CheckSeveralLab(ContextID, xform);
+ cmsDeleteTransform(ContextID, xform);
+ cmsCloseProfile(ContextID, h2);
+ cmsCloseProfile(ContextID, h4);
SubTest("V4 -> V2");
- h2 = cmsOpenProfileFromFile(DbgThread(), "abstractv2.icc", "r");
- h4 = cmsOpenProfileFromFile(DbgThread(), "abstractv4.icc", "r");
+ h2 = cmsOpenProfileFromFile(ContextID, "abstractv2.icc", "r");
+ h4 = cmsOpenProfileFromFile(ContextID, "abstractv4.icc", "r");
- xform = cmsCreateTransform(DbgThread(), h2, TYPE_Lab_DBL, h4, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
- rc &= CheckSeveralLab(xform);
- cmsDeleteTransform(DbgThread(), xform);
- cmsCloseProfile(DbgThread(), h2);
- cmsCloseProfile(DbgThread(), h4);
+ xform = cmsCreateTransform(ContextID, h2, TYPE_Lab_DBL, h4, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ rc &= CheckSeveralLab(ContextID, xform);
+ cmsDeleteTransform(ContextID, xform);
+ cmsCloseProfile(ContextID, h2);
+ cmsCloseProfile(ContextID, h4);
Error:
remove("abstractv2.icc");
@@ -6147,23 +6140,23 @@ Error:
// Check a simple xform from a matrix profile to itself. Test floating point accuracy.
static
-cmsInt32Number CheckMatrixShaperXFORMFloat(void)
+cmsInt32Number CheckMatrixShaperXFORMFloat(cmsContext ContextID)
{
cmsHPROFILE hAbove, hSRGB;
cmsHTRANSFORM xform;
cmsInt32Number rc1, rc2;
- hAbove = Create_AboveRGB();
- xform = cmsCreateTransform(DbgThread(), hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hAbove);
- rc1 = CheckFloatlinearXFORM(xform, 3);
- cmsDeleteTransform(DbgThread(), xform);
+ hAbove = Create_AboveRGB(ContextID);
+ xform = cmsCreateTransform(ContextID, hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hAbove);
+ rc1 = CheckFloatlinearXFORM(ContextID, xform, 3);
+ cmsDeleteTransform(ContextID, xform);
- hSRGB = cmsCreate_sRGBProfile(DbgThread());
- xform = cmsCreateTransform(DbgThread(), hSRGB, TYPE_RGB_FLT, hSRGB, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hSRGB);
- rc2 = CheckFloatlinearXFORM(xform, 3);
- cmsDeleteTransform(DbgThread(), xform);
+ hSRGB = cmsCreate_sRGBProfile(ContextID);
+ xform = cmsCreateTransform(ContextID, hSRGB, TYPE_RGB_FLT, hSRGB, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hSRGB);
+ rc2 = CheckFloatlinearXFORM(ContextID, xform, 3);
+ cmsDeleteTransform(ContextID, xform);
return rc1 && rc2;
@@ -6171,24 +6164,24 @@ cmsInt32Number CheckMatrixShaperXFORMFloat(void)
// Check a simple xform from a matrix profile to itself. Test 16 bits accuracy.
static
-cmsInt32Number CheckMatrixShaperXFORM16(void)
+cmsInt32Number CheckMatrixShaperXFORM16(cmsContext ContextID)
{
cmsHPROFILE hAbove, hSRGB;
cmsHTRANSFORM xform;
cmsInt32Number rc1, rc2;
- hAbove = Create_AboveRGB();
- xform = cmsCreateTransform(DbgThread(), hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hAbove);
+ hAbove = Create_AboveRGB(ContextID);
+ xform = cmsCreateTransform(ContextID, hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hAbove);
- rc1 = Check16linearXFORM(xform, 3);
- cmsDeleteTransform(DbgThread(), xform);
+ rc1 = Check16linearXFORM(ContextID, xform, 3);
+ cmsDeleteTransform(ContextID, xform);
- hSRGB = cmsCreate_sRGBProfile(DbgThread());
- xform = cmsCreateTransform(DbgThread(), hSRGB, TYPE_RGB_16, hSRGB, TYPE_RGB_16, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hSRGB);
- rc2 = Check16linearXFORM(xform, 3);
- cmsDeleteTransform(DbgThread(), xform);
+ hSRGB = cmsCreate_sRGBProfile(ContextID);
+ xform = cmsCreateTransform(ContextID, hSRGB, TYPE_RGB_16, hSRGB, TYPE_RGB_16, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hSRGB);
+ rc2 = Check16linearXFORM(ContextID, xform, 3);
+ cmsDeleteTransform(ContextID, xform);
return rc1 && rc2;
@@ -6197,23 +6190,23 @@ cmsInt32Number CheckMatrixShaperXFORM16(void)
// Check a simple xform from a matrix profile to itself. Test 8 bits accuracy.
static
-cmsInt32Number CheckMatrixShaperXFORM8(void)
+cmsInt32Number CheckMatrixShaperXFORM8(cmsContext ContextID)
{
cmsHPROFILE hAbove, hSRGB;
cmsHTRANSFORM xform;
cmsInt32Number rc1, rc2;
- hAbove = Create_AboveRGB();
- xform = cmsCreateTransform(DbgThread(), hAbove, TYPE_RGB_8, hAbove, TYPE_RGB_8, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hAbove);
- rc1 = Check8linearXFORM(xform, 3);
- cmsDeleteTransform(DbgThread(), xform);
+ hAbove = Create_AboveRGB(ContextID);
+ xform = cmsCreateTransform(ContextID, hAbove, TYPE_RGB_8, hAbove, TYPE_RGB_8, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hAbove);
+ rc1 = Check8linearXFORM(ContextID, xform, 3);
+ cmsDeleteTransform(ContextID, xform);
- hSRGB = cmsCreate_sRGBProfile(DbgThread());
- xform = cmsCreateTransform(DbgThread(), hSRGB, TYPE_RGB_8, hSRGB, TYPE_RGB_8, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hSRGB);
- rc2 = Check8linearXFORM(xform, 3);
- cmsDeleteTransform(DbgThread(), xform);
+ hSRGB = cmsCreate_sRGBProfile(ContextID);
+ xform = cmsCreateTransform(ContextID, hSRGB, TYPE_RGB_8, hSRGB, TYPE_RGB_8, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hSRGB);
+ rc2 = Check8linearXFORM(ContextID, xform, 3);
+ cmsDeleteTransform(ContextID, xform);
return rc1 && rc2;
@@ -6232,7 +6225,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(cmsContext ContextID, cmsHTRANSFORM xform, cmsInt32Number R, cmsInt32Number G, cmsInt32Number B, cmsFloat64Number X, cmsFloat64Number Y, cmsFloat64Number Z, cmsFloat64Number err)
{
cmsFloat32Number RGB[3];
cmsFloat64Number Out[3];
@@ -6241,7 +6234,7 @@ cmsInt32Number CheckOneRGB_f(cmsHTRANSFORM xform, cmsInt32Number R, cmsInt32Numb
RGB[1] = (cmsFloat32Number) (G / 255.0);
RGB[2] = (cmsFloat32Number) (B / 255.0);
- cmsDoTransform(DbgThread(), xform, RGB, Out, 1);
+ cmsDoTransform(ContextID, xform, RGB, Out, 1);
return IsGoodVal("X", X , Out[0], err) &&
IsGoodVal("Y", Y , Out[1], err) &&
@@ -6249,43 +6242,43 @@ cmsInt32Number CheckOneRGB_f(cmsHTRANSFORM xform, cmsInt32Number R, cmsInt32Numb
}
static
-cmsInt32Number Chack_sRGB_Float(void)
+cmsInt32Number Chack_sRGB_Float(cmsContext ContextID)
{
cmsHPROFILE hsRGB, hXYZ, hLab;
cmsHTRANSFORM xform1, xform2;
cmsInt32Number rc;
- hsRGB = cmsCreate_sRGBProfile(DbgThread());
- hXYZ = cmsCreateXYZProfile(DbgThread());
- hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ hsRGB = cmsCreate_sRGBProfile(ContextID);
+ hXYZ = cmsCreateXYZProfile(ContextID);
+ hLab = cmsCreateLab4Profile(ContextID, NULL);
- xform1 = cmsCreateTransform(DbgThread(), hsRGB, TYPE_RGB_FLT, hXYZ, TYPE_XYZ_DBL,
+ xform1 = cmsCreateTransform(ContextID, hsRGB, TYPE_RGB_FLT, hXYZ, TYPE_XYZ_DBL,
INTENT_RELATIVE_COLORIMETRIC, 0);
- xform2 = cmsCreateTransform(DbgThread(), hsRGB, TYPE_RGB_FLT, hLab, TYPE_Lab_DBL,
+ xform2 = cmsCreateTransform(ContextID, hsRGB, TYPE_RGB_FLT, hLab, TYPE_Lab_DBL,
INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hsRGB);
- cmsCloseProfile(DbgThread(), hXYZ);
- cmsCloseProfile(DbgThread(), hLab);
+ cmsCloseProfile(ContextID, hsRGB);
+ cmsCloseProfile(ContextID, hXYZ);
+ cmsCloseProfile(ContextID, hLab);
MaxErr = 0;
// Xform 1 goes from 8 bits to XYZ,
- rc = CheckOneRGB_f(xform1, 1, 1, 1, 0.0002927, 0.0003035, 0.000250, 0.0001);
- rc &= CheckOneRGB_f(xform1, 127, 127, 127, 0.2046329, 0.212230, 0.175069, 0.0001);
- rc &= CheckOneRGB_f(xform1, 12, 13, 15, 0.0038364, 0.0039928, 0.003853, 0.0001);
- rc &= CheckOneRGB_f(xform1, 128, 0, 0, 0.0941240, 0.0480256, 0.003005, 0.0001);
- rc &= CheckOneRGB_f(xform1, 190, 25, 210, 0.3204592, 0.1605926, 0.468213, 0.0001);
+ rc = CheckOneRGB_f(ContextID, xform1, 1, 1, 1, 0.0002927, 0.0003035, 0.000250, 0.0001);
+ rc &= CheckOneRGB_f(ContextID, xform1, 127, 127, 127, 0.2046329, 0.212230, 0.175069, 0.0001);
+ rc &= CheckOneRGB_f(ContextID, xform1, 12, 13, 15, 0.0038364, 0.0039928, 0.003853, 0.0001);
+ rc &= CheckOneRGB_f(ContextID, xform1, 128, 0, 0, 0.0941240, 0.0480256, 0.003005, 0.0001);
+ rc &= CheckOneRGB_f(ContextID, xform1, 190, 25, 210, 0.3204592, 0.1605926, 0.468213, 0.0001);
// Xform 2 goes from 8 bits to Lab, we allow 0.01 error max
- rc &= CheckOneRGB_f(xform2, 1, 1, 1, 0.2741748, 0, 0, 0.01);
- rc &= CheckOneRGB_f(xform2, 127, 127, 127, 53.192776, 0, 0, 0.01);
- rc &= CheckOneRGB_f(xform2, 190, 25, 210, 47.052136, 74.565610, -56.883274, 0.01);
- rc &= CheckOneRGB_f(xform2, 128, 0, 0, 26.164701, 48.478171, 39.4384713, 0.01);
+ rc &= CheckOneRGB_f(ContextID, xform2, 1, 1, 1, 0.2741748, 0, 0, 0.01);
+ rc &= CheckOneRGB_f(ContextID, xform2, 127, 127, 127, 53.192776, 0, 0, 0.01);
+ rc &= CheckOneRGB_f(ContextID, xform2, 190, 25, 210, 47.052136, 74.565610, -56.883274, 0.01);
+ rc &= CheckOneRGB_f(ContextID, xform2, 128, 0, 0, 26.164701, 48.478171, 39.4384713, 0.01);
- cmsDeleteTransform(DbgThread(), xform1);
- cmsDeleteTransform(DbgThread(), xform2);
+ cmsDeleteTransform(ContextID, xform1);
+ cmsDeleteTransform(ContextID, xform2);
return rc;
}
@@ -6293,7 +6286,8 @@ cmsInt32Number Chack_sRGB_Float(void)
// ---------------------------------------------------
static
-cmsBool GetProfileRGBPrimaries(cmsHPROFILE hProfile,
+cmsBool GetProfileRGBPrimaries(cmsContext ContextID,
+ cmsHPROFILE hProfile,
cmsCIEXYZTRIPLE *result,
cmsUInt32Number intent)
{
@@ -6303,41 +6297,41 @@ cmsBool GetProfileRGBPrimaries(cmsHPROFILE hProfile,
{0., 1., 0.},
{0., 0., 1.}};
- hXYZ = cmsCreateXYZProfile(DbgThread());
+ hXYZ = cmsCreateXYZProfile(ContextID);
if (hXYZ == NULL) return FALSE;
- hTransform = cmsCreateTransform(DbgThread(), hProfile, TYPE_RGB_DBL, hXYZ, TYPE_XYZ_DBL,
+ hTransform = cmsCreateTransform(ContextID, hProfile, TYPE_RGB_DBL, hXYZ, TYPE_XYZ_DBL,
intent, cmsFLAGS_NOCACHE | cmsFLAGS_NOOPTIMIZE);
- cmsCloseProfile(DbgThread(), hXYZ);
+ cmsCloseProfile(ContextID, hXYZ);
if (hTransform == NULL) return FALSE;
- cmsDoTransform(DbgThread(), hTransform, rgb, result, 3);
- cmsDeleteTransform(DbgThread(), hTransform);
+ cmsDoTransform(ContextID, hTransform, rgb, result, 3);
+ cmsDeleteTransform(ContextID, hTransform);
return TRUE;
}
static
-int CheckRGBPrimaries(void)
+int CheckRGBPrimaries(cmsContext ContextID)
{
cmsHPROFILE hsRGB;
cmsCIEXYZTRIPLE tripXYZ;
cmsCIExyYTRIPLE tripxyY;
cmsBool result;
- cmsSetAdaptationState(DbgThread(), 0);
- hsRGB = cmsCreate_sRGBProfile(DbgThread());
+ cmsSetAdaptationState(ContextID, 0);
+ hsRGB = cmsCreate_sRGBProfile(ContextID);
if (!hsRGB) return 0;
- result = GetProfileRGBPrimaries(hsRGB, &tripXYZ,
+ result = GetProfileRGBPrimaries(ContextID, hsRGB, &tripXYZ,
INTENT_ABSOLUTE_COLORIMETRIC);
- cmsCloseProfile(DbgThread(), hsRGB);
+ cmsCloseProfile(ContextID, hsRGB);
if (!result) return 0;
- cmsXYZ2xyY(DbgThread(), &tripxyY.Red, &tripXYZ.Red);
- cmsXYZ2xyY(DbgThread(), &tripxyY.Green, &tripXYZ.Green);
- cmsXYZ2xyY(DbgThread(), &tripxyY.Blue, &tripXYZ.Blue);
+ cmsXYZ2xyY(ContextID, &tripxyY.Red, &tripXYZ.Red);
+ cmsXYZ2xyY(ContextID, &tripxyY.Green, &tripXYZ.Green);
+ cmsXYZ2xyY(ContextID, &tripxyY.Blue, &tripXYZ.Blue);
/* valus were taken from
http://en.wikipedia.org/wiki/RGB_color_spaces#Specifications */
@@ -6361,10 +6355,10 @@ int CheckRGBPrimaries(void)
// 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(cmsContext ContextID, cmsInt32Number Intent, const char *Profile1, const char* Profile2)
{
- cmsHPROFILE hSWOP = cmsOpenProfileFromFile(DbgThread(), Profile1, "r");
- cmsHPROFILE hFOGRA = cmsOpenProfileFromFile(DbgThread(), Profile2, "r");
+ cmsHPROFILE hSWOP = cmsOpenProfileFromFile(ContextID, Profile1, "r");
+ cmsHPROFILE hFOGRA = cmsOpenProfileFromFile(ContextID, Profile2, "r");
cmsHTRANSFORM xform, swop_lab, fogra_lab;
cmsFloat32Number CMYK1[4], CMYK2[4];
cmsCIELab Lab1, Lab2;
@@ -6372,12 +6366,12 @@ cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char
cmsFloat64Number DeltaL, Max;
cmsInt32Number i;
- hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ hLab = cmsCreateLab4Profile(ContextID, NULL);
- xform = cmsCreateTransform(DbgThread(), hSWOP, TYPE_CMYK_FLT, hFOGRA, TYPE_CMYK_FLT, Intent, 0);
+ xform = cmsCreateTransform(ContextID, hSWOP, TYPE_CMYK_FLT, hFOGRA, TYPE_CMYK_FLT, Intent, 0);
- swop_lab = cmsCreateTransform(DbgThread(), hSWOP, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, Intent, 0);
- fogra_lab = cmsCreateTransform(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, Intent, 0);
+ swop_lab = cmsCreateTransform(ContextID, hSWOP, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, Intent, 0);
+ fogra_lab = cmsCreateTransform(ContextID, hFOGRA, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, Intent, 0);
Max = 0;
for (i=0; i <= 100; i++) {
@@ -6387,9 +6381,9 @@ cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char
CMYK1[2] = 30;
CMYK1[3] = (cmsFloat32Number) i;
- cmsDoTransform(DbgThread(), swop_lab, CMYK1, &Lab1, 1);
- cmsDoTransform(DbgThread(), xform, CMYK1, CMYK2, 1);
- cmsDoTransform(DbgThread(), fogra_lab, CMYK2, &Lab2, 1);
+ cmsDoTransform(ContextID, swop_lab, CMYK1, &Lab1, 1);
+ cmsDoTransform(ContextID, xform, CMYK1, CMYK2, 1);
+ cmsDoTransform(ContextID, fogra_lab, CMYK2, &Lab2, 1);
DeltaL = fabs(Lab1.L - Lab2.L);
@@ -6397,10 +6391,10 @@ cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char
}
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
- xform = cmsCreateTransform(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, Intent, 0);
+ xform = cmsCreateTransform(ContextID, hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, Intent, 0);
for (i=0; i <= 100; i++) {
CMYK1[0] = 10;
@@ -6408,9 +6402,9 @@ cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char
CMYK1[2] = 30;
CMYK1[3] = (cmsFloat32Number) i;
- cmsDoTransform(DbgThread(), fogra_lab, CMYK1, &Lab1, 1);
- cmsDoTransform(DbgThread(), xform, CMYK1, CMYK2, 1);
- cmsDoTransform(DbgThread(), swop_lab, CMYK2, &Lab2, 1);
+ cmsDoTransform(ContextID, fogra_lab, CMYK1, &Lab1, 1);
+ cmsDoTransform(ContextID, xform, CMYK1, CMYK2, 1);
+ cmsDoTransform(ContextID, swop_lab, CMYK2, &Lab2, 1);
DeltaL = fabs(Lab1.L - Lab2.L);
@@ -6418,45 +6412,45 @@ cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char
}
- cmsCloseProfile(DbgThread(), hSWOP);
- cmsCloseProfile(DbgThread(), hFOGRA);
- cmsCloseProfile(DbgThread(), hLab);
+ cmsCloseProfile(ContextID, hSWOP);
+ cmsCloseProfile(ContextID, hFOGRA);
+ cmsCloseProfile(ContextID, hLab);
- cmsDeleteTransform(DbgThread(), xform);
- cmsDeleteTransform(DbgThread(), swop_lab);
- cmsDeleteTransform(DbgThread(), fogra_lab);
+ cmsDeleteTransform(ContextID, xform);
+ cmsDeleteTransform(ContextID, swop_lab);
+ cmsDeleteTransform(ContextID, fogra_lab);
return Max < 3.0;
}
static
-cmsInt32Number CheckCMYKRoundtrip(void)
+cmsInt32Number CheckCMYKRoundtrip(cmsContext ContextID)
{
- return CheckCMYK(INTENT_RELATIVE_COLORIMETRIC, "test1.icc", "test1.icc");
+ return CheckCMYK(ContextID, INTENT_RELATIVE_COLORIMETRIC, "test1.icc", "test1.icc");
}
static
-cmsInt32Number CheckCMYKPerceptual(void)
+cmsInt32Number CheckCMYKPerceptual(cmsContext ContextID)
{
- return CheckCMYK(INTENT_PERCEPTUAL, "test1.icc", "test2.icc");
+ return CheckCMYK(ContextID, INTENT_PERCEPTUAL, "test1.icc", "test2.icc");
}
static
-cmsInt32Number CheckCMYKRelCol(void)
+cmsInt32Number CheckCMYKRelCol(cmsContext ContextID)
{
- return CheckCMYK(INTENT_RELATIVE_COLORIMETRIC, "test1.icc", "test2.icc");
+ return CheckCMYK(ContextID, INTENT_RELATIVE_COLORIMETRIC, "test1.icc", "test2.icc");
}
static
-cmsInt32Number CheckKOnlyBlackPreserving(void)
+cmsInt32Number CheckKOnlyBlackPreserving(cmsContext ContextID)
{
- cmsHPROFILE hSWOP = cmsOpenProfileFromFile(DbgThread(), "test1.icc", "r");
- cmsHPROFILE hFOGRA = cmsOpenProfileFromFile(DbgThread(), "test2.icc", "r");
+ cmsHPROFILE hSWOP = cmsOpenProfileFromFile(ContextID, "test1.icc", "r");
+ cmsHPROFILE hFOGRA = cmsOpenProfileFromFile(ContextID, "test2.icc", "r");
cmsHTRANSFORM xform, swop_lab, fogra_lab;
cmsFloat32Number CMYK1[4], CMYK2[4];
cmsCIELab Lab1, Lab2;
@@ -6464,12 +6458,12 @@ cmsInt32Number CheckKOnlyBlackPreserving(void)
cmsFloat64Number DeltaL, Max;
cmsInt32Number i;
- hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ hLab = cmsCreateLab4Profile(ContextID, NULL);
- xform = cmsCreateTransform(DbgThread(), hSWOP, TYPE_CMYK_FLT, hFOGRA, TYPE_CMYK_FLT, INTENT_PRESERVE_K_ONLY_PERCEPTUAL, 0);
+ xform = cmsCreateTransform(ContextID, hSWOP, TYPE_CMYK_FLT, hFOGRA, TYPE_CMYK_FLT, INTENT_PRESERVE_K_ONLY_PERCEPTUAL, 0);
- swop_lab = cmsCreateTransform(DbgThread(), hSWOP, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0);
- fogra_lab = cmsCreateTransform(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0);
+ swop_lab = cmsCreateTransform(ContextID, hSWOP, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0);
+ fogra_lab = cmsCreateTransform(ContextID, hFOGRA, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0);
Max = 0;
@@ -6480,13 +6474,13 @@ cmsInt32Number CheckKOnlyBlackPreserving(void)
CMYK1[3] = (cmsFloat32Number) i;
// SWOP CMYK to Lab1
- cmsDoTransform(DbgThread(), swop_lab, CMYK1, &Lab1, 1);
+ cmsDoTransform(ContextID, swop_lab, CMYK1, &Lab1, 1);
// SWOP To FOGRA using black preservation
- cmsDoTransform(DbgThread(), xform, CMYK1, CMYK2, 1);
+ cmsDoTransform(ContextID, xform, CMYK1, CMYK2, 1);
// Obtained FOGRA CMYK to Lab2
- cmsDoTransform(DbgThread(), fogra_lab, CMYK2, &Lab2, 1);
+ cmsDoTransform(ContextID, fogra_lab, CMYK2, &Lab2, 1);
// We care only on L*
DeltaL = fabs(Lab1.L - Lab2.L);
@@ -6495,13 +6489,13 @@ cmsInt32Number CheckKOnlyBlackPreserving(void)
}
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
// dL should be below 3.0
// Same, but FOGRA to SWOP
- xform = cmsCreateTransform(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, INTENT_PRESERVE_K_ONLY_PERCEPTUAL, 0);
+ xform = cmsCreateTransform(ContextID, hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, INTENT_PRESERVE_K_ONLY_PERCEPTUAL, 0);
for (i=0; i <= 100; i++) {
CMYK1[0] = 0;
@@ -6509,9 +6503,9 @@ cmsInt32Number CheckKOnlyBlackPreserving(void)
CMYK1[2] = 0;
CMYK1[3] = (cmsFloat32Number) i;
- cmsDoTransform(DbgThread(), fogra_lab, CMYK1, &Lab1, 1);
- cmsDoTransform(DbgThread(), xform, CMYK1, CMYK2, 1);
- cmsDoTransform(DbgThread(), swop_lab, CMYK2, &Lab2, 1);
+ cmsDoTransform(ContextID, fogra_lab, CMYK1, &Lab1, 1);
+ cmsDoTransform(ContextID, xform, CMYK1, CMYK2, 1);
+ cmsDoTransform(ContextID, swop_lab, CMYK2, &Lab2, 1);
DeltaL = fabs(Lab1.L - Lab2.L);
@@ -6519,22 +6513,22 @@ cmsInt32Number CheckKOnlyBlackPreserving(void)
}
- cmsCloseProfile(DbgThread(), hSWOP);
- cmsCloseProfile(DbgThread(), hFOGRA);
- cmsCloseProfile(DbgThread(), hLab);
+ cmsCloseProfile(ContextID, hSWOP);
+ cmsCloseProfile(ContextID, hFOGRA);
+ cmsCloseProfile(ContextID, hLab);
- cmsDeleteTransform(DbgThread(), xform);
- cmsDeleteTransform(DbgThread(), swop_lab);
- cmsDeleteTransform(DbgThread(), fogra_lab);
+ cmsDeleteTransform(ContextID, xform);
+ cmsDeleteTransform(ContextID, swop_lab);
+ cmsDeleteTransform(ContextID, fogra_lab);
return Max < 3.0;
}
static
-cmsInt32Number CheckKPlaneBlackPreserving(void)
+cmsInt32Number CheckKPlaneBlackPreserving(cmsContext ContextID)
{
- cmsHPROFILE hSWOP = cmsOpenProfileFromFile(DbgThread(), "test1.icc", "r");
- cmsHPROFILE hFOGRA = cmsOpenProfileFromFile(DbgThread(), "test2.icc", "r");
+ cmsHPROFILE hSWOP = cmsOpenProfileFromFile(ContextID, "test1.icc", "r");
+ cmsHPROFILE hFOGRA = cmsOpenProfileFromFile(ContextID, "test2.icc", "r");
cmsHTRANSFORM xform, swop_lab, fogra_lab;
cmsFloat32Number CMYK1[4], CMYK2[4];
cmsCIELab Lab1, Lab2;
@@ -6542,12 +6536,12 @@ cmsInt32Number CheckKPlaneBlackPreserving(void)
cmsFloat64Number DeltaE, Max;
cmsInt32Number i;
- hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ hLab = cmsCreateLab4Profile(ContextID, NULL);
- xform = cmsCreateTransform(DbgThread(), hSWOP, TYPE_CMYK_FLT, hFOGRA, TYPE_CMYK_FLT, INTENT_PERCEPTUAL, 0);
+ xform = cmsCreateTransform(ContextID, hSWOP, TYPE_CMYK_FLT, hFOGRA, TYPE_CMYK_FLT, INTENT_PERCEPTUAL, 0);
- swop_lab = cmsCreateTransform(DbgThread(), hSWOP, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0);
- fogra_lab = cmsCreateTransform(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0);
+ swop_lab = cmsCreateTransform(ContextID, hSWOP, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0);
+ fogra_lab = cmsCreateTransform(ContextID, hFOGRA, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0);
Max = 0;
@@ -6557,19 +6551,19 @@ cmsInt32Number CheckKPlaneBlackPreserving(void)
CMYK1[2] = 0;
CMYK1[3] = (cmsFloat32Number) i;
- cmsDoTransform(DbgThread(), swop_lab, CMYK1, &Lab1, 1);
- cmsDoTransform(DbgThread(), xform, CMYK1, CMYK2, 1);
- cmsDoTransform(DbgThread(), fogra_lab, CMYK2, &Lab2, 1);
+ cmsDoTransform(ContextID, swop_lab, CMYK1, &Lab1, 1);
+ cmsDoTransform(ContextID, xform, CMYK1, CMYK2, 1);
+ cmsDoTransform(ContextID, fogra_lab, CMYK2, &Lab2, 1);
- DeltaE = cmsDeltaE(DbgThread(), &Lab1, &Lab2);
+ DeltaE = cmsDeltaE(ContextID, &Lab1, &Lab2);
if (DeltaE > Max) Max = DeltaE;
}
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
- xform = cmsCreateTransform(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, INTENT_PRESERVE_K_PLANE_PERCEPTUAL, 0);
+ xform = cmsCreateTransform(ContextID, hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, INTENT_PRESERVE_K_PLANE_PERCEPTUAL, 0);
for (i=0; i <= 100; i++) {
CMYK1[0] = 30;
@@ -6577,26 +6571,26 @@ cmsInt32Number CheckKPlaneBlackPreserving(void)
CMYK1[2] = 10;
CMYK1[3] = (cmsFloat32Number) i;
- cmsDoTransform(DbgThread(), fogra_lab, CMYK1, &Lab1, 1);
- cmsDoTransform(DbgThread(), xform, CMYK1, CMYK2, 1);
- cmsDoTransform(DbgThread(), swop_lab, CMYK2, &Lab2, 1);
+ cmsDoTransform(ContextID, fogra_lab, CMYK1, &Lab1, 1);
+ cmsDoTransform(ContextID, xform, CMYK1, CMYK2, 1);
+ cmsDoTransform(ContextID, swop_lab, CMYK2, &Lab2, 1);
- DeltaE = cmsDeltaE(DbgThread(), &Lab1, &Lab2);
+ DeltaE = cmsDeltaE(ContextID, &Lab1, &Lab2);
if (DeltaE > Max) Max = DeltaE;
}
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
- cmsCloseProfile(DbgThread(), hSWOP);
- cmsCloseProfile(DbgThread(), hFOGRA);
- cmsCloseProfile(DbgThread(), hLab);
+ cmsCloseProfile(ContextID, hSWOP);
+ cmsCloseProfile(ContextID, hFOGRA);
+ cmsCloseProfile(ContextID, hLab);
- cmsDeleteTransform(DbgThread(), swop_lab);
- cmsDeleteTransform(DbgThread(), fogra_lab);
+ cmsDeleteTransform(ContextID, swop_lab);
+ cmsDeleteTransform(ContextID, fogra_lab);
return Max < 30.0;
}
@@ -6606,40 +6600,40 @@ cmsInt32Number CheckKPlaneBlackPreserving(void)
static
-cmsInt32Number CheckProofingXFORMFloat(void)
+cmsInt32Number CheckProofingXFORMFloat(cmsContext ContextID)
{
cmsHPROFILE hAbove;
cmsHTRANSFORM xform;
cmsInt32Number rc;
- hAbove = Create_AboveRGB();
- xform = cmsCreateProofingTransform(DbgThread(), hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, hAbove,
+ hAbove = Create_AboveRGB(ContextID);
+ xform = cmsCreateProofingTransform(ContextID, hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, hAbove,
INTENT_RELATIVE_COLORIMETRIC, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_SOFTPROOFING);
- cmsCloseProfile(DbgThread(), hAbove);
- rc = CheckFloatlinearXFORM(xform, 3);
- cmsDeleteTransform(DbgThread(), xform);
+ cmsCloseProfile(ContextID, hAbove);
+ rc = CheckFloatlinearXFORM(ContextID, xform, 3);
+ cmsDeleteTransform(ContextID, xform);
return rc;
}
static
-cmsInt32Number CheckProofingXFORM16(void)
+cmsInt32Number CheckProofingXFORM16(cmsContext ContextID)
{
cmsHPROFILE hAbove;
cmsHTRANSFORM xform;
cmsInt32Number rc;
- hAbove = Create_AboveRGB();
- xform = cmsCreateProofingTransform(DbgThread(), hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, hAbove,
+ hAbove = Create_AboveRGB(ContextID);
+ xform = cmsCreateProofingTransform(ContextID, hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, hAbove,
INTENT_RELATIVE_COLORIMETRIC, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_SOFTPROOFING|cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hAbove);
- rc = Check16linearXFORM(xform, 3);
- cmsDeleteTransform(DbgThread(), xform);
+ cmsCloseProfile(ContextID, hAbove);
+ rc = Check16linearXFORM(ContextID, xform, 3);
+ cmsDeleteTransform(ContextID, xform);
return rc;
}
static
-cmsInt32Number CheckGamutCheck(void)
+cmsInt32Number CheckGamutCheck(cmsContext ContextID)
{
cmsHPROFILE hSRGB, hAbove;
cmsHTRANSFORM xform;
@@ -6647,42 +6641,42 @@ cmsInt32Number CheckGamutCheck(void)
cmsUInt16Number Alarm[16] = { 0xDEAD, 0xBABE, 0xFACE };
// Set alarm codes to fancy values so we could check the out of gamut condition
- cmsSetAlarmCodes(DbgThread(), Alarm);
+ cmsSetAlarmCodes(ContextID, Alarm);
// Create the profiles
- hSRGB = cmsCreate_sRGBProfile(DbgThread());
- hAbove = Create_AboveRGB();
+ hSRGB = cmsCreate_sRGBProfile(ContextID);
+ hAbove = Create_AboveRGB(ContextID);
if (hSRGB == NULL || hAbove == NULL) return 0; // Failed
SubTest("Gamut check on floating point");
// Create a gamut checker in the same space. No value should be out of gamut
- xform = cmsCreateProofingTransform(DbgThread(), hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, hAbove,
+ xform = cmsCreateProofingTransform(ContextID, hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, hAbove,
INTENT_RELATIVE_COLORIMETRIC, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_GAMUTCHECK);
- if (!CheckFloatlinearXFORM(xform, 3)) {
- cmsCloseProfile(DbgThread(), hSRGB);
- cmsCloseProfile(DbgThread(), hAbove);
- cmsDeleteTransform(DbgThread(), xform);
+ if (!CheckFloatlinearXFORM(ContextID, xform, 3)) {
+ cmsCloseProfile(ContextID, hSRGB);
+ cmsCloseProfile(ContextID, hAbove);
+ cmsDeleteTransform(ContextID, xform);
Fail("Gamut check on same profile failed");
return 0;
}
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
SubTest("Gamut check on 16 bits");
- xform = cmsCreateProofingTransform(DbgThread(), hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, hSRGB,
+ xform = cmsCreateProofingTransform(ContextID, hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, hSRGB,
INTENT_RELATIVE_COLORIMETRIC, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_GAMUTCHECK);
- cmsCloseProfile(DbgThread(), hSRGB);
- cmsCloseProfile(DbgThread(), hAbove);
+ cmsCloseProfile(ContextID, hSRGB);
+ cmsCloseProfile(ContextID, hAbove);
- rc = Check16linearXFORM(xform, 3);
+ rc = Check16linearXFORM(ContextID, xform, 3);
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
return rc;
}
@@ -6692,54 +6686,54 @@ cmsInt32Number CheckGamutCheck(void)
// -------------------------------------------------------------------------------------------------------------------
static
-cmsInt32Number CheckBlackPoint(void)
+cmsInt32Number CheckBlackPoint(cmsContext ContextID)
{
cmsHPROFILE hProfile;
cmsCIEXYZ Black;
cmsCIELab Lab;
- hProfile = cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r");
- cmsDetectDestinationBlackPoint(DbgThread(), &Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hProfile);
+ hProfile = cmsOpenProfileFromFile(ContextID, "test5.icc", "r");
+ cmsDetectDestinationBlackPoint(ContextID, &Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hProfile);
- hProfile = cmsOpenProfileFromFile(DbgThread(), "test1.icc", "r");
- cmsDetectDestinationBlackPoint(DbgThread(), &Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsXYZ2Lab(DbgThread(), NULL, &Lab, &Black);
- cmsCloseProfile(DbgThread(), hProfile);
+ hProfile = cmsOpenProfileFromFile(ContextID, "test1.icc", "r");
+ cmsDetectDestinationBlackPoint(ContextID, &Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsXYZ2Lab(ContextID, NULL, &Lab, &Black);
+ cmsCloseProfile(ContextID, hProfile);
- hProfile = cmsOpenProfileFromFile(DbgThread(), "lcms2cmyk.icc", "r");
- cmsDetectDestinationBlackPoint(DbgThread(), &Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsXYZ2Lab(DbgThread(), NULL, &Lab, &Black);
- cmsCloseProfile(DbgThread(), hProfile);
+ hProfile = cmsOpenProfileFromFile(ContextID, "lcms2cmyk.icc", "r");
+ cmsDetectDestinationBlackPoint(ContextID, &Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsXYZ2Lab(ContextID, NULL, &Lab, &Black);
+ cmsCloseProfile(ContextID, hProfile);
- hProfile = cmsOpenProfileFromFile(DbgThread(), "test2.icc", "r");
- cmsDetectDestinationBlackPoint(DbgThread(), &Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsXYZ2Lab(DbgThread(), NULL, &Lab, &Black);
- cmsCloseProfile(DbgThread(), hProfile);
+ hProfile = cmsOpenProfileFromFile(ContextID, "test2.icc", "r");
+ cmsDetectDestinationBlackPoint(ContextID, &Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsXYZ2Lab(ContextID, NULL, &Lab, &Black);
+ cmsCloseProfile(ContextID, hProfile);
- hProfile = cmsOpenProfileFromFile(DbgThread(), "test1.icc", "r");
- cmsDetectDestinationBlackPoint(DbgThread(), &Black, hProfile, INTENT_PERCEPTUAL, 0);
- cmsXYZ2Lab(DbgThread(), NULL, &Lab, &Black);
- cmsCloseProfile(DbgThread(), hProfile);
+ hProfile = cmsOpenProfileFromFile(ContextID, "test1.icc", "r");
+ cmsDetectDestinationBlackPoint(ContextID, &Black, hProfile, INTENT_PERCEPTUAL, 0);
+ cmsXYZ2Lab(ContextID, NULL, &Lab, &Black);
+ cmsCloseProfile(ContextID, hProfile);
return 1;
}
static
-cmsInt32Number CheckOneTAC(cmsFloat64Number InkLimit)
+cmsInt32Number CheckOneTAC(cmsContext ContextID, cmsFloat64Number InkLimit)
{
cmsHPROFILE h;
cmsFloat64Number d;
- h =CreateFakeCMYK(InkLimit, TRUE);
- cmsSaveProfileToFile(DbgThread(), h, "lcmstac.icc");
- cmsCloseProfile(DbgThread(), h);
+ h =CreateFakeCMYK(ContextID, InkLimit, TRUE);
+ cmsSaveProfileToFile(ContextID, h, "lcmstac.icc");
+ cmsCloseProfile(ContextID, h);
- h = cmsOpenProfileFromFile(DbgThread(), "lcmstac.icc", "r");
- d = cmsDetectTAC(DbgThread(), h);
- cmsCloseProfile(DbgThread(), h);
+ h = cmsOpenProfileFromFile(ContextID, "lcmstac.icc", "r");
+ d = cmsDetectTAC(ContextID, h);
+ cmsCloseProfile(ContextID, h);
remove("lcmstac.icc");
@@ -6750,13 +6744,13 @@ cmsInt32Number CheckOneTAC(cmsFloat64Number InkLimit)
static
-cmsInt32Number CheckTAC(void)
+cmsInt32Number CheckTAC(cmsContext ContextID)
{
- 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(ContextID, 180)) return 0;
+ if (!CheckOneTAC(ContextID, 220)) return 0;
+ if (!CheckOneTAC(ContextID, 286)) return 0;
+ if (!CheckOneTAC(ContextID, 310)) return 0;
+ if (!CheckOneTAC(ContextID, 330)) return 0;
return 1;
}
@@ -6767,30 +6761,30 @@ cmsInt32Number CheckTAC(void)
#define NPOINTS_IT8 10 // (17*17*17*17)
static
-cmsInt32Number CheckCGATS(void)
+cmsInt32Number CheckCGATS(cmsContext ContextID)
{
cmsHANDLE it8;
cmsInt32Number i;
SubTest("IT8 creation");
- it8 = cmsIT8Alloc(DbgThread());
+ it8 = cmsIT8Alloc(ContextID);
if (it8 == NULL) return 0;
- cmsIT8SetSheetType(DbgThread(), it8, "LCMS/TESTING");
- cmsIT8SetPropertyStr(DbgThread(), it8, "ORIGINATOR", "1 2 3 4");
- cmsIT8SetPropertyUncooked(DbgThread(), it8, "DESCRIPTOR", "1234");
- cmsIT8SetPropertyStr(DbgThread(), it8, "MANUFACTURER", "3");
- cmsIT8SetPropertyDbl(DbgThread(), it8, "CREATED", 4);
- cmsIT8SetPropertyDbl(DbgThread(), it8, "SERIAL", 5);
- cmsIT8SetPropertyHex(DbgThread(), it8, "MATERIAL", 0x123);
+ cmsIT8SetSheetType(ContextID, it8, "LCMS/TESTING");
+ cmsIT8SetPropertyStr(ContextID, it8, "ORIGINATOR", "1 2 3 4");
+ cmsIT8SetPropertyUncooked(ContextID, it8, "DESCRIPTOR", "1234");
+ cmsIT8SetPropertyStr(ContextID, it8, "MANUFACTURER", "3");
+ cmsIT8SetPropertyDbl(ContextID, it8, "CREATED", 4);
+ cmsIT8SetPropertyDbl(ContextID, it8, "SERIAL", 5);
+ cmsIT8SetPropertyHex(ContextID, it8, "MATERIAL", 0x123);
- cmsIT8SetPropertyDbl(DbgThread(), it8, "NUMBER_OF_SETS", NPOINTS_IT8);
- cmsIT8SetPropertyDbl(DbgThread(), it8, "NUMBER_OF_FIELDS", 4);
+ cmsIT8SetPropertyDbl(ContextID, it8, "NUMBER_OF_SETS", NPOINTS_IT8);
+ cmsIT8SetPropertyDbl(ContextID, it8, "NUMBER_OF_FIELDS", 4);
- cmsIT8SetDataFormat(DbgThread(), it8, 0, "SAMPLE_ID");
- cmsIT8SetDataFormat(DbgThread(), it8, 1, "RGB_R");
- cmsIT8SetDataFormat(DbgThread(), it8, 2, "RGB_G");
- cmsIT8SetDataFormat(DbgThread(), it8, 3, "RGB_B");
+ cmsIT8SetDataFormat(ContextID, it8, 0, "SAMPLE_ID");
+ cmsIT8SetDataFormat(ContextID, it8, 1, "RGB_R");
+ cmsIT8SetDataFormat(ContextID, it8, 2, "RGB_G");
+ cmsIT8SetDataFormat(ContextID, it8, 3, "RGB_B");
SubTest("Table creation");
for (i=0; i < NPOINTS_IT8; i++) {
@@ -6799,73 +6793,73 @@ cmsInt32Number CheckCGATS(void)
sprintf(Patch, "P%d", i);
- cmsIT8SetDataRowCol(DbgThread(), it8, i, 0, Patch);
- cmsIT8SetDataRowColDbl(DbgThread(), it8, i, 1, i);
- cmsIT8SetDataRowColDbl(DbgThread(), it8, i, 2, i);
- cmsIT8SetDataRowColDbl(DbgThread(), it8, i, 3, i);
+ cmsIT8SetDataRowCol(ContextID, it8, i, 0, Patch);
+ cmsIT8SetDataRowColDbl(ContextID, it8, i, 1, i);
+ cmsIT8SetDataRowColDbl(ContextID, it8, i, 2, i);
+ cmsIT8SetDataRowColDbl(ContextID, it8, i, 3, i);
}
SubTest("Save to file");
- cmsIT8SaveToFile(DbgThread(), it8, "TEST.IT8");
- cmsIT8Free(DbgThread(), it8);
+ cmsIT8SaveToFile(ContextID, it8, "TEST.IT8");
+ cmsIT8Free(ContextID, it8);
SubTest("Load from file");
- it8 = cmsIT8LoadFromFile(DbgThread(), "TEST.IT8");
+ it8 = cmsIT8LoadFromFile(ContextID, "TEST.IT8");
if (it8 == NULL) return 0;
SubTest("Save again file");
- cmsIT8SaveToFile(DbgThread(), it8, "TEST.IT8");
- cmsIT8Free(DbgThread(), it8);
+ cmsIT8SaveToFile(ContextID, it8, "TEST.IT8");
+ cmsIT8Free(ContextID, it8);
SubTest("Load from file (II)");
- it8 = cmsIT8LoadFromFile(DbgThread(), "TEST.IT8");
+ it8 = cmsIT8LoadFromFile(ContextID, "TEST.IT8");
if (it8 == NULL) return 0;
SubTest("Change prop value");
- if (cmsIT8GetPropertyDbl(DbgThread(), it8, "DESCRIPTOR") != 1234) {
+ if (cmsIT8GetPropertyDbl(ContextID, it8, "DESCRIPTOR") != 1234) {
return 0;
}
- cmsIT8SetPropertyDbl(DbgThread(), it8, "DESCRIPTOR", 5678);
- if (cmsIT8GetPropertyDbl(DbgThread(), it8, "DESCRIPTOR") != 5678) {
+ cmsIT8SetPropertyDbl(ContextID, it8, "DESCRIPTOR", 5678);
+ if (cmsIT8GetPropertyDbl(ContextID, it8, "DESCRIPTOR") != 5678) {
return 0;
}
SubTest("Positive numbers");
- if (cmsIT8GetDataDbl(DbgThread(), it8, "P3", "RGB_G") != 3) {
+ if (cmsIT8GetDataDbl(ContextID, it8, "P3", "RGB_G") != 3) {
return 0;
}
SubTest("Positive exponent numbers");
- cmsIT8SetPropertyDbl(DbgThread(), it8, "DBL_PROP", 123E+12);
- if ((cmsIT8GetPropertyDbl(DbgThread(), it8, "DBL_PROP") - 123E+12) > 1 ) {
+ cmsIT8SetPropertyDbl(ContextID, it8, "DBL_PROP", 123E+12);
+ if ((cmsIT8GetPropertyDbl(ContextID, it8, "DBL_PROP") - 123E+12) > 1 ) {
return 0;
}
SubTest("Negative exponent numbers");
- cmsIT8SetPropertyDbl(DbgThread(), it8, "DBL_PROP_NEG", 123E-45);
- if ((cmsIT8GetPropertyDbl(DbgThread(), it8, "DBL_PROP_NEG") - 123E-45) > 1E-45 ) {
+ cmsIT8SetPropertyDbl(ContextID, it8, "DBL_PROP_NEG", 123E-45);
+ if ((cmsIT8GetPropertyDbl(ContextID, it8, "DBL_PROP_NEG") - 123E-45) > 1E-45 ) {
return 0;
}
SubTest("Negative numbers");
- cmsIT8SetPropertyDbl(DbgThread(), it8, "DBL_NEG_VAL", -123);
- if ((cmsIT8GetPropertyDbl(DbgThread(), it8, "DBL_NEG_VAL")) != -123 ) {
+ cmsIT8SetPropertyDbl(ContextID, it8, "DBL_NEG_VAL", -123);
+ if ((cmsIT8GetPropertyDbl(ContextID, it8, "DBL_NEG_VAL")) != -123 ) {
return 0;
}
- cmsIT8Free(DbgThread(), it8);
+ cmsIT8Free(ContextID, it8);
remove("TEST.IT8");
return 1;
@@ -6874,28 +6868,28 @@ cmsInt32Number CheckCGATS(void)
static
-cmsInt32Number CheckCGATS2(void)
+cmsInt32Number CheckCGATS2(cmsContext ContextID)
{
cmsHANDLE handle;
const cmsUInt8Number junk[] = { 0x0, 0xd, 0xd, 0xa, 0x20, 0xd, 0x20, 0x20, 0x20, 0x3a, 0x31, 0x3d, 0x3d, 0x3d, 0x3d };
- handle = cmsIT8LoadFromMem(0, (const void*)junk, sizeof(junk));
+ handle = cmsIT8LoadFromMem(ContextID, (const void*)junk, sizeof(junk));
if (handle)
- cmsIT8Free(DbgThread(), handle);
+ cmsIT8Free(ContextID, handle);
return 1;
}
static
-cmsInt32Number CheckCGATS_Overflow(void)
+cmsInt32Number CheckCGATS_Overflow(cmsContext ContextID)
{
cmsHANDLE handle;
const cmsUInt8Number junk[] = { "@\nA 1.e2147483648\n" };
- handle = cmsIT8LoadFromMem(0, (const void*)junk, sizeof(junk));
+ handle = cmsIT8LoadFromMem(ContextID, (const void*)junk, sizeof(junk));
if (handle)
- cmsIT8Free(DbgThread(), handle);
+ cmsIT8Free(ContextID, handle);
return 1;
}
@@ -6903,25 +6897,24 @@ cmsInt32Number CheckCGATS_Overflow(void)
// Create CSA/CRD
static
-void GenerateCSA(const char* cInProf, const char* FileName)
+void GenerateCSA(cmsContext BuffThread, const char* cInProf, const char* FileName)
{
cmsHPROFILE hProfile;
cmsUInt32Number n;
char* Buffer;
- cmsContext BuffThread = DbgThread();
FILE* o;
if (cInProf == NULL)
- hProfile = cmsCreateLab4Profile(DbgThread(), NULL);
+ hProfile = cmsCreateLab4Profile(BuffThread, NULL);
else
- hProfile = cmsOpenProfileFromFile(DbgThread(), cInProf, "r");
+ hProfile = cmsOpenProfileFromFile(BuffThread, cInProf, "r");
- n = cmsGetPostScriptCSA(DbgThread(), hProfile, 0, 0, NULL, 0);
+ n = cmsGetPostScriptCSA(BuffThread, hProfile, 0, 0, NULL, 0);
if (n == 0) return;
Buffer = (char*) _cmsMalloc(BuffThread, n + 1);
- cmsGetPostScriptCSA(DbgThread(), hProfile, 0, 0, Buffer, n);
+ cmsGetPostScriptCSA(BuffThread, hProfile, 0, 0, Buffer, n);
Buffer[n] = 0;
if (FileName != NULL) {
@@ -6931,32 +6924,31 @@ void GenerateCSA(const char* cInProf, const char* FileName)
}
_cmsFree(BuffThread, Buffer);
- cmsCloseProfile(DbgThread(), hProfile);
+ cmsCloseProfile(BuffThread, hProfile);
if (FileName != NULL)
remove(FileName);
}
static
-void GenerateCRD(const char* cOutProf, const char* FileName)
+void GenerateCRD(cmsContext BuffThread, const char* cOutProf, const char* FileName)
{
cmsHPROFILE hProfile;
cmsUInt32Number n;
char* Buffer;
cmsUInt32Number dwFlags = 0;
- cmsContext BuffThread = DbgThread();
if (cOutProf == NULL)
- hProfile = cmsCreateLab4Profile(DbgThread(), NULL);
+ hProfile = cmsCreateLab4Profile(BuffThread, NULL);
else
- hProfile = cmsOpenProfileFromFile(DbgThread(), cOutProf, "r");
+ hProfile = cmsOpenProfileFromFile(BuffThread, cOutProf, "r");
- n = cmsGetPostScriptCRD(DbgThread(), hProfile, 0, dwFlags, NULL, 0);
+ n = cmsGetPostScriptCRD(BuffThread, hProfile, 0, dwFlags, NULL, 0);
if (n == 0) return;
Buffer = (char*) _cmsMalloc(BuffThread, n + 1);
- cmsGetPostScriptCRD(DbgThread(), hProfile, 0, dwFlags, Buffer, n);
+ cmsGetPostScriptCRD(BuffThread, hProfile, 0, dwFlags, Buffer, n);
Buffer[n] = 0;
if (FileName != NULL) {
@@ -6966,38 +6958,38 @@ void GenerateCRD(const char* cOutProf, const char* FileName)
}
_cmsFree(BuffThread, Buffer);
- cmsCloseProfile(DbgThread(), hProfile);
+ cmsCloseProfile(BuffThread, hProfile);
if (FileName != NULL)
remove(FileName);
}
static
-cmsInt32Number CheckPostScript(void)
+cmsInt32Number CheckPostScript(cmsContext ContextID)
{
- GenerateCSA("test5.icc", "sRGB_CSA.ps");
- GenerateCSA("aRGBlcms2.icc", "aRGB_CSA.ps");
- GenerateCSA("test4.icc", "sRGBV4_CSA.ps");
- GenerateCSA("test1.icc", "SWOP_CSA.ps");
- GenerateCSA(NULL, "Lab_CSA.ps");
- GenerateCSA("graylcms2.icc", "gray_CSA.ps");
+ GenerateCSA(ContextID, "test5.icc", "sRGB_CSA.ps");
+ GenerateCSA(ContextID, "aRGBlcms2.icc", "aRGB_CSA.ps");
+ GenerateCSA(ContextID, "test4.icc", "sRGBV4_CSA.ps");
+ GenerateCSA(ContextID, "test1.icc", "SWOP_CSA.ps");
+ GenerateCSA(ContextID, NULL, "Lab_CSA.ps");
+ GenerateCSA(ContextID, "graylcms2.icc", "gray_CSA.ps");
- GenerateCRD("test5.icc", "sRGB_CRD.ps");
- GenerateCRD("aRGBlcms2.icc", "aRGB_CRD.ps");
- GenerateCRD(NULL, "Lab_CRD.ps");
- GenerateCRD("test1.icc", "SWOP_CRD.ps");
- GenerateCRD("test4.icc", "sRGBV4_CRD.ps");
- GenerateCRD("graylcms2.icc", "gray_CRD.ps");
+ GenerateCRD(ContextID, "test5.icc", "sRGB_CRD.ps");
+ GenerateCRD(ContextID, "aRGBlcms2.icc", "aRGB_CRD.ps");
+ GenerateCRD(ContextID, NULL, "Lab_CRD.ps");
+ GenerateCRD(ContextID, "test1.icc", "SWOP_CRD.ps");
+ GenerateCRD(ContextID, "test4.icc", "sRGBV4_CRD.ps");
+ GenerateCRD(ContextID, "graylcms2.icc", "gray_CRD.ps");
return 1;
}
static
-cmsInt32Number CheckGray(cmsHTRANSFORM xform, cmsUInt8Number g, double L)
+cmsInt32Number CheckGray(cmsContext ContextID, cmsHTRANSFORM xform, cmsUInt8Number g, double L)
{
cmsCIELab Lab;
- cmsDoTransform(DbgThread(), xform, &g, &Lab, 1);
+ cmsDoTransform(ContextID, xform, &g, &Lab, 1);
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;
@@ -7006,50 +6998,50 @@ cmsInt32Number CheckGray(cmsHTRANSFORM xform, cmsUInt8Number g, double L)
}
static
-cmsInt32Number CheckInputGray(void)
+cmsInt32Number CheckInputGray(cmsContext ContextID)
{
- cmsHPROFILE hGray = Create_Gray22();
- cmsHPROFILE hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ cmsHPROFILE hGray = Create_Gray22(ContextID);
+ cmsHPROFILE hLab = cmsCreateLab4Profile(ContextID, NULL);
cmsHTRANSFORM xform;
if (hGray == NULL || hLab == NULL) return 0;
- xform = cmsCreateTransform(DbgThread(), hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hGray); cmsCloseProfile(DbgThread(), hLab);
+ xform = cmsCreateTransform(ContextID, hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hGray); cmsCloseProfile(ContextID, 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(ContextID, xform, 0, 0)) return 0;
+ if (!CheckGray(ContextID, xform, 125, 52.768)) return 0;
+ if (!CheckGray(ContextID, xform, 200, 81.069)) return 0;
+ if (!CheckGray(ContextID, xform, 255, 100.0)) return 0;
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
return 1;
}
static
-cmsInt32Number CheckLabInputGray(void)
+cmsInt32Number CheckLabInputGray(cmsContext ContextID)
{
- cmsHPROFILE hGray = Create_GrayLab();
- cmsHPROFILE hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ cmsHPROFILE hGray = Create_GrayLab(ContextID);
+ cmsHPROFILE hLab = cmsCreateLab4Profile(ContextID, NULL);
cmsHTRANSFORM xform;
if (hGray == NULL || hLab == NULL) return 0;
- xform = cmsCreateTransform(DbgThread(), hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hGray); cmsCloseProfile(DbgThread(), hLab);
+ xform = cmsCreateTransform(ContextID, hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hGray); cmsCloseProfile(ContextID, 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;
+ if (!CheckGray(ContextID, xform, 0, 0)) return 0;
+ if (!CheckGray(ContextID, xform, 125, 49.019)) return 0;
+ if (!CheckGray(ContextID, xform, 200, 78.431)) return 0;
+ if (!CheckGray(ContextID, xform, 255, 100.0)) return 0;
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
return 1;
}
static
-cmsInt32Number CheckOutGray(cmsHTRANSFORM xform, double L, cmsUInt8Number g)
+cmsInt32Number CheckOutGray(cmsContext ContextID, cmsHTRANSFORM xform, double L, cmsUInt8Number g)
{
cmsCIELab Lab;
cmsUInt8Number g_out;
@@ -7058,50 +7050,50 @@ cmsInt32Number CheckOutGray(cmsHTRANSFORM xform, double L, cmsUInt8Number g)
Lab.a = 0;
Lab.b = 0;
- cmsDoTransform(DbgThread(), xform, &Lab, &g_out, 1);
+ cmsDoTransform(ContextID, xform, &Lab, &g_out, 1);
return IsGoodVal("Gray value", g, (double) g_out, 0.01);
}
static
-cmsInt32Number CheckOutputGray(void)
+cmsInt32Number CheckOutputGray(cmsContext ContextID)
{
- cmsHPROFILE hGray = Create_Gray22();
- cmsHPROFILE hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ cmsHPROFILE hGray = Create_Gray22(ContextID);
+ cmsHPROFILE hLab = cmsCreateLab4Profile(ContextID, NULL);
cmsHTRANSFORM xform;
if (hGray == NULL || hLab == NULL) return 0;
- xform = cmsCreateTransform(DbgThread(), hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hGray); cmsCloseProfile(DbgThread(), hLab);
+ xform = cmsCreateTransform(ContextID, hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hGray); cmsCloseProfile(ContextID, hLab);
- if (!CheckOutGray(xform, 0, 0)) return 0;
- if (!CheckOutGray(xform, 100, 255)) return 0;
+ if (!CheckOutGray(ContextID, xform, 0, 0)) return 0;
+ if (!CheckOutGray(ContextID, xform, 100, 255)) return 0;
- if (!CheckOutGray(xform, 20, 52)) return 0;
- if (!CheckOutGray(xform, 50, 118)) return 0;
+ if (!CheckOutGray(ContextID, xform, 20, 52)) return 0;
+ if (!CheckOutGray(ContextID, xform, 50, 118)) return 0;
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
return 1;
}
static
-cmsInt32Number CheckLabOutputGray(void)
+cmsInt32Number CheckLabOutputGray(cmsContext ContextID)
{
- cmsHPROFILE hGray = Create_GrayLab();
- cmsHPROFILE hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ cmsHPROFILE hGray = Create_GrayLab(ContextID);
+ cmsHPROFILE hLab = cmsCreateLab4Profile(ContextID, NULL);
cmsHTRANSFORM xform;
cmsInt32Number i;
if (hGray == NULL || hLab == NULL) return 0;
- xform = cmsCreateTransform(DbgThread(), hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), hGray); cmsCloseProfile(DbgThread(), hLab);
+ xform = cmsCreateTransform(ContextID, hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ContextID, hGray); cmsCloseProfile(ContextID, hLab);
- if (!CheckOutGray(xform, 0, 0)) return 0;
- if (!CheckOutGray(xform, 100, 255)) return 0;
+ if (!CheckOutGray(ContextID, xform, 0, 0)) return 0;
+ if (!CheckOutGray(ContextID, xform, 100, 255)) return 0;
for (i=0; i < 100; i++) {
@@ -7109,32 +7101,32 @@ cmsInt32Number CheckLabOutputGray(void)
g = (cmsUInt8Number) floor(i * 255.0 / 100.0 + 0.5);
- if (!CheckOutGray(xform, i, g)) return 0;
+ if (!CheckOutGray(ContextID, xform, i, g)) return 0;
}
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
return 1;
}
static
-cmsInt32Number CheckV4gamma(void)
+cmsInt32Number CheckV4gamma(cmsContext ContextID)
{
cmsHPROFILE h;
cmsUInt16Number Lin[] = {0, 0xffff};
- cmsToneCurve*g = cmsBuildTabulatedToneCurve16(DbgThread(), 2, Lin);
+ cmsToneCurve*g = cmsBuildTabulatedToneCurve16(ContextID, 2, Lin);
- h = cmsOpenProfileFromFile(DbgThread(), "v4gamma.icc", "w");
+ h = cmsOpenProfileFromFile(ContextID, "v4gamma.icc", "w");
if (h == NULL) return 0;
- cmsSetProfileVersion(DbgThread(), h, 4.3);
+ cmsSetProfileVersion(ContextID, h, 4.3);
- if (!cmsWriteTag(DbgThread(), h, cmsSigGrayTRCTag, g)) return 0;
- cmsCloseProfile(DbgThread(), h);
+ if (!cmsWriteTag(ContextID, h, cmsSigGrayTRCTag, g)) return 0;
+ cmsCloseProfile(ContextID, h);
- cmsFreeToneCurve(DbgThread(), g);
+ cmsFreeToneCurve(ContextID, g);
remove("v4gamma.icc");
return 1;
}
@@ -7143,7 +7135,7 @@ cmsInt32Number CheckV4gamma(void)
// Gamut descriptor routines
static
-cmsInt32Number CheckGBD(void)
+cmsInt32Number CheckGBD(cmsContext ContextID)
{
cmsCIELab Lab;
cmsHANDLE h;
@@ -7152,7 +7144,7 @@ cmsInt32Number CheckGBD(void)
cmsHPROFILE hLab, hsRGB;
cmsHTRANSFORM xform;
- h = cmsGBDAlloc(DbgThread());
+ h = cmsGBDAlloc(ContextID);
if (h == NULL) return 0;
// Fill all Lab gamut as valid
@@ -7165,12 +7157,12 @@ cmsInt32Number CheckGBD(void)
Lab.L = L;
Lab.a = a;
Lab.b = b;
- if (!cmsGDBAddPoint(DbgThread(), h, &Lab)) return 0;
+ if (!cmsGDBAddPoint(ContextID, h, &Lab)) return 0;
}
// Complete boundaries
SubTest("computing Lab gamut");
- if (!cmsGDBCompute(DbgThread(), h, 0)) return 0;
+ if (!cmsGDBCompute(ContextID, h, 0)) return 0;
// All points should be inside gamut
@@ -7182,21 +7174,21 @@ cmsInt32Number CheckGBD(void)
Lab.L = L;
Lab.a = a;
Lab.b = b;
- if (!cmsGDBCheckPoint(DbgThread(), h, &Lab)) {
+ if (!cmsGDBCheckPoint(ContextID, h, &Lab)) {
return 0;
}
}
- cmsGBDFree(DbgThread(), h);
+ cmsGBDFree(ContextID, h);
// Now for sRGB
SubTest("checking sRGB gamut");
- h = cmsGBDAlloc(DbgThread());
- hsRGB = cmsCreate_sRGBProfile(DbgThread());
- hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ h = cmsGBDAlloc(ContextID);
+ hsRGB = cmsCreate_sRGBProfile(ContextID);
+ hLab = cmsCreateLab4Profile(ContextID, NULL);
- xform = cmsCreateTransform(DbgThread(), hsRGB, TYPE_RGB_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hsRGB); cmsCloseProfile(DbgThread(), hLab);
+ xform = cmsCreateTransform(ContextID, hsRGB, TYPE_RGB_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOCACHE);
+ cmsCloseProfile(ContextID, hsRGB); cmsCloseProfile(ContextID, hLab);
for (r1=0; r1 < 256; r1 += 5) {
@@ -7210,12 +7202,12 @@ cmsInt32Number CheckGBD(void)
rgb[1] = (cmsUInt8Number) g1;
rgb[2] = (cmsUInt8Number) b1;
- cmsDoTransform(DbgThread(), xform, rgb, &Lab, 1);
+ cmsDoTransform(ContextID, xform, rgb, &Lab, 1);
// if (fabs(Lab.b) < 20 && Lab.a > 0) continue;
- if (!cmsGDBAddPoint(DbgThread(), h, &Lab)) {
- cmsGBDFree(DbgThread(), h);
+ if (!cmsGDBAddPoint(ContextID, h, &Lab)) {
+ cmsGBDFree(ContextID, h);
return 0;
}
@@ -7224,7 +7216,7 @@ cmsInt32Number CheckGBD(void)
}
- if (!cmsGDBCompute(DbgThread(), h, 0)) return 0;
+ if (!cmsGDBCompute(ContextID, h, 0)) return 0;
// cmsGBDdumpVRML(h, "c:\\colormaps\\lab.wrl");
for (r1=10; r1 < 200; r1 += 10) {
@@ -7238,22 +7230,22 @@ cmsInt32Number CheckGBD(void)
rgb[1] = (cmsUInt8Number) g1;
rgb[2] = (cmsUInt8Number) b1;
- cmsDoTransform(DbgThread(), xform, rgb, &Lab, 1);
- if (!cmsGDBCheckPoint(DbgThread(), h, &Lab)) {
+ cmsDoTransform(ContextID, xform, rgb, &Lab, 1);
+ if (!cmsGDBCheckPoint(ContextID, h, &Lab)) {
- cmsDeleteTransform(DbgThread(), xform);
- cmsGBDFree(DbgThread(), h);
+ cmsDeleteTransform(ContextID, xform);
+ cmsGBDFree(ContextID, h);
return 0;
}
}
}
- cmsDeleteTransform(DbgThread(), xform);
- cmsGBDFree(DbgThread(), h);
+ cmsDeleteTransform(ContextID, xform);
+ cmsGBDFree(ContextID, h);
SubTest("checking LCh chroma ring");
- h = cmsGBDAlloc(DbgThread());
+ h = cmsGBDAlloc(ContextID);
for (r1=0; r1 < 360; r1++) {
@@ -7264,43 +7256,43 @@ cmsInt32Number CheckGBD(void)
LCh.C = 60;
LCh.h = r1;
- cmsLCh2Lab(DbgThread(), &Lab, &LCh);
- if (!cmsGDBAddPoint(DbgThread(), h, &Lab)) {
- cmsGBDFree(DbgThread(), h);
+ cmsLCh2Lab(ContextID, &Lab, &LCh);
+ if (!cmsGDBAddPoint(ContextID, h, &Lab)) {
+ cmsGBDFree(ContextID, h);
return 0;
}
}
- if (!cmsGDBCompute(DbgThread(), h, 0)) return 0;
+ if (!cmsGDBCompute(ContextID, h, 0)) return 0;
- cmsGBDFree(DbgThread(), h);
+ cmsGBDFree(ContextID, h);
return 1;
}
static
-int CheckMD5(void)
+int CheckMD5(cmsContext ContextID)
{
_cmsICCPROFILE* h;
- cmsHPROFILE pProfile = cmsOpenProfileFromFile(DbgThread(), "sRGBlcms2.icc", "r");
+ cmsHPROFILE pProfile = cmsOpenProfileFromFile(ContextID, "sRGBlcms2.icc", "r");
cmsProfileID ProfileID1, ProfileID2, ProfileID3, ProfileID4;
h =(_cmsICCPROFILE*) pProfile;
- if (cmsMD5computeID(DbgThread(), pProfile)) cmsGetHeaderProfileID(DbgThread(), pProfile, ProfileID1.ID8);
- if (cmsMD5computeID(DbgThread(), pProfile)) cmsGetHeaderProfileID(DbgThread(), pProfile,ProfileID2.ID8);
+ if (cmsMD5computeID(ContextID, pProfile)) cmsGetHeaderProfileID(ContextID, pProfile, ProfileID1.ID8);
+ if (cmsMD5computeID(ContextID, pProfile)) cmsGetHeaderProfileID(ContextID, pProfile,ProfileID2.ID8);
- cmsCloseProfile(DbgThread(), pProfile);
+ cmsCloseProfile(ContextID, pProfile);
- pProfile = cmsOpenProfileFromFile(DbgThread(), "sRGBlcms2.icc", "r");
+ pProfile = cmsOpenProfileFromFile(ContextID, "sRGBlcms2.icc", "r");
h =(_cmsICCPROFILE*) pProfile;
- if (cmsMD5computeID(DbgThread(), pProfile)) cmsGetHeaderProfileID(DbgThread(), pProfile, ProfileID3.ID8);
- if (cmsMD5computeID(DbgThread(), pProfile)) cmsGetHeaderProfileID(DbgThread(), pProfile,ProfileID4.ID8);
+ if (cmsMD5computeID(ContextID, pProfile)) cmsGetHeaderProfileID(ContextID, pProfile, ProfileID3.ID8);
+ if (cmsMD5computeID(ContextID, pProfile)) cmsGetHeaderProfileID(ContextID, pProfile,ProfileID4.ID8);
- cmsCloseProfile(DbgThread(), pProfile);
+ cmsCloseProfile(ContextID, pProfile);
return ((memcmp(ProfileID1.ID8, ProfileID3.ID8, sizeof(ProfileID1)) == 0) &&
(memcmp(ProfileID2.ID8, ProfileID4.ID8, sizeof(ProfileID2)) == 0));
@@ -7309,47 +7301,47 @@ int CheckMD5(void)
static
-int CheckLinking(void)
+int CheckLinking(cmsContext ContextID)
{
cmsHPROFILE h;
cmsPipeline * pipeline;
cmsStage *stageBegin, *stageEnd;
// Create a CLUT based profile
- h = cmsCreateInkLimitingDeviceLink(DbgThread(), cmsSigCmykData, 150);
+ h = cmsCreateInkLimitingDeviceLink(ContextID, cmsSigCmykData, 150);
// link a second tag
- cmsLinkTag(DbgThread(), h, cmsSigAToB1Tag, cmsSigAToB0Tag);
+ cmsLinkTag(ContextID, h, cmsSigAToB1Tag, cmsSigAToB0Tag);
// Save the linked devicelink
- if (!cmsSaveProfileToFile(DbgThread(), h, "lcms2link.icc")) return 0;
- cmsCloseProfile(DbgThread(), h);
+ if (!cmsSaveProfileToFile(ContextID, h, "lcms2link.icc")) return 0;
+ cmsCloseProfile(ContextID, h);
// Now open the profile and read the pipeline
- h = cmsOpenProfileFromFile(DbgThread(), "lcms2link.icc", "r");
+ h = cmsOpenProfileFromFile(ContextID, "lcms2link.icc", "r");
if (h == NULL) return 0;
- pipeline = (cmsPipeline*) cmsReadTag(DbgThread(), h, cmsSigAToB1Tag);
+ pipeline = (cmsPipeline*) cmsReadTag(ContextID, h, cmsSigAToB1Tag);
if (pipeline == NULL)
{
return 0;
}
- pipeline = cmsPipelineDup(DbgThread(), pipeline);
+ pipeline = cmsPipelineDup(ContextID, pipeline);
// extract stage from pipe line
- cmsPipelineUnlinkStage(DbgThread(), pipeline, cmsAT_BEGIN, &stageBegin);
- cmsPipelineUnlinkStage(DbgThread(), pipeline, cmsAT_END, &stageEnd);
- cmsPipelineInsertStage(DbgThread(), pipeline, cmsAT_END, stageEnd);
- cmsPipelineInsertStage(DbgThread(), pipeline, cmsAT_BEGIN, stageBegin);
+ cmsPipelineUnlinkStage(ContextID, pipeline, cmsAT_BEGIN, &stageBegin);
+ cmsPipelineUnlinkStage(ContextID, pipeline, cmsAT_END, &stageEnd);
+ cmsPipelineInsertStage(ContextID, pipeline, cmsAT_END, stageEnd);
+ cmsPipelineInsertStage(ContextID, pipeline, cmsAT_BEGIN, stageBegin);
- if (cmsTagLinkedTo(DbgThread(), h, cmsSigAToB1Tag) != cmsSigAToB0Tag) return 0;
+ if (cmsTagLinkedTo(ContextID, h, cmsSigAToB1Tag) != cmsSigAToB0Tag) return 0;
- cmsWriteTag(DbgThread(), h, cmsSigAToB0Tag, pipeline);
- cmsPipelineFree(DbgThread(), pipeline);
+ cmsWriteTag(ContextID, h, cmsSigAToB0Tag, pipeline);
+ cmsPipelineFree(ContextID, pipeline);
- if (!cmsSaveProfileToFile(DbgThread(), h, "lcms2link2.icc")) return 0;
- cmsCloseProfile(DbgThread(), h);
+ if (!cmsSaveProfileToFile(ContextID, h, "lcms2link2.icc")) return 0;
+ cmsCloseProfile(ContextID, h);
return 1;
@@ -7361,51 +7353,50 @@ int CheckLinking(void)
// Created by Paul Miller on 30/08/2016.
//
static
-cmsHPROFILE IdentityMatrixProfile( cmsColorSpaceSignature dataSpace)
+cmsHPROFILE IdentityMatrixProfile(cmsContext ctx, cmsColorSpaceSignature dataSpace)
{
- cmsContext ctx = 0;
cmsVEC3 zero = {{0,0,0}};
cmsMAT3 identity;
cmsPipeline* forward;
cmsPipeline* reverse;
- cmsHPROFILE identityProfile = cmsCreateProfilePlaceholder( ctx);
+ cmsHPROFILE identityProfile = cmsCreateProfilePlaceholder(ctx);
- cmsSetProfileVersion(DbgThread(), identityProfile, 4.3);
+ cmsSetProfileVersion(ctx, identityProfile, 4.3);
- cmsSetDeviceClass(DbgThread(), identityProfile, cmsSigColorSpaceClass);
- cmsSetColorSpace(DbgThread(), identityProfile, dataSpace);
- cmsSetPCS(DbgThread(), identityProfile, cmsSigXYZData);
+ cmsSetDeviceClass(ctx, identityProfile, cmsSigColorSpaceClass);
+ cmsSetColorSpace(ctx, identityProfile, dataSpace);
+ cmsSetPCS(ctx, identityProfile, cmsSigXYZData);
- cmsSetHeaderRenderingIntent(DbgThread(), identityProfile, INTENT_RELATIVE_COLORIMETRIC);
+ cmsSetHeaderRenderingIntent(ctx, identityProfile, INTENT_RELATIVE_COLORIMETRIC);
- cmsWriteTag(DbgThread(), identityProfile, cmsSigMediaWhitePointTag, cmsD50_XYZ(DbgThread()));
+ cmsWriteTag(ctx, identityProfile, cmsSigMediaWhitePointTag, cmsD50_XYZ(ctx));
- _cmsMAT3identity(DbgThread(), &identity);
+ _cmsMAT3identity(ctx, &identity);
// build forward transform.... (RGB to PCS)
- forward = cmsPipelineAlloc( 0, 3, 3);
- cmsPipelineInsertStage(DbgThread(), forward, cmsAT_END, cmsStageAllocMatrix( ctx, 3, 3, (cmsFloat64Number*)&identity, (cmsFloat64Number*)&zero));
- cmsWriteTag(DbgThread(), identityProfile, cmsSigDToB1Tag, forward);
+ forward = cmsPipelineAlloc(ctx, 3, 3);
+ cmsPipelineInsertStage(ctx, forward, cmsAT_END, cmsStageAllocMatrix( ctx, 3, 3, (cmsFloat64Number*)&identity, (cmsFloat64Number*)&zero));
+ cmsWriteTag(ctx, identityProfile, cmsSigDToB1Tag, forward);
- cmsPipelineFree(DbgThread(), forward);
+ cmsPipelineFree(ctx, forward);
- reverse = cmsPipelineAlloc( 0, 3, 3);
- cmsPipelineInsertStage(DbgThread(), reverse, cmsAT_END, cmsStageAllocMatrix( ctx, 3, 3, (cmsFloat64Number*)&identity, (cmsFloat64Number*)&zero));
- cmsWriteTag(DbgThread(), identityProfile, cmsSigBToD1Tag, reverse);
+ reverse = cmsPipelineAlloc(ctx, 3, 3);
+ cmsPipelineInsertStage(ctx, reverse, cmsAT_END, cmsStageAllocMatrix( ctx, 3, 3, (cmsFloat64Number*)&identity, (cmsFloat64Number*)&zero));
+ cmsWriteTag(ctx, identityProfile, cmsSigBToD1Tag, reverse);
- cmsPipelineFree(DbgThread(), reverse);
+ cmsPipelineFree(ctx, reverse);
return identityProfile;
}
static
-cmsInt32Number CheckFloatXYZ(void)
+cmsInt32Number CheckFloatXYZ(cmsContext ctx)
{
cmsHPROFILE input;
- cmsHPROFILE xyzProfile = cmsCreateXYZProfile(DbgThread());
+ cmsHPROFILE xyzProfile = cmsCreateXYZProfile(ctx);
cmsHTRANSFORM xform;
cmsFloat32Number in[4];
cmsFloat32Number out[4];
@@ -7416,13 +7407,13 @@ cmsInt32Number CheckFloatXYZ(void)
in[3] = 0.5;
// RGB to XYZ
- input = IdentityMatrixProfile( cmsSigRgbData);
+ input = IdentityMatrixProfile(ctx, cmsSigRgbData);
- xform = cmsCreateTransform(DbgThread(), input, TYPE_RGB_FLT, xyzProfile, TYPE_XYZ_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), input);
+ xform = cmsCreateTransform(ctx, input, TYPE_RGB_FLT, xyzProfile, TYPE_XYZ_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ctx, input);
- cmsDoTransform(DbgThread(), xform, in, out, 1);
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDoTransform(ctx, xform, in, out, 1);
+ cmsDeleteTransform(ctx, xform);
if (!IsGoodVal("Float RGB->XYZ", in[0], out[0], FLOAT_PRECISSION) ||
!IsGoodVal("Float RGB->XYZ", in[1], out[1], FLOAT_PRECISSION) ||
@@ -7431,15 +7422,15 @@ cmsInt32Number CheckFloatXYZ(void)
// XYZ to XYZ
- input = IdentityMatrixProfile( cmsSigXYZData);
+ input = IdentityMatrixProfile(ctx, cmsSigXYZData);
- xform = cmsCreateTransform(DbgThread(), input, TYPE_XYZ_FLT, xyzProfile, TYPE_XYZ_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), input);
+ xform = cmsCreateTransform(ctx, input, TYPE_XYZ_FLT, xyzProfile, TYPE_XYZ_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ctx, input);
- cmsDoTransform(DbgThread(), xform, in, out, 1);
+ cmsDoTransform(ctx, xform, in, out, 1);
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ctx, xform);
if (!IsGoodVal("Float XYZ->XYZ", in[0], out[0], FLOAT_PRECISSION) ||
!IsGoodVal("Float XYZ->XYZ", in[1], out[1], FLOAT_PRECISSION) ||
@@ -7447,17 +7438,17 @@ cmsInt32Number CheckFloatXYZ(void)
return 0;
- input = IdentityMatrixProfile( cmsSigXYZData);
+ input = IdentityMatrixProfile(ctx, cmsSigXYZData);
# define TYPE_XYZA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4))
- xform = cmsCreateTransform(DbgThread(), input, TYPE_XYZA_FLT, xyzProfile, TYPE_XYZA_FLT, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_COPY_ALPHA);
- cmsCloseProfile(DbgThread(), input);
+ xform = cmsCreateTransform(ctx, input, TYPE_XYZA_FLT, xyzProfile, TYPE_XYZA_FLT, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_COPY_ALPHA);
+ cmsCloseProfile(ctx, input);
- cmsDoTransform(DbgThread(), xform, in, out, 1);
+ cmsDoTransform(ctx, xform, in, out, 1);
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ctx, xform);
if (!IsGoodVal("Float XYZA->XYZA", in[0], out[0], FLOAT_PRECISSION) ||
!IsGoodVal("Float XYZA->XYZA", in[1], out[1], FLOAT_PRECISSION) ||
@@ -7467,14 +7458,14 @@ cmsInt32Number CheckFloatXYZ(void)
// XYZ to RGB
- input = IdentityMatrixProfile( cmsSigRgbData);
+ input = IdentityMatrixProfile(ctx, cmsSigRgbData);
- xform = cmsCreateTransform(DbgThread(), xyzProfile, TYPE_XYZ_FLT, input, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), input);
+ xform = cmsCreateTransform(ctx, xyzProfile, TYPE_XYZ_FLT, input, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ctx, input);
- cmsDoTransform(DbgThread(), xform, in, out, 1);
+ cmsDoTransform(ctx, xform, in, out, 1);
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ctx, xform);
if (!IsGoodVal("Float XYZ->RGB", in[0], out[0], FLOAT_PRECISSION) ||
!IsGoodVal("Float XYZ->RGB", in[1], out[1], FLOAT_PRECISSION) ||
@@ -7485,21 +7476,21 @@ cmsInt32Number CheckFloatXYZ(void)
// Now the optimizer should remove a stage
// XYZ to RGB
- input = IdentityMatrixProfile( cmsSigRgbData);
+ input = IdentityMatrixProfile(ctx, cmsSigRgbData);
- xform = cmsCreateTransform(DbgThread(), input, TYPE_RGB_FLT, input, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
- cmsCloseProfile(DbgThread(), input);
+ xform = cmsCreateTransform(ctx, input, TYPE_RGB_FLT, input, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0);
+ cmsCloseProfile(ctx, input);
- cmsDoTransform(DbgThread(), xform, in, out, 1);
+ cmsDoTransform(ctx, xform, in, out, 1);
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ctx, xform);
if (!IsGoodVal("Float RGB->RGB", in[0], out[0], FLOAT_PRECISSION) ||
!IsGoodVal("Float RGB->RGB", in[1], out[1], FLOAT_PRECISSION) ||
!IsGoodVal("Float RGB->RGB", in[2], out[2], FLOAT_PRECISSION))
return 0;
- cmsCloseProfile(DbgThread(), xyzProfile);
+ cmsCloseProfile(ctx, xyzProfile);
return 1;
@@ -7523,13 +7514,13 @@ Bug reported
*/
static
-cmsInt32Number ChecksRGB2LabFLT(void)
+cmsInt32Number ChecksRGB2LabFLT(cmsContext ctx)
{
- cmsHPROFILE hSRGB = cmsCreate_sRGBProfile(DbgThread());
- cmsHPROFILE hLab = cmsCreateLab4Profile(DbgThread(), NULL);
+ cmsHPROFILE hSRGB = cmsCreate_sRGBProfile(ctx);
+ cmsHPROFILE hLab = cmsCreateLab4Profile(ctx, NULL);
- cmsHTRANSFORM xform1 = cmsCreateTransform(DbgThread(), hSRGB, TYPE_RGBA_FLT, hLab, TYPE_LabA_FLT, 0, cmsFLAGS_NOCACHE|cmsFLAGS_NOOPTIMIZE);
- cmsHTRANSFORM xform2 = cmsCreateTransform(DbgThread(), hLab, TYPE_LabA_FLT, hSRGB, TYPE_RGBA_FLT, 0, cmsFLAGS_NOCACHE|cmsFLAGS_NOOPTIMIZE);
+ cmsHTRANSFORM xform1 = cmsCreateTransform(ctx, hSRGB, TYPE_RGBA_FLT, hLab, TYPE_LabA_FLT, 0, cmsFLAGS_NOCACHE|cmsFLAGS_NOOPTIMIZE);
+ cmsHTRANSFORM xform2 = cmsCreateTransform(ctx, hLab, TYPE_LabA_FLT, hSRGB, TYPE_RGBA_FLT, 0, cmsFLAGS_NOCACHE|cmsFLAGS_NOOPTIMIZE);
cmsFloat32Number RGBA1[4], RGBA2[4], LabA[4];
int i;
@@ -7542,8 +7533,8 @@ cmsInt32Number ChecksRGB2LabFLT(void)
RGBA1[2] = i / 100.0F;
RGBA1[3] = 0;
- cmsDoTransform(DbgThread(), xform1, RGBA1, LabA, 1);
- cmsDoTransform(DbgThread(), xform2, LabA, RGBA2, 1);
+ cmsDoTransform(ctx, xform1, RGBA1, LabA, 1);
+ cmsDoTransform(ctx, xform2, LabA, RGBA2, 1);
if (!IsGoodVal("Float RGB->RGB", RGBA1[0], RGBA2[0], FLOAT_PRECISSION) ||
!IsGoodVal("Float RGB->RGB", RGBA1[1], RGBA2[1], FLOAT_PRECISSION) ||
@@ -7552,10 +7543,10 @@ cmsInt32Number ChecksRGB2LabFLT(void)
}
- cmsDeleteTransform(DbgThread(), xform1);
- cmsDeleteTransform(DbgThread(), xform2);
- cmsCloseProfile(DbgThread(), hSRGB);
- cmsCloseProfile(DbgThread(), hLab);
+ cmsDeleteTransform(ctx, xform1);
+ cmsDeleteTransform(ctx, xform2);
+ cmsCloseProfile(ctx, hSRGB);
+ cmsCloseProfile(ctx, hLab);
return 1;
}
@@ -7578,7 +7569,7 @@ double Rec709(double L)
static
-cmsInt32Number CheckParametricRec709(void)
+cmsInt32Number CheckParametricRec709(cmsContext ContextID)
{
cmsFloat64Number params[7];
cmsToneCurve* t;
@@ -7592,23 +7583,23 @@ cmsInt32Number CheckParametricRec709(void)
params[5] = -0.099; /* e */
params[6] = 0.0; /* f */
- t = cmsBuildParametricToneCurve (NULL, 5, params);
+ t = cmsBuildParametricToneCurve (ContextID, 5, params);
for (i=0; i < 256; i++)
{
cmsFloat32Number n = (cmsFloat32Number) i / 255.0F;
- cmsUInt16Number f1 = (cmsUInt16Number) floor(255.0 * cmsEvalToneCurveFloat(DbgThread(), t, n) + 0.5);
+ cmsUInt16Number f1 = (cmsUInt16Number) floor(255.0 * cmsEvalToneCurveFloat(ContextID, t, n) + 0.5);
cmsUInt16Number f2 = (cmsUInt16Number) floor(255.0*Rec709((double) i / 255.0) + 0.5);
if (f1 != f2)
{
- cmsFreeToneCurve(DbgThread(), t);
+ cmsFreeToneCurve(ContextID, t);
return 0;
}
}
- cmsFreeToneCurve(DbgThread(), t);
+ cmsFreeToneCurve(ContextID, t);
return 1;
}
@@ -7622,7 +7613,7 @@ static cmsFloat32Number StraightLine( cmsFloat32Number x)
return (cmsFloat32Number) (0.1 + 0.9 * x);
}
-static cmsInt32Number TestCurve( const char* label, cmsToneCurve* curve, Function fn)
+static cmsInt32Number TestCurve(cmsContext ContextID, const char* label, cmsToneCurve* curve, Function fn)
{
cmsInt32Number ok = 1;
int i;
@@ -7630,7 +7621,7 @@ static cmsInt32Number TestCurve( const char* label, cmsToneCurve* curve, Functio
cmsFloat32Number x = (cmsFloat32Number)i / (kNumPoints*3 - 1);
cmsFloat32Number expectedY = fn(x);
- cmsFloat32Number out = cmsEvalToneCurveFloat(DbgThread(), curve, x);
+ cmsFloat32Number out = cmsEvalToneCurveFloat(ContextID, curve, x);
if (!IsGoodVal(label, expectedY, out, FLOAT_PRECISSION)) {
ok = 0;
@@ -7640,7 +7631,7 @@ static cmsInt32Number TestCurve( const char* label, cmsToneCurve* curve, Functio
}
static
-cmsInt32Number CheckFloatSamples(void)
+cmsInt32Number CheckFloatSamples(cmsContext ContextID)
{
cmsFloat32Number y[kNumPoints];
int i;
@@ -7653,15 +7644,15 @@ cmsInt32Number CheckFloatSamples(void)
y[i] = StraightLine(x);
}
- curve = cmsBuildTabulatedToneCurveFloat(NULL, kNumPoints, y);
- ok = TestCurve( "Float Samples", curve, StraightLine);
- cmsFreeToneCurve(DbgThread(), curve);
+ curve = cmsBuildTabulatedToneCurveFloat(ContextID, kNumPoints, y);
+ ok = TestCurve(ContextID, "Float Samples", curve, StraightLine);
+ cmsFreeToneCurve(ContextID, curve);
return ok;
}
static
-cmsInt32Number CheckFloatSegments(void)
+cmsInt32Number CheckFloatSegments(cmsContext ContextID)
{
cmsInt32Number ok = 1;
int i;
@@ -7706,18 +7697,18 @@ cmsInt32Number CheckFloatSegments(void)
Seg[2].Params[3] = 0.1f;
Seg[2].Params[4] = 0.0f;
- curve = cmsBuildSegmentedToneCurve(0, 3, Seg);
+ curve = cmsBuildSegmentedToneCurve(ContextID, 3, Seg);
- ok = TestCurve( "Float Segmented Curve", curve, StraightLine);
+ ok = TestCurve(ContextID, "Float Segmented Curve", curve, StraightLine);
- cmsFreeToneCurve(DbgThread(), curve);
+ cmsFreeToneCurve(ContextID, curve);
return ok;
}
static
-cmsInt32Number CheckReadRAW(void)
+cmsInt32Number CheckReadRAW(cmsContext ContextID)
{
cmsInt32Number tag_size, tag_size1;
char buffer[4];
@@ -7725,15 +7716,15 @@ cmsInt32Number CheckReadRAW(void)
SubTest("RAW read on on-disk");
- hProfile = cmsOpenProfileFromFile(DbgThread(), "test1.icc", "r");
+ hProfile = cmsOpenProfileFromFile(ContextID, "test1.icc", "r");
if (hProfile == NULL)
return 0;
- tag_size = cmsReadRawTag(DbgThread(), hProfile, cmsSigGamutTag, buffer, 4);
- tag_size1 = cmsReadRawTag(DbgThread(), hProfile, cmsSigGamutTag, NULL, 0);
+ tag_size = cmsReadRawTag(ContextID, hProfile, cmsSigGamutTag, buffer, 4);
+ tag_size1 = cmsReadRawTag(ContextID, hProfile, cmsSigGamutTag, NULL, 0);
- cmsCloseProfile(DbgThread(), hProfile);
+ cmsCloseProfile(ContextID, hProfile);
if (tag_size != 4)
return 0;
@@ -7742,11 +7733,11 @@ cmsInt32Number CheckReadRAW(void)
return 0;
SubTest("RAW read on in-memory created profiles");
- hProfile = cmsCreate_sRGBProfile(DbgThread());
- tag_size = cmsReadRawTag(DbgThread(), hProfile, cmsSigGreenColorantTag, buffer, 4);
- tag_size1 = cmsReadRawTag(DbgThread(), hProfile, cmsSigGreenColorantTag, NULL, 0);
+ hProfile = cmsCreate_sRGBProfile(ContextID);
+ tag_size = cmsReadRawTag(ContextID, hProfile, cmsSigGreenColorantTag, buffer, 4);
+ tag_size1 = cmsReadRawTag(ContextID, hProfile, cmsSigGreenColorantTag, NULL, 0);
- cmsCloseProfile(DbgThread(), hProfile);
+ cmsCloseProfile(ContextID, hProfile);
if (tag_size != 4)
return 0;
@@ -7758,7 +7749,7 @@ cmsInt32Number CheckReadRAW(void)
static
-cmsInt32Number CheckMeta(void)
+cmsInt32Number CheckMeta(cmsContext ContextID)
{
char *data;
cmsHANDLE dict;
@@ -7768,20 +7759,20 @@ cmsInt32Number CheckMeta(void)
int rc;
/* open file */
- p = cmsOpenProfileFromFile(DbgThread(), "ibm-t61.icc", "r");
+ p = cmsOpenProfileFromFile(ContextID, "ibm-t61.icc", "r");
if (p == NULL) return 0;
/* read dictionary, but don't do anything with the value */
//COMMENT OUT THE NEXT TWO LINES AND IT WORKS FINE!!!
- dict = cmsReadTag(DbgThread(), p, cmsSigMetaTag);
+ dict = cmsReadTag(ContextID, p, cmsSigMetaTag);
if (dict == NULL) return 0;
/* serialize profile to memory */
- rc = cmsSaveProfileToMem(DbgThread(), p, NULL, &clen);
+ rc = cmsSaveProfileToMem(ContextID, p, NULL, &clen);
if (!rc) return 0;
data = (char*) malloc(clen);
- rc = cmsSaveProfileToMem(DbgThread(), p, data, &clen);
+ rc = cmsSaveProfileToMem(ContextID, p, data, &clen);
if (!rc) return 0;
/* write the memory blob to a file */
@@ -7791,39 +7782,39 @@ cmsInt32Number CheckMeta(void)
fclose(fp);
free(data);
- cmsCloseProfile(DbgThread(), p);
+ cmsCloseProfile(ContextID, p);
/* open newly created file and read metadata */
- p = cmsOpenProfileFromFile(DbgThread(), "new.icc", "r");
+ p = cmsOpenProfileFromFile(ContextID, "new.icc", "r");
//ERROR: Bad dictionary Name/Value
//ERROR: Corrupted tag 'meta'
//test: test.c:59: main: Assertion `dict' failed.
- dict = cmsReadTag(DbgThread(), p, cmsSigMetaTag);
+ dict = cmsReadTag(ContextID, p, cmsSigMetaTag);
if (dict == NULL) return 0;
- cmsCloseProfile(DbgThread(), p);
+ cmsCloseProfile(ContextID, p);
return 1;
}
// Bug on applying null transforms on floating point buffers
static
-cmsInt32Number CheckFloatNULLxform(void)
+cmsInt32Number CheckFloatNULLxform(cmsContext ContextID)
{
int i;
cmsFloat32Number in[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
cmsFloat32Number out[10];
- cmsHTRANSFORM xform = cmsCreateTransform(DbgThread(), NULL, TYPE_GRAY_FLT, NULL, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, cmsFLAGS_NULLTRANSFORM);
+ cmsHTRANSFORM xform = cmsCreateTransform(ContextID, NULL, TYPE_GRAY_FLT, NULL, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, cmsFLAGS_NULLTRANSFORM);
if (xform == NULL) {
Fail("Unable to create float null transform");
return 0;
}
- cmsDoTransform(DbgThread(), xform, in, out, 10);
+ cmsDoTransform(ContextID, xform, in, out, 10);
- cmsDeleteTransform(DbgThread(), xform);
+ cmsDeleteTransform(ContextID, xform);
for (i=0; i < 10; i++) {
if (!IsGoodVal("float nullxform", in[i], out[i], 0.001)) {
@@ -7836,36 +7827,36 @@ cmsInt32Number CheckFloatNULLxform(void)
}
static
-cmsInt32Number CheckRemoveTag(void)
+cmsInt32Number CheckRemoveTag(cmsContext ContextID)
{
cmsHPROFILE p;
cmsMLU *mlu;
int ret;
- p = cmsCreate_sRGBProfile(NULL);
+ p = cmsCreate_sRGBProfile(ContextID);
/* set value */
- mlu = cmsMLUalloc (NULL, 1);
- ret = cmsMLUsetASCII(DbgThread(), mlu, "en", "US", "bar");
+ mlu = cmsMLUalloc (ContextID, 1);
+ ret = cmsMLUsetASCII(ContextID, mlu, "en", "US", "bar");
if (!ret) return 0;
- ret = cmsWriteTag(DbgThread(), p, cmsSigDeviceMfgDescTag, mlu);
+ ret = cmsWriteTag(ContextID, p, cmsSigDeviceMfgDescTag, mlu);
if (!ret) return 0;
- cmsMLUfree(DbgThread(), mlu);
+ cmsMLUfree(ContextID, mlu);
/* remove the tag */
- ret = cmsWriteTag(DbgThread(), p, cmsSigDeviceMfgDescTag, NULL);
+ ret = cmsWriteTag(ContextID, p, cmsSigDeviceMfgDescTag, NULL);
if (!ret) return 0;
/* THIS EXPLODES */
- cmsCloseProfile(DbgThread(), p);
+ cmsCloseProfile(ContextID, p);
return 1;
}
static
-cmsInt32Number CheckMatrixSimplify(void)
+cmsInt32Number CheckMatrixSimplify(cmsContext ContextID)
{
cmsHPROFILE pIn;
@@ -7874,16 +7865,16 @@ cmsInt32Number CheckMatrixSimplify(void)
unsigned char buf[3] = { 127, 32, 64 };
- pIn = cmsCreate_sRGBProfile(DbgThread());
- pOut = cmsOpenProfileFromFile(DbgThread(), "ibm-t61.icc", "r");
+ pIn = cmsCreate_sRGBProfile(ContextID);
+ pOut = cmsOpenProfileFromFile(ContextID, "ibm-t61.icc", "r");
if (pIn == NULL || pOut == NULL)
return 0;
- t = cmsCreateTransform(DbgThread(), pIn, TYPE_RGB_8, pOut, TYPE_RGB_8, INTENT_PERCEPTUAL, 0);
- cmsDoTransformStride(DbgThread(), t, buf, buf, 1, 1);
- cmsDeleteTransform(DbgThread(), t);
- cmsCloseProfile(DbgThread(), pIn);
- cmsCloseProfile(DbgThread(), pOut);
+ t = cmsCreateTransform(ContextID, pIn, TYPE_RGB_8, pOut, TYPE_RGB_8, INTENT_PERCEPTUAL, 0);
+ cmsDoTransformStride(ContextID, t, buf, buf, 1, 1);
+ cmsDeleteTransform(ContextID, t);
+ cmsCloseProfile(ContextID, pIn);
+ cmsCloseProfile(ContextID, pOut);
return buf[0] == 144 && buf[1] == 0 && buf[2] == 69;
@@ -7892,7 +7883,7 @@ cmsInt32Number CheckMatrixSimplify(void)
static
-cmsInt32Number CheckTransformLineStride(void)
+cmsInt32Number CheckTransformLineStride(cmsContext ContextID)
{
cmsHPROFILE pIn;
@@ -7924,50 +7915,50 @@ cmsInt32Number CheckTransformLineStride(void)
memset(out, 0, sizeof(out));
- pIn = cmsCreate_sRGBProfile(DbgThread());
- pOut = cmsOpenProfileFromFile(DbgThread(), "ibm-t61.icc", "r");
+ pIn = cmsCreate_sRGBProfile(ContextID);
+ pOut = cmsOpenProfileFromFile(ContextID, "ibm-t61.icc", "r");
if (pIn == NULL || pOut == NULL)
return 0;
- t = cmsCreateTransform(DbgThread(), pIn, TYPE_RGB_8, pOut, TYPE_RGB_8, INTENT_PERCEPTUAL, cmsFLAGS_COPY_ALPHA);
+ t = cmsCreateTransform(ContextID, pIn, TYPE_RGB_8, pOut, TYPE_RGB_8, INTENT_PERCEPTUAL, cmsFLAGS_COPY_ALPHA);
- cmsDoTransformLineStride(DbgThread(), t, buf1, out, 2, 4, 7, 7, 0, 0);
- cmsDeleteTransform(DbgThread(), t);
+ cmsDoTransformLineStride(ContextID, t, buf1, out, 2, 4, 7, 7, 0, 0);
+ cmsDeleteTransform(ContextID, t);
if (memcmp(out, buf1, sizeof(buf1)) != 0) {
Fail("Failed transform line stride on RGB8");
- cmsCloseProfile(DbgThread(), pIn);
- cmsCloseProfile(DbgThread(), pOut);
+ cmsCloseProfile(ContextID, pIn);
+ cmsCloseProfile(ContextID, pOut);
return 0;
}
memset(out, 0, sizeof(out));
- t = cmsCreateTransform(DbgThread(), pIn, TYPE_RGBA_8, pOut, TYPE_RGBA_8, INTENT_PERCEPTUAL, cmsFLAGS_COPY_ALPHA);
+ t = cmsCreateTransform(ContextID, pIn, TYPE_RGBA_8, pOut, TYPE_RGBA_8, INTENT_PERCEPTUAL, cmsFLAGS_COPY_ALPHA);
- cmsDoTransformLineStride(DbgThread(), t, buf2, out, 2, 4, 9, 9, 0, 0);
+ cmsDoTransformLineStride(ContextID, t, buf2, out, 2, 4, 9, 9, 0, 0);
- cmsDeleteTransform(DbgThread(), t);
+ cmsDeleteTransform(ContextID, t);
if (memcmp(out, buf2, sizeof(buf2)) != 0) {
- cmsCloseProfile(DbgThread(), pIn);
- cmsCloseProfile(DbgThread(), pOut);
+ cmsCloseProfile(ContextID, pIn);
+ cmsCloseProfile(ContextID, pOut);
Fail("Failed transform line stride on RGBA8");
return 0;
}
memset(out, 0, sizeof(out));
- t = cmsCreateTransform(DbgThread(), pIn, TYPE_RGBA_16, pOut, TYPE_RGBA_16, INTENT_PERCEPTUAL, cmsFLAGS_COPY_ALPHA);
+ t = cmsCreateTransform(ContextID, pIn, TYPE_RGBA_16, pOut, TYPE_RGBA_16, INTENT_PERCEPTUAL, cmsFLAGS_COPY_ALPHA);
- cmsDoTransformLineStride(DbgThread(), t, buf3, out, 2, 4, 18, 18, 0, 0);
+ cmsDoTransformLineStride(ContextID, t, buf3, out, 2, 4, 18, 18, 0, 0);
- cmsDeleteTransform(DbgThread(), t);
+ cmsDeleteTransform(ContextID, t);
if (memcmp(out, buf3, sizeof(buf3)) != 0) {
- cmsCloseProfile(DbgThread(), pIn);
- cmsCloseProfile(DbgThread(), pOut);
+ cmsCloseProfile(ContextID, pIn);
+ cmsCloseProfile(ContextID, pOut);
Fail("Failed transform line stride on RGBA16");
return 0;
}
@@ -7977,42 +7968,42 @@ cmsInt32Number CheckTransformLineStride(void)
// From 8 to 16
- t = cmsCreateTransform(DbgThread(), pIn, TYPE_RGBA_8, pOut, TYPE_RGBA_16, INTENT_PERCEPTUAL, cmsFLAGS_COPY_ALPHA);
+ t = cmsCreateTransform(ContextID, pIn, TYPE_RGBA_8, pOut, TYPE_RGBA_16, INTENT_PERCEPTUAL, cmsFLAGS_COPY_ALPHA);
- cmsDoTransformLineStride(DbgThread(), t, buf2, out, 2, 4, 9, 18, 0, 0);
+ cmsDoTransformLineStride(ContextID, t, buf2, out, 2, 4, 9, 18, 0, 0);
- cmsDeleteTransform(DbgThread(), t);
+ cmsDeleteTransform(ContextID, t);
if (memcmp(out, buf3, sizeof(buf3)) != 0) {
- cmsCloseProfile(DbgThread(), pIn);
- cmsCloseProfile(DbgThread(), pOut);
+ cmsCloseProfile(ContextID, pIn);
+ cmsCloseProfile(ContextID, pOut);
Fail("Failed transform line stride on RGBA16");
return 0;
}
- cmsCloseProfile(DbgThread(), pIn);
- cmsCloseProfile(DbgThread(), pOut);
+ cmsCloseProfile(ContextID, pIn);
+ cmsCloseProfile(ContextID, pOut);
return 1;
}
static
-int CheckPlanar8opt(void)
+int CheckPlanar8opt(cmsContext ContextID)
{
- cmsHPROFILE aboveRGB = Create_AboveRGB();
- cmsHPROFILE sRGB = cmsCreate_sRGBProfile(DbgThread());
+ cmsHPROFILE aboveRGB = Create_AboveRGB(ContextID);
+ cmsHPROFILE sRGB = cmsCreate_sRGBProfile(ContextID);
- cmsHTRANSFORM transform = cmsCreateTransform(DbgThread(),
+ cmsHTRANSFORM transform = cmsCreateTransform(ContextID,
sRGB, TYPE_RGB_8_PLANAR,
aboveRGB, TYPE_RGB_8_PLANAR,
INTENT_PERCEPTUAL, 0);
- cmsDeleteTransform(DbgThread(), transform);
- cmsCloseProfile(DbgThread(), aboveRGB);
- cmsCloseProfile(DbgThread(), sRGB);
+ cmsDeleteTransform(ContextID, transform);
+ cmsCloseProfile(ContextID, aboveRGB);
+ cmsCloseProfile(ContextID, sRGB);
return 1;
}
@@ -8021,20 +8012,20 @@ int CheckPlanar8opt(void)
* Bug reported & fixed. Thanks to Kornel Lesinski for spotting this.
*/
static
-int CheckSE(void)
+int CheckSE(cmsContext ContextID)
{
- cmsHPROFILE input_profile = Create_AboveRGB();
- cmsHPROFILE output_profile = cmsCreate_sRGBProfile(DbgThread());
+ cmsHPROFILE input_profile = Create_AboveRGB(ContextID);
+ cmsHPROFILE output_profile = cmsCreate_sRGBProfile(ContextID);
- cmsHTRANSFORM tr = cmsCreateTransform(DbgThread(), input_profile, TYPE_RGBA_8, output_profile, TYPE_RGBA_16_SE, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_COPY_ALPHA);
+ cmsHTRANSFORM tr = cmsCreateTransform(ContextID, input_profile, TYPE_RGBA_8, output_profile, TYPE_RGBA_16_SE, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_COPY_ALPHA);
cmsUInt8Number rgba[4] = { 40, 41, 41, 0xfa };
cmsUInt16Number out[4];
- cmsDoTransform(DbgThread(), tr, rgba, out, 1);
- cmsCloseProfile(DbgThread(), input_profile);
- cmsCloseProfile(DbgThread(), output_profile);
- cmsDeleteTransform(DbgThread(), tr);
+ cmsDoTransform(ContextID, tr, rgba, out, 1);
+ cmsCloseProfile(ContextID, input_profile);
+ cmsCloseProfile(ContextID, output_profile);
+ cmsDeleteTransform(ContextID, tr);
if (out[0] != 0xf622 || out[1] != 0x7f24 || out[2] != 0x7f24)
return 0;
@@ -8046,7 +8037,7 @@ int CheckSE(void)
* Bug reported.
*/
static
-int CheckForgedMPE(void)
+int CheckForgedMPE(cmsContext ContextID)
{
cmsUInt32Number i;
cmsHPROFILE srcProfile;
@@ -8059,18 +8050,18 @@ int CheckForgedMPE(void)
cmsHTRANSFORM hTransform;
cmsUInt8Number output[4];
- srcProfile = cmsOpenProfileFromFile(DbgThread(), "bad_mpe.icc", "r");
+ srcProfile = cmsOpenProfileFromFile(ContextID, "bad_mpe.icc", "r");
if (!srcProfile)
return 0;
- dstProfile = cmsCreate_sRGBProfile(DbgThread());
+ dstProfile = cmsCreate_sRGBProfile(ContextID);
if (!dstProfile) {
- cmsCloseProfile(DbgThread(), srcProfile);
+ cmsCloseProfile(ContextID, srcProfile);
return 0;
}
- srcCS = cmsGetColorSpace(DbgThread(), srcProfile);
- nSrcComponents = cmsChannelsOf(DbgThread(), srcCS);
+ srcCS = cmsGetColorSpace(ContextID, srcProfile);
+ nSrcComponents = cmsChannelsOf(ContextID, srcCS);
if (srcCS == cmsSigLabData) {
srcFormat =
@@ -8081,14 +8072,14 @@ int CheckForgedMPE(void)
COLORSPACE_SH(PT_ANY) | CHANNELS_SH(nSrcComponents) | BYTES_SH(1);
}
- cmsSetLogErrorHandler(DbgThread(), ErrorReportingFunction);
+ cmsSetLogErrorHandler(ContextID, ErrorReportingFunction);
- hTransform = cmsCreateTransform(DbgThread(), srcProfile, srcFormat, dstProfile,
+ hTransform = cmsCreateTransform(ContextID, srcProfile, srcFormat, dstProfile,
TYPE_BGR_8, intent, flags);
- cmsCloseProfile(DbgThread(), srcProfile);
- cmsCloseProfile(DbgThread(), dstProfile);
+ cmsCloseProfile(ContextID, srcProfile);
+ cmsCloseProfile(ContextID, dstProfile);
- cmsSetLogErrorHandler(DbgThread(), FatalErrorQuit);
+ cmsSetLogErrorHandler(ContextID, FatalErrorQuit);
// Should report error
if (!TrappedError) return 0;
@@ -8103,15 +8094,15 @@ int CheckForgedMPE(void)
double input[128];
for (i = 0; i < nSrcComponents; i++)
input[i] = 0.5f;
- cmsDoTransform(DbgThread(), hTransform, input, output, 1);
+ cmsDoTransform(ContextID, hTransform, input, output, 1);
}
else {
cmsUInt8Number input[128];
for (i = 0; i < nSrcComponents; i++)
input[i] = 128;
- cmsDoTransform(DbgThread(), hTransform, input, output, 1);
+ cmsDoTransform(ContextID, hTransform, input, output, 1);
}
- cmsDeleteTransform(DbgThread(), hTransform);
+ cmsDeleteTransform(ContextID, hTransform);
return 0;
}
@@ -8123,16 +8114,16 @@ int CheckForgedMPE(void)
* Thanks to Richard Hughes for providing the test
*/
static
-int CheckProofingIntersection(void)
+int CheckProofingIntersection(cmsContext ContextID)
{
cmsHPROFILE profile_null, hnd1, hnd2;
cmsHTRANSFORM transform;
- hnd1 = cmsCreate_sRGBProfile(DbgThread());
- hnd2 = Create_AboveRGB();
+ hnd1 = cmsCreate_sRGBProfile(ContextID);
+ hnd2 = Create_AboveRGB(ContextID);
- profile_null = cmsCreateNULLProfile(DbgThread());
- transform = cmsCreateProofingTransform(DbgThread(),
+ profile_null = cmsCreateNULLProfile(ContextID);
+ transform = cmsCreateProofingTransform(ContextID,
hnd1,
TYPE_RGB_FLT,
profile_null,
@@ -8143,14 +8134,14 @@ int CheckProofingIntersection(void)
cmsFLAGS_GAMUTCHECK |
cmsFLAGS_SOFTPROOFING);
- cmsCloseProfile(DbgThread(), hnd1);
- cmsCloseProfile(DbgThread(), hnd2);
- cmsCloseProfile(DbgThread(), profile_null);
+ cmsCloseProfile(ContextID, hnd1);
+ cmsCloseProfile(ContextID, hnd2);
+ cmsCloseProfile(ContextID, profile_null);
// Failed?
if (transform == NULL) return 0;
- cmsDeleteTransform(DbgThread(), transform);
+ cmsDeleteTransform(ContextID, transform);
return 1;
}
@@ -8185,7 +8176,7 @@ void PrintPerformance(cmsUInt32Number Bytes, cmsUInt32Number SizeOfPixel, cmsFlo
static
-void SpeedTest32bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+void SpeedTest32bits(cmsContext ContextID, const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
{
cmsInt32Number r, g, b, j;
clock_t atime;
@@ -8199,10 +8190,10 @@ void SpeedTest32bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransform(DbgThread(), hlcmsProfileIn, TYPE_RGBA_FLT,
+ hlcmsxform = cmsCreateTransform(ContextID, hlcmsProfileIn, TYPE_RGBA_FLT,
hlcmsProfileOut, TYPE_RGBA_FLT, Intent, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hlcmsProfileIn);
- cmsCloseProfile(DbgThread(), hlcmsProfileOut);
+ cmsCloseProfile(ContextID, hlcmsProfileIn);
+ cmsCloseProfile(ContextID, hlcmsProfileOut);
NumPixels = 256 / Interval * 256 / Interval * 256 / Interval;
Mb = NumPixels * sizeof(Scanline_rgba32);
@@ -8227,19 +8218,19 @@ void SpeedTest32bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
atime = clock();
- cmsDoTransform(DbgThread(), hlcmsxform, In, In, NumPixels);
+ cmsDoTransform(ContextID, hlcmsxform, In, In, NumPixels);
diff = clock() - atime;
free(In);
PrintPerformance(Mb, sizeof(Scanline_rgba32), diff);
- cmsDeleteTransform(DbgThread(), hlcmsxform);
+ cmsDeleteTransform(ContextID, hlcmsxform);
}
static
-void SpeedTest16bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+void SpeedTest16bits(cmsContext ContextID, const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
{
cmsInt32Number r, g, b, j;
clock_t atime;
@@ -8251,10 +8242,10 @@ void SpeedTest16bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransform(DbgThread(), hlcmsProfileIn, TYPE_RGB_16,
+ hlcmsxform = cmsCreateTransform(ContextID, hlcmsProfileIn, TYPE_RGB_16,
hlcmsProfileOut, TYPE_RGB_16, Intent, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hlcmsProfileIn);
- cmsCloseProfile(DbgThread(), hlcmsProfileOut);
+ cmsCloseProfile(ContextID, hlcmsProfileIn);
+ cmsCloseProfile(ContextID, hlcmsProfileOut);
Mb = 256*256*256 * sizeof(Scanline_rgb16);
@@ -8277,19 +8268,19 @@ void SpeedTest16bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
atime = clock();
- cmsDoTransform(DbgThread(), hlcmsxform, In, In, 256*256*256);
+ cmsDoTransform(ContextID, hlcmsxform, In, In, 256*256*256);
diff = clock() - atime;
free(In);
PrintPerformance(Mb, sizeof(Scanline_rgb16), diff);
- cmsDeleteTransform(DbgThread(), hlcmsxform);
+ cmsDeleteTransform(ContextID, hlcmsxform);
}
static
-void SpeedTest32bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut)
+void SpeedTest32bitsCMYK(cmsContext ContextID, const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut)
{
cmsInt32Number r, g, b, j;
clock_t atime;
@@ -8303,10 +8294,10 @@ void SpeedTest32bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransform(DbgThread(), hlcmsProfileIn, TYPE_CMYK_FLT,
+ hlcmsxform = cmsCreateTransform(ContextID, hlcmsProfileIn, TYPE_CMYK_FLT,
hlcmsProfileOut, TYPE_CMYK_FLT, INTENT_PERCEPTUAL, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hlcmsProfileIn);
- cmsCloseProfile(DbgThread(), hlcmsProfileOut);
+ cmsCloseProfile(ContextID, hlcmsProfileIn);
+ cmsCloseProfile(ContextID, hlcmsProfileOut);
NumPixels = 256 / Interval * 256 / Interval * 256 / Interval;
Mb = NumPixels * sizeof(Scanline_rgba32);
@@ -8331,7 +8322,7 @@ void SpeedTest32bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
atime = clock();
- cmsDoTransform(DbgThread(), hlcmsxform, In, In, NumPixels);
+ cmsDoTransform(ContextID, hlcmsxform, In, In, NumPixels);
diff = clock() - atime;
@@ -8339,13 +8330,13 @@ void SpeedTest32bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
PrintPerformance(Mb, sizeof(Scanline_rgba32), diff);
- cmsDeleteTransform(DbgThread(), hlcmsxform);
+ cmsDeleteTransform(ContextID, hlcmsxform);
}
static
-void SpeedTest16bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut)
+void SpeedTest16bitsCMYK(cmsContext ContextID, const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut)
{
cmsInt32Number r, g, b, j;
clock_t atime;
@@ -8357,10 +8348,10 @@ void SpeedTest16bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransform(DbgThread(), hlcmsProfileIn, TYPE_CMYK_16,
+ hlcmsxform = cmsCreateTransform(ContextID, hlcmsProfileIn, TYPE_CMYK_16,
hlcmsProfileOut, TYPE_CMYK_16, INTENT_PERCEPTUAL, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hlcmsProfileIn);
- cmsCloseProfile(DbgThread(), hlcmsProfileOut);
+ cmsCloseProfile(ContextID, hlcmsProfileIn);
+ cmsCloseProfile(ContextID, hlcmsProfileOut);
Mb = 256*256*256*sizeof(Scanline_rgba16);
@@ -8384,7 +8375,7 @@ void SpeedTest16bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
atime = clock();
- cmsDoTransform(DbgThread(), hlcmsxform, In, In, 256*256*256);
+ cmsDoTransform(ContextID, hlcmsxform, In, In, 256*256*256);
diff = clock() - atime;
@@ -8392,13 +8383,13 @@ void SpeedTest16bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
PrintPerformance(Mb, sizeof(Scanline_rgba16), diff);
- cmsDeleteTransform(DbgThread(), hlcmsxform);
+ cmsDeleteTransform(ContextID, hlcmsxform);
}
static
-void SpeedTest8bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+void SpeedTest8bits(cmsContext ContextID, const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
{
cmsInt32Number r, g, b, j;
clock_t atime;
@@ -8410,10 +8401,10 @@ void SpeedTest8bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransform(DbgThread(), hlcmsProfileIn, TYPE_RGB_8,
+ hlcmsxform = cmsCreateTransform(ContextID, hlcmsProfileIn, TYPE_RGB_8,
hlcmsProfileOut, TYPE_RGB_8, Intent, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hlcmsProfileIn);
- cmsCloseProfile(DbgThread(), hlcmsProfileOut);
+ cmsCloseProfile(ContextID, hlcmsProfileIn);
+ cmsCloseProfile(ContextID, hlcmsProfileOut);
Mb = 256*256*256*sizeof(Scanline_rgb8);
@@ -8435,7 +8426,7 @@ void SpeedTest8bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
atime = clock();
- cmsDoTransform(DbgThread(), hlcmsxform, In, In, 256*256*256);
+ cmsDoTransform(ContextID, hlcmsxform, In, In, 256*256*256);
diff = clock() - atime;
@@ -8443,13 +8434,13 @@ void SpeedTest8bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE
PrintPerformance(Mb, sizeof(Scanline_rgb8), diff);
- cmsDeleteTransform(DbgThread(), hlcmsxform);
+ cmsDeleteTransform(ContextID, hlcmsxform);
}
static
-void SpeedTest8bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut)
+void SpeedTest8bitsCMYK(cmsContext ContextID, const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut)
{
cmsInt32Number r, g, b, j;
clock_t atime;
@@ -8461,10 +8452,10 @@ void SpeedTest8bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROF
if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransform(DbgThread(), hlcmsProfileIn, TYPE_CMYK_8,
+ hlcmsxform = cmsCreateTransform(ContextID, hlcmsProfileIn, TYPE_CMYK_8,
hlcmsProfileOut, TYPE_CMYK_8, INTENT_PERCEPTUAL, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hlcmsProfileIn);
- cmsCloseProfile(DbgThread(), hlcmsProfileOut);
+ cmsCloseProfile(ContextID, hlcmsProfileIn);
+ cmsCloseProfile(ContextID, hlcmsProfileOut);
Mb = 256*256*256*sizeof(Scanline_rgba8);
@@ -8487,7 +8478,7 @@ void SpeedTest8bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROF
atime = clock();
- cmsDoTransform(DbgThread(), hlcmsxform, In, In, 256*256*256);
+ cmsDoTransform(ContextID, hlcmsxform, In, In, 256*256*256);
diff = clock() - atime;
@@ -8496,13 +8487,13 @@ void SpeedTest8bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROF
PrintPerformance(Mb, sizeof(Scanline_rgba8), diff);
- cmsDeleteTransform(DbgThread(), hlcmsxform);
+ cmsDeleteTransform(ContextID, hlcmsxform);
}
static
-void SpeedTest32bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+void SpeedTest32bitsGray(cmsContext ContextID, const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
{
cmsInt32Number r, g, b, j;
clock_t atime;
@@ -8516,10 +8507,10 @@ void SpeedTest32bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransform(DbgThread(), hlcmsProfileIn,
+ hlcmsxform = cmsCreateTransform(ContextID, hlcmsProfileIn,
TYPE_GRAY_FLT, hlcmsProfileOut, TYPE_GRAY_FLT, Intent, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hlcmsProfileIn);
- cmsCloseProfile(DbgThread(), hlcmsProfileOut);
+ cmsCloseProfile(ContextID, hlcmsProfileIn);
+ cmsCloseProfile(ContextID, hlcmsProfileOut);
NumPixels = 256 / Interval * 256 / Interval * 256 / Interval;
Mb = NumPixels * sizeof(cmsFloat32Number);
@@ -8540,18 +8531,18 @@ void SpeedTest32bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
atime = clock();
- cmsDoTransform(DbgThread(), hlcmsxform, In, In, NumPixels);
+ cmsDoTransform(ContextID, hlcmsxform, In, In, NumPixels);
diff = clock() - atime;
free(In);
PrintPerformance(Mb, sizeof(cmsFloat32Number), diff);
- cmsDeleteTransform(DbgThread(), hlcmsxform);
+ cmsDeleteTransform(ContextID, hlcmsxform);
}
static
-void SpeedTest16bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+void SpeedTest16bitsGray(cmsContext ContextID, const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
{
cmsInt32Number r, g, b, j;
clock_t atime;
@@ -8563,10 +8554,10 @@ void SpeedTest16bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransform(DbgThread(), hlcmsProfileIn,
+ hlcmsxform = cmsCreateTransform(ContextID, hlcmsProfileIn,
TYPE_GRAY_16, hlcmsProfileOut, TYPE_GRAY_16, Intent, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hlcmsProfileIn);
- cmsCloseProfile(DbgThread(), hlcmsProfileOut);
+ cmsCloseProfile(ContextID, hlcmsProfileIn);
+ cmsCloseProfile(ContextID, hlcmsProfileOut);
Mb = 256*256*256 * sizeof(cmsUInt16Number);
In = (cmsUInt16Number *) malloc(Mb);
@@ -8585,18 +8576,18 @@ void SpeedTest16bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPRO
atime = clock();
- cmsDoTransform(DbgThread(), hlcmsxform, In, In, 256*256*256);
+ cmsDoTransform(ContextID, hlcmsxform, In, In, 256*256*256);
diff = clock() - atime;
free(In);
PrintPerformance(Mb, sizeof(cmsUInt16Number), diff);
- cmsDeleteTransform(DbgThread(), hlcmsxform);
+ cmsDeleteTransform(ContextID, hlcmsxform);
}
static
-void SpeedTest8bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
+void SpeedTest8bitsGray(cmsContext ContextID, const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent)
{
cmsInt32Number r, g, b, j;
clock_t atime;
@@ -8609,10 +8600,10 @@ void SpeedTest8bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROF
if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL)
Die("Unable to open profiles");
- hlcmsxform = cmsCreateTransform(DbgThread(), hlcmsProfileIn,
+ hlcmsxform = cmsCreateTransform(ContextID, hlcmsProfileIn,
TYPE_GRAY_8, hlcmsProfileOut, TYPE_GRAY_8, Intent, cmsFLAGS_NOCACHE);
- cmsCloseProfile(DbgThread(), hlcmsProfileIn);
- cmsCloseProfile(DbgThread(), hlcmsProfileOut);
+ cmsCloseProfile(ContextID, hlcmsProfileIn);
+ cmsCloseProfile(ContextID, hlcmsProfileOut);
Mb = 256*256*256;
In = (cmsUInt8Number*) malloc(Mb);
@@ -8631,191 +8622,191 @@ void SpeedTest8bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROF
atime = clock();
- cmsDoTransform(DbgThread(), hlcmsxform, In, In, 256*256*256);
+ cmsDoTransform(ContextID, hlcmsxform, In, In, 256*256*256);
diff = clock() - atime;
free(In);
PrintPerformance(Mb, sizeof(cmsUInt8Number), diff);
- cmsDeleteTransform(DbgThread(), hlcmsxform);
+ cmsDeleteTransform(ContextID, hlcmsxform);
}
static
-cmsHPROFILE CreateCurves(void)
+cmsHPROFILE CreateCurves(cmsContext ContextID)
{
- cmsToneCurve* Gamma = cmsBuildGamma(DbgThread(), 1.1);
+ cmsToneCurve* Gamma = cmsBuildGamma(ContextID, 1.1);
cmsToneCurve* Transfer[3];
cmsHPROFILE h;
Transfer[0] = Transfer[1] = Transfer[2] = Gamma;
- h = cmsCreateLinearizationDeviceLink(DbgThread(), cmsSigRgbData, Transfer);
+ h = cmsCreateLinearizationDeviceLink(ContextID, cmsSigRgbData, Transfer);
- cmsFreeToneCurve(DbgThread(), Gamma);
+ cmsFreeToneCurve(ContextID, Gamma);
return h;
}
static
-void SpeedTest(void)
+void SpeedTest(cmsContext ContextID)
{
printf("\n\nP E R F O R M A N C E T E S T S\n");
printf( "=================================\n\n");
fflush(stdout);
- SpeedTest8bits("8 bits on CLUT profiles",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "test3.icc", "r"),
+ SpeedTest8bits(ContextID, "8 bits on CLUT profiles",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "test3.icc", "r"),
INTENT_PERCEPTUAL);
- SpeedTest16bits("16 bits on CLUT profiles",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "test3.icc", "r"), INTENT_PERCEPTUAL);
+ SpeedTest16bits(ContextID, "16 bits on CLUT profiles",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "test3.icc", "r"), INTENT_PERCEPTUAL);
- SpeedTest32bits("32 bits on CLUT profiles",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "test3.icc", "r"), INTENT_PERCEPTUAL);
+ SpeedTest32bits(ContextID, "32 bits on CLUT profiles",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "test3.icc", "r"), INTENT_PERCEPTUAL);
printf("\n");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- SpeedTest8bits("8 bits on Matrix-Shaper profiles",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
+ SpeedTest8bits(ContextID, "8 bits on Matrix-Shaper profiles",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
INTENT_PERCEPTUAL);
- SpeedTest16bits("16 bits on Matrix-Shaper profiles",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
+ SpeedTest16bits(ContextID, "16 bits on Matrix-Shaper profiles",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
INTENT_PERCEPTUAL);
- SpeedTest32bits("32 bits on Matrix-Shaper profiles",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
+ SpeedTest32bits(ContextID, "32 bits on Matrix-Shaper profiles",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
INTENT_PERCEPTUAL);
printf("\n");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- SpeedTest8bits("8 bits on SAME Matrix-Shaper profiles",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
+ SpeedTest8bits(ContextID, "8 bits on SAME Matrix-Shaper profiles",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
INTENT_PERCEPTUAL);
- SpeedTest16bits("16 bits on SAME Matrix-Shaper profiles",
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
+ SpeedTest16bits(ContextID, "16 bits on SAME Matrix-Shaper profiles",
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
INTENT_PERCEPTUAL);
- SpeedTest32bits("32 bits on SAME Matrix-Shaper profiles",
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
+ SpeedTest32bits(ContextID, "32 bits on SAME Matrix-Shaper profiles",
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
INTENT_PERCEPTUAL);
printf("\n");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- SpeedTest8bits("8 bits on Matrix-Shaper profiles (AbsCol)",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
+ SpeedTest8bits(ContextID, "8 bits on Matrix-Shaper profiles (AbsCol)",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
INTENT_ABSOLUTE_COLORIMETRIC);
- SpeedTest16bits("16 bits on Matrix-Shaper profiles (AbsCol)",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
+ SpeedTest16bits(ContextID, "16 bits on Matrix-Shaper profiles (AbsCol)",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
INTENT_ABSOLUTE_COLORIMETRIC);
- SpeedTest32bits("32 bits on Matrix-Shaper profiles (AbsCol)",
- cmsOpenProfileFromFile(DbgThread(), "test5.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "aRGBlcms2.icc", "r"),
+ SpeedTest32bits(ContextID, "32 bits on Matrix-Shaper profiles (AbsCol)",
+ cmsOpenProfileFromFile(ContextID, "test5.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "aRGBlcms2.icc", "r"),
INTENT_ABSOLUTE_COLORIMETRIC);
printf("\n");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- SpeedTest8bits("8 bits on curves",
- CreateCurves(),
- CreateCurves(),
+ SpeedTest8bits(ContextID, "8 bits on curves",
+ CreateCurves(ContextID),
+ CreateCurves(ContextID),
INTENT_PERCEPTUAL);
- SpeedTest16bits("16 bits on curves",
- CreateCurves(),
- CreateCurves(),
+ SpeedTest16bits(ContextID, "16 bits on curves",
+ CreateCurves(ContextID),
+ CreateCurves(ContextID),
INTENT_PERCEPTUAL);
- SpeedTest32bits("32 bits on curves",
- CreateCurves(),
- CreateCurves(),
+ SpeedTest32bits(ContextID, "32 bits on curves",
+ CreateCurves(ContextID),
+ CreateCurves(ContextID),
INTENT_PERCEPTUAL);
printf("\n");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- SpeedTest8bitsCMYK("8 bits on CMYK profiles",
- cmsOpenProfileFromFile(DbgThread(), "test1.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "test2.icc", "r"));
+ SpeedTest8bitsCMYK(ContextID, "8 bits on CMYK profiles",
+ cmsOpenProfileFromFile(ContextID, "test1.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "test2.icc", "r"));
- SpeedTest16bitsCMYK("16 bits on CMYK profiles",
- cmsOpenProfileFromFile(DbgThread(), "test1.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "test2.icc", "r"));
+ SpeedTest16bitsCMYK(ContextID, "16 bits on CMYK profiles",
+ cmsOpenProfileFromFile(ContextID, "test1.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "test2.icc", "r"));
- SpeedTest32bitsCMYK("32 bits on CMYK profiles",
- cmsOpenProfileFromFile(DbgThread(), "test1.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "test2.icc", "r"));
+ SpeedTest32bitsCMYK(ContextID, "32 bits on CMYK profiles",
+ cmsOpenProfileFromFile(ContextID, "test1.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "test2.icc", "r"));
printf("\n");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- SpeedTest8bitsGray("8 bits on gray-to gray",
- cmsOpenProfileFromFile(DbgThread(), "gray3lcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
+ SpeedTest8bitsGray(ContextID, "8 bits on gray-to gray",
+ cmsOpenProfileFromFile(ContextID, "gray3lcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
- SpeedTest16bitsGray("16 bits on gray-to gray",
- cmsOpenProfileFromFile(DbgThread(), "gray3lcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
+ SpeedTest16bitsGray(ContextID, "16 bits on gray-to gray",
+ cmsOpenProfileFromFile(ContextID, "gray3lcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
- SpeedTest32bitsGray("32 bits on gray-to gray",
- cmsOpenProfileFromFile(DbgThread(), "gray3lcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
+ SpeedTest32bitsGray(ContextID, "32 bits on gray-to gray",
+ cmsOpenProfileFromFile(ContextID, "gray3lcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
printf("\n");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- SpeedTest8bitsGray("8 bits on gray-to-lab gray",
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "glablcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
+ SpeedTest8bitsGray(ContextID, "8 bits on gray-to-lab gray",
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "glablcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
- SpeedTest16bitsGray("16 bits on gray-to-lab gray",
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "glablcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
+ SpeedTest16bitsGray(ContextID, "16 bits on gray-to-lab gray",
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "glablcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
- SpeedTest32bitsGray("32 bits on gray-to-lab gray",
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "glablcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
+ SpeedTest32bitsGray(ContextID, "32 bits on gray-to-lab gray",
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "glablcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC);
printf("\n");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- SpeedTest8bitsGray("8 bits on SAME gray-to-gray",
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"), INTENT_PERCEPTUAL);
+ SpeedTest8bitsGray(ContextID, "8 bits on SAME gray-to-gray",
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"), INTENT_PERCEPTUAL);
- SpeedTest16bitsGray("16 bits on SAME gray-to-gray",
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"), INTENT_PERCEPTUAL);
+ SpeedTest16bitsGray(ContextID, "16 bits on SAME gray-to-gray",
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"), INTENT_PERCEPTUAL);
- SpeedTest32bitsGray("32 bits on SAME gray-to-gray",
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"),
- cmsOpenProfileFromFile(DbgThread(), "graylcms2.icc", "r"), INTENT_PERCEPTUAL);
+ SpeedTest32bitsGray(ContextID, "32 bits on SAME gray-to-gray",
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"),
+ cmsOpenProfileFromFile(ContextID, "graylcms2.icc", "r"), INTENT_PERCEPTUAL);
printf("\n");
}
@@ -8856,6 +8847,7 @@ int main(int argc, char* argv[])
cmsInt32Number DoCheckTests = 1;
cmsInt32Number DoPluginTests = 1;
cmsInt32Number DoZooTests = 0;
+ cmsContext ctx;
#ifdef _MSC_VER
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
@@ -8881,250 +8873,251 @@ int main(int argc, char* argv[])
printf("done.\n");
#endif
-
printf("Installing debug memory plug-in ... ");
- cmsPlugin(DbgThread(), &DebugMemHandler);
+ cmsPlugin(NULL, &DebugMemHandler);
printf("done.\n");
+ ctx = NULL;//cmsCreateContext(NULL, NULL);
+
printf("Installing error logger ... ");
- cmsSetLogErrorHandler(DbgThread(), FatalErrorQuit);
+ cmsSetLogErrorHandler(NULL, FatalErrorQuit);
printf("done.\n");
PrintSupportedIntents();
- Check("Base types", CheckBaseTypes);
- Check("endianness", CheckEndianness);
- Check("quick floor", CheckQuickFloor);
- Check("quick floor word", CheckQuickFloorWord);
- Check("Fixed point 15.16 representation", CheckFixedPoint15_16);
- Check("Fixed point 8.8 representation", CheckFixedPoint8_8);
- Check("D50 roundtrip", CheckD50Roundtrip);
+ Check(ctx, "Base types", CheckBaseTypes);
+ Check(ctx, "endianness", CheckEndianness);
+ Check(ctx, "quick floor", CheckQuickFloor);
+ Check(ctx, "quick floor word", CheckQuickFloorWord);
+ Check(ctx, "Fixed point 15.16 representation", CheckFixedPoint15_16);
+ Check(ctx, "Fixed point 8.8 representation", CheckFixedPoint8_8);
+ Check(ctx, "D50 roundtrip", CheckD50Roundtrip);
// Create utility profiles
if (DoCheckTests || DoSpeedTests)
- Check("Creation of test profiles", CreateTestProfiles);
+ Check(ctx, "Creation of test profiles", CreateTestProfiles);
if (DoCheckTests) {
// Forward 1D interpolation
- Check("1D interpolation in 2pt tables", Check1DLERP2);
- Check("1D interpolation in 3pt tables", Check1DLERP3);
- Check("1D interpolation in 4pt tables", Check1DLERP4);
- Check("1D interpolation in 6pt tables", Check1DLERP6);
- Check("1D interpolation in 18pt tables", Check1DLERP18);
- Check("1D interpolation in descending 2pt tables", Check1DLERP2Down);
- Check("1D interpolation in descending 3pt tables", Check1DLERP3Down);
- Check("1D interpolation in descending 6pt tables", Check1DLERP6Down);
- Check("1D interpolation in descending 18pt tables", Check1DLERP18Down);
+ Check(ctx, "1D interpolation in 2pt tables", Check1DLERP2);
+ Check(ctx, "1D interpolation in 3pt tables", Check1DLERP3);
+ Check(ctx, "1D interpolation in 4pt tables", Check1DLERP4);
+ Check(ctx, "1D interpolation in 6pt tables", Check1DLERP6);
+ Check(ctx, "1D interpolation in 18pt tables", Check1DLERP18);
+ Check(ctx, "1D interpolation in descending 2pt tables", Check1DLERP2Down);
+ Check(ctx, "1D interpolation in descending 3pt tables", Check1DLERP3Down);
+ Check(ctx, "1D interpolation in descending 6pt tables", Check1DLERP6Down);
+ Check(ctx, "1D interpolation in descending 18pt tables", Check1DLERP18Down);
if (Exhaustive) {
- Check("1D interpolation in n tables", ExhaustiveCheck1DLERP);
- Check("1D interpolation in descending tables", ExhaustiveCheck1DLERPDown);
+ Check(ctx, "1D interpolation in n tables", ExhaustiveCheck1DLERP);
+ Check(ctx, "1D interpolation in descending tables", ExhaustiveCheck1DLERPDown);
}
// Forward 3D interpolation
- Check("3D interpolation Tetrahedral (float) ", Check3DinterpolationFloatTetrahedral);
- Check("3D interpolation Trilinear (float) ", Check3DinterpolationFloatTrilinear);
- Check("3D interpolation Tetrahedral (16) ", Check3DinterpolationTetrahedral16);
- Check("3D interpolation Trilinear (16) ", Check3DinterpolationTrilinear16);
+ Check(ctx, "3D interpolation Tetrahedral (float) ", Check3DinterpolationFloatTetrahedral);
+ Check(ctx, "3D interpolation Trilinear (float) ", Check3DinterpolationFloatTrilinear);
+ Check(ctx, "3D interpolation Tetrahedral (16) ", Check3DinterpolationTetrahedral16);
+ Check(ctx, "3D interpolation Trilinear (16) ", Check3DinterpolationTrilinear16);
if (Exhaustive) {
- Check("Exhaustive 3D interpolation Tetrahedral (float) ", ExaustiveCheck3DinterpolationFloatTetrahedral);
- Check("Exhaustive 3D interpolation Trilinear (float) ", ExaustiveCheck3DinterpolationFloatTrilinear);
- Check("Exhaustive 3D interpolation Tetrahedral (16) ", ExhaustiveCheck3DinterpolationTetrahedral16);
- Check("Exhaustive 3D interpolation Trilinear (16) ", ExhaustiveCheck3DinterpolationTrilinear16);
+ Check(ctx, "Exhaustive 3D interpolation Tetrahedral (float) ", ExaustiveCheck3DinterpolationFloatTetrahedral);
+ Check(ctx, "Exhaustive 3D interpolation Trilinear (float) ", ExaustiveCheck3DinterpolationFloatTrilinear);
+ Check(ctx, "Exhaustive 3D interpolation Tetrahedral (16) ", ExhaustiveCheck3DinterpolationTetrahedral16);
+ Check(ctx, "Exhaustive 3D interpolation Trilinear (16) ", ExhaustiveCheck3DinterpolationTrilinear16);
}
- Check("Reverse interpolation 3 -> 3", CheckReverseInterpolation3x3);
- Check("Reverse interpolation 4 -> 3", CheckReverseInterpolation4x3);
+ Check(ctx, "Reverse interpolation 3 -> 3", CheckReverseInterpolation3x3);
+ Check(ctx, "Reverse interpolation 4 -> 3", CheckReverseInterpolation4x3);
// High dimensionality interpolation
- Check("3D interpolation", Check3Dinterp);
- Check("3D interpolation with granularity", Check3DinterpGranular);
- Check("4D interpolation", Check4Dinterp);
- Check("4D interpolation with granularity", Check4DinterpGranular);
- Check("5D interpolation with granularity", Check5DinterpGranular);
- Check("6D interpolation with granularity", Check6DinterpGranular);
- Check("7D interpolation with granularity", Check7DinterpGranular);
- Check("8D interpolation with granularity", Check8DinterpGranular);
+ Check(ctx, "3D interpolation", Check3Dinterp);
+ Check(ctx, "3D interpolation with granularity", Check3DinterpGranular);
+ Check(ctx, "4D interpolation", Check4Dinterp);
+ Check(ctx, "4D interpolation with granularity", Check4DinterpGranular);
+ Check(ctx, "5D interpolation with granularity", Check5DinterpGranular);
+ Check(ctx, "6D interpolation with granularity", Check6DinterpGranular);
+ Check(ctx, "7D interpolation with granularity", Check7DinterpGranular);
+ Check(ctx, "8D interpolation with granularity", Check8DinterpGranular);
// 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 V2 encoding", CheckLabV2encoding);
- Check("Lab V4 encoding", CheckLabV4encoding);
+ Check(ctx, "Lab to LCh and back (float only) ", CheckLab2LCh);
+ Check(ctx, "Lab to XYZ and back (float only) ", CheckLab2XYZ);
+ Check(ctx, "Lab to xyY and back (float only) ", CheckLab2xyY);
+ Check(ctx, "Lab V2 encoding", CheckLabV2encoding);
+ Check(ctx, "Lab V4 encoding", CheckLabV4encoding);
// BlackBody
- Check("Blackbody radiator", CheckTemp2CHRM);
+ Check(ctx, "Blackbody radiator", CheckTemp2CHRM);
// Tone curves
- Check("Linear gamma curves (16 bits)", CheckGammaCreation16);
- Check("Linear gamma curves (float)", CheckGammaCreationFlt);
+ Check(ctx, "Linear gamma curves (16 bits)", CheckGammaCreation16);
+ Check(ctx, "Linear gamma curves (float)", CheckGammaCreationFlt);
- Check("Curve 1.8 (float)", CheckGamma18);
- Check("Curve 2.2 (float)", CheckGamma22);
- Check("Curve 3.0 (float)", CheckGamma30);
+ Check(ctx, "Curve 1.8 (float)", CheckGamma18);
+ Check(ctx, "Curve 2.2 (float)", CheckGamma22);
+ Check(ctx, "Curve 3.0 (float)", CheckGamma30);
- Check("Curve 1.8 (table)", CheckGamma18Table);
- Check("Curve 2.2 (table)", CheckGamma22Table);
- Check("Curve 3.0 (table)", CheckGamma30Table);
+ Check(ctx, "Curve 1.8 (table)", CheckGamma18Table);
+ Check(ctx, "Curve 2.2 (table)", CheckGamma22Table);
+ Check(ctx, "Curve 3.0 (table)", CheckGamma30Table);
- Check("Curve 1.8 (word table)", CheckGamma18TableWord);
- Check("Curve 2.2 (word table)", CheckGamma22TableWord);
- Check("Curve 3.0 (word table)", CheckGamma30TableWord);
+ Check(ctx, "Curve 1.8 (word table)", CheckGamma18TableWord);
+ Check(ctx, "Curve 2.2 (word table)", CheckGamma22TableWord);
+ Check(ctx, "Curve 3.0 (word table)", CheckGamma30TableWord);
- Check("Parametric curves", CheckParametricToneCurves);
+ Check(ctx, "Parametric curves", CheckParametricToneCurves);
- Check("Join curves", CheckJointCurves);
- Check("Join curves descending", CheckJointCurvesDescending);
- Check("Join curves degenerated", CheckReverseDegenerated);
- Check("Join curves sRGB (Float)", CheckJointFloatCurves_sRGB);
- Check("Join curves sRGB (16 bits)", CheckJoint16Curves_sRGB);
- Check("Join curves sigmoidal", CheckJointCurvesSShaped);
+ Check(ctx, "Join curves", CheckJointCurves);
+ Check(ctx, "Join curves descending", CheckJointCurvesDescending);
+ Check(ctx, "Join curves degenerated", CheckReverseDegenerated);
+ Check(ctx, "Join curves sRGB (Float)", CheckJointFloatCurves_sRGB);
+ Check(ctx, "Join curves sRGB (16 bits)", CheckJoint16Curves_sRGB);
+ Check(ctx, "Join curves sigmoidal", CheckJointCurvesSShaped);
// LUT basics
- Check("LUT creation & dup", CheckLUTcreation);
- Check("1 Stage LUT ", Check1StageLUT);
- Check("2 Stage LUT ", Check2StageLUT);
- Check("2 Stage LUT (16 bits)", Check2Stage16LUT);
- Check("3 Stage LUT ", Check3StageLUT);
- Check("3 Stage LUT (16 bits)", Check3Stage16LUT);
- Check("4 Stage LUT ", Check4StageLUT);
- Check("4 Stage LUT (16 bits)", Check4Stage16LUT);
- Check("5 Stage LUT ", Check5StageLUT);
- Check("5 Stage LUT (16 bits) ", Check5Stage16LUT);
- Check("6 Stage LUT ", Check6StageLUT);
- Check("6 Stage LUT (16 bits) ", Check6Stage16LUT);
+ Check(ctx, "LUT creation & dup", CheckLUTcreation);
+ Check(ctx, "1 Stage LUT ", Check1StageLUT);
+ Check(ctx, "2 Stage LUT ", Check2StageLUT);
+ Check(ctx, "2 Stage LUT (16 bits)", Check2Stage16LUT);
+ Check(ctx, "3 Stage LUT ", Check3StageLUT);
+ Check(ctx, "3 Stage LUT (16 bits)", Check3Stage16LUT);
+ Check(ctx, "4 Stage LUT ", Check4StageLUT);
+ Check(ctx, "4 Stage LUT (16 bits)", Check4Stage16LUT);
+ Check(ctx, "5 Stage LUT ", Check5StageLUT);
+ Check(ctx, "5 Stage LUT (16 bits) ", Check5Stage16LUT);
+ Check(ctx, "6 Stage LUT ", Check6StageLUT);
+ Check(ctx, "6 Stage LUT (16 bits) ", Check6Stage16LUT);
// LUT operation
- Check("Lab to Lab LUT (float only) ", CheckLab2LabLUT);
- Check("XYZ to XYZ LUT (float only) ", CheckXYZ2XYZLUT);
- Check("Lab to Lab MAT LUT (float only) ", CheckLab2LabMatLUT);
- Check("Named Color LUT", CheckNamedColorLUT);
- Check("Usual formatters", CheckFormatters16);
- Check("Floating point formatters", CheckFormattersFloat);
+ Check(ctx, "Lab to Lab LUT (float only) ", CheckLab2LabLUT);
+ Check(ctx, "XYZ to XYZ LUT (float only) ", CheckXYZ2XYZLUT);
+ Check(ctx, "Lab to Lab MAT LUT (float only) ", CheckLab2LabMatLUT);
+ Check(ctx, "Named Color LUT", CheckNamedColorLUT);
+ Check(ctx, "Usual formatters", CheckFormatters16);
+ Check(ctx, "Floating point formatters", CheckFormattersFloat);
#ifndef CMS_NO_HALF_SUPPORT
- Check("HALF formatters", CheckFormattersHalf);
+ Check(ctx, "HALF formatters", CheckFormattersHalf);
#endif
// ChangeBuffersFormat
- Check("ChangeBuffersFormat", CheckChangeBufferFormat);
+ Check(ctx, "ChangeBuffersFormat", CheckChangeBufferFormat);
// MLU
- Check("Multilocalized Unicode", CheckMLU);
+ Check(ctx, "Multilocalized Unicode", CheckMLU);
// Named color
- Check("Named color lists", CheckNamedColorList);
+ Check(ctx, "Named color lists", CheckNamedColorList);
// Profile I/O (this one is huge!)
- Check("Profile creation", CheckProfileCreation);
- Check("Header version", CheckVersionHeaderWriting);
- Check("Multilocalized profile", CheckMultilocalizedProfile);
+ Check(ctx, "Profile creation", CheckProfileCreation);
+ Check(ctx, "Header version", CheckVersionHeaderWriting);
+ Check(ctx, "Multilocalized profile", CheckMultilocalizedProfile);
// Error reporting
- Check("Error reporting on bad profiles", CheckErrReportingOnBadProfiles);
- Check("Error reporting on bad transforms", CheckErrReportingOnBadTransforms);
+ Check(ctx, "Error reporting on bad profiles", CheckErrReportingOnBadProfiles);
+ Check(ctx, "Error reporting on bad transforms", CheckErrReportingOnBadTransforms);
// Transforms
- Check("Curves only transforms", CheckCurvesOnlyTransforms);
- Check("Float Lab->Lab transforms", CheckFloatLabTransforms);
- Check("Encoded Lab->Lab transforms", CheckEncodedLabTransforms);
- Check("Stored identities", CheckStoredIdentities);
+ Check(ctx, "Curves only transforms", CheckCurvesOnlyTransforms);
+ Check(ctx, "Float Lab->Lab transforms", CheckFloatLabTransforms);
+ Check(ctx, "Encoded Lab->Lab transforms", CheckEncodedLabTransforms);
+ Check(ctx, "Stored identities", CheckStoredIdentities);
- Check("Matrix-shaper transform (float)", CheckMatrixShaperXFORMFloat);
- Check("Matrix-shaper transform (16 bits)", CheckMatrixShaperXFORM16);
- Check("Matrix-shaper transform (8 bits)", CheckMatrixShaperXFORM8);
+ Check(ctx, "Matrix-shaper transform (float)", CheckMatrixShaperXFORMFloat);
+ Check(ctx, "Matrix-shaper transform (16 bits)", CheckMatrixShaperXFORM16);
+ Check(ctx, "Matrix-shaper transform (8 bits)", CheckMatrixShaperXFORM8);
- Check("Primaries of sRGB", CheckRGBPrimaries);
+ Check(ctx, "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(ctx, "Known values across matrix-shaper", Chack_sRGB_Float);
+ Check(ctx, "Gray input profile", CheckInputGray);
+ Check(ctx, "Gray Lab input profile", CheckLabInputGray);
+ Check(ctx, "Gray output profile", CheckOutputGray);
+ Check(ctx, "Gray Lab output profile", CheckLabOutputGray);
- Check("Matrix-shaper proofing transform (float)", CheckProofingXFORMFloat);
- Check("Matrix-shaper proofing transform (16 bits)", CheckProofingXFORM16);
+ Check(ctx, "Matrix-shaper proofing transform (float)", CheckProofingXFORMFloat);
+ Check(ctx, "Matrix-shaper proofing transform (16 bits)", CheckProofingXFORM16);
- Check("Gamut check", CheckGamutCheck);
+ Check(ctx, "Gamut check", CheckGamutCheck);
- Check("CMYK roundtrip on perceptual transform", CheckCMYKRoundtrip);
+ Check(ctx, "CMYK roundtrip on perceptual transform", CheckCMYKRoundtrip);
- Check("CMYK perceptual transform", CheckCMYKPerceptual);
+ Check(ctx, "CMYK perceptual transform", CheckCMYKPerceptual);
// Check("CMYK rel.col. transform", CheckCMYKRelCol);
- Check("Black ink only preservation", CheckKOnlyBlackPreserving);
- Check("Black plane preservation", CheckKPlaneBlackPreserving);
-
-
- Check("Deciding curve types", CheckV4gamma);
-
- Check("Black point detection", CheckBlackPoint);
- Check("TAC detection", CheckTAC);
-
- Check("CGATS parser", CheckCGATS);
- Check("CGATS parser on junk", CheckCGATS2);
- Check("CGATS parser on overflow", CheckCGATS_Overflow);
- Check("PostScript generator", CheckPostScript);
- Check("Segment maxima GBD", CheckGBD);
- Check("MD5 digest", CheckMD5);
- Check("Linking", CheckLinking);
- Check("floating point tags on XYZ", CheckFloatXYZ);
- Check("RGB->Lab->RGB with alpha on FLT", ChecksRGB2LabFLT);
- Check("Parametric curve on Rec709", CheckParametricRec709);
- Check("Floating Point sampled curve with non-zero start", CheckFloatSamples);
- Check("Floating Point segmented curve with short sampled segment", CheckFloatSegments);
- Check("Read RAW portions", CheckReadRAW);
- Check("Check MetaTag", CheckMeta);
- Check("Null transform on floats", CheckFloatNULLxform);
- Check("Set free a tag", CheckRemoveTag);
- Check("Matrix simplification", CheckMatrixSimplify);
- Check("Planar 8 optimization", CheckPlanar8opt);
- Check("Swap endian feature", CheckSE);
- Check("Transform line stride RGB", CheckTransformLineStride);
- Check("Forged MPE profile", CheckForgedMPE);
- Check("Proofing intersection", CheckProofingIntersection);
+ Check(ctx, "Black ink only preservation", CheckKOnlyBlackPreserving);
+ Check(ctx, "Black plane preservation", CheckKPlaneBlackPreserving);
+
+
+ Check(ctx, "Deciding curve types", CheckV4gamma);
+
+ Check(ctx, "Black point detection", CheckBlackPoint);
+ Check(ctx, "TAC detection", CheckTAC);
+
+ Check(ctx, "CGATS parser", CheckCGATS);
+ Check(ctx, "CGATS parser on junk", CheckCGATS2);
+ Check(ctx, "CGATS parser on overflow", CheckCGATS_Overflow);
+ Check(ctx, "PostScript generator", CheckPostScript);
+ Check(ctx, "Segment maxima GBD", CheckGBD);
+ Check(ctx, "MD5 digest", CheckMD5);
+ Check(ctx, "Linking", CheckLinking);
+ Check(ctx, "floating point tags on XYZ", CheckFloatXYZ);
+ Check(ctx, "RGB->Lab->RGB with alpha on FLT", ChecksRGB2LabFLT);
+ Check(ctx, "Parametric curve on Rec709", CheckParametricRec709);
+ Check(ctx, "Floating Point sampled curve with non-zero start", CheckFloatSamples);
+ Check(ctx, "Floating Point segmented curve with short sampled segment", CheckFloatSegments);
+ Check(ctx, "Read RAW portions", CheckReadRAW);
+ Check(ctx, "Check MetaTag", CheckMeta);
+ Check(ctx, "Null transform on floats", CheckFloatNULLxform);
+ Check(ctx, "Set free a tag", CheckRemoveTag);
+ Check(ctx, "Matrix simplification", CheckMatrixSimplify);
+ Check(ctx, "Planar 8 optimization", CheckPlanar8opt);
+ Check(ctx, "Swap endian feature", CheckSE);
+ Check(ctx, "Transform line stride RGB", CheckTransformLineStride);
+ Check(ctx, "Forged MPE profile", CheckForgedMPE);
+ Check(ctx, "Proofing intersection", CheckProofingIntersection);
}
if (DoPluginTests)
{
- Check("Context memory handling", CheckAllocContext);
- Check("Simple context functionality", CheckSimpleContext);
- Check("Alarm codes context", CheckAlarmColorsContext);
- Check("Adaptation state context", CheckAdaptationStateContext);
- Check("1D interpolation plugin", CheckInterp1DPlugin);
- Check("3D interpolation plugin", CheckInterp3DPlugin);
- Check("Parametric curve plugin", CheckParametricCurvePlugin);
- Check("Formatters plugin", CheckFormattersPlugin);
- Check("Tag type plugin", CheckTagTypePlugin);
- Check("MPE type plugin", CheckMPEPlugin);
- Check("Optimization plugin", CheckOptimizationPlugin);
- Check("Rendering intent plugin", CheckIntentPlugin);
- Check("Full transform plugin", CheckTransformPlugin);
- Check("Mutex plugin", CheckMutexPlugin);
+ Check(ctx, "Context memory handling", CheckAllocContext);
+ Check(ctx, "Simple context functionality", CheckSimpleContext);
+ Check(ctx, "Alarm codes context", CheckAlarmColorsContext);
+ Check(ctx, "Adaptation state context", CheckAdaptationStateContext);
+ Check(ctx, "1D interpolation plugin", CheckInterp1DPlugin);
+ Check(ctx, "3D interpolation plugin", CheckInterp3DPlugin);
+ Check(ctx, "Parametric curve plugin", CheckParametricCurvePlugin);
+ Check(ctx, "Formatters plugin", CheckFormattersPlugin);
+ Check(ctx, "Tag type plugin", CheckTagTypePlugin);
+ Check(ctx, "MPE type plugin", CheckMPEPlugin);
+ Check(ctx, "Optimization plugin", CheckOptimizationPlugin);
+ Check(ctx, "Rendering intent plugin", CheckIntentPlugin);
+ Check(ctx, "Full transform plugin", CheckTransformPlugin);
+ Check(ctx, "Mutex plugin", CheckMutexPlugin);
}
if (DoSpeedTests)
- SpeedTest();
+ SpeedTest(ctx);
#ifdef CMS_IS_WINDOWS_
if (DoZooTests)
- CheckProfileZOO(NULL);
+ CheckProfileZOO(ctx);
#endif
DebugMemPrintTotals();
- cmsUnregisterPlugins(DbgThread());
+ cmsUnregisterPlugins(NULL);
// Cleanup
if (DoCheckTests || DoSpeedTests)