Scripts/gradient-test.ps1

# Gradient Test - Shows various gradient patterns and blending modes

$esc = [char]27

function HSVtoRGB($h, $s, $v) {
    $h = $h % 1
    $i = [math]::Floor($h * 6)
    $f = $h * 6 - $i
    $p = $v * (1 - $s)
    $q = $v * (1 - $f * $s)
    $t = $v * (1 - (1 - $f) * $s)

    switch ($i % 6) {
        0 { $r = $v; $g = $t; $b = $p }
        1 { $r = $q; $g = $v; $b = $p }
        2 { $r = $p; $g = $v; $b = $t }
        3 { $r = $p; $g = $q; $b = $v }
        4 { $r = $t; $g = $p; $b = $v }
        5 { $r = $v; $g = $p; $b = $q }
    }

    return @([int]($r * 255), [int]($g * 255), [int]($b * 255))
}

Write-Host "`n GRADIENT PATTERNS & COLOR BLENDING`n" -ForegroundColor Cyan

# Horizontal HSV sweep
Write-Host " HSV Hue Sweep (Full Saturation & Value):"
Write-Host -NoNewline " "
for ($i = 0; $i -lt 120; $i++) {
    $rgb = HSVtoRGB -h ($i / 119.0) -s 1.0 -v 1.0
    Write-Host -NoNewline "$esc[38;2;$($rgb[0]);$($rgb[1]);$($rgb[2])m▓$esc[0m"
}
Write-Host "`n"

# Saturation gradient (red hue)
Write-Host " Saturation Gradient (Red Hue, 0% → 100%):"
Write-Host -NoNewline " "
for ($i = 0; $i -lt 120; $i++) {
    $rgb = HSVtoRGB -h 0.0 -s ($i / 119.0) -v 1.0
    Write-Host -NoNewline "$esc[38;2;$($rgb[0]);$($rgb[1]);$($rgb[2])m▓$esc[0m"
}
Write-Host "`n"

# Value/Brightness gradient
Write-Host " Value Gradient (Cyan Hue, 0% → 100%):"
Write-Host -NoNewline " "
for ($i = 0; $i -lt 120; $i++) {
    $rgb = HSVtoRGB -h 0.5 -s 1.0 -v ($i / 119.0)
    Write-Host -NoNewline "$esc[38;2;$($rgb[0]);$($rgb[1]);$($rgb[2])m▓$esc[0m"
}
Write-Host "`n"

# Diagonal gradients
Write-Host " 2D Gradient (Hue × Brightness):"
for ($y = 0; $y -lt 12; $y++) {
    Write-Host -NoNewline " "
    for ($x = 0; $x -lt 120; $x++) {
        $rgb = HSVtoRGB -h ($x / 119.0) -s 1.0 -v (1.0 - $y / 11.0)
        Write-Host -NoNewline "$esc[38;2;$($rgb[0]);$($rgb[1]);$($rgb[2])m▓$esc[0m"
    }
    Write-Host ""
}
Write-Host ""

# Radial-ish gradient
Write-Host " Radial-Style Gradient Pattern:"
for ($y = 0; $y -lt 12; $y++) {
    Write-Host -NoNewline " "
    for ($x = 0; $x -lt 120; $x++) {
        $dx = ($x - 60) / 60.0
        $dy = ($y - 6) / 6.0
        $dist = [math]::Sqrt($dx * $dx + $dy * $dy)
        $angle = [math]::Atan2($dy, $dx) / [math]::PI / 2 + 0.5
        $rgb = HSVtoRGB -h $angle -s 1.0 -v (1.0 - [math]::Min($dist, 1.0))
        Write-Host -NoNewline "$esc[38;2;$($rgb[0]);$($rgb[1]);$($rgb[2])m▓$esc[0m"
    }
    Write-Host ""
}
Write-Host ""