Color.Hex.Interpolate¶
Interpolate between two Hex colors by a given percentage
| Name | Type | Required | Description |
|---|---|---|---|
| startHexColor | STRING | The starting Hex color (e.g., "#FF0000") | |
| endHexColor | STRING | The ending Hex color (e.g., "#0000FF") | |
| percentage | DOUBLE | The interpolation percentage (0.0 = startColor, 1.0 = endColor) |
STRING Interpolated hex color code
function 'DaxLib.SVG.Color.Hex.Interpolate' =
(
startHexColor: STRING,
endHexColor: STRING,
percentage: DOUBLE
) =>
// Clamp percentage between 0 and 1
VAR _ClampedPercentage = MIN( MAX( percentage, 0 ), 1 )
// Clean Hex codes
VAR _StartHex = SUBSTITUTE( startHexColor, "#", "" )
VAR _EndHex = SUBSTITUTE( endHexColor, "#", "" )
// Extract and convert RGB components using your existing Hex.ToInt function
VAR _StartR = DaxLib.SVG.Color.Hex.ToInt( MID( _StartHex, 1, 2 ) )
VAR _StartG = DaxLib.SVG.Color.Hex.ToInt( MID( _StartHex, 3, 2 ) )
VAR _StartB = DaxLib.SVG.Color.Hex.ToInt( MID( _StartHex, 5, 2 ) )
VAR _EndR = DaxLib.SVG.Color.Hex.ToInt( MID( _EndHex, 1, 2 ) )
VAR _EndG = DaxLib.SVG.Color.Hex.ToInt( MID( _EndHex, 3, 2 ) )
VAR _EndB = DaxLib.SVG.Color.Hex.ToInt( MID( _EndHex, 5, 2 ) )
// Interpolate RGB values
VAR _InterpolatedR = ROUND( _StartR + ( _EndR - _StartR ) * _ClampedPercentage, 0 )
VAR _InterpolatedG = ROUND( _StartG + ( _EndG - _StartG ) * _ClampedPercentage, 0 )
VAR _InterpolatedB = ROUND( _StartB + ( _EndB - _StartB ) * _ClampedPercentage, 0 )
VAR result =
DaxLib.SVG.Color.RGB.ToHex(
_InterpolatedR,
_InterpolatedG,
_InterpolatedB,
BLANK() // No alpha
)
RETURN result