Abstract profile - Gamut improvment (#6665)

* Gamut control when the chosen primaries are different from working profile

* Gamut control abstract

* Gamut label and history

* Change to Wx Wz

* Fixed crash if y primaries are set to zero

* Fomated with Astylert ImProcFunctions::workingtrc and Color::primaries_to_xyz

* Fixed black becomes green wit gamt abstract profile

* Harmonize types in color.cc

* Try to fix Multiplication result converted to larger type
This commit is contained in:
Desmis
2023-01-24 14:29:50 +01:00
committed by GitHub
parent 21afbaf90b
commit 7afdfc1e2b
10 changed files with 415 additions and 51 deletions

View File

@@ -1847,6 +1847,13 @@ static inline void Lab2XYZ(vfloat L, vfloat a, vfloat b, vfloat &x, vfloat &y, v
*/
static void gamutmap(float &X, float Y, float &Z, const double p[3][3]);
/**
* @brief Convert primaries in XYZ values in function of illuminant
* @param p primaries red, gree, blue
* @param Wx Wy white for illuminant
* @param pxyz return matrix XYZ
*/
static void primaries_to_xyz (double p[6], double Wx, double Wz, double *pxyz);
/**
* @brief Get HSV's hue from the Lab's hue