saturation static method

List<double> saturation(
  1. double value
)

Saturation adjustment

Implementation

static List<double> saturation(double value) {
  value = value * 100;

  if (value == 0) {
    return <double>[
      1,
      0,
      0,
      0,
      0,
      0,
      1,
      0,
      0,
      0,
      0,
      0,
      1,
      0,
      0,
      0,
      0,
      0,
      1,
      0,
    ];
  }

  final double x = 1 + ((value > 0) ? ((3 * value) / 100) : (value / 100));
  const double lumR = 0.3086;
  const double lumG = 0.6094;
  const double lumB = 0.082;

  return List<double>.from(<double>[
    (lumR * (1 - x)) + x,
    lumG * (1 - x),
    lumB * (1 - x),
    0,
    0,
    lumR * (1 - x),
    (lumG * (1 - x)) + x,
    lumB * (1 - x),
    0,
    0,
    lumR * (1 - x),
    lumG * (1 - x),
    (lumB * (1 - x)) + x,
    0,
    0,
    0,
    0,
    0,
    1,
    0,
  ]).map((double i) => i).toList();
}