466 {
470
471 const float P_RGB[3][3] = {
472 { cache->
P_R[0], cache->
P_G[0], cache->
P_B[0] },
473 { cache->
P_R[1], cache->
P_G[1], cache->
P_B[1] },
474 { cache->
P_R[2], cache->
P_G[2], cache->
P_B[2] },
475 };
477 const bool declares_source_space = (p.
input_xy_w[1] > 1e-6f);
483 float X_w[3];
489 if (mt > 1e-6f) {
490 const float scale_k = 1.0f / mt;
491 for (int i = 0; i < 3; ++i) {
492 for (int j = 0; j < 3; ++j) {
493 cache->
M_src[i][j] *= scale_k;
494 }
495 }
496 }
497 }
498 if (!ok_rgb) {
499 for (int i = 0; i < 3; ++i) {
500 for (int j = 0; j < 3; ++j) {
502 }
503 }
504 }
506 for (int i = 0; i < 3; ++i) {
507 for (int j = 0; j < 3; ++j) {
508 cache->
M_src[i][j] = 0.0f;
509 }
510 }
511 }
513 return false;
514 }
515 return ok_rgb;
516}
void matvec3(const float M[3][3], const float v[3], float out[3]) FL_NO_EXCEPT
bool invert3x3(const float in[3][3], float out[3][3]) FL_NO_EXCEPT
bool build_source_matrix(const float xy_r[2], const float xy_g[2], const float xy_b[2], const float xy_w[2], float M_out[3][3]) FL_NO_EXCEPT
void xyY_to_XYZ(float x, float y, float Y, float out[3]) FL_NO_EXCEPT
constexpr common_type_t< T, U > max(T a, U b) FL_NO_EXCEPT
double fabs(double value) FL_NO_EXCEPT