80 {
81 const float src = (
float)srcI / 255.0f;
82 const float linSrc = srcConvert.
toLuma(srcGamma, src);
83
84
85
86
87 const float dst = 1.0f -
src;
88 const float linDst = dstConvert.
toLuma(dstGamma, dst);
89
90
91 const float adjustedContrast =
contrast * linDst;
92
93
94
95 if (fabs(src - dst) < (1.0f / 256.0f)) {
96 float ii = 0.0f;
97 for (int i = 0; i < 256; ++i, ii += 1.0f) {
98 float rawSrca = ii / 255.0f;
101 }
102 } else {
103
104 float ii = 0.0f;
105 for (int i = 0; i < 256; ++i, ii += 1.0f) {
106
107
108
109
110 float rawSrca = ii / 255.0f;
113 float dsta = 1.0f - srca;
114
115
116 float linOut = (linSrc * srca + dsta * linDst);
119
120
123
125 }
126 }
127}
#define sk_float_round2int(x)
static float apply_contrast(float srca, float contrast)
constexpr uint8_t SkToU8(S x)
virtual SkScalar fromLuma(SkScalar gamma, SkScalar luma) const =0
virtual SkScalar toLuma(SkScalar gamma, SkScalar luminance) const =0