Files
RedBear-OS/local/recipes/libs/lcms2/source/testbed/zoo_icc.c
T
vasilito 1a9d77761e fix(qtdeclarative): properly generate qtquick-config.h features
The qtquick-config.h file was being generated empty by the cmake
build, causing 'division by zero in #if' errors in downstream
consumers (SDDM, KWin) because QT_CONFIG(quick_shadereffect) and
QT_CONFIG(quick_draganddrop) were undefined.

Two fixes:
1. Explicitly enable QT_FEATURE_quick_shadereffect and
   QT_FEATURE_quick_draganddrop in the cmake configuration.
2. Add a safety net that regenerates qtquick-config.h with the
   required feature definitions if cmake produces an empty file.
2026-06-21 15:12:40 +03:00

310 lines
7.4 KiB
C
Executable File

//---------------------------------------------------------------------------------
//
// Little Color Management System
// Copyright (c) 1998-2026 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"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the Software
// is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//---------------------------------------------------------------------------------
//
#include "testcms2.h"
// ZOO checks ------------------------------------------------------------------------------------------------------------
#ifdef CMS_IS_WINDOWS_
static char ZOOfolder[cmsMAX_PATH] = "c:\\colormaps\\";
static char ZOOwrite[cmsMAX_PATH] = "c:\\colormaps\\write\\";
static char ZOORawWrite[cmsMAX_PATH] = "c:\\colormaps\\rawwrite\\";
// Read all tags on a profile given by its handle
static
void ReadAllTags(cmsHPROFILE h)
{
cmsInt32Number i, n;
cmsTagSignature sig;
n = cmsGetTagCount(h);
for (i=0; i < n; i++) {
sig = cmsGetTagSignature(h, i);
if (cmsReadTag(h, sig) == NULL) return;
}
}
// Read all tags on a profile given by its handle
static
void ReadAllRAWTags(cmsHPROFILE h)
{
cmsInt32Number i, n;
cmsTagSignature sig;
n = cmsGetTagCount(h);
for (i=0; i < n; i++) {
sig = cmsGetTagSignature(h, i);
cmsReadRawTag(h, sig, NULL, 0);
}
}
static
void PrintInfo(cmsHPROFILE h, cmsInfoType Info)
{
wchar_t* text;
cmsInt32Number len;
cmsContext id = 0;
len = cmsGetProfileInfo(h, Info, "en", "US", NULL, 0);
if (len == 0) return;
text = (wchar_t*) _cmsMalloc(id, len);
cmsGetProfileInfo(h, Info, "en", "US", text, len);
wprintf(L"%s\n", text);
_cmsFree(id, text);
}
static
void PrintAllInfos(cmsHPROFILE h)
{
PrintInfo(h, cmsInfoDescription);
PrintInfo(h, cmsInfoManufacturer);
PrintInfo(h, cmsInfoModel);
PrintInfo(h, cmsInfoCopyright);
printf("\n\n");
}
static
void ReadAllLUTS(cmsHPROFILE h)
{
cmsPipeline* a;
cmsCIEXYZ Black;
a = _cmsReadInputLUT(h, INTENT_PERCEPTUAL);
if (a) cmsPipelineFree(a);
a = _cmsReadInputLUT(h, INTENT_RELATIVE_COLORIMETRIC);
if (a) cmsPipelineFree(a);
a = _cmsReadInputLUT(h, INTENT_SATURATION);
if (a) cmsPipelineFree(a);
a = _cmsReadInputLUT(h, INTENT_ABSOLUTE_COLORIMETRIC);
if (a) cmsPipelineFree(a);
a = _cmsReadOutputLUT(h, INTENT_PERCEPTUAL);
if (a) cmsPipelineFree(a);
a = _cmsReadOutputLUT(h, INTENT_RELATIVE_COLORIMETRIC);
if (a) cmsPipelineFree(a);
a = _cmsReadOutputLUT(h, INTENT_SATURATION);
if (a) cmsPipelineFree(a);
a = _cmsReadOutputLUT(h, INTENT_ABSOLUTE_COLORIMETRIC);
if (a) cmsPipelineFree(a);
a = _cmsReadDevicelinkLUT(h, INTENT_PERCEPTUAL);
if (a) cmsPipelineFree(a);
a = _cmsReadDevicelinkLUT(h, INTENT_RELATIVE_COLORIMETRIC);
if (a) cmsPipelineFree(a);
a = _cmsReadDevicelinkLUT(h, INTENT_SATURATION);
if (a) cmsPipelineFree(a);
a = _cmsReadDevicelinkLUT(h, INTENT_ABSOLUTE_COLORIMETRIC);
if (a) cmsPipelineFree(a);
cmsDetectDestinationBlackPoint(&Black, h, INTENT_PERCEPTUAL, 0);
cmsDetectDestinationBlackPoint(&Black, h, INTENT_RELATIVE_COLORIMETRIC, 0);
cmsDetectDestinationBlackPoint(&Black, h, INTENT_SATURATION, 0);
cmsDetectDestinationBlackPoint(&Black, h, INTENT_ABSOLUTE_COLORIMETRIC, 0);
cmsDetectTAC(h);
}
// Check one specimen in the ZOO
static
cmsInt32Number CheckSingleSpecimen(const char* Profile)
{
char BuffSrc[256];
char BuffDst[256];
cmsHPROFILE h;
sprintf(BuffSrc, "%s%s", ZOOfolder, Profile);
sprintf(BuffDst, "%s%s", ZOOwrite, Profile);
h = cmsOpenProfileFromFile(BuffSrc, "r");
if (h == NULL) return 0;
printf("%s\n", Profile);
PrintAllInfos(h);
ReadAllTags(h);
ReadAllLUTS(h);
// ReadAllRAWTags(h);
cmsSaveProfileToFile(h, BuffDst);
cmsCloseProfile(h);
h = cmsOpenProfileFromFile(BuffDst, "r");
if (h == NULL) return 0;
ReadAllTags(h);
cmsCloseProfile(h);
return 1;
}
static
cmsInt32Number CheckRAWSpecimen(const char* Profile)
{
char BuffSrc[256];
char BuffDst[256];
cmsHPROFILE h;
sprintf(BuffSrc, "%s%s", ZOOfolder, Profile);
sprintf(BuffDst, "%s%s", ZOORawWrite, Profile);
h = cmsOpenProfileFromFile(BuffSrc, "r");
if (h == NULL) return 0;
ReadAllTags(h);
ReadAllRAWTags(h);
cmsSaveProfileToFile(h, BuffDst);
cmsCloseProfile(h);
h = cmsOpenProfileFromFile(BuffDst, "r");
if (h == NULL) return 0;
ReadAllTags(h);
cmsCloseProfile(h);
return 1;
}
static int input = 0,
disp = 0,
output = 0,
link = 0,
abst = 0,
color = 0,
named = 0;
static int rgb = 0,
cmyk = 0,
gray = 0,
other = 0;
static
int count_stats(const char* Profile)
{
char BuffSrc[256];
cmsHPROFILE h;
cmsCIEXYZ Black;
sprintf(BuffSrc, "%s%s", ZOOfolder, Profile);
h = cmsOpenProfileFromFile(BuffSrc, "r");
if (h == NULL) return 0;
switch (cmsGetDeviceClass(h)) {
case cmsSigInputClass : input++; break;
case cmsSigDisplayClass : disp++; break;
case cmsSigOutputClass : output++; break;
case cmsSigLinkClass : link++; break;
case cmsSigAbstractClass : abst++; break;
case cmsSigColorSpaceClass : color++; break;
case cmsSigNamedColorClass : named ++; break;
}
switch (cmsGetColorSpace(h)) {
case cmsSigRgbData: rgb++; break;
case cmsSigCmykData: cmyk++; break;
case cmsSigGrayData: gray++; break;
default: other++;
}
cmsDetectDestinationBlackPoint(&Black, h, INTENT_PERCEPTUAL, 0);
cmsDetectDestinationBlackPoint(&Black, h, INTENT_RELATIVE_COLORIMETRIC, 0);
cmsDetectDestinationBlackPoint(&Black, h, INTENT_SATURATION, 0);
cmsCloseProfile(h);
return 1;
}
void CheckProfileZOO(void)
{
struct _finddata_t c_file;
intptr_t hFile;
cmsSetLogErrorHandler(NULL);
if ( (hFile = _findfirst("c:\\colormaps\\*.*", &c_file)) == -1L )
printf("No files in current directory");
else
{
do
{
if (strcmp(c_file.name, ".") != 0 &&
strcmp(c_file.name, "..") != 0) {
CheckSingleSpecimen( c_file.name);
CheckRAWSpecimen( c_file.name);
count_stats(c_file.name);
TestMemoryLeaks(FALSE);
}
} while ( _findnext(hFile, &c_file) == 0 );
_findclose(hFile);
}
ResetFatalError();
}
#endif