Public/Write-BlockFont.ps1
<#
.Synopsis Write-BlockFont.ps1 AUTHOR: Robin Granberg (robin.granberg@protonmail.com) THIS CODE-SAMPLE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. .DESCRIPTION A script that will write your phrase in to a ascii block art .EXAMPLE .\Write-BlockFont -Phrase "LEET" Writes the phrase LEET in ASCII block font .EXAMPLE .\Write-BlockFont -Phrase "LEET" -ShadowColor Green Writes the phrase LEET in ASCII block font with shadows in green. .EXAMPLE .\Write-BlockFont -Phrase "LEET" -ShadowColor Green -Color1 DarkGreen Writes the phrase LEET in ASCII block font with shadows in green and the center of the font in dark green. .EXAMPLE .\Write-BlockFont -Phrase "LEET" -ShadowColor Green -Color1 DarkCyan -Color2 DarkMagenta Writes the phrase LEET in ASCII block font with shadows in green and the center of the font in dark cyan and the outer of the font in dark magenta. .EXAMPLE .\Write-BlockFont -Phrase "LEET" -ShadowColor Green -Color1 DarkCyan -Color2 DarkMagenta -Frame -FrameColor Green Writes the phrase LEET in ASCII block font also with a frame in green .OUTPUTS writes to host .LINK .NOTES Version: 0.0.3 28 September, 2021 ## New - ASCII character for dash #> Function Write-BlockFont { [CmdletBinding()] param ( [Parameter(Mandatory=$True)] [string] $Phrase, # Color 1. [Parameter(Mandatory=$false)] [ValidateSet("Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green","Cyan","Red","Magenta","Yellow","White")] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string] $Color1 = "White", # Color 2. [Parameter(Mandatory=$false)] [ValidateSet("Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green","Cyan","Red","Magenta","Yellow","White")] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string] $Color2 = "White", #ShadowColor [Parameter(Mandatory=$false)] [ValidateSet("Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green","Cyan","Red","Magenta","Yellow","White")] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string] $ShadowColor = "White", #FrameColor [Parameter(Mandatory=$false)] [ValidateSet("Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green","Cyan","Red","Magenta","Yellow","White")] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string] $FrameColor = "White", [Parameter(Mandatory=$false)] [string] $MyChar="█" , [Parameter(Mandatory=$false)] [switch] $Frame ) [String[]]$Lframe = "│ ","*","│ ","*","│ ","*","│ ","*","│ ","*","│ " [String[]]$Rframe = "│╗","*","│║","*","│║", "*","│║","*","│║","*","│║" [String[]]$SPACE = " ","*"," ","*"," ", "*"," ","*"," ","*"," " [String[]]$DOT = " ","*"," ","*"," ", "*"," ","*","██╗ ","*","╚═╝ " [String[]]$DASH = " ","*"," ","*","██████╗ ","*","╚═════╝ ","*"," ","*"," " [String[]]$A = " ██████╗ ","*","██╔═════██╗ ","*","██████████║ ","*","██╔═════██║ ","*","██║ ██║ ","*","╚═╝ ╚═╝ " [String[]]$B = "███████╗ ","*","██╔════██╗ ", "*","███████╔═╝ ", "*","██╔════██╗ ", "*","███████╔═╝ ","*","╚══════╝ " [String[]]$C = " ██████╗ ","*","██╔═════╝ ","*","██║ ","*","██║ ","*","╚═██████╗ ", "*"," ╚═════╝ " [String[]]$D = "███████╗ ","*","██╔════██╗ ","*","██║ ██║ ","*","██║ ██║ ","*","███████╔╝ ","*","╚══════╝ " [String[]]$E = "███████╗ ","*","██╔════╝ ","*","██████╗ ","*","██╔═══╝ ","*","███████╗ ","*","╚══════╝ " [String[]]$F = "███████╗ ","*","██╔════╝ ","*","██████╗ ","*","██╔═══╝ ","*","██║ ","*","╚═╝ " [String[]]$G = " ███████╗ ","*","██╔══════╝ ","*","██║ ████╗ ","*","██║ ██║ ","*","╚═███████║ ","*"," ╚══════╝ " [String[]]$H = "██╗ ██╗ ","*","██║ ██║ ","*","█████████║ ","*","██╔════██║ ","*","██║ ██║ ","*","╚═╝ ╚═╝ " [String[]]$I = "██╗ ","*","██║ ","*","██║ ", "*","██║ ","*","██║ ","*","╚═╝ " [String[]]$J = " ██╗ ","*"," ██║ ","*"," ██║ ","*"," ██║ ","*","██████╔╝ ","*","╚═════╝ " [String[]]$K = "██╗ ██╗ ","*","██║ ██╔═╝ ","*","█████╔╝ ","*","██╔═██╗ ","*","██║ ╚██╗ ", "*","╚═╝ ╚═╝ " [String[]]$L = "██╗ ","*","██║ ","*","██║ ","*","██║ ","*","███████╗ ","*","╚══════╝ " [String[]]$M = "██╗ ██╗ ","*","████╗ ████║ ","*","██╔═██╔═██║ ","*","██║ ╚═╝ ██║ ","*","██║ ██║ ","*","╚═╝ ╚═╝ " [String[]]$N = "██╗ ██╗ ","*","████╗ ██║ ","*","██╔═██╗ ██║ ","*","██║ ╚═████║ ","*","██║ ╚═██║ ","*","╚═╝ ╚═╝ " [String[]]$O = " ██████╗ ","*","██╔═════██╗ ","*","██║ ██║ ","*","██║ ██║ ","*","╚═██████╔═╝ ","*"," ╚═════╝ " [String[]]$P = "██████╗ ","*","██╔═══██╗ ","*","██████╔═╝ ","*","██╔═══╝ ","*","██║ ","*","╚═╝ " [String[]]$Q = " ██████╗ ","*","██╔═════██╗ ","*","██║ ██║ ","*","██║ ████║ ","*","╚═██████╔═██╗ ","*"," ╚═════╝ ╚═╝ " [String[]]$R = "██████╗ ","*","██╔═══██╗ ","*","██████╔═╝ ","*","██╔══██╗ ","*","██║ ██╗ ","*","╚═╝ ╚═╝ " [String[]]$S = " ████████╗ ","*","██╔═══════╝ ","*","╚═██████╗ ","*"," ╚═════██╗ ","*","████████╔═╝ ","*","╚═══════╝ " [String[]]$T = "██████████╗ ","*"," ╚══██╔═══╝ ","*"," ██║ ","*"," ██║ ","*"," ██║ ","*"," ╚═╝ " [String[]]$U = "██╗ ██╗ ","*","██║ ██║ ","*","██║ ██║ ","*","██║ ██║ ","*","╚═██████╔═╝ ","*"," ╚═════╝ " [String[]]$V = "██╗ ██╗ ","*","██║ ██║ ","*","╚═██╗ ██╔═╝ ","*"," ██║ ██║ ","*"," ╚═██╔═╝ ","*"," ╚═╝ " [String[]]$W = "██╗ ██╗ ","*","██║ ██╗ ██║ ","*","██║ ██║ ██║ ","*","██║ ██║ ██║ ","*","╚═██████╔═╝ ","*"," ╚═════╝ " [String[]]$X = "██╗ ██╗ ","*","╚═██╗ ██╔═╝ ","*"," ╚═██╔═╝ ","*"," ██╔╝██╗ ","*","██╔═╝ ╚═██╗ ","*","╚═╝ ╚═╝ " [String[]]$Y = "██ ██╗ ","*","██ ██║ ","*","╚═██████╔═╝ ","*"," ╚═██╔═╝ ","*"," ██║ ","*"," ╚═╝ " [String[]]$Z = "██████████╗ ","*","╚═════██╔═╝ ","*"," ██╔═╝ ","*"," ██╔═╝ ","*","██████████╗ ","*","╚═════════╝ " [String[]]$1 = "████╗ ","*","╚═██║ ","*"," ██║ ", "*"," ██║ ","*","██████╗ ","*","╚═════╝ " [String[]]$2 = "██████████╗ ","*","╚═══════██║ ","*"," ██████╔═╝ ","*","██╔═════╝ ","*","██████████╗ ","*","╚═════════╝ " [String[]]$3 = "███████╗ ","*","╚══════██╗ ", "*"," █████╔═╝ ", "*"," ╚════██╗ ", "*","███████╔═╝ ","*","╚══════╝ " [String[]]$4 = "██╗ ██╗ ","*","██║ ██║ ","*","█████████║ ","*","╚══════██║ ","*"," ██║ ","*"," ╚═╝ " [String[]]$5 = "██████████╗ ","*","██╔═══════╝ ","*","╚═██████╗ ","*"," ╚═════██╗ ","*","████████╔═╝ ","*","╚═══════╝ " [String[]]$6 = " ████████╗ ","*","██╔═══════╝ ","*","████████╗ ","*","██╚═════██╗ ","*","╚═██████╔═╝ ","*"," ╚═════╝ " [String[]]$7 = "██████████╗ ","*","╚═══════██║ ","*"," ██╔═╝ ","*"," ██╔═╝ ","*"," ██║ ","*"," ╚═╝ " [String[]]$8 = " ██████╗ ","*","██╔═════██╗ ","*"," ██████╔═╝ ","*","██╔═════██╗ ","*"," ███████╔╝ ","*"," ╚══════╝ " [String[]]$9 = "██████████╗ ","*","██╔═════██║ ","*","██████████║ ","*","╚═══════██║ ","*","██████████║ ","*","╚═════════╝ " [String[]]$0 = "██████████╗ ","*","██╔═════██║ ","*","██║ ██║ ","*","██║ ██║ ","*","██████████║ ","*","╚═════════╝ " Function Test-ShadowStrings { [CmdletBinding()] param ( [Parameter()] [string] $Teststring ) switch ($Char) { "╗"{$true} "╚"{$true} "═"{$true} "╝"{$true} "╔"{$true} "║"{$true} default{$false} } } Function Create-BlockText { [CmdletBinding()] param ( [Parameter()] [string] $Phrase, [Parameter()] [string] $ForegroundColor1, [Parameter()] [string] $ForegroundColor2 ) if($Phrase) { $PHRASEOBJECT = New-Object System.Collections.ArrayList if($Frame) { [VOID]$PHRASEOBJECT.add($Lframe) } $arrString = $Phrase.ToCharArray() foreach($Char in $arrString) { switch ($Char) { "A" {[VOID]$PHRASEOBJECT.add($A)} "B" {[VOID]$PHRASEOBJECT.add($B)} "C" {[VOID]$PHRASEOBJECT.add($C)} "D" {[VOID]$PHRASEOBJECT.add($D)} "E" {[VOID]$PHRASEOBJECT.add($E)} "F" {[VOID]$PHRASEOBJECT.add($F)} "G" {[VOID]$PHRASEOBJECT.add($G)} "H" {[VOID]$PHRASEOBJECT.add($H)} "I" {[VOID]$PHRASEOBJECT.add($I)} "J" {[VOID]$PHRASEOBJECT.add($J)} "K" {[VOID]$PHRASEOBJECT.add($K)} "L" {[VOID]$PHRASEOBJECT.add($L)} "M" {[VOID]$PHRASEOBJECT.add($M)} "N" {[VOID]$PHRASEOBJECT.add($N)} "O" {[VOID]$PHRASEOBJECT.add($O)} "Q" {[VOID]$PHRASEOBJECT.add($Q)} "P" {[VOID]$PHRASEOBJECT.add($P)} "R" {[VOID]$PHRASEOBJECT.add($R)} "S" {[VOID]$PHRASEOBJECT.add($S)} "T" {[VOID]$PHRASEOBJECT.add($T)} "U" {[VOID]$PHRASEOBJECT.add($U)} "V" {[VOID]$PHRASEOBJECT.add($V)} "W" {[VOID]$PHRASEOBJECT.add($W)} "X" {[VOID]$PHRASEOBJECT.add($X)} "Y" {[VOID]$PHRASEOBJECT.add($Y)} "Z" {[VOID]$PHRASEOBJECT.add($Z)} "1" {[VOID]$PHRASEOBJECT.add($1)} "2" {[VOID]$PHRASEOBJECT.add($2)} "3" {[VOID]$PHRASEOBJECT.add($3)} "4" {[VOID]$PHRASEOBJECT.add($4)} "5" {[VOID]$PHRASEOBJECT.add($5)} "6" {[VOID]$PHRASEOBJECT.add($6)} "7" {[VOID]$PHRASEOBJECT.add($7)} "8" {[VOID]$PHRASEOBJECT.add($8)} "9" {[VOID]$PHRASEOBJECT.add($9)} "0" {[VOID]$PHRASEOBJECT.add($0)} " " {[VOID]$PHRASEOBJECT.add($SPACE)} "." {[VOID]$PHRASEOBJECT.add($DOT)} "-" {[VOID]$PHRASEOBJECT.add($DASH)} Default {[VOID]$PHRASEOBJECT.add($DOT)} } } } if($Frame) { [VOID]$PHRASEOBJECT.add($Rframe) } [int]$LenOfAll = 0 foreach($LETTER in $PHRASEOBJECT) { $LenOfAll = $LenOfAll + $LETTER[0].ToString().Length } $LenOfAll = $LenOfAll -2 if($Frame) { for ($num = 0 ; $num -le $LenOfAll ; $num++) { if($num -eq 0) { Write-Host -NoNewline "┌" -ForegroundColor $FrameColor } else { if($num -eq $LenOfAll) { Write-Host "┐ " -ForegroundColor $FrameColor } else { Write-Host -NoNewline "─" -ForegroundColor $FrameColor } } } } for ($num = 0 ; $num -le 12 ; $num++) { $LetterCount = 0 $FrameLetter = $false foreach($LETTER in $PHRASEOBJECT) { $LetterCount++ if($Frame) { if(($LetterCount -eq 1) -or ($LetterCount -eq $PHRASEOBJECT.Count)) { $FrameLetter = $True } else { $FrameLetter = $false } } foreach($LINE in $LETTER[$num]) { $LINE = $LINE.ToString().Replace("█",$MyChar) if($LINE -eq "*") { if($PREVLINE -ne "*") { Write-Host "" } $PREVLINE = $LINE } else { if($FrameLetter) { Write-Host -NoNewline $LINE -ForegroundColor $FrameColor } else { if($ForegroundColor1) { if($num -le 6) { if($num -ge 2) { #Write-Host -NoNewline $LINE -ForegroundColor $ForegroundColor1 $arrChars = $LINE.ToCharArray() foreach($Char in $arrChars) { if(Test-ShadowStrings $Char) { Write-Host -NoNewline $Char -ForegroundColor $ShadowColor } else { Write-Host -NoNewline $Char -ForegroundColor $ForegroundColor1 } } } else { #Write-Host -NoNewline $LINE -ForegroundColor $ForegroundColor2 $arrChars = $LINE.ToCharArray() foreach($Char in $arrChars) { if(Test-ShadowStrings $Char) { Write-Host -NoNewline $Char -ForegroundColor $ShadowColor } else { Write-Host -NoNewline $Char -ForegroundColor $ForegroundColor2 } } } } else { #Write-Host -NoNewline $LINE -ForegroundColor $ForegroundColor2 $arrChars = $LINE.ToCharArray() foreach($Char in $arrChars) { if(Test-ShadowStrings $Char) { Write-Host -NoNewline $Char -ForegroundColor $ShadowColor } else { Write-Host -NoNewline $Char -ForegroundColor $ForegroundColor2 } } } } else { #Write-Host -NoNewline $LINE $arrChars = $LINE.ToCharArray() foreach($Char in $arrChars) { if(Test-ShadowStrings $Char) { Write-Host -NoNewline $Char -ForegroundColor $ShadowColor } else { Write-Host -NoNewline $Char } } } } $PREVLINE = $LINE } } } } Write-Host "" if($Frame) { for ($num = 0 ; $num -le $LenOfAll ; $num++) { if($num -eq 0) { Write-Host -NoNewline "└" -ForegroundColor $FrameColor } else { if($num -eq $LenOfAll) { Write-Host "┘║" -ForegroundColor $FrameColor } else { Write-Host -NoNewline "─" -ForegroundColor $FrameColor } } } } if($Frame) { for ($num = 1 ; $num -le $LenOfAll ; $num++) { if($num -eq 1) { Write-Host -NoNewline " ╚" -ForegroundColor $FrameColor } else { if($num -eq $LenOfAll) { Write-Host "═╝" -ForegroundColor $FrameColor } else { Write-Host -NoNewline "═" -ForegroundColor $FrameColor } } } } Write-Host "" } if ($Phrase) { if($Color1) { Create-BlockText -Phrase $Phrase -ForegroundColor1 $Color1 -ForegroundColor2 $Color2 } else { Create-BlockText -Phrase $Phrase } } else { break } } |