本文整理汇总了C++中cmsD50_XYZ函数的典型用法代码示例。如果您正苦于以下问题:C++ cmsD50_XYZ函数的具体用法?C++ cmsD50_XYZ怎么用?C++ cmsD50_XYZ使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cmsD50_XYZ函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: cmsDetectBlackPoint
int cmsDetectBlackPoint(LPcmsCIEXYZ BlackPoint, cmsHPROFILE hProfile, int Intent, DWORD dwFlags)
{
// v4 + perceptual & saturation intents does have its own black point
if ((cmsGetProfileICCversion(hProfile) >= 0x4000000) &&
(Intent == INTENT_PERCEPTUAL || Intent == INTENT_SATURATION)) {
return GetV4PerceptualBlack(BlackPoint, hProfile, dwFlags);
}
#ifdef HONOR_BLACK_POINT_TAG
// v2, v4 rel/abs colorimetric
if (cmsIsTag(hProfile, icSigMediaBlackPointTag) &&
Intent == INTENT_RELATIVE_COLORIMETRIC) {
cmsCIEXYZ BlackXYZ, UntrustedBlackPoint, TrustedBlackPoint, MediaWhite;
cmsCIELab Lab;
// If black point is specified, then use it,
cmsTakeMediaBlackPoint(&BlackXYZ, hProfile);
cmsTakeMediaWhitePoint(&MediaWhite, hProfile);
// Black point is absolute XYZ, so adapt to D50 to get PCS value
cmsAdaptToIlluminant(&UntrustedBlackPoint, &MediaWhite, cmsD50_XYZ(), &BlackXYZ);
// Force a=b=0 to get rid of any chroma
cmsXYZ2Lab(NULL, &Lab, &UntrustedBlackPoint);
Lab.a = Lab.b = 0;
if (Lab.L > 50) Lab.L = 50; // Clip to L* <= 50
cmsLab2XYZ(NULL, &TrustedBlackPoint, &Lab);
// Return BP as D50 relative or absolute XYZ (depends on flags)
if (!(dwFlags & LCMS_BPFLAGS_D50_ADAPTED))
cmsAdaptToIlluminant(BlackPoint, cmsD50_XYZ(), &MediaWhite, &TrustedBlackPoint);
else
*BlackPoint = TrustedBlackPoint;
}
#endif
// If output profile, discount ink-limiting
if (Intent == INTENT_RELATIVE_COLORIMETRIC &&
(cmsGetDeviceClass(hProfile) == icSigOutputClass) &&
(cmsGetColorSpace(hProfile) == icSigCmykData))
return BlackPointUsingPerceptualBlack(BlackPoint, hProfile, dwFlags);
// Nope, compute BP using current intent.
return BlackPointAsDarkerColorant(hProfile, Intent, BlackPoint, dwFlags);
}
开发者ID:makinacorpus,项目名称:libecw,代码行数:60,代码来源:cmswtpnt.c
示例2: _cmsReadMediaWhitePoint
// Get a media white point fixing some issues found in certain old profiles
cmsBool _cmsReadMediaWhitePoint(cmsCIEXYZ* Dest, cmsHPROFILE hProfile)
{
cmsCIEXYZ* Tag;
_cmsAssert(Dest != NULL);
Tag = (cmsCIEXYZ*) cmsReadTag(hProfile, cmsSigMediaWhitePointTag);
// If no wp, take D50
if (Tag == NULL) {
*Dest = *cmsD50_XYZ();
return TRUE;
}
// V2 display profiles should give D50
if (cmsGetEncodedICCversion(hProfile) < 0x4000000) {
if (cmsGetDeviceClass(hProfile) == cmsSigDisplayClass) {
*Dest = *cmsD50_XYZ();
return TRUE;
}
}
// All seems ok
*Dest = *Tag;
return TRUE;
}
开发者ID:AndresPozo,项目名称:PCL,代码行数:28,代码来源:cmsio1.c
示例3: CHAD2Temp
// Approximate a blackbody illuminant based on CHAD information
static
cmsFloat64Number CHAD2Temp(const cmsMAT3* Chad)
{
// Convert D50 across inverse CHAD to get the absolute white point
cmsVEC3 d, s;
cmsCIEXYZ Dest;
cmsCIExyY DestChromaticity;
cmsFloat64Number TempK;
cmsMAT3 m1, m2;
m1 = *Chad;
if (!_cmsMAT3inverse(&m1, &m2)) return FALSE;
s.n[VX] = cmsD50_XYZ() -> X;
s.n[VY] = cmsD50_XYZ() -> Y;
s.n[VZ] = cmsD50_XYZ() -> Z;
_cmsMAT3eval(&d, &m2, &s);
Dest.X = d.n[VX];
Dest.Y = d.n[VY];
Dest.Z = d.n[VZ];
cmsXYZ2xyY(&DestChromaticity, &Dest);
if (!cmsTempFromWhitePoint(&TempK, &DestChromaticity))
return -1.0;
return TempK;
}
开发者ID:greghaskins,项目名称:openjdk-jdk7u-jdk,代码行数:31,代码来源:cmscnvrt.c
示例4: ComputeBlackPointCompensation
// Black point compensation. Implemented as a linear scaling in XYZ. Black points
// should come relative to the white point. Fills an matrix/offset element m
// which is organized as a 4x4 matrix.
static
void ComputeBlackPointCompensation(const cmsCIEXYZ* BlackPointIn,
const cmsCIEXYZ* BlackPointOut,
cmsMAT3* m, cmsVEC3* off)
{
cmsFloat64Number ax, ay, az, bx, by, bz, tx, ty, tz;
// Now we need to compute a matrix plus an offset m and of such of
// [m]*bpin + off = bpout
// [m]*D50 + off = D50
//
// This is a linear scaling in the form ax+b, where
// a = (bpout - D50) / (bpin - D50)
// b = - D50* (bpout - bpin) / (bpin - D50)
tx = BlackPointIn->X - cmsD50_XYZ()->X;
ty = BlackPointIn->Y - cmsD50_XYZ()->Y;
tz = BlackPointIn->Z - cmsD50_XYZ()->Z;
ax = (BlackPointOut->X - cmsD50_XYZ()->X) / tx;
ay = (BlackPointOut->Y - cmsD50_XYZ()->Y) / ty;
az = (BlackPointOut->Z - cmsD50_XYZ()->Z) / tz;
bx = - cmsD50_XYZ()-> X * (BlackPointOut->X - BlackPointIn->X) / tx;
by = - cmsD50_XYZ()-> Y * (BlackPointOut->Y - BlackPointIn->Y) / ty;
bz = - cmsD50_XYZ()-> Z * (BlackPointOut->Z - BlackPointIn->Z) / tz;
_cmsVEC3init(&m ->v[0], ax, 0, 0);
_cmsVEC3init(&m ->v[1], 0, ay, 0);
_cmsVEC3init(&m ->v[2], 0, 0, az);
_cmsVEC3init(off, bx, by, bz);
}
开发者ID:greghaskins,项目名称:openjdk-jdk7u-jdk,代码行数:36,代码来源:cmscnvrt.c
示例5: EmitWhiteBlackD50
static
void EmitWhiteBlackD50(cmsIOHANDLER* m, cmsCIEXYZ* BlackPoint)
{
_cmsIOPrintf(m, "/BlackPoint [%f %f %f]\n", BlackPoint -> X,
BlackPoint -> Y,
BlackPoint -> Z);
_cmsIOPrintf(m, "/WhitePoint [%f %f %f]\n", cmsD50_XYZ()->X,
cmsD50_XYZ()->Y,
cmsD50_XYZ()->Z);
}
开发者ID:LuaDist,项目名称:lcms2,代码行数:12,代码来源:cmsps2.c
示例6: _cmsReadCHAD
// Chromatic adaptation matrix. Fix some issues as well
cmsBool _cmsReadCHAD(cmsMAT3* Dest, cmsHPROFILE hProfile)
{
cmsMAT3* Tag;
_cmsAssert(Dest != NULL);
Tag = (cmsMAT3*) cmsReadTag(hProfile, cmsSigChromaticAdaptationTag);
if (Tag != NULL) {
*Dest = *Tag;
return TRUE;
}
// No CHAD available, default it to identity
_cmsMAT3identity(Dest);
// V2 display profiles should give D50
if (cmsGetEncodedICCversion(hProfile) < 0x4000000) {
if (cmsGetDeviceClass(hProfile) == cmsSigDisplayClass) {
cmsCIEXYZ* White = (cmsCIEXYZ*) cmsReadTag(hProfile, cmsSigMediaWhitePointTag);
if (White == NULL) {
_cmsMAT3identity(Dest);
return TRUE;
}
return _cmsAdaptationMatrix(Dest, NULL, White, cmsD50_XYZ());
}
}
return TRUE;
}
开发者ID:AndresPozo,项目名称:PCL,代码行数:36,代码来源:cmsio1.c
示例7: cmsD50_xyY
LCMSAPI LPcmsCIExyY LCMSEXPORT cmsD50_xyY(void)
{
static cmsCIExyY D50xyY;
cmsXYZ2xyY(&D50xyY, cmsD50_XYZ());
return &D50xyY;
}
开发者ID:mworks-project,项目名称:mw_supporting,代码行数:7,代码来源:cmscnvrt.c
示例8: cmsD50_xyY
const cmsCIExyY* CMSEXPORT cmsD50_xyY(void)
{
static cmsCIExyY D50xyY;
cmsXYZ2xyY(&D50xyY, cmsD50_XYZ());
return &D50xyY;
}
开发者ID:ImageMagick,项目名称:lcms,代码行数:8,代码来源:cmswtpnt.c
示例9: Temp2CHAD
// Compute a CHAD based on a given temperature
static
void Temp2CHAD(cmsMAT3* Chad, cmsFloat64Number Temp)
{
cmsCIEXYZ White;
cmsCIExyY ChromaticityOfWhite;
cmsWhitePointFromTemp(&ChromaticityOfWhite, Temp);
cmsxyY2XYZ(&White, &ChromaticityOfWhite);
_cmsAdaptationMatrix(Chad, NULL, &White, cmsD50_XYZ());
}
开发者ID:greghaskins,项目名称:openjdk-jdk7u-jdk,代码行数:11,代码来源:cmscnvrt.c
示例10: BlackPointUsingPerceptualBlack
static
int BlackPointUsingPerceptualBlack(LPcmsCIEXYZ BlackPoint,
cmsHPROFILE hProfile,
DWORD dwFlags)
{
cmsHTRANSFORM hPercLab2CMYK, hRelColCMYK2Lab;
cmsHPROFILE hLab;
cmsCIELab LabIn, LabOut;
WORD CMYK[MAXCHANNELS];
cmsCIEXYZ BlackXYZ, MediaWhite;
if (!cmsIsIntentSupported(hProfile, INTENT_PERCEPTUAL, LCMS_USED_AS_INPUT)) {
BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0;
return 0;
}
hLab = cmsCreateLabProfile(NULL);
hPercLab2CMYK = cmsCreateTransform(hLab, TYPE_Lab_DBL,
hProfile, TYPE_CMYK_16,
INTENT_PERCEPTUAL, cmsFLAGS_NOTPRECALC);
hRelColCMYK2Lab = cmsCreateTransform(hProfile, TYPE_CMYK_16,
hLab, TYPE_Lab_DBL,
INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOTPRECALC);
LabIn.L = LabIn.a = LabIn.b = 0;
cmsDoTransform(hPercLab2CMYK, &LabIn, CMYK, 1);
cmsDoTransform(hRelColCMYK2Lab, CMYK, &LabOut, 1);
if (LabOut.L > 50) LabOut.L = 50;
LabOut.a = LabOut.b = 0;
cmsDeleteTransform(hPercLab2CMYK);
cmsDeleteTransform(hRelColCMYK2Lab);
cmsCloseProfile(hLab);
cmsLab2XYZ(NULL, &BlackXYZ, &LabOut);
if (!(dwFlags & LCMS_BPFLAGS_D50_ADAPTED)){
cmsTakeMediaWhitePoint(&MediaWhite, hProfile);
cmsAdaptToIlluminant(BlackPoint, cmsD50_XYZ(), &MediaWhite, &BlackXYZ);
}
else
*BlackPoint = BlackXYZ;
return 1;
}
开发者ID:makinacorpus,项目名称:libecw,代码行数:52,代码来源:cmswtpnt.c
示例11: cmsCreateNULLProfileTHR
// Creates a fake NULL profile. This profile return 1 channel as always 0.
// Is useful only for gamut checking tricks
cmsHPROFILE CMSEXPORT cmsCreateNULLProfileTHR(cmsContext ContextID)
{
cmsHPROFILE hProfile;
cmsPipeline* LUT = NULL;
cmsStage* PostLin;
cmsToneCurve* EmptyTab;
cmsUInt16Number Zero[2] = { 0, 0 };
hProfile = cmsCreateProfilePlaceholder(ContextID);
if (!hProfile) // can't allocate
return NULL;
cmsSetProfileVersion(hProfile, 4.3);
if (!SetTextTags(hProfile, L"NULL profile built-in")) goto Error;
cmsSetDeviceClass(hProfile, cmsSigOutputClass);
cmsSetColorSpace(hProfile, cmsSigGrayData);
cmsSetPCS(hProfile, cmsSigLabData);
// An empty LUTs is all we need
LUT = cmsPipelineAlloc(ContextID, 1, 1);
if (LUT == NULL) goto Error;
EmptyTab = cmsBuildTabulatedToneCurve16(ContextID, 2, Zero);
PostLin = cmsStageAllocToneCurves(ContextID, 1, &EmptyTab);
cmsFreeToneCurve(EmptyTab);
if (!cmsPipelineInsertStage(LUT, cmsAT_END, PostLin))
goto Error;
if (!cmsWriteTag(hProfile, cmsSigBToA0Tag, (void*) LUT)) goto Error;
if (!cmsWriteTag(hProfile, cmsSigMediaWhitePointTag, cmsD50_XYZ())) goto Error;
cmsPipelineFree(LUT);
return hProfile;
Error:
if (LUT != NULL)
cmsPipelineFree(LUT);
if (hProfile != NULL)
cmsCloseProfile(hProfile);
return NULL;
}
开发者ID:WinnerSoftLab,项目名称:WinnerMediaPlayer,代码行数:51,代码来源:cmsvirt.c
示例12: cmsAdaptMatrixFromD50
BOOL cmsAdaptMatrixFromD50(LPMAT3 r, LPcmsCIExyY DestWhitePt)
{
cmsCIEXYZ Dn;
MAT3 Bradford;
MAT3 Tmp;
cmsxyY2XYZ(&Dn, DestWhitePt);
cmsAdaptationMatrix(&Bradford, NULL, cmsD50_XYZ(), &Dn);
Tmp = *r;
MAT3per(r, &Bradford, &Tmp);
return TRUE;
}
开发者ID:makinacorpus,项目名称:libecw,代码行数:15,代码来源:cmswtpnt.c
示例13: cmsAdaptMatrixToD50
BOOL cmsAdaptMatrixToD50(LPMAT3 r, LPcmsCIExyY SourceWhitePt)
{
cmsCIEXYZ Dn;
MAT3 Bradford;
MAT3 Tmp;
cmsxyY2XYZ(&Dn, SourceWhitePt);
cmsAdaptationMatrix(&Bradford, NULL, &Dn, cmsD50_XYZ());
Tmp = *r;
MAT3per(r, &Bradford, &Tmp);
return TRUE;
}
开发者ID:makinacorpus,项目名称:libecw,代码行数:15,代码来源:cmswtpnt.c
示例14: cmsAdaptMatrixFromD50
/// WAS: Same as anterior, but assuming D50 source. White point is given in xyY
static cmsBool cmsAdaptMatrixFromD50(cmsMAT3* const r, const cmsCIExyY* const DestWhitePt)
{
cmsCIEXYZ Dn;
cmsMAT3 Bradford;
cmsMAT3 Tmp;
cmsxyY2XYZ(&Dn, DestWhitePt);
if (!_cmsAdaptationMatrix(&Bradford, NULL, &Dn, cmsD50_XYZ()))
return FALSE;
Tmp = *r;
_cmsMAT3per(r, &Bradford, &Tmp);
return TRUE;
}
开发者ID:rickysarraf,项目名称:digikam,代码行数:17,代码来源:digikam-lcms.cpp
示例15: _cmsCreateProfilePlaceholder
cmsHPROFILE _cmsCreateProfilePlaceholder(void)
{
LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) _cmsMalloc(sizeof(LCMSICCPROFILE));
if (Icc == NULL) return NULL;
// Empty values
ZeroMemory(Icc, sizeof(LCMSICCPROFILE));
// Make sure illuminant is correct
Icc ->Illuminant = *cmsD50_XYZ();
// Set it to empty
Icc -> TagCount = 0;
// Return the handle
return (cmsHPROFILE) Icc;
}
开发者ID:michalwarecki,项目名称:ManagedRuntimeInitiative,代码行数:18,代码来源:cmsio0.c
示例16: cmsCreateLinearizationDeviceLink
cmsHPROFILE LCMSEXPORT cmsCreateLinearizationDeviceLink(icColorSpaceSignature ColorSpace,
LPGAMMATABLE TransferFunctions[])
{
cmsHPROFILE hICC;
LPLUT Lut;
hICC = _cmsCreateProfilePlaceholder();
if (!hICC) // can't allocate
return NULL;
cmsSetDeviceClass(hICC, icSigLinkClass);
cmsSetColorSpace(hICC, ColorSpace);
cmsSetPCS(hICC, ColorSpace);
cmsSetRenderingIntent(hICC, INTENT_PERCEPTUAL);
// Creates a LUT with prelinearization step only
Lut = cmsAllocLUT();
if (Lut == NULL) return NULL;
// Set up channels
Lut ->InputChan = Lut ->OutputChan = _cmsChannelsOf(ColorSpace);
// Copy tables to LUT
cmsAllocLinearTable(Lut, TransferFunctions, 1);
// Create tags
cmsAddTag(hICC, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)");
cmsAddTag(hICC, icSigProfileDescriptionTag, (LPVOID) "lcms linearization device link");
cmsAddTag(hICC, icSigDeviceModelDescTag, (LPVOID) "linearization built-in");
cmsAddTag(hICC, icSigMediaWhitePointTag, (LPVOID) cmsD50_XYZ());
cmsAddTag(hICC, icSigAToB0Tag, (LPVOID) Lut);
// LUT is already on virtual profile
cmsFreeLUT(Lut);
// Ok, done
return hICC;
}
开发者ID:LuaDist,项目名称:lcms,代码行数:42,代码来源:cmsvirt.c
示例17: updateHeader
static LCMSBOOL updateHeader(LPLCMSICCPROFILE Icc) {
icHeader head;
readMemBuffer(&head, sizeof(icHeader), 1, Icc -> stream);
// Stop processing if data are corrupted
if (swapBytes32(head.magic) != icMagicNumber) return FALSE;
Icc->Version = swapBytes32(head.version);
Icc->DeviceClass = swapBytes32(head.deviceClass);
Icc->ColorSpace = swapBytes32(head.colorSpace);
Icc->PCS = swapBytes32(head.pcs);
Icc->flags = swapBytes32(head.flags);
Icc->RenderingIntent = (icRenderingIntent) swapBytes32(head.renderingIntent);
// For now ICC spec states that illuminant should be D50 in all profiles
Icc->Illuminant = *cmsD50_XYZ();
return TRUE;
}
开发者ID:unitedroad,项目名称:harmony-for-haiku,代码行数:20,代码来源:cmmio.c
示例18: updateCriticalTags
void updateCriticalTags(LPLCMSICCPROFILE Icc) {
LPVOID savedData = NULL;
int idx;
cmsCIEXYZ* dummy;
MemBuffer *memBuffer = (MemBuffer*) Icc->stream;
if(!memBuffer->needsUpdateCriticalTags) // Nothing to do
return;
idx = findTag(Icc, icSigMediaWhitePointTag);
dummy = cmsD50_XYZ();
if(idx >= 0) { // There is media white point already
cmsAddTag(Icc, icSigMediaWhitePointTag, dummy); // Force LCMS to read critical tags
free(Icc->TagPtrs[idx]); // Get rid of dummy media white point
Icc->TagPtrs[idx] = NULL;
} else {
cmsAddTag(Icc, icSigMediaWhitePointTag, dummy); // Force LCMS to read critical tags
// Get rid of dummy media white point
free(Icc->TagPtrs[Icc->TagCount-1]);
Icc->TagPtrs[Icc->TagCount-1] = NULL;
Icc->TagNames[Icc->TagCount-1] = 0;
Icc->TagSizes[Icc->TagCount-1] = 0;
Icc->TagOffsets[Icc->TagCount-1] = 0;
Icc->TagCount--;
}
memBuffer->needsUpdateCriticalTags = FALSE;
}
开发者ID:unitedroad,项目名称:harmony-for-haiku,代码行数:41,代码来源:cmmio.c
示例19: GetV4PerceptualBlack
// Get Perceptual black of v4 profiles.
static
int GetV4PerceptualBlack(LPcmsCIEXYZ BlackPoint, cmsHPROFILE hProfile, DWORD dwFlags)
{
if (dwFlags & LCMS_BPFLAGS_D50_ADAPTED) {
BlackPoint->X = PERCEPTUAL_BLACK_X;
BlackPoint->Y = PERCEPTUAL_BLACK_Y;
BlackPoint->Z = PERCEPTUAL_BLACK_Z;
}
else {
cmsCIEXYZ D50BlackPoint, MediaWhite;
cmsTakeMediaWhitePoint(&MediaWhite, hProfile);
D50BlackPoint.X = PERCEPTUAL_BLACK_X;
D50BlackPoint.Y = PERCEPTUAL_BLACK_Y;
D50BlackPoint.Z = PERCEPTUAL_BLACK_Z;
cmsAdaptToIlluminant(BlackPoint, cmsD50_XYZ(), &MediaWhite, &D50BlackPoint);
}
return 1;
}
开发者ID:makinacorpus,项目名称:libecw,代码行数:24,代码来源:cmswtpnt.c
示例20: cmsLab2XYZ
void LCMSEXPORT cmsLab2XYZ(LPcmsCIEXYZ WhitePoint, LPcmsCIEXYZ xyz, const cmsCIELab* Lab)
{
double x, y, z;
if (Lab -> L <= 0) {
xyz -> X = 0;
xyz -> Y = 0;
xyz -> Z = 0;
return;
}
if (WhitePoint == NULL)
WhitePoint = cmsD50_XYZ();
y = (Lab-> L + 16.0) / 116.0;
x = y + 0.002 * Lab -> a;
z = y - 0.005 * Lab -> b;
xyz -> X = f_1(x) * WhitePoint -> X;
xyz -> Y = f_1(y) * WhitePoint -> Y;
xyz -> Z = f_1(z) * WhitePoint -> Z;
}
开发者ID:michalwarecki,项目名称:ManagedRuntimeInitiative,代码行数:24,代码来源:cmspcs.c
注:本文中的cmsD50_XYZ函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论