Private/Resolve-ColorCode.ps1

Function Resolve-ColorCode
    {
        [CmdletBinding()]
        param(
            [Parameter(Mandatory=$True)]
            [ConsoleFX.ValidateColor()]
            [Object]$ColorCode,
            [Parameter(Mandatory=$True)]
            [ValidateSet('Foreground', 'Background')]
            [String]$ColorLocation,
            [Parameter(Mandatory=$False)]
            [Switch]$Vivid
        )

        $ConsoleFXColorModels = @(
            ([ConsoleFx.ColorModel.RGB]).Name,
            ([ConsoleFx.ColorModel.Hex]).Name,
            ([ConsoleFx.ColorModel.HSV]).Name,
            ([ConsoleFx.ColorModel.HSL]).Name,
            ([ConsoleFx.ColorModel.CMYK]).Name
        )

        Switch($ColorLocation)
            {
                Foreground
                    {
                        $ColorObject = New-Object ConsoleFX.Foreground
                    }
                Background
                    {
                        $ColorObject = New-Object ConsoleFX.Background
                    }
            }

        If($ColorCode -is [System.Collections.IEnumerable] -and $ColorCode.Count -eq 3)
            {
                $r, $g, $b = $ColorCode
                $RBGCode = $ColorObject::RGB($r, $g, $b)

                Return $RBGCode
            }
        ElseIf($ConsoleFXColorModels -contains $ColorCode.GetType().Name)
            {
                If($ColorCode -isnot [ConsoleFx.ColorModel.RGB])
                    {
                        $Type = $ColorCode.GetType().Name
                        $ColorConversionParams = @{
                            To = 'RGB'
                            ColorCode = $ColorCode
                        }
                        $ColorCode = Convert-Color @ColorConversionParams
                    }

                $RBGCode = $ColorObject::RGB($ColorCode.Red, $ColorCode.Green, $ColorCode.Blue)

                Return $RBGCode
            }

        ElseIf($ColorCode -is [int])
            {
                Return ($ColorObject::Index($ColorCode))
            }
        Else
            {
                $BrightMode = If($Vivid -eq $true){'Bright'}Else{''}

                $Color = "$BrightMode$ColorCode"
                Return ($ColorObject::$Color)
            }
    }