hsluv 0.0.1

Human-friendly HSL.

Released 2016-12-17.

To install, run:

haxelib install hsluv 0.0.1

See using Haxelib in Haxelib documentation for more information.

Current version0.0.1
StatisticsInstalled 11 times


Reference implementation


Once imported, use the library by importing Hsluv. Here's an example:

import hsluv.Hsluv;

public class Main {
    public static function main() {
        trace(Hsluv.rgbToHex([1,1,1])); // Will print "#FFFFFF"

Color values ranges

  • RGB values are ranging in [0;1]
  • HSLuv and HPLuv values have different ranging for their components - H : [0;360] - S and L : [0;100]
  • LUV has different ranging for their components - L : [0;100] - u and v* : [-100;100]
  • LCh has different ranging for their components - L : [0;100] - C : [0; ?] Upper bound varies depending on L and H - H* : [0; 360]
  • XYZ values are ranging in [0;1]

API functions


The passing/returning values, when not String are Array<Float> containing each component of the given color space/system in the name's order : - RGB : [red, blue, green] - XYZ : [X, Y, Z] - LCH : [L, C, H] - LUV : [L, u, v] - HSLuv/HPLuv : [H, S, L]

Function listing

  • xyzToRgb(tuple:Array<Float>)
  • rgbToXyz(tuple:Array<Float>)
  • xyzToLuv(tuple:Array<Float>)
  • luvToXyz(tuple:Array<Float>)
  • luvToLch(tuple:Array<Float>)
  • lchToLuv(tuple:Array<Float>)
  • hsluvToLch(tuple:Array<Float>)
  • lchToHsluv(tuple:Array<Float>)
  • hpluvToLch(tuple:Array<Float>)
  • lchToHpluv(tuple:Array<Float>)
  • lchToRgb(tuple:Array<Float>)
  • rgbToLch(tuple:Array<Float>)
  • hsluvToRgb(tuple:Array<Float>)
  • rgbToHsluv(tuple:Array<Float>)
  • hpluvToRgb(tuple:Array<Float>)
  • rgbToHpluv(tuple:Array<Float>)
  • hsluvToHex(tuple:Array<Float>)
  • hpluvToHex(tuple:Array<Float>)
  • hexToHsluv(s:String)
  • hexToHpluv(s:String)
  • rgbToHex(tuple:Array<Float>)
  • hexToRgb(hex:String)


# Prefered way : Haxe's builtin interpreter. Doesn't require any external libs to execute the tests.
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 --interp
# Neko
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -x bin/neko/RunTests.n
# CPP Linux
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -cpp bin/cpp -cmd bin/cpp/RunTests
# CPP Windows
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -cpp bin/cpp -cmd bin/cpp/RunTests.exe
# C# Linux
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -cs bin/cs -cmd mono bin/cs/RunTests.exe
# C# Windows
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -cs bin/cs -cmd bin/cs/RunTests.exe
# Java
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -java bin/java -cmd java -jar bin/java/RunTests.jar
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -php bin/php -cmd php bin/php/index.php
# NodeJS
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -js bin/js/RunTests.js -cmd node bin/js/RunTests.js
# Python
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -python bin/python/RunTests.py -cmd python bin/python/RunTests.py
# Lua
haxe -cp src -cp test -main RunTests -resource ../snapshots/snapshot-rev4.json@snapshot-rev4 -lua bin/lua/RunTests.lua -cmd lua bin/lua/RunTests.lua
# And so on...


This code work on some targets, but here are some tests that couldn't pass on my computer: - PHP : PHP7 parseInt function doesn't convert hexadecimal values anymore.

Tests to do: - SWF - Windows and Mac