hex2rgb static method
Implementation
static List<num> hex2rgb(dynamic arg) {
if (arg is int) {
return [(arg >> 16) & 0xFF, (arg >> 8) & 0xFF, arg & 0xFF];
}
if (arg is num) {
int intval = arg.floor();
return [(intval >> 16) & 0xFF, (intval >> 8) & 0xFF, intval & 0xFF];
}
final str = arg.toString();
final len = str.length;
// Skip '#' prefix if present
final start = (len > 0 && str.codeUnitAt(0) == 0x23) ? 1 : 0;
final hexLen = len - start;
if (hexLen == 6) {
final r1 = _hexVal(str.codeUnitAt(start));
final r2 = _hexVal(str.codeUnitAt(start + 1));
final g1 = _hexVal(str.codeUnitAt(start + 2));
final g2 = _hexVal(str.codeUnitAt(start + 3));
final b1 = _hexVal(str.codeUnitAt(start + 4));
final b2 = _hexVal(str.codeUnitAt(start + 5));
if (r1 < 0 || r2 < 0 || g1 < 0 || g2 < 0 || b1 < 0 || b2 < 0) {
return [0, 0, 0];
}
return [(r1 << 4) | r2, (g1 << 4) | g2, (b1 << 4) | b2];
}
if (hexLen == 3) {
final r = _hexVal(str.codeUnitAt(start));
final g = _hexVal(str.codeUnitAt(start + 1));
final b = _hexVal(str.codeUnitAt(start + 2));
if (r < 0 || g < 0 || b < 0) return [0, 0, 0];
return [(r << 4) | r, (g << 4) | g, (b << 4) | b];
}
return [0, 0, 0];
}