86 lines
3.1 KiB
PowerShell
86 lines
3.1 KiB
PowerShell
# PowerShell script to generate PWA icons
|
|
# Creates PNG icons for LittleShop Admin PWA
|
|
|
|
Add-Type -AssemblyName System.Drawing
|
|
|
|
function Create-Icon {
|
|
param(
|
|
[int]$Size,
|
|
[string]$OutputPath
|
|
)
|
|
|
|
# Create bitmap
|
|
$bitmap = New-Object System.Drawing.Bitmap($Size, $Size)
|
|
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
|
|
$graphics.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::AntiAlias
|
|
$graphics.TextRenderingHint = [System.Drawing.Text.TextRenderingHint]::AntiAlias
|
|
|
|
# Create gradient brush
|
|
$startColor = [System.Drawing.Color]::FromArgb(37, 99, 235) # #2563eb
|
|
$endColor = [System.Drawing.Color]::FromArgb(124, 58, 237) # #7c3aed
|
|
$gradientBrush = New-Object System.Drawing.Drawing2D.LinearGradientBrush(
|
|
[System.Drawing.Point]::new(0, 0),
|
|
[System.Drawing.Point]::new($Size, $Size),
|
|
$startColor,
|
|
$endColor
|
|
)
|
|
|
|
# Draw rounded rectangle background
|
|
$cornerRadius = [int]($Size * 0.15)
|
|
$rect = New-Object System.Drawing.Rectangle(0, 0, $Size, $Size)
|
|
|
|
# Create rounded rectangle path
|
|
$path = New-Object System.Drawing.Drawing2D.GraphicsPath
|
|
$path.AddArc(0, 0, $cornerRadius * 2, $cornerRadius * 2, 180, 90)
|
|
$path.AddArc($Size - $cornerRadius * 2, 0, $cornerRadius * 2, $cornerRadius * 2, 270, 90)
|
|
$path.AddArc($Size - $cornerRadius * 2, $Size - $cornerRadius * 2, $cornerRadius * 2, $cornerRadius * 2, 0, 90)
|
|
$path.AddArc(0, $Size - $cornerRadius * 2, $cornerRadius * 2, $cornerRadius * 2, 90, 90)
|
|
$path.CloseFigure()
|
|
|
|
# Fill background
|
|
$graphics.FillPath($gradientBrush, $path)
|
|
|
|
# Draw text "LS"
|
|
$font = New-Object System.Drawing.Font("Segoe UI", ($Size * 0.3), [System.Drawing.FontStyle]::Bold)
|
|
$brush = New-Object System.Drawing.SolidBrush([System.Drawing.Color]::White)
|
|
$format = New-Object System.Drawing.StringFormat
|
|
$format.Alignment = [System.Drawing.StringAlignment]::Center
|
|
$format.LineAlignment = [System.Drawing.StringAlignment]::Center
|
|
|
|
$textRect = New-Object System.Drawing.RectangleF(0, 0, $Size, $Size)
|
|
$graphics.DrawString("LS", $font, $brush, $textRect, $format)
|
|
|
|
# Save image
|
|
$bitmap.Save($OutputPath, [System.Drawing.Imaging.ImageFormat]::Png)
|
|
|
|
# Cleanup
|
|
$graphics.Dispose()
|
|
$bitmap.Dispose()
|
|
$gradientBrush.Dispose()
|
|
$font.Dispose()
|
|
$brush.Dispose()
|
|
$path.Dispose()
|
|
|
|
Write-Host "Created icon: $OutputPath ($Size x $Size)"
|
|
}
|
|
|
|
# Create icons directory
|
|
$iconsDir = "C:\Production\Source\LittleShop\LittleShop\wwwroot\icons"
|
|
if (!(Test-Path $iconsDir)) {
|
|
New-Item -ItemType Directory -Path $iconsDir -Force
|
|
}
|
|
|
|
# Generate all required icon sizes
|
|
$sizes = @(72, 96, 128, 144, 152, 192, 384, 512)
|
|
|
|
foreach ($size in $sizes) {
|
|
$outputPath = Join-Path $iconsDir "icon-${size}x${size}.png"
|
|
Create-Icon -Size $size -OutputPath $outputPath
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "🎉 All PWA icons created successfully!"
|
|
Write-Host "Icons saved to: $iconsDir"
|
|
Write-Host ""
|
|
Write-Host "Generated icons:"
|
|
Get-ChildItem $iconsDir -Name "icon-*.png" | ForEach-Object { Write-Host " ✅ $_" } |