saturationAdjustMatrix static method

List<double> saturationAdjustMatrix({
  1. double? value,
})

Implementation

static List<double> saturationAdjustMatrix({double? value}) {
  value = value! * 100;

  if (value == 0)
    return [
      1,0,0,0,0,
      0,1,0,0,0,
      0,0,1,0,0,
      0,0,0,1,0,
    ];

  double x = ((1 + ((value > 0) ? ((3 * value) / 100) : (value / 100)))).toDouble();
  double lumR = 0.3086;
  double lumG = 0.6094;
  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((i) => i.toDouble()).toList();
}