42 if (luminance <= 0.04045f) {
43 return luminance / 12.92f;
52 if (luma <= 0.0031308f) {
66 return gSkSRGBColorSpaceLuminance;
68 return gSkLinearColorSpaceLuminance;
70 return gSkGammaColorSpaceLuminance;
75 return srca + ((1.0f - srca) * contrast * srca);
81 const float src = (float)srcI / 255.0f;
82 const float linSrc = srcConvert.
toLuma(srcGamma, src);
87 const float dst = 1.0f - src;
88 const float linDst = dstConvert.
toLuma(dstGamma, dst);
91 const float adjustedContrast = contrast * linDst;
95 if (fabs(src - dst) < (1.0f / 256.0f)) {
97 for (
int i = 0; i < 256; ++i, ii += 1.0f) {
98 float rawSrca = ii / 255.0f;
105 for (
int i = 0; i < 256; ++i, ii += 1.0f) {
110 float rawSrca = ii / 255.0f;
113 float dsta = 1.0f - srca;
116 float linOut = (linSrc * srca + dsta * linDst);
118 float out = dstConvert.
fromLuma(dstGamma, linOut);
121 float result = (out - dst) / (src - dst);
#define sk_float_round2int(x)
void SkTMaskGamma_build_correcting_lut(uint8_t table[256], U8CPU srcI, SkScalar contrast, const SkColorSpaceLuminance &srcConvert, SkScalar srcGamma, const SkColorSpaceLuminance &dstConvert, SkScalar dstGamma)
static float apply_contrast(float srca, float contrast)
#define SkScalarInvert(x)
#define SkScalarPow(b, e)
constexpr uint8_t SkToU8(S x)
virtual SkScalar fromLuma(SkScalar gamma, SkScalar luma) const =0
virtual SkScalar toLuma(SkScalar gamma, SkScalar luminance) const =0
static const SkColorSpaceLuminance & Fetch(SkScalar gamma)
SkScalar fromLuma(SkScalar gamma, SkScalar luma) const override
SkScalar toLuma(SkScalar gamma, SkScalar luminance) const override
SkScalar toLuma(SkScalar SkDEBUGCODE(gamma), SkScalar luminance) const override
SkScalar fromLuma(SkScalar SkDEBUGCODE(gamma), SkScalar luma) const override
SkScalar fromLuma(SkScalar SkDEBUGCODE(gamma), SkScalar luma) const override
SkScalar toLuma(SkScalar SkDEBUGCODE(gamma), SkScalar luminance) const override