Skip to content

HslColor object API

Michael Miller edited this page May 24, 2024 · 5 revisions

HslColor represents a color object that is represented by Hue, Saturation, Lightness component values. The primary use of this class is for easy definitions of color. See Wikipedia article on HSL color space

NOTE: HslColor has no concept of RGB or W channels. It can be converted to RGB, but when converted to RGBW, RGBWW, and RGBWWW the W channels will always be empty.

Visual representation of HSL color space

Properties

There are three properties that represent the component values Hue, Saturation, and Lightness. The values range from 0.0f to 1.0f.
H is the primary color component and represents a color wheel. Often you will see examples of this being between 0 and 360, but this library is between 0.0f and 1.0f inclusive. L should be generally limited to between (0.0 - 0.5)

float H;
float S;
float L;

Constructors

HslColor(float h, float s, float l) :

Constructs a HslColor using Hue, Saturation, and Lightness color component values.

  • h - value for Hue component (0.0f - 1.0f).
  • s - value for Saturation component (0.0f - 1.0f).
  • l - value for Lightness component (0.0f - 1.0f).

HslColor(RgbColor color);

Construct a HslColor using RgbColor, converting the Rgb to Hsl

  • color - a RgbColor object.

HslColor()

Construct a HslColor that will have its values set in latter operations.
CAUTION: The H,S,L members are not initialized and may not be consistent until set.

Methods

template <typename T_NEOHUEBLEND> static HslColor LinearBlend(HslColor left, HslColor right, float progress)

This will blend between two colors by the amount defined by the progress variable.
T_NEOHUEBLEND - a NeoHueBlend object, that will define how the colors are blended.

  • left - the color to start the blend at.
  • right - the color to end the blend at.
  • progress - (0.0f - 1.0f) value where 0.0f will return left and 1.0f will return right and a value between will blend the color weighted linearly between them.
    This is a static function, which means you need to call it scoped to the object class and not an instance like...
    HslColor results = HslColor::LinearBlend<NeoHueBlendShortestDistance>(HslColor(0.88f,1.0f,0.5f), HslColor(0.12f,1.0f,0.5f), 0.33f);
Clone this wiki locally