EvaluationContext.Colour.HSL.ToHex
Converts HSL color values to hexadecimal format
Syntax
EvaluationContext.Colour.HSL.ToHex(h, s, l, alpha)
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
h | INT64 | Yes | Hue (0-360) |
s | DOUBLE | Yes | Saturation (0-1) |
l | DOUBLE | Yes | Lightness (0-1) |
alpha | DOUBLE | No | The alpha value (0-1) |
Returns
(STRING) Hex color string with optional alpha
Example
EvaluationContext.Colour.HSL.ToHex(0, 1, 0.5) // Returns "#FF0000"
Definition
EvaluationContext.Colour.HSL.ToHex =
(
h: INT64,
s: DOUBLE,
l: DOUBLE,
alpha: DOUBLE
) =>
VAR C = ( 1 - ABS(2 * l - 1 ) ) * s
VAR X = C * ( 1 - ABS( MOD( H / 60, 2 ) - 1 ) )
VAR M = l - C / 2
VAR RGB1 = SWITCH(
true,
h < 60, C & "," & X & ",0",
h < 120, X & "," & C & ",0",
h < 180, "0," & C & "," & X,
h < 240, "0," & X & "," & C,
h < 300, X & ",0," & C,
C & ",0," & X
)
VAR RPrime = VALUE( LEFT( RGB1, SEARCH(",", RGB1 ) - 1 ) )
VAR Remaining = RIGHT( RGB1, LEN( RGB1 ) - SEARCH( ",", RGB1 ) )
VAR GPrime = VALUE( LEFT( Remaining, SEARCH( ",", Remaining ) - 1) )
VAR BPrime = VALUE( RIGHT( Remaining, LEN( Remaining ) - SEARCH( ",", Remaining ) ) )
VAR FinalR = ROUND( ( RPrime + M) * 255, 0)
VAR FinalG = ROUND( ( GPrime + M) * 255, 0)
VAR FinalB = ROUND( ( BPrime + M) * 255, 0)
VAR result =
"#" &
EvaluationContext.Colour.Int.ToHex(FinalR, 2) &
EvaluationContext.Colour.Int.ToHex(FinalG, 2) &
EvaluationContext.Colour.Int.ToHex(FinalB, 2) &
IF( NOT ISBLANK( alpha ), EvaluationContext.Colour.Int.ToHex( alpha * 255, 2 ) )
RETURN result