Skip to content

Commit 52f9734

Browse files
committed
fix(Math): Add hex2float function
That function allow to convert web color format (i.e. #aaa, #ffdd10, aaa, 40fd3a, #aabbcc00) to floating point representation of RGB or RGBA when alpha provided
1 parent 2d6066c commit 52f9734

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

Sources/Common/Core/Math/index.js

+34
Original file line numberDiff line numberDiff line change
@@ -1557,6 +1557,39 @@ function solveLeastSquares(
15571557
return successFlag;
15581558
}
15591559

1560+
function hex2float(hexStr, outFloatArray = [0, 0.5, 1]) {
1561+
switch (hexStr.length) {
1562+
case 3: // abc => #aabbcc
1563+
outFloatArray[0] = parseInt(hexStr[0], 16) * 17 / 255;
1564+
outFloatArray[1] = parseInt(hexStr[1], 16) * 17 / 255;
1565+
outFloatArray[2] = parseInt(hexStr[2], 16) * 17 / 255;
1566+
return outFloatArray;
1567+
case 4: // #abc => #aabbcc
1568+
outFloatArray[0] = parseInt(hexStr[1], 16) * 17 / 255;
1569+
outFloatArray[1] = parseInt(hexStr[2], 16) * 17 / 255;
1570+
outFloatArray[2] = parseInt(hexStr[3], 16) * 17 / 255;
1571+
return outFloatArray;
1572+
case 6: // ab01df => #ab01df
1573+
outFloatArray[0] = parseInt(hexStr.substr(0, 2), 16) / 255;
1574+
outFloatArray[1] = parseInt(hexStr.substr(2, 2), 16) / 255;
1575+
outFloatArray[2] = parseInt(hexStr.substr(4, 2), 16) / 255;
1576+
return outFloatArray;
1577+
case 7: // #ab01df
1578+
outFloatArray[0] = parseInt(hexStr.substr(1, 2), 16) / 255;
1579+
outFloatArray[1] = parseInt(hexStr.substr(3, 2), 16) / 255;
1580+
outFloatArray[2] = parseInt(hexStr.substr(5, 2), 16) / 255;
1581+
return outFloatArray;
1582+
case 9: // #ab01df00
1583+
outFloatArray[0] = parseInt(hexStr.substr(1, 2), 16) / 255;
1584+
outFloatArray[1] = parseInt(hexStr.substr(3, 2), 16) / 255;
1585+
outFloatArray[2] = parseInt(hexStr.substr(5, 2), 16) / 255;
1586+
outFloatArray[3] = parseInt(hexStr.substr(7, 2), 16) / 255;
1587+
return outFloatArray;
1588+
default:
1589+
return outFloatArray;
1590+
}
1591+
}
1592+
15601593
function rgb2hsv(rgb, hsv) {
15611594
let h;
15621595
let s;
@@ -2017,6 +2050,7 @@ export default {
20172050
jacobiN,
20182051
solveHomogeneousLeastSquares,
20192052
solveLeastSquares,
2053+
hex2float,
20202054
rgb2hsv,
20212055
hsv2rgb,
20222056
lab2xyz,

0 commit comments

Comments
 (0)