Public/Renderer.ps1



function Set-ASRFrameTiming
{
    Param(
        [String]$Shell,
        [ValidateSet('0', '1', '2', '3', '4')]
        [Parameter()][int]$VSync,
        [ValidateSet('0', '30', '60', '120')]
        [Parameter()][int]$Frames
        )

        # first, get Shell we want to talk to
        $shellLocal = Get-ASDefaultShell
        if($PSBoundParameters['Shell']) {
            $shellLocal  = $Shell
        }
        if([System.String]::IsNullOrEmpty($shellLocal)) {
            Write-Host 'Target shell is not set. Please specify target shell with -Shell parameter or by Set-ASDefaultShellTarget snippet.'
            return
        }

        $object = New-Object –TypeName PSObject
        foreach ($boundParam in $PSBoundParameters.GetEnumerator())
        {
            $object | Add-Member –MemberType NoteProperty –Name $boundParam.Key –Value $boundParam.Value
        }
        
        $body = $object | ConvertTo-Json -Depth 8
        $uri = "http://$($shellLocal):4444/api/renderer/SetFrameTimingOptions" 
        $result = Invoke-RestMethod -Uri $uri -Body $body -Method POST -ContentType 'application/json'
}


function Set-ASRResolution
{
    [CmdletBinding(DefaultParameterSetName = 'ByName')]

    Param(
        [String]$Shell,
        [Parameter(Mandatory, Position=0, ParameterSetName='ByNumbers')][int]$x,
        [Parameter(Mandatory, Position=1, ParameterSetName='ByNumbers')][int]$y,
        
        [ValidateSet('4k', '2.5k', 'FullHD', 'HDReady', '1024x768', '800x600')]
        [Parameter(Mandatory, Position=0, ParameterSetName='ByName')][string]$resolution
        )

        # first, get Shell we want to talk to
        $shellLocal = Get-ASDefaultShell
        if($PSBoundParameters['Shell']) {
            $shellLocal  = $Shell
        }
        if([System.String]::IsNullOrEmpty($shellLocal)) {
            Write-Host 'Target shell is not set. Please specify target shell with -Shell parameter or by Set-ASDefaultShellTarget snippet.'
            return
        }

        $_x = 0;
        $_y = 0;

        if($x)
        {
            $_x = $x;
            $_y = $y;
        }
        if($resolution)
        {
            if([System.String]::IsNullOrEmpty($resolution)) {
                Write-Host "You must provide both x and y for resolution. You can do so by specifying both -x and -y parameters, or pass size in 000x000 format.";
                return;
            }
            if($resolution.ToLower() -eq "4k") {
                $_x = 3840;
                $_y = 2160;
            }elseif($resolution.ToLower() -eq "2.5k") {
                $_x = 2560;
                $_y = 1440;
            }elseif($resolution.ToLower() -eq "fullhd") {
                $_x = 1920;
                $_y = 1080;
            }elseif($resolution.ToLower() -eq "hdready") {
                $_x = 1280;
                $_y = 720;
            }elseif($resolution.Contains("x")) {
                $split = $resolution.Split('x');
                $_x = [System.Int32]::Parse($split[0]);
                $_y = [System.Int32]::Parse($split[1]);
            }  
        }

        Write-Host "Setting resolution to $($_x)x$($_y)"

        $uri = "http://$($shellLocal):4444/api/renderer/setresolution?width=$($_x)&height=$($_y)" 
        $result = Invoke-RestMethod -Uri $uri -Method POST
        Write-Host $result
}


function Get-ASRHDR
{
    Param(
        [String]$Shell
        )

        # first, get Shell we want to talk to
        $shellLocal = Get-ASDefaultShell
        if($PSBoundParameters['Shell']) {
            $shellLocal  = $Shell
        }
        if([System.String]::IsNullOrEmpty($shellLocal)) {
            Write-Host 'Target shell is not set. Please specify target shell with -Shell parameter or by Set-ASDefaultShellTarget snippet.'
            return
        }

        $uri = "http://$($shellLocal):4444/api/renderer/GetHDRStatus" 
        $responce = (Invoke-RestMethod -Uri $uri -Method GET -SkipCertificateCheck -AllowUnencryptedAuthentication)  

        if(!$responce.success)
        {
            Write-Error $responce.error -ErrorAction Stop
        }
        else {
            $responce.value
        }
}


function Set-ASRHDR
{
    Param(
        [String]$Shell,
        [switch] $enable,
        [switch] $disable,
        [switch] $autoTMenable,
        [switch] $autoTMdisable,
        [Parameter(Mandatory=$false)][int]$paperWhiteNits
        )

        # first, get Shell we want to talk to
        $shellLocal = Get-ASDefaultShell
        if($PSBoundParameters['Shell']) {
            $shellLocal  = $Shell
        }
        if([System.String]::IsNullOrEmpty($shellLocal)) {
            Write-Host 'Target shell is not set. Please specify target shell with -Shell parameter or by Set-ASDefaultShellTarget snippet.'
            return
        }

        $object = New-Object –TypeName PSObject

        if($enable)
        {
            $object | Add-Member –MemberType NoteProperty –Name "enableHDR" –Value $true
        }
        if($disable)
        {
            $object | Add-Member –MemberType NoteProperty –Name "enableHDR" –Value $false
        }

        if($autoTMenable)
        {
            $object | Add-Member –MemberType NoteProperty –Name "automaticHDRTonemapping" –Value $true
        } 
        if($autoTMdisable)
        {
            $object | Add-Member –MemberType NoteProperty –Name "automaticHDRTonemapping" –Value $false
        }
        if($paperWhiteNits)
        {
            $object | Add-Member –MemberType NoteProperty –Name "paperWhiteNits" –Value $paperWhiteNits
        }

        $body = $object | ConvertTo-Json -Depth 8

        $uri = "http://$($shellLocal):4444/api/renderer/SetHDRStatus" 
        $responce = (Invoke-RestMethod -Uri $uri -Method POST -Body $body -ContentType 'application/json' -SkipCertificateCheck -AllowUnencryptedAuthentication)  

        if(!$responce.success)
        {
            Write-Error $responce.error -ErrorAction Stop
        }
        else {
            $responce.value
        }
}