from lnx.logicnode.lnx_nodes import *


class SeparateColorHSVNode(LnxLogicTreeNode):
    """Splits the given color into its HSVA components (hue, saturation, value, and alpha).
    If the input color is `null`, the outputs are each set to `0.0`.
    formula from: https://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c
    """
    bl_idname = 'LNSeparateColorHSVNode'
    bl_label = 'Separate HSVA'
    lnx_section = 'color'
    lnx_version = 1

    def lnx_init(self, context):
        self.add_input('LnxColorSocket', 'Color', default_value=[1.0, 1.0, 1.0, 1.0])

        self.add_output('LnxFloatSocket', 'H')
        self.add_output('LnxFloatSocket', 'S')
        self.add_output('LnxFloatSocket', 'V')
        self.add_output('LnxFloatSocket', 'A')