Private/Write-PxTerminal.ps1

function Write-PxTerminal {
    <#
    .SYNOPSIS
        Renders pixel data to terminal using lower half blocks with True Color.
    
    .PARAMETER Width
        Image width in pixels.
    
    .PARAMETER Height
        Image height in pixels.
    
    .PARAMETER Pixels
        Array of RGBA pixel arrays.
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [int]$Width,
        
        [Parameter(Mandatory)]
        [int]$Height,
        
        [Parameter(Mandatory)]
        [byte[][]]$Pixels
    )
    
    # ISE fallback: delegate to ConsoleColor renderer
    if ($Host.Name -eq 'Windows PowerShell ISE Host') {
        Write-PxTerminalISE -Width $Width -Height $Height -Pixels $Pixels
        return
    }
    
    $reset = Get-AnsiReset
    $oddHeight = ($Height % 2) -eq 1
    $startY = if ($oddHeight) { -1 } else { 0 }
    $endY = if ($oddHeight) { $Height - 1 } else { $Height }
    
    for ($y = $startY; $y -lt $endY; $y += 2) {
        $line = ""
        for ($x = 0; $x -lt $Width; $x++) {
            $topY = $y
            $bottomY = $y + 1
            
            if ($topY -lt 0) {
                $topPixel = $null
            } else {
                $topIdx = ($topY * $Width) + $x
                $topPixel = if ($topIdx -lt $Pixels.Count) { $Pixels[$topIdx] } else { @(0, 0, 0, 0) }
            }
            
            $bottomIdx = ($bottomY * $Width) + $x
            $bottomPixel = if ($bottomIdx -lt $Pixels.Count) { $Pixels[$bottomIdx] } else { @(0, 0, 0, 0) }
            
            $botR = if ($bottomPixel[3] -lt 32) { 0 } else { $bottomPixel[0] }
            $botG = if ($bottomPixel[3] -lt 32) { 0 } else { $bottomPixel[1] }
            $botB = if ($bottomPixel[3] -lt 32) { 0 } else { $bottomPixel[2] }
            
            if ($null -eq $topPixel) {
                $fg = Get-TrueColorFg -R $botR -G $botG -B $botB
                $line += "${fg}$script:LowerHalfBlock"
            } else {
                $topR = if ($topPixel[3] -lt 32) { 0 } else { $topPixel[0] }
                $topG = if ($topPixel[3] -lt 32) { 0 } else { $topPixel[1] }
                $topB = if ($topPixel[3] -lt 32) { 0 } else { $topPixel[2] }
                
                $bg = Get-TrueColorBg -R $topR -G $topG -B $topB
                $fg = Get-TrueColorFg -R $botR -G $botG -B $botB
                $line += "${bg}${fg}$script:LowerHalfBlock"
            }
        }
        $line += "$script:ESC[0m$script:ESC[K"
        Write-Host $line
    }
    
    Write-Host ""
}