HSL.fromHex constructor

HSL.fromHex(
  1. String hex
)

Implementation

HSL.fromHex(String hex) {
  final values = hex.replaceAll('#', '').split('');
  final _r =
      int.parse(values[0].toString() + values[1].toString(), radix: 16) / 255;
  final _g =
      int.parse(values[2].toString() + values[3].toString(), radix: 16) / 255;
  final _b =
      int.parse(values[4].toString() + values[5].toString(), radix: 16) / 255;

  final maxN = max(_r, max(_g, _b));
  final minN = min(_r, min(_g, _b));

  final _l = (maxN + minN) / 2;
  double _h = 0, _s = 0;

  if (maxN == minN) {
    _h = _s = 0;
  } else {
    final _d = maxN - minN;
    _s = _l > 0.5 ? _d / (2 - maxN - minN) : _d / (maxN + minN);

    if (maxN == _r) {
      _h = (_g - _b) / _d + (_g < _b ? 6 : 0);
    } else if (maxN == _g) {
      _h = (_b - _r) / _d + 2;
    } else if (maxN == _b) {
      _h = (_r - _g) / _d + 4;
    }

    _h = _h * 6;
  }

  h = (_h * 100).roundToDouble() / 10;
  s = (_s * 1000).roundToDouble() / 10;
  l = (_l * 1000).roundToDouble() / 10;
}