Krita Source Code Documentation
Loading...
Searching...
No Matches
HCYPolicy Struct Reference

Public Member Functions

float fixupChroma (float c, float v)
 
bool hasChroma (float v)
 
 HCYPolicy (float _rCoeff=0.299f, float _gCoeff=0.587f, float _bCoeff=0.114f)
 
float valueFromRGB (float r, float g, float b, float m, float M)
 
void writeRGB (float *r, float *g, float *b, int sextant, float x, float c, float v)
 

Public Attributes

const float bCoeff = 0.114f
 
const float gCoeff = 0.587f
 
const float rCoeff = 0.299f
 

Detailed Description

Definition at line 183 of file kis_hsv_adjustment.cpp.

Constructor & Destructor Documentation

◆ HCYPolicy()

HCYPolicy::HCYPolicy ( float _rCoeff = 0.299f,
float _gCoeff = 0.587f,
float _bCoeff = 0.114f )
inline

Definition at line 185 of file kis_hsv_adjustment.cpp.

186 : rCoeff(_rCoeff),
187 gCoeff(_gCoeff),
188 bCoeff(_bCoeff)
189 {
190 }
const float gCoeff
const float bCoeff
const float rCoeff

Member Function Documentation

◆ fixupChroma()

float HCYPolicy::fixupChroma ( float c,
float v )
inline

Definition at line 207 of file kis_hsv_adjustment.cpp.

207 {
208 Q_UNUSED(v);
209 // NOTE: no sliding in HCY, because the shape of the triangle
210 // depends on Hue, which complicated code a lot. And it
211 // seems to work fine without it :)
212 return c;
213 }
qreal v

References v.

◆ hasChroma()

bool HCYPolicy::hasChroma ( float v)
inline

Definition at line 196 of file kis_hsv_adjustment.cpp.

196 {
197 static const float EPSILON = 1e-9f;
198 return v > EPSILON && v < 1.0f - EPSILON;
199 }
#define EPSILON

References EPSILON, and v.

◆ valueFromRGB()

float HCYPolicy::valueFromRGB ( float r,
float g,
float b,
float m,
float M )
inline

Definition at line 201 of file kis_hsv_adjustment.cpp.

201 {
202 Q_UNUSED(m);
203 Q_UNUSED(M);
204 return rCoeff * r + gCoeff * g + bCoeff * b;
205 }

References bCoeff, gCoeff, and rCoeff.

◆ writeRGB()

void HCYPolicy::writeRGB ( float * r,
float * g,
float * b,
int sextant,
float x,
float c,
float v )
inline

Definition at line 215 of file kis_hsv_adjustment.cpp.

217 {
218
219
220 switch (sextant) {
221 case 0: *r = c; *g = x; *b = 0; break;
222 case 1: *r = x; *g = c; *b = 0; break;
223 case 2: *r = 0; *g = c; *b = x; break;
224 case 3: *r = 0; *g = x; *b = c; break;
225 case 4: *r = x; *g = 0; *b = c; break;
226 case 5: *r = c; *g = 0; *b = x; break;
227 }
228
229 const float m = v - *r * rCoeff - *g * gCoeff - *b * bCoeff;
230 *r += m;
231 *g += m;
232 *b += m;
233 }

References bCoeff, gCoeff, rCoeff, and v.

Member Data Documentation

◆ bCoeff

const float HCYPolicy::bCoeff = 0.114f

Definition at line 194 of file kis_hsv_adjustment.cpp.

◆ gCoeff

const float HCYPolicy::gCoeff = 0.587f

Definition at line 193 of file kis_hsv_adjustment.cpp.

◆ rCoeff

const float HCYPolicy::rCoeff = 0.299f

Definition at line 192 of file kis_hsv_adjustment.cpp.


The documentation for this struct was generated from the following file: