Extension/Vibrance.RoughDraft.Extension.ps1


<#
.Synopsis
    vibrance
.Description
    Boost or alter saturation.
.Link
    https://ffmpeg.org/ffmpeg-filters.html#vibrance
#>


[Management.Automation.Cmdlet('Edit', 'Media')]
param(
# Boost or alter saturation.
[Parameter(Mandatory)]
[switch]
$Vibrance,
    # set the intensity value
    [Alias('vibrance_intensity')]
    [float]
    $VibranceIntensity,
    # set the red balance value
    [Alias('vibrance_rbal')]
    [float]
    $VibranceRedBalance,
    # set the green balance value
    [Alias('vibrance_gbal')]
    [float]
    $VibranceGreenBalance,
    # set the blue balance value
    [Alias('vibrance_bbal')]
    [float]
    $VibranceBlueBalance,
    # set the red luma coefficient
    [Alias('vibrance_rlum')]
    [ValidateRange(0, 1)]
    [float]
    $VibranceRedLuma,
    # set the green luma coefficient
    [Alias('vibrance_glum')]
    [ValidateRange(0, 1)]
    [float]
    $VibranceGreenLuma,
    # set the blue luma coefficient
    [Alias('vibrance_blum')]
    [ValidateRange(0, 1)]
    [float]
    $VibranceBlueLuma,
    # use alternate colors
    [Alias('vibrance_alternate')]
    [switch]
    $VibranceAlternate
)



$filterName = 'vibrance'
$myCmd = $MyInvocation.MyCommand
$filterArgs = @(
    foreach ($kv in $PSBoundParameters.GetEnumerator()) {
        $match=  
            foreach ($paramAlias in $myCmd.Parameters[$kv.Key].Aliases) {
                $m = [Regex]::Match($paramAlias, '_(?<p>.+)$')
                if ($m.Success) {
                    $m;break
                }
            }
        
        if ($match.Success) {
            $v = $kv.Value
            $p = $match.Value -replace '^_'
            if ($v -is [switch]) {
                $v = ($v -as [bool] -as [int]).ToString().ToLower()
            }
            if ($v -is [string] -and $myCmd.Parameters[$kv.Key].ValidateSet) {
                $v = $v.ToLower()
            }
            "$p=$($v)"
        }
    }
) -join ':'
'-vf'


"$filterName=$filterArgs" -replace "=$"