refactor
This commit is contained in:
82
pkg/clock/clock.go
Normal file
82
pkg/clock/clock.go
Normal file
@@ -0,0 +1,82 @@
|
||||
//go:build draft
|
||||
package clock
|
||||
|
||||
import (
|
||||
"image"
|
||||
"image/color"
|
||||
"image/png"
|
||||
"io"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"git.niplace.ru/XoxJlopeZi4BB/clock/letter"
|
||||
"git.niplace.ru/XoxJlopeZi4BB/imageutils"
|
||||
)
|
||||
|
||||
|
||||
|
||||
var img1, img2 = letter.Render(letter.Nums[6]), letter.Render(letter.Nums[9])
|
||||
|
||||
func DownRightBlank(img image.Image) image.Image {
|
||||
clr := color.White
|
||||
img = letter.Blank(img, clr, imageutils.Down)
|
||||
return letter.Blank(img, clr, imageutils.Right)
|
||||
}
|
||||
|
||||
func LeftUpBlank(img image.Image) image.Image {
|
||||
clr := color.White
|
||||
img = letter.Blank(img, clr, imageutils.Left)
|
||||
return letter.Blank(img, clr, imageutils.Up)
|
||||
}
|
||||
|
||||
func RenderNum(n int) image.Image {
|
||||
var img image.Image = image.NewRGBA(image.Rect(0, 0, 0, 0))
|
||||
s := strconv.Itoa(n)
|
||||
for i := range s {
|
||||
n, err := strconv.Atoi(string(s[i]))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
num := letter.Render(letter.Nums[n])
|
||||
num = DownRightBlank(num)
|
||||
img = imageutils.Concat(img, num, imageutils.Right)
|
||||
}
|
||||
img = LeftUpBlank(img)
|
||||
return img
|
||||
}
|
||||
|
||||
func RenderTime(t time.Time) image.Image {
|
||||
hour := RenderNum(t.Hour())
|
||||
if t.Hour() < 10 {
|
||||
hour = imageutils.Concat(
|
||||
DownRightBlank(letter.Empty), hour, imageutils.Right)
|
||||
}
|
||||
minute := RenderNum(t.Minute())
|
||||
if t.Minute() < 10 {
|
||||
minute = imageutils.Concat(
|
||||
DownRightBlank(letter.Empty), minute, imageutils.Right)
|
||||
}
|
||||
|
||||
img := imageutils.Concat(hour, minute, imageutils.Down)
|
||||
return img
|
||||
}
|
||||
|
||||
func Margin(img image.Image, length int) image.Image {
|
||||
for i := 0; i < length; i++ {
|
||||
img = LeftUpBlank(DownRightBlank(img))
|
||||
}
|
||||
return img
|
||||
}
|
||||
|
||||
func Time(w io.Writer) {
|
||||
t := time.Now()
|
||||
img := RenderTime(t)
|
||||
img = Margin(img, 3)
|
||||
img = imageutils.Scale(img, 1<<6)
|
||||
|
||||
err := png.Encode(w, img)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user