Editors' picksPINE LIBRARY

HSV and HSL gradient Tools ( Built-in Drop-in replacement )

Updated
Library "hsvColor"
HSV and HSL Gradient Tool Alternatives and helpers. Demo'd is built-in in the middle with HSL/HSV gradients on top/bottom

TODO: Solve for #000000 issue

rgbhsv(_col)
  RGB Color to HSV Values
  Parameters:
    _col: Color input (#abc012 or color.name or color.rgb(0,0,0,0))
  Returns: [h,s,v,a] values

rgbhsv(_r, _g, _b, _t)
  RGB Color to HSV Values
  Parameters:
    _r: Red 0 - 255
    _g: Green 0 - 255
    _b: Blue 0 - 255
    _t: Transp 0 - 100
  Returns: [h,s,v,a] values

hsv(_h, _s, _v, _a)
  HSV colors, Auto fix if past boundaries
  Parameters:
    _h: Hue Input (-360 - 360) or further
    _s: Saturation 0.- 1.
    _v: Value 0.- 1.
    _a: Alpha 0.- 1.
  Returns: Color output

hue(_col)
  returns 0-359 hue on color wheel
  Parameters:
    _col:
  Returns: 360 degree hue value

hsv_gradient(signal, _startVal, _endVal, _startCol, _endCol)
  Color Gradient Replacement Function for HSV calculated Gradents
  Parameters:
    signal: Control signal
    _startVal: start color limit
    _endVal: end color limit
    _startCol: start color
    _endCol: end color
  Returns: HSV calculated gradient

hsl_gradient(signal, _startVal, _endVal, _startCol, _endCol)
  Color Gradient Replacement Function for HSV calculated Gradents
  Parameters:
    signal: Control signal
    _startVal: start color limit
    _endVal: end color limit
    _startCol: start color
    _endCol: end color
  Returns: HSV calculated gradient
Release Notes
v2

hsl/inv Upgrades..

Added:
rgbhsl(_col)
  HSL vals from rgb col in
  Parameters:
    _col: The Color
  Returns: HSLA tuple out

hsl(h, s, l)
  HLS input to color output
  Parameters:
    h: hue
    s: saturation
    l: lightness
  Returns: The RGB Color

relativeluminance(color)
  Parameters:
    color: (hex,rgb,color.___)
return float

hsvInvert(_color)
  Invert a color with hsv method (original experimental)
  Parameters:
    _color: color input
  Returns: inverted color

hslInvert(_color)
  Invert a color with hsl method (original experimental)
  Parameters:
    _color: color input
  Returns: inverted color
Release Notes
new image for demo.
Release Notes
v4
UPDATED
Rewrote HSL chain and fixed problems with out of limit values
should be bulletproofed now and is faster than it was

thanks @NeonTL8 for notifying me of the problem.



Library "hsvColor"
HSV and HSL Gradient Tool Alternatives

rgbhsv(_col)
  RGB Color to HSV Values
  Parameters:
    _col: Color input (#abc012 or color.name or color.rgb(0,0,0,0))
  Returns: [h,s,v,a] values

rgbhsv(_r, _g, _b, _t)
  RGB Color to HSV Values
  Parameters:
    _r: Red 0 - 255
    _g: Green 0 - 255
    _b: Blue 0 - 255
    _t: Transp 0 - 100
  Returns: [h,s,v,a] values

hsv(_h, _s, _v, _a)
  HSV colors, Auto fix if past boundaries
  Parameters:
    _h: Hue Input (-360 - 360) or further
    _s: Saturation 0.- 1.
    _v: Value 0.- 1.
    _a: Alpha 0.- 1.
  Returns: Color output

hue(_col, _rotate)
  returns 0-359 hue on color wheel
  Parameters:
    _col:
    _rotate: Turn output by N degrees (+/-)
  Returns: 360 degree hue value

rgbhsl(_col)
  HSL vals from rgb col in
  Parameters:
    _col: The Color
  Returns: HSLA tuple out

hsl(h, s, l)
  HLS input to color output
  Parameters:
    h: hue
    s: saturation
    l: lightness
  Returns: The RGB Color

relativeluminance(color)
  Parameters:
    color: (hex,rgb,color.___)
  Returns: float

hsvInvert(_color)
  Invert a color with hsv method (original experimental)
  Parameters:
    _color: color input
  Returns: inverted color

hslInvert(_color)
  Invert a color with hsl method (original experimental)
  Parameters:
    _color: color input
  Returns: inverted color

hsv_gradient(signal, _startVal, _endVal, _startCol, _endCol)
  Color Gradient Replacement Function for HSV calculated Gradents
  Parameters:
    signal: Control signal
    _startVal: start color limit
    _endVal: end color limit
    _startCol: start color
    _endCol: end color
  Returns: HSV calculated gradient

hsl_gradient(signal, _startVal, _endVal, _startCol, _endCol)
  Color Gradient Replacement Function for HSV calculated Gradents
  Parameters:
    signal: Control signal
    _startVal: start color limit
    _endVal: end color limit
    _startCol: start color
    _endCol: end color
  Returns: HSV calculated gradient
Release Notes
v5
upgrades, bugfixes


Added:
hslimit(_h, _s, _vl, _a)
  Parameters:
    _h: h input to limit signals before using color.
    _s: s input to limit signals before using color.
    _vl: v input to limit signals before using color.
    _a: a input to limit signals before using color.

bright(col)
  Calculate Brightness Level of color.
  Parameters:
    col: (hex,rgb,color.___)
  Returns: float brightness level

tripswitch(_color, _th, _colora, _colorb)
  Switch between colors based on Color Brightness
  Parameters:
    _color: color control signal
    _th: threshold for switch between colors
    _colora: if below threshold (default white)
    _colorb: if above threshold (default black)
  Returns: Contrasting color switched by input control color
Release Notes
v6
Bugs Squished on out-of-boundaries input values.
Release Notes
v7

For those interested in the color math, renamed all variables.
minified version available if requested/required

Also moved gradient calc to function from calc library,
on 0 distance between start and end it will default to first color.
i suggest iff you want to maintain on cross, use this:
abbv versio:


Have an indicator you wish to style? send me a message :)

Release Notes
v8

Added two Helpful tools for creating multileveled colors

Current (nov 2022) Demo image is 100% original non-standard indicators, an same script with different sources and parameters..

built minimal using these two new tools, and 8 fills with 9colors each layer fades to a gradient of the last.
Release Notes
v8
Release Notes
v10
fixed bug on crossing end of gradient value and beginning value which caused hue glitch.

thanks @NeonTL8
Release Notes
v11
update small to fix an otherwise non-noticed brightness glitch

snapshot
Release Notes
v14

Sorry! accidental wrong version published ..
upgrades and nitpick fixes (0 hue transp cols)
Release Notes
v15

for found bug on pinned values on gradients when past limits and saturation is 0 on one and full on other.
Release Notes
v16


Faster. Way faster.
beautifulcolorcolorsdisplaygradientHSLHSVRGB

Pine library

In true TradingView spirit, the author has published this Pine code as an open-source library so that other Pine programmers from our community can reuse it. Cheers to the author! You may use this library privately or in other open-source publications, but reuse of this code in a publication is governed by House rules.

Disclaimer