144 lines
4.9 KiB
PowerShell
144 lines
4.9 KiB
PowerShell
|
|
# It's tradition to document stuff like this poorly...
|
|
# Also, a random comment nobody will understand:
|
|
# Class started 2 hours ago, oh, am I late?
|
|
# No, I already graduated
|
|
# And you can live through anything if Magic made it
|
|
# They say I talk with so much emphasis
|
|
# Ooh, they so sensitive
|
|
# Don't ever fix your lips like collagen
|
|
# And say something when you gon' end up apolog'ing
|
|
# Let me know if it's a problem then, aight, man, holla, then
|
|
|
|
Add-Type -AssemblyName System.Windows.Forms
|
|
Add-Type -AssemblyName System.Drawing
|
|
|
|
$form = New-Object System.Windows.Forms.Form
|
|
$form.Text = "adesso App2Cloud Microsoft 365 Forms Auto"
|
|
$form.Width = 620
|
|
$form.Height = 300
|
|
$form.StartPosition = "CenterScreen"
|
|
$form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::Fixed3D
|
|
|
|
# Create the header label
|
|
$header = New-Object System.Windows.Forms.Label
|
|
$header.Text = "App2Cloud Microsoft 365 Forms Auto"
|
|
$header.Font = New-Object System.Drawing.Font("Impact", 18, [System.Drawing.FontStyle]::Bold)
|
|
$header.ForeColor = [System.Drawing.Color]::DarkBlue
|
|
$header.Width = 620
|
|
$header.Height = 40
|
|
$header.TextAlign = [System.Drawing.ContentAlignment]::MiddleCenter
|
|
$header.Location = New-Object System.Drawing.Point(0, 100)
|
|
$form.Controls.Add($header)
|
|
|
|
|
|
# Create Button 1
|
|
$button1 = New-Object System.Windows.Forms.Button
|
|
$button1.Text = "Load Spec"
|
|
$button1.Font = New-Object System.Drawing.Font("Arial", 10)
|
|
$button1.Width = 100
|
|
$button1.Height = 40
|
|
$button1.Location = New-Object System.Drawing.Point(160, 170)
|
|
$form.Controls.Add($button1)
|
|
|
|
# Create Button 2
|
|
$button2 = New-Object System.Windows.Forms.Button
|
|
$button2.Text = "Get Template"
|
|
$button2.Font = New-Object System.Drawing.Font("Arial", 10)
|
|
$button2.Width = 100
|
|
$button2.Height = 40
|
|
$button2.Location = New-Object System.Drawing.Point(360, 170)
|
|
$form.Controls.Add($button2)
|
|
|
|
$timer = New-Object System.Windows.Forms.Timer
|
|
$timer.Interval = 30 # Controls animation speed
|
|
|
|
$font = New-Object System.Drawing.Font("Jokerman", 20, [System.Drawing.FontStyle]::Bold)
|
|
$brush = [System.Drawing.Brushes]::Blue
|
|
$sineOffset = 20
|
|
$tileSize = 20 # Size of each square in the checkered pattern
|
|
|
|
Set-Variable -Name angle -Scope Global -Value 0
|
|
Set-Variable -Name text -Scope Global -Value ""
|
|
Set-Variable -Name hueShift -Scope Global -Value 0
|
|
Set-Variable -Name textHueShift -Scope Global -Value 0
|
|
|
|
Function GetColorFromHue ($hue) {
|
|
$hue %= 360 # Keep hue within 0-359
|
|
$c = 255
|
|
$x = 255 * (1 - [Math]::Abs(($hue / 60) % 2 - 1))
|
|
$m = 0
|
|
|
|
if ($hue -lt 60) { return [System.Drawing.Color]::FromArgb($c, $x, $m) }
|
|
elseif ($hue -lt 120) { return [System.Drawing.Color]::FromArgb($x, $c, $m) }
|
|
elseif ($hue -lt 180) { return [System.Drawing.Color]::FromArgb($m, $c, $x) }
|
|
elseif ($hue -lt 240) { return [System.Drawing.Color]::FromArgb($m, $x, $c) }
|
|
elseif ($hue -lt 300) { return [System.Drawing.Color]::FromArgb($x, $m, $c) }
|
|
else { return [System.Drawing.Color]::FromArgb($c, $m, $x) }
|
|
}
|
|
|
|
$graphicsArea = New-Object System.Drawing.Rectangle(0, 0, $form.Width, 100)
|
|
|
|
# TODO: fix buffering issue to get rid of that annoying flickering...
|
|
$form.add_Paint({
|
|
$graphicsContext = [System.Drawing.BufferedGraphicsManager]::Current
|
|
$buffer = $graphicsContext.Allocate($form.CreateGraphics(), $graphicsArea)
|
|
|
|
$graphics = $buffer.Graphics
|
|
$graphics.Clear([System.Drawing.Color]::White) # Clear background color (white base)
|
|
|
|
# Checkered background
|
|
# TODO: Limit to bounding box of wavy text
|
|
for ($x = 0; $x -lt $form.Width; $x += $tileSize) {
|
|
for ($y = 0; $y -lt 100; $y += $tileSize) {
|
|
if ((($x / $tileSize) + ($y / $tileSize)) % 2 -eq 0) {
|
|
$graphics.FillRectangle(
|
|
(New-Object System.Drawing.SolidBrush ([System.Drawing.Color]::FromArgb(240, 245, 245))),
|
|
$x,
|
|
$y,
|
|
$tileSize,
|
|
$tileSize
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
# Draw the wobbly text
|
|
if (![string]::IsNullOrWhiteSpace($Global:text)) {
|
|
$x = 0
|
|
for ($i = 0; $i -lt $Global:text.Length; $i++) {
|
|
$y = 20 + [Math]::Sin($Global:angle + $i * 0.5) * $sineOffset
|
|
|
|
$textColor = GetColorFromHue($Global:textHueShift)
|
|
|
|
$graphics.DrawString(
|
|
$Global:text[$i],
|
|
$font,
|
|
(New-Object System.Drawing.SolidBrush $textColor),
|
|
$x,
|
|
$y
|
|
)
|
|
$x += 30
|
|
}
|
|
}
|
|
|
|
# Render the buffered graphics to the screen
|
|
$buffer.Render()
|
|
$buffer.Dispose()
|
|
})
|
|
|
|
$timer.add_Tick({
|
|
$Global:angle += 0.1
|
|
$Global:hueShift += 0 # Slowly shift the hue
|
|
$Global:textHueShift += 1 # Slowly shift the hue
|
|
$Global:text = "@Tiaradessi $(Get-Date -UFormat "%T")"
|
|
$form.Invalidate()
|
|
})
|
|
|
|
$Song = New-Object System.Media.SoundPlayer
|
|
$Song.SoundLocation = "untitled.wav"
|
|
$Song.PlayLooping()
|
|
|
|
# Start the animation and show the form
|
|
$timer.Start()
|
|
$form.ShowDialog()
|