Colour.fromHSV constructor
Implementation
factory Colour.fromHSV({
double a = 1.0,
required double h,
required double s,
required double v,
}) {
double red, green, blue;
if (s == 0) {
red = green = blue = v;
} else {
final double sector = h / 60;
final int i = sector.floor();
final double f = sector - i;
final double p = v * (1 - s);
final double q = v * (1 - s * f);
final double t = v * (1 - s * (1 - f));
switch (i % 6) {
case 0:
red = v;
green = t;
blue = p;
break;
case 1:
red = q;
green = v;
blue = p;
break;
case 2:
red = p;
green = v;
blue = t;
break;
case 3:
red = p;
green = q;
blue = v;
break;
case 4:
red = t;
green = p;
blue = v;
break;
case 5:
red = v;
green = p;
blue = q;
break;
default:
red = green = blue = 0;
}
}
return Colour(
alpha: (a * 255).round(),
red: (red * 255).round(),
green: (green * 255).round(),
blue: (blue * 255).round(),
);
}