#pragma once #include #include #include // Colour conversion utilities mirroring lib/dali/color.dart. class DaliColor { public: static std::array toIntList(double a, double r, double g, double b); static int toInt(double a, double r, double g, double b); static double decimalRound(int num, double idp); static std::array gammaCorrection(double r, double g, double b, double gamma = 2.8); static std::array rgb2xyz(double r, double g, double b); static std::array xyz2rgb(double x, double y, double z); static std::array xyz2xy(double x, double y, double z); static std::array xy2xyz(double xVal, double yVal); static std::array rgb2xy(double r, double g, double b); static std::array xy2rgb(double xVal, double yVal); static std::array xyz2lab(double x, double y, double z); static std::array rgb2lab(double r, double g, double b); static std::array lab2xyz(double l, double a, double b); static std::array lab2rgb(double l, double a, double b); private: static double srgbToLinear(double value); static double linearToSrgb(double value); };